summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml841
-rw-r--r--3rdparty/libconfig/extra/gen/grammar.y2
-rw-r--r--3rdparty/libconfig/extra/gen/scanner.l2
-rw-r--r--3rdparty/libconfig/libconfig.c2
-rw-r--r--3rdparty/libconfig/libconfig.h2
-rw-r--r--3rdparty/libconfig/parsectx.h2
-rw-r--r--3rdparty/libconfig/scanctx.c2
-rw-r--r--3rdparty/libconfig/scanctx.h2
-rw-r--r--3rdparty/libconfig/scanner.c2
-rw-r--r--3rdparty/libconfig/strbuf.c2
-rw-r--r--3rdparty/libconfig/strbuf.h2
-rw-r--r--3rdparty/libconfig/wincompat.h2
-rw-r--r--CHANGELOG.md61
-rw-r--r--conf/char/char-server.conf2
-rw-r--r--conf/common/inter-server.conf2
-rw-r--r--conf/common/socket.conf2
-rw-r--r--conf/global/console.conf2
-rw-r--r--conf/global/sql_connection.conf2
-rw-r--r--conf/import-tmpl/battle.conf2
-rw-r--r--conf/import-tmpl/char-server.conf2
-rw-r--r--conf/import-tmpl/inter-server.conf2
-rw-r--r--conf/import-tmpl/login-server.conf2
-rw-r--r--conf/import-tmpl/logs.conf2
-rw-r--r--conf/import-tmpl/map-server.conf2
-rw-r--r--conf/import-tmpl/script.conf2
-rw-r--r--conf/import-tmpl/socket.conf2
-rw-r--r--conf/login/login-server.conf2
-rw-r--r--conf/map/battle.conf2
-rw-r--r--conf/map/battle/battle.conf2
-rw-r--r--conf/map/battle/battleground.conf2
-rw-r--r--conf/map/battle/client.conf2
-rw-r--r--conf/map/battle/drops.conf2
-rw-r--r--conf/map/battle/exp.conf2
-rw-r--r--conf/map/battle/feature.conf2
-rw-r--r--conf/map/battle/gm.conf2
-rw-r--r--conf/map/battle/guild.conf2
-rw-r--r--conf/map/battle/homunc.conf2
-rw-r--r--conf/map/battle/items.conf2
-rw-r--r--conf/map/battle/misc.conf2
-rw-r--r--conf/map/battle/monster.conf2
-rw-r--r--conf/map/battle/party.conf2
-rw-r--r--conf/map/battle/pet.conf2
-rw-r--r--conf/map/battle/player.conf2
-rw-r--r--conf/map/battle/skill.conf2
-rw-r--r--conf/map/battle/status.conf2
-rw-r--r--conf/map/logs.conf2
-rw-r--r--conf/map/map-server.conf2
-rw-r--r--conf/map/maps.conf2
-rw-r--r--conf/map/script.conf2
-rw-r--r--db/item_db2.conf2
-rw-r--r--db/pre-re/item_db.conf2
-rw-r--r--db/re/item_db.conf2
-rw-r--r--doc/script_commands.txt51
-rw-r--r--npc/re/instances/OldGlastHeim.txt2
-rw-r--r--npc/re/instances/octopus_cave.txt2
-rw-r--r--npc/re/instances/saras_memory.txt2
-rw-r--r--npc/scripts_dev.conf2
-rw-r--r--npc/scripts_removed.conf2
-rw-r--r--sql-files/item_db.sql2
-rw-r--r--sql-files/item_db2.sql2
-rw-r--r--sql-files/item_db_re.sql2
-rw-r--r--src/char/HPMchar.c2
-rw-r--r--src/char/HPMchar.h2
-rw-r--r--src/char/char.c731
-rw-r--r--src/char/char.h3
-rw-r--r--src/char/geoip.c64
-rw-r--r--src/char/int_auction.c252
-rw-r--r--src/char/int_clan.c34
-rw-r--r--src/char/int_elemental.c78
-rw-r--r--src/char/int_elemental.h6
-rw-r--r--src/char/int_guild.c600
-rw-r--r--src/char/int_guild.h16
-rw-r--r--src/char/int_homun.c121
-rw-r--r--src/char/int_homun.h7
-rw-r--r--src/char/int_mail.c252
-rw-r--r--src/char/int_mail.h5
-rw-r--r--src/char/int_mercenary.c87
-rw-r--r--src/char/int_mercenary.h6
-rw-r--r--src/char/int_party.c286
-rw-r--r--src/char/int_party.h8
-rw-r--r--src/char/int_pet.c169
-rw-r--r--src/char/int_pet.h4
-rw-r--r--src/char/int_quest.c94
-rw-r--r--src/char/int_quest.h6
-rw-r--r--src/char/int_rodex.c187
-rw-r--r--src/char/int_rodex.h1
-rw-r--r--src/char/int_storage.c272
-rw-r--r--src/char/int_storage.h3
-rw-r--r--src/char/inter.c414
-rw-r--r--src/char/inter.h13
-rw-r--r--src/char/loginif.c30
-rw-r--r--src/char/mapif.c2520
-rw-r--r--src/char/mapif.h43
-rw-r--r--src/char/pincode.c68
-rw-r--r--src/common/HPM.c97
-rw-r--r--src/common/HPM.h2
-rw-r--r--src/common/HPMDataCheck.h61
-rw-r--r--src/common/conf.c44
-rw-r--r--src/common/console.c50
-rw-r--r--src/common/core.c26
-rw-r--r--src/common/db.c58
-rw-r--r--src/common/des.c6
-rw-r--r--src/common/ers.c2
-rw-r--r--src/common/grfio.c32
-rw-r--r--src/common/mapindex.c20
-rw-r--r--src/common/md5calc.c6
-rw-r--r--src/common/memmgr.c127
-rw-r--r--src/common/mmo.h23
-rw-r--r--src/common/mutex.c22
-rw-r--r--src/common/nullpo.c8
-rw-r--r--src/common/random.c18
-rw-r--r--src/common/showmsg.c74
-rw-r--r--src/common/socket.c141
-rw-r--r--src/common/sql.c88
-rw-r--r--src/common/strlib.c110
-rw-r--r--src/common/sysinfo.c54
-rw-r--r--src/common/thread.c29
-rw-r--r--src/common/timer.c79
-rw-r--r--src/common/utils.c30
-rw-r--r--src/login/HPMlogin.c2
-rw-r--r--src/login/HPMlogin.h2
-rw-r--r--src/login/account.c46
-rw-r--r--src/login/ipban.c26
-rw-r--r--src/login/lclif.c82
-rw-r--r--src/login/login.c162
-rw-r--r--src/login/loginlog.c18
-rw-r--r--src/map/HPMmap.c22
-rw-r--r--src/map/Makefile.in7
-rw-r--r--src/map/atcommand.c383
-rw-r--r--src/map/battle.c180
-rw-r--r--src/map/battleground.c100
-rw-r--r--src/map/buyingstore.c69
-rw-r--r--src/map/buyingstore.h12
-rw-r--r--src/map/channel.c44
-rw-r--r--src/map/chat.c39
-rw-r--r--src/map/chrif.c215
-rw-r--r--src/map/clan.c56
-rw-r--r--src/map/clif.c3941
-rw-r--r--src/map/clif.h44
-rw-r--r--src/map/duel.c47
-rw-r--r--src/map/elemental.c107
-rw-r--r--src/map/guild.c206
-rw-r--r--src/map/homunculus.c144
-rw-r--r--src/map/instance.c62
-rw-r--r--src/map/intif.c404
-rw-r--r--src/map/intif.h4
-rw-r--r--src/map/irc-bot.c60
-rw-r--r--src/map/itemdb.c234
-rw-r--r--src/map/itemdb.h50
-rw-r--r--src/map/log.c81
-rw-r--r--src/map/mail.c22
-rw-r--r--src/map/map.c467
-rw-r--r--src/map/map.h6
-rw-r--r--src/map/mapreg_sql.c38
-rw-r--r--src/map/mercenary.c75
-rw-r--r--src/map/messages_main.h7074
-rw-r--r--src/map/messages_re.h7074
-rw-r--r--src/map/messages_zero.h7084
-rw-r--r--src/map/mob.c338
-rw-r--r--src/map/mob.h8
-rw-r--r--src/map/npc.c274
-rw-r--r--src/map/npc.h4
-rw-r--r--src/map/npc_chat.c26
-rw-r--r--src/map/packets.h94
-rw-r--r--src/map/packets_keys_main.h6
-rw-r--r--src/map/packets_keys_zero.h6
-rw-r--r--src/map/packets_shuffle_main.h592
-rw-r--r--src/map/packets_shuffle_re.h9700
-rw-r--r--src/map/packets_shuffle_zero.h6
-rw-r--r--src/map/packets_struct.h889
-rw-r--r--src/map/party.c131
-rw-r--r--src/map/path.c19
-rw-r--r--src/map/pc.c622
-rw-r--r--src/map/pc.h20
-rw-r--r--src/map/pc_groups.c37
-rw-r--r--src/map/pet.c121
-rw-r--r--src/map/pet.h10
-rw-r--r--src/map/quest.c45
-rw-r--r--src/map/rodex.c38
-rw-r--r--src/map/script.c1672
-rw-r--r--src/map/script.h2
-rw-r--r--src/map/searchstore.c39
-rw-r--r--src/map/searchstore.h16
-rw-r--r--src/map/skill.c993
-rw-r--r--src/map/skill.h2
-rw-r--r--src/map/status.c465
-rw-r--r--src/map/storage.c146
-rw-r--r--src/map/trade.c20
-rw-r--r--src/map/unit.c126
-rw-r--r--src/map/unit.h6
-rw-r--r--src/map/vending.c28
-rw-r--r--src/map/vending.h2
-rw-r--r--src/plugins/HPMHooking.c2
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc306
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc312
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc78
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.Hooks.inc2188
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc28
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc7
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc358
-rw-r--r--src/plugins/Makefile.in2
-rw-r--r--src/plugins/db2sql.c4
-rw-r--r--src/plugins/script_mapquit.c2
-rw-r--r--tools/HPMHookGen/HPMDataCheckGen.pl2
-rwxr-xr-xtools/ci/travis.sh8
-rw-r--r--tools/skilldbconverter.php2
206 files changed, 35699 insertions, 21452 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d5599253f..e98922276 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,6 +2,7 @@ stages:
- primary
- secondary
- platforms
+ - clients
- extras
variables: &base_vars
@@ -19,10 +20,8 @@ variables: &base_vars
- uname -a
- ./tools/ci/retry.sh apt-get update
- ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok $SQLHOST
- ./tools/ci/travis.sh getplugins || true
- services:
- - mysql:latest
.branch_exceptions: &branch_exceptions
only:
@@ -38,276 +37,735 @@ pre_re:clang-3.9:
<<: *prerequisites
stage: primary
image: debian:stretch
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: clang-3.9 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=clang-3.9 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:clang-3.9:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
image: debian:stretch
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: clang-3.9 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=clang-3.9 --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:clang-3.9:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:stretch
+ services:
+ - mariadb:10.1
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-3.9 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-3.9 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:clang-4.0:
<<: *branch_exceptions
<<: *prerequisites
- stage: primary
+ stage: secondary
image: debian:unstable
+ services:
+ - mariadb:10
variables:
<<: *base_vars
- INSTALL_PACKAGES: clang-4.0 mysql-client libmysqlclient-dev
+ INSTALL_PACKAGES: clang-4.0 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=clang-4.0 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:clang-4.0:
<<: *branch_exceptions
<<: *prerequisites
- stage: primary
+ stage: secondary
image: debian:unstable
+ services:
+ - mariadb:10
variables:
<<: *base_vars
- INSTALL_PACKAGES: clang-4.0 mysql-client libmysqlclient-dev
+ INSTALL_PACKAGES: clang-4.0 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=clang-4.0 --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:clang-4.0:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-4.0 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-4.0 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+pre_re:clang-5.0:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: secondary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-5.0 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-5.0 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+re:clang-5.0:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: secondary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-5.0 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-5.0 --enable-debug --enable-Werror --enable-buildbot
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:clang-5.0:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-5.0 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-5.0 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+pre_re:clang-6.0:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: primary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-6.0 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-6.0 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+re:clang-6.0:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: primary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-6.0 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-6.0 --enable-debug --enable-Werror --enable-buildbot
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:clang-6.0:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-6.0 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-6.0 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+pre_re:clang-7:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: secondary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-7 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-7 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+re:clang-7:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: secondary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-7 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-7 --enable-debug --enable-Werror --enable-buildbot
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:clang-7:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-7 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=clang-7 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-4.6:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
image: debian:wheezy
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-4.6 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build CC=gcc-4.6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:gcc-4.6:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
image: debian:wheezy
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-4.6 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build CC=gcc-4.6 --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-4.6:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:wheezy
+ services:
+ - mysql:5.5
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-4.6 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-4.6 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-4.7:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
image: debian:wheezy
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-4.7 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build CC=gcc-4.7 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:gcc-4.7:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
image: debian:wheezy
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-4.7 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build CC=gcc-4.7 --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-4.7:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:wheezy
+ services:
+ - mysql:5.5
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-4.7 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-4.7 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-4.8:
<<: *branch_exceptions
<<: *prerequisites
- stage: primary
+ stage: secondary
image: debian:jessie
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-4.8 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build CC=gcc-4.8 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:gcc-4.8:
<<: *branch_exceptions
<<: *prerequisites
- stage: primary
+ stage: secondary
image: debian:jessie
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-4.8 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build CC=gcc-4.8 --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-4.8:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:jessie
+ services:
+ - mysql:5.5
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-4.8 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-4.8 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-4.9:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
image: debian:jessie
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-4.9 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build CC=gcc-4.9 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:gcc-4.9:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
image: debian:jessie
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-4.9 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build CC=gcc-4.9 --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-4.9:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:jessie
+ services:
+ - mysql:5.5
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-4.9 mysql-client libmysqlclient-dev
+ SQLHOST: mysql
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-4.9 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-5:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
image: debian:unstable
+ services:
+ - mariadb:10
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-5 mysql-client libmysqlclient-dev
+ INSTALL_PACKAGES: gcc-5 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-5 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:gcc-5:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
image: debian:unstable
+ services:
+ - mariadb:10
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-5 mysql-client libmysqlclient-dev
+ INSTALL_PACKAGES: gcc-5 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-5 --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-5:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-5 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-5 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-6:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
image: debian:stretch
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:gcc-6:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
image: debian:stretch
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-6:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:stretch
+ services:
+ - mariadb:10.1
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+pre_re:gcc-7:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: secondary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-7 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-7 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+re:gcc-7:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: secondary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-7 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-7 --enable-debug --enable-Werror --enable-buildbot
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-7:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-7 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-7 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+pre_re:gcc-8:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: secondary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-8 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-8 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+re:gcc-8:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: secondary
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-8 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-8 --enable-debug --enable-Werror --enable-buildbot
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-8:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:unstable
+ services:
+ - mariadb:10
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-8 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-8 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-6_i386:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: vicamo/debian:sid-i386
+ image: i386/debian:stable
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client libmysqlclient-dev
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:gcc-6_i386:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: vicamo/debian:sid-i386
+ image: i386/debian:stable
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client libmysqlclient-dev
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-6_i386:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: i386/debian:stable
+ services:
+ - mariadb:10.1
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-6_sanitize:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
image: debian:stretch
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal --disable-manager --enable-sanitize=full
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:gcc-6_sanitize:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
image: debian:stretch
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-manager --enable-sanitize=full
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-6_sanitize:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: debian:stretch
+ services:
+ - mariadb:10.1
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-manager --enable-sanitize=full --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-6_i386_sanitize:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: vicamo/debian:sid-i386
+ image: i386/debian:stable
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client libmysqlclient-dev
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal --disable-manager --enable-sanitize=full
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:gcc-6_i386_sanitize:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: vicamo/debian:sid-i386
+ image: i386/debian:stable
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client libmysqlclient-dev
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-manager --enable-sanitize=full
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+zero-2018:gcc-6_i386_sanitize:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: clients
+ image: i386/debian:stable
+ services:
+ - mariadb:10.1
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-manager --enable-sanitize=full --enable-packetver-zero --enable-packetver=20180511
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:gcc-6_cov:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
image: debian:stretch
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-6 gcovr mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal CFLAGS="-coverage" LDFLAGS="-coverage"
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
- gcovr -r . --gcov-executable=gcov-6 -o gcov_pre.txt
- gcovr -r . --gcov-executable=gcov-6 --html -o gcov_pre.html
- cat gcov_pre.txt
@@ -321,12 +779,15 @@ re:gcc-6_cov:
<<: *prerequisites
stage: secondary
image: debian:stretch
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc-6 gcovr mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot CFLAGS="-coverage" LDFLAGS="-coverage"
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
- gcovr -r . --gcov-executable=gcov-6 -o gcov_re.txt
- gcovr -r . --gcov-executable=gcov-6 --html -o gcov_re.html
- cat gcov_re.txt
@@ -342,77 +803,100 @@ pre_re:debian-oldstable:
<<: *prerequisites
stage: platforms
image: debian:oldstable
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:debian-oldstable:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
image: debian:oldstable
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:debian-stable:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
image: debian:stable
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:debian-stable:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
image: debian:stable
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:debian-testing:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
image: debian:testing
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:debian-testing:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
image: debian:testing
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:centos-previous:
<<: *branch_exceptions
stage: platforms
image: centos:6
+ services:
+ - mysql:5.5
+ variables:
+ <<: *base_vars
+ SQLHOST: mysql
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
@@ -420,20 +904,21 @@ pre_re:centos-previous:
- yum install -y make mysql-devel pcre-devel git zlib-devel mysql
- yum install -y centos-release-scl
- yum install -y yum install devtoolset-3-toolchain
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok $SQLHOST
- ./tools/ci/travis.sh getplugins || true
- services:
- - mysql:latest
- variables:
- <<: *base_vars
script:
- scl enable devtoolset-3 './tools/ci/travis.sh build CFLAGS="-Wno-cast-qual" --enable-debug --enable-Werror --enable-buildbot --disable-renewal'
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:centos-previous:
<<: *branch_exceptions
stage: platforms
image: centos:6
+ services:
+ - mysql:5.5
+ variables:
+ <<: *base_vars
+ SQLHOST: mysql
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
@@ -441,53 +926,51 @@ re:centos-previous:
- yum install -y make mysql-devel pcre-devel git zlib-devel mysql
- yum install -y centos-release-scl
- yum install -y yum install devtoolset-3-toolchain
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok $SQLHOST
- ./tools/ci/travis.sh getplugins || true
- services:
- - mysql:latest
- variables:
- <<: *base_vars
script:
- scl enable devtoolset-3 './tools/ci/travis.sh build CFLAGS="-Wno-cast-qual" --enable-debug --enable-Werror --enable-buildbot'
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:centos-current:
<<: *branch_exceptions
stage: platforms
image: centos:7
+ services:
+ - mariadb:5.5
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
- yum -y update
- - yum install -y gcc make mysql-devel pcre-devel git zlib-devel mysql
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mysql
+ - yum install -y gcc make mariadb-devel pcre-devel git zlib-devel mariadb
+ - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok $SQLHOST
- ./tools/ci/travis.sh getplugins || true
- services:
- - mysql:latest
variables:
<<: *base_vars
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:centos-current:
<<: *branch_exceptions
stage: platforms
image: centos:7
+ services:
+ - mariadb:5.5
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
- yum -y update
- - yum install -y gcc make mysql-devel pcre-devel git zlib-devel mysql
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mysql
+ - yum install -y gcc make mariadb-devel pcre-devel git zlib-devel mariadb
+ - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok $SQLHOST
- ./tools/ci/travis.sh getplugins || true
- services:
- - mysql:latest
variables:
<<: *base_vars
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:ubuntu-xenial:
<<: *branch_exceptions
@@ -495,13 +978,14 @@ pre_re:ubuntu-xenial:
stage: platforms
image: ubuntu:16.04
services:
- - mysql:latest
+ - mysql:5.7
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:ubuntu-xenial:
<<: *branch_exceptions
@@ -509,13 +993,44 @@ re:ubuntu-xenial:
stage: platforms
image: ubuntu:16.04
services:
- - mysql:latest
+ - mysql:5.7
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
+ SQLHOST: mysql
+ script:
+ - ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+pre_re:ubuntu-bionic:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: platforms
+ image: ubuntu:18.04
+ services:
+ - mysql:5.7
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
+ SQLHOST: mysql
+ script:
+ - ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+re:ubuntu-bionic:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: platforms
+ image: ubuntu:18.04
+ services:
+ - mysql:5.7
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
# SQL servers
@@ -524,204 +1039,210 @@ pre_re:mysql-5.5:
<<: *prerequisites
stage: platforms
image: debian:jessie
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client-5.5 libmysqlclient-dev
- services:
- - mysql:5.5
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:mysql-5.5:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
image: debian:jessie
+ services:
+ - mysql:5.5
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client-5.5 libmysqlclient-dev
- services:
- - mysql:5.5
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:mysql-5.6:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:jessie
+ image: debian:unstable
+ services:
+ - mysql:5.6
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
- services:
- - mysql:5.6
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:mysql-5.6:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:jessie
+ image: debian:unstable
+ services:
+ - mysql:5.6
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
- services:
- - mysql:5.6
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:mysql-5.7:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
image: debian:unstable
+ services:
+ - mysql:5.7
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client-5.7 libmysqlclient-dev
- services:
- - mysql:5.7
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:mysql-5.7:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
image: debian:unstable
+ services:
+ - mysql:5.7
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mysql-client-5.7 libmysqlclient-dev
- services:
- - mysql:5.7
+ SQLHOST: mysql
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:mariadb-10.0:
<<: *branch_exceptions
+ <<: *prerequisites
stage: platforms
image: debian:jessie
+ services:
+ - mariadb:10.0
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mariadb-client-10.0 libmysqlclient-dev
- before_script:
- - echo "Building $CI_BUILD_NAME"
- - uname -a
- - ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mariadb
- - ./tools/ci/travis.sh getplugins || true
- services:
- - mariadb:10.0
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mariadb
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:mariadb-10.0:
<<: *branch_exceptions
+ <<: *prerequisites
stage: platforms
image: debian:jessie
+ services:
+ - mariadb:10.0
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mariadb-client-10.0 libmysqlclient-dev
- before_script:
- - echo "Building $CI_BUILD_NAME"
- - uname -a
- - ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mariadb
- - ./tools/ci/travis.sh getplugins || true
- services:
- - mariadb:10.0
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mariadb
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
-pre_re:mariadb-latest:
+pre_re:mariadb-10.1:
<<: *branch_exceptions
+ <<: *prerequisites
stage: platforms
- image: debian:unstable
+ image: debian:stable
+ services:
+ - mariadb:10.1
variables:
<<: *base_vars
INSTALL_PACKAGES: gcc mariadb-client-10.1 libmariadbclient-dev-compat
- before_script:
- - echo "Building $CI_BUILD_NAME"
- - uname -a
- - ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mariadb
- - ./tools/ci/travis.sh getplugins || true
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+re:mariadb-10.1:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: platforms
+ image: debian:stable
+ services:
+ - mariadb:10.1
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc mariadb-client-10.1 libmariadbclient-dev-compat
+ SQLHOST: mariadb
+ script:
+ - ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
+
+pre_re:mariadb-latest:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: platforms
+ image: debian:unstable
services:
- mariadb:latest
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mariadb
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:mariadb-latest:
<<: *branch_exceptions
+ <<: *prerequisites
stage: platforms
image: debian:unstable
- variables:
- <<: *base_vars
- INSTALL_PACKAGES: gcc mariadb-client-10.1 libmariadbclient-dev-compat
- before_script:
- - echo "Building $CI_BUILD_NAME"
- - uname -a
- - ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mariadb
- - ./tools/ci/travis.sh getplugins || true
services:
- mariadb:latest
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
+ SQLHOST: mariadb
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mariadb
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
pre_re:percona:
<<: *branch_exceptions
+ <<: *prerequisites
stage: platforms
- image: debian:jessie
- variables:
- <<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
- before_script:
- - echo "Building $CI_BUILD_NAME"
- - uname -a
- - ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok percona
- - ./tools/ci/travis.sh getplugins || true
+ image: debian:stretch
services:
- percona:latest
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
+ SQLHOST: percona
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok percona
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
re:percona:
<<: *branch_exceptions
+ <<: *prerequisites
stage: platforms
- image: debian:jessie
- variables:
- <<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
- before_script:
- - echo "Building $CI_BUILD_NAME"
- - uname -a
- - ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- - ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok percona
- - ./tools/ci/travis.sh getplugins || true
+ image: debian:stretch
services:
- percona:latest
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
+ SQLHOST: percona
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok percona
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST
# Documentation
pages:
diff --git a/3rdparty/libconfig/extra/gen/grammar.y b/3rdparty/libconfig/extra/gen/grammar.y
index a99b8cf1b..31b600e78 100644
--- a/3rdparty/libconfig/extra/gen/grammar.y
+++ b/3rdparty/libconfig/extra/gen/grammar.y
@@ -1,7 +1,7 @@
/* -*- mode: C -*- */
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/extra/gen/scanner.l b/3rdparty/libconfig/extra/gen/scanner.l
index 60ede1ca7..1c99bcb77 100644
--- a/3rdparty/libconfig/extra/gen/scanner.l
+++ b/3rdparty/libconfig/extra/gen/scanner.l
@@ -1,7 +1,7 @@
/* -*- mode: C -*- */
/* --------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/libconfig.c b/3rdparty/libconfig/libconfig.c
index 9077b0131..da7ae048e 100644
--- a/3rdparty/libconfig/libconfig.c
+++ b/3rdparty/libconfig/libconfig.c
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/libconfig.h b/3rdparty/libconfig/libconfig.h
index 69f2e6dbf..d465bb236 100644
--- a/3rdparty/libconfig/libconfig.h
+++ b/3rdparty/libconfig/libconfig.h
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/parsectx.h b/3rdparty/libconfig/parsectx.h
index 4d1f261d9..865fa5912 100644
--- a/3rdparty/libconfig/parsectx.h
+++ b/3rdparty/libconfig/parsectx.h
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/scanctx.c b/3rdparty/libconfig/scanctx.c
index 94ba73edd..fc1e10618 100644
--- a/3rdparty/libconfig/scanctx.c
+++ b/3rdparty/libconfig/scanctx.c
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/scanctx.h b/3rdparty/libconfig/scanctx.h
index a5939ca05..97d4ee56f 100644
--- a/3rdparty/libconfig/scanctx.h
+++ b/3rdparty/libconfig/scanctx.h
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/scanner.c b/3rdparty/libconfig/scanner.c
index 8ed08f9b8..bed223ba6 100644
--- a/3rdparty/libconfig/scanner.c
+++ b/3rdparty/libconfig/scanner.c
@@ -551,7 +551,7 @@ static const flex_int32_t yy_rule_can_match_eol[46] =
/* -*- mode: C -*- */
/* --------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/strbuf.c b/3rdparty/libconfig/strbuf.c
index 0b5dfe511..7610dad0f 100644
--- a/3rdparty/libconfig/strbuf.c
+++ b/3rdparty/libconfig/strbuf.c
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/strbuf.h b/3rdparty/libconfig/strbuf.h
index 948bf4768..474a502cb 100644
--- a/3rdparty/libconfig/strbuf.h
+++ b/3rdparty/libconfig/strbuf.h
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/3rdparty/libconfig/wincompat.h b/3rdparty/libconfig/wincompat.h
index 7e30f0e8d..8ac7a916f 100644
--- a/3rdparty/libconfig/wincompat.h
+++ b/3rdparty/libconfig/wincompat.h
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2013-2018 Hercules Dev Team
Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 00de95c3e..ae0e840e9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,63 @@ 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
-->
+## [v2018.07.01+1] `Jul 1 2018` `PATCH 1`
+### Fixed
+- Fixed a regression that made it impossible to invite guild members. (#2124, issue #2122)
+
+## [v2018.07.01] `Jul 1 2018`
+### Added
+- Added/updated packets and message tables for clients from 2018-05-30 to 2018-06-12. (#2064)
+- Added/updated a pair of enums (`cz_ui_types`, `zc_ui_types`) for the values used by packets 0xa68 and 0x0ae2, fixed compatibility with older clients. (part of #2064)
+- Added the possibility for a plugin to abort the skill currently being cast by returning true from `skill_check_condition_castend_unknown()`. (#2076)
+- Implemented Pet Evolution. This adds a new `Evolve` field to the Pet DB, and a generator script is provided, to automatically create entries from the pet evolution lua. (#2063)
+- Implemented Pet Autofeeding. This adds a new `AutoFeed` field to the Pet DB, and can be completely disabled through the `enabe_pet_autofeed` flag in `feature.conf`. (#2063)
+- Added the script command `setparam()`, the setter counterpart of `readparam()`, accepting an optional account id argument. (#2081)
+- Updated maps database/mapcache with new maps (part of #2098)
+- Added/updated packets and message tables for clients from 2018-06-20 to 2018-06-27. (#2095)
+- Added new map/mapserver-change packets for the airship system. (part of #2095)
+- Added new (unused) 'dns host' field in `char_send_map_info()`, compatible with clients newer than 2017-03-29. (part of #2095)
+- Added an option to hide names in the script commands `unittalk()` and `npctalk()` (#1831, formerly #1571, issue #1523)
+
+### Changed
+- Updated README with more info about the development dependencies. (b57232ac29)
+- Updated `instance_create()` when trying to create an already existing instance, to match the official behavior. (#1924, issue #1651)
+- Removed the `RTLD_DEEPBIND` flag from the plugin-loading functions, for compatibility with asan in gcc-8. (#2079)
+- Standardized the function call syntax in the script command documentation. (#2084)
+- Changed the way pet eggs are handles in the inventory (they don't get deleted when hatched), for compatibility with the pet evolution system. (part of #2063)
+- Extended the script command `readparam()` with the ability to receive an account id as optional argument, as an alternative to the character name. (#part of 2081)
+- Updated the Private Airship map list to match the main kRO servers, and enabled the functionality on the main packetvers. (#2098)
+- Updated pin code status packets for the 2018 clients. (part of #2095)
+- Updated the authentication error packets in the map server to use the most recent version for the current packetver. (part of #2095)
+- Updated the roulette packets for the 2018 clients. (part of #2095)
+- Updated GitLab-CI builds to include more recent compilers and platforms: clang-5.0, clang-6.0, clang-7, gcc-7, gcc-8 ubuntu 18.04, MariaDB 10.1 are now tested. (part of #2111)
+- Updated GitLab-CI builds to include builds with a recent Zero packetver, to ensure that recent code is compiled/tested. (part of #2111)
+- Split the function `clif_disp_overhead` into two and converted its packet handling into the struct format. (part of #1831)
+- Cleaned up the mapif-related code, splitting `mapif` packet processing from `inter` logic and moving the `mapif` functions to `mapif.c`. (#2108)
+- Changed all the functions (where possible) to have static linking, in order to prevent incorrect symbols to be used by plugins, as a safer alternative to `RTLD_DEEPBIND`. Plugin authors are still advised to avoid naming their local symbols with the same name as non-static symbols exported by the code. (#2112)
+- Prevented compilation of the non-memmgr memory management function wrappers when the memory manager is enabled. (part of #2112)
+
+### Fixed
+- Fixed a crash when entries from the `job_db` are removed. (#2071, issue #2070)
+- Fixed `getunits()` to always return a value, even in case of error. (d2c0e453fc)
+- Fixed an incorrect response message in the stylist shop. (#2066, issue #2065)
+- Fixed an issue in the `clif_parse_OpenVending()` processing when the item list is empty. (#2072)
+- Fixed various typos in code documentation/comments. (#2069)
+- Fixed a field size in the character creation packet. (part of #2064)
+- Added some missing fields in the `AC_ACCEPT_LOGIN` packet structure. (part of #2064)
+- Fixed compilation with packetvers older than 20090805. (part of #2064)
+- Fixed the `rodex_sendmail_acc()` command to correctly use the `account_id` field as stated in the documentation. (#2075, issue #2024)
+- Fixed the shutdown callback calls, that weren't getting called any longer since core.c was interfaced. (#2106)
+- Fixed a parsing error when the pre-increment/pre-decrement operator is used in a conditional's body without braces. (#2077, issues #705, #912, #1553, #1710)
+- Fixed `SC_NOEQUIPWEAPON`/`RG_STRIPWEAPON` (Renewal only) and `SC_INCATKRATE`/`NPC_POWERUP` whose ATK increment/reduction were ineffective on monsters. (#2097)
+- Fixed an error when a player's PIN code is set for the first time. (#2100, issue #2046)
+- Fixed the searchstore packet for compatibility with item options. (part of #2095)
+- Fixed GitLab-CI build failures caused by MySQL client versions incompatible with the updated docker images. (#2111)
+- Fixed the novending map/cell flag that would cause players to get stuck. (#2091, issue #662)
+- Fixed the documentation for the `queueopt()` script command. (#2086)
+- Fixed documentation comments related to the `exp_group_db` (#2114, #2115)
+- Fixed an issue in the travis builds when the console error output is too long. (part of #2112)
+
## [v2018.06.03] `Jun 3 2018`
### Added
- Added/updated packets support for clients from 2018-05-09 to 2018-05-23. (#2043)
@@ -25,7 +82,7 @@ If you are reading this in a text editor, simply ignore this section
### Fixed
- Fixed an issue in the mob skill db parser that limited the mob skills to a maximum of 5 (#2042, issue #2044)
- Fixed some incorrect msgstringtable IDs. (part of #2038)
-- Fixed inheritance in the mob DB, no longer iverwriting the Range field with a default value. (#2055)
+- Fixed inheritance in the mob DB, no longer overwriting the Range field with a default value. (#2055)
- Fixed the skill element getter for levels above `MAX_SKILL_LEVEL`. (#2059)
- Fixed interaction between the `pvp_nocalcrank` mapflag and the script/atcommands to toggle PvP. (#2057, issue #2056)
@@ -272,6 +329,8 @@ 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
+[v2018.07.01+1]: https://github.com/HerculesWS/Hercules/compare/v2018.07.01...v2018.07.01+1
+[v2018.07.01]: https://github.com/HerculesWS/Hercules/compare/v2018.06.03...v2018.07.01
[v2018.06.03]: https://github.com/HerculesWS/Hercules/compare/v2018.05.06...v2018.06.03
[v2018.05.06]: https://github.com/HerculesWS/Hercules/compare/v2018.04.08...v2018.05.06
[v2018.04.08]: https://github.com/HerculesWS/Hercules/compare/v2018.03.11...v2018.04.08
diff --git a/conf/char/char-server.conf b/conf/char/char-server.conf
index 7cdcc7bdb..76bd5e359 100644
--- a/conf/char/char-server.conf
+++ b/conf/char/char-server.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/common/inter-server.conf b/conf/common/inter-server.conf
index 18fd9d1e7..3310c9e5c 100644
--- a/conf/common/inter-server.conf
+++ b/conf/common/inter-server.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/common/socket.conf b/conf/common/socket.conf
index 0dd5386cb..8b8b21865 100644
--- a/conf/common/socket.conf
+++ b/conf/common/socket.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/global/console.conf b/conf/global/console.conf
index 21ee46bd0..84a16a7c8 100644
--- a/conf/global/console.conf
+++ b/conf/global/console.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/global/sql_connection.conf b/conf/global/sql_connection.conf
index 60fea5656..3a465afea 100644
--- a/conf/global/sql_connection.conf
+++ b/conf/global/sql_connection.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/import-tmpl/battle.conf b/conf/import-tmpl/battle.conf
index 4080eed72..7d1d03578 100644
--- a/conf/import-tmpl/battle.conf
+++ b/conf/import-tmpl/battle.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/import-tmpl/char-server.conf b/conf/import-tmpl/char-server.conf
index 6bfb308b5..4c9462bc7 100644
--- a/conf/import-tmpl/char-server.conf
+++ b/conf/import-tmpl/char-server.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/import-tmpl/inter-server.conf b/conf/import-tmpl/inter-server.conf
index 243dda4ea..c23143b35 100644
--- a/conf/import-tmpl/inter-server.conf
+++ b/conf/import-tmpl/inter-server.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/import-tmpl/login-server.conf b/conf/import-tmpl/login-server.conf
index feadef976..1c45f94f9 100644
--- a/conf/import-tmpl/login-server.conf
+++ b/conf/import-tmpl/login-server.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/import-tmpl/logs.conf b/conf/import-tmpl/logs.conf
index 99e666d96..8f8c2ea68 100644
--- a/conf/import-tmpl/logs.conf
+++ b/conf/import-tmpl/logs.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/import-tmpl/map-server.conf b/conf/import-tmpl/map-server.conf
index 2c9b16531..4d907025e 100644
--- a/conf/import-tmpl/map-server.conf
+++ b/conf/import-tmpl/map-server.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/import-tmpl/script.conf b/conf/import-tmpl/script.conf
index b354b2bf6..040245285 100644
--- a/conf/import-tmpl/script.conf
+++ b/conf/import-tmpl/script.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/import-tmpl/socket.conf b/conf/import-tmpl/socket.conf
index 04d0a40c4..7ce178140 100644
--- a/conf/import-tmpl/socket.conf
+++ b/conf/import-tmpl/socket.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/login/login-server.conf b/conf/login/login-server.conf
index 4ad02deb2..a3d0b6955 100644
--- a/conf/login/login-server.conf
+++ b/conf/login/login-server.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle.conf b/conf/map/battle.conf
index dc978aefc..75cf0fb49 100644
--- a/conf/map/battle.conf
+++ b/conf/map/battle.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/battle.conf b/conf/map/battle/battle.conf
index 2e73a0aa8..4b1632e31 100644
--- a/conf/map/battle/battle.conf
+++ b/conf/map/battle/battle.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/battleground.conf b/conf/map/battle/battleground.conf
index 629a664f7..b2a482f3d 100644
--- a/conf/map/battle/battleground.conf
+++ b/conf/map/battle/battleground.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/client.conf b/conf/map/battle/client.conf
index 4dc803bca..61ce0e279 100644
--- a/conf/map/battle/client.conf
+++ b/conf/map/battle/client.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/drops.conf b/conf/map/battle/drops.conf
index 4dbbf8fd5..eb7d94f13 100644
--- a/conf/map/battle/drops.conf
+++ b/conf/map/battle/drops.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/exp.conf b/conf/map/battle/exp.conf
index 3a38c1c6c..8ca3de933 100644
--- a/conf/map/battle/exp.conf
+++ b/conf/map/battle/exp.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/feature.conf b/conf/map/battle/feature.conf
index 285633209..1ed94b2a4 100644
--- a/conf/map/battle/feature.conf
+++ b/conf/map/battle/feature.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/gm.conf b/conf/map/battle/gm.conf
index bcc70b63b..872aaea6d 100644
--- a/conf/map/battle/gm.conf
+++ b/conf/map/battle/gm.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/guild.conf b/conf/map/battle/guild.conf
index 90282ef53..e92760796 100644
--- a/conf/map/battle/guild.conf
+++ b/conf/map/battle/guild.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/homunc.conf b/conf/map/battle/homunc.conf
index 0bf2a4b98..0042df016 100644
--- a/conf/map/battle/homunc.conf
+++ b/conf/map/battle/homunc.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/items.conf b/conf/map/battle/items.conf
index 135df7107..144e04ea4 100644
--- a/conf/map/battle/items.conf
+++ b/conf/map/battle/items.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/misc.conf b/conf/map/battle/misc.conf
index bc97b716a..5a8f916aa 100644
--- a/conf/map/battle/misc.conf
+++ b/conf/map/battle/misc.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/monster.conf b/conf/map/battle/monster.conf
index 0f621cf72..192e54615 100644
--- a/conf/map/battle/monster.conf
+++ b/conf/map/battle/monster.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/party.conf b/conf/map/battle/party.conf
index a38321806..621ec50f4 100644
--- a/conf/map/battle/party.conf
+++ b/conf/map/battle/party.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/pet.conf b/conf/map/battle/pet.conf
index 6dfe5076c..02324ac52 100644
--- a/conf/map/battle/pet.conf
+++ b/conf/map/battle/pet.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/player.conf b/conf/map/battle/player.conf
index de8ef6f69..25ac24d6b 100644
--- a/conf/map/battle/player.conf
+++ b/conf/map/battle/player.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/skill.conf b/conf/map/battle/skill.conf
index b88c5d141..d258567a0 100644
--- a/conf/map/battle/skill.conf
+++ b/conf/map/battle/skill.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/battle/status.conf b/conf/map/battle/status.conf
index 37b2e013d..94459e113 100644
--- a/conf/map/battle/status.conf
+++ b/conf/map/battle/status.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/logs.conf b/conf/map/logs.conf
index e2dc7fbdd..f56db9eee 100644
--- a/conf/map/logs.conf
+++ b/conf/map/logs.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/map-server.conf b/conf/map/map-server.conf
index b489e948b..943b7b5a6 100644
--- a/conf/map/map-server.conf
+++ b/conf/map/map-server.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/maps.conf b/conf/map/maps.conf
index 5adaefec8..2b1b134ff 100644
--- a/conf/map/maps.conf
+++ b/conf/map/maps.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/conf/map/script.conf b/conf/map/script.conf
index 78514e637..f18e9d6e2 100644
--- a/conf/map/script.conf
+++ b/conf/map/script.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/db/item_db2.conf b/db/item_db2.conf
index d814e5ef3..199bd798e 100644
--- a/db/item_db2.conf
+++ b/db/item_db2.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf
index dfe27f428..ccd1a212c 100644
--- a/db/pre-re/item_db.conf
+++ b/db/pre-re/item_db.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 3974a911e..329fc06aa 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index a00756056..2653f052a 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -6631,18 +6631,49 @@ Examples:
*unitwarp(<GID>, <Mapname>, <x>, <y>)
*unitattack(<GID>, <Target ID>)
*unitstop(<GID>)
-*unittalk(<GID>, <Text>)
+*unittalk(<GID>, <Text>{, show_name{, <send_target>{, <target_id>}}})
*unitemote(<GID>, <Emote>)
Okay, these commands should be fairly self explaining.
For the emotions, you can look in db/constants.conf for prefixes with e_
PS: unitwarp() supports a <GID> of zero, which causes the executor of the
+PS: unittalk() can receive 3 extra parameters:
+ show_name:
+ true: Shows Unit name like "UnitName : Message" (default)
+ false: Hides Unit name
+ send_target:
+ AREA_CHAT_WOC: sends the message to everyone in view range including the attached unit (default)
+ SELF: sends the message to the given unit gid only
+ target_id:
+ if send_target is set to SELF, the message will be shown by the given gid,
+ target_id allows changing the unit that will see the message.
script to be affected. This can be used with OnTouchNPC to warp
monsters:
OnTouchNPC:
unitwarp(0, "this", -1, -1);
+ // hide the npc name from the text
+ unittalk(getnpcid(0), "foobar", false);
+
+ // display by npc to everyone
+ unittalk(getnpcid(0), "foobar", true);
+
+ // display by npc to npc
+ unittalk(getnpcid(0), "foobar", true, SELF);
+
+ // display the text by the npc to the attached player only
+ unittalk(getnpcid(0), "foobar", true, SELF, playerattached());
+
+ // display by player to everyone
+ unittalk(playerattached(), "foobar", true);
+
+ // display by player to himself only
+ unittalk(playerattached(), "foobar", true, SELF);
+
+ // display the text by the 1st player to the attached player only
+ unittalk(getcharid(CHAR_ID_ACCOUNT, "Name"), "foobar", true, SELF, playerattached());
+
---------------------------------------
*disablenpc("<NPC object name>")
@@ -6750,12 +6781,16 @@ A debug message also shows on the console when no events are triggered.
---------------------------------------
-*npctalk("<message>"{, "<npc name>"})
+*npctalk("<message>"{, "<npc name>"{, <show_name>}})
+
+show_npcname values:
+ true: shows npc name (default)
+ false: hide npc name
This command will display a message to the surrounding area as if the NPC
object running it was a player talking - that is, above their head and in
-the chat window. The display name of the NPC will get appended in front of
-the message to complete the effect.
+the chat window. If show_npcname is true the name of the NPC will get appended in front of
+the message, otherwise the npc name will not be shown.
// This will make everyone in the area see the NPC greet the character
// who just invoked it.
@@ -9754,11 +9789,11 @@ true otherwise.
---------------------------------------
-*queueopt(<queue_id>, <optionType>, {Optional <option val>})
+*queueopt(<queue_id>, <optionType>{, <event label})
-Modifies <queue_id>'s <optionType>. When <option val> is not present
-<optionType> is removed from <queue_id>. When present it modifies
-<queue_id>'s <optionType> with the new <option val> value.
+Modifies <queue_id>'s <optionType>. When <event label> is not present
+<optionType> is removed from <queue_id>. When present it will execute the
+<event label> when the <queue_id>'s <optionType> condition is met.
Returns true on success, false on failure.
diff --git a/npc/re/instances/OldGlastHeim.txt b/npc/re/instances/OldGlastHeim.txt
index 587de45bf..44b5f1e61 100644
--- a/npc/re/instances/OldGlastHeim.txt
+++ b/npc/re/instances/OldGlastHeim.txt
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2013-2016 Hercules Dev Team
+//= Copyright (C) 2013-2018 Hercules Dev Team
//= Copyright (C) Ridley
//= Copyright (C) Exneval
//= Copyright (C) Euphy
diff --git a/npc/re/instances/octopus_cave.txt b/npc/re/instances/octopus_cave.txt
index 4c964072a..ffcf0a9fe 100644
--- a/npc/re/instances/octopus_cave.txt
+++ b/npc/re/instances/octopus_cave.txt
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2013-2016 Hercules Dev Team
+//= Copyright (C) 2013-2018 Hercules Dev Team
//= Copyright (C) Euphy
//= Copyright (C) Muad_Dib
//=
diff --git a/npc/re/instances/saras_memory.txt b/npc/re/instances/saras_memory.txt
index 9eac396aa..25c0e619b 100644
--- a/npc/re/instances/saras_memory.txt
+++ b/npc/re/instances/saras_memory.txt
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2013-2016 Hercules Dev Team
+//= Copyright (C) 2013-2018 Hercules Dev Team
//= Copyright (C) Ridley
//= Copyright (C) Ziu
//=
diff --git a/npc/scripts_dev.conf b/npc/scripts_dev.conf
index ff4ef4c4f..9916dcad9 100644
--- a/npc/scripts_dev.conf
+++ b/npc/scripts_dev.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/npc/scripts_removed.conf b/npc/scripts_removed.conf
index c1089466c..a4e0b5956 100644
--- a/npc/scripts_removed.conf
+++ b/npc/scripts_removed.conf
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql
index 45d712a6f..bfd6d20ba 100644
--- a/sql-files/item_db.sql
+++ b/sql-files/item_db.sql
@@ -29,7 +29,7 @@
DROP TABLE IF EXISTS `item_db`;
CREATE TABLE `item_db` (
- `id` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
+ `id` int(11) UNSIGNED NOT NULL DEFAULT '0',
`name_english` varchar(50) NOT NULL DEFAULT '',
`name_japanese` varchar(50) NOT NULL DEFAULT '',
`type` tinyint(2) UNSIGNED NOT NULL DEFAULT '0',
diff --git a/sql-files/item_db2.sql b/sql-files/item_db2.sql
index 1957b0b8c..4df23a4d0 100644
--- a/sql-files/item_db2.sql
+++ b/sql-files/item_db2.sql
@@ -29,7 +29,7 @@
DROP TABLE IF EXISTS `item_db2`;
CREATE TABLE `item_db2` (
- `id` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
+ `id` int(11) UNSIGNED NOT NULL DEFAULT '0',
`name_english` varchar(50) NOT NULL DEFAULT '',
`name_japanese` varchar(50) NOT NULL DEFAULT '',
`type` tinyint(2) UNSIGNED NOT NULL DEFAULT '0',
diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql
index 5763847dc..7bd8fba12 100644
--- a/sql-files/item_db_re.sql
+++ b/sql-files/item_db_re.sql
@@ -29,7 +29,7 @@
DROP TABLE IF EXISTS `item_db`;
CREATE TABLE `item_db` (
- `id` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
+ `id` int(11) UNSIGNED NOT NULL DEFAULT '0',
`name_english` varchar(50) NOT NULL DEFAULT '',
`name_japanese` varchar(50) NOT NULL DEFAULT '',
`type` tinyint(2) UNSIGNED NOT NULL DEFAULT '0',
diff --git a/src/char/HPMchar.c b/src/char/HPMchar.c
index 43a94604d..9f075d909 100644
--- a/src/char/HPMchar.c
+++ b/src/char/HPMchar.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/char/HPMchar.h b/src/char/HPMchar.h
index 2bf2820f8..0de3b88b8 100644
--- a/src/char/HPMchar.h
+++ b/src/char/HPMchar.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/char/char.c b/src/char/char.c
index 6e0193780..99198fa50 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -96,8 +96,8 @@ char party_db[256] = "party";
char pet_db[256] = "pet";
char mail_db[256] = "mail"; // MAIL SYSTEM
char auction_db[256] = "auction"; // Auctions System
-char friend_db[256] = "friends";
-char hotkey_db[256] = "hotkey";
+static char friend_db[256] = "friends";
+static char hotkey_db[256] = "hotkey";
char quest_db[256] = "quest";
char rodex_db[256] = "rodex_mail";
char rodex_item_db[256] = "rodex_items";
@@ -107,41 +107,41 @@ char mercenary_db[256] = "mercenary";
char mercenary_owner_db[256] = "mercenary_owner";
char ragsrvinfo_db[256] = "ragsrvinfo";
char elemental_db[256] = "elemental";
-char account_data_db[256] = "account_data";
+static char account_data_db[256] = "account_data";
char acc_reg_num_db[32] = "acc_reg_num_db";
char acc_reg_str_db[32] = "acc_reg_str_db";
char char_reg_str_db[32] = "char_reg_str_db";
char char_reg_num_db[32] = "char_reg_num_db";
-struct char_interface char_s;
+static struct char_interface char_s;
struct char_interface *chr;
char db_path[1024] = "db";
-char wisp_server_name[NAME_LENGTH] = "Server";
-char login_ip_str[128];
-uint32 login_ip = 0;
-uint16 login_port = 6900;
-char char_ip_str[128];
-char bind_ip_str[128];
-uint32 bind_ip = INADDR_ANY;
-int char_maintenance_min_group_id = 0;
-bool enable_char_creation = true; ///< Whether to allow character creation.
-
-bool name_ignoring_case = false; // Allow or not identical name for characters but with a different case by [Yor]
+static char wisp_server_name[NAME_LENGTH] = "Server";
+static char login_ip_str[128];
+static uint32 login_ip = 0;
+static uint16 login_port = 6900;
+static char char_ip_str[128];
+static char bind_ip_str[128];
+static uint32 bind_ip = INADDR_ANY;
+static int char_maintenance_min_group_id = 0;
+static bool enable_char_creation = true; ///< Whether to allow character creation.
+
+static bool name_ignoring_case = false; // Allow or not identical name for characters but with a different case by [Yor]
int char_name_option = 0; // Option to know which letters/symbols are authorized in the name of a character (0: all, 1: only those in char_name_letters, 2: all EXCEPT those in char_name_letters) by [Yor]
-char unknown_char_name[NAME_LENGTH] = "Unknown"; // Name to use when the requested name cannot be determined
+static char unknown_char_name[NAME_LENGTH] = "Unknown"; // Name to use when the requested name cannot be determined
#define TRIM_CHARS "\255\xA0\032\t\x0A\x0D " //The following characters are trimmed regardless because they cause confusion and problems on the servers. [Skotlex]
char char_name_letters[1024] = ""; // list of letters/symbols allowed (or not) in a character name. by [Yor]
-int char_del_level = 0; ///< From which level you can delete character [Lupus]
-int char_del_delay = 86400;
-bool char_aegis_delete = false; ///< Verify if char is in guild/party or char and reacts as Aegis does (disallow deletion), @see chr->delete2_req.
+static int char_del_level = 0; ///< From which level you can delete character [Lupus]
+static int char_del_delay = 86400;
+static bool char_aegis_delete = false; ///< Verify if char is in guild/party or char and reacts as Aegis does (disallow deletion), @see chr->delete2_req.
-int max_connect_user = -1;
-int gm_allow_group = -1;
+static int max_connect_user = -1;
+static int gm_allow_group = -1;
int autosave_interval = DEFAULT_AUTOSAVE_INTERVAL;
-int start_zeny = 0;
+static int start_zeny = 0;
/// Start items for new characters
struct start_item_s {
@@ -150,28 +150,28 @@ struct start_item_s {
int loc;
bool stackable;
};
-VECTOR_DECL(struct start_item_s) start_items;
+static VECTOR_DECL(struct start_item_s) start_items;
int guild_exp_rate = 100;
//Custom limits for the fame lists. [Skotlex]
-int fame_list_size_chemist = MAX_FAME_LIST;
-int fame_list_size_smith = MAX_FAME_LIST;
-int fame_list_size_taekwon = MAX_FAME_LIST;
+static int fame_list_size_chemist = MAX_FAME_LIST;
+static int fame_list_size_smith = MAX_FAME_LIST;
+static int fame_list_size_taekwon = MAX_FAME_LIST;
// Char-server-side stored fame lists [DracoRPG]
-struct fame_list smith_fame_list[MAX_FAME_LIST];
-struct fame_list chemist_fame_list[MAX_FAME_LIST];
-struct fame_list taekwon_fame_list[MAX_FAME_LIST];
+static struct fame_list smith_fame_list[MAX_FAME_LIST];
+static struct fame_list chemist_fame_list[MAX_FAME_LIST];
+static struct fame_list taekwon_fame_list[MAX_FAME_LIST];
// Initial position (it's possible to set it in conf file)
#ifdef RENEWAL
- struct point start_point = { 0, 97, 90 };
+static struct point start_point = { 0, 97, 90 };
#else
- struct point start_point = { 0, 53, 111 };
+static struct point start_point = { 0, 53, 111 };
#endif
-unsigned short skillid2idx[MAX_SKILL_ID];
+static unsigned short skillid2idx[MAX_SKILL_ID];
//-----------------------------------------------------
// Auth database
@@ -200,7 +200,7 @@ static struct DBData char_create_online_char_data(union DBKey key, va_list args)
return DB->ptr2data(character);
}
-void char_set_account_online(int account_id)
+static void char_set_account_online(int account_id)
{
WFIFOHEAD(chr->login_fd,6);
WFIFOW(chr->login_fd,0) = 0x272b;
@@ -208,7 +208,7 @@ void char_set_account_online(int account_id)
WFIFOSET(chr->login_fd,6);
}
-void char_set_account_offline(int account_id)
+static void char_set_account_offline(int account_id)
{
WFIFOHEAD(chr->login_fd,6);
WFIFOW(chr->login_fd,0) = 0x272c;
@@ -216,7 +216,7 @@ void char_set_account_offline(int account_id)
WFIFOSET(chr->login_fd,6);
}
-void char_set_char_charselect(int account_id)
+static void char_set_char_charselect(int account_id)
{
struct online_char_data* character;
@@ -240,7 +240,7 @@ void char_set_char_charselect(int account_id)
chr->set_account_online(account_id);
}
-void char_set_char_online(int map_id, int char_id, int account_id)
+static void char_set_char_online(int map_id, int char_id, int account_id)
{
struct online_char_data* character;
struct mmo_charstatus *cp;
@@ -280,7 +280,7 @@ void char_set_char_online(int map_id, int char_id, int account_id)
chr->set_account_online(account_id);
}
-void char_set_char_offline(int char_id, int account_id)
+static void char_set_char_offline(int char_id, int account_id)
{
struct online_char_data* character;
@@ -371,7 +371,7 @@ static int char_db_kickoffline(union DBKey key, struct DBData *data, va_list ap)
return 1;
}
-void char_set_login_all_offline(void)
+static void char_set_login_all_offline(void)
{
//Tell login-server to also mark all our characters as offline.
WFIFOHEAD(chr->login_fd,2);
@@ -379,7 +379,7 @@ void char_set_login_all_offline(void)
WFIFOSET(chr->login_fd,2);
}
-void char_set_all_offline(int id)
+static void char_set_all_offline(int id)
{
if (id < 0)
ShowNotice("Sending all users offline.\n");
@@ -392,7 +392,7 @@ void char_set_all_offline(int id)
chr->set_login_all_offline();
}
-void char_set_all_offline_sql(void)
+static void char_set_all_offline_sql(void)
{
//Set all players to 'OFFLINE'
if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `online` = '0'", char_db) )
@@ -414,7 +414,7 @@ static struct DBData char_create_charstatus(union DBKey key, va_list args)
return DB->ptr2data(cp);
}
-int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
+static int char_mmo_char_tosql(int char_id, struct mmo_charstatus *p)
{
int i = 0;
int count = 0;
@@ -709,7 +709,7 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p)
* @param[in] table Table to be used for the transaction.
* @return -1 on failure or number of items added to the list if successful.
*/
-int char_getitemdata_from_sql(struct item *items, int max, int guid, enum inventory_table_type table)
+static int char_getitemdata_from_sql(struct item *items, int max, int guid, enum inventory_table_type table)
{
int i = 0;
struct SqlStmt *stmt = NULL;
@@ -767,7 +767,7 @@ int char_getitemdata_from_sql(struct item *items, int max, int guid, enum invent
}
if (SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &item.id, sizeof item.id, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_SHORT, &item.nameid, sizeof item.nameid, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &item.nameid, sizeof item.nameid, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_SHORT, &item.amount, sizeof item.amount, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_UINT, &item.equip, sizeof item.equip, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &item.identify, sizeof item.identify, NULL, NULL)
@@ -781,7 +781,7 @@ int char_getitemdata_from_sql(struct item *items, int max, int guid, enum invent
}
for (i = 0; i < MAX_SLOTS; i++) {
- if (SQL_ERROR == SQL->StmtBindColumn(stmt, 10 + i, SQLDT_SHORT, &item.card[i], sizeof item.card[i], NULL, NULL))
+ if (SQL_ERROR == SQL->StmtBindColumn(stmt, 10 + i, SQLDT_INT, &item.card[i], sizeof item.card[i], NULL, NULL))
SqlStmt_ShowDebug(stmt);
}
@@ -816,7 +816,7 @@ int char_getitemdata_from_sql(struct item *items, int max, int guid, enum invent
* @param[in] tableswitch The type of table (@see enum inventory_table_type).
* @retval -1 in case of failure, or number of changes made within the table.
*/
-int char_memitemdata_to_sql(const struct item *p_items, int guid, enum inventory_table_type table)
+static int char_memitemdata_to_sql(const struct item *p_items, int guid, enum inventory_table_type table)
{
StringBuf buf;
int i = 0, j = 0;
@@ -872,7 +872,7 @@ int char_memitemdata_to_sql(const struct item *p_items, int guid, enum inventory
&& p_items[j].nameid != 0
&& cp_it->nameid == p_items[j].nameid
&& cp_it->unique_id == p_items[j].unique_id
- && memcmp(p_items[j].card, cp_it->card, sizeof(short) * MAX_SLOTS) == 0
+ && memcmp(p_items[j].card, cp_it->card, sizeof(int) * MAX_SLOTS) == 0
&& memcmp(p_items[j].option, cp_it->option, 5 * MAX_ITEM_OPTIONS) == 0);
if (j < item_count) { // Item found.
@@ -1001,7 +1001,7 @@ int char_memitemdata_to_sql(const struct item *p_items, int guid, enum inventory
* @retval SEX_FEMALE if the per-character sex is female
* @retval 99 if the per-character sex is not defined or the current PACKETVER doesn't support it.
*/
-int char_mmo_gender(const struct char_session_data *sd, const struct mmo_charstatus *p, char sex)
+static int char_mmo_gender(const struct char_session_data *sd, const struct mmo_charstatus *p, char sex)
{
#if PACKETVER >= 20141016
(void)sd; (void)p; // Unused
@@ -1039,7 +1039,7 @@ int char_mmo_gender(const struct char_session_data *sd, const struct mmo_charsta
//=====================================================================================================
// Loads the basic character rooster for the given account. Returns total buffer used.
-int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf)
+static int char_mmo_chars_fromsql(struct char_session_data *sd, uint8 *buf)
{
struct SqlStmt *stmt;
struct mmo_charstatus p;
@@ -1099,16 +1099,16 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 24, SQLDT_SHORT, &p.hair, sizeof p.hair, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 25, SQLDT_SHORT, &p.hair_color, sizeof p.hair_color, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 26, SQLDT_SHORT, &p.clothes_color, sizeof p.clothes_color, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_SHORT, &p.body, sizeof p.body, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_SHORT, &p.look.weapon, sizeof p.look.weapon, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_SHORT, &p.look.shield, sizeof p.look.shield, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p.look.head_top, sizeof p.look.head_top, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p.look.head_mid, sizeof p.look.head_mid, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p.look.head_bottom, sizeof p.look.head_bottom, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_INT, &p.body, sizeof p.body, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_INT, &p.look.weapon, sizeof p.look.weapon, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_INT, &p.look.shield, sizeof p.look.shield, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_INT, &p.look.head_top, sizeof p.look.head_top, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_INT, &p.look.head_mid, sizeof p.look.head_mid, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_INT, &p.look.head_bottom, sizeof p.look.head_bottom, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_STRING, &last_map, sizeof last_map, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_USHORT, &p.rename, sizeof p.rename, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_TIME, &p.delete_date, sizeof p.delete_date, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p.look.robe, sizeof p.look.robe, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_INT, &p.look.robe, sizeof p.look.robe, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_USHORT, &p.slotchange, sizeof p.slotchange, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_TIME, &unban_time, sizeof unban_time, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_ENUM, &sex, sizeof sex, NULL, NULL)
@@ -1135,7 +1135,7 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf)
}
//=====================================================================================================
-int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_everything)
+static int char_mmo_char_fromsql(int char_id, struct mmo_charstatus *p, bool load_everything)
{
int i = 0;
char t_msg[128] = "";
@@ -1213,12 +1213,12 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p->hair, sizeof p->hair, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p->hair_color, sizeof p->hair_color, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p->clothes_color, sizeof p->clothes_color, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_SHORT, &p->body, sizeof p->body, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_SHORT, &p->look.weapon, sizeof p->look.weapon, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_SHORT, &p->look.shield, sizeof p->look.shield, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p->look.head_top, sizeof p->look.head_top, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_SHORT, &p->look.head_mid, sizeof p->look.head_mid, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_SHORT, &p->look.head_bottom, sizeof p->look.head_bottom, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_INT, &p->body, sizeof p->body, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_INT, &p->look.weapon, sizeof p->look.weapon, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_INT, &p->look.shield, sizeof p->look.shield, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_INT, &p->look.head_top, sizeof p->look.head_top, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_INT, &p->look.head_mid, sizeof p->look.head_mid, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_INT, &p->look.head_bottom, sizeof p->look.head_bottom, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_STRING, &last_map, sizeof last_map, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 40, SQLDT_INT16, &p->last_point.x, sizeof p->last_point.x, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 41, SQLDT_INT16, &p->last_point.y, sizeof p->last_point.y, NULL, NULL)
@@ -1232,7 +1232,7 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 49, SQLDT_INT, &p->fame, sizeof p->fame, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 50, SQLDT_USHORT, &p->rename, sizeof p->rename, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 51, SQLDT_TIME, &p->delete_date, sizeof p->delete_date, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_SHORT, &p->look.robe, sizeof p->look.robe, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_INT, &p->look.robe, sizeof p->look.robe, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 53, SQLDT_USHORT, &p->slotchange, sizeof p->slotchange, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 54, SQLDT_UINT, &opt, sizeof opt, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 55, SQLDT_UCHAR, &p->font, sizeof p->font, NULL, NULL)
@@ -1412,7 +1412,7 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every
}
//==========================================================================================================
-int char_mmo_char_sql_init(void)
+static int char_mmo_char_sql_init(void)
{
chr->char_db_= idb_alloc(DB_OPT_RELEASE_DATA);
@@ -1429,7 +1429,8 @@ int char_mmo_char_sql_init(void)
}
/* [Ind/Hercules] - special thanks to Yommy for providing the packet structure/data */
-bool char_char_slotchange(struct char_session_data *sd, int fd, unsigned short from, unsigned short to) {
+static bool char_char_slotchange(struct char_session_data *sd, int fd, unsigned short from, unsigned short to)
+{
struct mmo_charstatus char_dat;
int from_id = 0;
@@ -1481,7 +1482,7 @@ bool char_char_slotchange(struct char_session_data *sd, int fd, unsigned short f
//-----------------------------------
// Function to change character's names
//-----------------------------------
-int char_rename_char_sql(struct char_session_data *sd, int char_id)
+static int char_rename_char_sql(struct char_session_data *sd, int char_id)
{
struct mmo_charstatus char_dat;
char esc_name[NAME_LENGTH*2+1];
@@ -1534,12 +1535,56 @@ int char_rename_char_sql(struct char_session_data *sd, int char_id)
return 0;
}
-int char_check_char_name(char * name, char * esc_name)
+/**
+ * Checks if the given name exists in the database.
+ *
+ * @param name The name to check.
+ * @param esc_name Escaped version of the name, optional for faster processing.
+ * @retval true if the character name already exists.
+ */
+static bool char_name_exists(const char *name, const char *esc_name)
+{
+ char esc_name2[NAME_LENGTH * 2 + 1];
+
+ nullpo_retr(true, name);
+
+ if (esc_name == NULL) {
+ SQL->EscapeStringLen(inter->sql_handle, esc_name2, name, strnlen(name, NAME_LENGTH));
+ esc_name = esc_name2;
+ }
+
+ if (name_ignoring_case) {
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT 1 FROM `%s` WHERE BINARY `name` = '%s' LIMIT 1", char_db, esc_name)) {
+ Sql_ShowDebug(inter->sql_handle);
+ return true;
+ }
+ } else {
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT 1 FROM `%s` WHERE `name` = '%s' LIMIT 1", char_db, esc_name)) {
+ Sql_ShowDebug(inter->sql_handle);
+ return true;
+ }
+ }
+ if (SQL->NumRows(inter->sql_handle) > 0)
+ return true;
+
+ return false;
+}
+
+/**
+ * Checks if the given name is valid for a new character.
+ *
+ * @param name The name to check.
+ * @param esc_name Escaped version of the name, optional for faster processing.
+ * @retval 0 if the name is valid.
+ * @retval -1 if the name already exists or is reserved
+ * @retval -2 if the name is too short or contains special characters.
+ * @retval -5 if the name contains forbidden characters.
+ */
+static int char_check_char_name(const char *name, const char *esc_name)
{
int i;
nullpo_retr(-2, name);
- nullpo_retr(-2, esc_name);
// check length of character name
if (name[0] == '\0')
@@ -1550,9 +1595,16 @@ int char_check_char_name(char * name, char * esc_name)
**/
if( strlen( name ) < 4 )
return -2;
- // check content of character name
- if( remove_control_chars(name) )
- return -2; // control chars in name
+
+ {
+ // check content of character name
+ char *name_copy = aStrdup(name);
+ if (remove_control_chars(name_copy)) {
+ aFree(name_copy);
+ return -2; // control chars in name
+ }
+ aFree(name_copy);
+ }
// check for reserved names
if( strcmpi(name, wisp_server_name) == 0 )
@@ -1571,19 +1623,9 @@ int char_check_char_name(char * name, char * esc_name)
if( strchr(char_name_letters, name[i]) != NULL )
return -5;
}
- if( name_ignoring_case ) {
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT 1 FROM `%s` WHERE BINARY `name` = '%s' LIMIT 1", char_db, esc_name) ) {
- Sql_ShowDebug(inter->sql_handle);
- return -2;
- }
- } else {
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT 1 FROM `%s` WHERE `name` = '%s' LIMIT 1", char_db, esc_name) ) {
- Sql_ShowDebug(inter->sql_handle);
- return -2;
- }
- }
- if( SQL->NumRows(inter->sql_handle) > 0 )
- return -1; // name already exists
+
+ if (chr->name_exists(name, esc_name))
+ return -1;
return 0;
}
@@ -1598,7 +1640,7 @@ int char_check_char_name(char * name, char * esc_name)
* -5: 'Symbols in Character Names are forbidden'
* char_id: Success
**/
-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, int16 starting_class, uint8 sex)
{
char name[NAME_LENGTH];
char esc_name[NAME_LENGTH*2+1];
@@ -1708,7 +1750,7 @@ int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int
/*----------------------------------------------------------------------------------------------------------*/
/* Divorce Players */
/*----------------------------------------------------------------------------------------------------------*/
-int char_divorce_char_sql(int partner_id1, int partner_id2)
+static int char_divorce_char_sql(int partner_id1, int partner_id2)
{
unsigned char buf[64];
@@ -1731,7 +1773,7 @@ int char_divorce_char_sql(int partner_id1, int partner_id2)
/* Returns 0 if successful
* Returns < 0 for error
*/
-int char_delete_char_sql(int char_id)
+static int char_delete_char_sql(int char_id)
{
char name[NAME_LENGTH];
char esc_name[NAME_LENGTH*2+1]; //Name needs be escaped.
@@ -1811,11 +1853,11 @@ int char_delete_char_sql(int char_id)
/* remove homunculus */
if( hom_id )
- mapif->homunculus_delete(hom_id);
+ inter_homunculus->delete(hom_id);
/* remove elemental */
if (elemental_id)
- mapif->elemental_delete(elemental_id);
+ inter_elemental->delete(elemental_id);
/* remove mercenary data */
inter_mercenary->owner_delete(char_id);
@@ -1887,16 +1929,16 @@ int char_delete_char_sql(int char_id)
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `char_id` = '%d'", guild_db, char_id) )
Sql_ShowDebug(inter->sql_handle);
else if( SQL->NumRows(inter->sql_handle) > 0 )
- mapif->parse_BreakGuild(0,guild_id);
+ inter_guild->disband(guild_id);
else if( guild_id )
- inter_guild->leave(guild_id, account_id, char_id);// Leave your guild.
+ inter_guild->leave(guild_id, account_id, char_id, 0, "** Character Deleted **", -1);// Leave your guild.
return 0;
}
//---------------------------------------------------------------------
// This function return the number of online players in all map-servers
//---------------------------------------------------------------------
-int char_count_users(void)
+static int char_count_users(void)
{
int i, users;
@@ -1913,7 +1955,8 @@ int char_count_users(void)
// Used in packets 0x6b (chars info) and 0x6d (new char info)
// Returns the size
#define MAX_CHAR_BUF 150 //Max size (for WFIFOHEAD calls)
-int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
+static int char_mmo_char_tobuf(uint8 *buffer, struct mmo_charstatus *p)
+{
unsigned short offset = 0;
uint8* buf;
@@ -2020,7 +2063,7 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) {
}
/* Made Possible by Yommy~! <3 */
-void char_mmo_char_send099d(int fd, struct char_session_data *sd)
+static void char_mmo_char_send099d(int fd, struct char_session_data *sd)
{
// support added for client between 20121010 and 20130320
#if PACKETVER > 20120418
@@ -2033,7 +2076,8 @@ void char_mmo_char_send099d(int fd, struct char_session_data *sd)
/* Sends character ban list */
/* Made Possible by Yommy~! <3 */
-void char_mmo_char_send_ban_list(int fd, struct char_session_data *sd) {
+static void char_mmo_char_send_ban_list(int fd, struct char_session_data *sd)
+{
int i;
time_t now = time(NULL);
@@ -2073,7 +2117,8 @@ void char_mmo_char_send_ban_list(int fd, struct char_session_data *sd) {
//----------------------------------------
// [Ind/Hercules] notify client about charselect window data
//----------------------------------------
-void char_mmo_char_send_slots_info(int fd, struct char_session_data* sd) {
+static void char_mmo_char_send_slots_info(int fd, struct char_session_data *sd)
+{
nullpo_retv(sd);
WFIFOHEAD(fd,29);
WFIFOW(fd,0) = 0x82d;
@@ -2089,7 +2134,7 @@ void char_mmo_char_send_slots_info(int fd, struct char_session_data* sd) {
//----------------------------------------
// Function to send characters to a player
//----------------------------------------
-int char_mmo_char_send_characters(int fd, struct char_session_data* sd)
+static int char_mmo_char_send_characters(int fd, struct char_session_data *sd)
{
int j, offset = 0;
nullpo_ret(sd);
@@ -2115,7 +2160,7 @@ int char_mmo_char_send_characters(int fd, struct char_session_data* sd)
return 0;
}
-int char_char_married(int pl1, int pl2)
+static int char_char_married(int pl1, int pl2)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `partner_id` FROM `%s` WHERE `char_id` = '%d'", char_db, pl1) )
Sql_ShowDebug(inter->sql_handle);
@@ -2134,7 +2179,7 @@ int char_char_married(int pl1, int pl2)
return 0;
}
-int char_char_child(int parent_id, int child_id)
+static int char_char_child(int parent_id, int child_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `child` FROM `%s` WHERE `char_id` = '%d'", char_db, parent_id) )
Sql_ShowDebug(inter->sql_handle);
@@ -2153,7 +2198,7 @@ int char_char_child(int parent_id, int child_id)
return 0;
}
-int char_char_family(int cid1, int cid2, int cid3)
+static int char_char_family(int cid1, int cid2, int cid3)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `char_id`,`partner_id`,`child` FROM `%s` WHERE `char_id` IN ('%d','%d','%d')", char_db, cid1, cid2, cid3) )
Sql_ShowDebug(inter->sql_handle);
@@ -2183,7 +2228,7 @@ int char_char_family(int cid1, int cid2, int cid3)
//----------------------------------------------------------------------
// Force disconnection of an online player (with account value) by [Yor]
//----------------------------------------------------------------------
-void char_disconnect_player(int account_id)
+static void char_disconnect_player(int account_id)
{
int i;
struct char_session_data* sd;
@@ -2194,7 +2239,7 @@ void char_disconnect_player(int account_id)
sockt->eof(i);
}
-void char_authfail_fd(int fd, int type)
+static void char_authfail_fd(int fd, int type)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x81;
@@ -2202,7 +2247,7 @@ void char_authfail_fd(int fd, int type)
WFIFOSET(fd,3);
}
-void char_request_account_data(int account_id)
+static void char_request_account_data(int account_id)
{
WFIFOHEAD(chr->login_fd,6);
WFIFOW(chr->login_fd,0) = 0x2716;
@@ -2248,14 +2293,14 @@ static void char_auth_ok(int fd, struct char_session_data *sd)
// continues when account data is received...
}
-void char_ping_login_server(int fd)
+static void char_ping_login_server(int fd)
{
WFIFOHEAD(fd,2);// sends a ping packet to login server (will receive pong 0x2718)
WFIFOW(fd,0) = 0x2719;
WFIFOSET(fd,2);
}
-int char_parse_fromlogin_connection_state(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));
@@ -2275,7 +2320,7 @@ int char_parse_fromlogin_connection_state(int fd)
// 0 - rejected from server
//
-void char_auth_error(int fd, unsigned char flag)
+static void char_auth_error(int fd, unsigned char flag)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x6c;
@@ -2283,7 +2328,7 @@ void char_auth_error(int fd, unsigned char flag)
WFIFOSET(fd,3);
}
-void char_parse_fromlogin_auth_state(int fd)
+static void char_parse_fromlogin_auth_state(int fd)
{
struct char_session_data* sd = NULL;
int account_id = RFIFOL(fd,2);
@@ -2325,7 +2370,7 @@ void char_parse_fromlogin_auth_state(int fd)
}
}
-void char_parse_fromlogin_account_data(int fd)
+static void char_parse_fromlogin_account_data(int fd)
{
struct char_session_data* sd = (struct char_session_data*)sockt->session[fd]->session_data;
int i;
@@ -2368,14 +2413,14 @@ void char_parse_fromlogin_account_data(int fd)
RFIFOSKIP(fd,72);
}
-void char_parse_fromlogin_login_pong(int fd)
+static void char_parse_fromlogin_login_pong(int fd)
{
RFIFOSKIP(fd,2);
if (sockt->session[fd])
sockt->session[fd]->flag.ping = 0;
}
-void char_changesex(int account_id, int sex)
+static void char_changesex(int account_id, int sex)
{
unsigned char buf[7];
@@ -2396,7 +2441,7 @@ void char_changesex(int account_id, int sex)
* @param class The character's current job class.
* @param guild_id The character's guild ID.
*/
-void char_change_sex_sub(int sex, int acc, int char_id, int class, int guild_id)
+static void char_change_sex_sub(int sex, int acc, int char_id, int class, int guild_id)
{
// job modification
if (class == JOB_BARD || class == JOB_DANCER)
@@ -2425,7 +2470,7 @@ void char_change_sex_sub(int sex, int acc, int char_id, int class, int guild_id)
inter_guild->sex_changed(guild_id, acc, char_id, sex);
}
-int char_parse_fromlogin_changesex_reply(int fd)
+static int char_parse_fromlogin_changesex_reply(int fd)
{
int char_id = 0, class = 0, guild_id = 0;
int i;
@@ -2472,25 +2517,14 @@ int char_parse_fromlogin_changesex_reply(int fd)
return 0;
}
-void char_parse_fromlogin_account_reg2(int fd)
+static void char_parse_fromlogin_account_reg2(int fd)
{
//Receive account_reg2 registry, forward to map servers.
mapif->sendall(RFIFOP(fd, 0), RFIFOW(fd,2));
RFIFOSKIP(fd, RFIFOW(fd,2));
}
-void mapif_ban(int id, unsigned int flag, int status)
-{
- // send to all map-servers to disconnect the player
- unsigned char buf[11];
- WBUFW(buf,0) = 0x2b14;
- WBUFL(buf,2) = id;
- WBUFB(buf,6) = flag; // 0: change of status, 1: ban
- WBUFL(buf,7) = status; // status or final date of a banishment
- mapif->sendall(buf, 11);
-}
-
-void char_parse_fromlogin_ban(int fd)
+static void char_parse_fromlogin_ban(int fd)
{
mapif->ban(RFIFOL(fd,2), RFIFOB(fd,6), RFIFOL(fd,7));
// disconnect player if online on char-server
@@ -2498,7 +2532,7 @@ void char_parse_fromlogin_ban(int fd)
RFIFOSKIP(fd,11);
}
-void char_parse_fromlogin_kick(int fd)
+static void char_parse_fromlogin_kick(int fd)
{
int aid = RFIFOL(fd,2);
struct online_char_data* character = (struct online_char_data*)idb_get(chr->online_char_db, aid);
@@ -2528,7 +2562,7 @@ void char_parse_fromlogin_kick(int fd)
idb_remove(auth_db, aid);// reject auth attempts from map-server
}
-void char_update_ip(int fd)
+static void char_update_ip(int fd)
{
WFIFOHEAD(fd,6);
WFIFOW(fd,0) = 0x2736;
@@ -2536,7 +2570,7 @@ void char_update_ip(int fd)
WFIFOSET(fd,6);
}
-void char_parse_fromlogin_update_ip(int fd)
+static void char_parse_fromlogin_update_ip(int fd)
{
unsigned char buf[2];
uint32 new_ip = 0;
@@ -2559,22 +2593,23 @@ void char_parse_fromlogin_update_ip(int fd)
RFIFOSKIP(fd,2);
}
-void char_parse_fromlogin_accinfo2_failed(int fd)
+static void char_parse_fromlogin_accinfo2_failed(int fd)
{
- mapif->parse_accinfo2(false, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14),
+ inter->accinfo2(false, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14),
NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1, 0, 0);
RFIFOSKIP(fd,18);
}
-void char_parse_fromlogin_accinfo2_ok(int fd)
+static void char_parse_fromlogin_accinfo2_ok(int fd)
{
- mapif->parse_accinfo2(true, RFIFOL(fd,167), RFIFOL(fd,171), RFIFOL(fd,175), RFIFOL(fd,179),
+ inter->accinfo2(true, RFIFOL(fd,167), RFIFOL(fd,171), RFIFOL(fd,175), RFIFOL(fd,179),
RFIFOP(fd,2), RFIFOP(fd,26), RFIFOP(fd,59), RFIFOP(fd,99), RFIFOP(fd,119),
RFIFOP(fd,151), RFIFOP(fd,156), RFIFOL(fd,115), RFIFOL(fd,143), RFIFOL(fd,147));
RFIFOSKIP(fd,183);
}
-int char_parse_fromlogin(int fd) {
+static int char_parse_fromlogin(int fd)
+{
// only process data from the login-server
if( fd != chr->login_fd ) {
ShowDebug("chr->parse_fromlogin: Disconnecting invalid session #%d (is not the login-server)\n", fd);
@@ -2706,7 +2741,7 @@ int char_parse_fromlogin(int fd) {
return 0;
}
-int char_request_accreg2(int account_id, int char_id)
+static int char_request_accreg2(int account_id, int char_id)
{
if (chr->login_fd > 0) {
WFIFOHEAD(chr->login_fd,10);
@@ -2722,7 +2757,8 @@ int char_request_accreg2(int account_id, int char_id)
/**
* Handles global account reg saving that continues with chr->global_accreg_to_login_add and global_accreg_to_send
**/
-void char_global_accreg_to_login_start (int account_id, int char_id) {
+static void char_global_accreg_to_login_start(int account_id, int char_id)
+{
WFIFOHEAD(chr->login_fd, 60000 + 300);
WFIFOW(chr->login_fd,0) = 0x2728;
WFIFOW(chr->login_fd,2) = 14;
@@ -2734,14 +2770,16 @@ void char_global_accreg_to_login_start (int account_id, int char_id) {
/**
* Completes global account reg saving that starts chr->global_accreg_to_login_start and continues with chr->global_accreg_to_login_add
**/
-void char_global_accreg_to_login_send (void) {
+static void char_global_accreg_to_login_send(void)
+{
WFIFOSET(chr->login_fd, WFIFOW(chr->login_fd,2));
}
/**
* Handles global account reg saving that starts chr->global_accreg_to_login_start and ends with global_accreg_to_send
**/
-void char_global_accreg_to_login_add (const char *key, unsigned int index, intptr_t val, bool is_string) {
+static void char_global_accreg_to_login_add(const char *key, unsigned int index, intptr_t val, bool is_string)
+{
int nlen = WFIFOW(chr->login_fd, 2);
size_t len = strlen(key)+1;
@@ -2788,7 +2826,8 @@ void char_global_accreg_to_login_add (const char *key, unsigned int index, intpt
}
}
-void char_read_fame_list(void) {
+static void char_read_fame_list(void)
+{
int i;
char* data;
size_t len;
@@ -2846,7 +2885,8 @@ void char_read_fame_list(void) {
}
// Send map-servers the fame ranking lists
-int char_send_fame_list(int fd) {
+static int char_send_fame_list(int fd)
+{
int i, len = 8;
unsigned char buf[32000];
@@ -2881,7 +2921,8 @@ int char_send_fame_list(int fd) {
return 0;
}
-void char_update_fame_list(int type, int index, int fame) {
+static void char_update_fame_list(int type, int index, int fame)
+{
unsigned char buf[8];
WBUFW(buf,0) = 0x2b22;
WBUFB(buf,2) = type;
@@ -2892,7 +2933,7 @@ void char_update_fame_list(int type, int index, int fame) {
//Loads a character's name and stores it in the buffer given (must be NAME_LENGTH in size) and not NULL
//Returns 1 on found, 0 on not found (buffer is filled with Unknown char name)
-int char_loadName(int char_id, char* name)
+static int char_loadName(int char_id, char *name)
{
char* data;
size_t len;
@@ -2912,77 +2953,13 @@ int char_loadName(int char_id, char* name)
return 0;
}
-/// Initializes a server structure.
-void mapif_server_init(int id)
-{
- //memset(&chr->server[id], 0, sizeof(server[id]));
- chr->server[id].fd = -1;
-}
-
-/// Destroys a server structure.
-void mapif_server_destroy(int id)
-{
- if( chr->server[id].fd == -1 )
- {
- sockt->close(chr->server[id].fd);
- chr->server[id].fd = -1;
- }
-}
-
-
-/// Resets all the data related to a server.
-void mapif_server_reset(int id)
-{
- int i,j;
- unsigned char buf[16384];
- int fd = chr->server[id].fd;
- //Notify other map servers that this one is gone. [Skotlex]
- WBUFW(buf,0) = 0x2b20;
- WBUFL(buf,4) = htonl(chr->server[id].ip);
- WBUFW(buf,8) = htons(chr->server[id].port);
- j = 0;
- for (i = 0; i < VECTOR_LENGTH(chr->server[id].maps); i++) {
- uint16 m = VECTOR_INDEX(chr->server[id].maps, i);
- if (m != 0)
- WBUFW(buf,10+(j++)*4) = m;
- }
- if (j > 0) {
- WBUFW(buf,2) = j * 4 + 10;
- mapif->sendallwos(fd, buf, WBUFW(buf,2));
- }
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `index`='%d'", ragsrvinfo_db, chr->server[id].fd) )
- Sql_ShowDebug(inter->sql_handle);
- chr->online_char_db->foreach(chr->online_char_db,chr->db_setoffline,id); //Tag relevant chars as 'in disconnected' server.
- mapif->server_destroy(id);
- mapif->server_init(id);
-}
-
-/// Called when the connection to a Map Server is disconnected.
-void mapif_on_disconnect(int id)
-{
- ShowStatus("Map-server #%d has disconnected.\n", id);
- mapif->server_reset(id);
-}
-
-void mapif_on_parse_accinfo(int account_id, int u_fd, int u_aid, int u_group, int map_fd) {
- Assert_retv(chr->login_fd > 0);
- WFIFOHEAD(chr->login_fd,22);
- WFIFOW(chr->login_fd,0) = 0x2740;
- WFIFOL(chr->login_fd,2) = account_id;
- WFIFOL(chr->login_fd,6) = u_fd;
- WFIFOL(chr->login_fd,10) = u_aid;
- WFIFOL(chr->login_fd,14) = u_group;
- WFIFOL(chr->login_fd,18) = map_fd;
- WFIFOSET(chr->login_fd,22);
-}
-
-void char_parse_frommap_datasync(int fd)
+static void char_parse_frommap_datasync(int fd)
{
sockt->datasync(fd, false);
RFIFOSKIP(fd,RFIFOW(fd,2));
}
-void char_parse_frommap_skillid2idx(int fd)
+static void char_parse_frommap_skillid2idx(int fd)
{
int i;
int j = RFIFOW(fd, 2) - 4;
@@ -3000,7 +2977,7 @@ void char_parse_frommap_skillid2idx(int fd)
RFIFOSKIP(fd, RFIFOW(fd, 2));
}
-void char_map_received_ok(int fd)
+static void char_map_received_ok(int fd)
{
WFIFOHEAD(fd, 3 + NAME_LENGTH);
WFIFOW(fd,0) = 0x2afb;
@@ -3009,7 +2986,7 @@ void char_map_received_ok(int fd)
WFIFOSET(fd,3+NAME_LENGTH);
}
-void char_send_maps(int fd, int id, int j)
+static void char_send_maps(int fd, int id, int j)
{
int k,i;
@@ -3046,7 +3023,7 @@ void char_send_maps(int fd, int id, int j)
}
}
-void char_parse_frommap_map_names(int fd, int id)
+static void char_parse_frommap_map_names(int fd, int id)
{
int i;
@@ -3067,7 +3044,7 @@ void char_parse_frommap_map_names(int fd, int id)
RFIFOSKIP(fd,RFIFOW(fd,2));
}
-void char_send_scdata(int fd, int aid, int cid)
+static void char_send_scdata(int fd, int aid, int cid)
{
#ifdef ENABLE_SC_SAVING
if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `type`, `tick`, `val1`, `val2`, `val3`, `val4` "
@@ -3121,7 +3098,7 @@ void char_send_scdata(int fd, int aid, int cid)
#endif
}
-void char_parse_frommap_request_scdata(int fd)
+static void char_parse_frommap_request_scdata(int fd)
{
#ifdef ENABLE_SC_SAVING
int aid = RFIFOL(fd,2);
@@ -3131,7 +3108,7 @@ void char_parse_frommap_request_scdata(int fd)
RFIFOSKIP(fd, 10);
}
-void char_parse_frommap_set_users_count(int fd, int id)
+static void char_parse_frommap_set_users_count(int fd, int id)
{
if (RFIFOW(fd,2) != chr->server[id].users) {
chr->server[id].users = RFIFOW(fd,2);
@@ -3140,7 +3117,7 @@ void char_parse_frommap_set_users_count(int fd, int id)
RFIFOSKIP(fd, 4);
}
-void char_parse_frommap_set_users(int fd, int id)
+static void char_parse_frommap_set_users(int fd, int id)
{
//TODO: When data mismatches memory, update guild/party online/offline states.
int i;
@@ -3163,7 +3140,7 @@ void char_parse_frommap_set_users(int fd, int id)
RFIFOSKIP(fd,RFIFOW(fd,2));
}
-void char_save_character_ack(int fd, int aid, int cid)
+static void char_save_character_ack(int fd, int aid, int cid)
{
WFIFOHEAD(fd,10);
WFIFOW(fd,0) = 0x2b21; //Save ack only needed on final save.
@@ -3172,7 +3149,7 @@ void char_save_character_ack(int fd, int aid, int cid)
WFIFOSET(fd,10);
}
-void char_parse_frommap_save_character(int fd, int id)
+static void char_parse_frommap_save_character(int fd, int id)
{
int aid = RFIFOL(fd,4), cid = RFIFOL(fd,8), size = RFIFOW(fd,2);
struct online_char_data* character;
@@ -3206,7 +3183,7 @@ void char_parse_frommap_save_character(int fd, int id)
// 0 - not ok
// 1 - ok
-void char_select_ack(int fd, int account_id, uint8 flag)
+static void char_select_ack(int fd, int account_id, uint8 flag)
{
WFIFOHEAD(fd,7);
WFIFOW(fd,0) = 0x2b03;
@@ -3215,7 +3192,7 @@ void char_select_ack(int fd, int account_id, uint8 flag)
WFIFOSET(fd,7);
}
-void char_parse_frommap_char_select_req(int fd)
+static void char_parse_frommap_char_select_req(int fd)
{
int account_id = RFIFOL(fd,2);
uint32 login_id1 = RFIFOL(fd,6);
@@ -3252,7 +3229,7 @@ void char_parse_frommap_char_select_req(int fd)
}
}
-void char_change_map_server_ack(int fd, const uint8 *data, bool ok)
+static void char_change_map_server_ack(int fd, const uint8 *data, bool ok)
{
WFIFOHEAD(fd,30);
WFIFOW(fd,0) = 0x2b06;
@@ -3262,7 +3239,7 @@ void char_change_map_server_ack(int fd, const uint8 *data, bool ok)
WFIFOSET(fd,30);
}
-void char_parse_frommap_change_map_server(int fd)
+static void char_parse_frommap_change_map_server(int fd)
{
int map_id, map_fd = -1;
struct mmo_charstatus* char_data;
@@ -3315,7 +3292,7 @@ void char_parse_frommap_change_map_server(int fd)
RFIFOSKIP(fd,39);
}
-void char_parse_frommap_remove_friend(int fd)
+static void char_parse_frommap_remove_friend(int fd)
{
int char_id = RFIFOL(fd,2);
int friend_id = RFIFOL(fd,6);
@@ -3326,7 +3303,7 @@ void char_parse_frommap_remove_friend(int fd)
RFIFOSKIP(fd,10);
}
-void char_char_name_ack(int fd, int char_id)
+static void char_char_name_ack(int fd, int char_id)
{
WFIFOHEAD(fd,30);
WFIFOW(fd,0) = 0x2b09;
@@ -3340,13 +3317,13 @@ void char_char_name_ack(int fd, int char_id)
WFIFOSET(fd,30);
}
-void char_parse_frommap_char_name_request(int fd)
+static void char_parse_frommap_char_name_request(int fd)
{
chr->char_name_ack(fd, RFIFOL(fd,2));
RFIFOSKIP(fd,6);
}
-void char_parse_frommap_change_email(int fd)
+static void char_parse_frommap_change_email(int fd)
{
if (chr->login_fd > 0) { // don't send request if no login-server
WFIFOHEAD(chr->login_fd,86);
@@ -3357,17 +3334,7 @@ void char_parse_frommap_change_email(int fd)
RFIFOSKIP(fd, 86);
}
-void mapif_char_ban(int char_id, time_t timestamp)
-{
- unsigned char buf[11];
- WBUFW(buf,0) = 0x2b14;
- WBUFL(buf,2) = char_id;
- WBUFB(buf,6) = 2;
- WBUFL(buf,7) = (unsigned int)timestamp;
- mapif->sendall(buf, 11);
-}
-
-void char_ban(int account_id, int char_id, time_t *unban_time, short year, short month, short day, short hour, short minute, short second)
+static void char_ban(int account_id, int char_id, time_t *unban_time, short year, short month, short day, short hour, short minute, short second)
{
time_t timestamp;
struct tm *tmtime;
@@ -3409,7 +3376,7 @@ void char_ban(int account_id, int char_id, time_t *unban_time, short year, short
}
}
-void char_unban(int char_id, int *result)
+static void char_unban(int char_id, int *result)
{
/* handled by char server, so no redirection */
if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `unban_time` = '0' WHERE `char_id` = '%d' LIMIT 1", char_db, char_id) ) {
@@ -3419,7 +3386,7 @@ void char_unban(int char_id, int *result)
}
}
-void char_ask_name_ack(int fd, int acc, const char* name, int type, int result)
+static void char_ask_name_ack(int fd, int acc, const char *name, int type, int result)
{
nullpo_retv(name);
WFIFOHEAD(fd,34);
@@ -3441,7 +3408,7 @@ void char_ask_name_ack(int fd, int acc, const char* name, int type, int result)
* @retval 0 in case of success.
* @retval 1 in case of failure.
*/
-int char_changecharsex(int char_id, int sex)
+static int char_changecharsex(int char_id, int sex)
{
int class = 0, guild_id = 0, account_id = 0;
char *data;
@@ -3474,7 +3441,7 @@ int char_changecharsex(int char_id, int sex)
return 0;
}
-void char_parse_frommap_change_account(int fd)
+static void char_parse_frommap_change_account(int fd)
{
int result = 0; // 0-login-server request done, 1-player not found, 2-gm level too low, 3-login-server offline
char esc_name[NAME_LENGTH*2+1];
@@ -3560,7 +3527,7 @@ void char_parse_frommap_change_account(int fd)
}
}
-void char_parse_frommap_fame_list(int fd)
+static void char_parse_frommap_fame_list(int fd)
{
int cid = RFIFOL(fd, 2);
int fame = RFIFOL(fd, 6);
@@ -3611,13 +3578,13 @@ void char_parse_frommap_fame_list(int fd)
RFIFOSKIP(fd,11);
}
-void char_parse_frommap_divorce_char(int fd)
+static void char_parse_frommap_divorce_char(int fd)
{
chr->divorce_char_sql(RFIFOL(fd,2), RFIFOL(fd,6));
RFIFOSKIP(fd,10);
}
-void char_parse_frommap_ragsrvinfo(int fd)
+static void char_parse_frommap_ragsrvinfo(int fd)
{
char esc_server_name[sizeof(chr->server_name)*2+1];
@@ -3631,32 +3598,32 @@ void char_parse_frommap_ragsrvinfo(int fd)
RFIFOSKIP(fd,14);
}
-void char_parse_frommap_set_char_offline(int fd)
+static void char_parse_frommap_set_char_offline(int fd)
{
chr->set_char_offline(RFIFOL(fd,2),RFIFOL(fd,6));
RFIFOSKIP(fd,10);
}
-void char_parse_frommap_set_all_offline(int fd, int id)
+static void char_parse_frommap_set_all_offline(int fd, int id)
{
chr->set_all_offline(id);
RFIFOSKIP(fd,2);
}
-void char_parse_frommap_set_char_online(int fd, int id)
+static void char_parse_frommap_set_char_online(int fd, int id)
{
chr->set_char_online(id, RFIFOL(fd,2),RFIFOL(fd,6));
RFIFOSKIP(fd,10);
}
-void char_parse_frommap_build_fame_list(int fd)
+static void char_parse_frommap_build_fame_list(int fd)
{
chr->read_fame_list();
chr->send_fame_list(-1);
RFIFOSKIP(fd,2);
}
-void char_parse_frommap_save_status_change_data(int fd)
+static void char_parse_frommap_save_status_change_data(int fd)
{
#ifdef ENABLE_SC_SAVING
int aid = RFIFOL(fd, 4);
@@ -3691,20 +3658,20 @@ void char_parse_frommap_save_status_change_data(int fd)
RFIFOSKIP(fd, RFIFOW(fd, 2));
}
-void char_send_pong(int fd)
+static void char_send_pong(int fd)
{
WFIFOHEAD(fd,2);
WFIFOW(fd,0) = 0x2b24;
WFIFOSET(fd,2);
}
-void char_parse_frommap_ping(int fd)
+static void char_parse_frommap_ping(int fd)
{
chr->send_pong(fd);
RFIFOSKIP(fd,2);
}
-void char_map_auth_ok(int fd, int account_id, struct char_auth_node* node, struct mmo_charstatus* cd)
+static void char_map_auth_ok(int fd, int account_id, struct char_auth_node *node, struct mmo_charstatus *cd)
{
nullpo_retv(cd);
WFIFOHEAD(fd,25 + sizeof(struct mmo_charstatus));
@@ -3731,7 +3698,7 @@ void char_map_auth_ok(int fd, int account_id, struct char_auth_node* node, struc
WFIFOSET(fd, WFIFOW(fd,2));
}
-void char_map_auth_failed(int fd, int account_id, int char_id, int login_id1, char sex, uint32 ip)
+static void char_map_auth_failed(int fd, int account_id, int char_id, int login_id1, char sex, uint32 ip)
{
WFIFOHEAD(fd,19);
WFIFOW(fd,0) = 0x2b27;
@@ -3743,7 +3710,7 @@ void char_map_auth_failed(int fd, int account_id, int char_id, int login_id1, ch
WFIFOSET(fd,19);
}
-void char_parse_frommap_auth_request(int fd, int id)
+static void char_parse_frommap_auth_request(int fd, int id)
{
struct mmo_charstatus char_dat;
struct char_auth_node* node;
@@ -3796,14 +3763,14 @@ void char_parse_frommap_auth_request(int fd, int id)
}
}
-void char_parse_frommap_update_ip(int fd, int id)
+static void char_parse_frommap_update_ip(int fd, int id)
{
chr->server[id].ip = ntohl(RFIFOL(fd, 2));
ShowInfo("Updated IP address of map-server #%d to %u.%u.%u.%u.\n", id, CONVIP(chr->server[id].ip));
RFIFOSKIP(fd,6);
}
-void char_parse_frommap_scdata_update(int fd)
+static void char_parse_frommap_scdata_update(int fd)
{
int account_id = RFIFOL(fd, 2);
int char_id = RFIFOL(fd, 6);
@@ -3823,7 +3790,7 @@ void char_parse_frommap_scdata_update(int fd)
RFIFOSKIP(fd, 28);
}
-void char_parse_frommap_scdata_delete(int fd)
+static void char_parse_frommap_scdata_delete(int fd)
{
int account_id = RFIFOL(fd, 2);
int char_id = RFIFOL(fd, 6);
@@ -3837,7 +3804,7 @@ void char_parse_frommap_scdata_delete(int fd)
RFIFOSKIP(fd, 12);
}
-int char_parse_frommap(int fd)
+static int char_parse_frommap(int fd)
{
int id;
@@ -4069,14 +4036,14 @@ int char_parse_frommap(int fd)
return 0;
}
-void do_init_mapif(void)
+static void do_init_mapif(void)
{
int i;
for( i = 0; i < ARRAYLENGTH(chr->server); ++i )
mapif->server_init(i);
}
-void do_final_mapif(void)
+static void do_final_mapif(void)
{
int i;
for( i = 0; i < ARRAYLENGTH(chr->server); ++i )
@@ -4085,7 +4052,7 @@ void do_final_mapif(void)
// Searches for the mapserver that has a given map (and optionally ip/port, if not -1).
// If found, returns the server's index in the 'server' array (otherwise returns -1).
-int char_search_mapserver(unsigned short map, uint32 ip, uint16 port)
+static int char_search_mapserver(unsigned short map, uint32 ip, uint16 port)
{
int i, j;
@@ -4117,7 +4084,7 @@ static int char_mapif_init(int fd)
* @retval 0 if it is a WAN IP.
* @return the appropriate LAN server address to send, if it is a LAN IP.
*/
-uint32 char_lan_subnet_check(uint32 ip)
+static uint32 char_lan_subnet_check(uint32 ip)
{
struct s_subnet lan = {0};
if (sockt->lan_subnet_check(ip, &lan)) {
@@ -4137,7 +4104,7 @@ uint32 char_lan_subnet_check(uint32 ip)
/// 4 (0x71a): To delete a character you must withdraw from the guild.
/// 5 (0x71b): To delete a character you must withdraw from the party.
/// Any (0x718): An unknown error has occurred.
-void char_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date)
+static void char_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date)
{// HC: <0828>.W <char id>.L <Msg:0-5>.L <deleteDate>.L
WFIFOHEAD(fd,14);
WFIFOW(fd,0) = 0x828;
@@ -4152,7 +4119,7 @@ void char_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date)
WFIFOSET(fd,14);
}
-void char_delete2_accept_actual_ack(int fd, int char_id, uint32 result)
+static void char_delete2_accept_actual_ack(int fd, int char_id, uint32 result)
{
WFIFOHEAD(fd,10);
WFIFOW(fd,0) = 0x82a;
@@ -4169,7 +4136,7 @@ void char_delete2_accept_actual_ack(int fd, int char_id, uint32 result)
/// 4 (0x71d): Deleting not yet possible time.
/// 5 (0x71e): Date of birth do not match.
/// Any (0x718): An unknown error has occurred.
-void char_delete2_accept_ack(int fd, int char_id, uint32 result)
+static void char_delete2_accept_ack(int fd, int char_id, uint32 result)
{// HC: <082a>.W <char id>.L <Msg:0-5>.L
#if PACKETVER >= 20130000 /* not sure the exact date -- must refresh or client gets stuck */
if( result == 1 ) {
@@ -4184,7 +4151,7 @@ void char_delete2_accept_ack(int fd, int char_id, uint32 result)
/// 1 (0x718): none/success, (if char id not in deletion process): An unknown error has occurred.
/// 2 (0x719): A database error occurred.
/// Any (0x718): An unknown error has occurred.
-void char_delete2_cancel_ack(int fd, int char_id, uint32 result)
+static void char_delete2_cancel_ack(int fd, int char_id, uint32 result)
{// HC: <082c>.W <char id>.L <Msg:1-2>.L
WFIFOHEAD(fd,10);
WFIFOW(fd,0) = 0x82c;
@@ -4193,7 +4160,7 @@ void char_delete2_cancel_ack(int fd, int char_id, uint32 result)
WFIFOSET(fd,10);
}
-static void char_delete2_req(int fd, struct char_session_data* sd)
+static void char_delete2_req(int fd, struct char_session_data *sd)
{// CH: <0827>.W <char id>.L
int char_id, i;
char* data;
@@ -4264,7 +4231,7 @@ static void char_delete2_req(int fd, struct char_session_data* sd)
chr->delete2_ack(fd, char_id, 1, delete_date); // 1: success
}
-static void char_delete2_accept(int fd, struct char_session_data* sd)
+static void char_delete2_accept(int fd, struct char_session_data *sd)
{// CH: <0829>.W <char id>.L <birth date:YYMMDD>.6B
char birthdate[8+1];
int char_id, i;
@@ -4336,7 +4303,7 @@ static void char_delete2_accept(int fd, struct char_session_data* sd)
chr->delete2_accept_ack(fd, char_id, 1); // 1: success
}
-static void char_delete2_cancel(int fd, struct char_session_data* sd)
+static void char_delete2_cancel(int fd, struct char_session_data *sd)
{// CH: <082b>.W <char id>.L
int char_id, i;
@@ -4363,14 +4330,14 @@ static void char_delete2_cancel(int fd, struct char_session_data* sd)
chr->delete2_cancel_ack(fd, char_id, 1); // 1: success
}
-void char_send_account_id(int fd, int account_id)
+static void char_send_account_id(int fd, int account_id)
{
WFIFOHEAD(fd,4);
WFIFOL(fd,0) = account_id;
WFIFOSET(fd,4);
}
-void char_parse_char_connect(int fd, struct char_session_data* sd, uint32 ipl)
+static void char_parse_char_connect(int fd, struct char_session_data *sd, uint32 ipl)
{
int account_id = RFIFOL(fd,2);
uint32 login_id1 = RFIFOL(fd,6);
@@ -4436,7 +4403,7 @@ void char_parse_char_connect(int fd, struct char_session_data* sd, uint32 ipl)
}
}
-void char_send_map_info(int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd, char *dnsHost)
+static void char_send_map_info(int fd, int i, uint32 subnet_map_ip, struct mmo_charstatus *cd, char *dnsHost)
{
#if PACKETVER < 20170329
const int cmd = 0x71;
@@ -4452,9 +4419,7 @@ void char_send_map_info(int fd, int i, uint32 subnet_map_ip, struct mmo_charstat
mapindex->getmapname_ext(mapindex_id2name(cd->last_point.map), WFIFOP(fd, 6));
WFIFOL(fd, 22) = htonl((subnet_map_ip) ? subnet_map_ip : chr->server[i].ip);
WFIFOW(fd, 26) = sockt->ntows(htons(chr->server[i].port)); // [!] LE byte order here [!]
-#if PACKETVER < 20170329
- memset(WFIFOP(fd, 28), 0, 128);
-#else
+#if PACKETVER >= 20170329
if (dnsHost != NULL) {
safestrncpy(WFIFOP(fd, 28), dnsHost, 128);
} else {
@@ -4464,7 +4429,7 @@ void char_send_map_info(int fd, int i, uint32 subnet_map_ip, struct mmo_charstat
WFIFOSET(fd, len);
}
-void char_send_wait_char_server(int fd)
+static void char_send_wait_char_server(int fd)
{
WFIFOHEAD(fd, 24);
WFIFOW(fd, 0) = 0x840;
@@ -4473,7 +4438,7 @@ void char_send_wait_char_server(int fd)
WFIFOSET(fd, 24);
}
-int char_search_default_maps_mapserver(struct mmo_charstatus *cd)
+static int char_search_default_maps_mapserver(struct mmo_charstatus *cd)
{
int i;
int j;
@@ -4505,8 +4470,8 @@ int char_search_default_maps_mapserver(struct mmo_charstatus *cd)
return i;
}
-void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl) __attribute__((nonnull (2)));
-void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl)
+static void char_parse_char_select(int fd, struct char_session_data *sd, uint32 ipl) __attribute__((nonnull (2)));
+static void char_parse_char_select(int fd, struct char_session_data *sd, uint32 ipl)
{
struct mmo_charstatus char_dat;
struct mmo_charstatus *cd;
@@ -4636,7 +4601,7 @@ void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl)
idb_put(auth_db, sd->account_id, node);
}
-void char_creation_failed(int fd, int result)
+static void char_creation_failed(int fd, int result)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x6e;
@@ -4659,7 +4624,7 @@ void char_creation_failed(int fd, int result)
WFIFOSET(fd,3);
}
-void char_creation_ok(int fd, struct mmo_charstatus *char_dat)
+static void char_creation_ok(int fd, struct mmo_charstatus *char_dat)
{
int len;
@@ -4670,8 +4635,8 @@ void char_creation_ok(int fd, struct mmo_charstatus *char_dat)
WFIFOSET(fd,len);
}
-void char_parse_char_create_new_char(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_create_new_char(int fd, struct char_session_data* sd)
+static void char_parse_char_create_new_char(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_create_new_char(int fd, struct char_session_data *sd)
{
int result;
if (!enable_char_creation) {
@@ -4724,7 +4689,7 @@ void char_parse_char_create_new_char(int fd, struct char_session_data* sd)
// flag:
// 0 = Incorrect Email address
-void char_delete_char_failed(int fd, int flag)
+static void char_delete_char_failed(int fd, int flag)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x70;
@@ -4732,15 +4697,15 @@ void char_delete_char_failed(int fd, int flag)
WFIFOSET(fd,3);
}
-void char_delete_char_ok(int fd)
+static void char_delete_char_ok(int fd)
{
WFIFOHEAD(fd,2);
WFIFOW(fd,0) = 0x6f;
WFIFOSET(fd,2);
}
-void char_parse_char_delete_char(int fd, struct char_session_data* sd, unsigned short cmd) __attribute__((nonnull (2)));
-void char_parse_char_delete_char(int fd, struct char_session_data* sd, unsigned short cmd)
+static void char_parse_char_delete_char(int fd, struct char_session_data *sd, unsigned short cmd) __attribute__((nonnull (2)));
+static void char_parse_char_delete_char(int fd, struct char_session_data *sd, unsigned short cmd)
{
char email[40];
int cid = RFIFOL(fd,2);
@@ -4794,12 +4759,12 @@ void char_parse_char_delete_char(int fd, struct char_session_data* sd, unsigned
chr->delete_char_ok(fd);
}
-void char_parse_char_ping(int fd)
+static void char_parse_char_ping(int fd)
{
RFIFOSKIP(fd,6);
}
-void char_allow_rename(int fd, int flag)
+static void char_allow_rename(int fd, int flag)
{
WFIFOHEAD(fd, 4);
WFIFOW(fd,0) = 0x28e;
@@ -4807,12 +4772,11 @@ void char_allow_rename(int fd, int flag)
WFIFOSET(fd,4);
}
-void char_parse_char_rename_char(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_rename_char(int fd, struct char_session_data* sd)
+static void char_parse_char_rename_char(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_rename_char(int fd, struct char_session_data *sd)
{
int i, cid =RFIFOL(fd,2);
char name[NAME_LENGTH];
- char esc_name[NAME_LENGTH*2+1];
safestrncpy(name, RFIFOP(fd,6), NAME_LENGTH);
RFIFOSKIP(fd,30);
@@ -4821,8 +4785,7 @@ void char_parse_char_rename_char(int fd, struct char_session_data* sd)
return;
normalize_name(name,TRIM_CHARS);
- SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
- if( !chr->check_char_name(name,esc_name) ) {
+ if (chr->check_char_name(name, NULL) == 0) {
i = 1;
safestrncpy(sd->new_name, name, NAME_LENGTH);
} else {
@@ -4832,12 +4795,11 @@ void char_parse_char_rename_char(int fd, struct char_session_data* sd)
chr->allow_rename(fd, i);
}
-void char_parse_char_rename_char2(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_rename_char2(int fd, struct char_session_data* sd)
+static void char_parse_char_rename_char2(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_rename_char2(int fd, struct char_session_data *sd)
{
int i, aid = RFIFOL(fd,2), cid =RFIFOL(fd,6);
char name[NAME_LENGTH];
- char esc_name[NAME_LENGTH*2+1];
safestrncpy(name, RFIFOP(fd,10), NAME_LENGTH);
RFIFOSKIP(fd,34);
@@ -4848,19 +4810,17 @@ void char_parse_char_rename_char2(int fd, struct char_session_data* sd)
return;
normalize_name(name,TRIM_CHARS);
- SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
- if( !chr->check_char_name(name,esc_name) )
- {
+ if (chr->check_char_name(name, NULL) == 0) {
i = 1;
safestrncpy(sd->new_name, name, NAME_LENGTH);
- }
- else
+ } else {
i = 0;
+ }
chr->allow_rename(fd, i);
}
-void char_rename_char_ack(int fd, int flag)
+static void char_rename_char_ack(int fd, int flag)
{
WFIFOHEAD(fd, 4);
WFIFOW(fd,0) = 0x290;
@@ -4868,8 +4828,8 @@ void char_rename_char_ack(int fd, int flag)
WFIFOSET(fd,4);
}
-void char_parse_char_rename_char_confirm(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_rename_char_confirm(int fd, struct char_session_data* sd)
+static void char_parse_char_rename_char_confirm(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_rename_char_confirm(int fd, struct char_session_data *sd)
{
int i;
int cid = RFIFOL(fd,2);
@@ -4883,7 +4843,7 @@ void char_parse_char_rename_char_confirm(int fd, struct char_session_data* sd)
chr->rename_char_ack(fd, i);
}
-void char_captcha_notsupported(int fd)
+static void char_captcha_notsupported(int fd)
{
WFIFOHEAD(fd,5);
WFIFOW(fd,0) = 0x7e9;
@@ -4892,31 +4852,31 @@ void char_captcha_notsupported(int fd)
WFIFOSET(fd,5);
}
-void char_parse_char_request_captcha(int fd)
+static void char_parse_char_request_captcha(int fd)
{
chr->captcha_notsupported(fd);
RFIFOSKIP(fd,8);
}
-void char_parse_char_check_captcha(int fd)
+static void char_parse_char_check_captcha(int fd)
{
chr->captcha_notsupported(fd);
RFIFOSKIP(fd,32);
}
-void char_parse_char_delete2_req(int fd, struct char_session_data* sd)
+static void char_parse_char_delete2_req(int fd, struct char_session_data *sd)
{
chr->delete2_req(fd, sd);
RFIFOSKIP(fd,6);
}
-void char_parse_char_delete2_accept(int fd, struct char_session_data* sd)
+static void char_parse_char_delete2_accept(int fd, struct char_session_data *sd)
{
chr->delete2_accept(fd, sd);
RFIFOSKIP(fd,12);
}
-void char_parse_char_delete2_cancel(int fd, struct char_session_data* sd)
+static void char_parse_char_delete2_cancel(int fd, struct char_session_data *sd)
{
chr->delete2_cancel(fd, sd);
RFIFOSKIP(fd,6);
@@ -4925,7 +4885,7 @@ void char_parse_char_delete2_cancel(int fd, struct char_session_data* sd)
// flag:
// 0 - ok
// 3 - error
-void char_login_map_server_ack(int fd, uint8 flag)
+static void char_login_map_server_ack(int fd, uint8 flag)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x2af9;
@@ -4933,7 +4893,7 @@ void char_login_map_server_ack(int fd, uint8 flag)
WFIFOSET(fd,3);
}
-void char_parse_char_login_map_server(int fd, uint32 ipl)
+static void char_parse_char_login_map_server(int fd, uint32 ipl)
{
char l_user[24], l_pass[24];
int i;
@@ -4965,8 +4925,8 @@ void char_parse_char_login_map_server(int fd, uint32 ipl)
RFIFOSKIP(fd,60);
}
-void char_parse_char_pincode_check(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_pincode_check(int fd, struct char_session_data* sd)
+static void char_parse_char_pincode_check(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_pincode_check(int fd, struct char_session_data *sd)
{
if (RFIFOL(fd,2) == sd->account_id)
pincode->check(fd, sd);
@@ -4974,8 +4934,8 @@ void char_parse_char_pincode_check(int fd, struct char_session_data* sd)
RFIFOSKIP(fd, 10);
}
-void char_parse_char_pincode_window(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_pincode_window(int fd, struct char_session_data* sd)
+static void char_parse_char_pincode_window(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_pincode_window(int fd, struct char_session_data *sd)
{
if (RFIFOL(fd,2) == sd->account_id)
pincode->loginstate(fd, sd, PINCODE_LOGIN_NOTSET);
@@ -4983,8 +4943,8 @@ void char_parse_char_pincode_window(int fd, struct char_session_data* sd)
RFIFOSKIP(fd, 6);
}
-void char_parse_char_pincode_change(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_pincode_change(int fd, struct char_session_data* sd)
+static void char_parse_char_pincode_change(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_pincode_change(int fd, struct char_session_data *sd)
{
if (RFIFOL(fd,2) == sd->account_id)
pincode->change(fd, sd);
@@ -4992,21 +4952,21 @@ void char_parse_char_pincode_change(int fd, struct char_session_data* sd)
RFIFOSKIP(fd, 14);
}
-void char_parse_char_pincode_first_pin(int fd, struct char_session_data* sd) __attribute__((nonnull (2)));
-void char_parse_char_pincode_first_pin(int fd, struct char_session_data* sd)
+static void char_parse_char_pincode_first_pin(int fd, struct char_session_data *sd) __attribute__((nonnull (2)));
+static void char_parse_char_pincode_first_pin(int fd, struct char_session_data *sd)
{
if (RFIFOL(fd,2) == sd->account_id)
pincode->setnew (fd, sd);
RFIFOSKIP(fd, 10);
}
-void char_parse_char_request_chars(int fd, struct char_session_data* sd)
+static void char_parse_char_request_chars(int fd, struct char_session_data *sd)
{
chr->mmo_char_send099d(fd, sd);
RFIFOSKIP(fd,2);
}
-void char_change_character_slot_ack(int fd, bool ret)
+static void char_change_character_slot_ack(int fd, bool ret)
{
WFIFOHEAD(fd, 8);
WFIFOW(fd, 0) = 0x8d5;
@@ -5016,7 +4976,7 @@ void char_change_character_slot_ack(int fd, bool ret)
WFIFOSET(fd, 8);
}
-void char_parse_char_move_character(int fd, struct char_session_data* sd)
+static void char_parse_char_move_character(int fd, struct char_session_data *sd)
{
bool ret = chr->char_slotchange(sd, fd, RFIFOW(fd, 2), RFIFOW(fd, 4));
chr->change_character_slot_ack(fd, ret);
@@ -5030,14 +4990,14 @@ void char_parse_char_move_character(int fd, struct char_session_data* sd)
RFIFOSKIP(fd, 8);
}
-int char_parse_char_unknown_packet(int fd, uint32 ipl)
+static int char_parse_char_unknown_packet(int fd, uint32 ipl)
{
ShowError("chr->parse_char: Received unknown packet "CL_WHITE"0x%x"CL_RESET" from ip '"CL_WHITE"%s"CL_RESET"'! Disconnecting!\n", RFIFOW(fd,0), sockt->ip2str(ipl, NULL));
sockt->eof(fd);
return 1;
}
-int char_parse_char(int fd)
+static int char_parse_char(int fd)
{
unsigned short cmd;
struct char_session_data* sd;
@@ -5254,71 +5214,8 @@ int char_parse_char(int fd)
return 0;
}
-int mapif_sendall(const unsigned char *buf, unsigned int len)
+static int char_broadcast_user_count(int tid, int64 tick, int id, intptr_t data)
{
- int i, c;
-
- nullpo_ret(buf);
- c = 0;
- for(i = 0; i < ARRAYLENGTH(chr->server); i++) {
- int fd;
- if ((fd = chr->server[i].fd) > 0) {
- WFIFOHEAD(fd,len);
- memcpy(WFIFOP(fd,0), buf, len);
- WFIFOSET(fd,len);
- c++;
- }
- }
-
- return c;
-}
-
-int mapif_sendallwos(int sfd, unsigned char *buf, unsigned int len)
-{
- int i, c;
-
- nullpo_ret(buf);
- c = 0;
- for(i = 0; i < ARRAYLENGTH(chr->server); i++) {
- int fd;
- if ((fd = chr->server[i].fd) > 0 && fd != sfd) {
- WFIFOHEAD(fd,len);
- memcpy(WFIFOP(fd,0), buf, len);
- WFIFOSET(fd,len);
- c++;
- }
- }
-
- return c;
-}
-
-int mapif_send(int fd, unsigned char *buf, unsigned int len)
-{
- nullpo_ret(buf);
- if (fd >= 0) {
- int i;
- ARR_FIND( 0, ARRAYLENGTH(chr->server), i, fd == chr->server[i].fd );
- if( i < ARRAYLENGTH(chr->server) )
- {
- WFIFOHEAD(fd,len);
- memcpy(WFIFOP(fd,0), buf, len);
- WFIFOSET(fd,len);
- return 1;
- }
- }
- return 0;
-}
-
-void mapif_send_users_count(int users)
-{
- uint8 buf[6];
- // send number of players to all map-servers
- WBUFW(buf,0) = 0x2b00;
- WBUFL(buf,2) = users;
- mapif->sendall(buf,6);
-}
-
-int char_broadcast_user_count(int tid, int64 tick, int id, intptr_t data) {
int users = chr->count_users();
// only send an update when needed
@@ -5357,7 +5254,8 @@ static int char_send_accounts_tologin_sub(union DBKey key, struct DBData *data,
return 0;
}
-int char_send_accounts_tologin(int tid, int64 tick, int id, intptr_t data) {
+static int char_send_accounts_tologin(int tid, int64 tick, int id, intptr_t data)
+{
if (chr->login_fd > 0 && sockt->session[chr->login_fd])
{
// send account list to login server
@@ -5374,7 +5272,8 @@ int char_send_accounts_tologin(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int char_check_connect_login_server(int tid, int64 tick, int id, intptr_t data) {
+static int char_check_connect_login_server(int tid, int64 tick, int id, intptr_t data)
+{
if (chr->login_fd > 0 && sockt->session[chr->login_fd] != NULL)
return 0;
@@ -5398,7 +5297,8 @@ int char_check_connect_login_server(int tid, int64 tick, int id, intptr_t data)
//Invoked 15 seconds after mapif->disconnectplayer in case the map server doesn't
//replies/disconnect the player we tried to kick. [Skotlex]
//------------------------------------------------
-static int char_waiting_disconnect(int tid, int64 tick, int id, intptr_t data) {
+static int char_waiting_disconnect(int tid, int64 tick, int id, intptr_t data)
+{
struct online_char_data* character;
if ((character = (struct online_char_data*)idb_get(chr->online_char_db, id)) != NULL && character->waiting_disconnect == tid) {
//Mark it offline due to timeout.
@@ -5425,7 +5325,8 @@ static int char_online_data_cleanup_sub(union DBKey key, struct DBData *data, va
return 0;
}
-static int char_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
+static int char_online_data_cleanup(int tid, int64 tick, int id, intptr_t data)
+{
chr->online_char_db->foreach(chr->online_char_db, chr->online_data_cleanup_sub);
return 0;
}
@@ -5438,7 +5339,7 @@ static int char_online_data_cleanup(int tid, int64 tick, int id, intptr_t data)
*
* @retval false in case of error.
*/
-bool char_sql_config_read(const char *filename, bool imported)
+static bool char_sql_config_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
@@ -5495,7 +5396,7 @@ bool char_sql_config_read(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool char_sql_config_read_registry(const char *filename, const struct config_t *config, bool imported)
+static bool char_sql_config_read_registry(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5526,7 +5427,7 @@ bool char_sql_config_read_registry(const char *filename, const struct config_t *
*
* @retval false in case of error.
*/
-bool char_sql_config_read_pc(const char *filename, const struct config_t *config, bool imported)
+static bool char_sql_config_read_pc(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5572,7 +5473,7 @@ bool char_sql_config_read_pc(const char *filename, const struct config_t *config
*
* @retval false in case of error.
*/
-bool char_sql_config_read_guild(const char *filename, const struct config_t *config, bool imported)
+static bool char_sql_config_read_guild(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5606,7 +5507,7 @@ bool char_sql_config_read_guild(const char *filename, const struct config_t *con
*
* @retval false in case of error.
*/
-bool char_config_read(const char *filename, bool imported)
+static bool char_config_read(const char *filename, bool imported)
{
struct config_t config;
const char *import = NULL;
@@ -5662,7 +5563,7 @@ bool char_config_read(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool char_config_read_top(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_top(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5706,7 +5607,7 @@ bool char_config_read_top(const char *filename, const struct config_t *config, b
*
* @retval false in case of error.
*/
-bool char_config_read_inter(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_inter(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
const char *str = NULL;
@@ -5750,7 +5651,7 @@ bool char_config_read_inter(const char *filename, const struct config_t *config,
*
* @retval false in case of error.
*/
-bool char_config_read_database(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_database(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5782,7 +5683,7 @@ bool char_config_read_database(const char *filename, const struct config_t *conf
*
* @retval false in case of error.
*/
-bool char_config_read_console(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_console(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting;
@@ -5815,7 +5716,7 @@ bool char_config_read_console(const char *filename, const struct config_t *confi
*
* @retval false in case of error.
*/
-bool char_config_read_player(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player(const char *filename, const struct config_t *config, bool imported)
{
bool retval = true;
@@ -5843,7 +5744,7 @@ bool char_config_read_player(const char *filename, const struct config_t *config
*
* @retval false in case of error.
*/
-bool char_config_read_player_fame(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player_fame(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5887,7 +5788,7 @@ bool char_config_read_player_fame(const char *filename, const struct config_t *c
*
* @retval false in case of error.
*/
-bool char_config_read_player_deletion(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player_deletion(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5916,7 +5817,7 @@ bool char_config_read_player_deletion(const char *filename, const struct config_
*
* @retval false in case of error.
*/
-bool char_config_read_player_name(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player_name(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -5942,7 +5843,7 @@ bool char_config_read_player_name(const char *filename, const struct config_t *c
*
* @param setting The already retrieved start_item setting.
*/
-void char_config_set_start_item(const struct config_setting_t *setting)
+static void char_config_set_start_item(const struct config_setting_t *setting)
{
int i, count;
@@ -5991,7 +5892,7 @@ void char_config_set_start_item(const struct config_setting_t *setting)
*
* @retval false in case of error.
*/
-bool char_config_read_player_new(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_player_new(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL, *setting2 = NULL;
#ifdef RENEWAL
@@ -6047,7 +5948,7 @@ bool char_config_read_player_new(const char *filename, const struct config_t *co
*
* @retval false in case of error.
*/
-bool char_config_read_permission(const char *filename, const struct config_t *config, bool imported)
+static bool char_config_read_permission(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -6091,7 +5992,7 @@ bool char_config_read_permission(const char *filename, const struct config_t *co
*
* @retval false in case of error.
*/
-bool char_config_set_ip(const char *type, const char *value, uint32 *out_ip, char *out_ip_str)
+static bool char_config_set_ip(const char *type, const char *value, uint32 *out_ip, char *out_ip_str)
{
uint32 ip = 0;
@@ -6109,7 +6010,8 @@ bool char_config_set_ip(const char *type, const char *value, uint32 *out_ip, cha
return true;
}
-int do_final(void) {
+int do_final(void)
+{
int i;
ShowStatus("Terminating...\n");
@@ -6168,12 +6070,13 @@ void do_abort(void)
{
}
-void set_server_type(void) {
+void set_server_type(void)
+{
SERVER_TYPE = SERVER_TYPE_CHAR;
}
/// Called when a terminate signal is received.
-void do_shutdown(void)
+static void do_shutdown(void)
{
if( core->runflag != CHARSERVER_ST_SHUTDOWN )
{
@@ -6249,7 +6152,8 @@ void cmdline_args_init_local(void)
CMDLINEARG_DEF2(net-config, netconfig, "Alternative network configuration.", CMDLINE_OPT_PARAM);
}
-int do_init(int argc, char **argv) {
+int do_init(int argc, char **argv)
+{
int i;
memset(&skillid2idx, 0, sizeof(skillid2idx));
@@ -6465,6 +6369,7 @@ void char_defaults(void)
chr->mmo_char_sql_init = char_mmo_char_sql_init;
chr->char_slotchange = char_char_slotchange;
chr->rename_char_sql = char_rename_char_sql;
+ chr->name_exists = char_name_exists;
chr->check_char_name = char_check_char_name;
chr->make_new_char_sql = char_make_new_char_sql;
chr->divorce_char_sql = char_divorce_char_sql;
diff --git a/src/char/char.h b/src/char/char.h
index a644f11ab..4d816583a 100644
--- a/src/char/char.h
+++ b/src/char/char.h
@@ -147,7 +147,8 @@ struct char_interface {
int (*mmo_char_sql_init) (void);
bool (*char_slotchange) (struct char_session_data *sd, int fd, unsigned short from, unsigned short to);
int (*rename_char_sql) (struct char_session_data *sd, int char_id);
- int (*check_char_name) (char * name, char * esc_name);
+ 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 (*divorce_char_sql) (int partner_id1, int partner_id2);
int (*count_users) (void);
diff --git a/src/char/geoip.c b/src/char/geoip.c
index 78c89bcac..2870e5f0c 100644
--- a/src/char/geoip.c
+++ b/src/char/geoip.c
@@ -30,9 +30,9 @@
#include <stdio.h>
#include <sys/stat.h> // for stat/lstat/fstat - [Dekamaster/Ultimate GM Tool]
-struct s_geoip geoip_data;
+static struct s_geoip geoip_data;
-struct geoip_interface geoip_s;
+static struct geoip_interface geoip_s;
struct geoip_interface *geoip;
/* [Dekamaster/Nightroad] */
@@ -40,36 +40,38 @@ struct geoip_interface *geoip;
#define GEOIP_STRUCTURE_INFO_MAX_SIZE 20
#define GEOIP_COUNTRY_BEGIN 16776960
-const char * geoip_countryname[GEOIP_MAX_COUNTRIES] = {"Unknown","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Netherlands Antilles",
- "Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados",
- "Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia",
- "Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
- "Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica",
- "Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic",
- "Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji",
- "Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","France, Metropolitan","Gabon","United Kingdom","Grenada","Georgia","French Guiana",
- "Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala",
- "Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia",
- "Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan",
- "Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
- "Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
- "Luxembourg","Latvia","Libyan Arab Jamahiriya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali",
- "Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives",
- "Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
- "Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia",
- "Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau",
- "Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan",
- "Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname",
- "Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand",
- "Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan",
- "Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela",
- "Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa",
- "Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
- "Saint Barthelemy", "Saint Martin", "Bonaire, Saint Eustatius and Saba", "South Sudan"};
+static const char *geoip_countryname[GEOIP_MAX_COUNTRIES] = {
+ "Unknown","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Netherlands Antilles",
+ "Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados",
+ "Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia",
+ "Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
+ "Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica",
+ "Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic",
+ "Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji",
+ "Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","France, Metropolitan","Gabon","United Kingdom","Grenada","Georgia","French Guiana",
+ "Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala",
+ "Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia",
+ "Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan",
+ "Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
+ "Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
+ "Luxembourg","Latvia","Libyan Arab Jamahiriya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali",
+ "Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives",
+ "Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
+ "Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia",
+ "Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau",
+ "Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan",
+ "Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname",
+ "Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand",
+ "Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan",
+ "Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela",
+ "Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa",
+ "Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
+ "Saint Barthelemy", "Saint Martin", "Bonaire, Saint Eustatius and Saba", "South Sudan"
+};
/* [Dekamaster/Nightroad] */
/* WHY NOT A DBMAP: There are millions of entries in GeoIP and it has its own algorithm to go quickly through them, a DBMap wouldn't be efficient */
-const char* geoip_getcountry(uint32 ipnum)
+static const char *geoip_getcountry(uint32 ipnum)
{
int depth;
unsigned int x;
@@ -111,7 +113,7 @@ const char* geoip_getcountry(uint32 ipnum)
* Disables GeoIP
* frees geoip.cache
**/
-void geoip_final(bool shutdown)
+static void geoip_final(bool shutdown)
{
if (geoip->data->cache) {
aFree(geoip->data->cache);
@@ -130,7 +132,7 @@ void geoip_final(bool shutdown)
* geoip.cache should be freed after use!
* http://dev.maxmind.com/geoip/legacy/geolite/
**/
-void geoip_init(void)
+static void geoip_init(void)
{
int fno;
char db_type = 1;
diff --git a/src/char/int_auction.c b/src/char/int_auction.c
index 3a11f1865..1e5b0a06d 100644
--- a/src/char/int_auction.c
+++ b/src/char/int_auction.c
@@ -40,7 +40,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_auction_interface inter_auction_s;
+static struct inter_auction_interface inter_auction_s;
struct inter_auction_interface *inter_auction;
static int inter_auction_count(int char_id, bool buy)
@@ -59,7 +59,7 @@ static int inter_auction_count(int char_id, bool buy)
return i;
}
-void inter_auction_save(struct auction_data *auction)
+static void inter_auction_save(struct auction_data *auction)
{
int j;
StringBuf buf;
@@ -91,7 +91,7 @@ void inter_auction_save(struct auction_data *auction)
StrBuf->Destroy(&buf);
}
-unsigned int inter_auction_create(struct auction_data *auction)
+static unsigned int inter_auction_create(struct auction_data *auction)
{
int j;
StringBuf buf;
@@ -148,17 +148,8 @@ unsigned int inter_auction_create(struct auction_data *auction)
return auction->auction_id;
}
-void mapif_auction_message(int char_id, unsigned char result)
+static int inter_auction_end_timer(int tid, int64 tick, int id, intptr_t data)
{
- unsigned char buf[74];
-
- WBUFW(buf,0) = 0x3854;
- WBUFL(buf,2) = char_id;
- WBUFL(buf,6) = result;
- mapif->sendall(buf,7);
-}
-
-static int inter_auction_end_timer(int tid, int64 tick, int id, intptr_t data) {
struct auction_data *auction;
if( (auction = (struct auction_data *)idb_get(inter_auction->db, id)) != NULL )
{
@@ -180,7 +171,7 @@ static int inter_auction_end_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void inter_auction_delete(struct auction_data *auction)
+static void inter_auction_delete(struct auction_data *auction)
{
unsigned int auction_id;
nullpo_retv(auction);
@@ -196,7 +187,7 @@ void inter_auction_delete(struct auction_data *auction)
idb_remove(inter_auction->db, auction_id);
}
-void inter_auctions_fromsql(void)
+static void inter_auctions_fromsql(void)
{
int i;
struct auction_data *auction;
@@ -269,235 +260,10 @@ void inter_auctions_fromsql(void)
SQL->FreeResult(inter->sql_handle);
}
-void mapif_auction_sendlist(int fd, int char_id, short count, short pages, unsigned char *buf)
-{
- int len = (sizeof(struct auction_data) * count) + 12;
-
- nullpo_retv(buf);
-
- WFIFOHEAD(fd, len);
- WFIFOW(fd,0) = 0x3850;
- WFIFOW(fd,2) = len;
- WFIFOL(fd,4) = char_id;
- WFIFOW(fd,8) = count;
- WFIFOW(fd,10) = pages;
- memcpy(WFIFOP(fd,12), buf, len - 12);
- WFIFOSET(fd,len);
-}
-
-void mapif_parse_auction_requestlist(int fd)
-{
- char searchtext[NAME_LENGTH];
- int char_id = RFIFOL(fd,4), len = sizeof(struct auction_data);
- int price = RFIFOL(fd,10);
- short type = RFIFOW(fd,8), page = max(1,RFIFOW(fd,14));
- unsigned char buf[5 * sizeof(struct auction_data)];
- struct DBIterator *iter = db_iterator(inter_auction->db);
- struct auction_data *auction;
- short i = 0, j = 0, pages = 1;
-
- memcpy(searchtext, RFIFOP(fd,16), NAME_LENGTH);
-
- for( auction = dbi_first(iter); dbi_exists(iter); auction = dbi_next(iter) )
- {
- if( (type == 0 && auction->type != IT_ARMOR && auction->type != IT_PETARMOR) ||
- (type == 1 && auction->type != IT_WEAPON) ||
- (type == 2 && auction->type != IT_CARD) ||
- (type == 3 && auction->type != IT_ETC) ||
- (type == 4 && !strstr(auction->item_name, searchtext)) ||
- (type == 5 && auction->price > price) ||
- (type == 6 && auction->seller_id != char_id) ||
- (type == 7 && auction->buyer_id != char_id) )
- continue;
-
- i++;
- if( i > 5 )
- { // Counting Pages of Total Results (5 Results per Page)
- pages++;
- i = 1; // First Result of This Page
- }
-
- if( page != pages )
- continue; // This is not the requested Page
-
- memcpy(WBUFP(buf, j * len), auction, len);
- j++; // Found Results
- }
- dbi_destroy(iter);
-
- mapif->auction_sendlist(fd, char_id, j, pages, buf);
-}
-
-void mapif_auction_register(int fd, struct auction_data *auction)
-{
- int len = sizeof(struct auction_data) + 4;
-
- nullpo_retv(auction);
-
- WFIFOHEAD(fd,len);
- WFIFOW(fd,0) = 0x3851;
- WFIFOW(fd,2) = len;
- memcpy(WFIFOP(fd,4), auction, sizeof(struct auction_data));
- WFIFOSET(fd,len);
-}
-
-void mapif_parse_auction_register(int fd)
-{
- struct auction_data auction;
- if( RFIFOW(fd,2) != sizeof(struct auction_data) + 4 )
- return;
-
- memcpy(&auction, RFIFOP(fd,4), sizeof(struct auction_data));
- if( inter_auction->count(auction.seller_id, false) < 5 )
- auction.auction_id = inter_auction->create(&auction);
-
- mapif->auction_register(fd, &auction);
-}
-
-void mapif_auction_cancel(int fd, int char_id, unsigned char result)
-{
- WFIFOHEAD(fd,7);
- WFIFOW(fd,0) = 0x3852;
- WFIFOL(fd,2) = char_id;
- WFIFOB(fd,6) = result;
- WFIFOSET(fd,7);
-}
-
-void mapif_parse_auction_cancel(int fd)
-{
- int char_id = RFIFOL(fd,2), auction_id = RFIFOL(fd,6);
- struct auction_data *auction;
-
- if( (auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL )
- {
- mapif->auction_cancel(fd, char_id, 1); // Bid Number is Incorrect
- return;
- }
-
- if( auction->seller_id != char_id )
- {
- mapif->auction_cancel(fd, char_id, 2); // You cannot end the auction
- return;
- }
-
- if( auction->buyer_id > 0 )
- {
- mapif->auction_cancel(fd, char_id, 3); // An auction with at least one bidder cannot be canceled
- return;
- }
-
- inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Auction canceled.", 0, &auction->item);
- inter_auction->delete_(auction);
-
- mapif->auction_cancel(fd, char_id, 0); // The auction has been canceled
-}
-
-void mapif_auction_close(int fd, int char_id, unsigned char result)
-{
- WFIFOHEAD(fd,7);
- WFIFOW(fd,0) = 0x3853;
- WFIFOL(fd,2) = char_id;
- WFIFOB(fd,6) = result;
- WFIFOSET(fd,7);
-}
-
-void mapif_parse_auction_close(int fd)
-{
- int char_id = RFIFOL(fd,2), auction_id = RFIFOL(fd,6);
- struct auction_data *auction;
-
- if( (auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL )
- {
- mapif->auction_close(fd, char_id, 2); // Bid Number is Incorrect
- return;
- }
-
- if( auction->seller_id != char_id )
- {
- mapif->auction_close(fd, char_id, 1); // You cannot end the auction
- return;
- }
-
- if( auction->buyer_id == 0 )
- {
- mapif->auction_close(fd, char_id, 1); // You cannot end the auction
- return;
- }
-
- // Send Money to Seller
- inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Auction closed.", auction->price, NULL);
- // Send Item to Buyer
- inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "Auction winner.", 0, &auction->item);
- mapif->auction_message(auction->buyer_id, 6); // You have won the auction
- inter_auction->delete_(auction);
-
- mapif->auction_close(fd, char_id, 0); // You have ended the auction
-}
-
-void mapif_auction_bid(int fd, int char_id, int bid, unsigned char result)
-{
- WFIFOHEAD(fd,11);
- WFIFOW(fd,0) = 0x3855;
- WFIFOL(fd,2) = char_id;
- WFIFOL(fd,6) = bid; // To Return Zeny
- WFIFOB(fd,10) = result;
- WFIFOSET(fd,11);
-}
-
-void mapif_parse_auction_bid(int fd)
-{
- int char_id = RFIFOL(fd,4), bid = RFIFOL(fd,12);
- unsigned int auction_id = RFIFOL(fd,8);
- struct auction_data *auction;
-
- if( (auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL || auction->price >= bid || auction->seller_id == char_id )
- {
- mapif->auction_bid(fd, char_id, bid, 0); // You have failed to bid in the auction
- return;
- }
-
- if( inter_auction->count(char_id, true) > 4 && bid < auction->buynow && auction->buyer_id != char_id )
- {
- mapif->auction_bid(fd, char_id, bid, 9); // You cannot place more than 5 bids at a time
- return;
- }
-
- if( auction->buyer_id > 0 )
- { // Send Money back to the previous Buyer
- if( auction->buyer_id != char_id )
- {
- inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "Someone has placed a higher bid.", auction->price, NULL);
- mapif->auction_message(auction->buyer_id, 7); // You have failed to win the auction
- }
- else
- inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "You have placed a higher bid.", auction->price, NULL);
- }
-
- auction->buyer_id = char_id;
- safestrncpy(auction->buyer_name, RFIFOP(fd,16), NAME_LENGTH);
- auction->price = bid;
-
- if( bid >= auction->buynow )
- { // Automatic won the auction
- mapif->auction_bid(fd, char_id, bid - auction->buynow, 1); // You have successfully bid in the auction
-
- inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "You have won the auction.", 0, &auction->item);
- mapif->auction_message(char_id, 6); // You have won the auction
- inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Payment for your auction!.", auction->buynow, NULL);
-
- inter_auction->delete_(auction);
- return;
- }
-
- inter_auction->save(auction);
-
- mapif->auction_bid(fd, char_id, 0, 1); // You have successfully bid in the auction
-}
-
/*==========================================
* Packets From Map Server
*------------------------------------------*/
-int inter_auction_parse_frommap(int fd)
+static int inter_auction_parse_frommap(int fd)
{
switch(RFIFOW(fd,0))
{
@@ -512,7 +278,7 @@ int inter_auction_parse_frommap(int fd)
return 1;
}
-int inter_auction_sql_init(void)
+static int inter_auction_sql_init(void)
{
inter_auction->db = idb_alloc(DB_OPT_RELEASE_DATA);
inter_auction->fromsql();
@@ -520,7 +286,7 @@ int inter_auction_sql_init(void)
return 0;
}
-void inter_auction_sql_final(void)
+static void inter_auction_sql_final(void)
{
inter_auction->db->destroy(inter_auction->db,NULL);
diff --git a/src/char/int_clan.c b/src/char/int_clan.c
index e68f6a655..9fb8ad95e 100644
--- a/src/char/int_clan.c
+++ b/src/char/int_clan.c
@@ -38,7 +38,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_clan_interface inter_clan_s;
+static struct inter_clan_interface inter_clan_s;
struct inter_clan_interface *inter_clan;
/**
@@ -51,7 +51,7 @@ struct inter_clan_interface *inter_clan;
* @param kick_interval Time needed to consider a player inactive and kick it
* @return 0 on failure, 1 on success
*/
-int inter_clan_kick_inactive_members(int clan_id, int kick_interval)
+static int inter_clan_kick_inactive_members(int clan_id, int kick_interval)
{
if (clan_id <= 0) {
ShowError("inter_clan_kick_inactive_members: Invalid clan id received '%d'\n", clan_id);
@@ -81,7 +81,7 @@ int inter_clan_kick_inactive_members(int clan_id, int kick_interval)
* @param clan_id Id of the clan
* @param kick_interval Time needed to consider a player inactive and ignore it on the count
*/
-int inter_clan_count_members(int clan_id, int kick_interval)
+static int inter_clan_count_members(int clan_id, int kick_interval)
{
struct SqlStmt *stmt;
int count = 0;
@@ -123,32 +123,6 @@ int inter_clan_count_members(int clan_id, int kick_interval)
return count;
}
-int mapif_parse_ClanMemberCount(int fd, int clan_id, int kick_interval)
-{
-
- WFIFOHEAD(fd, 10);
- WFIFOW(fd, 0) = 0x3858;
- WFIFOL(fd, 2) = clan_id;
- WFIFOL(fd, 6) = inter_clan->count_members(clan_id, kick_interval);
- WFIFOSET(fd, 10);
- return 0;
-}
-
-int mapif_parse_ClanMemberKick(int fd, int clan_id, int kick_interval)
-{
- int count = 0;
-
- if (inter_clan->kick_inactive_members(clan_id, kick_interval) == 1)
- count = inter_clan->count_members(clan_id, kick_interval);
-
- WFIFOHEAD(fd, 10);
- WFIFOW(fd, 0) = 0x3858;
- WFIFOL(fd, 2) = clan_id;
- WFIFOL(fd, 6) = count;
- WFIFOSET(fd, 10);
- return 0;
-}
-
// Communication from the map server
// - Can analyzed only one by one packet
// Data packet length that you set to inter.c
@@ -156,7 +130,7 @@ int mapif_parse_ClanMemberKick(int fd, int clan_id, int kick_interval)
// Must Return
// 1 : ok
// 0 : error
-int inter_clan_parse_frommap(int fd)
+static int inter_clan_parse_frommap(int fd)
{
RFIFOHEAD(fd);
diff --git a/src/char/int_elemental.c b/src/char/int_elemental.c
index f847d16ae..175007b66 100644
--- a/src/char/int_elemental.c
+++ b/src/char/int_elemental.c
@@ -37,7 +37,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_elemental_interface inter_elemental_s;
+static struct inter_elemental_interface inter_elemental_s;
struct inter_elemental_interface *inter_elemental;
/**
@@ -50,7 +50,7 @@ struct inter_elemental_interface *inter_elemental;
* @param[in,out] ele The new elemental's data.
* @retval false in case of errors.
*/
-bool mapif_elemental_create(struct s_elemental *ele)
+static bool inter_elemental_create(struct s_elemental *ele)
{
nullpo_retr(false, ele);
Assert_retr(false, ele->elemental_id == 0);
@@ -73,7 +73,7 @@ bool mapif_elemental_create(struct s_elemental *ele)
* @param ele The elemental's data.
* @retval false in case of errors.
*/
-bool mapif_elemental_save(const struct s_elemental *ele)
+static bool inter_elemental_save(const struct s_elemental *ele)
{
nullpo_retr(false, ele);
Assert_retr(false, ele->elemental_id > 0);
@@ -90,7 +90,8 @@ bool mapif_elemental_save(const struct s_elemental *ele)
return true;
}
-bool mapif_elemental_load(int ele_id, int char_id, struct s_elemental *ele) {
+static bool inter_elemental_load(int ele_id, int char_id, struct s_elemental *ele)
+{
char* data;
nullpo_retr(false, ele);
@@ -134,7 +135,8 @@ bool mapif_elemental_load(int ele_id, int char_id, struct s_elemental *ele) {
return true;
}
-bool mapif_elemental_delete(int ele_id) {
+static bool inter_elemental_delete(int ele_id)
+{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `ele_id` = '%d'", elemental_db, ele_id) ) {
Sql_ShowDebug(inter->sql_handle);
return false;
@@ -143,72 +145,21 @@ bool mapif_elemental_delete(int ele_id) {
return true;
}
-void mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag) {
- int size = sizeof(struct s_elemental) + 5;
-
- nullpo_retv(ele);
- WFIFOHEAD(fd,size);
- WFIFOW(fd,0) = 0x387c;
- WFIFOW(fd,2) = size;
- WFIFOB(fd,4) = flag;
- memcpy(WFIFOP(fd,5),ele,sizeof(struct s_elemental));
- WFIFOSET(fd,size);
-}
-
-void mapif_parse_elemental_create(int fd, const struct s_elemental *ele)
+static void inter_elemental_sql_init(void)
{
- struct s_elemental ele_;
- bool result;
-
- memcpy(&ele_, ele, sizeof(ele_));
-
- result = mapif->elemental_create(&ele_);
- mapif->elemental_send(fd, &ele_, result);
-}
-
-void mapif_parse_elemental_load(int fd, int ele_id, int char_id) {
- struct s_elemental ele;
- bool result = mapif->elemental_load(ele_id, char_id, &ele);
- mapif->elemental_send(fd, &ele, result);
-}
-
-void mapif_elemental_deleted(int fd, unsigned char flag) {
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x387d;
- WFIFOB(fd,2) = flag;
- WFIFOSET(fd,3);
-}
-
-void mapif_parse_elemental_delete(int fd, int ele_id) {
- bool result = mapif->elemental_delete(ele_id);
- mapif->elemental_deleted(fd, result);
-}
-
-void mapif_elemental_saved(int fd, unsigned char flag) {
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x387e;
- WFIFOB(fd,2) = flag;
- WFIFOSET(fd,3);
-}
-
-void mapif_parse_elemental_save(int fd, const struct s_elemental *ele)
-{
- bool result = mapif->elemental_save(ele);
- mapif->elemental_saved(fd, result);
-}
-
-void inter_elemental_sql_init(void) {
return;
}
-void inter_elemental_sql_final(void) {
+static void inter_elemental_sql_final(void)
+{
return;
}
/*==========================================
* Inter Packets
*------------------------------------------*/
-int inter_elemental_parse_frommap(int fd) {
+static int inter_elemental_parse_frommap(int fd)
+{
unsigned short cmd = RFIFOW(fd,0);
switch (cmd) {
@@ -229,4 +180,9 @@ void inter_elemental_defaults(void)
inter_elemental->sql_init = inter_elemental_sql_init;
inter_elemental->sql_final = inter_elemental_sql_final;
inter_elemental->parse_frommap = inter_elemental_parse_frommap;
+
+ inter_elemental->create = inter_elemental_create;
+ inter_elemental->save = inter_elemental_save;
+ inter_elemental->load = inter_elemental_load;
+ inter_elemental->delete = inter_elemental_delete;
}
diff --git a/src/char/int_elemental.h b/src/char/int_elemental.h
index 646009b50..3172dcacf 100644
--- a/src/char/int_elemental.h
+++ b/src/char/int_elemental.h
@@ -22,6 +22,7 @@
#define CHAR_INT_ELEMENTAL_H
#include "common/hercules.h"
+#include "common/mmo.h"
/**
* inter_elemental_interface interface
@@ -30,6 +31,11 @@ struct inter_elemental_interface {
void (*sql_init) (void);
void (*sql_final) (void);
int (*parse_frommap) (int fd);
+
+ bool (*create) (struct s_elemental *ele);
+ bool (*save) (const struct s_elemental *ele);
+ bool (*load) (int ele_id, int char_id, struct s_elemental *ele);
+ bool (*delete) (int ele_id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_guild.c b/src/char/int_guild.c
index 38c79ec28..e03278fad 100644
--- a/src/char/int_guild.c
+++ b/src/char/int_guild.c
@@ -51,12 +51,13 @@
#define GUILD_ALLIANCE_TYPE_MASK 0x01
#define GUILD_ALLIANCE_REMOVE 0x08
-struct inter_guild_interface inter_guild_s;
+static struct inter_guild_interface inter_guild_s;
struct inter_guild_interface *inter_guild;
static const char dataToHex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
-int inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) {
+static int inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data)
+{
static int last_id = 0; //To know in which guild we were.
int state = 0; //0: Have not reached last guild. 1: Reached last guild, ready for save. 2: Some guild saved, don't do further saving.
struct DBIterator *iter = db_iterator(inter_guild->guild_db);
@@ -101,7 +102,7 @@ int inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int inter_guild_removemember_tosql(int account_id, int char_id)
+static int inter_guild_removemember_tosql(int account_id, int char_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE from `%s` where `account_id` = '%d' and `char_id` = '%d'", guild_member_db, account_id, char_id) )
Sql_ShowDebug(inter->sql_handle);
@@ -111,7 +112,7 @@ int inter_guild_removemember_tosql(int account_id, int char_id)
}
// Save guild into sql
-int inter_guild_tosql(struct guild *g,int flag)
+static int inter_guild_tosql(struct guild *g, int flag)
{
// Table guild (GS_BASIC_MASK)
// GS_EMBLEM `emblem_len`,`emblem_id`,`emblem_data`
@@ -343,7 +344,7 @@ int inter_guild_tosql(struct guild *g,int flag)
}
// Read guild from sql
-struct guild * inter_guild_fromsql(int guild_id)
+static struct guild *inter_guild_fromsql(int guild_id)
{
struct guild *g;
char* data;
@@ -533,7 +534,7 @@ struct guild * inter_guild_fromsql(int guild_id)
}
// `guild_castle` (`castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`, `visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7`)
-int inter_guild_castle_tosql(struct guild_castle *gc)
+static int inter_guild_castle_tosql(struct guild_castle *gc)
{
StringBuf buf;
int i;
@@ -557,7 +558,7 @@ int inter_guild_castle_tosql(struct guild_castle *gc)
}
// Read guild_castle from SQL
-struct guild_castle* inter_guild_castle_fromsql(int castle_id)
+static struct guild_castle *inter_guild_castle_fromsql(int castle_id)
{
char *data;
int i;
@@ -609,7 +610,8 @@ struct guild_castle* inter_guild_castle_fromsql(int castle_id)
// Read exp_guild.txt
-bool inter_guild_exp_parse_row(char* split[], int column, int current) {
+static bool inter_guild_exp_parse_row(char *split[], int column, int current)
+{
int64 exp = strtoll(split[0], NULL, 10);
nullpo_retr(true, split);
@@ -623,7 +625,8 @@ bool inter_guild_exp_parse_row(char* split[], int column, int current) {
}
-int inter_guild_CharOnline(int char_id, int guild_id) {
+static int inter_guild_CharOnline(int char_id, int guild_id)
+{
struct guild *g;
int i;
@@ -672,7 +675,7 @@ int inter_guild_CharOnline(int char_id, int guild_id) {
return 1;
}
-int inter_guild_CharOffline(int char_id, int guild_id)
+static int inter_guild_CharOffline(int char_id, int guild_id)
{
struct guild *g=NULL;
int online_count, i;
@@ -728,7 +731,7 @@ int inter_guild_CharOffline(int char_id, int guild_id)
}
// Initialize guild sql
-int inter_guild_sql_init(void)
+static int inter_guild_sql_init(void)
{
//Initialize the guild cache
inter_guild->guild_db= idb_alloc(DB_OPT_RELEASE_DATA);
@@ -745,7 +748,7 @@ int inter_guild_sql_init(void)
/**
* @see DBApply
*/
-int inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct guild *g = DB->data2ptr(data);
nullpo_ret(g);
@@ -756,7 +759,7 @@ int inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void inter_guild_sql_final(void)
+static void inter_guild_sql_final(void)
{
inter_guild->guild_db->destroy(inter_guild->guild_db, inter_guild->db_final);
db_destroy(inter_guild->castle_db);
@@ -764,7 +767,7 @@ void inter_guild_sql_final(void)
}
// Get guild_id by its name. Returns 0 if not found, -1 on error.
-int inter_guild_search_guildname(const char *str)
+static int inter_guild_search_guildname(const char *str)
{
int guild_id;
char esc_name[NAME_LENGTH*2+1];
@@ -807,7 +810,8 @@ static bool inter_guild_check_empty(struct guild *g)
return true;
}
-unsigned int inter_guild_nextexp(int level) {
+static unsigned int inter_guild_nextexp(int level)
+{
if (level == 0)
return 1;
if (level <= 0 || level > MAX_GUILDLEVEL)
@@ -816,7 +820,7 @@ unsigned int inter_guild_nextexp(int level) {
return inter_guild->exp[level-1];
}
-int inter_guild_checkskill(struct guild *g, int id)
+static int inter_guild_checkskill(struct guild *g, int id)
{
int idx = id - GD_SKILLBASE;
@@ -827,7 +831,7 @@ int inter_guild_checkskill(struct guild *g, int id)
return g->skill[idx].lv;
}
-int inter_guild_calcinfo(struct guild *g)
+static int inter_guild_calcinfo(struct guild *g)
{
int i,c;
unsigned int nextexp;
@@ -891,277 +895,7 @@ int inter_guild_calcinfo(struct guild *g)
return 0;
}
-//-------------------------------------------------------------------
-// Packet sent to map server
-
-int mapif_guild_created(int fd, int account_id, struct guild *g)
-{
- WFIFOHEAD(fd, 10);
- WFIFOW(fd,0)=0x3830;
- WFIFOL(fd,2)=account_id;
- if(g != NULL)
- {
- WFIFOL(fd,6)=g->guild_id;
- ShowInfo("int_guild: Guild created (%d - %s)\n",g->guild_id,g->name);
- } else
- WFIFOL(fd,6)=0;
-
- WFIFOSET(fd,10);
- return 0;
-}
-
-// Guild not found
-int mapif_guild_noinfo(int fd, int guild_id)
-{
- unsigned char buf[12];
- WBUFW(buf,0)=0x3831;
- WBUFW(buf,2)=8;
- WBUFL(buf,4)=guild_id;
- ShowWarning("int_guild: info not found %d\n",guild_id);
- if(fd<0)
- mapif->sendall(buf,8);
- else
- mapif->send(fd,buf,8);
- return 0;
-}
-
-// Send guild info
-int mapif_guild_info(int fd, struct guild *g)
-{
- unsigned char buf[8+sizeof(struct guild)];
- nullpo_ret(g);
- WBUFW(buf,0)=0x3831;
- WBUFW(buf,2)=4+sizeof(struct guild);
- memcpy(buf+4,g,sizeof(struct guild));
- if(fd<0)
- mapif->sendall(buf,WBUFW(buf,2));
- else
- mapif->send(fd,buf,WBUFW(buf,2));
- return 0;
-}
-
-// ACK member add
-int mapif_guild_memberadded(int fd, int guild_id, int account_id, int char_id, int flag)
-{
- WFIFOHEAD(fd, 15);
- WFIFOW(fd,0)=0x3832;
- WFIFOL(fd,2)=guild_id;
- WFIFOL(fd,6)=account_id;
- WFIFOL(fd,10)=char_id;
- WFIFOB(fd,14)=flag;
- WFIFOSET(fd,15);
- return 0;
-}
-
-// ACK member leave
-int mapif_guild_withdraw(int guild_id,int account_id,int char_id,int flag, const char *name, const char *mes)
-{
- unsigned char buf[55+NAME_LENGTH];
-
- nullpo_ret(name);
- nullpo_ret(mes);
-
- WBUFW(buf, 0)=0x3834;
- WBUFL(buf, 2)=guild_id;
- WBUFL(buf, 6)=account_id;
- WBUFL(buf,10)=char_id;
- WBUFB(buf,14)=flag;
- memcpy(WBUFP(buf,15),mes,40);
- memcpy(WBUFP(buf,55),name,NAME_LENGTH);
- mapif->sendall(buf,55+NAME_LENGTH);
- ShowInfo("int_guild: guild withdraw (%d - %d: %s - %s)\n",guild_id,account_id,name,mes);
- return 0;
-}
-
-// Send short member's info
-int mapif_guild_memberinfoshort(struct guild *g, int idx)
-{
- unsigned char buf[23];
- nullpo_ret(g);
- Assert_ret(idx >= 0 && idx < MAX_GUILD);
- WBUFW(buf, 0)=0x3835;
- WBUFL(buf, 2)=g->guild_id;
- WBUFL(buf, 6)=g->member[idx].account_id;
- 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);
- return 0;
-}
-
-// Send guild broken
-int mapif_guild_broken(int guild_id, int flag)
-{
- unsigned char buf[7];
- WBUFW(buf,0)=0x3836;
- WBUFL(buf,2)=guild_id;
- WBUFB(buf,6)=flag;
- mapif->sendall(buf,7);
- ShowInfo("int_guild: Guild broken (%d)\n",guild_id);
- return 0;
-}
-
-// Send guild message
-int mapif_guild_message(int guild_id, int account_id, const char *mes, int len, int sfd)
-{
- unsigned char buf[512];
- nullpo_ret(mes);
- if (len > 500)
- len = 500;
- WBUFW(buf,0)=0x3837;
- WBUFW(buf,2)=len+12;
- WBUFL(buf,4)=guild_id;
- WBUFL(buf,8)=account_id;
- memcpy(WBUFP(buf,12),mes,len);
- mapif->sendallwos(sfd, buf,len+12);
- return 0;
-}
-
-// Send basic info
-int mapif_guild_basicinfochanged(int guild_id, int type, const void *data, int len)
-{
- unsigned char buf[2048];
- nullpo_ret(data);
- if (len > 2038)
- len = 2038;
- WBUFW(buf, 0)=0x3839;
- WBUFW(buf, 2)=len+10;
- WBUFL(buf, 4)=guild_id;
- WBUFW(buf, 8)=type;
- memcpy(WBUFP(buf,10),data,len);
- mapif->sendall(buf,len+10);
- return 0;
-}
-
-// Send member info
-int mapif_guild_memberinfochanged(int guild_id, int account_id, int char_id, int type, const void *data, int len)
-{
- unsigned char buf[2048];
- nullpo_ret(data);
- if (len > 2030)
- len = 2030;
- WBUFW(buf, 0)=0x383a;
- WBUFW(buf, 2)=len+18;
- WBUFL(buf, 4)=guild_id;
- WBUFL(buf, 8)=account_id;
- WBUFL(buf,12)=char_id;
- WBUFW(buf,16)=type;
- memcpy(WBUFP(buf,18),data,len);
- mapif->sendall(buf,len+18);
- return 0;
-}
-
-// ACK guild skill up
-int mapif_guild_skillupack(int guild_id, uint16 skill_id, int account_id)
-{
- unsigned char buf[14];
- WBUFW(buf, 0)=0x383c;
- WBUFL(buf, 2)=guild_id;
- WBUFL(buf, 6)=skill_id;
- WBUFL(buf,10)=account_id;
- mapif->sendall(buf,14);
- return 0;
-}
-
-// ACK guild alliance
-int mapif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2)
-{
- unsigned char buf[19+2*NAME_LENGTH];
- nullpo_ret(name1);
- nullpo_ret(name2);
- WBUFW(buf, 0)=0x383d;
- WBUFL(buf, 2)=guild_id1;
- WBUFL(buf, 6)=guild_id2;
- WBUFL(buf,10)=account_id1;
- WBUFL(buf,14)=account_id2;
- WBUFB(buf,18)=flag;
- memcpy(WBUFP(buf,19),name1,NAME_LENGTH);
- memcpy(WBUFP(buf,19+NAME_LENGTH),name2,NAME_LENGTH);
- mapif->sendall(buf,19+2*NAME_LENGTH);
- return 0;
-}
-
-// Send a guild position desc
-int mapif_guild_position(struct guild *g, int idx)
-{
- unsigned char buf[12 + sizeof(struct guild_position)];
- nullpo_ret(g);
- Assert_ret(idx >= 0 && idx < MAX_GUILDPOSITION);
- WBUFW(buf,0)=0x383b;
- WBUFW(buf,2)=sizeof(struct guild_position)+12;
- WBUFL(buf,4)=g->guild_id;
- WBUFL(buf,8)=idx;
- memcpy(WBUFP(buf,12),&g->position[idx],sizeof(struct guild_position));
- mapif->sendall(buf,WBUFW(buf,2));
- return 0;
-}
-
-// Send the guild notice
-int mapif_guild_notice(struct guild *g)
-{
- unsigned char buf[256];
- nullpo_ret(g);
- WBUFW(buf,0)=0x383e;
- WBUFL(buf,2)=g->guild_id;
- memcpy(WBUFP(buf,6),g->mes1,MAX_GUILDMES1);
- memcpy(WBUFP(buf,66),g->mes2,MAX_GUILDMES2);
- mapif->sendall(buf,186);
- return 0;
-}
-
-// Send emblem data
-int mapif_guild_emblem(struct guild *g)
-{
- unsigned char buf[12 + sizeof(g->emblem_data)];
- nullpo_ret(g);
- WBUFW(buf,0)=0x383f;
- WBUFW(buf,2)=g->emblem_len+12;
- WBUFL(buf,4)=g->guild_id;
- WBUFL(buf,8)=g->emblem_id;
- memcpy(WBUFP(buf,12),g->emblem_data,g->emblem_len);
- mapif->sendall(buf,WBUFW(buf,2));
- return 0;
-}
-
-int mapif_guild_master_changed(struct guild *g, int aid, int cid)
-{
- unsigned char buf[14];
- nullpo_ret(g);
- WBUFW(buf,0)=0x3843;
- WBUFL(buf,2)=g->guild_id;
- WBUFL(buf,6)=aid;
- WBUFL(buf,10)=cid;
- mapif->sendall(buf,14);
- return 0;
-}
-
-int mapif_guild_castle_dataload(int fd, int sz, const int *castle_ids)
-{
- struct guild_castle *gc = NULL;
- int num = (sz - 4) / sizeof(int);
- int len = 4 + num * sizeof(*gc);
- int i;
-
- nullpo_ret(castle_ids);
- WFIFOHEAD(fd, len);
- WFIFOW(fd, 0) = 0x3840;
- WFIFOW(fd, 2) = len;
- for (i = 0; i < num; i++) {
- gc = inter_guild->castle_fromsql(*(castle_ids++));
- memcpy(WFIFOP(fd, 4 + i * sizeof(*gc)), gc, sizeof(*gc));
- }
- WFIFOSET(fd, len);
- return 0;
-}
-
-//-------------------------------------------------------------------
-// Packet received from map server
-
-
-// Guild creation request
-int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const struct guild_member *master)
+static struct guild *inter_guild_create(const char *name, const struct guild_member *master)
{
struct guild *g;
int i=0;
@@ -1172,21 +906,18 @@ int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const stru
nullpo_ret(master);
if(inter_guild->search_guildname(name) != 0){
ShowInfo("int_guild: guild with same name exists [%s]\n",name);
- mapif->guild_created(fd,account_id,NULL);
- return 0;
+ return NULL;
}
// Check Authorized letters/symbols in the name of the character
if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorized
for (i = 0; i < NAME_LENGTH && name[i]; i++)
if (strchr(char_name_letters, name[i]) == NULL) {
- mapif->guild_created(fd,account_id,NULL);
- return 0;
+ return NULL;
}
} else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden
for (i = 0; i < NAME_LENGTH && name[i]; i++)
if (strchr(char_name_letters, name[i]) != NULL) {
- mapif->guild_created(fd,account_id,NULL);
- return 0;
+ return NULL;
}
}
@@ -1222,108 +953,84 @@ int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const stru
if (!inter_guild->tosql(g,GS_BASIC|GS_POSITION|GS_SKILL|GS_MEMBER)) {
//Failed to Create guild....
ShowError("Failed to create Guild %s (Guild Master: %s)\n", g->name, g->master);
- mapif->guild_created(fd,account_id,NULL);
aFree(g);
- return 0;
+ return NULL;
}
ShowInfo("Created Guild %d - %s (Guild Master: %s)\n", g->guild_id, g->name, g->master);
//Add to cache
idb_put(inter_guild->guild_db, g->guild_id, g);
- // Report to client
- mapif->guild_created(fd,account_id,g);
- mapif->guild_info(fd,g);
-
if (inter->enable_logs)
inter->log("guild %s (id=%d) created by master %s (id=%d)\n",
name, g->guild_id, master->name, master->account_id);
- return 0;
-}
-
-// Return guild info to client
-int mapif_parse_GuildInfo(int fd, int guild_id)
-{
- struct guild * g = inter_guild->fromsql(guild_id); //We use this because on start-up the info of castle-owned guilds is required. [Skotlex]
- if(g)
- {
- if (!inter_guild->calcinfo(g))
- mapif->guild_info(fd,g);
- }
- else
- mapif->guild_noinfo(fd,guild_id); // Failed to load info
- return 0;
+ return g;
}
// Add member to guild
-int mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_member *m)
+static bool inter_guild_add_member(int guild_id, const struct guild_member *member, int map_fd)
{
struct guild * g;
int i;
+ nullpo_ret(member);
- nullpo_ret(m);
g = inter_guild->fromsql(guild_id);
- if(g==NULL){
- mapif->guild_memberadded(fd,guild_id,m->account_id,m->char_id,1); // 1: Failed to add
- return 0;
+ if (g == NULL) {
+ mapif->guild_memberadded(map_fd, guild_id, member->account_id, member->char_id, 1); // 1: Failed to add
+ return false;
}
// Find an empty slot
- for(i=0;i<g->max_member;i++)
- {
- if(g->member[i].account_id==0)
- {
- memcpy(&g->member[i],m,sizeof(struct guild_member));
+ for (i = 0; i < g->max_member; i++) {
+ if (g->member[i].account_id == 0) {
+ g->member[i] = *member;
g->member[i].modified = (GS_MEMBER_NEW | GS_MEMBER_MODIFIED);
- mapif->guild_memberadded(fd,guild_id,m->account_id,m->char_id,0); // 0: success
+ mapif->guild_memberadded(map_fd, guild_id, member->account_id, member->char_id, 0); // 0: success
if (!inter_guild->calcinfo(g)) //Send members if it was not invoked.
- mapif->guild_info(-1,g);
+ mapif->guild_info(-1, g);
g->save_flag |= GS_MEMBER;
if (g->save_flag&GS_REMOVE)
g->save_flag&=~GS_REMOVE;
- return 0;
+ return true;
}
}
- mapif->guild_memberadded(fd,guild_id,m->account_id,m->char_id,1); // 1: Failed to add
- return 0;
+ mapif->guild_memberadded(map_fd, guild_id, member->account_id, member->char_id, 1); // 1: Failed to add
+ return false;
}
// Delete member from guild
-int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, int flag, const char *mes)
+static bool inter_guild_leave(int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd)
{
int i;
- struct guild* g = inter_guild->fromsql(guild_id);
- if( g == NULL )
- {
+ struct guild *g = inter_guild->fromsql(guild_id);
+ if (g == NULL) {
// Unknown guild, just update the player
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `guild_id`='0' WHERE `account_id`='%d' AND `char_id`='%d'", char_db, account_id, char_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `guild_id`='0' WHERE `account_id`='%d' AND `char_id`='%d'", char_db, account_id, char_id))
Sql_ShowDebug(inter->sql_handle);
// mapif->guild_withdraw(guild_id,account_id,char_id,flag,g->member[i].name,mes);
- return 0;
+ return false;
}
nullpo_ret(mes);
// Find the member
- ARR_FIND( 0, g->max_member, i, g->member[i].account_id == account_id && g->member[i].char_id == char_id );
- if( i == g->max_member )
- {
+ ARR_FIND(0, g->max_member, i, g->member[i].account_id == account_id && g->member[i].char_id == char_id);
+ if (i == g->max_member) {
//TODO
- return 0;
+ return false;
}
if (flag) {
// Write expulsion reason
// Find an empty slot
int j;
- ARR_FIND( 0, MAX_GUILDEXPULSION, j, g->expulsion[j].account_id == 0 );
- if( j == MAX_GUILDEXPULSION )
- {
+ ARR_FIND(0, MAX_GUILDEXPULSION, j, g->expulsion[j].account_id == 0);
+ if (j == MAX_GUILDEXPULSION) {
// Expulsion list is full, flush the oldest one
- for( j = 0; j < MAX_GUILDEXPULSION - 1; j++ )
+ for (j = 0; j < MAX_GUILDEXPULSION - 1; j++)
g->expulsion[j] = g->expulsion[j+1];
j = MAX_GUILDEXPULSION-1;
}
@@ -1338,39 +1045,38 @@ int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, in
memset(&g->member[i],0,sizeof(struct guild_member));
- if( inter_guild->check_empty(g) )
- mapif->parse_BreakGuild(-1,guild_id); //Break the guild.
- else {
+ if (inter_guild->check_empty(g)) {
+ inter_guild->disband(guild_id);
+ } else {
//Update member info.
if (!inter_guild->calcinfo(g))
- mapif->guild_info(fd,g);
+ mapif->guild_info(map_fd,g);
g->save_flag |= GS_EXPULSION;
}
- return 0;
+ return true;
}
// Change member info
-int mapif_parse_GuildChangeMemberInfoShort(int fd, 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, int16 class)
{
// Could speed up by manipulating only guild_member
- struct guild * g;
+ struct guild *g;
int i,sum,c;
int prev_count, prev_alv;
g = inter_guild->fromsql(guild_id);
- if(g==NULL)
- return 0;
+ if (g == NULL)
+ return false;
- ARR_FIND( 0, g->max_member, i, g->member[i].account_id == account_id && g->member[i].char_id == char_id );
- if( i < g->max_member )
- {
+ ARR_FIND(0, g->max_member, i, g->member[i].account_id == account_id && g->member[i].char_id == char_id);
+ if (i < g->max_member) {
g->member[i].online = online;
g->member[i].lv = lv;
g->member[i].class = class;
g->member[i].last_login = (uint32)time(NULL);
g->member[i].modified = GS_MEMBER_MODIFIED;
- mapif->guild_memberinfoshort(g,i);
+ mapif->guild_memberinfoshort(g, i);
}
prev_count = g->connect_member;
@@ -1381,99 +1087,90 @@ int mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id,
c = 0;
sum = 0;
- for( i = 0; i < g->max_member; i++ )
- {
- if( g->member[i].account_id > 0 )
- {
+ for (i = 0; i < g->max_member; i++) {
+ if (g->member[i].account_id > 0) {
sum += g->member[i].lv;
c++;
}
- if( g->member[i].online )
+ if (g->member[i].online)
g->connect_member++;
}
- if( c ) // this check should always succeed...
- {
+ if (c != 0) { // this check should always succeed...
g->average_lv = sum / c;
- if( g->connect_member != prev_count || g->average_lv != prev_alv )
+ if (g->connect_member != prev_count || g->average_lv != prev_alv)
g->save_flag |= GS_CONNECT;
- if( g->save_flag & GS_REMOVE )
+ if (g->save_flag & GS_REMOVE)
g->save_flag &= ~GS_REMOVE;
}
g->save_flag |= GS_MEMBER; //Update guild member data
- return 0;
+ return true;
}
// BreakGuild
-int mapif_parse_BreakGuild(int fd, int guild_id)
+static bool inter_guild_disband(int guild_id)
{
- struct guild * g;
-
- g = inter_guild->fromsql(guild_id);
- if(g==NULL)
- return 0;
+ struct guild *g = inter_guild->fromsql(guild_id);
+ if (g == NULL)
+ return false;
// Delete guild from sql
//printf("- Delete guild %d from guild\n",guild_id);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_member_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_member_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_castle_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_castle_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_storage_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_storage_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d' OR `alliance_id` = '%d'", guild_alliance_db, guild_id, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d' OR `alliance_id` = '%d'", guild_alliance_db, guild_id, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_position_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_position_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_skill_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_skill_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_expulsion_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id` = '%d'", guild_expulsion_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
//printf("- Update guild %d of char\n",guild_id);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `guild_id`='0' WHERE `guild_id`='%d'", char_db, guild_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `guild_id`='0' WHERE `guild_id`='%d'", char_db, guild_id))
Sql_ShowDebug(inter->sql_handle);
- mapif->guild_broken(guild_id,0);
+ mapif->guild_broken(guild_id, 0);
if (inter->enable_logs)
inter->log("guild %s (id=%d) broken\n", g->name, guild_id);
//Remove the guild from memory. [Skotlex]
idb_remove(inter_guild->guild_db, guild_id);
- return 0;
-}
-// Forward Guild message to others map servers
-int mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char *mes, int len)
-{
- return mapif->guild_message(guild_id,account_id,mes,len, fd);
+ return true;
}
/**
* Changes basic guild information
* The types are available in mmo.h::guild_basic_info
**/
-int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void *data, int len) {
+static bool inter_guild_update_basic_info(int guild_id, int type, const void *data, int len)
+{
struct guild *g;
struct guild_skill gd_skill;
short value;
g = inter_guild->fromsql(guild_id);
- if( g == NULL )
- return 0;
+ if (g == NULL)
+ return false;
nullpo_ret(data);
- switch(type) {
+ switch (type) {
case GBI_EXP:
value = *((const int16 *)data);
if( value < 0 && abs(value) > g->exp )
@@ -1509,26 +1206,25 @@ int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void
default:
ShowError("int_guild: GuildBasicInfoChange: Unknown type %d, see mmo.h::guild_basic_info for more information\n",type);
- return 0;
+ return false;
}
mapif->guild_info(-1,g);
g->save_flag |= GS_LEVEL;
- // Information is already sent in mapif->guild_info
- //mapif->guild_basicinfochanged(guild_id,type,data,len);
- return 0;
+
+ return true;
}
// Modification of the guild
-int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len)
+static bool inter_guild_update_member_info(int guild_id, int account_id, int char_id, int type, const char *data, int len)
{
// Could make some improvement in speed, because only change guild_member
int i;
- struct guild * g;
+ struct guild *g;
nullpo_ret(data);
g = inter_guild->fromsql(guild_id);
if(g==NULL)
- return 0;
+ return false;
// Search the member
for (i = 0; i < g->max_member; i++) {
@@ -1540,7 +1236,7 @@ int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int
if(i==g->max_member){
ShowWarning("int_guild: GuildMemberChange: Not found %d,%d in guild (%d - %s)\n",
account_id,char_id,guild_id,g->name);
- return 0;
+ return false;
}
switch(type)
@@ -1621,17 +1317,18 @@ int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int
}
default:
ShowError("int_guild: GuildMemberInfoChange: Unknown type %d\n",type);
+ return false;
break;
}
- return 0;
+ return true;
}
-int inter_guild_sex_changed(int guild_id, int account_id, int char_id, short gender)
+static int inter_guild_sex_changed(int guild_id, int account_id, int char_id, short gender)
{
- return mapif->parse_GuildMemberInfoChange(0, guild_id, account_id, char_id, GMI_GENDER, (const char*)&gender, sizeof(gender));
+ return inter_guild->update_member_info(guild_id, account_id, char_id, GMI_GENDER, (const char*)&gender, sizeof(gender));
}
-int inter_guild_charname_changed(int guild_id, int account_id, int char_id, char *name)
+static int inter_guild_charname_changed(int guild_id, int account_id, int char_id, char *name)
{
struct guild *g;
int i, flag = 0;
@@ -1669,35 +1366,34 @@ int inter_guild_charname_changed(int guild_id, int account_id, int char_id, char
}
// Change a position desc
-int mapif_parse_GuildPosition(int fd, int guild_id, int idx, const struct guild_position *p)
+static bool inter_guild_update_position(int guild_id, int idx, const struct guild_position *p)
{
// Could make some improvement in speed, because only change guild_position
- struct guild * g;
+ struct guild *g;
nullpo_ret(p);
g = inter_guild->fromsql(guild_id);
if(g==NULL || idx<0 || idx>=MAX_GUILDPOSITION)
- return 0;
+ return false;
memcpy(&g->position[idx],p,sizeof(struct guild_position));
mapif->guild_position(g,idx);
g->position[idx].modified = GS_POSITION_MODIFIED;
g->save_flag |= GS_POSITION; // Change guild_position
- return 0;
+ return true;
}
// Guild Skill UP
-int mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int account_id, int max)
+static bool inter_guild_use_skill_point(int guild_id, uint16 skill_id, int account_id, int max)
{
struct guild * g;
int idx = skill_id - GD_SKILLBASE;
g = inter_guild->fromsql(guild_id);
if(g == NULL || idx < 0 || idx >= MAX_GUILDSKILL)
- return 0;
+ return false;
- if(g->skill_point>0 && g->skill[idx].id>0 && g->skill[idx].lv<max )
- {
+ if (g->skill_point > 0 && g->skill[idx].id > 0 && g->skill[idx].lv < max) {
g->skill[idx].lv++;
g->skill_point--;
if (!inter_guild->calcinfo(g))
@@ -1705,11 +1401,11 @@ int mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int account_
mapif->guild_skillupack(guild_id,skill_id,account_id);
g->save_flag |= (GS_LEVEL|GS_SKILL); // Change guild & guild_skill
}
- return 0;
+ return true;
}
//Manual deletion of an alliance when partnering guild does not exists. [Skotlex]
-int mapif_parse_GuildDeleteAlliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag)
+static bool inter_guild_remove_alliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag)
{
int i;
char name[NAME_LENGTH];
@@ -1717,18 +1413,18 @@ int mapif_parse_GuildDeleteAlliance(struct guild *g, int guild_id, int account_i
nullpo_retr(-1, g);
ARR_FIND( 0, MAX_GUILDALLIANCE, i, g->alliance[i].guild_id == guild_id );
if( i == MAX_GUILDALLIANCE )
- return -1;
+ return false;
strcpy(name, g->alliance[i].name);
g->alliance[i].guild_id=0;
mapif->guild_alliance(g->guild_id,guild_id,account_id1,account_id2,flag,g->name,name);
g->save_flag |= GS_ALLIANCE;
- return 0;
+ return true;
}
// Alliance modification
-int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag)
+static bool inter_guild_change_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag)
{
// Could speed up
struct guild *g[2] = { NULL };
@@ -1737,10 +1433,10 @@ int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_
g[1] = inter_guild->fromsql(guild_id2);
if(g[0] && g[1]==NULL && (flag & GUILD_ALLIANCE_REMOVE)) //Requested to remove an alliance with a not found guild.
- return mapif->parse_GuildDeleteAlliance(g[0], guild_id2, account_id1, account_id2, flag); //Try to do a manual removal of said guild.
+ return inter_guild->remove_alliance(g[0], guild_id2, account_id1, account_id2, flag); //Try to do a manual removal of said guild.
if(g[0]==NULL || g[1]==NULL)
- return 0;
+ return false;
if( flag&GUILD_ALLIANCE_REMOVE ) {
// Remove alliance/opposition, in case of alliance, remove on both side
@@ -1769,11 +1465,11 @@ int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_
// Mark the two guild to be saved
g[0]->save_flag |= GS_ALLIANCE;
g[1]->save_flag |= GS_ALLIANCE;
- return 0;
+ return true;
}
// Change guild message
-int mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *mes2)
+static bool inter_guild_update_notice(int guild_id, const char *mes1, const char *mes2)
{
struct guild *g;
@@ -1781,22 +1477,23 @@ int mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *
nullpo_ret(mes2);
g = inter_guild->fromsql(guild_id);
if(g==NULL)
- return 0;
+ return false;
memcpy(g->mes1,mes1,MAX_GUILDMES1);
memcpy(g->mes2,mes2,MAX_GUILDMES2);
g->save_flag |= GS_MES; //Change mes of guild
- return mapif->guild_notice(g);
+ mapif->guild_notice(g);
+ return true;
}
-int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char *data)
+static bool inter_guild_update_emblem(int len, int guild_id, const char *data)
{
struct guild * g;
nullpo_ret(data);
g = inter_guild->fromsql(guild_id);
if(g==NULL)
- return 0;
+ return false;
if (len > sizeof(g->emblem_data))
len = sizeof(g->emblem_data);
@@ -1805,21 +1502,17 @@ int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char
g->emblem_len=len;
g->emblem_id++;
g->save_flag |= GS_EMBLEM; //Change guild
- return mapif->guild_emblem(g);
-}
-
-int mapif_parse_GuildCastleDataLoad(int fd, int len, const int *castle_ids)
-{
- return mapif->guild_castle_dataload(fd, len, castle_ids);
+ mapif->guild_emblem(g);
+ return true;
}
-int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
+static bool inter_guild_update_castle_data(int castle_id, int index, int value)
{
struct guild_castle *gc = inter_guild->castle_fromsql(castle_id);
if (gc == NULL) {
- ShowError("mapif->parse_GuildCastleDataSave: castle id=%d not found\n", castle_id);
- return 0;
+ ShowError("inter_guild->update_castle_data: castle id=%d not found\n", castle_id);
+ return false;
}
switch (index) {
@@ -1845,14 +1538,14 @@ int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
gc->guardian[index-10].visible = value;
break;
}
- ShowError("mapif->parse_GuildCastleDataSave: not found index=%d\n", index);
- return 0;
+ ShowError("inter_guild->update_castle_data: not found index=%d\n", index);
+ return false;
}
inter_guild->castle_tosql(gc);
- return 0;
+ return true;
}
-int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int len)
+static bool inter_guild_change_leader(int guild_id, const char *name, int len)
{
struct guild * g;
struct guild_member gm;
@@ -1887,7 +1580,8 @@ int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int le
ShowInfo("int_guild: Guildmaster Changed to %s (Guild %d - %s)\n",g->master, guild_id, g->name);
g->save_flag |= (GS_BASIC|GS_MEMBER); //Save main data and member data.
- return mapif->guild_master_changed(g, g->member[0].account_id, g->member[0].char_id);
+ mapif->guild_master_changed(g, g->member[0].account_id, g->member[0].char_id);
+ return true;
}
// Communication from the map server
@@ -1897,7 +1591,7 @@ int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int le
// Must Return
// 1 : ok
// 0 : error
-int inter_guild_parse_frommap(int fd)
+static int inter_guild_parse_frommap(int fd)
{
RFIFOHEAD(fd);
switch(RFIFOW(fd,0)) {
@@ -1926,13 +1620,7 @@ int inter_guild_parse_frommap(int fd)
return 1;
}
-//Leave request from the server (for deleting character from guild)
-int inter_guild_leave(int guild_id, int account_id, int char_id)
-{
- return mapif->parse_GuildLeave(-1, guild_id, account_id, char_id, 0, "** Character Deleted **");
-}
-
-int inter_guild_broken(int guild_id)
+static int inter_guild_broken(int guild_id)
{
return mapif->guild_broken(guild_id, 0);
}
@@ -1965,6 +1653,20 @@ void inter_guild_defaults(void)
inter_guild->sex_changed = inter_guild_sex_changed;
inter_guild->charname_changed = inter_guild_charname_changed;
inter_guild->parse_frommap = inter_guild_parse_frommap;
- inter_guild->leave = inter_guild_leave;
inter_guild->broken = inter_guild_broken;
+ inter_guild->create = inter_guild_create;
+ inter_guild->add_member = inter_guild_add_member;
+ inter_guild->leave = inter_guild_leave;
+ inter_guild->update_member_info_short = inter_guild_update_member_info_short;
+ inter_guild->update_member_info = inter_guild_update_member_info;
+ inter_guild->disband = inter_guild_disband;
+ inter_guild->update_basic_info = inter_guild_update_basic_info;
+ inter_guild->update_position = inter_guild_update_position;
+ inter_guild->use_skill_point = inter_guild_use_skill_point;
+ inter_guild->remove_alliance = inter_guild_remove_alliance;
+ inter_guild->change_alliance = inter_guild_change_alliance;
+ inter_guild->update_notice = inter_guild_update_notice;
+ inter_guild->update_emblem = inter_guild_update_emblem;
+ inter_guild->update_castle_data = inter_guild_update_castle_data;
+ inter_guild->change_leader = inter_guild_change_leader;
}
diff --git a/src/char/int_guild.h b/src/char/int_guild.h
index 6fefba598..33873edcd 100644
--- a/src/char/int_guild.h
+++ b/src/char/int_guild.h
@@ -68,8 +68,22 @@ struct inter_guild_interface {
int (*sex_changed) (int guild_id, int account_id, int char_id, short gender);
int (*charname_changed) (int guild_id, int account_id, int char_id, char *name);
int (*parse_frommap) (int fd);
- int (*leave) (int guild_id, int account_id, int char_id);
int (*broken) (int guild_id);
+ 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) (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);
+ bool (*update_position) (int guild_id, int idx, const struct guild_position *p);
+ bool (*use_skill_point) (int guild_id, uint16 skill_id, int account_id, int max);
+ bool (*remove_alliance) (struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
+ bool (*change_alliance) (int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
+ bool (*update_notice) (int guild_id, const char *mes1, const char *mes2);
+ bool (*update_emblem) (int len, int guild_id, const char *data);
+ bool (*update_castle_data) (int castle_id, int index, int value);
+ bool (*change_leader) (int guild_id, const char *name, int len);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_homun.c b/src/char/int_homun.c
index 1844c8182..5a1c9d23f 100644
--- a/src/char/int_homun.c
+++ b/src/char/int_homun.c
@@ -37,78 +37,18 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_homunculus_interface inter_homunculus_s;
+static struct inter_homunculus_interface inter_homunculus_s;
struct inter_homunculus_interface *inter_homunculus;
-int inter_homunculus_sql_init(void)
+static int inter_homunculus_sql_init(void)
{
return 0;
}
-void inter_homunculus_sql_final(void)
+static void inter_homunculus_sql_final(void)
{
return;
}
-void mapif_homunculus_created(int fd, int account_id, const struct s_homunculus *sh, unsigned char flag)
-{
- nullpo_retv(sh);
- WFIFOHEAD(fd, sizeof(struct s_homunculus)+9);
- WFIFOW(fd,0) = 0x3890;
- WFIFOW(fd,2) = sizeof(struct s_homunculus)+9;
- WFIFOL(fd,4) = account_id;
- WFIFOB(fd,8)= flag;
- memcpy(WFIFOP(fd,9),sh,sizeof(struct s_homunculus));
- WFIFOSET(fd, WFIFOW(fd,2));
-}
-
-void mapif_homunculus_deleted(int fd, int flag)
-{
- WFIFOHEAD(fd, 3);
- WFIFOW(fd, 0) = 0x3893;
- WFIFOB(fd,2) = flag; //Flag 1 = success
- WFIFOSET(fd, 3);
-}
-
-void mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd)
-{
- WFIFOHEAD(fd, sizeof(struct s_homunculus)+9);
- WFIFOW(fd,0) = 0x3891;
- WFIFOW(fd,2) = sizeof(struct s_homunculus)+9;
- WFIFOL(fd,4) = account_id;
- if( hd != NULL )
- {
- WFIFOB(fd,8) = 1; // success
- memcpy(WFIFOP(fd,9), hd, sizeof(struct s_homunculus));
- }
- else
- {
- WFIFOB(fd,8) = 0; // not found.
- memset(WFIFOP(fd,9), 0, sizeof(struct s_homunculus));
- }
- WFIFOSET(fd, sizeof(struct s_homunculus)+9);
-}
-
-void mapif_homunculus_saved(int fd, int account_id, bool flag)
-{
- WFIFOHEAD(fd, 7);
- WFIFOW(fd,0) = 0x3892;
- WFIFOL(fd,2) = account_id;
- WFIFOB(fd,6) = flag; // 1:success, 0:failure
- WFIFOSET(fd, 7);
-}
-
-void mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned char flag, const char *name)
-{
- nullpo_retv(name);
- WFIFOHEAD(fd, NAME_LENGTH+12);
- WFIFOW(fd, 0) = 0x3894;
- WFIFOL(fd, 2) = account_id;
- WFIFOL(fd, 6) = char_id;
- WFIFOB(fd,10) = flag;
- safestrncpy(WFIFOP(fd,11), name, NAME_LENGTH);
- WFIFOSET(fd, NAME_LENGTH+12);
-}
-
/**
* Creates a new homunculus with the given data.
*
@@ -119,7 +59,7 @@ void mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned char
* @param[in,out] hd The new homunculus' data.
* @retval false in case of errors.
*/
-bool mapif_homunculus_create(struct s_homunculus *hd)
+static bool inter_homunculus_create(struct s_homunculus *hd)
{
char esc_name[NAME_LENGTH*2+1];
@@ -146,7 +86,7 @@ bool mapif_homunculus_create(struct s_homunculus *hd)
* @param hd The homunculus' data.
* @retval false in case of errors.
*/
-bool mapif_homunculus_save(const struct s_homunculus *hd)
+static bool inter_homunculus_save(const struct s_homunculus *hd)
{
bool flag = true;
char esc_name[NAME_LENGTH*2+1];
@@ -188,7 +128,7 @@ bool mapif_homunculus_save(const struct s_homunculus *hd)
}
// Load an homunculus
-bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd)
+static bool inter_homunculus_load(int homun_id, struct s_homunculus *hd)
{
char* data;
size_t len;
@@ -269,7 +209,7 @@ bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd)
return true;
}
-bool mapif_homunculus_delete(int homun_id)
+static bool inter_homunculus_delete(int homun_id)
{
if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `homun_id` = '%d'", homunculus_db, homun_id)
|| SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `homun_id` = '%d'", skill_homunculus_db, homun_id)
@@ -280,7 +220,7 @@ bool mapif_homunculus_delete(int homun_id)
return true;
}
-bool mapif_homunculus_rename(const char *name)
+static bool inter_homunculus_rename(const char *name)
{
int i;
@@ -302,47 +242,10 @@ bool mapif_homunculus_rename(const char *name)
return true;
}
-
-void mapif_parse_homunculus_create(int fd, int len, int account_id, const struct s_homunculus *phd)
-{
- struct s_homunculus shd;
- bool result;
-
- memcpy(&shd, phd, sizeof(shd));
-
- result = mapif->homunculus_create(&shd);
- mapif->homunculus_created(fd, account_id, &shd, result);
-}
-
-void mapif_parse_homunculus_delete(int fd, int homun_id)
-{
- bool result = mapif->homunculus_delete(homun_id);
- mapif->homunculus_deleted(fd, result);
-}
-
-void mapif_parse_homunculus_load(int fd, int account_id, int homun_id)
-{
- struct s_homunculus hd;
- bool result = mapif->homunculus_load(homun_id, &hd);
- mapif->homunculus_loaded(fd, account_id, ( result ? &hd : NULL ));
-}
-
-void mapif_parse_homunculus_save(int fd, int len, int account_id, const struct s_homunculus *phd)
-{
- bool result = mapif->homunculus_save(phd);
- mapif->homunculus_saved(fd, account_id, result);
-}
-
-void mapif_parse_homunculus_rename(int fd, int account_id, int char_id, const char *name)
-{
- bool result = mapif->homunculus_rename(name);
- mapif->homunculus_renamed(fd, account_id, char_id, result, name);
-}
-
/*==========================================
* Inter Packets
*------------------------------------------*/
-int inter_homunculus_parse_frommap(int fd)
+static int inter_homunculus_parse_frommap(int fd)
{
unsigned short cmd = RFIFOW(fd,0);
@@ -365,4 +268,10 @@ void inter_homunculus_defaults(void)
inter_homunculus->sql_init = inter_homunculus_sql_init;
inter_homunculus->sql_final = inter_homunculus_sql_final;
inter_homunculus->parse_frommap = inter_homunculus_parse_frommap;
+
+ inter_homunculus->create = inter_homunculus_create;
+ inter_homunculus->save = inter_homunculus_save;
+ inter_homunculus->load = inter_homunculus_load;
+ inter_homunculus->delete = inter_homunculus_delete;
+ inter_homunculus->rename = inter_homunculus_rename;
}
diff --git a/src/char/int_homun.h b/src/char/int_homun.h
index fbd9d0eb9..8eba66963 100644
--- a/src/char/int_homun.h
+++ b/src/char/int_homun.h
@@ -22,6 +22,7 @@
#define CHAR_INT_HOMUN_H
#include "common/hercules.h"
+#include "common/mmo.h"
/**
* inter_homunculus interface
@@ -30,6 +31,12 @@ struct inter_homunculus_interface {
int (*sql_init) (void);
void (*sql_final) (void);
int (*parse_frommap) (int fd);
+
+ bool (*create) (struct s_homunculus *hd);
+ bool (*save) (const struct s_homunculus *hd);
+ bool (*load) (int homun_id, struct s_homunculus* hd);
+ bool (*delete) (int homun_id);
+ bool (*rename) (const char *name);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_mail.c b/src/char/int_mail.c
index 29c90b7c0..e0625fcab 100644
--- a/src/char/int_mail.c
+++ b/src/char/int_mail.c
@@ -37,10 +37,10 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_mail_interface inter_mail_s;
+static struct inter_mail_interface inter_mail_s;
struct inter_mail_interface *inter_mail;
-static int inter_mail_fromsql(int char_id, struct mail_data* md)
+static int inter_mail_fromsql(int char_id, struct mail_data *md)
{
int i, j;
struct mail_message *msg;
@@ -134,7 +134,7 @@ static int inter_mail_fromsql(int char_id, struct mail_data* md)
/// Stores a single message in the database.
/// Returns the message's ID if successful (or 0 if it fails).
-int inter_mail_savemessage(struct mail_message* msg)
+static int inter_mail_savemessage(struct mail_message *msg)
{
StringBuf buf;
struct SqlStmt *stmt;
@@ -179,7 +179,7 @@ int inter_mail_savemessage(struct mail_message* msg)
/// Retrieves a single message from the database.
/// Returns true if the operation succeeds (or false if it fails).
-static bool inter_mail_loadmessage(int mail_id, struct mail_message* msg)
+static bool inter_mail_loadmessage(int mail_id, struct mail_message *msg)
{
int j;
StringBuf buf;
@@ -242,40 +242,16 @@ static bool inter_mail_loadmessage(int mail_id, struct mail_message* msg)
return true;
}
-void mapif_mail_sendinbox(int fd, int char_id, unsigned char flag, struct mail_data *md)
-{
- nullpo_retv(md);
- //FIXME: dumping the whole structure like this is unsafe [ultramage]
- WFIFOHEAD(fd, sizeof(struct mail_data) + 9);
- WFIFOW(fd,0) = 0x3848;
- WFIFOW(fd,2) = sizeof(struct mail_data) + 9;
- WFIFOL(fd,4) = char_id;
- WFIFOB(fd,8) = flag;
- memcpy(WFIFOP(fd,9),md,sizeof(struct mail_data));
- WFIFOSET(fd,WFIFOW(fd,2));
-}
-
-/*==========================================
- * Client Inbox Request
- *------------------------------------------*/
-void mapif_parse_mail_requestinbox(int fd)
-{
- int char_id = RFIFOL(fd,2);
- unsigned char flag = RFIFOB(fd,6);
- struct mail_data md;
- memset(&md, 0, sizeof(md));
- inter_mail->fromsql(char_id, &md);
- mapif->mail_sendinbox(fd, char_id, flag, &md);
-}
-
/*==========================================
* Mark mail as 'Read'
*------------------------------------------*/
-void mapif_parse_mail_read(int fd)
+static bool inter_mail_mark_read(int mail_id)
{
- int mail_id = RFIFOL(fd,2);
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `status` = '%d' WHERE `id` = '%d'", mail_db, MAIL_READ, mail_id) )
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `status` = '%d' WHERE `id` = '%d'", mail_db, MAIL_READ, mail_id)) {
Sql_ShowDebug(inter->sql_handle);
+ return false;
+ }
+ return true;
}
/*==========================================
@@ -305,194 +281,103 @@ static bool inter_mail_DeleteAttach(int mail_id)
return true;
}
-void mapif_mail_sendattach(int fd, int char_id, struct mail_message *msg)
+static bool inter_mail_get_attachment(int char_id, int mail_id, struct mail_message *msg)
{
- nullpo_retv(msg);
- WFIFOHEAD(fd, sizeof(struct item) + 12);
- WFIFOW(fd,0) = 0x384a;
- WFIFOW(fd,2) = sizeof(struct item) + 12;
- WFIFOL(fd,4) = char_id;
- WFIFOL(fd,8) = (msg->zeny > 0)?msg->zeny:0;
- memcpy(WFIFOP(fd,12), &msg->item, sizeof(struct item));
- WFIFOSET(fd,WFIFOW(fd,2));
-}
-
-void mapif_mail_getattach(int fd, int char_id, int mail_id)
-{
- struct mail_message msg;
- memset(&msg, 0, sizeof(msg));
+ nullpo_retr(false, msg);
- if( !inter_mail->loadmessage(mail_id, &msg) )
- return;
-
- if( msg.dest_id != char_id )
- return;
-
- if( msg.status != MAIL_READ )
- return;
+ if (!inter_mail->loadmessage(mail_id, msg))
+ return false;
- if( (msg.item.nameid < 1 || msg.item.amount < 1) && msg.zeny < 1 )
- return; // No Attachment
+ if (msg->dest_id != char_id)
+ return false;
- if( !inter_mail->DeleteAttach(mail_id) )
- return;
+ if (msg->status != MAIL_READ)
+ return false;
- mapif->mail_sendattach(fd, char_id, &msg);
-}
+ if ((msg->item.nameid < 1 || msg->item.amount < 1) && msg->zeny < 1)
+ return false; // No Attachment
-void mapif_parse_mail_getattach(int fd)
-{
- mapif->mail_getattach(fd, RFIFOL(fd,2), RFIFOL(fd,6));
-}
+ if (!inter_mail->DeleteAttach(mail_id))
+ return false;
-/*==========================================
- * Delete Mail
- *------------------------------------------*/
-void mapif_mail_delete(int fd, int char_id, int mail_id, bool failed)
-{
- WFIFOHEAD(fd,11);
- WFIFOW(fd,0) = 0x384b;
- WFIFOL(fd,2) = char_id;
- WFIFOL(fd,6) = mail_id;
- WFIFOB(fd,10) = failed;
- WFIFOSET(fd,11);
+ return true;
}
-void mapif_parse_mail_delete(int fd)
+static bool inter_mail_delete(int char_id, int mail_id)
{
- int char_id = RFIFOL(fd,2);
- int mail_id = RFIFOL(fd,6);
- bool failed = false;
- if ( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", mail_db, mail_id) )
- {
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", mail_db, mail_id)) {
Sql_ShowDebug(inter->sql_handle);
- failed = true;
+ return false;
}
- mapif->mail_delete(fd, char_id, mail_id, failed);
+ return true;
}
-/*==========================================
- * Report New Mail to Map Server
- *------------------------------------------*/
-void mapif_mail_new(struct mail_message *msg)
+static bool inter_mail_return_message(int char_id, int mail_id, int *new_mail)
{
- unsigned char buf[74];
-
- if( !msg || !msg->id )
- return;
-
- WBUFW(buf,0) = 0x3849;
- WBUFL(buf,2) = msg->dest_id;
- WBUFL(buf,6) = msg->id;
- memcpy(WBUFP(buf,10), msg->send_name, NAME_LENGTH);
- memcpy(WBUFP(buf,34), msg->title, MAIL_TITLE_LENGTH);
- mapif->sendall(buf, 74);
-}
+ struct mail_message msg;
+ nullpo_retr(false, new_mail);
-/*==========================================
- * Return Mail
- *------------------------------------------*/
-void mapif_mail_return(int fd, int char_id, int mail_id, int new_mail)
-{
- WFIFOHEAD(fd,11);
- WFIFOW(fd,0) = 0x384c;
- WFIFOL(fd,2) = char_id;
- WFIFOL(fd,6) = mail_id;
- WFIFOB(fd,10) = (new_mail == 0);
- WFIFOSET(fd,11);
-}
+ if (!inter_mail->loadmessage(mail_id, &msg))
+ return false;
-void mapif_parse_mail_return(int fd)
-{
- int char_id = RFIFOL(fd,2);
- int mail_id = RFIFOL(fd,6);
- struct mail_message msg;
- int new_mail = 0;
+ if (msg.dest_id != char_id)
+ return false;
- if( inter_mail->loadmessage(mail_id, &msg) )
- {
- if( msg.dest_id != char_id)
- return;
- else if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", mail_db, mail_id) )
- Sql_ShowDebug(inter->sql_handle);
- else
- {
- char temp_[MAIL_TITLE_LENGTH];
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", mail_db, mail_id)) {
+ Sql_ShowDebug(inter->sql_handle);
+ } else {
+ char temp_[MAIL_TITLE_LENGTH];
- // swap sender and receiver
- swap(msg.send_id, msg.dest_id);
- safestrncpy(temp_, msg.send_name, NAME_LENGTH);
- safestrncpy(msg.send_name, msg.dest_name, NAME_LENGTH);
- safestrncpy(msg.dest_name, temp_, NAME_LENGTH);
+ // swap sender and receiver
+ swap(msg.send_id, msg.dest_id);
+ safestrncpy(temp_, msg.send_name, NAME_LENGTH);
+ safestrncpy(msg.send_name, msg.dest_name, NAME_LENGTH);
+ safestrncpy(msg.dest_name, temp_, NAME_LENGTH);
- // set reply message title
- safesnprintf(temp_, MAIL_TITLE_LENGTH, "RE:%s", msg.title);
- safestrncpy(msg.title, temp_, MAIL_TITLE_LENGTH);
+ // set reply message title
+ safesnprintf(temp_, MAIL_TITLE_LENGTH, "RE:%s", msg.title);
+ safestrncpy(msg.title, temp_, MAIL_TITLE_LENGTH);
- msg.status = MAIL_NEW;
- msg.timestamp = time(NULL);
+ msg.status = MAIL_NEW;
+ msg.timestamp = time(NULL);
- new_mail = inter_mail->savemessage(&msg);
- mapif->mail_new(&msg);
- }
+ *new_mail = inter_mail->savemessage(&msg);
+ mapif->mail_new(&msg);
}
- mapif->mail_return(fd, char_id, mail_id, new_mail);
-}
+ return true;
-/*==========================================
- * Send Mail
- *------------------------------------------*/
-void mapif_mail_send(int fd, struct mail_message* msg)
-{
- int len = sizeof(struct mail_message) + 4;
-
- nullpo_retv(msg);
- WFIFOHEAD(fd,len);
- WFIFOW(fd,0) = 0x384d;
- WFIFOW(fd,2) = len;
- memcpy(WFIFOP(fd,4), msg, sizeof(struct mail_message));
- WFIFOSET(fd,len);
}
-void mapif_parse_mail_send(int fd)
+static bool inter_mail_send(int account_id, struct mail_message *msg)
{
- struct mail_message msg;
char esc_name[NAME_LENGTH*2+1];
- int account_id = 0;
- if(RFIFOW(fd,2) != 8 + sizeof(struct mail_message))
- return;
-
- account_id = RFIFOL(fd,4);
- memcpy(&msg, RFIFOP(fd,8), sizeof(struct mail_message));
+ nullpo_retr(false, msg);
// Try to find the Dest Char by Name
- SQL->EscapeStringLen(inter->sql_handle, esc_name, msg.dest_name, strnlen(msg.dest_name, NAME_LENGTH));
- if ( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `account_id`, `char_id` FROM `%s` WHERE `name` = '%s'", char_db, esc_name) )
+ SQL->EscapeStringLen(inter->sql_handle, esc_name, msg->dest_name, strnlen(msg->dest_name, NAME_LENGTH));
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `account_id`, `char_id` FROM `%s` WHERE `name` = '%s'", char_db, esc_name)) {
Sql_ShowDebug(inter->sql_handle);
- else
- if ( SQL_SUCCESS == SQL->NextRow(inter->sql_handle) )
- {
+ } else if (SQL_SUCCESS == SQL->NextRow(inter->sql_handle)) {
char *data;
SQL->GetData(inter->sql_handle, 0, &data, NULL);
- if (atoi(data) != account_id)
- { // Cannot send mail to char in the same account
+ if (atoi(data) != account_id) {
+ // Cannot send mail to char in the same account
SQL->GetData(inter->sql_handle, 1, &data, NULL);
- msg.dest_id = atoi(data);
+ msg->dest_id = atoi(data);
}
}
SQL->FreeResult(inter->sql_handle);
- msg.status = MAIL_NEW;
+ msg->status = MAIL_NEW;
- if( msg.dest_id > 0 )
- msg.id = inter_mail->savemessage(&msg);
+ if (msg->dest_id > 0)
+ msg->id = inter_mail->savemessage(msg);
- mapif->mail_send(fd, &msg); // notify sender
- mapif->mail_new(&msg); // notify recipient
+ return true;
}
-void inter_mail_sendmail(int send_id, const char* send_name, int dest_id, const char* dest_name, const char* title, const char* body, int zeny, struct item *item)
+static void inter_mail_sendmail(int send_id, const char* send_name, int dest_id, const char *dest_name, const char *title, const char *body, int zeny, struct item *item)
{
struct mail_message msg;
nullpo_retv(send_name);
@@ -520,7 +405,7 @@ void inter_mail_sendmail(int send_id, const char* send_name, int dest_id, const
/*==========================================
* Packets From Map Server
*------------------------------------------*/
-int inter_mail_parse_frommap(int fd)
+static int inter_mail_parse_frommap(int fd)
{
switch(RFIFOW(fd,0))
{
@@ -536,12 +421,12 @@ int inter_mail_parse_frommap(int fd)
return 1;
}
-int inter_mail_sql_init(void)
+static int inter_mail_sql_init(void)
{
return 1;
}
-void inter_mail_sql_final(void)
+static void inter_mail_sql_final(void)
{
return;
}
@@ -558,4 +443,9 @@ void inter_mail_defaults(void)
inter_mail->sql_final = inter_mail_sql_final;
inter_mail->fromsql = inter_mail_fromsql;
inter_mail->loadmessage = inter_mail_loadmessage;
+ inter_mail->mark_read = inter_mail_mark_read;
+ inter_mail->get_attachment = inter_mail_get_attachment;
+ inter_mail->delete = inter_mail_delete;
+ inter_mail->return_message = inter_mail_return_message;
+ inter_mail->send = inter_mail_send;
}
diff --git a/src/char/int_mail.h b/src/char/int_mail.h
index 9ca5fdad6..95934d0a1 100644
--- a/src/char/int_mail.h
+++ b/src/char/int_mail.h
@@ -39,6 +39,11 @@ struct inter_mail_interface {
bool (*loadmessage) (int mail_id, struct mail_message* msg);
bool (*DeleteAttach) (int mail_id);
void (*sendmail) (int send_id, const char* send_name, int dest_id, const char* dest_name, const char* title, const char* body, int zeny, struct item *item);
+ bool (*mark_read) (int mail_id);
+ bool (*get_attachment) (int char_id, int mail_id, struct mail_message *msg);
+ bool (*delete) (int char_id, int mail_id);
+ bool (*return_message) (int char_id, int mail_id, int *new_mail);
+ bool (*send) (int account_id, struct mail_message *msg);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_mercenary.c b/src/char/int_mercenary.c
index bf1df5588..21bfb5538 100644
--- a/src/char/int_mercenary.c
+++ b/src/char/int_mercenary.c
@@ -38,10 +38,10 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_mercenary_interface inter_mercenary_s;
+static struct inter_mercenary_interface inter_mercenary_s;
struct inter_mercenary_interface *inter_mercenary;
-bool inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status)
+static bool inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status)
{
char* data;
@@ -70,7 +70,7 @@ bool inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status)
return true;
}
-bool inter_mercenary_owner_tosql(int char_id, struct mmo_charstatus *status)
+static bool inter_mercenary_owner_tosql(int char_id, struct mmo_charstatus *status)
{
nullpo_ret(status);
if( SQL_ERROR == SQL->Query(inter->sql_handle, "REPLACE INTO `%s` (`char_id`, `merc_id`, `arch_calls`, `arch_faith`, `spear_calls`, `spear_faith`, `sword_calls`, `sword_faith`) VALUES ('%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
@@ -83,7 +83,7 @@ bool inter_mercenary_owner_tosql(int char_id, struct mmo_charstatus *status)
return true;
}
-bool inter_mercenary_owner_delete(int char_id)
+static bool inter_mercenary_owner_delete(int char_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `char_id` = '%d'", mercenary_owner_db, char_id) )
Sql_ShowDebug(inter->sql_handle);
@@ -104,7 +104,7 @@ bool inter_mercenary_owner_delete(int char_id)
* @param[in,out] merc The new mercenary's data.
* @retval false in case of errors.
*/
-bool mapif_mercenary_create(struct s_mercenary *merc)
+static bool inter_mercenary_create(struct s_mercenary *merc)
{
nullpo_retr(false, merc);
Assert_retr(false, merc->mercenary_id == 0);
@@ -126,7 +126,7 @@ bool mapif_mercenary_create(struct s_mercenary *merc)
* @param merc The mercenary's data.
* @retval false in case of errors.
*/
-bool mapif_mercenary_save(const struct s_mercenary *merc)
+static bool inter_mercenary_save(const struct s_mercenary *merc)
{
nullpo_retr(false, merc);
Assert_retr(false, merc->mercenary_id > 0);
@@ -141,7 +141,7 @@ bool mapif_mercenary_save(const struct s_mercenary *merc)
return true;
}
-bool mapif_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc)
+static bool inter_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc)
{
char* data;
@@ -174,7 +174,7 @@ bool mapif_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc)
return true;
}
-bool mapif_mercenary_delete(int merc_id)
+static bool inter_mercenary_delete(int merc_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `mer_id` = '%d'", mercenary_db, merc_id) )
{
@@ -185,70 +185,12 @@ bool mapif_mercenary_delete(int merc_id)
return true;
}
-void mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char flag)
-{
- int size = sizeof(struct s_mercenary) + 5;
-
- nullpo_retv(merc);
- WFIFOHEAD(fd,size);
- WFIFOW(fd,0) = 0x3870;
- WFIFOW(fd,2) = size;
- WFIFOB(fd,4) = flag;
- memcpy(WFIFOP(fd,5),merc,sizeof(struct s_mercenary));
- WFIFOSET(fd,size);
-}
-
-void mapif_parse_mercenary_create(int fd, const struct s_mercenary *merc)
-{
- struct s_mercenary merc_;
- bool result;
-
- memcpy(&merc_, merc, sizeof(merc_));
-
- result = mapif->mercenary_create(&merc_);
- mapif->mercenary_send(fd, &merc_, result);
-}
-
-void mapif_parse_mercenary_load(int fd, int merc_id, int char_id)
-{
- struct s_mercenary merc;
- bool result = mapif->mercenary_load(merc_id, char_id, &merc);
- mapif->mercenary_send(fd, &merc, result);
-}
-
-void mapif_mercenary_deleted(int fd, unsigned char flag)
-{
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x3871;
- WFIFOB(fd,2) = flag;
- WFIFOSET(fd,3);
-}
-
-void mapif_parse_mercenary_delete(int fd, int merc_id)
-{
- bool result = mapif->mercenary_delete(merc_id);
- mapif->mercenary_deleted(fd, result);
-}
-
-void mapif_mercenary_saved(int fd, unsigned char flag)
-{
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x3872;
- WFIFOB(fd,2) = flag;
- WFIFOSET(fd,3);
-}
-
-void mapif_parse_mercenary_save(int fd, struct s_mercenary* merc)
-{
- bool result = mapif->mercenary_save(merc);
- mapif->mercenary_saved(fd, result);
-}
-
-int inter_mercenary_sql_init(void)
+static int inter_mercenary_sql_init(void)
{
return 0;
}
-void inter_mercenary_sql_final(void)
+
+static void inter_mercenary_sql_final(void)
{
return;
}
@@ -256,7 +198,7 @@ void inter_mercenary_sql_final(void)
/*==========================================
* Inter Packets
*------------------------------------------*/
-int inter_mercenary_parse_frommap(int fd)
+static int inter_mercenary_parse_frommap(int fd)
{
unsigned short cmd = RFIFOW(fd,0);
@@ -282,4 +224,9 @@ void inter_mercenary_defaults(void)
inter_mercenary->sql_init = inter_mercenary_sql_init;
inter_mercenary->sql_final = inter_mercenary_sql_final;
inter_mercenary->parse_frommap = inter_mercenary_parse_frommap;
+
+ inter_mercenary->create = inter_mercenary_create;
+ inter_mercenary->load = inter_mercenary_load;
+ inter_mercenary->save = inter_mercenary_save;
+ inter_mercenary->delete = inter_mercenary_delete;
}
diff --git a/src/char/int_mercenary.h b/src/char/int_mercenary.h
index 2b7c82dfa..6291bfcf6 100644
--- a/src/char/int_mercenary.h
+++ b/src/char/int_mercenary.h
@@ -22,6 +22,7 @@
#define CHAR_INT_MERCENARY_H
#include "common/hercules.h"
+#include "common/mmo.h"
struct mmo_charstatus;
@@ -35,6 +36,11 @@ struct inter_mercenary_interface {
int (*sql_init) (void);
void (*sql_final) (void);
int (*parse_frommap) (int fd);
+
+ bool (*create) (struct s_mercenary *merc);
+ bool (*save) (const struct s_mercenary *merc);
+ bool (*load) (int merc_id, int char_id, struct s_mercenary *merc);
+ bool (*delete) (int merc_id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_party.c b/src/char/int_party.c
index 144e6661c..8ee03ecc5 100644
--- a/src/char/int_party.c
+++ b/src/char/int_party.c
@@ -39,11 +39,12 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_party_interface inter_party_s;
+static struct inter_party_interface inter_party_s;
struct inter_party_interface *inter_party;
//Updates party's level range and unsets even share if broken.
-static int inter_party_check_lv(struct party_data *p) {
+static int inter_party_check_lv(struct party_data *p)
+{
int i;
unsigned int lv;
nullpo_ret(p);
@@ -121,7 +122,7 @@ static void inter_party_calc_state(struct party_data *p)
}
// Save party to mysql
-int inter_party_tosql(struct party *p, int flag, int index)
+static int inter_party_tosql(struct party *p, int flag, int index)
{
// 'party' ('party_id','name','exp','item','leader_id','leader_char')
char esc_name[NAME_LENGTH*2+1];// escaped party name
@@ -196,7 +197,7 @@ int inter_party_tosql(struct party *p, int flag, int index)
}
// Read party from mysql
-struct party_data *inter_party_fromsql(int party_id)
+static struct party_data *inter_party_fromsql(int party_id)
{
int leader_id = 0;
int leader_char = 0;
@@ -268,7 +269,7 @@ struct party_data *inter_party_fromsql(int party_id)
return p;
}
-int inter_party_sql_init(void)
+static int inter_party_sql_init(void)
{
//memory alloc
inter_party->db = idb_alloc(DB_OPT_RELEASE_DATA);
@@ -287,7 +288,7 @@ int inter_party_sql_init(void)
return 0;
}
-void inter_party_sql_final(void)
+static void inter_party_sql_final(void)
{
inter_party->db->destroy(inter_party->db, NULL);
aFree(inter_party->pt);
@@ -295,7 +296,7 @@ void inter_party_sql_final(void)
}
// Search for the party according to its name
-struct party_data* inter_party_search_partyname(const char *const str)
+static struct party_data *inter_party_search_partyname(const char *const str)
{
char esc_name[NAME_LENGTH*2+1];
char* data;
@@ -314,14 +315,14 @@ struct party_data* inter_party_search_partyname(const char *const str)
}
// Returns whether this party can keep having exp share or not.
-int inter_party_check_exp_share(struct party_data *const p)
+static int inter_party_check_exp_share(struct party_data *const p)
{
nullpo_ret(p);
return (p->party.count < 2 || p->max_lv - p->min_lv <= party_share_level);
}
// Is there any member in the party?
-int inter_party_check_empty(struct party_data *p)
+static int inter_party_check_empty(struct party_data *p)
{
int i;
if (p==NULL||p->party.party_id==0) return 1;
@@ -333,161 +334,16 @@ int inter_party_check_empty(struct party_data *p)
return 1;
}
-//-------------------------------------------------------------------
-// Communication to the map server
-
-
-// Create a party whether or not
-int mapif_party_created(int fd, int account_id, int char_id, struct party *p)
-{
- WFIFOHEAD(fd, 39);
- WFIFOW(fd,0)=0x3820;
- WFIFOL(fd,2)=account_id;
- WFIFOL(fd,6)=char_id;
- if(p!=NULL){
- WFIFOB(fd,10)=0;
- WFIFOL(fd,11)=p->party_id;
- memcpy(WFIFOP(fd,15),p->name,NAME_LENGTH);
- ShowInfo("int_party: Party created (%d - %s)\n",p->party_id,p->name);
- }else{
- WFIFOB(fd,10)=1;
- WFIFOL(fd,11)=0;
- memset(WFIFOP(fd,15),0,NAME_LENGTH);
- }
- WFIFOSET(fd,39);
-
- return 0;
-}
-
-//Party information not found
-void mapif_party_noinfo(int fd, int party_id, int char_id)
-{
- WFIFOHEAD(fd, 12);
- WFIFOW(fd,0) = 0x3821;
- WFIFOW(fd,2) = 12;
- WFIFOL(fd,4) = char_id;
- WFIFOL(fd,8) = party_id;
- WFIFOSET(fd,12);
- ShowWarning("int_party: info not found (party_id=%d char_id=%d)\n", party_id, char_id);
-}
-
-//Digest party information
-void mapif_party_info(int fd, struct party* p, int char_id)
-{
- unsigned char buf[8 + sizeof(struct party)];
- nullpo_retv(p);
- WBUFW(buf,0) = 0x3821;
- WBUFW(buf,2) = 8 + sizeof(struct party);
- WBUFL(buf,4) = char_id;
- memcpy(WBUFP(buf,8), p, sizeof(struct party));
-
- if(fd<0)
- mapif->sendall(buf,WBUFW(buf,2));
- else
- mapif->send(fd,buf,WBUFW(buf,2));
-}
-
-//Whether or not additional party members
-int mapif_party_memberadded(int fd, int party_id, int account_id, int char_id, int flag) {
- WFIFOHEAD(fd, 15);
- WFIFOW(fd,0) = 0x3822;
- WFIFOL(fd,2) = party_id;
- WFIFOL(fd,6) = account_id;
- WFIFOL(fd,10) = char_id;
- WFIFOB(fd,14) = flag;
- WFIFOSET(fd,15);
-
- return 0;
-}
-
-// Party setting change notification
-int mapif_party_optionchanged(int fd, struct party *p, int account_id, int flag)
-{
- unsigned char buf[16];
- nullpo_ret(p);
- WBUFW(buf,0)=0x3823;
- WBUFL(buf,2)=p->party_id;
- WBUFL(buf,6)=account_id;
- WBUFW(buf,10)=p->exp;
- WBUFW(buf,12)=p->item;
- WBUFB(buf,14)=flag;
- if(flag==0)
- mapif->sendall(buf,15);
- else
- mapif->send(fd,buf,15);
- return 0;
-}
-
-//Withdrawal notification party
-int mapif_party_withdraw(int party_id,int account_id, int char_id) {
- unsigned char buf[16];
-
- WBUFW(buf,0) = 0x3824;
- WBUFL(buf,2) = party_id;
- WBUFL(buf,6) = account_id;
- WBUFL(buf,10) = char_id;
- mapif->sendall(buf, 14);
- return 0;
-}
-
-//Party map update notification
-int mapif_party_membermoved(struct party *p, int idx)
-{
- unsigned char buf[20];
-
- nullpo_ret(p);
- Assert_ret(idx >= 0 && idx < MAX_PARTY);
- WBUFW(buf,0) = 0x3825;
- WBUFL(buf,2) = p->party_id;
- WBUFL(buf,6) = p->member[idx].account_id;
- WBUFL(buf,10) = p->member[idx].char_id;
- WBUFW(buf,14) = p->member[idx].map;
- WBUFB(buf,16) = p->member[idx].online;
- WBUFW(buf,17) = p->member[idx].lv;
- mapif->sendall(buf, 19);
- return 0;
-}
-
-//Dissolution party notification
-int mapif_party_broken(int party_id, int flag)
-{
- unsigned char buf[16];
- WBUFW(buf,0)=0x3826;
- WBUFL(buf,2)=party_id;
- WBUFB(buf,6)=flag;
- mapif->sendall(buf,7);
- //printf("int_party: broken %d\n",party_id);
- return 0;
-}
-
-//Remarks in the party
-int mapif_party_message(int party_id, int account_id, const char *mes, int len, int sfd)
-{
- unsigned char buf[512];
- nullpo_ret(mes);
- WBUFW(buf,0)=0x3827;
- WBUFW(buf,2)=len+12;
- WBUFL(buf,4)=party_id;
- WBUFL(buf,8)=account_id;
- memcpy(WBUFP(buf,12),mes,len);
- mapif->sendallwos(sfd, buf,len+12);
- return 0;
-}
-
-//-------------------------------------------------------------------
-// Communication from the map server
-
-
// Create Party
-int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const struct party_member *leader)
+static struct party_data *inter_party_create(const char *name, int item, int item2, const struct party_member *leader)
{
struct party_data *p;
int i;
nullpo_ret(name);
nullpo_ret(leader);
- if (!*name || (p = inter_party->search_partyname(name)) != NULL) {
- mapif->party_created(fd,leader->account_id,leader->char_id,NULL);
- return 0;
+
+ if (!*name || inter_party->search_partyname(name) != NULL) {
+ return NULL;
}
// Check Authorized letters/symbols in the name of the character
if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorized
@@ -497,18 +353,16 @@ int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const
char *newname = aStrndup(name, NAME_LENGTH-1);
normalize_name(newname,"\"");
trim(newname);
- mapif->parse_CreateParty(fd, newname, item, item2, leader);
+ p = inter_party->create(newname, item, item2, leader);
aFree(newname);
- return 0;
+ return p;
}
- mapif->party_created(fd,leader->account_id,leader->char_id,NULL);
- return 0;
+ return NULL;
}
} else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden
for (i = 0; i < NAME_LENGTH && name[i]; i++)
if (strchr(char_name_letters, name[i]) != NULL) {
- mapif->party_created(fd,leader->account_id,leader->char_id,NULL);
- return 0;
+ return NULL;
}
}
@@ -523,34 +377,20 @@ int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const
p->party.member[0].online=1;
p->party.party_id=-1;//New party.
- if (inter_party->tosql(&p->party,PS_CREATE|PS_ADDMEMBER,0)) {
- //Add party to db
- inter_party->calc_state(p);
- idb_put(inter_party->db, p->party.party_id, p);
- mapif->party_info(fd, &p->party, 0);
- mapif->party_created(fd,leader->account_id,leader->char_id,&p->party);
- } else { //Failed to create party.
+ if (!inter_party->tosql(&p->party, PS_CREATE | PS_ADDMEMBER, 0)) {
aFree(p);
- mapif->party_created(fd,leader->account_id,leader->char_id,NULL);
+ return NULL;
}
- return 0;
-}
-
-// Party information request
-void mapif_parse_PartyInfo(int fd, int party_id, int char_id)
-{
- struct party_data *p;
- p = inter_party->fromsql(party_id);
+ //Add party to db
+ inter_party->calc_state(p);
+ idb_put(inter_party->db, p->party.party_id, p);
- if (p)
- mapif->party_info(fd, &p->party, char_id);
- else
- mapif->party_noinfo(fd, party_id, char_id);
+ return p;
}
// Add a player to party request
-int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *member)
+static bool inter_party_add_member(int party_id, const struct party_member *member)
{
struct party_data *p;
int i;
@@ -558,15 +398,13 @@ int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *
nullpo_ret(member);
p = inter_party->fromsql(party_id);
if( p == NULL || p->size == MAX_PARTY ) {
- mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 1);
- return 0;
+ return false;
}
ARR_FIND( 0, MAX_PARTY, i, p->party.member[i].account_id == 0 );
- if( i == MAX_PARTY )
- {// Party full
- mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 1);
- return 0;
+ if (i == MAX_PARTY) {
+ // Party full
+ return false;
}
memcpy(&p->party.member[i], member, sizeof(struct party_member));
@@ -582,21 +420,20 @@ int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *
}
mapif->party_info(-1, &p->party, 0);
- mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 0);
inter_party->tosql(&p->party, PS_ADDMEMBER, i);
- return 0;
+ return true;
}
//Party setting change request
-int mapif_parse_PartyChangeOption(int fd,int party_id,int account_id,int exp,int item)
+static bool inter_party_change_option(int party_id, int account_id, int exp, int item, int map_fd)
{
struct party_data *p;
int flag = 0;
p = inter_party->fromsql(party_id);
if(!p)
- return 0;
+ return false;
p->party.exp=exp;
if( exp && !inter_party->check_exp_share(p) ){
@@ -604,13 +441,13 @@ int mapif_parse_PartyChangeOption(int fd,int party_id,int account_id,int exp,int
p->party.exp=0;
}
p->party.item = item&0x3; //Filter out invalid values.
- mapif->party_optionchanged(fd,&p->party,account_id,flag);
+ mapif->party_optionchanged(map_fd, &p->party, account_id, flag);
inter_party->tosql(&p->party, PS_BASIC, 0);
- return 0;
+ return true;
}
//Request leave party
-int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
+static bool inter_party_leave(int party_id, int account_id, int char_id)
{
struct party_data *p;
int i,j;
@@ -620,7 +457,7 @@ int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
{// Party does not exists?
if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `party_id`='0' WHERE `party_id`='%d'", char_db, party_id) )
Sql_ShowDebug(inter->sql_handle);
- return 0;
+ return false;
}
for (i = 0; i < MAX_PARTY; i++) {
@@ -630,7 +467,7 @@ int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
}
}
if (i >= MAX_PARTY)
- return 0; //Member not found?
+ return false; //Member not found?
mapif->party_withdraw(party_id, account_id, char_id);
@@ -648,23 +485,25 @@ int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
inter_party->tosql(&p->party, PS_DELMEMBER, i);
mapif->party_info(-1, &p->party, 0);
}
- return 0;
+ return true;
}
+
// When member goes to other map or levels up.
-int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv)
+static bool inter_party_change_map(int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv)
{
struct party_data *p;
int i;
p = inter_party->fromsql(party_id);
if (p == NULL)
- return 0;
+ return false;
for(i = 0; i < MAX_PARTY &&
(p->party.member[i].account_id != account_id ||
p->party.member[i].char_id != char_id); i++);
- if (i == MAX_PARTY) return 0;
+ if (i == MAX_PARTY)
+ return false;
if (p->party.member[i].online != online)
{
@@ -704,30 +543,24 @@ int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id
p->party.member[i].map = map;
mapif->party_membermoved(&p->party, i);
}
- return 0;
+ return true;
}
//Request party dissolution
-int mapif_parse_BreakParty(int fd, int party_id)
+static bool inter_party_disband(int party_id)
{
struct party_data *p;
p = inter_party->fromsql(party_id);
if(!p)
- return 0;
+ return false;
inter_party->tosql(&p->party,PS_BREAK,0);
mapif->party_broken(party_id, 1);
return 0;
}
-//Party sending the message
-int mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char *mes, int len)
-{
- return mapif->party_message(party_id,account_id,mes,len, fd);
-}
-
-int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char_id)
+static bool inter_party_change_leader(int party_id, int account_id, int char_id)
{
struct party_data *p;
int i;
@@ -735,7 +568,7 @@ int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char
p = inter_party->fromsql(party_id);
if(!p)
- return 0;
+ return false;
for (i = 0; i < MAX_PARTY; i++) {
if(p->party.member[i].leader)
@@ -745,10 +578,9 @@ int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char
inter_party->tosql(&p->party,PS_LEADER, i);
}
}
- return 1;
+ return true;
}
-
// Communication from the map server
//-Analysis that only one packet
// Data packet length is set to inter.c that you
@@ -756,7 +588,7 @@ int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char
// Return :
// 0 : error
// 1 : ok
-int inter_party_parse_frommap(int fd)
+static int inter_party_parse_frommap(int fd)
{
RFIFOHEAD(fd);
switch(RFIFOW(fd,0)) {
@@ -775,13 +607,7 @@ int inter_party_parse_frommap(int fd)
return 1;
}
-//Leave request from the server (for delete character)
-int inter_party_leave(int party_id,int account_id, int char_id)
-{
- return mapif->parse_PartyLeave(-1,party_id,account_id, char_id);
-}
-
-int inter_party_CharOnline(int char_id, int party_id)
+static int inter_party_CharOnline(int char_id, int party_id)
{
struct party_data* p;
int i;
@@ -828,7 +654,8 @@ int inter_party_CharOnline(int char_id, int party_id)
return 1;
}
-int inter_party_CharOffline(int char_id, int party_id) {
+static int inter_party_CharOffline(int char_id, int party_id)
+{
struct party_data *p=NULL;
int i;
@@ -895,4 +722,11 @@ void inter_party_defaults(void)
inter_party->leave = inter_party_leave;
inter_party->CharOnline = inter_party_CharOnline;
inter_party->CharOffline = inter_party_CharOffline;
+
+ inter_party->create = inter_party_create;
+ inter_party->add_member = inter_party_add_member;
+ inter_party->change_option = inter_party_change_option;
+ inter_party->change_map = inter_party_change_map;
+ inter_party->disband = inter_party_disband;
+ inter_party->change_leader = inter_party_change_leader;
}
diff --git a/src/char/int_party.h b/src/char/int_party.h
index 0e1215eea..b9a888cca 100644
--- a/src/char/int_party.h
+++ b/src/char/int_party.h
@@ -60,9 +60,15 @@ struct inter_party_interface {
int (*check_exp_share) (struct party_data *p);
int (*check_empty) (struct party_data *p);
int (*parse_frommap) (int fd);
- int (*leave) (int party_id,int account_id, int char_id);
+ bool (*leave) (int party_id,int account_id, int char_id);
int (*CharOnline) (int char_id, int party_id);
int (*CharOffline) (int char_id, int party_id);
+ struct party_data *(*create) (const char *name, int item, int item2, const struct party_member *leader);
+ bool (*add_member) (int party_id, const struct party_member *member);
+ bool (*change_option) (int party_id, int account_id, int exp, int item, int map_fd);
+ bool (*change_map) (int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
+ bool (*disband) (int party_id);
+ bool (*change_leader) (int party_id, int account_id, int char_id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_pet.c b/src/char/int_pet.c
index f270f205d..8f87becff 100644
--- a/src/char/int_pet.c
+++ b/src/char/int_pet.c
@@ -37,7 +37,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_pet_interface inter_pet_s;
+static struct inter_pet_interface inter_pet_s;
struct inter_pet_interface *inter_pet;
/**
@@ -51,7 +51,7 @@ struct inter_pet_interface *inter_pet;
* @return The ID of the saved pet.
* @retval 0 in case of errors.
*/
-int inter_pet_tosql(const struct s_pet *p)
+static int inter_pet_tosql(const struct s_pet *p)
{
//`pet` (`pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`)
char esc_name[NAME_LENGTH*2+1];// escaped pet name
@@ -91,7 +91,7 @@ int inter_pet_tosql(const struct s_pet *p)
return pet_id;
}
-int inter_pet_fromsql(int pet_id, struct s_pet* p)
+static int inter_pet_fromsql(int pet_id, struct s_pet *p)
{
char* data;
size_t len;
@@ -138,17 +138,21 @@ int inter_pet_fromsql(int pet_id, struct s_pet* p)
}
//----------------------------------------------
-int inter_pet_sql_init(void) {
+static int inter_pet_sql_init(void)
+{
//memory alloc
inter_pet->pt = (struct s_pet*)aCalloc(sizeof(struct s_pet), 1);
return 0;
}
-void inter_pet_sql_final(void) {
+
+static void inter_pet_sql_final(void)
+{
if (inter_pet->pt) aFree(inter_pet->pt);
return;
}
//----------------------------------
-int inter_pet_delete(int pet_id) {
+static int inter_pet_delete(int pet_id)
+{
ShowInfo("delete pet request: %d...\n",pet_id);
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `pet_id`='%d'", pet_db, pet_id) )
@@ -156,74 +160,8 @@ int inter_pet_delete(int pet_id) {
return 0;
}
//------------------------------------------------------
-int mapif_pet_created(int fd, int account_id, struct s_pet *p)
-{
- WFIFOHEAD(fd, 12);
- WFIFOW(fd, 0) = 0x3880;
- WFIFOL(fd, 2) = account_id;
- if(p!=NULL){
- WFIFOW(fd, 6) = p->class_;
- WFIFOL(fd, 8) = 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;
- }
- WFIFOSET(fd, 12);
-
- return 0;
-}
-
-int mapif_pet_info(int fd, int account_id, struct s_pet *p)
-{
- nullpo_ret(p);
- WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
- WFIFOW(fd, 0) =0x3881;
- WFIFOW(fd, 2) =sizeof(struct s_pet) + 9;
- WFIFOL(fd, 4) =account_id;
- WFIFOB(fd, 8)=0;
- memcpy(WFIFOP(fd, 9), p, sizeof(struct s_pet));
- WFIFOSET(fd, WFIFOW(fd, 2));
-
- return 0;
-}
-
-int mapif_pet_noinfo(int fd, int account_id)
-{
- WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
- WFIFOW(fd, 0) =0x3881;
- WFIFOW(fd, 2) =sizeof(struct s_pet) + 9;
- WFIFOL(fd, 4) =account_id;
- WFIFOB(fd, 8)=1;
- memset(WFIFOP(fd, 9), 0, sizeof(struct s_pet));
- WFIFOSET(fd, WFIFOW(fd, 2));
-
- return 0;
-}
-
-int mapif_save_pet_ack(int fd, int account_id, int flag)
-{
- WFIFOHEAD(fd, 7);
- WFIFOW(fd, 0) =0x3882;
- WFIFOL(fd, 2) =account_id;
- WFIFOB(fd, 6) =flag;
- WFIFOSET(fd, 7);
-
- return 0;
-}
-
-int mapif_delete_pet_ack(int fd, int flag)
-{
- WFIFOHEAD(fd, 3);
- WFIFOW(fd, 0) =0x3883;
- WFIFOB(fd, 2) =flag;
- WFIFOSET(fd, 3);
-
- return 0;
-}
-
-int mapif_create_pet(int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id,
- short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name)
+static struct s_pet *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)
{
nullpo_ret(pet_name);
memset(inter_pet->pt, 0, sizeof(struct s_pet));
@@ -254,90 +192,32 @@ int mapif_create_pet(int fd, int account_id, int char_id, short pet_class, short
inter_pet->pt->pet_id = 0; //Signal NEW pet.
if ((inter_pet->pt->pet_id = inter_pet->tosql(inter_pet->pt)) != 0)
- mapif->pet_created(fd, account_id, inter_pet->pt);
+ return inter_pet->pt;
else //Failed...
- mapif->pet_created(fd, account_id, NULL);
-
- return 0;
+ return NULL;
}
-int mapif_load_pet(int fd, int account_id, int char_id, int pet_id)
+static struct s_pet *inter_pet_load(int account_id, int char_id, int pet_id)
{
memset(inter_pet->pt, 0, sizeof(struct s_pet));
inter_pet->fromsql(pet_id, inter_pet->pt);
if(inter_pet->pt!=NULL) {
- if(inter_pet->pt->incubate == 1) {
+ if (inter_pet->pt->incubate == 1) {
inter_pet->pt->account_id = inter_pet->pt->char_id = 0;
- mapif->pet_info(fd, account_id, inter_pet->pt);
+ return inter_pet->pt;
+ } else if (account_id == inter_pet->pt->account_id && char_id == inter_pet->pt->char_id) {
+ return inter_pet->pt;
+ } else {
+ return NULL;
}
- else if(account_id == inter_pet->pt->account_id && char_id == inter_pet->pt->char_id)
- mapif->pet_info(fd, account_id, inter_pet->pt);
- else
- mapif->pet_noinfo(fd, account_id);
}
- else
- mapif->pet_noinfo(fd, account_id);
- return 0;
+ return NULL;
}
-int mapif_save_pet(int fd, int account_id, const struct s_pet *data)
-{
- //here process pet save request.
- int len;
- nullpo_ret(data);
- RFIFOHEAD(fd);
- len=RFIFOW(fd, 2);
- if (sizeof(struct s_pet) != len-8) {
- ShowError("inter pet: data size mismatch: %d != %"PRIuS"\n", len-8, sizeof(struct s_pet));
- return 0;
- }
-
- inter_pet->tosql(data);
- mapif->save_pet_ack(fd, account_id, 0);
-
- return 0;
-}
-
-int mapif_delete_pet(int fd, int pet_id)
-{
- mapif->delete_pet_ack(fd, inter_pet->delete_(pet_id));
-
- return 0;
-}
-
-int mapif_parse_CreatePet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->create_pet(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOW(fd, 14), RFIFOW(fd, 16), RFIFOW(fd, 18),
- RFIFOW(fd, 20), RFIFOB(fd, 22), RFIFOB(fd, 23), RFIFOP(fd, 24));
- return 0;
-}
-
-int mapif_parse_LoadPet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->load_pet(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOL(fd, 10));
- return 0;
-}
-
-int mapif_parse_SavePet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->save_pet(fd, RFIFOL(fd, 4), RFIFOP(fd, 8));
- return 0;
-}
-
-int mapif_parse_DeletePet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->delete_pet(fd, RFIFOL(fd, 2));
- return 0;
-}
-
-int inter_pet_parse_frommap(int fd)
+static int inter_pet_parse_frommap(int fd)
{
RFIFOHEAD(fd);
switch(RFIFOW(fd, 0)){
@@ -363,4 +243,7 @@ void inter_pet_defaults(void)
inter_pet->sql_final = inter_pet_sql_final;
inter_pet->delete_ = inter_pet_delete;
inter_pet->parse_frommap = inter_pet_parse_frommap;
+
+ inter_pet->create = inter_pet_create;
+ inter_pet->load = inter_pet_load;
}
diff --git a/src/char/int_pet.h b/src/char/int_pet.h
index ab14a6580..104771735 100644
--- a/src/char/int_pet.h
+++ b/src/char/int_pet.h
@@ -36,6 +36,10 @@ struct inter_pet_interface {
void (*sql_final) (void);
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,
+ 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);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_quest.c b/src/char/int_quest.c
index f967e5cfb..0fa7771cb 100644
--- a/src/char/int_quest.c
+++ b/src/char/int_quest.c
@@ -37,7 +37,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_quest_interface inter_quest_s;
+static struct inter_quest_interface inter_quest_s;
struct inter_quest_interface *inter_quest;
/**
@@ -48,7 +48,7 @@ struct inter_quest_interface *inter_quest;
* @return Array of found entries. It has *count entries, and it is care of the
* caller to aFree() it afterwards.
*/
-struct quest *mapif_quests_fromsql(int char_id, int *count)
+static struct quest *inter_quest_fromsql(int char_id, int *count)
{
struct quest *questlog = NULL;
struct quest tmp_quest;
@@ -129,7 +129,7 @@ struct quest *mapif_quests_fromsql(int char_id, int *count)
* @param quest_id Quest ID
* @return false in case of errors, true otherwise
*/
-bool mapif_quest_delete(int char_id, int quest_id)
+static bool inter_quest_delete(int char_id, int quest_id)
{
if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `quest_id` = '%d' AND `char_id` = '%d'", quest_db, quest_id, char_id)) {
Sql_ShowDebug(inter->sql_handle);
@@ -146,7 +146,7 @@ bool mapif_quest_delete(int char_id, int quest_id)
* @param qd Quest data
* @return false in case of errors, true otherwise
*/
-bool mapif_quest_add(int char_id, struct quest qd)
+static bool inter_quest_add(int char_id, struct quest qd)
{
StringBuf buf;
int i;
@@ -178,7 +178,7 @@ bool mapif_quest_add(int char_id, struct quest qd)
* @param qd Quest data
* @return false in case of errors, true otherwise
*/
-bool mapif_quest_update(int char_id, struct quest qd)
+static bool inter_quest_update(int char_id, struct quest qd)
{
StringBuf buf;
int i;
@@ -200,34 +200,13 @@ bool mapif_quest_update(int char_id, struct quest qd)
return true;
}
-void mapif_quest_save_ack(int fd, int char_id, bool success)
+static bool inter_quest_save(int char_id, const struct quest *new_qd, int new_n)
{
- WFIFOHEAD(fd,7);
- WFIFOW(fd,0) = 0x3861;
- WFIFOL(fd,2) = char_id;
- WFIFOB(fd,6) = success?1:0;
- WFIFOSET(fd,7);
-}
-
-/**
- * Handles the save request from mapserver for a character's questlog.
- *
- * Received quests are saved, and an ack is sent back to the map server.
- *
- * @see inter_parse_frommap
- */
-int mapif_parse_quest_save(int fd)
-{
- int i, j, k, old_n, new_n = (RFIFOW(fd,2)-8)/sizeof(struct quest);
- int char_id = RFIFOL(fd,4);
+ int i, j, k, old_n;
struct quest *old_qd = NULL;
- const struct quest *new_qd = NULL;
bool success = true;
- if (new_n > 0)
- new_qd = RFIFOP(fd,8);
-
- old_qd = mapif->quests_fromsql(char_id, &old_n);
+ old_qd = inter_quest->fromsql(char_id, &old_n);
for (i = 0; i < new_n; i++) {
ARR_FIND( 0, old_n, j, new_qd[i].quest_id == old_qd[j].quest_id );
@@ -237,7 +216,7 @@ int mapif_parse_quest_save(int fd)
// Only states and counts are changeable.
ARR_FIND( 0, MAX_QUEST_OBJECTIVES, k, new_qd[i].count[k] != old_qd[j].count[k] );
if (k != MAX_QUEST_OBJECTIVES || new_qd[i].state != old_qd[j].state)
- success &= mapif->quest_update(char_id, new_qd[i]);
+ success &= inter_quest->update(char_id, new_qd[i]);
if (j < (--old_n)) {
// Compact array
@@ -246,59 +225,17 @@ int mapif_parse_quest_save(int fd)
}
} else {
// Add new quests
- success &= mapif->quest_add(char_id, new_qd[i]);
+ success &= inter_quest->add(char_id, new_qd[i]);
}
}
for (i = 0; i < old_n; i++) // Quests not in new_qd but in old_qd are to be erased.
- success &= mapif->quest_delete(char_id, old_qd[i].quest_id);
+ success &= inter_quest->delete(char_id, old_qd[i].quest_id);
if (old_qd)
aFree(old_qd);
- // Send ack
- mapif->quest_save_ack(fd, char_id, success);
-
- return 0;
-}
-
-void mapif_send_quests(int fd, int char_id, struct quest *tmp_questlog, int num_quests)
-{
- WFIFOHEAD(fd,num_quests*sizeof(struct quest)+8);
- WFIFOW(fd,0) = 0x3860;
- WFIFOW(fd,2) = num_quests*sizeof(struct quest)+8;
- WFIFOL(fd,4) = char_id;
-
- if (num_quests > 0) {
- nullpo_retv(tmp_questlog);
- memcpy(WFIFOP(fd,8), tmp_questlog, sizeof(struct quest)*num_quests);
- }
-
- WFIFOSET(fd,num_quests*sizeof(struct quest)+8);
-}
-
-/**
- * Sends questlog to the map server
- *
- * Note: Completed quests (state == Q_COMPLETE) are guaranteed to be sent last
- * and the map server relies on this behavior (once the first Q_COMPLETE quest,
- * all of them are considered to be Q_COMPLETE)
- *
- * @see inter_parse_frommap
- */
-int mapif_parse_quest_load(int fd)
-{
- int char_id = RFIFOL(fd,2);
- struct quest *tmp_questlog = NULL;
- int num_quests;
-
- tmp_questlog = mapif->quests_fromsql(char_id, &num_quests);
- mapif->send_quests(fd, char_id, tmp_questlog, num_quests);
-
- if (tmp_questlog)
- aFree(tmp_questlog);
-
- return 0;
+ return success;
}
/**
@@ -306,7 +243,7 @@ int mapif_parse_quest_load(int fd)
*
* @see inter_parse_frommap
*/
-int inter_quest_parse_frommap(int fd)
+static int inter_quest_parse_frommap(int fd)
{
switch(RFIFOW(fd,0)) {
case 0x3060: mapif->parse_quest_load(fd); break;
@@ -322,4 +259,9 @@ void inter_quest_defaults(void)
inter_quest = &inter_quest_s;
inter_quest->parse_frommap = inter_quest_parse_frommap;
+ inter_quest->fromsql = inter_quest_fromsql;
+ inter_quest->delete = inter_quest_delete;
+ inter_quest->add = inter_quest_add;
+ inter_quest->update = inter_quest_update;
+ inter_quest->save = inter_quest_save;
}
diff --git a/src/char/int_quest.h b/src/char/int_quest.h
index 6f34645bf..e71afc561 100644
--- a/src/char/int_quest.h
+++ b/src/char/int_quest.h
@@ -28,6 +28,12 @@
**/
struct inter_quest_interface {
int (*parse_frommap) (int fd);
+
+ struct quest *(*fromsql) (int char_id, int *count);
+ bool (*delete) (int char_id, int quest_id);
+ bool (*add) (int char_id, struct quest qd);
+ bool (*update) (int char_id, struct quest qd);
+ bool (*save) (int char_id, const struct quest *new_qd, int new_n);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_rodex.c b/src/char/int_rodex.c
index 0dab66f61..18c277574 100644
--- a/src/char/int_rodex.c
+++ b/src/char/int_rodex.c
@@ -37,7 +37,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_rodex_interface inter_rodex_s;
+static struct inter_rodex_interface inter_rodex_s;
struct inter_rodex_interface *inter_rodex;
// Loads new mails of this char_id/account_id
@@ -164,7 +164,7 @@ static int inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64
if (msg.type & MAIL_TYPE_ITEM) {
if (SQL_ERROR == SQL->StmtExecute(stmt_items)
- || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 0, SQLDT_SHORT, &it.nameid, sizeof it.nameid, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 0, SQLDT_INT, &it.nameid, sizeof it.nameid, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt_items, 1, SQLDT_SHORT, &it.amount, sizeof it.amount, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt_items, 2, SQLDT_UINT, &it.equip, sizeof it.equip, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt_items, 3, SQLDT_CHAR, &it.identify, sizeof it.identify, NULL, NULL)
@@ -177,7 +177,7 @@ static int inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64
SqlStmt_ShowDebug(stmt_items);
}
for (i = 0; i < MAX_SLOTS; i++) {
- if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9 + i, SQLDT_SHORT, &it.card[i], sizeof it.card[i], NULL, NULL))
+ if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9 + i, SQLDT_INT, &it.card[i], sizeof it.card[i], NULL, NULL))
SqlStmt_ShowDebug(stmt_items);
}
for (i = 0; i < MAX_ITEM_OPTIONS; i++) {
@@ -298,7 +298,7 @@ static bool inter_rodex_checkname(const char *name, int *target_char_id, short *
/// Stores a single message in the database.
/// Returns the message's ID if successful (or 0 if it fails).
-int64 inter_rodex_savemessage(struct rodex_message* msg)
+static int64 inter_rodex_savemessage(struct rodex_message *msg)
{
char sender_name[NAME_LENGTH * 2 + 1];
char receiver_name[NAME_LENGTH * 2 + 1];
@@ -347,110 +347,12 @@ int64 inter_rodex_savemessage(struct rodex_message* msg)
}
/*==========================================
- * Inbox Request
- *------------------------------------------*/
-void mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails)
-{
- int per_packet = (UINT16_MAX - 24) / sizeof(struct rodex_message);
- int sent = 0;
- bool is_first = true;
- nullpo_retv(mails);
- Assert_retv(char_id > 0);
- Assert_retv(count >= 0);
- Assert_retv(mail_id >= 0);
-
- do {
- int i = 24, j, size, limit;
- int to_send = count - sent;
- bool is_last = true;
-
- if (to_send <= per_packet) {
- size = to_send * sizeof(struct rodex_message) + 24;
- limit = to_send;
- is_last = true;
- } else {
- limit = min(to_send, per_packet);
- if (limit != to_send) {
- is_last = false;
- }
- size = limit * sizeof(struct rodex_message) + 24;
- }
-
- WFIFOHEAD(fd, size);
- WFIFOW(fd, 0) = 0x3895;
- WFIFOW(fd, 2) = size;
- WFIFOL(fd, 4) = char_id;
- WFIFOB(fd, 8) = opentype;
- WFIFOB(fd, 9) = flag;
- WFIFOB(fd, 10) = is_last;
- WFIFOB(fd, 11) = is_first;
- WFIFOL(fd, 12) = limit;
- WFIFOQ(fd, 16) = mail_id;
- for (j = 0; j < limit; ++j, ++sent, i += sizeof(struct rodex_message)) {
- memcpy(WFIFOP(fd, i), &VECTOR_INDEX(*mails, sent), sizeof(struct rodex_message));
- }
- WFIFOSET(fd, size);
-
- is_first = false;
- } while (sent < count);
-}
-
-void mapif_parse_rodex_requestinbox(int fd)
-{
- int count;
- int char_id = RFIFOL(fd,2);
- int account_id = RFIFOL(fd, 6);
- int8 flag = RFIFOB(fd, 10);
- int8 opentype = RFIFOB(fd, 11);
- int64 mail_id = RFIFOQ(fd, 12);
- struct rodex_maillist mails = { 0 };
-
- VECTOR_INIT(mails);
- if (flag == 0)
- count = inter_rodex->fromsql(char_id, account_id, opentype, 0, &mails);
- else
- count = inter_rodex->fromsql(char_id, account_id, opentype, mail_id, &mails);
- mapif->rodex_sendinbox(fd, char_id, opentype, flag, count, mail_id, &mails);
- VECTOR_CLEAR(mails);
-}
-
-/*==========================================
-* Checks if there are new mails
-*------------------------------------------*/
-void mapif_rodex_sendhasnew(int fd, int char_id, bool has_new)
-{
- Assert_retv(char_id > 0);
-
- WFIFOHEAD(fd, 7);
- WFIFOW(fd, 0) = 0x3896;
- WFIFOL(fd, 2) = char_id;
- WFIFOB(fd, 6) = has_new;
- WFIFOSET(fd, 7);
-}
-
-void mapif_parse_rodex_checkhasnew(int fd)
-{
- int char_id = RFIFOL(fd, 2);
- int account_id = RFIFOL(fd, 6);
- bool has_new;
-
- Assert_retv(account_id >= START_ACCOUNT_NUM && account_id <= END_ACCOUNT_NUM);
- Assert_retv(char_id >= START_CHAR_NUM);
-
- has_new = inter_rodex->hasnew(char_id, account_id);
- mapif->rodex_sendhasnew(fd, char_id, has_new);
-}
-
-/*==========================================
* Update/Delete mail
*------------------------------------------*/
-void mapif_parse_rodex_updatemail(int fd)
+static bool inter_rodex_updatemail(int64 mail_id, int8 flag)
{
- int64 mail_id = RFIFOL(fd, 2);
- int8 flag = RFIFOB(fd, 10);
-
- Assert_retv(mail_id > 0);
- Assert_retv(flag >= 0 && flag <= 4);
+ Assert_retr(false, mail_id > 0);
+ Assert_retr(false, flag >= 0 && flag <= 4);
switch (flag) {
case 0: // Read
@@ -481,78 +383,16 @@ void mapif_parse_rodex_updatemail(int fd)
if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `sender_read` = 1 WHERE `mail_id` = '%"PRId64"'", rodex_db, mail_id))
Sql_ShowDebug(inter->sql_handle);
break;
+ default:
+ return false;
}
-}
-
-/*==========================================
- * Send Mail
- *------------------------------------------*/
-void mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accountid, bool result)
-{
- Assert_retv(sender_id >= 0);
- Assert_retv(receiver_id + receiver_accountid > 0);
-
- WFIFOHEAD(fd,15);
- WFIFOW(fd,0) = 0x3897;
- WFIFOL(fd,2) = sender_id;
- WFIFOL(fd,6) = receiver_id;
- WFIFOL(fd,10) = receiver_accountid;
- WFIFOB(fd,14) = result;
- WFIFOSET(fd,15);
-}
-
-void mapif_parse_rodex_send(int fd)
-{
- struct rodex_message msg = { 0 };
-
- if (RFIFOW(fd,2) != 4 + sizeof(struct rodex_message))
- return;
-
- memcpy(&msg, RFIFOP(fd,4), sizeof(struct rodex_message));
- if (msg.receiver_id > 0 || msg.receiver_accountid > 0)
- msg.id = inter_rodex->savemessage(&msg);
-
- mapif->rodex_send(fd, msg.sender_id, msg.receiver_id, msg.receiver_accountid, msg.id > 0 ? true : false);
-}
-
-/*------------------------------------------
- * Check Player
- *------------------------------------------*/
-void mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short 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);
- 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);
-}
-
-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;
-
- safestrncpy(name, RFIFOP(fd, 6), NAME_LENGTH);
-
- if (inter_rodex->checkname(name, &target_char_id, &target_class, &target_level) == true)
- mapif->rodex_checkname(fd, reqchar_id, target_char_id, target_class, target_level, name);
- else
- mapif->rodex_checkname(fd, reqchar_id, 0, 0, 0, name);
+ return true;
}
/*==========================================
* Packets From Map Server
*------------------------------------------*/
-int inter_rodex_parse_frommap(int fd)
+static int inter_rodex_parse_frommap(int fd)
{
switch(RFIFOW(fd,0))
{
@@ -567,12 +407,12 @@ int inter_rodex_parse_frommap(int fd)
return 1;
}
-int inter_rodex_sql_init(void)
+static int inter_rodex_sql_init(void)
{
return 1;
}
-void inter_rodex_sql_final(void)
+static void inter_rodex_sql_final(void)
{
return;
}
@@ -588,4 +428,5 @@ void inter_rodex_defaults(void)
inter_rodex->fromsql = inter_rodex_fromsql;
inter_rodex->hasnew = inter_rodex_hasnew;
inter_rodex->checkname = inter_rodex_checkname;
+ inter_rodex->updatemail = inter_rodex_updatemail;
}
diff --git a/src/char/int_rodex.h b/src/char/int_rodex.h
index 801ebcb89..43e2d891c 100644
--- a/src/char/int_rodex.h
+++ b/src/char/int_rodex.h
@@ -36,6 +36,7 @@ struct inter_rodex_interface {
bool (*hasnew) (int char_id, int account_id);
bool (*checkname) (const char *name, int *target_char_id, short *target_class, int *target_level);
int64 (*savemessage) (struct rodex_message* msg);
+ bool (*updatemail) (int64 mail_id, int8 flag);
};
#ifdef HERCULES_CORE
diff --git a/src/char/int_storage.c b/src/char/int_storage.c
index 0d31800fe..130df5515 100644
--- a/src/char/int_storage.c
+++ b/src/char/int_storage.c
@@ -37,11 +37,11 @@
#include <stdio.h>
#include <stdlib.h>
-struct inter_storage_interface inter_storage_s;
+static struct inter_storage_interface inter_storage_s;
struct inter_storage_interface *inter_storage;
/// Save storage data to sql
-int inter_storage_tosql(int account_id, const struct storage_data *p)
+static int inter_storage_tosql(int account_id, const struct storage_data *p)
{
int i = 0, j = 0;
bool matched_p[MAX_STORAGE] = { false };
@@ -71,7 +71,7 @@ int inter_storage_tosql(int account_id, const struct storage_data *p)
&& (p_it = &VECTOR_INDEX(p->item, j)) != NULL
&& cp_it->nameid == p_it->nameid
&& cp_it->unique_id == p_it->unique_id
- && memcmp(p_it->card, cp_it->card, sizeof(short) * MAX_SLOTS) == 0
+ && memcmp(p_it->card, cp_it->card, sizeof(int) * MAX_SLOTS) == 0
&& memcmp(p_it->option, cp_it->option, 5 * MAX_ITEM_OPTIONS) == 0);
if (j < VECTOR_LENGTH(p->item)) {
@@ -165,7 +165,7 @@ int inter_storage_tosql(int account_id, const struct storage_data *p)
}
/// Load storage data to mem
-int inter_storage_fromsql(int account_id, struct storage_data *p)
+static int inter_storage_fromsql(int account_id, struct storage_data *p)
{
StringBuf buf;
char* data;
@@ -235,16 +235,27 @@ int inter_storage_fromsql(int account_id, struct storage_data *p)
}
/// Save guild_storage data to sql
-int inter_storage_guild_storage_tosql(int guild_id, const struct guild_storage *p)
+static bool inter_storage_guild_storage_tosql(int guild_id, const struct guild_storage *p)
{
nullpo_ret(p);
+
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `guild_id`='%d'", guild_db, guild_id)) {
+ Sql_ShowDebug(inter->sql_handle);
+ return false;
+ } else if (SQL->NumRows(inter->sql_handle) < 1) {
+ // guild doesn't exist
+ SQL->FreeResult(inter->sql_handle);
+ return false;
+ }
+ SQL->FreeResult(inter->sql_handle);
+
chr->memitemdata_to_sql(p->items, guild_id, TABLE_GUILD_STORAGE);
ShowInfo ("guild storage save to DB - guild: %d\n", guild_id);
- return 0;
+ return true;
}
/// Load guild_storage data to mem
-int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage* p)
+static int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage* p)
{
StringBuf buf;
char* data;
@@ -304,237 +315,35 @@ int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storage* p)
//---------------------------------------------------------
// storage data initialize
-int inter_storage_sql_init(void)
+static int inter_storage_sql_init(void)
{
return 1;
}
// storage data finalize
-void inter_storage_sql_final(void)
+static void inter_storage_sql_final(void)
{
return;
}
// q?f[^?
-int inter_storage_delete(int account_id)
+static int inter_storage_delete(int account_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `account_id`='%d'", storage_db, account_id) )
Sql_ShowDebug(inter->sql_handle);
return 0;
}
-int inter_storage_guild_storage_delete(int guild_id)
+static int inter_storage_guild_storage_delete(int guild_id)
{
if( SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `guild_id`='%d'", guild_storage_db, guild_id) )
Sql_ShowDebug(inter->sql_handle);
return 0;
}
-//---------------------------------------------------------
-// packet from map server
-
-int mapif_load_guild_storage(int fd, int account_id, int guild_id, char flag)
-{
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `guild_id`='%d'", guild_db, guild_id) )
- Sql_ShowDebug(inter->sql_handle);
- else if( SQL->NumRows(inter->sql_handle) > 0 )
- {// guild exists
- WFIFOHEAD(fd, sizeof(struct guild_storage)+13);
- WFIFOW(fd,0) = 0x3818;
- WFIFOW(fd,2) = sizeof(struct guild_storage)+13;
- WFIFOL(fd,4) = account_id;
- WFIFOL(fd,8) = guild_id;
- WFIFOB(fd,12) = flag; //1 open storage, 0 don't open
- inter_storage->guild_storage_fromsql(guild_id, WFIFOP(fd,13));
- WFIFOSET(fd, WFIFOW(fd,2));
- return 0;
- }
- // guild does not exist
- SQL->FreeResult(inter->sql_handle);
- WFIFOHEAD(fd, 12);
- WFIFOW(fd,0) = 0x3818;
- WFIFOW(fd,2) = 12;
- WFIFOL(fd,4) = account_id;
- WFIFOL(fd,8) = 0;
- WFIFOSET(fd, 12);
- return 0;
-}
-int mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fail)
-{
- WFIFOHEAD(fd,11);
- WFIFOW(fd,0)=0x3819;
- WFIFOL(fd,2)=account_id;
- WFIFOL(fd,6)=guild_id;
- WFIFOB(fd,10)=fail;
- WFIFOSET(fd,11);
- return 0;
-}
-
-//=========================================================
-// Account Storage
-//---------------------------------------------------------
-/**
- * Parses account storage load request from map server.
- * @packet 0x3010 [in] <account_id>.L
- * @param fd [in] file/socket descriptor
- * @return 1 on success, 0 on failure.
- */
-int mapif_parse_AccountStorageLoad(int fd)
-{
- int account_id = RFIFOL(fd, 2);
-
- Assert_ret(fd > 0);
- Assert_ret(account_id > 0);
-
- mapif->account_storage_load(fd, account_id);
-
- return 1;
-}
-
-/**
- * Loads the account storage and send to the map server.
- * @packet 0x3805 [out] <account_id>.L <struct item[]>.P
- * @param fd [in] file/socket descriptor.
- * @param account_id [in] account id of the session.
- * @return 1 on success, 0 on failure.
- */
-int mapif_account_storage_load(int fd, int account_id)
-{
- struct storage_data stor = { 0 };
- int count = 0, i = 0, len = 0;
-
- Assert_ret(account_id > 0);
-
- VECTOR_INIT(stor.item);
- count = inter_storage->fromsql(account_id, &stor);
-
- len = 8 + count * sizeof(struct item);
-
- WFIFOHEAD(fd, len);
- WFIFOW(fd, 0) = 0x3805;
- WFIFOW(fd, 2) = (uint16) len;
- WFIFOL(fd, 4) = account_id;
- for (i = 0; i < count; i++)
- memcpy(WFIFOP(fd, 8 + i * sizeof(struct item)), &VECTOR_INDEX(stor.item, i), sizeof(struct item));
- WFIFOSET(fd, len);
-
- VECTOR_CLEAR(stor.item);
-
- return 1;
-}
-
-/**
- * Parses an account storage save request from the map server.
- * @packet 0x3011 [in] <packet_len>.W <account_id>.L <struct item[]>.P
- * @param fd [in] file/socket descriptor.
- * @return 1 on success, 0 on failure.
- */
-int mapif_parse_AccountStorageSave(int fd)
-{
- int payload_size = RFIFOW(fd, 2) - 8, account_id = RFIFOL(fd, 4);
- int i = 0, count = 0;
- struct storage_data p_stor = { 0 };
-
- Assert_ret(fd > 0);
- Assert_ret(account_id > 0);
-
- count = payload_size/sizeof(struct item);
-
- VECTOR_INIT(p_stor.item);
-
- if (count > 0) {
- VECTOR_ENSURE(p_stor.item, count, 1);
-
- for (i = 0; i < count; i++) {
- const struct item *it = RFIFOP(fd, 8 + i * sizeof(struct item));
-
- VECTOR_PUSH(p_stor.item, *it);
- }
-
- p_stor.aggregate = count;
- }
-
- inter_storage->tosql(account_id, &p_stor);
-
- VECTOR_CLEAR(p_stor.item);
-
- mapif->sAccountStorageSaveAck(fd, account_id, true);
-
- return 1;
-}
-
-/**
- * Sends an acknowledgement for the save
- * status of the account storage.
- * @packet 0x3808 [out] <account_id>.L <save_flag>.B
- * @param fd [in] File/Socket Descriptor.
- * @param account_id [in] Account ID of the storage in question.
- * @param flag [in] Save flag, true for success and false for failure.
- */
-void mapif_send_AccountStorageSaveAck(int fd, int account_id, bool flag)
-{
- WFIFOHEAD(fd, 7);
- WFIFOW(fd, 0) = 0x3808;
- WFIFOL(fd, 2) = account_id;
- WFIFOB(fd, 6) = flag ? 1 : 0;
- WFIFOSET(fd, 7);
-}
-
-//=========================================================
-// Guild Storage
-//---------------------------------------------------------
-int mapif_parse_LoadGuildStorage(int fd)
-{
- RFIFOHEAD(fd);
-
- mapif->load_guild_storage(fd,RFIFOL(fd,2),RFIFOL(fd,6),1);
-
- return 0;
-}
-
-int mapif_parse_SaveGuildStorage(int fd)
-{
- int guild_id;
- int len;
-
- RFIFOHEAD(fd);
- guild_id = RFIFOL(fd,8);
- len = RFIFOW(fd,2);
-
- if (sizeof(struct guild_storage) != len - 12) {
- ShowError("inter storage: data size mismatch: %d != %"PRIuS"\n", len - 12, sizeof(struct guild_storage));
- } else {
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `guild_id`='%d'", guild_db, guild_id)) {
- Sql_ShowDebug(inter->sql_handle);
- } else if(SQL->NumRows(inter->sql_handle) > 0) {
- // guild exists
- SQL->FreeResult(inter->sql_handle);
- inter_storage->guild_storage_tosql(guild_id, RFIFOP(fd,12));
- mapif->save_guild_storage_ack(fd, RFIFOL(fd,4), guild_id, 0);
- return 0;
- }
- SQL->FreeResult(inter->sql_handle);
- }
- mapif->save_guild_storage_ack(fd, RFIFOL(fd,4), guild_id, 1);
-
- return 0;
-}
-
-int mapif_itembound_ack(int fd, int aid, int guild_id)
-{
-#ifdef GP_BOUND_ITEMS
- WFIFOHEAD(fd,8);
- WFIFOW(fd,0) = 0x3856;
- WFIFOL(fd,2) = aid;/* the value is not being used, drop? */
- WFIFOW(fd,6) = guild_id;
- WFIFOSET(fd,8);
-#endif
- return 0;
-}
-
//------------------------------------------------
//Guild bound items pull for offline characters [Akinari]
//Revised by [Mhalicot]
//------------------------------------------------
-int mapif_parse_ItemBoundRetrieve_sub(int fd)
+static bool inter_storage_retrieve_bound_items(int char_id, int account_id, int guild_id)
{
#ifdef GP_BOUND_ITEMS
StringBuf buf;
@@ -543,9 +352,6 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
int j, i=0, s=0, bound_qt=0;
struct item items[MAX_INVENTORY];
unsigned int bound_item[MAX_INVENTORY] = {0};
- int char_id = RFIFOL(fd,2);
- int aid = RFIFOL(fd,6);
- int guild_id = RFIFOW(fd,10);
StrBuf->Init(&buf);
StrBuf->AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`");
@@ -562,12 +368,12 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
Sql_ShowDebug(inter->sql_handle);
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
- return 1;
+ return false;
}
memset(&item, 0, sizeof(item));
SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &item.id, sizeof item.id, NULL, NULL);
- SQL->StmtBindColumn(stmt, 1, SQLDT_SHORT, &item.nameid, sizeof item.nameid, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &item.nameid, sizeof item.nameid, NULL, NULL);
SQL->StmtBindColumn(stmt, 2, SQLDT_SHORT, &item.amount, sizeof item.amount, NULL, NULL);
SQL->StmtBindColumn(stmt, 3, SQLDT_UINT, &item.equip, sizeof item.equip, NULL, NULL);
SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &item.identify, sizeof item.identify, NULL, NULL);
@@ -578,7 +384,7 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
SQL->StmtBindColumn(stmt, 9, SQLDT_UINT64, &item.unique_id, sizeof item.unique_id, NULL, NULL);
/* Card Slots */
for (j = 0; j < MAX_SLOTS; ++j)
- SQL->StmtBindColumn(stmt, 10 + j, SQLDT_SHORT, &item.card[j], sizeof item.card[j], NULL, NULL);
+ SQL->StmtBindColumn(stmt, 10 + j, SQLDT_INT, &item.card[j], sizeof item.card[j], NULL, NULL);
/* Item Options */
for (j = 0; j < MAX_ITEM_OPTIONS; ++j) {
SQL->StmtBindColumn(stmt, 10 + MAX_SLOTS + j * 2, SQLDT_INT16, &item.option[j].index, sizeof item.option[j].index, NULL, NULL);
@@ -594,7 +400,7 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
if (i == 0) { //No items found - No need to continue
StrBuf->Destroy(&buf);
SQL->StmtFree(stmt);
- return 0;
+ return true;
}
//First we delete the character's items
@@ -627,7 +433,7 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
Sql_ShowDebug(inter->sql_handle);
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
- return 1;
+ return false;
}
// Removes any view id that was set by an item that was removed
@@ -661,7 +467,7 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
Sql_ShowDebug(inter->sql_handle);
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
- return 1;
+ return false;
}
#undef CHECK_REMOVE
}
@@ -702,29 +508,16 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd)
Sql_ShowDebug(inter->sql_handle);
SQL->StmtFree(stmt);
StrBuf->Destroy(&buf);
- return 1;
+ return false;
}
StrBuf->Destroy(&buf);
SQL->StmtFree(stmt);
-
- //Finally reload storage and tell map we're done
- mapif->load_guild_storage(fd,aid,guild_id,0);
-
- // If character is logged in char, disconnect
- chr->disconnect_player(aid);
#endif
- return 0;
-}
-
-void mapif_parse_ItemBoundRetrieve(int fd)
-{
- mapif->parse_ItemBoundRetrieve_sub(fd);
- /* tell map server the operation is over and it can unlock the storage */
- mapif->itembound_ack(fd,RFIFOL(fd,6),RFIFOW(fd,10));
+ return true;
}
-int inter_storage_parse_frommap(int fd)
+static int inter_storage_parse_frommap(int fd)
{
RFIFOHEAD(fd);
switch(RFIFOW(fd,0)){
@@ -754,4 +547,5 @@ void inter_storage_defaults(void)
inter_storage->delete_ = inter_storage_delete;
inter_storage->guild_storage_delete = inter_storage_guild_storage_delete;
inter_storage->parse_frommap = inter_storage_parse_frommap;
+ inter_storage->retrieve_bound_items = inter_storage_retrieve_bound_items;
}
diff --git a/src/char/int_storage.h b/src/char/int_storage.h
index 89886c390..918927620 100644
--- a/src/char/int_storage.h
+++ b/src/char/int_storage.h
@@ -33,13 +33,14 @@ struct guild_storage;
struct inter_storage_interface {
int (*tosql) (int account_id, const struct storage_data *p);
int (*fromsql) (int account_id, struct storage_data *p);
- int (*guild_storage_tosql) (int guild_id, const struct guild_storage *p);
+ bool (*guild_storage_tosql) (int guild_id, const struct guild_storage *p);
int (*guild_storage_fromsql) (int guild_id, struct guild_storage* p);
int (*sql_init) (void);
void (*sql_final) (void);
int (*delete_) (int account_id);
int (*guild_storage_delete) (int guild_id);
int (*parse_frommap) (int fd);
+ bool (*retrieve_bound_items) (int char_id, int account_id, int guild_id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/inter.c b/src/char/inter.c
index cd363e8a2..7269009a7 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -55,20 +55,20 @@
#define WISDATA_TTL (60*1000) // Wis data Time To Live (60 seconds)
#define WISDELLIST_MAX 256 // Number of elements in the list Delete data Wis
-struct inter_interface inter_s;
+static struct inter_interface inter_s;
struct inter_interface *inter;
-int char_server_port = 3306;
-char char_server_ip[32] = "127.0.0.1";
-char char_server_id[32] = "ragnarok";
-char char_server_pw[100] = "ragnarok";
-char char_server_db[32] = "ragnarok";
-char default_codepage[32] = ""; //Feature by irmin.
+static int char_server_port = 3306;
+static char char_server_ip[32] = "127.0.0.1";
+static char char_server_id[32] = "ragnarok";
+static char char_server_pw[100] = "ragnarok";
+static char char_server_db[32] = "ragnarok";
+static char default_codepage[32] = ""; //Feature by irmin.
int party_share_level = 10;
// recv. packet list
-int inter_recv_packet_length[] = {
+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, 0, 0, 0, 0, 0, 0, 10,-1, 0, 0, 0, 0, 0, 0, // 3010- Account Storage [Smokexyz]
-1,10,-1,14, 14,19, 6,-1, 14,14, 0, 0, 0, 0, 0, 0, // 3020- Party
@@ -77,22 +77,18 @@ int inter_recv_packet_length[] = {
-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]
- 48,14,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3080-
+ 52,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
};
-struct WisData {
- int id, fd, count, len;
- int64 tick;
- unsigned char src[24], dst[24], msg[512];
-};
static struct DBMap *wis_db = NULL; // int wis_id -> struct WisData*
static int wis_dellist[WISDELLIST_MAX], wis_delnum;
#define MAX_JOB_NAMES 150
-static char* msg_table[MAX_JOB_NAMES]; // messages 550 ~ 699 are job names
+static char *msg_table[MAX_JOB_NAMES]; // messages 550 ~ 699 are job names
-const char* inter_msg_txt(int msg_number) {
+static const char *inter_msg_txt(int msg_number)
+{
msg_number -= 550;
if (msg_number >= 0 && msg_number < MAX_JOB_NAMES &&
msg_table[msg_number] != NULL && msg_table[msg_number][0] != '\0')
@@ -111,7 +107,7 @@ const char* inter_msg_txt(int msg_number) {
* @param[in] allow_override whether to allow duplicate message IDs to override the original value.
* @return success state.
*/
-bool inter_msg_config_read(const char *cfg_name, bool allow_override)
+static bool inter_msg_config_read(const char *cfg_name, bool allow_override)
{
int msg_number;
char line[1024], w1[1024], w2[1024];
@@ -163,14 +159,14 @@ bool inter_msg_config_read(const char *cfg_name, bool allow_override)
/*==========================================
* Cleanup Message Data
*------------------------------------------*/
-void inter_do_final_msg(void)
+static void inter_do_final_msg(void)
{
int i;
for (i = 0; i < MAX_JOB_NAMES; i++)
aFree(msg_table[i]);
}
/* from pc.c due to @accinfo. any ideas to replace this crap are more than welcome. */
-const char* inter_job_name(int class)
+static const char *inter_job_name(int class)
{
switch (class) {
case JOB_NOVICE: // 550
@@ -403,7 +399,7 @@ const char* inter_job_name(int class)
* Argument-list version of inter_msg_to_fd
* @see inter_msg_to_fd
*/
-void inter_vmsg_to_fd(int fd, int u_fd, int aid, char* msg, va_list ap)
+static void inter_vmsg_to_fd(int fd, int u_fd, int aid, char *msg, va_list ap)
{
char msg_out[512];
va_list apcopy;
@@ -436,8 +432,8 @@ void inter_vmsg_to_fd(int fd, int u_fd, int aid, char* msg, va_list ap)
* @param msg Message format string
* @param ... Additional parameters for (v)sprinf
*/
-void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...) __attribute__((format(printf, 4, 5)));
-void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...)
+static void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...) __attribute__((format(printf, 4, 5)));
+static void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...)
{
va_list ap;
va_start(ap,msg);
@@ -446,15 +442,12 @@ void inter_msg_to_fd(int fd, int u_fd, int aid, char *msg, ...)
}
/* [Dekamaster/Nightroad] */
-void mapif_parse_accinfo(int fd)
+static void inter_accinfo(int u_fd, int aid, int castergroup, const char *query, int map_fd)
{
- int u_fd = RFIFOL(fd,2), aid = RFIFOL(fd,6), castergroup = RFIFOL(fd,10);
- char query[NAME_LENGTH], query_esq[NAME_LENGTH*2+1];
+ char query_esq[NAME_LENGTH*2+1];
int account_id;
char *data;
- safestrncpy(query, RFIFOP(fd,14), NAME_LENGTH);
-
SQL->EscapeString(inter->sql_handle, query_esq, query);
account_id = atoi(query);
@@ -464,10 +457,10 @@ void mapif_parse_accinfo(int fd)
if ( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `account_id`,`name`,`class`,`base_level`,`job_level`,`online` FROM `%s` WHERE `name` LIKE '%s' LIMIT 10", char_db, query_esq)
|| SQL->NumRows(inter->sql_handle) == 0 ) {
if( SQL->NumRows(inter->sql_handle) == 0 ) {
- inter->msg_to_fd(fd, u_fd, aid, "No matches were found for your criteria, '%s'",query);
+ inter->msg_to_fd(map_fd, u_fd, aid, "No matches were found for your criteria, '%s'",query);
} else {
Sql_ShowDebug(inter->sql_handle);
- inter->msg_to_fd(fd, u_fd, aid, "An error occurred, bother your admin about it.");
+ inter->msg_to_fd(map_fd, u_fd, aid, "An error occurred, bother your admin about it.");
}
SQL->FreeResult(inter->sql_handle);
return;
@@ -477,7 +470,7 @@ void mapif_parse_accinfo(int fd)
SQL->GetData(inter->sql_handle, 0, &data, NULL); account_id = atoi(data);
SQL->FreeResult(inter->sql_handle);
} else {// more than one, listing... [Dekamaster/Nightroad]
- inter->msg_to_fd(fd, u_fd, aid, "Your query returned the following %d results, please be more specific...",(int)SQL->NumRows(inter->sql_handle));
+ inter->msg_to_fd(map_fd, u_fd, aid, "Your query returned the following %d results, please be more specific...",(int)SQL->NumRows(inter->sql_handle));
while ( SQL_SUCCESS == SQL->NextRow(inter->sql_handle) ) {
int class;
int base_level, job_level, online;
@@ -490,7 +483,7 @@ void mapif_parse_accinfo(int fd)
SQL->GetData(inter->sql_handle, 4, &data, NULL); job_level = atoi(data);
SQL->GetData(inter->sql_handle, 5, &data, NULL); online = atoi(data);
- inter->msg_to_fd(fd, u_fd, aid, "[AID: %d] %s | %s | Level: %d/%d | %s", account_id, name, inter->job_name(class), base_level, job_level, online?"Online":"Offline");
+ inter->msg_to_fd(map_fd, u_fd, aid, "[AID: %d] %s | %s | Level: %d/%d | %s", account_id, name, inter->job_name(class), base_level, job_level, online?"Online":"Offline");
}
SQL->FreeResult(inter->sql_handle);
return;
@@ -501,12 +494,13 @@ void mapif_parse_accinfo(int fd)
/* it will only get here if we have a single match */
/* and we will send packet with account id to login server asking for account info */
if( account_id ) {
- mapif->on_parse_accinfo(account_id, u_fd, aid, castergroup, fd);
+ mapif->on_parse_accinfo(account_id, u_fd, aid, castergroup, map_fd);
}
return;
}
-void mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
+
+static void inter_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate,
int group_id, int logincount, int state)
{
@@ -579,7 +573,7 @@ void mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int acc
* @param val either str or int, depending on type
* @param type false when int, true otherwise
**/
-void inter_savereg(int account_id, int char_id, const char *key, unsigned int index, intptr_t val, bool is_string)
+static void inter_savereg(int account_id, int char_id, const char *key, unsigned int index, intptr_t val, bool is_string)
{
char val_esq[1000];
nullpo_retv(key);
@@ -632,7 +626,7 @@ void inter_savereg(int account_id, int char_id, const char *key, unsigned int in
}
// Load account_reg from sql (type=2)
-int inter_accreg_fromsql(int account_id,int char_id, int fd, int type)
+static int inter_accreg_fromsql(int account_id, int char_id, int fd, int type)
{
char* data;
size_t len;
@@ -809,7 +803,7 @@ int inter_accreg_fromsql(int account_id,int char_id, int fd, int type)
*
* @retval false in case of error.
*/
-bool inter_config_read_log(const char *filename, const struct config_t *config, bool imported)
+static bool inter_config_read_log(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -837,7 +831,7 @@ bool inter_config_read_log(const char *filename, const struct config_t *config,
*
* @retval false in case of error.
*/
-bool inter_config_read_connection(const char *filename, const struct config_t *config, bool imported)
+static bool inter_config_read_connection(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -870,7 +864,7 @@ bool inter_config_read_connection(const char *filename, const struct config_t *c
*
* @retval false in case of error.
*/
-bool inter_config_read(const char *filename, bool imported)
+static bool inter_config_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
@@ -914,7 +908,7 @@ bool inter_config_read(const char *filename, bool imported)
* Save interlog into sql (arglist version)
* @see inter_log
*/
-int inter_vlog(char* fmt, va_list ap)
+static int inter_vlog(char *fmt, va_list ap)
{
char str[255];
char esc_str[sizeof(str)*2+1];// escaped str
@@ -937,7 +931,7 @@ int inter_vlog(char* fmt, va_list ap)
* @param ... Additional (printf-like) arguments
* @return Always 0 // FIXME
*/
-int inter_log(char* fmt, ...)
+static int inter_log(char *fmt, ...)
{
va_list ap;
int ret;
@@ -950,7 +944,7 @@ int inter_log(char* fmt, ...)
}
// initialize
-int inter_init_sql(const char *file)
+static int inter_init_sql(const char *file)
{
inter->config_read(file, false);
@@ -987,7 +981,7 @@ int inter_init_sql(const char *file)
}
// finalize
-void inter_final(void)
+static void inter_final(void)
{
wis_db->destroy(wis_db, NULL);
@@ -1007,114 +1001,18 @@ void inter_final(void)
return;
}
-int inter_mapif_init(int fd)
-{
- return 0;
-}
-
-
-//--------------------------------------------------------
-
-// broadcast sending
-int mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd)
-{
- unsigned char *buf = (unsigned char*)aMalloc((len)*sizeof(unsigned char));
-
- nullpo_ret(mes);
- Assert_ret(len >= 16);
- WBUFW(buf,0) = 0x3800;
- WBUFW(buf,2) = len;
- WBUFL(buf,4) = fontColor;
- WBUFW(buf,8) = fontType;
- WBUFW(buf,10) = fontSize;
- WBUFW(buf,12) = fontAlign;
- WBUFW(buf,14) = fontY;
- memcpy(WBUFP(buf,16), mes, len - 16);
- mapif->sendallwos(sfd, buf, len);
-
- aFree(buf);
- return 0;
-}
-
-// Wis sending
-int mapif_wis_message(struct WisData *wd)
-{
- unsigned char buf[2048];
- nullpo_ret(wd);
- //if (wd->len > 2047-56) wd->len = 2047-56; //Force it to fit to avoid crashes. [Skotlex]
- if (wd->len < 0)
- wd->len = 0;
- if (wd->len >= (int)sizeof(wd->msg) - 1)
- wd->len = (int)sizeof(wd->msg) - 1;
-
- WBUFW(buf, 0) = 0x3801;
- WBUFW(buf, 2) = 56 +wd->len;
- WBUFL(buf, 4) = wd->id;
- memcpy(WBUFP(buf, 8), wd->src, NAME_LENGTH);
- memcpy(WBUFP(buf,32), wd->dst, NAME_LENGTH);
- memcpy(WBUFP(buf,56), wd->msg, wd->len);
- wd->count = mapif->sendall(buf,WBUFW(buf,2));
-
- return 0;
-}
-
-void mapif_wis_response(int fd, const unsigned char *src, int flag)
-{
- unsigned char buf[27];
- nullpo_retv(src);
- WBUFW(buf, 0)=0x3802;
- memcpy(WBUFP(buf, 2),src,24);
- WBUFB(buf,26)=flag;
- mapif->send(fd,buf,27);
-}
-
-// Wis sending result
-int mapif_wis_end(struct WisData *wd, int flag)
-{
- nullpo_ret(wd);
- mapif->wis_response(wd->fd, wd->src, flag);
- return 0;
-}
-
-#if 0
-// Account registry transfer to map-server
-static void mapif_account_reg(int fd, unsigned char *src)
+static int inter_mapif_init(int fd)
{
- nullpo_retv(src);
- WBUFW(src,0)=0x3804; //NOTE: writing to RFIFO
- mapif->sendallwos(fd, src, WBUFW(src,2));
-}
-#endif // 0
-
-// Send the requested account_reg
-int mapif_account_reg_reply(int fd,int account_id,int char_id, int type)
-{
- inter->accreg_fromsql(account_id,char_id,fd,type);
return 0;
}
-//Request to kick char from a certain map server. [Skotlex]
-int mapif_disconnectplayer(int fd, int account_id, int char_id, int reason)
-{
- if (fd >= 0)
- {
- WFIFOHEAD(fd,7);
- WFIFOW(fd,0) = 0x2b1f;
- WFIFOL(fd,2) = account_id;
- WFIFOB(fd,6) = reason;
- WFIFOSET(fd,7);
- return 0;
- }
- return -1;
-}
-
//--------------------------------------------------------
/**
* Existence check of WISP data
* @see DBApply
*/
-int inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap)
+static int inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap)
{
int64 tick;
struct WisData *wd = DB->data2ptr(data);
@@ -1127,7 +1025,7 @@ int inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap
return 0;
}
-int inter_check_ttl_wisdata(void)
+static int inter_check_ttl_wisdata(void)
{
int64 tick = timer->gettick();
int i;
@@ -1147,225 +1045,36 @@ int inter_check_ttl_wisdata(void)
return 0;
}
-//--------------------------------------------------------
-
-// broadcast sending
-int mapif_parse_broadcast(int fd)
+static struct WisData *inter_add_wisdata(int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len)
{
- mapif->broadcast(RFIFOP(fd,16), RFIFOW(fd,2), RFIFOL(fd,4), RFIFOW(fd,8), RFIFOW(fd,10), RFIFOW(fd,12), RFIFOW(fd,14), fd);
- return 0;
-}
-
-
-// Wisp/page request to send
-int mapif_parse_WisRequest(int fd)
-{
- struct WisData* wd;
- char name[NAME_LENGTH];
- char esc_name[NAME_LENGTH*2+1];// escaped name
- char* data;
- size_t len;
-
-
- if ( fd <= 0 ) {return 0;} // check if we have a valid fd
-
- if (RFIFOW(fd,2)-52 >= sizeof(wd->msg)) {
- ShowWarning("inter: Wis message size too long.\n");
- return 0;
- } else if (RFIFOW(fd,2)-52 <= 0) { // normally, impossible, but who knows...
- ShowError("inter: Wis message doesn't exist.\n");
- return 0;
- }
-
- safestrncpy(name, RFIFOP(fd,28), NAME_LENGTH); //Received name may be too large and not contain \0! [Skotlex]
-
- SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `name` FROM `%s` WHERE `name`='%s'", char_db, esc_name) )
- Sql_ShowDebug(inter->sql_handle);
-
- // search if character exists before to ask all map-servers
- if( SQL_SUCCESS != SQL->NextRow(inter->sql_handle) )
- {
- mapif->wis_response(fd, RFIFOP(fd, 4), 1);
- }
- else
- {// Character exists. So, ask all map-servers
- // to be sure of the correct name, rewrite it
- SQL->GetData(inter->sql_handle, 0, &data, &len);
- memset(name, 0, NAME_LENGTH);
- memcpy(name, data, min(len, NAME_LENGTH));
- // if source is destination, don't ask other servers.
- if (strncmp(RFIFOP(fd,4), name, NAME_LENGTH) == 0) {
- mapif->wis_response(fd, RFIFOP(fd, 4), 1);
- }
- else
- {
- static int wisid = 0;
- CREATE(wd, struct WisData, 1);
-
- // Whether the failure of previous wisp/page transmission (timeout)
- inter->check_ttl_wisdata();
-
- wd->id = ++wisid;
- wd->fd = fd;
- wd->len= RFIFOW(fd,2)-52;
- memcpy(wd->src, RFIFOP(fd, 4), NAME_LENGTH);
- memcpy(wd->dst, RFIFOP(fd,28), NAME_LENGTH);
- memcpy(wd->msg, RFIFOP(fd,52), wd->len);
- wd->tick = timer->gettick();
- idb_put(wis_db, wd->id, wd);
- mapif->wis_message(wd);
- }
- }
-
- SQL->FreeResult(inter->sql_handle);
- return 0;
-}
-
-
-// Wisp/page transmission result
-int mapif_parse_WisReply(int fd)
-{
- int id, flag;
+ static int wisid = 0;
struct WisData *wd;
- id = RFIFOL(fd,2);
- flag = RFIFOB(fd,6);
- wd = (struct WisData*)idb_get(wis_db, id);
- if (wd == NULL)
- return 0; // This wisp was probably suppress before, because it was timeout of because of target was found on another map-server
-
- if ((--wd->count) <= 0 || flag != 1) {
- mapif->wis_end(wd, flag); // flag: 0: success to send whisper, 1: target character is not logged in?, 2: ignored by target
- idb_remove(wis_db, id);
- }
+ CREATE(wd, struct WisData, 1);
- return 0;
-}
+ // Whether the failure of previous wisp/page transmission (timeout)
+ inter->check_ttl_wisdata();
-// Received wisp message from map-server for ALL gm (just copy the message and resends it to ALL map-servers)
-int mapif_parse_WisToGM(int fd)
-{
- unsigned char buf[2048]; // 0x3003/0x3803 <packet_len>.w <wispname>.24B <min_gm_level>.w <message>.?B
+ wd->id = ++wisid;
+ wd->fd = fd;
+ wd->len = msg_len;
+ memcpy(wd->src, src, NAME_LENGTH);
+ memcpy(wd->dst, dst, NAME_LENGTH);
+ memcpy(wd->msg, msg, wd->len);
+ wd->tick = timer->gettick();
+ idb_put(wis_db, wd->id, wd);
- memcpy(WBUFP(buf,0), RFIFOP(fd,0), RFIFOW(fd,2)); // Message contains the NUL terminator (see intif_wis_message_to_gm())
- WBUFW(buf, 0) = 0x3803;
- mapif->sendall(buf, RFIFOW(fd,2));
-
- return 0;
+ return wd;
}
-// Save account_reg into sql (type=2)
-int mapif_parse_Registry(int fd)
+static struct WisData *inter_get_wisdata(int id)
{
- int account_id = RFIFOL(fd, 4), char_id = RFIFOL(fd, 8), count = RFIFOW(fd, 12);
-
- if( count ) {
- int cursor = 14, i;
- char key[SCRIPT_VARNAME_LENGTH+1], sval[254];
- bool isLoginActive = sockt->session_is_active(chr->login_fd);
-
- if( isLoginActive )
- chr->global_accreg_to_login_start(account_id,char_id);
-
- for(i = 0; i < count; i++) {
- unsigned int index;
- int len = RFIFOB(fd, cursor);
- safestrncpy(key, RFIFOP(fd, cursor + 1), min((int)sizeof(key), len));
- cursor += len + 1;
-
- index = RFIFOL(fd, cursor);
- cursor += 4;
-
- switch (RFIFOB(fd, cursor++)) {
- /* int */
- case 0:
- inter->savereg(account_id,char_id,key,index,RFIFOL(fd, cursor),false);
- cursor += 4;
- break;
- case 1:
- inter->savereg(account_id,char_id,key,index,0,false);
- break;
- /* str */
- case 2:
- len = RFIFOB(fd, cursor);
- safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len));
- cursor += len + 1;
- inter->savereg(account_id,char_id,key,index,(intptr_t)sval,true);
- break;
- case 3:
- inter->savereg(account_id,char_id,key,index,0,true);
- break;
- default:
- ShowError("mapif->parse_Registry: unknown type %d\n",RFIFOB(fd, cursor - 1));
- return 1;
- }
-
- }
-
- if (isLoginActive)
- chr->global_accreg_to_login_send();
- }
- return 0;
-}
-
-// Request the value of all registries.
-int mapif_parse_RegistryRequest(int fd)
-{
- //Load Char Registry
- if (RFIFOB(fd,12)) mapif->account_reg_reply(fd,RFIFOL(fd,2),RFIFOL(fd,6),3); // 3: char reg
- //Load Account Registry
- if (RFIFOB(fd,11)) mapif->account_reg_reply(fd,RFIFOL(fd,2),RFIFOL(fd,6),2); // 2: account reg
- //Ask Login Server for Account2 values.
- if (RFIFOB(fd,10)) chr->request_accreg2(RFIFOL(fd,2),RFIFOL(fd,6));
- return 1;
+ return idb_get(wis_db, id);
}
-void mapif_namechange_ack(int fd, int account_id, int char_id, int type, int flag, const char *const name)
+static void inter_remove_wisdata(int id)
{
- nullpo_retv(name);
- WFIFOHEAD(fd, NAME_LENGTH+13);
- WFIFOW(fd, 0) = 0x3806;
- WFIFOL(fd, 2) = account_id;
- WFIFOL(fd, 6) = char_id;
- WFIFOB(fd,10) = type;
- WFIFOB(fd,11) = flag;
- memcpy(WFIFOP(fd, 12), name, NAME_LENGTH);
- WFIFOSET(fd, NAME_LENGTH+13);
-}
-
-int mapif_parse_NameChangeRequest(int fd)
-{
- int account_id, char_id, type;
- const char *name;
- int i;
-
- account_id = RFIFOL(fd,2);
- char_id = RFIFOL(fd,6);
- type = RFIFOB(fd,10);
- name = RFIFOP(fd,11);
-
- // Check Authorized letters/symbols in the name
- if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorized
- for (i = 0; i < NAME_LENGTH && name[i]; i++)
- if (strchr(char_name_letters, name[i]) == NULL) {
- mapif->namechange_ack(fd, account_id, char_id, type, 0, name);
- return 0;
- }
- } else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden
- for (i = 0; i < NAME_LENGTH && name[i]; i++)
- if (strchr(char_name_letters, name[i]) != NULL) {
- mapif->namechange_ack(fd, account_id, char_id, type, 0, name);
- return 0;
- }
- }
- //TODO: type holds the type of object to rename.
- //If it were a player, it needs to have the guild information and db information
- //updated here, because changing it on the map won't make it be saved [Skotlex]
-
- //name allowed.
- mapif->namechange_ack(fd, account_id, char_id, type, 1, name);
- return 0;
+ idb_remove(wis_db, id);
}
//--------------------------------------------------------
@@ -1374,7 +1083,7 @@ int mapif_parse_NameChangeRequest(int fd)
/// or 0 if no complete packet exists in the queue.
///
/// @param length The minimum allowed length, or -1 for dynamic lookup
-int inter_check_length(int fd, int length)
+static int inter_check_length(int fd, int length)
{
if( length == -1 )
{// variable-length packet
@@ -1389,7 +1098,7 @@ int inter_check_length(int fd, int length)
return length;
}
-int inter_parse_frommap(int fd)
+static int inter_parse_frommap(int fd)
{
int cmd;
int len = 0;
@@ -1461,4 +1170,9 @@ void inter_defaults(void)
inter->final = inter_final;
inter->config_read_log = inter_config_read_log;
inter->config_read_connection = inter_config_read_connection;
+ inter->accinfo = inter_accinfo;
+ inter->accinfo2 = inter_accinfo2;
+ inter->add_wisdata = inter_add_wisdata;
+ inter->get_wisdata = inter_get_wisdata;
+ inter->remove_wisdata = inter_remove_wisdata;
}
diff --git a/src/char/inter.h b/src/char/inter.h
index 7f901927c..94ee3ab60 100644
--- a/src/char/inter.h
+++ b/src/char/inter.h
@@ -30,6 +30,12 @@
struct Sql; // common/sql.h
struct config_t; // common/conf.h
+struct WisData {
+ int id, fd, count, len;
+ int64 tick;
+ unsigned char src[24], dst[24], msg[512];
+};
+
/**
* inter interface
**/
@@ -56,6 +62,13 @@ struct inter_interface {
bool (*config_read) (const char *filename, bool imported);
bool (*config_read_log) (const char *filename, const struct config_t *config, bool imported);
bool (*config_read_connection) (const char *filename, const struct config_t *config, bool imported);
+ void (*accinfo) (int u_fd, int aid, int castergroup, const char *query, int map_fd);
+ void (*accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
+ const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate,
+ int group_id, int logincount, int state);
+ struct WisData *(*add_wisdata) (int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len);
+ struct WisData *(*get_wisdata) (int id);
+ void (*remove_wisdata) (int id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/loginif.c b/src/char/loginif.c
index a34bac943..a093c8cf5 100644
--- a/src/char/loginif.c
+++ b/src/char/loginif.c
@@ -35,12 +35,12 @@
#include <stdlib.h>
#include <string.h>
-struct loginif_interface loginif_s;
+static struct loginif_interface loginif_s;
struct loginif_interface *loginif;
/// Resets all the data.
-void loginif_reset(void) __attribute__ ((noreturn));
-void loginif_reset(void)
+static void loginif_reset(void) __attribute__ ((noreturn));
+static void loginif_reset(void)
{
int id;
// TODO kick everyone out and reset everything or wait for connect and try to reacquire locks [FlavioJS]
@@ -54,7 +54,7 @@ void loginif_reset(void)
/// Checks the conditions for the server to stop.
/// Releases the cookie when all characters are saved.
/// If all the conditions are met, it stops the core loop.
-void loginif_check_shutdown(void)
+static void loginif_check_shutdown(void)
{
if( core->runflag != CHARSERVER_ST_SHUTDOWN )
return;
@@ -63,14 +63,14 @@ void loginif_check_shutdown(void)
/// Called when the connection to Login Server is disconnected.
-void loginif_on_disconnect(void)
+static void loginif_on_disconnect(void)
{
ShowWarning("Connection to Login Server lost.\n\n");
}
/// Called when all the connection steps are completed.
-void loginif_on_ready(void)
+static void loginif_on_ready(void)
{
int i;
@@ -85,7 +85,7 @@ void loginif_on_ready(void)
ShowStatus("Awaiting maps from map-server.\n");
}
-void do_init_loginif(void)
+static void do_init_loginif(void)
{
// establish char-login connection if not present
timer->add_func_list(chr->check_connect_login_server, "chr->check_connect_login_server");
@@ -96,7 +96,7 @@ void do_init_loginif(void)
timer->add_interval(timer->gettick() + 1000, chr->send_accounts_tologin, 0, 0, 3600 * 1000); //Sync online accounts every hour
}
-void do_final_loginif(void)
+static void do_final_loginif(void)
{
if (chr->login_fd != -1) {
sockt->close(chr->login_fd);
@@ -104,7 +104,7 @@ void do_final_loginif(void)
}
}
-void loginif_block_account(int account_id, int flag)
+static void loginif_block_account(int account_id, int flag)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,10);
@@ -114,7 +114,7 @@ void loginif_block_account(int account_id, int flag)
WFIFOSET(chr->login_fd,10);
}
-void loginif_ban_account(int account_id, short year, short month, short day, short hour, short minute, short second)
+static void loginif_ban_account(int account_id, short year, short month, short day, short hour, short minute, short second)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,18);
@@ -129,7 +129,7 @@ void loginif_ban_account(int account_id, short year, short month, short day, sho
WFIFOSET(chr->login_fd,18);
}
-void loginif_unban_account(int account_id)
+static void loginif_unban_account(int account_id)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,6);
@@ -138,7 +138,7 @@ void loginif_unban_account(int account_id)
WFIFOSET(chr->login_fd,6);
}
-void loginif_changesex(int account_id)
+static void loginif_changesex(int account_id)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,6);
@@ -147,7 +147,7 @@ void loginif_changesex(int account_id)
WFIFOSET(chr->login_fd,6);
}
-void loginif_auth(int fd, struct char_session_data* sd, uint32 ipl)
+static void loginif_auth(int fd, struct char_session_data *sd, uint32 ipl)
{
Assert_retv(chr->login_fd != -1);
nullpo_retv(sd);
@@ -162,7 +162,7 @@ void loginif_auth(int fd, struct char_session_data* sd, uint32 ipl)
WFIFOSET(chr->login_fd,23);
}
-void loginif_send_users_count(int users)
+static void loginif_send_users_count(int users)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,6);
@@ -171,7 +171,7 @@ void loginif_send_users_count(int users)
WFIFOSET(chr->login_fd,6);
}
-void loginif_connect_to_server(void)
+static void loginif_connect_to_server(void)
{
Assert_retv(chr->login_fd != -1);
WFIFOHEAD(chr->login_fd,86);
diff --git a/src/char/mapif.c b/src/char/mapif.c
index 28a592d57..30f8c1178 100644
--- a/src/char/mapif.c
+++ b/src/char/mapif.c
@@ -20,215 +20,2334 @@
*/
#define HERCULES_CORE
+#include "config/core.h" // GP_BOUND_ITEMS
#include "mapif.h"
#include "char/char.h"
#include "char/int_auction.h"
+#include "char/int_clan.h"
#include "char/int_guild.h"
#include "char/int_homun.h"
+#include "char/int_elemental.h"
+#include "char/int_mail.h"
+#include "char/int_mercenary.h"
+#include "char/int_party.h"
+#include "char/int_pet.h"
+#include "char/int_quest.h"
#include "char/int_rodex.h"
+#include "char/int_storage.h"
+#include "char/inter.h"
#include "common/cbasetypes.h"
+#include "common/memmgr.h"
#include "common/mmo.h"
+#include "common/nullpo.h"
#include "common/random.h"
#include "common/showmsg.h"
#include "common/socket.h"
+#include "common/sql.h"
#include "common/strlib.h"
#include <stdlib.h>
-void mapif_ban(int id, unsigned int flag, int status);
-void mapif_server_init(int id);
-void mapif_server_destroy(int id);
-void mapif_server_reset(int id);
-void mapif_on_disconnect(int id);
-void mapif_on_parse_accinfo(int account_id, int u_fd, int u_aid, int u_group, int map_fd);
-void mapif_char_ban(int char_id, time_t timestamp);
-int mapif_sendall(const unsigned char *buf, unsigned int len);
-int mapif_sendallwos(int sfd, unsigned char *buf, unsigned int len);
-int mapif_send(int fd, unsigned char *buf, unsigned int len);
-void mapif_send_users_count(int users);
-void mapif_auction_message(int char_id, unsigned char result);
-void mapif_auction_sendlist(int fd, int char_id, short count, short pages, unsigned char *buf);
-void mapif_parse_auction_requestlist(int fd);
-void mapif_auction_register(int fd, struct auction_data *auction);
-void mapif_parse_auction_register(int fd);
-void mapif_auction_cancel(int fd, int char_id, unsigned char result);
-void mapif_parse_auction_cancel(int fd);
-void mapif_auction_close(int fd, int char_id, unsigned char result);
-void mapif_parse_auction_close(int fd);
-void mapif_auction_bid(int fd, int char_id, int bid, unsigned char result);
-void mapif_parse_auction_bid(int fd);
-bool mapif_elemental_create(struct s_elemental *ele);
-bool mapif_elemental_save(const struct s_elemental *ele);
-bool mapif_elemental_load(int ele_id, int char_id, struct s_elemental *ele);
-bool mapif_elemental_delete(int ele_id);
-void mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag);
-void mapif_parse_elemental_create(int fd, const struct s_elemental *ele);
-void mapif_parse_elemental_load(int fd, int ele_id, int char_id);
-void mapif_elemental_deleted(int fd, unsigned char flag);
-void mapif_parse_elemental_delete(int fd, int ele_id);
-void mapif_elemental_saved(int fd, unsigned char flag);
-void mapif_parse_elemental_save(int fd, const struct s_elemental *ele);
-int mapif_guild_created(int fd, int account_id, struct guild *g);
-int mapif_guild_noinfo(int fd, int guild_id);
-int mapif_guild_info(int fd, struct guild *g);
-int mapif_guild_memberadded(int fd, int guild_id, int account_id, int char_id, int flag);
-int mapif_guild_withdraw(int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes);
-int mapif_guild_memberinfoshort(struct guild *g, int idx);
-int mapif_guild_broken(int guild_id, int flag);
-int mapif_guild_message(int guild_id, int account_id, const char *mes, int len, int sfd);
-int mapif_guild_basicinfochanged(int guild_id, int type, const void *data, int len);
-int mapif_guild_memberinfochanged(int guild_id, int account_id, int char_id, int type, const void *data, int len);
-int mapif_guild_skillupack(int guild_id, uint16 skill_id, int account_id);
-int mapif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2);
-int mapif_guild_position(struct guild *g, int idx);
-int mapif_guild_notice(struct guild *g);
-int mapif_guild_emblem(struct guild *g);
-int mapif_guild_master_changed(struct guild *g, int aid, int cid);
-int mapif_guild_castle_dataload(int fd, int sz, const int *castle_ids);
-int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const struct guild_member *master);
-int mapif_parse_GuildInfo(int fd, int guild_id);
-int mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_member *m);
-int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, int flag, const char *mes);
-int mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
-int mapif_parse_BreakGuild(int fd, int guild_id);
-int mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char *mes, int len);
-int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void *data, int len);
-int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len);
-int mapif_parse_GuildPosition(int fd, int guild_id, int idx, const struct guild_position *p);
-int mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int account_id, int max);
-int mapif_parse_GuildDeleteAlliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
-int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
-int mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *mes2);
-int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char *data);
-int mapif_parse_GuildCastleDataLoad(int fd, int len, const int *castle_ids);
-int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value);
-int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int len);
-void mapif_homunculus_created(int fd, int account_id, const struct s_homunculus *sh, unsigned char flag);
-void mapif_homunculus_deleted(int fd, int flag);
-void mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd);
-void mapif_homunculus_saved(int fd, int account_id, bool flag);
-void mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned char flag, const char *name);
-bool mapif_homunculus_create(struct s_homunculus *hd);
-bool mapif_homunculus_save(const struct s_homunculus *hd);
-bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd);
-bool mapif_homunculus_delete(int homun_id);
-bool mapif_homunculus_rename(const char *name);
-void mapif_parse_homunculus_create(int fd, int len, int account_id, const struct s_homunculus *phd);
-void mapif_parse_homunculus_delete(int fd, int homun_id);
-void mapif_parse_homunculus_load(int fd, int account_id, int homun_id);
-void mapif_parse_homunculus_save(int fd, int len, int account_id, const struct s_homunculus *phd);
-void mapif_parse_homunculus_rename(int fd, int account_id, int char_id, const char *name);
-void mapif_mail_sendinbox(int fd, int char_id, unsigned char flag, struct mail_data *md);
-void mapif_parse_mail_requestinbox(int fd);
-void mapif_parse_mail_read(int fd);
-void mapif_mail_sendattach(int fd, int char_id, struct mail_message *msg);
-void mapif_mail_getattach(int fd, int char_id, int mail_id);
-void mapif_parse_mail_getattach(int fd);
-void mapif_mail_delete(int fd, int char_id, int mail_id, bool failed);
-void mapif_parse_mail_delete(int fd);
-void mapif_mail_new(struct mail_message *msg);
-void mapif_mail_return(int fd, int char_id, int mail_id, int new_mail);
-void mapif_parse_mail_return(int fd);
-void mapif_mail_send(int fd, struct mail_message* msg);
-void mapif_parse_mail_send(int fd);
-bool mapif_mercenary_create(struct s_mercenary *merc);
-bool mapif_mercenary_save(const struct s_mercenary *merc);
-bool mapif_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc);
-bool mapif_mercenary_delete(int merc_id);
-void mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char flag);
-void mapif_parse_mercenary_create(int fd, const struct s_mercenary *merc);
-void mapif_parse_mercenary_load(int fd, int merc_id, int char_id);
-void mapif_mercenary_deleted(int fd, unsigned char flag);
-void mapif_parse_mercenary_delete(int fd, int merc_id);
-void mapif_mercenary_saved(int fd, unsigned char flag);
-void mapif_parse_mercenary_save(int fd, const struct s_mercenary *merc);
-int mapif_party_created(int fd, int account_id, int char_id, struct party *p);
-void mapif_party_noinfo(int fd, int party_id, int char_id);
-void mapif_party_info(int fd, struct party* p, int char_id);
-int mapif_party_memberadded(int fd, int party_id, int account_id, int char_id, int flag);
-int mapif_party_optionchanged(int fd, struct party *p, int account_id, int flag);
-int mapif_party_withdraw(int party_id,int account_id, int char_id);
-int mapif_party_membermoved(struct party *p, int idx);
-int mapif_party_broken(int party_id, int flag);
-int mapif_party_message(int party_id, int account_id, const char *mes, int len, int sfd);
-int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const struct party_member *leader);
-void mapif_parse_PartyInfo(int fd, int party_id, int char_id);
-int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *member);
-int mapif_parse_PartyChangeOption(int fd,int party_id,int account_id,int exp,int item);
-int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id);
-int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
-int mapif_parse_BreakParty(int fd, int party_id);
-int mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char *mes, int len);
-int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char_id);
-int mapif_pet_created(int fd, int account_id, struct s_pet *p);
-int mapif_pet_info(int fd, int account_id, struct s_pet *p);
-int mapif_pet_noinfo(int fd, int account_id);
-int mapif_save_pet_ack(int fd, int account_id, int flag);
-int mapif_delete_pet_ack(int fd, int flag);
-int mapif_create_pet(int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id,
- short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
-int mapif_load_pet(int fd, int account_id, int char_id, int pet_id);
-int mapif_save_pet(int fd, int account_id, const struct s_pet *data);
-int mapif_delete_pet(int fd, int pet_id);
-int mapif_parse_CreatePet(int fd);
-int mapif_parse_LoadPet(int fd);
-int mapif_parse_SavePet(int fd);
-int mapif_parse_DeletePet(int fd);
-struct quest *mapif_quests_fromsql(int char_id, int *count);
-bool mapif_quest_delete(int char_id, int quest_id);
-bool mapif_quest_add(int char_id, struct quest qd);
-bool mapif_quest_update(int char_id, struct quest qd);
-void mapif_quest_save_ack(int fd, int char_id, bool success);
-int mapif_parse_quest_save(int fd);
-void mapif_send_quests(int fd, int char_id, struct quest *tmp_questlog, int num_quests);
-int mapif_parse_quest_load(int fd);
+static struct mapif_interface mapif_s;
+struct mapif_interface *mapif;
+
+static void mapif_ban(int id, unsigned int flag, int status)
+{
+ // send to all map-servers to disconnect the player
+ unsigned char buf[11];
+ WBUFW(buf,0) = 0x2b14;
+ WBUFL(buf,2) = id;
+ WBUFB(buf,6) = flag; // 0: change of status, 1: ban
+ WBUFL(buf,7) = status; // status or final date of a banishment
+ mapif->sendall(buf, 11);
+}
+
+/// Initializes a server structure.
+static void mapif_server_init(int id)
+{
+ //memset(&chr->server[id], 0, sizeof(server[id]));
+ chr->server[id].fd = -1;
+}
+
+/// Destroys a server structure.
+static void mapif_server_destroy(int id)
+{
+ if (chr->server[id].fd == -1) {
+ sockt->close(chr->server[id].fd);
+ chr->server[id].fd = -1;
+ }
+}
+
+/// Resets all the data related to a server.
+static void mapif_server_reset(int id)
+{
+ int i, j;
+ unsigned char buf[16384];
+ int fd = chr->server[id].fd;
+ //Notify other map servers that this one is gone. [Skotlex]
+ WBUFW(buf, 0) = 0x2b20;
+ WBUFL(buf, 4) = htonl(chr->server[id].ip);
+ WBUFW(buf, 8) = htons(chr->server[id].port);
+ j = 0;
+ for (i = 0; i < VECTOR_LENGTH(chr->server[id].maps); i++) {
+ uint16 m = VECTOR_INDEX(chr->server[id].maps, i);
+ if (m != 0)
+ WBUFW(buf, 10 + (j++) * 4) = m;
+ }
+ if (j > 0) {
+ WBUFW(buf, 2) = j * 4 + 10;
+ mapif->sendallwos(fd, buf, WBUFW(buf, 2));
+ }
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "DELETE FROM `%s` WHERE `index`='%d'", ragsrvinfo_db, chr->server[id].fd))
+ Sql_ShowDebug(inter->sql_handle);
+ chr->online_char_db->foreach(chr->online_char_db, chr->db_setoffline, id); //Tag relevant chars as 'in disconnected' server.
+ mapif->server_destroy(id);
+ mapif->server_init(id);
+}
+
+/// Called when the connection to a Map Server is disconnected.
+static void mapif_on_disconnect(int id)
+{
+ ShowStatus("Map-server #%d has disconnected.\n", id);
+ mapif->server_reset(id);
+}
+
+static void mapif_on_parse_accinfo(int account_id, int u_fd, int u_aid, int u_group, int map_fd)
+{
+ Assert_retv(chr->login_fd > 0);
+ WFIFOHEAD(chr->login_fd, 22);
+ WFIFOW(chr->login_fd, 0) = 0x2740;
+ WFIFOL(chr->login_fd, 2) = account_id;
+ WFIFOL(chr->login_fd, 6) = u_fd;
+ WFIFOL(chr->login_fd, 10) = u_aid;
+ WFIFOL(chr->login_fd, 14) = u_group;
+ WFIFOL(chr->login_fd, 18) = map_fd;
+ WFIFOSET(chr->login_fd, 22);
+}
+
+static void mapif_char_ban(int char_id, time_t timestamp)
+{
+ unsigned char buf[11];
+ WBUFW(buf, 0) = 0x2b14;
+ WBUFL(buf, 2) = char_id;
+ WBUFB(buf, 6) = 2;
+ WBUFL(buf, 7) = (unsigned int)timestamp;
+ mapif->sendall(buf, 11);
+}
+
+static int mapif_sendall(const unsigned char *buf, unsigned int len)
+{
+ int i, c;
+
+ nullpo_ret(buf);
+ c = 0;
+ for (i = 0; i < ARRAYLENGTH(chr->server); i++) {
+ int fd;
+ if ((fd = chr->server[i].fd) > 0) {
+ WFIFOHEAD(fd, len);
+ memcpy(WFIFOP(fd, 0), buf, len);
+ WFIFOSET(fd, len);
+ c++;
+ }
+ }
+
+ return c;
+}
+
+static int mapif_sendallwos(int sfd, unsigned char *buf, unsigned int len)
+{
+ int i, c;
+
+ nullpo_ret(buf);
+ c = 0;
+ for (i = 0; i < ARRAYLENGTH(chr->server); i++) {
+ int fd;
+ if ((fd = chr->server[i].fd) > 0 && fd != sfd) {
+ WFIFOHEAD(fd, len);
+ memcpy(WFIFOP(fd, 0), buf, len);
+ WFIFOSET(fd, len);
+ c++;
+ }
+ }
+
+ return c;
+}
+
+
+static int mapif_send(int fd, unsigned char *buf, unsigned int len)
+{
+ nullpo_ret(buf);
+ if (fd >= 0) {
+ int i;
+ ARR_FIND (0, ARRAYLENGTH(chr->server), i, fd == chr->server[i].fd);
+ if (i < ARRAYLENGTH(chr->server)) {
+ WFIFOHEAD(fd, len);
+ memcpy(WFIFOP(fd, 0), buf, len);
+ WFIFOSET(fd, len);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static void mapif_send_users_count(int users)
+{
+ uint8 buf[6];
+ // send number of players to all map-servers
+ WBUFW(buf, 0) = 0x2b00;
+ WBUFL(buf, 2) = users;
+ mapif->sendall(buf, 6);
+}
+
+
+static void mapif_auction_message(int char_id, unsigned char result)
+{
+ unsigned char buf[74];
+
+ WBUFW(buf, 0) = 0x3854;
+ WBUFL(buf, 2) = char_id;
+ WBUFL(buf, 6) = result;
+ mapif->sendall(buf, 7);
+}
+
+static void mapif_auction_sendlist(int fd, int char_id, short count, short pages, unsigned char *buf)
+{
+ int len = (sizeof(struct auction_data) * count) + 12;
+
+ nullpo_retv(buf);
+
+ WFIFOHEAD(fd, len);
+ WFIFOW(fd, 0) = 0x3850;
+ WFIFOW(fd, 2) = len;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOW(fd, 8) = count;
+ WFIFOW(fd, 10) = pages;
+ memcpy(WFIFOP(fd, 12), buf, len - 12);
+ WFIFOSET(fd, len);
+}
+
+static void mapif_parse_auction_requestlist(int fd)
+{
+ char searchtext[NAME_LENGTH];
+ int char_id = RFIFOL(fd, 4), len = sizeof(struct auction_data);
+ int price = RFIFOL(fd, 10);
+ short type = RFIFOW(fd, 8), page = max(1, RFIFOW(fd, 14));
+ unsigned char buf[5 * sizeof(struct auction_data)];
+ struct DBIterator *iter = db_iterator(inter_auction->db);
+ struct auction_data *auction;
+ short i = 0, j = 0, pages = 1;
+
+ memcpy(searchtext, RFIFOP(fd, 16), NAME_LENGTH);
+
+ for (auction = dbi_first(iter); dbi_exists(iter); auction = dbi_next(iter)) {
+ if ((type == 0 && auction->type != IT_ARMOR && auction->type != IT_PETARMOR)
+ || (type == 1 && auction->type != IT_WEAPON)
+ || (type == 2 && auction->type != IT_CARD)
+ || (type == 3 && auction->type != IT_ETC)
+ || (type == 4 && !strstr(auction->item_name, searchtext))
+ || (type == 5 && auction->price > price)
+ || (type == 6 && auction->seller_id != char_id)
+ || (type == 7 && auction->buyer_id != char_id))
+ continue;
+
+ i++;
+ if (i > 5) {
+ // Counting Pages of Total Results (5 Results per Page)
+ pages++;
+ i = 1; // First Result of This Page
+ }
+
+ if (page != pages)
+ continue; // This is not the requested Page
+
+ memcpy(WBUFP(buf, j * len), auction, len);
+ j++; // Found Results
+ }
+ dbi_destroy(iter);
+
+ mapif->auction_sendlist(fd, char_id, j, pages, buf);
+}
+
+static void mapif_auction_register(int fd, struct auction_data *auction)
+{
+ int len = sizeof(struct auction_data) + 4;
+
+ nullpo_retv(auction);
+
+ WFIFOHEAD(fd,len);
+ WFIFOW(fd, 0) = 0x3851;
+ WFIFOW(fd, 2) = len;
+ memcpy(WFIFOP(fd, 4), auction, sizeof(struct auction_data));
+ WFIFOSET(fd, len);
+}
+
+static void mapif_parse_auction_register(int fd)
+{
+ struct auction_data auction;
+ if( RFIFOW(fd, 2) != sizeof(struct auction_data) + 4 )
+ return;
+
+ memcpy(&auction, RFIFOP(fd, 4), sizeof(struct auction_data));
+ if( inter_auction->count(auction.seller_id, false) < 5 )
+ auction.auction_id = inter_auction->create(&auction);
+
+ mapif->auction_register(fd, &auction);
+}
+
+static void mapif_auction_cancel(int fd, int char_id, unsigned char result)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3852;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOB(fd, 6) = result;
+ WFIFOSET(fd, 7);
+}
+
+static void mapif_parse_auction_cancel(int fd)
+{
+ int char_id = RFIFOL(fd, 2), auction_id = RFIFOL(fd, 6);
+ struct auction_data *auction;
+
+ if ((auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL) {
+ mapif->auction_cancel(fd, char_id, 1); // Bid Number is Incorrect
+ return;
+ }
+
+ if (auction->seller_id != char_id) {
+ mapif->auction_cancel(fd, char_id, 2); // You cannot end the auction
+ return;
+ }
+
+ if (auction->buyer_id > 0) {
+ mapif->auction_cancel(fd, char_id, 3); // An auction with at least one bidder cannot be canceled
+ return;
+ }
+
+ inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Auction canceled.", 0, &auction->item);
+ inter_auction->delete_(auction);
+
+ mapif->auction_cancel(fd, char_id, 0); // The auction has been canceled
+}
+
+
+static void mapif_auction_close(int fd, int char_id, unsigned char result)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3853;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOB(fd, 6) = result;
+ WFIFOSET(fd, 7);
+}
+
+static void mapif_parse_auction_close(int fd)
+{
+ int char_id = RFIFOL(fd, 2), auction_id = RFIFOL(fd, 6);
+ struct auction_data *auction;
+
+ if ((auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL) {
+ mapif->auction_close(fd, char_id, 2); // Bid Number is Incorrect
+ return;
+ }
+
+ if (auction->seller_id != char_id) {
+ mapif->auction_close(fd, char_id, 1); // You cannot end the auction
+ return;
+ }
+
+ if (auction->buyer_id == 0) {
+ mapif->auction_close(fd, char_id, 1); // You cannot end the auction
+ return;
+ }
+
+ // Send Money to Seller
+ inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Auction closed.", auction->price, NULL);
+ // Send Item to Buyer
+ inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "Auction winner.", 0, &auction->item);
+ mapif->auction_message(auction->buyer_id, 6); // You have won the auction
+ inter_auction->delete_(auction);
+
+ mapif->auction_close(fd, char_id, 0); // You have ended the auction
+}
+
+static void mapif_auction_bid(int fd, int char_id, int bid, unsigned char result)
+{
+ WFIFOHEAD(fd, 11);
+ WFIFOW(fd, 0) = 0x3855;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOL(fd, 6) = bid; // To Return Zeny
+ WFIFOB(fd, 10) = result;
+ WFIFOSET(fd, 11);
+}
+
+static void mapif_parse_auction_bid(int fd)
+{
+ int char_id = RFIFOL(fd, 4), bid = RFIFOL(fd, 12);
+ unsigned int auction_id = RFIFOL(fd, 8);
+ struct auction_data *auction;
+
+ if ((auction = (struct auction_data *)idb_get(inter_auction->db, auction_id)) == NULL || auction->price >= bid || auction->seller_id == char_id) {
+ mapif->auction_bid(fd, char_id, bid, 0); // You have failed to bid in the auction
+ return;
+ }
+
+ if (inter_auction->count(char_id, true) > 4 && bid < auction->buynow && auction->buyer_id != char_id) {
+ mapif->auction_bid(fd, char_id, bid, 9); // You cannot place more than 5 bids at a time
+ return;
+ }
+
+ if (auction->buyer_id > 0) {
+ // Send Money back to the previous Buyer
+ if (auction->buyer_id != char_id) {
+ inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "Someone has placed a higher bid.", auction->price, NULL);
+ mapif->auction_message(auction->buyer_id, 7); // You have failed to win the auction
+ } else {
+ inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "You have placed a higher bid.", auction->price, NULL);
+ }
+ }
+
+ auction->buyer_id = char_id;
+ safestrncpy(auction->buyer_name, RFIFOP(fd, 16), NAME_LENGTH);
+ auction->price = bid;
+
+ if (bid >= auction->buynow) {
+ // Automatic won the auction
+ mapif->auction_bid(fd, char_id, bid - auction->buynow, 1); // You have successfully bid in the auction
+
+ inter_mail->sendmail(0, "Auction Manager", auction->buyer_id, auction->buyer_name, "Auction", "You have won the auction.", 0, &auction->item);
+ mapif->auction_message(char_id, 6); // You have won the auction
+ inter_mail->sendmail(0, "Auction Manager", auction->seller_id, auction->seller_name, "Auction", "Payment for your auction!.", auction->buynow, NULL);
+
+ inter_auction->delete_(auction);
+ return;
+ }
+
+ inter_auction->save(auction);
+
+ mapif->auction_bid(fd, char_id, 0, 1); // You have successfully bid in the auction
+}
+
+static void mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag)
+{
+ int size = sizeof(struct s_elemental) + 5;
+
+ nullpo_retv(ele);
+ WFIFOHEAD(fd, size);
+ WFIFOW(fd, 0) = 0x387c;
+ WFIFOW(fd, 2) = size;
+ WFIFOB(fd, 4) = flag;
+ memcpy(WFIFOP(fd, 5), ele, sizeof(struct s_elemental));
+ WFIFOSET(fd, size);
+}
+
+static void mapif_parse_elemental_create(int fd, const struct s_elemental *ele)
+{
+ struct s_elemental ele_;
+ bool result;
+
+ memcpy(&ele_, ele, sizeof(ele_));
+
+ result = inter_elemental->create(&ele_);
+ mapif->elemental_send(fd, &ele_, result);
+}
+
+static void mapif_parse_elemental_load(int fd, int ele_id, int char_id)
+{
+ struct s_elemental ele;
+ bool result = inter_elemental->load(ele_id, char_id, &ele);
+ mapif->elemental_send(fd, &ele, result);
+}
+
+static void mapif_elemental_deleted(int fd, unsigned char flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x387d;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_parse_elemental_delete(int fd, int ele_id)
+{
+ bool result = inter_elemental->delete(ele_id);
+ mapif->elemental_deleted(fd, result);
+}
+
+static void mapif_elemental_saved(int fd, unsigned char flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x387e;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_parse_elemental_save(int fd, const struct s_elemental *ele)
+{
+ bool result = inter_elemental->save(ele);
+ mapif->elemental_saved(fd, result);
+}
+
+static int mapif_guild_created(int fd, int account_id, struct guild *g)
+{
+ WFIFOHEAD(fd, 10);
+ WFIFOW(fd, 0) = 0x3830;
+ WFIFOL(fd, 2) = account_id;
+ if (g != NULL) {
+ WFIFOL(fd, 6) = g->guild_id;
+ ShowInfo("int_guild: Guild created (%d - %s)\n", g->guild_id, g->name);
+ } else {
+ WFIFOL(fd, 6) = 0;
+ }
+
+ WFIFOSET(fd, 10);
+ return 0;
+}
+
+// Guild not found
+static int mapif_guild_noinfo(int fd, int guild_id)
+{
+ unsigned char buf[12];
+ WBUFW(buf, 0) = 0x3831;
+ WBUFW(buf, 2) = 8;
+ WBUFL(buf, 4) = guild_id;
+ ShowWarning("int_guild: info not found %d\n", guild_id);
+ if (fd < 0)
+ mapif->sendall(buf, 8);
+ else
+ mapif->send(fd,buf, 8);
+ return 0;
+}
+
+// Send guild info
+static int mapif_guild_info(int fd, struct guild *g)
+{
+ unsigned char buf[8 + sizeof(struct guild)];
+ nullpo_ret(g);
+ WBUFW(buf, 0) = 0x3831;
+ WBUFW(buf, 2) = 4 + sizeof(struct guild);
+ memcpy(buf + 4, g, sizeof(struct guild));
+ if (fd < 0)
+ mapif->sendall(buf, WBUFW(buf, 2));
+ else
+ mapif->send(fd, buf, WBUFW(buf, 2));
+ return 0;
+}
+
+// ACK member add
+static int mapif_guild_memberadded(int fd, int guild_id, int account_id, int char_id, int flag)
+{
+ WFIFOHEAD(fd, 15);
+ WFIFOW(fd, 0) = 0x3832;
+ WFIFOL(fd, 2) = guild_id;
+ WFIFOL(fd, 6) = account_id;
+ WFIFOL(fd, 10) = char_id;
+ WFIFOB(fd, 14) = flag;
+ WFIFOSET(fd, 15);
+ return 0;
+}
+
+// ACK member leave
+static int mapif_guild_withdraw(int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes)
+{
+ unsigned char buf[55 + NAME_LENGTH];
+
+ nullpo_ret(name);
+ nullpo_ret(mes);
+
+ WBUFW(buf, 0) = 0x3834;
+ WBUFL(buf, 2) = guild_id;
+ WBUFL(buf, 6) = account_id;
+ WBUFL(buf, 10) = char_id;
+ WBUFB(buf, 14) = flag;
+ memcpy(WBUFP(buf, 15), mes, 40);
+ memcpy(WBUFP(buf, 55), name, NAME_LENGTH);
+ mapif->sendall(buf, 55 + NAME_LENGTH);
+ ShowInfo("int_guild: guild withdraw (%d - %d: %s - %s)\n", guild_id, account_id, name, mes);
+ return 0;
+}
+
+// Send short member's info
+static int mapif_guild_memberinfoshort(struct guild *g, int idx)
+{
+ unsigned char buf[23];
+ nullpo_ret(g);
+ Assert_ret(idx >= 0 && idx < MAX_GUILD);
+ WBUFW(buf, 0) = 0x3835;
+ WBUFL(buf, 2) = g->guild_id;
+ WBUFL(buf, 6) = g->member[idx].account_id;
+ 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);
+ return 0;
+}
+
+// Send guild broken
+static int mapif_guild_broken(int guild_id, int flag)
+{
+ unsigned char buf[7];
+ WBUFW(buf, 0) = 0x3836;
+ WBUFL(buf, 2) = guild_id;
+ WBUFB(buf, 6) = flag;
+ mapif->sendall(buf, 7);
+ ShowInfo("int_guild: Guild broken (%d)\n", guild_id);
+ return 0;
+}
+
+// Send guild message
+static int mapif_guild_message(int guild_id, int account_id, const char *mes, int len, int sfd)
+{
+ unsigned char buf[512];
+ nullpo_ret(mes);
+ if (len > 500)
+ len = 500;
+ WBUFW(buf, 0) = 0x3837;
+ WBUFW(buf, 2) = len + 12;
+ WBUFL(buf, 4) = guild_id;
+ WBUFL(buf, 8) = account_id;
+ memcpy(WBUFP(buf, 12), mes, len);
+ mapif->sendallwos(sfd, buf, len + 12);
+ return 0;
+}
+
+// Send basic info
+static int mapif_guild_basicinfochanged(int guild_id, int type, const void *data, int len)
+{
+ unsigned char buf[2048];
+ nullpo_ret(data);
+ if (len > 2038)
+ len = 2038;
+ WBUFW(buf, 0) = 0x3839;
+ WBUFW(buf, 2) = len + 10;
+ WBUFL(buf, 4) = guild_id;
+ WBUFW(buf, 8) = type;
+ memcpy(WBUFP(buf, 10), data, len);
+ mapif->sendall(buf, len + 10);
+ return 0;
+}
+
+// Send member info
+static int mapif_guild_memberinfochanged(int guild_id, int account_id, int char_id, int type, const void *data, int len)
+{
+ unsigned char buf[2048];
+ nullpo_ret(data);
+ if (len > 2030)
+ len = 2030;
+ WBUFW(buf, 0) = 0x383a;
+ WBUFW(buf, 2) = len + 18;
+ WBUFL(buf, 4) = guild_id;
+ WBUFL(buf, 8) = account_id;
+ WBUFL(buf, 12) = char_id;
+ WBUFW(buf, 16) = type;
+ memcpy(WBUFP(buf, 18), data, len);
+ mapif->sendall(buf, len + 18);
+ return 0;
+}
+
+// ACK guild skill up
+static int mapif_guild_skillupack(int guild_id, uint16 skill_id, int account_id)
+{
+ unsigned char buf[14];
+ WBUFW(buf, 0) = 0x383c;
+ WBUFL(buf, 2) = guild_id;
+ WBUFL(buf, 6) = skill_id;
+ WBUFL(buf,10) = account_id;
+ mapif->sendall(buf, 14);
+ return 0;
+}
+
+// ACK guild alliance
+static int mapif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2)
+{
+ unsigned char buf[19 + 2 * NAME_LENGTH];
+ nullpo_ret(name1);
+ nullpo_ret(name2);
+ WBUFW(buf, 0) = 0x383d;
+ WBUFL(buf, 2) = guild_id1;
+ WBUFL(buf, 6) = guild_id2;
+ WBUFL(buf, 10) = account_id1;
+ WBUFL(buf, 14) = account_id2;
+ WBUFB(buf, 18) = flag;
+ memcpy(WBUFP(buf, 19), name1, NAME_LENGTH);
+ memcpy(WBUFP(buf, 19 + NAME_LENGTH), name2, NAME_LENGTH);
+ mapif->sendall(buf,19 + 2 * NAME_LENGTH);
+ return 0;
+}
+
+// Send a guild position desc
+static int mapif_guild_position(struct guild *g, int idx)
+{
+ unsigned char buf[12 + sizeof(struct guild_position)];
+ nullpo_ret(g);
+ Assert_ret(idx >= 0 && idx < MAX_GUILDPOSITION);
+ WBUFW(buf, 0) = 0x383b;
+ WBUFW(buf, 2) = sizeof(struct guild_position)+12;
+ WBUFL(buf, 4) = g->guild_id;
+ WBUFL(buf, 8) = idx;
+ memcpy(WBUFP(buf, 12), &g->position[idx], sizeof(struct guild_position));
+ mapif->sendall(buf, WBUFW(buf, 2));
+ return 0;
+}
+
+// Send the guild notice
+static int mapif_guild_notice(struct guild *g)
+{
+ unsigned char buf[256];
+ nullpo_ret(g);
+ WBUFW(buf, 0) = 0x383e;
+ WBUFL(buf, 2) = g->guild_id;
+ memcpy(WBUFP(buf, 6), g->mes1, MAX_GUILDMES1);
+ memcpy(WBUFP(buf, 66), g->mes2, MAX_GUILDMES2);
+ mapif->sendall(buf, 186);
+ return 0;
+}
+
+// Send emblem data
+static int mapif_guild_emblem(struct guild *g)
+{
+ unsigned char buf[12 + sizeof(g->emblem_data)];
+ nullpo_ret(g);
+ WBUFW(buf, 0) = 0x383f;
+ WBUFW(buf, 2) = g->emblem_len+12;
+ WBUFL(buf, 4) = g->guild_id;
+ WBUFL(buf, 8) = g->emblem_id;
+ memcpy(WBUFP(buf, 12), g->emblem_data, g->emblem_len);
+ mapif->sendall(buf, WBUFW(buf, 2));
+ return 0;
+}
+
+static int mapif_guild_master_changed(struct guild *g, int aid, int cid)
+{
+ unsigned char buf[14];
+ nullpo_ret(g);
+ WBUFW(buf, 0) = 0x3843;
+ WBUFL(buf, 2) = g->guild_id;
+ WBUFL(buf, 6) = aid;
+ WBUFL(buf, 10) = cid;
+ mapif->sendall(buf, 14);
+ return 0;
+}
+
+static int mapif_guild_castle_dataload(int fd, int sz, const int *castle_ids)
+{
+ struct guild_castle *gc = NULL;
+ int num = (sz - 4) / sizeof(int);
+ int len = 4 + num * sizeof(*gc);
+ int i;
+
+ nullpo_ret(castle_ids);
+ WFIFOHEAD(fd, len);
+ WFIFOW(fd, 0) = 0x3840;
+ WFIFOW(fd, 2) = len;
+ for (i = 0; i < num; i++) {
+ gc = inter_guild->castle_fromsql(*(castle_ids++));
+ memcpy(WFIFOP(fd, 4 + i * sizeof(*gc)), gc, sizeof(*gc));
+ }
+ WFIFOSET(fd, len);
+ return 0;
+}
+
+// Guild creation request
+static int mapif_parse_CreateGuild(int fd, int account_id, const char *name, const struct guild_member *master)
+{
+ struct guild *g;
+ nullpo_ret(name);
+ nullpo_ret(master);
+
+ g = inter_guild->create(name, master);
+
+ // Report to client
+ mapif->guild_created(fd,account_id,g);
+ if (g != NULL) {
+ mapif->guild_info(fd,g);
+ }
+
+ return 0;
+}
+
+// Return guild info to client
+static int mapif_parse_GuildInfo(int fd, int guild_id)
+{
+ struct guild * g = inter_guild->fromsql(guild_id); //We use this because on start-up the info of castle-owned guilds is required. [Skotlex]
+ if (g != NULL) {
+ if (!inter_guild->calcinfo(g))
+ mapif->guild_info(fd, g);
+ } else {
+ mapif->guild_noinfo(fd, guild_id); // Failed to load info
+ }
+ return 0;
+}
+
+// Add member to guild
+static int mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_member *m)
+{
+ nullpo_ret(m);
+
+ inter_guild->add_member(guild_id, m, fd);
+ return 0;
+}
+
+// Delete member from guild
+static int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, int flag, const char *mes)
+{
+ inter_guild->leave(guild_id, account_id, char_id, flag, mes, fd);
+ return 0;
+}
+
+// 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)
+{
+ inter_guild->update_member_info_short(guild_id, account_id, char_id, online, lv, class);
+ return 0;
+}
+
+// BreakGuild
+static int mapif_parse_BreakGuild(int fd, int guild_id)
+{
+ inter_guild->disband(guild_id);
+ return 0;
+}
+
+// Forward Guild message to others map servers
+static int mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char *mes, int len)
+{
+ return mapif->guild_message(guild_id,account_id,mes,len, fd);
+}
+
+/**
+ * Changes basic guild information
+ * The types are available in mmo.h::guild_basic_info
+ **/
+static int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void *data, int len)
+{
+ inter_guild->update_basic_info(guild_id, type, data, len);
+ // Information is already sent in mapif->guild_info
+ //mapif->guild_basicinfochanged(guild_id,type,data,len);
+ return 0;
+}
+
+// Modification of the guild
+static int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len)
+{
+ inter_guild->update_member_info(guild_id, account_id, char_id, type, data, len);
+ return 0;
+}
+
+// Change a position desc
+static int mapif_parse_GuildPosition(int fd, int guild_id, int idx, const struct guild_position *p)
+{
+ nullpo_ret(p);
+ inter_guild->update_position(guild_id, idx, p);
+ return 0;
+}
+
+// Guild Skill UP
+static int mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int account_id, int max)
+{
+ inter_guild->use_skill_point(guild_id, skill_id, account_id, max);
+ return 0;
+}
+
+// Alliance modification
+static int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag)
+{
+ inter_guild->change_alliance(guild_id1, guild_id2, account_id1, account_id2, flag);
+ return 0;
+}
+
+// Change guild message
+static int mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *mes2)
+{
+ inter_guild->update_notice(guild_id, mes1, mes2);
+ return 0;
+}
+
+static int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char *data)
+{
+ inter_guild->update_emblem(len, guild_id, data);
+ return 0;
+}
+
+static int mapif_parse_GuildCastleDataLoad(int fd, int len, const int *castle_ids)
+{
+ return mapif->guild_castle_dataload(fd, len, castle_ids);
+}
+
+static int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
+{
+ inter_guild->update_castle_data(castle_id, index, value);
+ return 0;
+}
+
+static int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int len)
+{
+ inter_guild->change_leader(guild_id, name, len);
+ return 0;
+}
+
+static void mapif_homunculus_created(int fd, int account_id, const struct s_homunculus *sh, unsigned char flag)
+{
+ nullpo_retv(sh);
+ WFIFOHEAD(fd, sizeof(struct s_homunculus) + 9);
+ WFIFOW(fd, 0) = 0x3890;
+ WFIFOW(fd, 2) = sizeof(struct s_homunculus) + 9;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOB(fd, 8) = flag;
+ memcpy(WFIFOP(fd, 9), sh, sizeof(struct s_homunculus));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+}
+
+static void mapif_homunculus_deleted(int fd, int flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x3893;
+ WFIFOB(fd,2) = flag; //Flag 1 = success
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd)
+{
+ WFIFOHEAD(fd, sizeof(struct s_homunculus) + 9);
+ WFIFOW(fd, 0) = 0x3891;
+ WFIFOW(fd, 2) = sizeof(struct s_homunculus) + 9;
+ WFIFOL(fd, 4) = account_id;
+ if (hd != NULL) {
+ WFIFOB(fd, 8) = 1; // success
+ memcpy(WFIFOP(fd, 9), hd, sizeof(struct s_homunculus));
+ } else {
+ WFIFOB(fd, 8) = 0; // not found.
+ memset(WFIFOP(fd, 9), 0, sizeof(struct s_homunculus));
+ }
+ WFIFOSET(fd, sizeof(struct s_homunculus) + 9);
+}
+
+static void mapif_homunculus_saved(int fd, int account_id, bool flag)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3892;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOB(fd, 6) = flag; // 1:success, 0:failure
+ WFIFOSET(fd, 7);
+}
+
+static void mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned char flag, const char *name)
+{
+ nullpo_retv(name);
+ WFIFOHEAD(fd, NAME_LENGTH + 12);
+ WFIFOW(fd, 0) = 0x3894;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOL(fd, 6) = char_id;
+ WFIFOB(fd, 10) = flag;
+ safestrncpy(WFIFOP(fd, 11), name, NAME_LENGTH);
+ WFIFOSET(fd, NAME_LENGTH + 12);
+}
+
+static void mapif_parse_homunculus_create(int fd, int len, int account_id, const struct s_homunculus *phd)
+{
+ struct s_homunculus shd;
+ bool result;
+
+ memcpy(&shd, phd, sizeof(shd));
+
+ result = inter_homunculus->create(&shd);
+ mapif->homunculus_created(fd, account_id, &shd, result);
+}
+
+static void mapif_parse_homunculus_delete(int fd, int homun_id)
+{
+ bool result = inter_homunculus->delete(homun_id);
+ mapif->homunculus_deleted(fd, result);
+}
+
+static void mapif_parse_homunculus_load(int fd, int account_id, int homun_id)
+{
+ struct s_homunculus hd;
+ bool result = inter_homunculus->load(homun_id, &hd);
+ mapif->homunculus_loaded(fd, account_id, (result ? &hd : NULL));
+}
+
+static void mapif_parse_homunculus_save(int fd, int len, int account_id, const struct s_homunculus *phd)
+{
+ bool result = inter_homunculus->save(phd);
+ mapif->homunculus_saved(fd, account_id, result);
+}
+
+static void mapif_parse_homunculus_rename(int fd, int account_id, int char_id, const char *name)
+{
+ bool result = inter_homunculus->rename(name);
+ mapif->homunculus_renamed(fd, account_id, char_id, result, name);
+}
+
+static void mapif_mail_sendinbox(int fd, int char_id, unsigned char flag, struct mail_data *md)
+{
+ nullpo_retv(md);
+ //FIXME: dumping the whole structure like this is unsafe [ultramage]
+ WFIFOHEAD(fd, sizeof(struct mail_data) + 9);
+ WFIFOW(fd, 0) = 0x3848;
+ WFIFOW(fd, 2) = sizeof(struct mail_data) + 9;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOB(fd, 8) = flag;
+ memcpy(WFIFOP(fd, 9),md,sizeof(struct mail_data));
+ WFIFOSET(fd,WFIFOW(fd, 2));
+}
+
+/*==========================================
+ * Client Inbox Request
+ *------------------------------------------*/
+static void mapif_parse_mail_requestinbox(int fd)
+{
+ int char_id = RFIFOL(fd, 2);
+ unsigned char flag = RFIFOB(fd, 6);
+ struct mail_data md;
+ memset(&md, 0, sizeof(md));
+ inter_mail->fromsql(char_id, &md);
+ mapif->mail_sendinbox(fd, char_id, flag, &md);
+}
+
+/*==========================================
+ * Mark mail as 'Read'
+ *------------------------------------------*/
+static void mapif_parse_mail_read(int fd)
+{
+ int mail_id = RFIFOL(fd, 2);
+ inter_mail->mark_read(mail_id);
+}
+
+static void mapif_mail_sendattach(int fd, int char_id, struct mail_message *msg)
+{
+ nullpo_retv(msg);
+ WFIFOHEAD(fd, sizeof(struct item) + 12);
+ WFIFOW(fd, 0) = 0x384a;
+ WFIFOW(fd, 2) = sizeof(struct item) + 12;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOL(fd, 8) = (msg->zeny > 0) ? msg->zeny : 0;
+ memcpy(WFIFOP(fd, 12), &msg->item, sizeof(struct item));
+ WFIFOSET(fd,WFIFOW(fd, 2));
+}
+
+static void mapif_parse_mail_getattach(int fd)
+{
+ struct mail_message msg = { 0 };
+ int char_id = RFIFOL(fd, 2);
+ int mail_id = RFIFOL(fd, 6);
+
+ if (!inter_mail->get_attachment(char_id, mail_id, &msg))
+ return;
+
+ mapif->mail_sendattach(fd, char_id, &msg);
+}
+
+/*==========================================
+ * Delete Mail
+ *------------------------------------------*/
+static void mapif_mail_delete(int fd, int char_id, int mail_id, bool failed)
+{
+ WFIFOHEAD(fd, 11);
+ WFIFOW(fd, 0) = 0x384b;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOL(fd, 6) = mail_id;
+ WFIFOB(fd, 10) = failed;
+ WFIFOSET(fd, 11);
+}
+
+static void mapif_parse_mail_delete(int fd)
+{
+ int char_id = RFIFOL(fd, 2);
+ int mail_id = RFIFOL(fd, 6);
+ bool failed = !inter_mail->delete(char_id, mail_id);
+ mapif->mail_delete(fd, char_id, mail_id, failed);
+}
+
+/*==========================================
+ * Report New Mail to Map Server
+ *------------------------------------------*/
+static void mapif_mail_new(struct mail_message *msg)
+{
+ unsigned char buf[74];
+
+ if (msg == NULL || msg->id == 0)
+ return;
+
+ WBUFW(buf, 0) = 0x3849;
+ WBUFL(buf, 2) = msg->dest_id;
+ WBUFL(buf, 6) = msg->id;
+ memcpy(WBUFP(buf, 10), msg->send_name, NAME_LENGTH);
+ memcpy(WBUFP(buf, 34), msg->title, MAIL_TITLE_LENGTH);
+ mapif->sendall(buf, 74);
+}
+
+/*==========================================
+ * Return Mail
+ *------------------------------------------*/
+static void mapif_mail_return(int fd, int char_id, int mail_id, int new_mail)
+{
+ WFIFOHEAD(fd, 11);
+ WFIFOW(fd, 0) = 0x384c;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOL(fd, 6) = mail_id;
+ WFIFOB(fd, 10) = (new_mail == 0);
+ WFIFOSET(fd, 11);
+}
+
+static void mapif_parse_mail_return(int fd)
+{
+ int char_id = RFIFOL(fd, 2);
+ int mail_id = RFIFOL(fd, 6);
+ int new_mail = 0;
+
+ if (!inter_mail->return_message(char_id, mail_id, &new_mail))
+ return;
+
+ mapif->mail_return(fd, char_id, mail_id, new_mail);
+}
+
+/*==========================================
+ * Send Mail
+ *------------------------------------------*/
+static void mapif_mail_send(int fd, struct mail_message* msg)
+{
+ int len = sizeof(struct mail_message) + 4;
+
+ nullpo_retv(msg);
+ WFIFOHEAD(fd, len);
+ WFIFOW(fd, 0) = 0x384d;
+ WFIFOW(fd, 2) = len;
+ memcpy(WFIFOP(fd, 4), msg, sizeof(struct mail_message));
+ WFIFOSET(fd,len);
+}
+
+static void mapif_parse_mail_send(int fd)
+{
+ struct mail_message msg;
+ int account_id = 0;
+
+ if (RFIFOW(fd, 2) != 8 + sizeof(struct mail_message))
+ return;
+
+ account_id = RFIFOL(fd, 4);
+ memcpy(&msg, RFIFOP(fd, 8), sizeof(struct mail_message));
+
+ inter_mail->send(account_id, &msg);
+
+ mapif->mail_send(fd, &msg); // notify sender
+ mapif->mail_new(&msg); // notify recipient
+}
+
+static void mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char flag)
+{
+ int size = sizeof(struct s_mercenary) + 5;
+
+ nullpo_retv(merc);
+ WFIFOHEAD(fd, size);
+ WFIFOW(fd, 0) = 0x3870;
+ WFIFOW(fd, 2) = size;
+ WFIFOB(fd, 4) = flag;
+ memcpy(WFIFOP(fd, 5), merc, sizeof(struct s_mercenary));
+ WFIFOSET(fd,size);
+}
+
+static void mapif_parse_mercenary_create(int fd, const struct s_mercenary *merc)
+{
+ struct s_mercenary merc_;
+ bool result;
+
+ memcpy(&merc_, merc, sizeof(merc_));
+
+ result = inter_mercenary->create(&merc_);
+ mapif->mercenary_send(fd, &merc_, result);
+}
+
+static void mapif_parse_mercenary_load(int fd, int merc_id, int char_id)
+{
+ struct s_mercenary merc;
+ bool result = inter_mercenary->load(merc_id, char_id, &merc);
+ mapif->mercenary_send(fd, &merc, result);
+}
+
+static void mapif_mercenary_deleted(int fd, unsigned char flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x3871;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_parse_mercenary_delete(int fd, int merc_id)
+{
+ bool result = inter_mercenary->delete(merc_id);
+ mapif->mercenary_deleted(fd, result);
+}
+
+static void mapif_mercenary_saved(int fd, unsigned char flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x3872;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+}
+
+static void mapif_parse_mercenary_save(int fd, const struct s_mercenary *merc)
+{
+ bool result = inter_mercenary->save(merc);
+ mapif->mercenary_saved(fd, result);
+}
+
+// Create a party whether or not
+static int mapif_party_created(int fd, int account_id, int char_id, struct party *p)
+{
+ WFIFOHEAD(fd, 39);
+ WFIFOW(fd, 0) = 0x3820;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOL(fd, 6) = char_id;
+ if (p != NULL) {
+ WFIFOB(fd, 10) = 0;
+ WFIFOL(fd, 11) = p->party_id;
+ memcpy(WFIFOP(fd, 15), p->name, NAME_LENGTH);
+ ShowInfo("int_party: Party created (%d - %s)\n", p->party_id, p->name);
+ } else {
+ WFIFOB(fd, 10) = 1;
+ WFIFOL(fd, 11) = 0;
+ memset(WFIFOP(fd, 15), 0, NAME_LENGTH);
+ }
+ WFIFOSET(fd, 39);
+
+ return 0;
+}
+
+//Party information not found
+static void mapif_party_noinfo(int fd, int party_id, int char_id)
+{
+ WFIFOHEAD(fd, 12);
+ WFIFOW(fd, 0) = 0x3821;
+ WFIFOW(fd, 2) = 12;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOL(fd, 8) = party_id;
+ WFIFOSET(fd, 12);
+ ShowWarning("int_party: info not found (party_id=%d char_id=%d)\n", party_id, char_id);
+}
+
+//Digest party information
+static void mapif_party_info(int fd, struct party* p, int char_id)
+{
+ unsigned char buf[8 + sizeof(struct party)];
+ nullpo_retv(p);
+ WBUFW(buf, 0) = 0x3821;
+ WBUFW(buf, 2) = 8 + sizeof(struct party);
+ WBUFL(buf, 4) = char_id;
+ memcpy(WBUFP(buf, 8), p, sizeof(struct party));
+
+ if (fd < 0)
+ mapif->sendall(buf, WBUFW(buf, 2));
+ else
+ mapif->send(fd, buf, WBUFW(buf, 2));
+}
+
+//Whether or not additional party members
+static int mapif_party_memberadded(int fd, int party_id, int account_id, int char_id, int flag)
+{
+ WFIFOHEAD(fd, 15);
+ WFIFOW(fd, 0) = 0x3822;
+ WFIFOL(fd, 2) = party_id;
+ WFIFOL(fd, 6) = account_id;
+ WFIFOL(fd, 10) = char_id;
+ WFIFOB(fd, 14) = flag;
+ WFIFOSET(fd, 15);
+
+ return 0;
+}
+
+// Party setting change notification
+static int mapif_party_optionchanged(int fd, struct party *p, int account_id, int flag)
+{
+ unsigned char buf[16];
+ nullpo_ret(p);
+ WBUFW(buf, 0) = 0x3823;
+ WBUFL(buf, 2) = p->party_id;
+ WBUFL(buf, 6) = account_id;
+ WBUFW(buf, 10) = p->exp;
+ WBUFW(buf, 12) = p->item;
+ WBUFB(buf, 14) = flag;
+ if (flag == 0)
+ mapif->sendall(buf, 15);
+ else
+ mapif->send(fd, buf, 15);
+ return 0;
+}
+
+//Withdrawal notification party
+static int mapif_party_withdraw(int party_id, int account_id, int char_id)
+{
+ unsigned char buf[16];
+
+ WBUFW(buf, 0) = 0x3824;
+ WBUFL(buf, 2) = party_id;
+ WBUFL(buf, 6) = account_id;
+ WBUFL(buf, 10) = char_id;
+ mapif->sendall(buf, 14);
+ return 0;
+}
+
+//Party map update notification
+static int mapif_party_membermoved(struct party *p, int idx)
+{
+ unsigned char buf[20];
+
+ nullpo_ret(p);
+ Assert_ret(idx >= 0 && idx < MAX_PARTY);
+ WBUFW(buf, 0) = 0x3825;
+ WBUFL(buf, 2) = p->party_id;
+ WBUFL(buf, 6) = p->member[idx].account_id;
+ WBUFL(buf, 10) = p->member[idx].char_id;
+ WBUFW(buf, 14) = p->member[idx].map;
+ WBUFB(buf, 16) = p->member[idx].online;
+ WBUFW(buf, 17) = p->member[idx].lv;
+ mapif->sendall(buf, 19);
+ return 0;
+}
+
+//Dissolution party notification
+static int mapif_party_broken(int party_id, int flag)
+{
+ unsigned char buf[16];
+ WBUFW(buf, 0) = 0x3826;
+ WBUFL(buf, 2) = party_id;
+ WBUFB(buf, 6) = flag;
+ mapif->sendall(buf, 7);
+ //printf("int_party: broken %d\n",party_id);
+ return 0;
+}
+
+//Remarks in the party
+static int mapif_party_message(int party_id, int account_id, const char *mes, int len, int sfd)
+{
+ unsigned char buf[512];
+ nullpo_ret(mes);
+ WBUFW(buf, 0) = 0x3827;
+ WBUFW(buf, 2) = len + 12;
+ WBUFL(buf, 4) = party_id;
+ WBUFL(buf, 8) = account_id;
+ memcpy(WBUFP(buf, 12), mes, len);
+ mapif->sendallwos(sfd, buf, len + 12);
+ return 0;
+}
+
+// Create Party
+static int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const struct party_member *leader)
+{
+ struct party_data *p;
+
+ nullpo_ret(name);
+ nullpo_ret(leader);
+
+ p = inter_party->create(name, item, item2, leader);
+
+ if (p == NULL) {
+ mapif->party_created(fd, leader->account_id, leader->char_id, NULL);
+ return 0;
+ }
+
+ mapif->party_info(fd, &p->party, 0);
+ mapif->party_created(fd, leader->account_id, leader->char_id, &p->party);
+
+ return 0;
+}
+
+// Party information request
+static void mapif_parse_PartyInfo(int fd, int party_id, int char_id)
+{
+ struct party_data *p;
+ p = inter_party->fromsql(party_id);
+
+ if (p != NULL)
+ mapif->party_info(fd, &p->party, char_id);
+ else
+ mapif->party_noinfo(fd, party_id, char_id);
+}
+
+// Add a player to party request
+static int mapif_parse_PartyAddMember(int fd, int party_id, const struct party_member *member)
+{
+ nullpo_ret(member);
+
+ if (!inter_party->add_member(party_id, member)) {
+ mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 1);
+ return 0;
+ }
+ mapif->party_memberadded(fd, party_id, member->account_id, member->char_id, 0);
+
+ return 0;
+}
+
+//Party setting change request
+static int mapif_parse_PartyChangeOption(int fd, int party_id, int account_id, int exp, int item)
+{
+ inter_party->change_option(party_id, account_id, exp, item, fd);
+ return 0;
+}
+
+//Request leave party
+static int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
+{
+ inter_party->leave(party_id, account_id, char_id);
+ return 0;
+}
+
+// When member goes to other map or levels up.
+static int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv)
+{
+ inter_party->change_map(party_id, account_id, char_id, map, online, lv);
+ return 0;
+}
+
+//Request party dissolution
+static int mapif_parse_BreakParty(int fd, int party_id)
+{
+ inter_party->disband(party_id);
+ return 0;
+}
+
+//Party sending the message
+static int mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char *mes, int len)
+{
+ return mapif->party_message(party_id, account_id, mes, len, fd);
+}
+
+static int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char_id)
+{
+ if (!inter_party->change_leader(party_id, account_id, char_id))
+ return 0;
+ return 1;
+}
+
+static int mapif_pet_created(int fd, int account_id, struct s_pet *p)
+{
+ WFIFOHEAD(fd, 12);
+ WFIFOW(fd, 0) = 0x3880;
+ WFIFOL(fd, 2) = account_id;
+ if (p != NULL){
+ WFIFOW(fd, 6) = p->class_;
+ WFIFOL(fd, 8) = 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;
+ }
+ WFIFOSET(fd, 12);
+
+ return 0;
+}
+
+static int mapif_pet_info(int fd, int account_id, struct s_pet *p)
+{
+ nullpo_ret(p);
+ WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
+ WFIFOW(fd, 0) = 0x3881;
+ WFIFOW(fd, 2) = sizeof(struct s_pet) + 9;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOB(fd, 8) = 0;
+ memcpy(WFIFOP(fd, 9), p, sizeof(struct s_pet));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+
+ return 0;
+}
+
+static int mapif_pet_noinfo(int fd, int account_id)
+{
+ WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
+ WFIFOW(fd, 0) = 0x3881;
+ WFIFOW(fd, 2) = sizeof(struct s_pet) + 9;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOB(fd, 8) = 1;
+ memset(WFIFOP(fd, 9), 0, sizeof(struct s_pet));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+
+ return 0;
+}
+
+static int mapif_save_pet_ack(int fd, int account_id, int flag)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3882;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOB(fd, 6) = flag;
+ WFIFOSET(fd, 7);
+
+ return 0;
+}
+
+static int mapif_delete_pet_ack(int fd, int flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x3883;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+
+ return 0;
+}
+
+static int mapif_save_pet(int fd, int account_id, const struct s_pet *data)
+{
+ //here process pet save request.
+ int len;
+ nullpo_ret(data);
+ RFIFOHEAD(fd);
+ len = RFIFOW(fd, 2);
+ if (sizeof(struct s_pet) != len-8) {
+ ShowError("inter pet: data size mismatch: %d != %"PRIuS"\n", len-8, sizeof(struct s_pet));
+ return 0;
+ }
+
+ inter_pet->tosql(data);
+ mapif->save_pet_ack(fd, account_id, 0);
+
+ return 0;
+}
+
+static int mapif_delete_pet(int fd, int pet_id)
+{
+ mapif->delete_pet_ack(fd, inter_pet->delete_(pet_id));
+
+ return 0;
+}
+
+static int mapif_parse_CreatePet(int fd)
+{
+ int account_id;
+ struct s_pet *pet;
+
+ RFIFOHEAD(fd);
+ account_id = RFIFOL(fd, 2);
+ pet = inter_pet->create(account_id,
+ RFIFOL(fd, 6),
+ RFIFOW(fd, 10),
+ RFIFOW(fd, 12),
+ RFIFOL(fd, 14),
+ RFIFOL(fd, 18),
+ RFIFOW(fd, 22),
+ RFIFOW(fd, 24),
+ RFIFOB(fd, 26),
+ RFIFOB(fd, 27),
+ RFIFOP(fd, 28));
+
+ if (pet != NULL)
+ mapif->pet_created(fd, account_id, pet);
+ else
+ mapif->pet_created(fd, account_id, NULL);
+
+ return 0;
+}
+
+static int mapif_parse_LoadPet(int fd)
+{
+ int account_id;
+ struct s_pet *pet;
+
+ RFIFOHEAD(fd);
+ account_id = RFIFOL(fd, 2);
+ pet = inter_pet->load(account_id, RFIFOL(fd, 6), RFIFOL(fd, 10));
+
+ if (pet != NULL)
+ mapif->pet_info(fd, account_id, pet);
+ else
+ mapif->pet_noinfo(fd, account_id);
+ return 0;
+}
+
+static int mapif_parse_SavePet(int fd)
+{
+ RFIFOHEAD(fd);
+ mapif->save_pet(fd, RFIFOL(fd, 4), RFIFOP(fd, 8));
+ return 0;
+}
+
+static int mapif_parse_DeletePet(int fd)
+{
+ RFIFOHEAD(fd);
+ mapif->delete_pet(fd, RFIFOL(fd, 2));
+ return 0;
+}
+
+static void mapif_quest_save_ack(int fd, int char_id, bool success)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3861;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOB(fd, 6) = success ? 1 : 0;
+ WFIFOSET(fd, 7);
+}
+
+/**
+ * Handles the save request from mapserver for a character's questlog.
+ *
+ * Received quests are saved, and an ack is sent back to the map server.
+ *
+ * @see inter_parse_frommap
+ */
+static int mapif_parse_quest_save(int fd)
+{
+ int num = (RFIFOW(fd, 2) - 8) / sizeof(struct quest);
+ int char_id = RFIFOL(fd, 4);
+ const struct quest *qd = NULL;
+ bool success;
+
+ if (num > 0)
+ qd = RFIFOP(fd,8);
+
+ success = inter_quest->save(char_id, qd, num);
+
+ // Send ack
+ mapif->quest_save_ack(fd, char_id, success);
+
+ return 0;
+}
+
+static void mapif_send_quests(int fd, int char_id, struct quest *tmp_questlog, int num_quests)
+{
+ WFIFOHEAD(fd,num_quests*sizeof(struct quest) + 8);
+ WFIFOW(fd, 0) = 0x3860;
+ WFIFOW(fd, 2) = num_quests*sizeof(struct quest) + 8;
+ WFIFOL(fd, 4) = char_id;
+
+ if (num_quests > 0) {
+ nullpo_retv(tmp_questlog);
+ memcpy(WFIFOP(fd, 8), tmp_questlog, sizeof(struct quest) * num_quests);
+ }
+
+ WFIFOSET(fd, num_quests * sizeof(struct quest) + 8);
+}
+
+/**
+ * Sends questlog to the map server
+ *
+ * Note: Completed quests (state == Q_COMPLETE) are guaranteed to be sent last
+ * and the map server relies on this behavior (once the first Q_COMPLETE quest,
+ * all of them are considered to be Q_COMPLETE)
+ *
+ * @see inter_parse_frommap
+ */
+static int mapif_parse_quest_load(int fd)
+{
+ int char_id = RFIFOL(fd,2);
+ struct quest *tmp_questlog = NULL;
+ int num_quests;
+
+ tmp_questlog = inter_quest->fromsql(char_id, &num_quests);
+ mapif->send_quests(fd, char_id, tmp_questlog, num_quests);
+
+ if (tmp_questlog != NULL)
+ aFree(tmp_questlog);
+
+ return 0;
+}
+
/* RoDEX */
-int mapif_parse_rodex_requestinbox(int fd);
-void mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails);
-int mapif_parse_rodex_checkhasnew(int fd);
-void mapif_rodex_sendhasnew(int fd, int char_id, bool has_new);
-int mapif_parse_rodex_updatemail(int fd);
-int mapif_parse_rodex_send(int fd);
-void mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accountid, bool result);
-int mapif_parse_rodex_checkname(int fd);
-void mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name);
-int mapif_load_guild_storage(int fd,int account_id,int guild_id, char flag);
-int mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fail);
-int mapif_parse_LoadGuildStorage(int fd);
-int mapif_parse_SaveGuildStorage(int fd);
-int mapif_account_storage_load(int fd, int account_id);
-int mapif_parse_AccountStorageLoad(int fd);
-int mapif_parse_AccountStorageSave(int fd);
-void mapif_send_AccountStorageSaveAck(int fd, int account_id, bool save);
-int mapif_itembound_ack(int fd, int aid, int guild_id);
-int mapif_parse_ItemBoundRetrieve_sub(int fd);
-void mapif_parse_ItemBoundRetrieve(int fd);
-void mapif_parse_accinfo(int fd);
-void mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
- const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
-int mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
-int mapif_wis_message(struct WisData *wd);
-void mapif_wis_response(int fd, const unsigned char *src, int flag);
-int mapif_wis_end(struct WisData *wd, int flag);
-int mapif_account_reg_reply(int fd,int account_id,int char_id, int type);
-int mapif_disconnectplayer(int fd, int account_id, int char_id, int reason);
-int mapif_parse_broadcast(int fd);
-int mapif_parse_WisRequest(int fd);
-int mapif_parse_WisReply(int fd);
-int mapif_parse_WisToGM(int fd);
-int mapif_parse_Registry(int fd);
-int mapif_parse_RegistryRequest(int fd);
-void mapif_namechange_ack(int fd, int account_id, int char_id, int type, int flag, const char *const name);
-int mapif_parse_NameChangeRequest(int fd);
+
+/*==========================================
+ * Inbox Request
+ *------------------------------------------*/
+static void mapif_parse_rodex_requestinbox(int fd)
+{
+ int count;
+ int char_id = RFIFOL(fd,2);
+ int account_id = RFIFOL(fd, 6);
+ int8 flag = RFIFOB(fd, 10);
+ int8 opentype = RFIFOB(fd, 11);
+ int64 mail_id = RFIFOQ(fd, 12);
+ struct rodex_maillist mails = { 0 };
+
+ VECTOR_INIT(mails);
+ if (flag == 0)
+ count = inter_rodex->fromsql(char_id, account_id, opentype, 0, &mails);
+ else
+ count = inter_rodex->fromsql(char_id, account_id, opentype, mail_id, &mails);
+ mapif->rodex_sendinbox(fd, char_id, opentype, flag, count, mail_id, &mails);
+ VECTOR_CLEAR(mails);
+}
+
+static void mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails)
+{
+ int per_packet = (UINT16_MAX - 24) / sizeof(struct rodex_message);
+ int sent = 0;
+ bool is_first = true;
+ nullpo_retv(mails);
+ Assert_retv(char_id > 0);
+ Assert_retv(count >= 0);
+ Assert_retv(mail_id >= 0);
+
+ do {
+ int i = 24, j, size, limit;
+ int to_send = count - sent;
+ bool is_last = true;
+
+ if (to_send <= per_packet) {
+ size = to_send * sizeof(struct rodex_message) + 24;
+ limit = to_send;
+ is_last = true;
+ } else {
+ limit = min(to_send, per_packet);
+ if (limit != to_send) {
+ is_last = false;
+ }
+ size = limit * sizeof(struct rodex_message) + 24;
+ }
+
+ WFIFOHEAD(fd, size);
+ WFIFOW(fd, 0) = 0x3895;
+ WFIFOW(fd, 2) = size;
+ WFIFOL(fd, 4) = char_id;
+ WFIFOB(fd, 8) = opentype;
+ WFIFOB(fd, 9) = flag;
+ WFIFOB(fd, 10) = is_last;
+ WFIFOB(fd, 11) = is_first;
+ WFIFOL(fd, 12) = limit;
+ WFIFOQ(fd, 16) = mail_id;
+ for (j = 0; j < limit; ++j, ++sent, i += sizeof(struct rodex_message)) {
+ memcpy(WFIFOP(fd, i), &VECTOR_INDEX(*mails, sent), sizeof(struct rodex_message));
+ }
+ WFIFOSET(fd, size);
+
+ is_first = false;
+ } while (sent < count);
+}
+
+/*==========================================
+ * Checks if there are new mails
+ *------------------------------------------*/
+static void mapif_parse_rodex_checkhasnew(int fd)
+{
+ int char_id = RFIFOL(fd, 2);
+ int account_id = RFIFOL(fd, 6);
+ bool has_new;
+
+ Assert_retv(account_id >= START_ACCOUNT_NUM && account_id <= END_ACCOUNT_NUM);
+ Assert_retv(char_id >= START_CHAR_NUM);
+
+ has_new = inter_rodex->hasnew(char_id, account_id);
+ mapif->rodex_sendhasnew(fd, char_id, has_new);
+}
+
+static void mapif_rodex_sendhasnew(int fd, int char_id, bool has_new)
+{
+ Assert_retv(char_id > 0);
+
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3896;
+ WFIFOL(fd, 2) = char_id;
+ WFIFOB(fd, 6) = has_new;
+ WFIFOSET(fd, 7);
+}
+
+/*==========================================
+ * Update/Delete mail
+ *------------------------------------------*/
+static void mapif_parse_rodex_updatemail(int fd)
+{
+ int64 mail_id = RFIFOL(fd, 2);
+ int8 flag = RFIFOB(fd, 10);
+
+ inter_rodex->updatemail(mail_id, flag);
+}
+
+/*==========================================
+ * Send Mail
+ *------------------------------------------*/
+static void mapif_parse_rodex_send(int fd)
+{
+ struct rodex_message msg = { 0 };
+
+ if (RFIFOW(fd,2) != 4 + sizeof(struct rodex_message))
+ return;
+
+ memcpy(&msg, RFIFOP(fd,4), sizeof(struct rodex_message));
+ if (msg.receiver_id > 0 || msg.receiver_accountid > 0)
+ msg.id = inter_rodex->savemessage(&msg);
+
+ mapif->rodex_send(fd, msg.sender_id, msg.receiver_id, msg.receiver_accountid, msg.id > 0 ? true : false);
+}
+
+static void mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accountid, bool result)
+{
+ Assert_retv(sender_id >= 0);
+ Assert_retv(receiver_id + receiver_accountid > 0);
+
+ WFIFOHEAD(fd,15);
+ WFIFOW(fd,0) = 0x3897;
+ WFIFOL(fd,2) = sender_id;
+ WFIFOL(fd,6) = receiver_id;
+ WFIFOL(fd,10) = receiver_accountid;
+ WFIFOB(fd,14) = result;
+ WFIFOSET(fd,15);
+}
+
+/*------------------------------------------
+ * Check Player
+ *------------------------------------------*/
+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;
+
+ safestrncpy(name, RFIFOP(fd, 6), NAME_LENGTH);
+
+ if (inter_rodex->checkname(name, &target_char_id, &target_class, &target_level) == true)
+ mapif->rodex_checkname(fd, reqchar_id, target_char_id, target_class, target_level, name);
+ else
+ 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)
+{
+ nullpo_retv(name);
+ Assert_retv(reqchar_id > 0);
+ Assert_retv(target_char_id >= 0);
+
+ WFIFOHEAD(fd, 16 + 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);
+}
+
+static int mapif_load_guild_storage(int fd, int account_id, int guild_id, char flag)
+{
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `guild_id` FROM `%s` WHERE `guild_id`='%d'", guild_db, guild_id)) {
+ Sql_ShowDebug(inter->sql_handle);
+ } else if (SQL->NumRows(inter->sql_handle) > 0) {
+ // guild exists
+ WFIFOHEAD(fd, sizeof(struct guild_storage) + 13);
+ WFIFOW(fd, 0) = 0x3818;
+ WFIFOW(fd, 2) = sizeof(struct guild_storage)+13;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOL(fd, 8) = guild_id;
+ WFIFOB(fd, 12) = flag; //1 open storage, 0 don't open
+ inter_storage->guild_storage_fromsql(guild_id, WFIFOP(fd, 13));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+ return 0;
+ }
+ // guild does not exist
+ SQL->FreeResult(inter->sql_handle);
+ WFIFOHEAD(fd, 12);
+ WFIFOW(fd, 0) = 0x3818;
+ WFIFOW(fd, 2) = 12;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOL(fd, 8) = 0;
+ WFIFOSET(fd, 12);
+ return 0;
+}
+
+static int mapif_save_guild_storage_ack(int fd, int account_id, int guild_id, int fail)
+{
+ WFIFOHEAD(fd, 11);
+ WFIFOW(fd, 0) = 0x3819;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOL(fd, 6) = guild_id;
+ WFIFOB(fd, 10) = fail;
+ WFIFOSET(fd, 11);
+ return 0;
+}
+
+/**
+ * Loads the account storage and send to the map server.
+ * @packet 0x3805 [out] <account_id>.L <struct item[]>.P
+ * @param fd [in] file/socket descriptor.
+ * @param account_id [in] account id of the session.
+ * @return 1 on success, 0 on failure.
+ */
+static int mapif_account_storage_load(int fd, int account_id)
+{
+ struct storage_data stor = { 0 };
+ int count = 0, i = 0, len = 0;
+
+ Assert_ret(account_id > 0);
+
+ VECTOR_INIT(stor.item);
+ count = inter_storage->fromsql(account_id, &stor);
+
+ len = 8 + count * sizeof(struct item);
+
+ WFIFOHEAD(fd, len);
+ WFIFOW(fd, 0) = 0x3805;
+ WFIFOW(fd, 2) = (uint16) len;
+ WFIFOL(fd, 4) = account_id;
+ for (i = 0; i < count; i++)
+ memcpy(WFIFOP(fd, 8 + i * sizeof(struct item)), &VECTOR_INDEX(stor.item, i), sizeof(struct item));
+ WFIFOSET(fd, len);
+
+ VECTOR_CLEAR(stor.item);
+
+ return 1;
+}
+
+/**
+ * Parses account storage load request from map server.
+ * @packet 0x3010 [in] <account_id>.L
+ * @param fd [in] file/socket descriptor
+ * @return 1 on success, 0 on failure.
+ */
+static int mapif_parse_AccountStorageLoad(int fd)
+{
+ int account_id = RFIFOL(fd, 2);
+
+ Assert_ret(fd > 0);
+ Assert_ret(account_id > 0);
+
+ mapif->account_storage_load(fd, account_id);
+
+ return 1;
+}
+
+/**
+ * Parses an account storage save request from the map server.
+ * @packet 0x3011 [in] <packet_len>.W <account_id>.L <struct item[]>.P
+ * @param fd [in] file/socket descriptor.
+ * @return 1 on success, 0 on failure.
+ */
+static int mapif_parse_AccountStorageSave(int fd)
+{
+ int payload_size = RFIFOW(fd, 2) - 8, account_id = RFIFOL(fd, 4);
+ int i = 0, count = 0;
+ struct storage_data p_stor = { 0 };
+
+ Assert_ret(fd > 0);
+ Assert_ret(account_id > 0);
+
+ count = payload_size/sizeof(struct item);
+
+ VECTOR_INIT(p_stor.item);
+
+ if (count > 0) {
+ VECTOR_ENSURE(p_stor.item, count, 1);
+
+ for (i = 0; i < count; i++) {
+ const struct item *it = RFIFOP(fd, 8 + i * sizeof(struct item));
+
+ VECTOR_PUSH(p_stor.item, *it);
+ }
+
+ p_stor.aggregate = count;
+ }
+
+ inter_storage->tosql(account_id, &p_stor);
+
+ VECTOR_CLEAR(p_stor.item);
+
+ mapif->sAccountStorageSaveAck(fd, account_id, true);
+
+ return 1;
+}
+
+/**
+ * Sends an acknowledgement for the save
+ * status of the account storage.
+ * @packet 0x3808 [out] <account_id>.L <save_flag>.B
+ * @param fd [in] File/Socket Descriptor.
+ * @param account_id [in] Account ID of the storage in question.
+ * @param flag [in] Save flag, true for success and false for failure.
+ */
+static void mapif_send_AccountStorageSaveAck(int fd, int account_id, bool flag)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3808;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOB(fd, 6) = flag ? 1 : 0;
+ WFIFOSET(fd, 7);
+}
+
+static int mapif_parse_LoadGuildStorage(int fd)
+{
+ RFIFOHEAD(fd);
+
+ mapif->load_guild_storage(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), 1);
+
+ return 0;
+}
+
+static int mapif_parse_SaveGuildStorage(int fd)
+{
+ int guild_id;
+ int len;
+
+ RFIFOHEAD(fd);
+ guild_id = RFIFOL(fd, 8);
+ len = RFIFOW(fd, 2);
+
+ if (sizeof(struct guild_storage) != len - 12) {
+ ShowError("inter storage: data size mismatch: %d != %"PRIuS"\n", len - 12, sizeof(struct guild_storage));
+ } else if (inter_storage->guild_storage_tosql(guild_id, RFIFOP(fd, 12))) {
+ mapif->save_guild_storage_ack(fd, RFIFOL(fd, 4), guild_id, 0);
+ return 0;
+ }
+ mapif->save_guild_storage_ack(fd, RFIFOL(fd, 4), guild_id, 1);
+
+ return 0;
+}
+
+static int mapif_itembound_ack(int fd, int aid, int guild_id)
+{
+#ifdef GP_BOUND_ITEMS
+ WFIFOHEAD(fd, 8);
+ WFIFOW(fd, 0) = 0x3856;
+ WFIFOL(fd, 2) = aid;/* the value is not being used, drop? */
+ WFIFOW(fd, 6) = guild_id;
+ WFIFOSET(fd, 8);
+#endif
+ return 0;
+}
+
+static void mapif_parse_ItemBoundRetrieve(int fd)
+{
+#ifdef GP_BOUND_ITEMS
+ int char_id = RFIFOL(fd, 2);
+ int account_id = RFIFOL(fd, 6);
+ int guild_id = RFIFOW(fd, 10);
+
+ inter_storage->retrieve_bound_items(char_id, account_id, guild_id);
+
+ //Finally reload storage and tell map we're done
+ mapif->load_guild_storage(fd, account_id, guild_id, 0);
+
+ // If character is logged in char, disconnect
+ chr->disconnect_player(account_id);
+#endif // GP_BOUND_ITEMS
+
+ /* tell map server the operation is over and it can unlock the storage */
+ mapif->itembound_ack(fd, RFIFOL(fd, 6), RFIFOW(fd, 10));
+}
+
+static void mapif_parse_accinfo(int fd)
+{
+ char query[NAME_LENGTH];
+ int u_fd = RFIFOL(fd, 2), aid = RFIFOL(fd, 6), castergroup = RFIFOL(fd, 10);
+
+ safestrncpy(query, RFIFOP(fd, 14), NAME_LENGTH);
+
+ inter->accinfo(u_fd, aid, castergroup, query, fd);
+}
+
+// broadcast sending
+static int mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd)
+{
+ unsigned char *buf = (unsigned char*)aMalloc((len)*sizeof(unsigned char));
+
+ nullpo_ret(mes);
+ Assert_ret(len >= 16);
+ WBUFW(buf, 0) = 0x3800;
+ WBUFW(buf, 2) = len;
+ WBUFL(buf, 4) = fontColor;
+ WBUFW(buf, 8) = fontType;
+ WBUFW(buf, 10) = fontSize;
+ WBUFW(buf, 12) = fontAlign;
+ WBUFW(buf, 14) = fontY;
+ memcpy(WBUFP(buf, 16), mes, len - 16);
+ mapif->sendallwos(sfd, buf, len);
+
+ aFree(buf);
+ return 0;
+}
+
+// Wis sending
+static int mapif_wis_message(struct WisData *wd)
+{
+ unsigned char buf[2048];
+ nullpo_ret(wd);
+ //if (wd->len > 2047-56) wd->len = 2047-56; //Force it to fit to avoid crashes. [Skotlex]
+ if (wd->len < 0)
+ wd->len = 0;
+ if (wd->len >= (int)sizeof(wd->msg) - 1)
+ wd->len = (int)sizeof(wd->msg) - 1;
+
+ WBUFW(buf, 0) = 0x3801;
+ WBUFW(buf, 2) = 56 + wd->len;
+ WBUFL(buf, 4) = wd->id;
+ memcpy(WBUFP(buf, 8), wd->src, NAME_LENGTH);
+ memcpy(WBUFP(buf, 32), wd->dst, NAME_LENGTH);
+ memcpy(WBUFP(buf, 56), wd->msg, wd->len);
+ wd->count = mapif->sendall(buf, WBUFW(buf, 2));
+
+ return 0;
+}
+
+static void mapif_wis_response(int fd, const unsigned char *src, int flag)
+{
+ unsigned char buf[27];
+ nullpo_retv(src);
+ WBUFW(buf, 0) = 0x3802;
+ memcpy(WBUFP(buf, 2), src, 24);
+ WBUFB(buf, 26) = flag;
+ mapif->send(fd, buf, 27);
+}
+
+// Wis sending result
+static int mapif_wis_end(struct WisData *wd, int flag)
+{
+ nullpo_ret(wd);
+ mapif->wis_response(wd->fd, wd->src, flag);
+ return 0;
+}
+
+#if 0
+// Account registry transfer to map-server
+static void mapif_account_reg(int fd, unsigned char *src)
+{
+ nullpo_retv(src);
+ WBUFW(src, 0) = 0x3804; //NOTE: writing to RFIFO
+ mapif->sendallwos(fd, src, WBUFW(src, 2));
+}
+#endif // 0
+
+// Send the requested account_reg
+static int mapif_account_reg_reply(int fd,int account_id,int char_id, int type)
+{
+ inter->accreg_fromsql(account_id, char_id, fd, type);
+ return 0;
+}
+
+//Request to kick char from a certain map server. [Skotlex]
+static int mapif_disconnectplayer(int fd, int account_id, int char_id, int reason)
+{
+ if (fd < 0)
+ return -1;
+
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x2b1f;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOB(fd, 6) = reason;
+ WFIFOSET(fd, 7);
+ return 0;
+}
+
+// broadcast sending
+static int mapif_parse_broadcast(int fd)
+{
+ mapif->broadcast(RFIFOP(fd, 16), RFIFOW(fd, 2), RFIFOL(fd, 4), RFIFOW(fd, 8), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOW(fd, 14), fd);
+ return 0;
+}
+
+// Wisp/page request to send
+static int mapif_parse_WisRequest(int fd)
+{
+ struct WisData* wd;
+ char name[NAME_LENGTH];
+ char *data;
+ size_t len;
+
+ if (fd <= 0) // check if we have a valid fd
+ return 0;
+
+ if (RFIFOW(fd, 2) - 52 >= sizeof(wd->msg)) {
+ ShowWarning("inter: Wis message size too long.\n");
+ return 0;
+ } else if (RFIFOW(fd, 2) - 52 <= 0) { // normally, impossible, but who knows...
+ ShowError("inter: Wis message doesn't exist.\n");
+ return 0;
+ }
+
+ safestrncpy(name, RFIFOP(fd, 28), NAME_LENGTH); //Received name may be too large and not contain \0! [Skotlex]
+
+ // search if character exists before to ask all map-servers
+ if (!chr->name_exists(name, NULL)) {
+ mapif->wis_response(fd, RFIFOP(fd, 4), 1);
+ } else {
+ // Character exists. So, ask all map-servers
+
+ // to be sure of the correct name, rewrite it
+ SQL->GetData(inter->sql_handle, 0, &data, &len);
+ memset(name, 0, NAME_LENGTH);
+ memcpy(name, data, min(len, NAME_LENGTH));
+ // if source is destination, don't ask other servers.
+ if (strncmp(RFIFOP(fd, 4), name, NAME_LENGTH) == 0) {
+ mapif->wis_response(fd, RFIFOP(fd, 4), 1);
+ } else {
+ wd = inter->add_wisdata(fd, RFIFOP(fd, 4), RFIFOP(fd, 28), RFIFOP(fd, 52), RFIFOW(fd, 2) - 52);
+ mapif->wis_message(wd);
+ }
+ }
+
+ SQL->FreeResult(inter->sql_handle);
+ return 0;
+}
+
+// Wisp/page transmission result
+static int mapif_parse_WisReply(int fd)
+{
+ int id, flag;
+ struct WisData *wd;
+
+ id = RFIFOL(fd,2);
+ flag = RFIFOB(fd,6);
+ wd = inter->get_wisdata(id);
+ if (wd == NULL)
+ return 0; // This wisp was probably suppress before, because it was timeout of because of target was found on another map-server
+
+ if ((--wd->count) <= 0 || flag != 1) {
+ mapif->wis_end(wd, flag); // flag: 0: success to send whisper, 1: target character is not logged in?, 2: ignored by target
+ inter->remove_wisdata(id);
+ }
+
+ return 0;
+}
+
+// Received wisp message from map-server for ALL gm (just copy the message and resends it to ALL map-servers)
+static int mapif_parse_WisToGM(int fd)
+{
+ unsigned char buf[2048]; // 0x3003/0x3803 <packet_len>.w <wispname>.24B <min_gm_level>.w <message>.?B
+
+ memcpy(WBUFP(buf,0), RFIFOP(fd,0), RFIFOW(fd,2)); // Message contains the NUL terminator (see intif_wis_message_to_gm())
+ WBUFW(buf, 0) = 0x3803;
+ mapif->sendall(buf, RFIFOW(fd,2));
+
+ return 0;
+}
+
+// Save account_reg into sql (type=2)
+static int mapif_parse_Registry(int fd)
+{
+ int account_id = RFIFOL(fd, 4), char_id = RFIFOL(fd, 8), count = RFIFOW(fd, 12);
+
+ if (count != 0) {
+ int cursor = 14, i;
+ char key[SCRIPT_VARNAME_LENGTH+1], sval[254];
+ bool isLoginActive = sockt->session_is_active(chr->login_fd);
+
+ if (isLoginActive)
+ chr->global_accreg_to_login_start(account_id, char_id);
+
+ for (i = 0; i < count; i++) {
+ unsigned int index;
+ int len = RFIFOB(fd, cursor);
+ safestrncpy(key, RFIFOP(fd, cursor + 1), min((int)sizeof(key), len));
+ cursor += len + 1;
+
+ index = RFIFOL(fd, cursor);
+ cursor += 4;
+
+ switch (RFIFOB(fd, cursor++)) {
+ /* int */
+ case 0:
+ inter->savereg(account_id, char_id, key, index, RFIFOL(fd, cursor), false);
+ cursor += 4;
+ break;
+ case 1:
+ inter->savereg(account_id, char_id, key, index, 0, false);
+ break;
+ /* str */
+ case 2:
+ len = RFIFOB(fd, cursor);
+ safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len));
+ cursor += len + 1;
+ inter->savereg(account_id, char_id, key, index, (intptr_t)sval, true);
+ break;
+ case 3:
+ inter->savereg(account_id, char_id, key, index, 0, true);
+ break;
+ default:
+ ShowError("mapif->parse_Registry: unknown type %d\n", RFIFOB(fd, cursor - 1));
+ return 1;
+ }
+ }
+
+ if (isLoginActive)
+ chr->global_accreg_to_login_send();
+ }
+ return 0;
+}
+
+// Request the value of all registries.
+static int mapif_parse_RegistryRequest(int fd)
+{
+ //Load Char Registry
+ if (RFIFOB(fd, 12))
+ mapif->account_reg_reply(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), 3); // 3: char reg
+ //Load Account Registry
+ if (RFIFOB(fd, 11) != 0)
+ mapif->account_reg_reply(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), 2); // 2: account reg
+ //Ask Login Server for Account2 values.
+ if (RFIFOB(fd, 10) != 0)
+ chr->request_accreg2(RFIFOL(fd, 2), RFIFOL(fd, 6));
+ return 1;
+}
+
+static void mapif_namechange_ack(int fd, int account_id, int char_id, int type, int flag, const char *const name)
+{
+ nullpo_retv(name);
+ WFIFOHEAD(fd, NAME_LENGTH+13);
+ WFIFOW(fd, 0) = 0x3806;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOL(fd, 6) = char_id;
+ WFIFOB(fd, 10) = type;
+ WFIFOB(fd, 11) = flag;
+ memcpy(WFIFOP(fd, 12), name, NAME_LENGTH);
+ WFIFOSET(fd, NAME_LENGTH + 13);
+}
+
+static int mapif_parse_NameChangeRequest(int fd)
+{
+ int account_id, char_id, type;
+ const char *name;
+ int i;
+
+ account_id = RFIFOL(fd, 2);
+ char_id = RFIFOL(fd, 6);
+ type = RFIFOB(fd, 10);
+ name = RFIFOP(fd, 11);
+
+ // Check Authorized letters/symbols in the name
+ if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorized
+ for (i = 0; i < NAME_LENGTH && name[i]; i++)
+ if (strchr(char_name_letters, name[i]) == NULL) {
+ mapif->namechange_ack(fd, account_id, char_id, type, 0, name);
+ return 0;
+ }
+ } else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden
+ for (i = 0; i < NAME_LENGTH && name[i]; i++)
+ if (strchr(char_name_letters, name[i]) != NULL) {
+ mapif->namechange_ack(fd, account_id, char_id, type, 0, name);
+ return 0;
+ }
+ }
+ //TODO: type holds the type of object to rename.
+ //If it were a player, it needs to have the guild information and db information
+ //updated here, because changing it on the map won't make it be saved [Skotlex]
+
+ //name allowed.
+ mapif->namechange_ack(fd, account_id, char_id, type, 1, name);
+ return 0;
+}
+
// Clan System
-int mapif_parse_ClanMemberKick(int fd, int clan_id, int kick_interval);
-int mapif_parse_ClanMemberCount(int fd, int clan_id, int kick_interval);
+static int mapif_parse_ClanMemberKick(int fd, int clan_id, int kick_interval)
+{
+ int count = 0;
-struct mapif_interface mapif_s;
-struct mapif_interface *mapif;
+ if (inter_clan->kick_inactive_members(clan_id, kick_interval) == 1)
+ count = inter_clan->count_members(clan_id, kick_interval);
+
+ WFIFOHEAD(fd, 10);
+ WFIFOW(fd, 0) = 0x3858;
+ WFIFOL(fd, 2) = clan_id;
+ WFIFOL(fd, 6) = count;
+ WFIFOSET(fd, 10);
+ return 0;
+}
+
+static int mapif_parse_ClanMemberCount(int fd, int clan_id, int kick_interval)
+{
+ WFIFOHEAD(fd, 10);
+ WFIFOW(fd, 0) = 0x3858;
+ WFIFOL(fd, 2) = clan_id;
+ WFIFOL(fd, 6) = inter_clan->count_members(clan_id, kick_interval);
+ WFIFOSET(fd, 10);
+ return 0;
+}
-void mapif_defaults(void) {
+void mapif_defaults(void)
+{
mapif = &mapif_s;
mapif->ban = mapif_ban;
@@ -253,10 +2372,6 @@ void mapif_defaults(void) {
mapif->parse_auction_close = mapif_parse_auction_close;
mapif->auction_bid = mapif_auction_bid;
mapif->parse_auction_bid = mapif_parse_auction_bid;
- mapif->elemental_create = mapif_elemental_create;
- mapif->elemental_save = mapif_elemental_save;
- mapif->elemental_load = mapif_elemental_load;
- mapif->elemental_delete = mapif_elemental_delete;
mapif->elemental_send = mapif_elemental_send;
mapif->parse_elemental_create = mapif_parse_elemental_create;
mapif->parse_elemental_load = mapif_parse_elemental_load;
@@ -292,7 +2407,6 @@ void mapif_defaults(void) {
mapif->parse_GuildMemberInfoChange = mapif_parse_GuildMemberInfoChange;
mapif->parse_GuildPosition = mapif_parse_GuildPosition;
mapif->parse_GuildSkillUp = mapif_parse_GuildSkillUp;
- mapif->parse_GuildDeleteAlliance = mapif_parse_GuildDeleteAlliance;
mapif->parse_GuildAlliance = mapif_parse_GuildAlliance;
mapif->parse_GuildNotice = mapif_parse_GuildNotice;
mapif->parse_GuildEmblem = mapif_parse_GuildEmblem;
@@ -304,11 +2418,6 @@ void mapif_defaults(void) {
mapif->homunculus_loaded = mapif_homunculus_loaded;
mapif->homunculus_saved = mapif_homunculus_saved;
mapif->homunculus_renamed = mapif_homunculus_renamed;
- mapif->homunculus_create = mapif_homunculus_create;
- mapif->homunculus_save = mapif_homunculus_save;
- mapif->homunculus_load = mapif_homunculus_load;
- mapif->homunculus_delete = mapif_homunculus_delete;
- mapif->homunculus_rename = mapif_homunculus_rename;
mapif->parse_homunculus_create = mapif_parse_homunculus_create;
mapif->parse_homunculus_delete = mapif_parse_homunculus_delete;
mapif->parse_homunculus_load = mapif_parse_homunculus_load;
@@ -318,7 +2427,6 @@ void mapif_defaults(void) {
mapif->parse_mail_requestinbox = mapif_parse_mail_requestinbox;
mapif->parse_mail_read = mapif_parse_mail_read;
mapif->mail_sendattach = mapif_mail_sendattach;
- mapif->mail_getattach = mapif_mail_getattach;
mapif->parse_mail_getattach = mapif_parse_mail_getattach;
mapif->mail_delete = mapif_mail_delete;
mapif->parse_mail_delete = mapif_parse_mail_delete;
@@ -327,10 +2435,6 @@ void mapif_defaults(void) {
mapif->parse_mail_return = mapif_parse_mail_return;
mapif->mail_send = mapif_mail_send;
mapif->parse_mail_send = mapif_parse_mail_send;
- mapif->mercenary_create = mapif_mercenary_create;
- mapif->mercenary_save = mapif_mercenary_save;
- mapif->mercenary_load = mapif_mercenary_load;
- mapif->mercenary_delete = mapif_mercenary_delete;
mapif->mercenary_send = mapif_mercenary_send;
mapif->parse_mercenary_create = mapif_parse_mercenary_create;
mapif->parse_mercenary_load = mapif_parse_mercenary_load;
@@ -361,18 +2465,12 @@ void mapif_defaults(void) {
mapif->pet_noinfo = mapif_pet_noinfo;
mapif->save_pet_ack = mapif_save_pet_ack;
mapif->delete_pet_ack = mapif_delete_pet_ack;
- mapif->create_pet = mapif_create_pet;
- mapif->load_pet = mapif_load_pet;
mapif->save_pet = mapif_save_pet;
mapif->delete_pet = mapif_delete_pet;
mapif->parse_CreatePet = mapif_parse_CreatePet;
mapif->parse_LoadPet = mapif_parse_LoadPet;
mapif->parse_SavePet = mapif_parse_SavePet;
mapif->parse_DeletePet = mapif_parse_DeletePet;
- mapif->quests_fromsql = mapif_quests_fromsql;
- mapif->quest_delete = mapif_quest_delete;
- mapif->quest_add = mapif_quest_add;
- mapif->quest_update = mapif_quest_update;
mapif->quest_save_ack = mapif_quest_save_ack;
mapif->parse_quest_save = mapif_parse_quest_save;
mapif->send_quests = mapif_send_quests;
@@ -396,10 +2494,8 @@ void mapif_defaults(void) {
mapif->sAccountStorageSaveAck = mapif_send_AccountStorageSaveAck;
mapif->account_storage_load = mapif_account_storage_load;
mapif->itembound_ack = mapif_itembound_ack;
- mapif->parse_ItemBoundRetrieve_sub = mapif_parse_ItemBoundRetrieve_sub;
mapif->parse_ItemBoundRetrieve = mapif_parse_ItemBoundRetrieve;
mapif->parse_accinfo = mapif_parse_accinfo;
- mapif->parse_accinfo2 = mapif_parse_accinfo2;
mapif->broadcast = mapif_broadcast;
mapif->wis_message = mapif_wis_message;
mapif->wis_response = mapif_wis_response;
diff --git a/src/char/mapif.h b/src/char/mapif.h
index 9cac2be85..d67ce1c79 100644
--- a/src/char/mapif.h
+++ b/src/char/mapif.h
@@ -51,10 +51,6 @@ struct mapif_interface {
void (*parse_auction_close) (int fd);
void (*auction_bid) (int fd, int char_id, int bid, unsigned char result);
void (*parse_auction_bid) (int fd);
- bool (*elemental_create) (struct s_elemental *ele);
- bool (*elemental_save) (const struct s_elemental *ele);
- bool (*elemental_load) (int ele_id, int char_id, struct s_elemental *ele);
- bool (*elemental_delete) (int ele_id);
void (*elemental_send) (int fd, struct s_elemental *ele, unsigned char flag);
void (*parse_elemental_create) (int fd, const struct s_elemental *ele);
void (*parse_elemental_load) (int fd, int ele_id, int char_id);
@@ -90,7 +86,6 @@ struct mapif_interface {
int (*parse_GuildMemberInfoChange) (int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len);
int (*parse_GuildPosition) (int fd, int guild_id, int idx, const struct guild_position *p);
int (*parse_GuildSkillUp) (int fd, int guild_id, uint16 skill_id, int account_id, int max);
- int (*parse_GuildDeleteAlliance) (struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
int (*parse_GuildAlliance) (int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
int (*parse_GuildNotice) (int fd, int guild_id, const char *mes1, const char *mes2);
int (*parse_GuildEmblem) (int fd, int len, int guild_id, int dummy, const char *data);
@@ -102,11 +97,6 @@ struct mapif_interface {
void (*homunculus_loaded) (int fd, int account_id, struct s_homunculus *hd);
void (*homunculus_saved) (int fd, int account_id, bool flag);
void (*homunculus_renamed) (int fd, int account_id, int char_id, unsigned char flag, const char *name);
- bool (*homunculus_create) (struct s_homunculus *hd);
- bool (*homunculus_save) (const struct s_homunculus *hd);
- bool (*homunculus_load) (int homun_id, struct s_homunculus* hd);
- bool (*homunculus_delete) (int homun_id);
- bool (*homunculus_rename) (const char *name);
void (*parse_homunculus_create) (int fd, int len, int account_id, const struct s_homunculus *phd);
void (*parse_homunculus_delete) (int fd, int homun_id);
void (*parse_homunculus_load) (int fd, int account_id, int homun_id);
@@ -116,7 +106,6 @@ struct mapif_interface {
void (*parse_mail_requestinbox) (int fd);
void (*parse_mail_read) (int fd);
void (*mail_sendattach) (int fd, int char_id, struct mail_message *msg);
- void (*mail_getattach) (int fd, int char_id, int mail_id);
void (*parse_mail_getattach) (int fd);
void (*mail_delete) (int fd, int char_id, int mail_id, bool failed);
void (*parse_mail_delete) (int fd);
@@ -125,10 +114,6 @@ struct mapif_interface {
void (*parse_mail_return) (int fd);
void (*mail_send) (int fd, struct mail_message* msg);
void (*parse_mail_send) (int fd);
- bool (*mercenary_create) (struct s_mercenary *merc);
- bool (*mercenary_save) (const struct s_mercenary *merc);
- bool (*mercenary_load) (int merc_id, int char_id, struct s_mercenary *merc);
- bool (*mercenary_delete) (int merc_id);
void (*mercenary_send) (int fd, struct s_mercenary *merc, unsigned char flag);
void (*parse_mercenary_create) (int fd, const struct s_mercenary *merc);
void (*parse_mercenary_load) (int fd, int merc_id, int char_id);
@@ -159,32 +144,25 @@ struct mapif_interface {
int (*pet_noinfo) (int fd, int account_id);
int (*save_pet_ack) (int fd, int account_id, int flag);
int (*delete_pet_ack) (int fd, int flag);
- int (*create_pet) (int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id,
- short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
- int (*load_pet) (int fd, int account_id, int char_id, int pet_id);
int (*save_pet) (int fd, int account_id, const struct s_pet *data);
int (*delete_pet) (int fd, int pet_id);
int (*parse_CreatePet) (int fd);
int (*parse_LoadPet) (int fd);
int (*parse_SavePet) (int fd);
int (*parse_DeletePet) (int fd);
- struct quest *(*quests_fromsql) (int char_id, int *count);
- bool (*quest_delete) (int char_id, int quest_id);
- bool (*quest_add) (int char_id, struct quest qd);
- bool (*quest_update) (int char_id, struct quest qd);
void (*quest_save_ack) (int fd, int char_id, bool success);
int (*parse_quest_save) (int fd);
void (*send_quests) (int fd, int char_id, struct quest *tmp_questlog, int num_quests);
int (*parse_quest_load) (int fd);
- int(*parse_rodex_requestinbox) (int fd);
- void(*rodex_sendinbox) (int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails);
- int(*parse_rodex_checkhasnew) (int fd);
- void(*rodex_sendhasnew) (int fd, int char_id, bool has_new);
- int(*parse_rodex_updatemail) (int fd);
- int(*parse_rodex_send) (int fd);
- void(*rodex_send) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result);
- int(*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 (*parse_rodex_requestinbox) (int fd);
+ void (*rodex_sendinbox) (int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails);
+ void (*parse_rodex_checkhasnew) (int fd);
+ void (*rodex_sendhasnew) (int fd, int char_id, bool has_new);
+ void (*parse_rodex_updatemail) (int fd);
+ 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);
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);
@@ -194,11 +172,8 @@ struct mapif_interface {
int (*pAccountStorageSave) (int fd);
void (*sAccountStorageSaveAck) (int fd, int account_id, bool save);
int (*itembound_ack) (int fd, int aid, int guild_id);
- int (*parse_ItemBoundRetrieve_sub) (int fd);
void (*parse_ItemBoundRetrieve) (int fd);
void (*parse_accinfo) (int fd);
- void (*parse_accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
- const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
int (*broadcast) (const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
int (*wis_message) (struct WisData *wd);
void (*wis_response) (int fd, const unsigned char *src, int flag);
diff --git a/src/char/pincode.c b/src/char/pincode.c
index 8fc4e6c36..5a7eb1cab 100644
--- a/src/char/pincode.c
+++ b/src/char/pincode.c
@@ -37,10 +37,10 @@
#include <stdio.h>
#include <stdlib.h>
-struct pincode_interface pincode_s;
+static struct pincode_interface pincode_s;
struct pincode_interface *pincode;
-void pincode_handle (int fd, struct char_session_data* sd)
+static void pincode_handle(int fd, struct char_session_data *sd)
{
struct online_char_data* character;
@@ -72,7 +72,7 @@ void pincode_handle (int fd, struct char_session_data* sd)
character->pincode_enable = -1;
}
-void pincode_check(int fd, struct char_session_data* sd)
+static void pincode_check(int fd, struct char_session_data *sd)
{
char pin[5] = "\0\0\0\0";
@@ -104,12 +104,12 @@ void pincode_check(int fd, struct char_session_data* sd)
}
/**
-* Check if this pincode is blacklisted or not
-*
-* @param (const char *) pin The pin to be verified
-* @return bool
-*/
-bool pincode_isBlacklisted(const char *pin)
+ * Check if this pincode is blacklisted or not
+ *
+ * @param (const char *) pin The pin to be verified
+ * @return bool
+ */
+static bool pincode_isBlacklisted(const char *pin)
{
int i;
@@ -124,7 +124,7 @@ bool pincode_isBlacklisted(const char *pin)
return false;
}
-int pincode_compare(int fd, struct char_session_data* sd, char* pin)
+static int pincode_compare(int fd, struct char_session_data *sd, char *pin)
{
nullpo_ret(sd);
nullpo_ret(pin);
@@ -142,7 +142,7 @@ int pincode_compare(int fd, struct char_session_data* sd, char* pin)
}
}
-void pincode_change(int fd, struct char_session_data* sd)
+static void pincode_change(int fd, struct char_session_data *sd)
{
char oldpin[5] = "\0\0\0\0", newpin[5] = "\0\0\0\0";
@@ -174,7 +174,7 @@ void pincode_change(int fd, struct char_session_data* sd)
pincode->loginstate(fd, sd, PINCODE_LOGIN_ASK);
}
-void pincode_setnew(int fd, struct char_session_data* sd)
+static void pincode_setnew(int fd, struct char_session_data *sd)
{
char newpin[5] = "\0\0\0\0";
@@ -198,13 +198,13 @@ void pincode_setnew(int fd, struct char_session_data* sd)
}
/**
-* Send state of making new pincode
-*
-* @param[in] fd
-* @param[in, out] sd Session Data
-* @param[in] state Pincode Edit State
-*/
-void pincode_makestate(int fd, struct char_session_data *sd, enum pincode_make_response state)
+ * Send state of making new pincode
+ *
+ * @param[in] fd
+ * @param[in, out] sd Session Data
+ * @param[in] state Pincode Edit State
+ */
+static void pincode_makestate(int fd, struct char_session_data *sd, enum pincode_make_response state)
{
nullpo_retv(sd);
@@ -216,13 +216,13 @@ void pincode_makestate(int fd, struct char_session_data *sd, enum pincode_make_r
}
/**
-* Send state of editing pincode
-*
-* @param[in] fd
-* @param[in, out] sd Session Data
-* @param[in] state Pincode Edit State
-*/
-void pincode_editstate(int fd, struct char_session_data *sd, enum pincode_edit_response state)
+ * Send state of editing pincode
+ *
+ * @param[in] fd
+ * @param[in, out] sd Session Data
+ * @param[in] state Pincode Edit State
+ */
+static void pincode_editstate(int fd, struct char_session_data *sd, enum pincode_edit_response state)
{
nullpo_retv(sd);
@@ -242,7 +242,7 @@ void pincode_editstate(int fd, struct char_session_data *sd, enum pincode_edit_r
// 6 = client shows msgstr(1897) Unable to use your KSSN number
// 7 = char select window shows a button - client sends 0x8c5
// 8 = pincode was incorrect
-void pincode_loginstate(int fd, struct char_session_data* sd, enum pincode_login_response state)
+static void pincode_loginstate(int fd, struct char_session_data *sd, enum pincode_login_response state)
{
nullpo_retv(sd);
@@ -265,7 +265,7 @@ void pincode_loginstate(int fd, struct char_session_data* sd, enum pincode_login
// 8 = pincode was incorrect
// [4144] pincode_loginstate2 can replace pincode_loginstate,
// but kro using pincode_loginstate2 only for send wrong pin error or locked after 3 pins wrong
-void pincode_loginstate2(int fd, struct char_session_data* sd, enum pincode_login_response state, enum pincode_login_response2 flag)
+static void pincode_loginstate2(int fd, struct char_session_data *sd, enum pincode_login_response state, enum pincode_login_response2 flag)
{
#if PACKETVER_MAIN_NUM >= 20180124 || PACKETVER_RE_NUM >= 20180124 || PACKETVER_ZERO_NUM >= 20180131
nullpo_retv(sd);
@@ -280,7 +280,7 @@ void pincode_loginstate2(int fd, struct char_session_data* sd, enum pincode_logi
#endif
}
-void pincode_notifyLoginPinUpdate(int account_id, char* pin)
+static void pincode_notifyLoginPinUpdate(int account_id, char *pin)
{
nullpo_retv(pin);
@@ -292,7 +292,7 @@ void pincode_notifyLoginPinUpdate(int account_id, char* pin)
WFIFOSET(chr->login_fd, 11);
}
-void pincode_notifyLoginPinError(int account_id)
+static void pincode_notifyLoginPinError(int account_id)
{
WFIFOHEAD(chr->login_fd, 6);
WFIFOW(chr->login_fd, 0) = 0x2739;
@@ -300,7 +300,7 @@ void pincode_notifyLoginPinError(int account_id)
WFIFOSET(chr->login_fd, 6);
}
-void pincode_decrypt(unsigned int userSeed, char* pin)
+static void pincode_decrypt(unsigned int userSeed, char *pin)
{
int i;
char tab[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
@@ -337,7 +337,7 @@ void pincode_decrypt(unsigned int userSeed, char* pin)
*
* @retval false in case of error.
*/
-bool pincode_config_read(const char *filename, const struct config_t *config, bool imported)
+static bool pincode_config_read(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
const struct config_setting_t *temp = NULL;
@@ -426,12 +426,12 @@ bool pincode_config_read(const char *filename, const struct config_t *config, bo
return true;
}
-void do_pincode_init(void)
+static void do_pincode_init(void)
{
VECTOR_INIT(pincode->blacklist);
}
-void do_pincode_final(void)
+static void do_pincode_final(void)
{
while (VECTOR_LENGTH(pincode->blacklist) > 0) {
aFree(VECTOR_POP(pincode->blacklist));
diff --git a/src/common/HPM.c b/src/common/HPM.c
index c84b447e8..014c947b6 100644
--- a/src/common/HPM.c
+++ b/src/common/HPM.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -48,25 +48,25 @@
# include <unistd.h>
#endif
-struct malloc_interface iMalloc_HPM;
-struct malloc_interface *HPMiMalloc;
-struct HPM_interface HPM_s;
+static struct malloc_interface iMalloc_HPM;
+static struct malloc_interface *HPMiMalloc;
+static struct HPM_interface HPM_s;
struct HPM_interface *HPM;
-struct HPMHooking_core_interface HPMHooking_core_s;
+static struct HPMHooking_core_interface HPMHooking_core_s;
/**
* (char*) data name -> (unsigned int) HPMDataCheck[] index
**/
-struct DBMap *datacheck_db;
-int datacheck_version;
-const struct s_HPMDataCheck *datacheck_data;
+static struct DBMap *datacheck_db;
+static int datacheck_version;
+static const struct s_HPMDataCheck *datacheck_data;
/**
* Executes an event on all loaded plugins.
*
* @param type The event type to trigger.
*/
-void hplugin_trigger_event(enum hp_event_types type)
+static void hplugin_trigger_event(enum hp_event_types type)
{
int i;
for (i = 0; i < VECTOR_LENGTH(HPM->plugins); i++) {
@@ -82,7 +82,7 @@ void hplugin_trigger_event(enum hp_event_types type)
* @param value The symbol value.
* @param name The symbol name.
*/
-void hplugin_export_symbol(void *value, const char *name)
+static void hplugin_export_symbol(void *value, const char *name)
{
struct hpm_symbol *symbol = NULL;
CREATE(symbol ,struct hpm_symbol, 1);
@@ -100,7 +100,7 @@ void hplugin_export_symbol(void *value, const char *name)
* @return The symbol value.
* @retval NULL if the symbol wasn't found.
*/
-void *hplugin_import_symbol(char *name, unsigned int pID)
+static void *hplugin_import_symbol(char *name, unsigned int pID)
{
int i;
nullpo_retr(NULL, name);
@@ -113,7 +113,8 @@ void *hplugin_import_symbol(char *name, unsigned int pID)
return NULL;
}
-bool hplugin_iscompatible(char* version) {
+static bool hplugin_iscompatible(char *version)
+{
unsigned int req_major = 0, req_minor = 0;
if( version == NULL )
@@ -131,7 +132,7 @@ bool hplugin_iscompatible(char* version) {
* @retval true if the plugin exists and is currently loaded.
* @retval false otherwise.
*/
-bool hplugin_exists(const char *filename)
+static bool hplugin_exists(const char *filename)
{
int i;
nullpo_retr(false, filename);
@@ -147,7 +148,7 @@ bool hplugin_exists(const char *filename)
*
* @return A (retained) pointer to the initialized data.
*/
-struct hplugin *hplugin_create(void)
+static struct hplugin *hplugin_create(void)
{
struct hplugin *plugin = NULL;
CREATE(plugin, struct hplugin, 1);
@@ -158,7 +159,7 @@ struct hplugin *hplugin_create(void)
return plugin;
}
-bool hplugins_addpacket(unsigned short cmd, unsigned short length, void (*receive) (int fd), unsigned int point, unsigned int pluginID)
+static bool hplugins_addpacket(unsigned short cmd, unsigned short length, void (*receive) (int fd), unsigned int point, unsigned int pluginID)
{
struct HPluginPacket *packet;
int i;
@@ -204,7 +205,7 @@ bool hplugins_addpacket(unsigned short cmd, unsigned short length, void (*receiv
* initialized through \c HPM->data_store_create() and ownership is passed
* to the caller.
*/
-bool hplugin_data_store_validate(enum HPluginDataTypes type, struct hplugin_data_store **storeptr, bool initialize)
+static bool hplugin_data_store_validate(enum HPluginDataTypes type, struct hplugin_data_store **storeptr, bool initialize)
{
struct hplugin_data_store *store;
nullpo_retr(false, storeptr);
@@ -248,7 +249,7 @@ bool hplugin_data_store_validate(enum HPluginDataTypes type, struct hplugin_data
* @param classid[in] The entry class identifier.
* @param autofree[in] Whether the entry should be automatically freed when removed.
*/
-void hplugins_addToHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store **storeptr, void *data, uint32 classid, bool autofree)
+static void hplugins_addToHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store **storeptr, void *data, uint32 classid, bool autofree)
{
struct hplugin_data_store *store;
struct hplugin_data_entry *entry;
@@ -293,7 +294,7 @@ void hplugins_addToHPData(enum HPluginDataTypes type, uint32 pluginID, struct hp
*
* @return The retrieved entry, or NULL.
*/
-void *hplugins_getFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store *store, uint32 classid)
+static void *hplugins_getFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store *store, uint32 classid)
{
int i;
@@ -320,7 +321,7 @@ void *hplugins_getFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct
* @param store[in] The store.
* @param classid[in] The entry class identifier.
*/
-void hplugins_removeFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store *store, uint32 classid)
+static void hplugins_removeFromHPData(enum HPluginDataTypes type, uint32 pluginID, struct hplugin_data_store *store, uint32 classid)
{
struct hplugin_data_entry *entry;
int i;
@@ -344,7 +345,7 @@ void hplugins_removeFromHPData(enum HPluginDataTypes type, uint32 pluginID, stru
}
/* TODO: add ability for tracking using pID for the upcoming runtime load/unload support. */
-bool HPM_AddHook(enum HPluginHookType type, const char *target, void *hook, unsigned int pID)
+static bool HPM_AddHook(enum HPluginHookType type, const char *target, void *hook, unsigned int pID)
{
if (!HPM->hooking->enabled) {
ShowError("HPM:AddHook Fail! '%s' tried to hook to '%s' but HPMHooking is disabled!\n",HPM->pid2name(pID),target);
@@ -360,13 +361,13 @@ bool HPM_AddHook(enum HPluginHookType type, const char *target, void *hook, unsi
return false;
}
-void HPM_HookStop(const char *func, unsigned int pID)
+static void HPM_HookStop(const char *func, unsigned int pID)
{
/* track? */
HPM->hooking->force_return = true;
}
-bool HPM_HookStopped(void)
+static bool HPM_HookStopped(void)
{
return HPM->hooking->force_return;
}
@@ -381,7 +382,7 @@ bool HPM_HookStopped(void)
* @param help the help string to be displayed by '--help', if any.
* @return the success status.
*/
-bool hpm_add_arg(unsigned int pluginID, char *name, bool has_param, CmdlineExecFunc func, const char *help)
+static bool hpm_add_arg(unsigned int pluginID, char *name, bool has_param, CmdlineExecFunc func, const char *help)
{
int i;
@@ -410,7 +411,7 @@ bool hpm_add_arg(unsigned int pluginID, char *name, bool has_param, CmdlineExecF
* @retval true if the listener was added successfully.
* @retval false in case of error.
*/
-bool hplugins_addconf(unsigned int pluginID, enum HPluginConfType type, char *name, void (*parse_func) (const char *key, const char *val), int (*return_func) (const char *key), bool required)
+static bool hplugins_addconf(unsigned int pluginID, enum HPluginConfType type, char *name, void (*parse_func) (const char *key, const char *val), int (*return_func) (const char *key), bool required)
{
struct HPConfListenStorage *conf;
int i;
@@ -450,7 +451,7 @@ bool hplugins_addconf(unsigned int pluginID, enum HPluginConfType type, char *na
return true;
}
-struct hplugin *hplugin_load(const char* filename)
+static struct hplugin *hplugin_load(const char *filename)
{
struct hplugin *plugin;
struct hplugin_info *info;
@@ -598,7 +599,7 @@ struct hplugin *hplugin_load(const char* filename)
*
* @param plugin The plugin data.
*/
-void hplugin_unload(struct hplugin* plugin)
+static void hplugin_unload(struct hplugin *plugin)
{
int i;
nullpo_retv(plugin);
@@ -628,7 +629,7 @@ CMDLINEARG(loadplugin)
/**
* Reads the plugin configuration and loads the plugins as necessary.
*/
-void hplugins_config_read(void)
+static void hplugins_config_read(void)
{
struct config_t plugins_conf;
struct config_setting_t *plist = NULL;
@@ -707,7 +708,7 @@ void hplugins_config_read(void)
*
* @see CPCMD()
*/
-CPCMD(plugins)
+static CPCMD(plugins)
{
int i;
@@ -733,7 +734,7 @@ CPCMD(plugins)
* @retval 1 OK
* @retval 2 incomplete packet
*/
-unsigned char hplugins_parse_packets(int fd, int packet_id, enum HPluginPacketHookingPoints point)
+static unsigned char hplugins_parse_packets(int fd, int packet_id, enum HPluginPacketHookingPoints point)
{
struct HPluginPacket *packet = NULL;
int i;
@@ -765,7 +766,7 @@ unsigned char hplugins_parse_packets(int fd, int packet_id, enum HPluginPacketHo
* @retval "core" if the plugin ID belongs to the Hercules core.
* @retval "UnknownPlugin" if the plugin wasn't found.
*/
-char *hplugins_id2name(unsigned int pid)
+static char *hplugins_id2name(unsigned int pid)
{
int i;
@@ -791,7 +792,7 @@ char *hplugins_id2name(unsigned int pid)
* @param file The string/filename to retain
* @return A retained copy of the source string.
*/
-const char *HPM_file2ptr(const char *file)
+static const char *HPM_file2ptr(const char *file)
{
int i;
@@ -810,27 +811,27 @@ const char *HPM_file2ptr(const char *file)
return HPM->filenames.data[i].name;
}
-void* HPM_mmalloc(size_t size, const char *file, int line, const char *func)
+static void *HPM_mmalloc(size_t size, const char *file, int line, const char *func)
{
return iMalloc->malloc(size,HPM_file2ptr(file),line,func);
}
-void* HPM_calloc(size_t num, size_t size, const char *file, int line, const char *func)
+static void *HPM_calloc(size_t num, size_t size, const char *file, int line, const char *func)
{
return iMalloc->calloc(num,size,HPM_file2ptr(file),line,func);
}
-void* HPM_realloc(void *p, size_t size, const char *file, int line, const char *func)
+static void *HPM_realloc(void *p, size_t size, const char *file, int line, const char *func)
{
return iMalloc->realloc(p,size,HPM_file2ptr(file),line,func);
}
-void* HPM_reallocz(void *p, size_t size, const char *file, int line, const char *func)
+static void *HPM_reallocz(void *p, size_t size, const char *file, int line, const char *func)
{
return iMalloc->reallocz(p,size,HPM_file2ptr(file),line,func);
}
-char* HPM_astrdup(const char *p, const char *file, int line, const char *func)
+static char *HPM_astrdup(const char *p, const char *file, int line, const char *func)
{
return iMalloc->astrdup(p,HPM_file2ptr(file),line,func);
}
@@ -844,7 +845,7 @@ char* HPM_astrdup(const char *p, const char *file, int line, const char *func)
* @retval true if a registered plugin was found to handle the entry.
* @retval false if no registered plugins could be found.
*/
-bool hplugins_parse_conf_entry(const char *w1, const char *w2, enum HPluginConfType point)
+static bool hplugins_parse_conf_entry(const char *w1, const char *w2, enum HPluginConfType point)
{
int i;
ARR_FIND(0, VECTOR_LENGTH(HPM->config_listeners[point]), i, strcmpi(w1, VECTOR_INDEX(HPM->config_listeners[point], i).key) == 0);
@@ -863,7 +864,7 @@ bool hplugins_parse_conf_entry(const char *w1, const char *w2, enum HPluginConfT
* @retval true in case of data found
* @retval false in case of no data found
*/
-bool hplugins_get_battle_conf(const char *w1, int *value)
+static bool hplugins_get_battle_conf(const char *w1, int *value)
{
int i;
@@ -887,7 +888,7 @@ bool hplugins_get_battle_conf(const char *w1, int *value)
* @param imported Whether the current config is imported from another file.
* @retval false in case of error.
*/
-bool hplugins_parse_conf(const struct config_t *config, const char *filename, enum HPluginConfType point, bool imported)
+static bool hplugins_parse_conf(const struct config_t *config, const char *filename, enum HPluginConfType point, bool imported)
{
const struct config_setting_t *setting = NULL;
int i, val, type;
@@ -940,7 +941,7 @@ bool hplugins_parse_conf(const struct config_t *config, const char *filename, en
* @param imported whether the current config is imported from another file.
* @retval false in case of error.
*/
-bool hplugins_parse_battle_conf(const struct config_t *config, const char *filename, bool imported)
+static bool hplugins_parse_battle_conf(const struct config_t *config, const char *filename, bool imported)
{
const struct config_setting_t *setting = NULL;
int i, val, type;
@@ -985,7 +986,7 @@ bool hplugins_parse_battle_conf(const struct config_t *config, const char *filen
*
* @param storeptr[in,out] A pointer to the plugin data store.
*/
-void hplugin_data_store_destroy(struct hplugin_data_store **storeptr)
+static void hplugin_data_store_destroy(struct hplugin_data_store **storeptr)
{
struct hplugin_data_store *store;
nullpo_retv(storeptr);
@@ -1014,7 +1015,7 @@ void hplugin_data_store_destroy(struct hplugin_data_store **storeptr)
* @param storeptr[in,out] A pointer to the data store to initialize.
* @param type[in] The store type.
*/
-void hplugin_data_store_create(struct hplugin_data_store **storeptr, enum HPluginDataTypes type)
+static void hplugin_data_store_create(struct hplugin_data_store **storeptr, enum HPluginDataTypes type)
{
struct hplugin_data_store *store;
nullpo_retv(storeptr);
@@ -1031,7 +1032,7 @@ void hplugin_data_store_create(struct hplugin_data_store **storeptr, enum HPlugi
/**
* Called by HPM->DataCheck on a plugins incoming data, ensures data structs in use are matching!
**/
-bool HPM_DataCheck(struct s_HPMDataCheck *src, unsigned int size, int version, char *name)
+static bool HPM_DataCheck(struct s_HPMDataCheck *src, unsigned int size, int version, char *name)
{
unsigned int i, j;
@@ -1060,7 +1061,7 @@ bool HPM_DataCheck(struct s_HPMDataCheck *src, unsigned int size, int version, c
return true;
}
-void HPM_datacheck_init(const struct s_HPMDataCheck *src, unsigned int length, int version)
+static void HPM_datacheck_init(const struct s_HPMDataCheck *src, unsigned int length, int version)
{
unsigned int i;
@@ -1077,12 +1078,12 @@ void HPM_datacheck_init(const struct s_HPMDataCheck *src, unsigned int length, i
}
}
-void HPM_datacheck_final(void)
+static void HPM_datacheck_final(void)
{
db_destroy(datacheck_db);
}
-void hpm_init(void)
+static void hpm_init(void)
{
int i;
datacheck_db = NULL;
@@ -1126,7 +1127,7 @@ void hpm_init(void)
/**
* Releases the retained filenames cache.
*/
-void hpm_memdown(void)
+static void hpm_memdown(void)
{
/* this memory is handled outside of the server's memory manager and
* thus cleared after memory manager goes down */
@@ -1141,7 +1142,7 @@ void hpm_memdown(void)
}
}
-void hpm_final(void)
+static void hpm_final(void)
{
int i;
diff --git a/src/common/HPM.h b/src/common/HPM.h
index efa5d8370..a4e3e46cc 100644
--- a/src/common/HPM.h
+++ b/src/common/HPM.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h
index 2f1de3585..7d865c908 100644
--- a/src/common/HPMDataCheck.h
+++ b/src/common/HPMDataCheck.h
@@ -52,6 +52,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#define CHAR_GEOIP_H
#endif // CHAR_GEOIP_H
#ifdef CHAR_INTER_H
+ { "WisData", sizeof(struct WisData), SERVER_TYPE_CHAR },
{ "inter_interface", sizeof(struct inter_interface), SERVER_TYPE_CHAR },
#else
#define CHAR_INTER_H
@@ -589,43 +590,103 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_CZ_ADD_ITEM_TO_MAIL", sizeof(struct PACKET_CZ_ADD_ITEM_TO_MAIL), SERVER_TYPE_MAP },
{ "PACKET_CZ_CHECKNAME", sizeof(struct PACKET_CZ_CHECKNAME), SERVER_TYPE_MAP },
{ "PACKET_CZ_OPEN_UI", sizeof(struct PACKET_CZ_OPEN_UI), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PC_BUY_CASH_POINT_ITEM", sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub", sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PC_PURCHASE_ITEMLIST", sizeof(struct PACKET_CZ_PC_PURCHASE_ITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_CZ_PC_PURCHASE_ITEMLIST_sub", sizeof(struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub), SERVER_TYPE_MAP },
{ "PACKET_CZ_PET_EVOLUTION", sizeof(struct PACKET_CZ_PET_EVOLUTION), SERVER_TYPE_MAP },
{ "PACKET_CZ_PRIVATE_AIRSHIP_REQUEST", sizeof(struct PACKET_CZ_PRIVATE_AIRSHIP_REQUEST), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_DELETE_MAIL", sizeof(struct PACKET_CZ_REQ_DELETE_MAIL), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_ITEM_FROM_MAIL", sizeof(struct PACKET_CZ_REQ_ITEM_FROM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_ITEMREPAIR", sizeof(struct PACKET_CZ_REQ_ITEMREPAIR), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_MAKINGITEM", sizeof(struct PACKET_CZ_REQ_MAKINGITEM), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_NEXT_MAIL_LIST", sizeof(struct PACKET_CZ_REQ_NEXT_MAIL_LIST), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_OPEN_BUYING_STORE", sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_OPEN_BUYING_STORE_sub", sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_OPEN_MAIL", sizeof(struct PACKET_CZ_REQ_OPEN_MAIL), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_OPEN_WRITE_MAIL", sizeof(struct PACKET_CZ_REQ_OPEN_WRITE_MAIL), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_READ_MAIL", sizeof(struct PACKET_CZ_REQ_READ_MAIL), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_REFRESH_MAIL_LIST", sizeof(struct PACKET_CZ_REQ_REFRESH_MAIL_LIST), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_REMOVE_ITEM_MAIL", sizeof(struct PACKET_CZ_REQ_REMOVE_ITEM_MAIL), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_STYLE_CHANGE", sizeof(struct PACKET_CZ_REQ_STYLE_CHANGE), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_TRADE_BUYING_STORE", sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQ_TRADE_BUYING_STORE_sub", sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub), SERVER_TYPE_MAP },
{ "PACKET_CZ_REQ_ZENY_FROM_MAIL", sizeof(struct PACKET_CZ_REQ_ZENY_FROM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_REQMAKINGITEM", sizeof(struct PACKET_CZ_REQMAKINGITEM), SERVER_TYPE_MAP },
+ { "PACKET_CZ_SEARCH_STORE_INFO", sizeof(struct PACKET_CZ_SEARCH_STORE_INFO), SERVER_TYPE_MAP },
+ { "PACKET_CZ_SEARCH_STORE_INFO_item", sizeof(struct PACKET_CZ_SEARCH_STORE_INFO_item), SERVER_TYPE_MAP },
{ "PACKET_CZ_SEND_MAIL", sizeof(struct PACKET_CZ_SEND_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_CZ_SSILIST_ITEM_CLICK", sizeof(struct PACKET_CZ_SSILIST_ITEM_CLICK), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_CLAN_LEAVE", sizeof(struct PACKET_ZC_ACK_CLAN_LEAVE), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_DELETE_MAIL", sizeof(struct PACKET_ZC_ACK_DELETE_MAIL), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_ITEM_FROM_MAIL", sizeof(struct PACKET_ZC_ACK_ITEM_FROM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_ITEMLIST_BUYING_STORE", sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub", sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_OPEN_WRITE_MAIL", sizeof(struct PACKET_ZC_ACK_OPEN_WRITE_MAIL), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_REMOVE_ITEM_MAIL", sizeof(struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_REQMAKINGITEM", sizeof(struct PACKET_ZC_ACK_REQMAKINGITEM), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_SCHEDULER_CASHITEM", sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub", sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_TOUSESKILL", sizeof(struct PACKET_ZC_ACK_TOUSESKILL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_WEAPONREFINE", sizeof(struct PACKET_ZC_ACK_WEAPONREFINE), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_ZENY_FROM_MAIL", sizeof(struct PACKET_ZC_ACK_ZENY_FROM_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ADD_EXCHANGE_ITEM", sizeof(struct PACKET_ZC_ADD_EXCHANGE_ITEM), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ADD_ITEM_TO_CART", sizeof(struct PACKET_ZC_ADD_ITEM_TO_CART), SERVER_TYPE_MAP },
{ "PACKET_ZC_ADD_ITEM_TO_MAIL", sizeof(struct PACKET_ZC_ADD_ITEM_TO_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ADD_ITEM_TO_STORE", sizeof(struct PACKET_ZC_ADD_ITEM_TO_STORE), SERVER_TYPE_MAP },
{ "PACKET_ZC_ADD_MEMBER_TO_GROUP", sizeof(struct PACKET_ZC_ADD_MEMBER_TO_GROUP), SERVER_TYPE_MAP },
+ { "PACKET_ZC_CASH_ITEM_DELETE", sizeof(struct PACKET_ZC_CASH_ITEM_DELETE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_CASH_TIME_COUNTER", sizeof(struct PACKET_ZC_CASH_TIME_COUNTER), SERVER_TYPE_MAP },
{ "PACKET_ZC_CHECKNAME", sizeof(struct PACKET_ZC_CHECKNAME), SERVER_TYPE_MAP },
{ "PACKET_ZC_CLANINFO", sizeof(struct PACKET_ZC_CLANINFO), SERVER_TYPE_MAP },
+ { "PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER", sizeof(struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER), SERVER_TYPE_MAP },
+ { "PACKET_ZC_FEED_MER", sizeof(struct PACKET_ZC_FEED_MER), SERVER_TYPE_MAP },
+ { "PACKET_ZC_FEED_PET", sizeof(struct PACKET_ZC_FEED_PET), SERVER_TYPE_MAP },
{ "PACKET_ZC_FORMATSTRING_MSG", sizeof(struct PACKET_ZC_FORMATSTRING_MSG), SERVER_TYPE_MAP },
{ "PACKET_ZC_GROUP_LIST", sizeof(struct PACKET_ZC_GROUP_LIST), SERVER_TYPE_MAP },
{ "PACKET_ZC_GROUP_LIST_SUB", sizeof(struct PACKET_ZC_GROUP_LIST_SUB), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ITEM_ENTRY", sizeof(struct PACKET_ZC_ITEM_ENTRY), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ITEM_PICKUP_PARTY", sizeof(struct PACKET_ZC_ITEM_PICKUP_PARTY), SERVER_TYPE_MAP },
{ "PACKET_ZC_MAIL_LIST", sizeof(struct PACKET_ZC_MAIL_LIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKABLEITEMLIST", sizeof(struct PACKET_ZC_MAKABLEITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKABLEITEMLIST_sub", sizeof(struct PACKET_ZC_MAKABLEITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKINGARROW_LIST", sizeof(struct PACKET_ZC_MAKINGARROW_LIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKINGARROW_LIST_sub", sizeof(struct PACKET_ZC_MAKINGARROW_LIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKINGITEM_LIST", sizeof(struct PACKET_ZC_MAKINGITEM_LIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MAKINGITEM_LIST_sub", sizeof(struct PACKET_ZC_MAKINGITEM_LIST_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_MSG_COLOR", sizeof(struct PACKET_ZC_MSG_COLOR), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MVP_GETTING_ITEM", sizeof(struct PACKET_ZC_MVP_GETTING_ITEM), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MYITEMLIST_BUYING_STORE", sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_MYITEMLIST_BUYING_STORE_sub", sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_CHAT", sizeof(struct PACKET_ZC_NOTIFY_CHAT), SERVER_TYPE_MAP },
{ "PACKET_ZC_NOTIFY_CLAN_CHAT", sizeof(struct PACKET_ZC_NOTIFY_CLAN_CHAT), SERVER_TYPE_MAP },
{ "PACKET_ZC_NOTIFY_CLAN_CONNECTINFO", sizeof(struct PACKET_ZC_NOTIFY_CLAN_CONNECTINFO), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_PLAYERCHAT", sizeof(struct PACKET_ZC_NOTIFY_PLAYERCHAT), SERVER_TYPE_MAP },
{ "PACKET_ZC_NOTIFY_UNREADMAIL", sizeof(struct PACKET_ZC_NOTIFY_UNREADMAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_WEAPONITEMLIST", sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub", sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_OPEN_UI", sizeof(struct PACKET_ZC_OPEN_UI), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_CASH_POINT_ITEMLIST", sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub", sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_ITEMLIST", sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC", sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub", sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_ITEMLIST_sub", sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_MYITEMLIST", sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub", sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE", sizeof(struct PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_PROPERTY_HOMUN", sizeof(struct PACKET_ZC_PROPERTY_HOMUN), SERVER_TYPE_MAP },
{ "PACKET_ZC_READ_MAIL", sizeof(struct PACKET_ZC_READ_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_REPAIRITEMLIST", sizeof(struct PACKET_ZC_REPAIRITEMLIST), SERVER_TYPE_MAP },
+ { "PACKET_ZC_REPAIRITEMLIST_sub", sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub), SERVER_TYPE_MAP },
+ { "PACKET_ZC_SEARCH_STORE_INFO_ACK", sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK), SERVER_TYPE_MAP },
+ { "PACKET_ZC_SEARCH_STORE_INFO_ACK_sub", sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_SKILL_SCALE", sizeof(struct PACKET_ZC_SKILL_SCALE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_SPRITE_CHANGE", sizeof(struct PACKET_ZC_SPRITE_CHANGE), SERVER_TYPE_MAP },
{ "PACKET_ZC_STYLE_CHANGE_RES", sizeof(struct PACKET_ZC_STYLE_CHANGE_RES), SERVER_TYPE_MAP },
{ "PACKET_ZC_UI_ACTION", sizeof(struct PACKET_ZC_UI_ACTION), SERVER_TYPE_MAP },
+ { "PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE", sizeof(struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE), SERVER_TYPE_MAP },
+ { "PACKET_ZC_USE_ITEM_ACK", sizeof(struct PACKET_ZC_USE_ITEM_ACK), SERVER_TYPE_MAP },
{ "PACKET_ZC_WRITE_MAIL_RESULT", sizeof(struct PACKET_ZC_WRITE_MAIL_RESULT), SERVER_TYPE_MAP },
{ "ZC_PROGRESS_ACTOR", sizeof(struct ZC_PROGRESS_ACTOR), SERVER_TYPE_MAP },
{ "mail_item", sizeof(struct mail_item), SERVER_TYPE_MAP },
diff --git a/src/common/conf.c b/src/common/conf.c
index 841288959..0ad350057 100644
--- a/src/common/conf.c
+++ b/src/common/conf.c
@@ -29,7 +29,7 @@
#include <libconfig/libconfig.h>
/* interface source */
-struct libconfig_interface libconfig_s;
+static struct libconfig_interface libconfig_s;
struct libconfig_interface *libconfig;
/**
@@ -44,7 +44,7 @@ struct libconfig_interface *libconfig;
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_load_file(struct config_t *config, const char *config_filename)
+static int config_load_file(struct config_t *config, const char *config_filename)
{
libconfig->init(config);
if (!exists(config_filename)) {
@@ -63,7 +63,7 @@ int config_load_file(struct config_t *config, const char *config_filename)
//
// Functions to copy settings from libconfig/contrib
//
-void config_setting_copy_simple(struct config_setting_t *parent, const struct config_setting_t *src)
+static void config_setting_copy_simple(struct config_setting_t *parent, const struct config_setting_t *src)
{
if (config_setting_is_aggregate(src)) {
libconfig->setting_copy_aggregate(parent, src);
@@ -92,7 +92,7 @@ void config_setting_copy_simple(struct config_setting_t *parent, const struct co
}
}
-void config_setting_copy_elem(struct config_setting_t *parent, const struct config_setting_t *src)
+static void config_setting_copy_elem(struct config_setting_t *parent, const struct config_setting_t *src)
{
struct config_setting_t *set = NULL;
@@ -113,7 +113,7 @@ void config_setting_copy_elem(struct config_setting_t *parent, const struct conf
}
}
-void config_setting_copy_aggregate(struct config_setting_t *parent, const struct config_setting_t *src)
+static void config_setting_copy_aggregate(struct config_setting_t *parent, const struct config_setting_t *src)
{
struct config_setting_t *newAgg;
int i, n;
@@ -137,7 +137,7 @@ void config_setting_copy_aggregate(struct config_setting_t *parent, const struct
}
}
-int config_setting_copy(struct config_setting_t *parent, const struct config_setting_t *src)
+static int config_setting_copy(struct config_setting_t *parent, const struct config_setting_t *src)
{
if (!config_setting_is_group(parent) && !config_setting_is_list(parent))
return CONFIG_FALSE;
@@ -158,7 +158,7 @@ int config_setting_copy(struct config_setting_t *parent, const struct config_set
* @return The converted value.
* @retval false in case of failure.
*/
-bool config_setting_get_bool_real(const struct config_setting_t *setting)
+static bool config_setting_get_bool_real(const struct config_setting_t *setting)
{
if (setting == NULL || setting->type != CONFIG_TYPE_BOOL)
return false;
@@ -176,7 +176,7 @@ bool config_setting_get_bool_real(const struct config_setting_t *setting)
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_bool_real(const struct config_setting_t *setting, const char *name, bool *value)
+static int config_setting_lookup_bool_real(const struct config_setting_t *setting, const char *name, bool *value)
{
struct config_setting_t *member = config_setting_get_member(setting, name);
@@ -199,7 +199,7 @@ int config_setting_lookup_bool_real(const struct config_setting_t *setting, cons
* @return The converted value.
* @retval 0 in case of failure.
*/
-uint32 config_setting_get_uint32(const struct config_setting_t *setting)
+static uint32 config_setting_get_uint32(const struct config_setting_t *setting)
{
if (setting == NULL || setting->type != CONFIG_TYPE_INT)
return 0;
@@ -220,7 +220,7 @@ uint32 config_setting_get_uint32(const struct config_setting_t *setting)
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_uint32(const struct config_setting_t *setting, const char *name, uint32 *value)
+static int config_setting_lookup_uint32(const struct config_setting_t *setting, const char *name, uint32 *value)
{
struct config_setting_t *member = config_setting_get_member(setting, name);
@@ -243,7 +243,7 @@ int config_setting_lookup_uint32(const struct config_setting_t *setting, const c
* @return The converted value.
* @retval 0 in case of failure.
*/
-uint16 config_setting_get_uint16(const struct config_setting_t *setting)
+static uint16 config_setting_get_uint16(const struct config_setting_t *setting)
{
if (setting == NULL || setting->type != CONFIG_TYPE_INT)
return 0;
@@ -266,7 +266,7 @@ uint16 config_setting_get_uint16(const struct config_setting_t *setting)
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_uint16(const struct config_setting_t *setting, const char *name, uint16 *value)
+static int config_setting_lookup_uint16(const struct config_setting_t *setting, const char *name, uint16 *value)
{
struct config_setting_t *member = config_setting_get_member(setting, name);
@@ -289,7 +289,7 @@ int config_setting_lookup_uint16(const struct config_setting_t *setting, const c
* @return The converted value.
* @retval 0 in case of failure.
*/
-int16 config_setting_get_int16(const struct config_setting_t *setting)
+static int16 config_setting_get_int16(const struct config_setting_t *setting)
{
if (setting == NULL || setting->type != CONFIG_TYPE_INT)
return 0;
@@ -312,7 +312,7 @@ int16 config_setting_get_int16(const struct config_setting_t *setting)
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_int16(const struct config_setting_t *setting, const char *name, int16 *value)
+static int config_setting_lookup_int16(const struct config_setting_t *setting, const char *name, int16 *value)
{
struct config_setting_t *member = config_setting_get_member(setting, name);
@@ -338,7 +338,7 @@ int config_setting_lookup_int16(const struct config_setting_t *setting, const ch
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_setting_lookup_mutable_string(const struct config_setting_t *setting, const char *name, char *out, size_t out_size)
+static int config_setting_lookup_mutable_string(const struct config_setting_t *setting, const char *name, char *out, size_t out_size)
{
const char *str = NULL;
@@ -361,7 +361,7 @@ int config_setting_lookup_mutable_string(const struct config_setting_t *setting,
* @retval CONFIG_TRUE in case of success.
* @retval CONFIG_FALSE in case of failure.
*/
-int config_lookup_mutable_string(const struct config_t *config, const char *name, char *out, size_t out_size)
+static int config_lookup_mutable_string(const struct config_t *config, const char *name, char *out, size_t out_size)
{
const char *str = NULL;
@@ -378,7 +378,7 @@ int config_lookup_mutable_string(const struct config_t *config, const char *name
*
* @see config_setting_get_int64_real()
*/
-int64 config_setting_get_int64_real(const struct config_setting_t *setting)
+static int64 config_setting_get_int64_real(const struct config_setting_t *setting)
{
return (int64)config_setting_get_int64(setting);
}
@@ -388,7 +388,7 @@ int64 config_setting_get_int64_real(const struct config_setting_t *setting)
*
* @see config_setting_lookup_int64()
*/
-int config_setting_lookup_int64_real(const struct config_setting_t *setting, const char *name, int64 *value)
+static int config_setting_lookup_int64_real(const struct config_setting_t *setting, const char *name, int64 *value)
{
long long int lli = 0;
@@ -405,7 +405,7 @@ int config_setting_lookup_int64_real(const struct config_setting_t *setting, con
*
* @see config_setting_set_int64()
*/
-int config_setting_set_int64_real(struct config_setting_t *setting, int64 value)
+static int config_setting_set_int64_real(struct config_setting_t *setting, int64 value)
{
return config_setting_set_int64(setting, (long long int)value);
}
@@ -415,7 +415,7 @@ int config_setting_set_int64_real(struct config_setting_t *setting, int64 value)
*
* @see config_setting_get_int64_elem()
*/
-int64 config_setting_get_int64_elem_real(const struct config_setting_t *setting, int idx)
+static int64 config_setting_get_int64_elem_real(const struct config_setting_t *setting, int idx)
{
return (int64)config_setting_get_int64_elem(setting, idx);
}
@@ -425,7 +425,7 @@ int64 config_setting_get_int64_elem_real(const struct config_setting_t *setting,
*
* @see config_setting_set_int64_elem()
*/
-struct config_setting_t *config_setting_set_int64_elem_real(struct config_setting_t *setting, int idx, int64 value)
+static struct config_setting_t *config_setting_set_int64_elem_real(struct config_setting_t *setting, int idx, int64 value)
{
return config_setting_set_int64_elem(setting, idx, (long long int)value);
}
@@ -435,7 +435,7 @@ struct config_setting_t *config_setting_set_int64_elem_real(struct config_settin
*
* @see config_lookup_int64()
*/
-int config_lookup_int64_real(const struct config_t *config, const char *filepath, int64 *value)
+static int config_lookup_int64_real(const struct config_t *config, const char *filepath, int64 *value)
{
long long int lli = 0;
diff --git a/src/common/console.c b/src/common/console.c
index e7edd7e1e..55a9815f5 100644
--- a/src/common/console.c
+++ b/src/common/console.c
@@ -53,13 +53,13 @@
# endif
#endif
-struct console_interface console_s;
+static struct console_interface console_s;
struct console_interface *console;
#ifdef CONSOLE_INPUT
-struct console_input_interface console_input_s;
-struct spin_lock console_ptlock_s;
+static struct console_input_interface console_input_s;
+static struct spin_lock console_ptlock_s;
-struct {
+static struct {
char queue[CONSOLE_PARSE_SIZE][MAX_CONSOLE_INPUT];
unsigned short count;
} cinput;
@@ -68,7 +68,7 @@ struct {
/*======================================
* CORE : Display title
*--------------------------------------*/
-void display_title(void)
+static void display_title(void)
{
const char *vcstype = sysinfo->vcstype();
@@ -98,14 +98,14 @@ void display_title(void)
/**
* Shows a license notice as per GNU GPL recommendation.
*/
-void display_gplnotice(void)
+static void display_gplnotice(void)
{
ShowInfo("Hercules, Copyright (C) 2012-2018, Hercules Dev Team and others.\n");
ShowInfo("Licensed under the GNU General Public License, version 3 or later.\n");
}
#ifdef CONSOLE_INPUT
-int console_parse_key_pressed(void)
+static int console_parse_key_pressed(void)
{
#ifdef WIN32
return _kbhit();
@@ -131,7 +131,7 @@ int console_parse_key_pressed(void)
/**
* Stops server
**/
-CPCMD_C(exit, server)
+static CPCMD_C(exit, server)
{
if (core->shutdown_callback != NULL)
core->shutdown_callback();
@@ -142,7 +142,7 @@ CPCMD_C(exit, server)
/**
* Displays ERS-related statistics (Entry Reusage System)
**/
-CPCMD_C(ers_report, server)
+static CPCMD_C(ers_report, server)
{
ers_report();
}
@@ -150,7 +150,7 @@ CPCMD_C(ers_report, server)
/**
* Displays memory usage
**/
-CPCMD_C(mem_report, server)
+static CPCMD_C(mem_report, server)
{
#ifdef USE_MEMMGR
memmgr_report(line?atoi(line):0);
@@ -160,7 +160,7 @@ CPCMD_C(mem_report, server)
/**
* Displays command list
**/
-CPCMD(help)
+static CPCMD(help)
{
int i;
for (i = 0; i < VECTOR_LENGTH(console->input->command_list); i++) {
@@ -178,7 +178,7 @@ CPCMD(help)
* [Ind/Hercules]
* Displays current malloc usage
*/
-CPCMD_C(malloc_usage, server)
+static CPCMD_C(malloc_usage, server)
{
unsigned int val = (unsigned int)iMalloc->usage();
ShowInfo("malloc_usage: %.2f MB\n",(double)(val)/1024);
@@ -188,7 +188,7 @@ CPCMD_C(malloc_usage, server)
* Skips an sql update
* Usage: sql update skip UPDATE-FILE.sql
**/
-CPCMD_C(skip, update)
+static CPCMD_C(skip, update)
{
if( !line ) {
ShowDebug("usage example: sql update skip 2013-02-14--16-15.sql\n");
@@ -200,7 +200,7 @@ CPCMD_C(skip, update)
/**
* Loads console commands list
**/
-void console_load_defaults(void)
+static void console_load_defaults(void)
{
/**
* Defines a main category.
@@ -313,7 +313,7 @@ void console_load_defaults(void)
* @param name The command name.
* @param func The command callback.
*/
-void console_parse_create(char *name, CParseFunc func)
+static void console_parse_create(char *name, CParseFunc func)
{
int i;
char *tok;
@@ -370,7 +370,7 @@ void console_parse_create(char *name, CParseFunc func)
* @param cmd The command entry.
* @param depth The current tree depth (for display purposes).
*/
-void console_parse_list_subs(struct CParseEntry *cmd, unsigned char depth)
+static void console_parse_list_subs(struct CParseEntry *cmd, unsigned char depth)
{
int i;
char msg[CP_CMD_LENGTH * 2];
@@ -394,7 +394,7 @@ void console_parse_list_subs(struct CParseEntry *cmd, unsigned char depth)
*
* @param line The input line.
*/
-void console_parse_sub(char *line)
+static void console_parse_sub(char *line)
{
struct CParseEntry *cmd;
char bline[200];
@@ -457,7 +457,7 @@ void console_parse_sub(char *line)
ShowError("Is only a category, type '"CL_WHITE"%s help"CL_RESET"' to list its subcommands\n",sublist);
}
-void console_parse(char *line)
+static void console_parse(char *line)
{
int c, i = 0, len = MAX_CONSOLE_INPUT - 1;/* we leave room for the \0 :P */
@@ -474,7 +474,7 @@ void console_parse(char *line)
line[i++] = '\0';
}
-void *cThread_main(void *x)
+static void *cThread_main(void *x)
{
while( console->input->ptstate ) {/* loopx */
if( console->input->key_pressed() ) {
@@ -501,7 +501,7 @@ void *cThread_main(void *x)
return NULL;
}
-int console_parse_timer(int tid, int64 tick, int id, intptr_t data)
+static int console_parse_timer(int tid, int64 tick, int id, intptr_t data)
{
int i;
EnterSpinLock(console->input->ptlock);
@@ -514,7 +514,7 @@ int console_parse_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-void console_parse_final(void)
+static void console_parse_final(void)
{
if( console->input->ptstate ) {
InterlockedDecrement(&console->input->ptstate);
@@ -528,7 +528,7 @@ void console_parse_final(void)
}
}
-void console_parse_init(void)
+static void console_parse_init(void)
{
cinput.count = 0;
@@ -548,13 +548,13 @@ void console_parse_init(void)
timer->add_interval(timer->gettick() + 1000, console->input->parse_timer, 0, 0, 500);/* start listening in 1s; re-try every 0.5s */
}
-void console_setSQL(struct Sql *SQL_handle)
+static void console_setSQL(struct Sql *SQL_handle)
{
console->input->SQL = SQL_handle;
}
#endif /* CONSOLE_INPUT */
-void console_init(void)
+static void console_init(void)
{
#ifdef CONSOLE_INPUT
VECTOR_INIT(console->input->command_list);
@@ -564,7 +564,7 @@ void console_init(void)
#endif
}
-void console_final(void)
+static void console_final(void)
{
#ifdef CONSOLE_INPUT
console->input->parse_final();
diff --git a/src/common/core.c b/src/common/core.c
index 406bb7629..9fd33c4e0 100644
--- a/src/common/core.c
+++ b/src/common/core.c
@@ -80,7 +80,7 @@
// And don't complain to us if the XYZ plugin you installed wiped your hard disk, or worse.
// Note: This feature is deprecated, and should not be used.
-struct core_interface core_s;
+static struct core_interface core_s;
struct core_interface *core = &core_s;
#ifndef MINICORE // minimalist Core
@@ -97,7 +97,7 @@ struct core_interface *core = &core_s;
#ifndef POSIX
#define compat_signal(signo, func) signal((signo), (func))
#else
-sigfunc *compat_signal(int signo, sigfunc *func)
+static sigfunc *compat_signal(int signo, sigfunc *func)
{
struct sigaction sact, oact;
@@ -180,7 +180,7 @@ static void sig_proc(int sn)
}
}
-void signals_init (void)
+static void signals_init(void)
{
compat_signal(SIGTERM, sig_proc);
compat_signal(SIGINT, sig_proc);
@@ -203,7 +203,7 @@ void signals_init (void)
*
* @retval false if the check didn't pass and the program should be terminated.
*/
-bool usercheck(void)
+static bool usercheck(void)
{
#ifndef _WIN32
if (sysinfo->is_superuser()) {
@@ -247,7 +247,7 @@ bool usercheck(void)
return true;
}
-void core_defaults(void)
+static void core_defaults(void)
{
nullpo_defaults();
#ifndef MINICORE
@@ -278,7 +278,7 @@ void core_defaults(void)
/**
* Returns the source (core or plugin name) for the given command-line argument
*/
-const char *cmdline_arg_source(struct CmdlineArgData *arg)
+static const char *cmdline_arg_source(struct CmdlineArgData *arg)
{
#ifdef MINICORE
return "core";
@@ -299,7 +299,7 @@ const char *cmdline_arg_source(struct CmdlineArgData *arg)
* @param options options associated to the command-line argument. @see enum cmdline_options.
* @return the success status.
*/
-bool cmdline_arg_add(unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options)
+static bool cmdline_arg_add(unsigned int pluginID, const char *name, char shortname, CmdlineExecFunc func, const char *help, unsigned int options)
{
struct CmdlineArgData *data = NULL;
@@ -363,7 +363,7 @@ static CMDLINEARG(version)
* @param argc the program's argc.
* @return true if a value for the current argument is available on the command line.
*/
-bool cmdline_arg_next_value(const char *name, int current_arg, int argc)
+static bool cmdline_arg_next_value(const char *name, int current_arg, int argc)
{
if (current_arg >= argc-1) {
ShowError("Missing value for option '%s'.\n", name);
@@ -391,7 +391,7 @@ bool cmdline_arg_next_value(const char *name, int current_arg, int argc)
* line arguments or handler's failure cause the program to abort.
* @return the amount of command line handlers successfully executed.
*/
-int cmdline_exec(int argc, char **argv, unsigned int options)
+static int cmdline_exec(int argc, char **argv, unsigned int options)
{
int count = 0, i;
@@ -444,7 +444,7 @@ int cmdline_exec(int argc, char **argv, unsigned int options)
/**
* Defines the global command-line arguments.
*/
-void cmdline_init(void)
+static void cmdline_init(void)
{
#ifdef MINICORE
// Minicore has no HPM. This value isn't used, but the arg_add function requires it, so we're (re)defining it here
@@ -458,7 +458,7 @@ void cmdline_init(void)
cmdline_args_init_local();
}
-void cmdline_final(void)
+static void cmdline_final(void)
{
while (VECTOR_LENGTH(cmdline->args_data) > 0) {
struct CmdlineArgData *data = &VECTOR_POP(cmdline->args_data);
@@ -468,7 +468,7 @@ void cmdline_final(void)
VECTOR_CLEAR(cmdline->args_data);
}
-struct cmdline_interface cmdline_s;
+static struct cmdline_interface cmdline_s;
struct cmdline_interface *cmdline;
void cmdline_defaults(void)
@@ -488,7 +488,7 @@ void cmdline_defaults(void)
/*======================================
* CORE : MAINROUTINE
*--------------------------------------*/
-int main (int argc, char **argv)
+int main(int argc, char **argv)
{
int retval = EXIT_SUCCESS;
{// initialize program arguments
diff --git a/src/common/db.c b/src/common/db.c
index 1ad715f25..c28ad1f7c 100644
--- a/src/common/db.c
+++ b/src/common/db.c
@@ -100,7 +100,7 @@
#include <stdio.h>
#include <stdlib.h>
-struct db_interface DB_s;
+static struct db_interface DB_s;
struct db_interface *DB;
/*****************************************************************************
@@ -358,8 +358,8 @@ static struct db_stats {
#endif /* !defined(DB_ENABLE_STATS) */
/* [Ind/Hercules] */
-struct eri *db_iterator_ers;
-struct eri *db_alloc_ers;
+static struct eri *db_iterator_ers;
+static struct eri *db_alloc_ers;
/*****************************************************************************\
* (2) Section of private functions used by the database system. *
@@ -1250,7 +1250,7 @@ static void db_release_both(union DBKey key, struct DBData data, enum DBReleaseO
* @protected
* @see struct DBIterator#first()
*/
-struct DBData *dbit_obj_first(struct DBIterator *self, union DBKey *out_key)
+static struct DBData *dbit_obj_first(struct DBIterator *self, union DBKey *out_key)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
@@ -1272,7 +1272,7 @@ struct DBData *dbit_obj_first(struct DBIterator *self, union DBKey *out_key)
* @protected
* @see struct DBIterator#last()
*/
-struct DBData *dbit_obj_last(struct DBIterator *self, union DBKey *out_key)
+static struct DBData *dbit_obj_last(struct DBIterator *self, union DBKey *out_key)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
@@ -1294,7 +1294,7 @@ struct DBData *dbit_obj_last(struct DBIterator *self, union DBKey *out_key)
* @protected
* @see struct DBIterator#next()
*/
-struct DBData *dbit_obj_next(struct DBIterator *self, union DBKey *out_key)
+static struct DBData *dbit_obj_next(struct DBIterator *self, union DBKey *out_key)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
struct DBNode *node;
@@ -1370,7 +1370,7 @@ struct DBData *dbit_obj_next(struct DBIterator *self, union DBKey *out_key)
* @protected
* @see struct DBIterator#prev()
*/
-struct DBData *dbit_obj_prev(struct DBIterator *self, union DBKey *out_key)
+static struct DBData *dbit_obj_prev(struct DBIterator *self, union DBKey *out_key)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
struct DBNode *node;
@@ -1445,7 +1445,7 @@ struct DBData *dbit_obj_prev(struct DBIterator *self, union DBKey *out_key)
* @protected
* @see struct DBIterator#exists()
*/
-bool dbit_obj_exists(struct DBIterator *self)
+static bool dbit_obj_exists(struct DBIterator *self)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
@@ -1467,7 +1467,7 @@ bool dbit_obj_exists(struct DBIterator *self)
* @see struct DBMap#remove()
* @see struct DBIterator#remove()
*/
-int dbit_obj_remove(struct DBIterator *self, struct DBData *out_data)
+static int dbit_obj_remove(struct DBIterator *self, struct DBData *out_data)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
struct DBNode *node;
@@ -1494,7 +1494,7 @@ int dbit_obj_remove(struct DBIterator *self, struct DBData *out_data)
* @param self Iterator
* @protected
*/
-void dbit_obj_destroy(struct DBIterator *self)
+static void dbit_obj_destroy(struct DBIterator *self)
{
struct DBIterator_impl *it = (struct DBIterator_impl *)self;
@@ -2407,7 +2407,7 @@ static enum DBOptions db_obj_options(struct DBMap *self)
* @see #db_default_release()
* @see #db_alloc()
*/
-enum DBOptions db_fix_options(enum DBType type, enum DBOptions options)
+static enum DBOptions db_fix_options(enum DBType type, enum DBOptions options)
{
DB_COUNTSTAT(db_fix_options);
switch (type) {
@@ -2438,7 +2438,7 @@ enum DBOptions db_fix_options(enum DBType type, enum DBOptions options)
* @see #db_int64_cmp()
* @see #db_uint64_cmp()
*/
-DBComparator db_default_cmp(enum DBType type)
+static DBComparator db_default_cmp(enum DBType type)
{
DB_COUNTSTAT(db_default_cmp);
switch (type) {
@@ -2466,7 +2466,7 @@ DBComparator db_default_cmp(enum DBType type)
* @see #db_int64_hash()
* @see #db_uint64_hash()
*/
-DBHasher db_default_hash(enum DBType type)
+static DBHasher db_default_hash(enum DBType type)
{
DB_COUNTSTAT(db_default_hash);
switch (type) {
@@ -2499,7 +2499,7 @@ DBHasher db_default_hash(enum DBType type)
* @see #db_release_both()
* @see #db_custom_release()
*/
-DBReleaser db_default_release(enum DBType type, enum DBOptions options)
+static DBReleaser db_default_release(enum DBType type, enum DBOptions options)
{
DB_COUNTSTAT(db_default_release);
options = DB->fix_options(type, options);
@@ -2524,7 +2524,7 @@ DBReleaser db_default_release(enum DBType type, enum DBOptions options)
* @see #db_release_both()
* @see #db_default_release()
*/
-DBReleaser db_custom_release(enum DBReleaseOption which)
+static DBReleaser db_custom_release(enum DBReleaseOption which)
{
DB_COUNTSTAT(db_custom_release);
switch (which) {
@@ -2555,7 +2555,7 @@ DBReleaser db_custom_release(enum DBReleaseOption which)
* @see struct DBMap_impl
* @see #db_fix_options()
*/
-struct DBMap *db_alloc(const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen)
+static struct DBMap *db_alloc(const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen)
{
struct DBMap_impl *db;
unsigned int i;
@@ -2629,7 +2629,7 @@ struct DBMap *db_alloc(const char *file, const char *func, int line, enum DBType
* @return The key as a DBKey union
* @public
*/
-union DBKey db_i2key(int key)
+static union DBKey db_i2key(int key)
{
union DBKey ret;
@@ -2644,7 +2644,7 @@ union DBKey db_i2key(int key)
* @return The key as a DBKey union
* @public
*/
-union DBKey db_ui2key(unsigned int key)
+static union DBKey db_ui2key(unsigned int key)
{
union DBKey ret;
@@ -2659,7 +2659,7 @@ union DBKey db_ui2key(unsigned int key)
* @return The key as a DBKey union
* @public
*/
-union DBKey db_str2key(const char *key)
+static union DBKey db_str2key(const char *key)
{
union DBKey ret;
@@ -2674,7 +2674,7 @@ union DBKey db_str2key(const char *key)
* @return The key as a DBKey union
* @public
*/
-union DBKey db_i642key(int64 key)
+static union DBKey db_i642key(int64 key)
{
union DBKey ret;
@@ -2689,7 +2689,7 @@ union DBKey db_i642key(int64 key)
* @return The key as a DBKey union
* @public
*/
-union DBKey db_ui642key(uint64 key)
+static union DBKey db_ui642key(uint64 key)
{
union DBKey ret;
@@ -2704,7 +2704,7 @@ union DBKey db_ui642key(uint64 key)
* @return The data as a DBData struct
* @public
*/
-struct DBData db_i2data(int data)
+static struct DBData db_i2data(int data)
{
struct DBData ret;
@@ -2720,7 +2720,7 @@ struct DBData db_i2data(int data)
* @return The data as a DBData struct
* @public
*/
-struct DBData db_ui2data(unsigned int data)
+static struct DBData db_ui2data(unsigned int data)
{
struct DBData ret;
@@ -2736,7 +2736,7 @@ struct DBData db_ui2data(unsigned int data)
* @return The data as a DBData struct
* @public
*/
-struct DBData db_ptr2data(void *data)
+static struct DBData db_ptr2data(void *data)
{
struct DBData ret;
@@ -2753,7 +2753,7 @@ struct DBData db_ptr2data(void *data)
* @return Integer value of the data.
* @public
*/
-int db_data2i(struct DBData *data)
+static int db_data2i(struct DBData *data)
{
DB_COUNTSTAT(db_data2i);
if (data && DB_DATA_INT == data->type)
@@ -2768,7 +2768,7 @@ int db_data2i(struct DBData *data)
* @return Unsigned int value of the data.
* @public
*/
-unsigned int db_data2ui(struct DBData *data)
+static unsigned int db_data2ui(struct DBData *data)
{
DB_COUNTSTAT(db_data2ui);
if (data && DB_DATA_UINT == data->type)
@@ -2783,7 +2783,7 @@ unsigned int db_data2ui(struct DBData *data)
* @return Void* value of the data.
* @public
*/
-void *db_data2ptr(struct DBData *data)
+static void *db_data2ptr(struct DBData *data)
{
DB_COUNTSTAT(db_data2ptr);
if (data && DB_DATA_PTR == data->type)
@@ -2796,7 +2796,7 @@ void *db_data2ptr(struct DBData *data)
* @public
* @see #db_final(void)
*/
-void db_init(void)
+static void db_init(void)
{
db_iterator_ers = ers_new(sizeof(struct DBIterator_impl),"db.c::db_iterator_ers",ERS_OPT_CLEAN|ERS_OPT_FLEX_CHUNK);
db_alloc_ers = ers_new(sizeof(struct DBMap_impl),"db.c::db_alloc_ers",ERS_OPT_CLEAN|ERS_OPT_FLEX_CHUNK);
@@ -2810,7 +2810,7 @@ void db_init(void)
* @public
* @see #db_init(void)
*/
-void db_final(void)
+static void db_final(void)
{
#ifdef DB_ENABLE_STATS
DB_COUNTSTAT(db_final);
diff --git a/src/common/des.c b/src/common/des.c
index 2223f4744..fbd158265 100644
--- a/src/common/des.c
+++ b/src/common/des.c
@@ -29,7 +29,7 @@
* Implementation of the des interface.
*/
-struct des_interface des_s;
+static struct des_interface des_s;
struct des_interface *des;
/// Bitmask for accessing individual bits of a byte.
@@ -228,7 +228,7 @@ static void des_RoundFunction(struct des_bit64 *src)
}
/// @copydoc des_interface::decrypt_block()
-void des_decrypt_block(struct des_bit64 *block)
+static void des_decrypt_block(struct des_bit64 *block)
{
des_IP(block);
des_RoundFunction(block);
@@ -236,7 +236,7 @@ void des_decrypt_block(struct des_bit64 *block)
}
/// @copydoc des_interface::decrypt()
-void des_decrypt(unsigned char *data, size_t size)
+static void des_decrypt(unsigned char *data, size_t size)
{
struct des_bit64 *p = (struct des_bit64 *)data;
size_t i;
diff --git a/src/common/ers.c b/src/common/ers.c
index da793db99..e421c47c9 100644
--- a/src/common/ers.c
+++ b/src/common/ers.c
@@ -309,7 +309,7 @@ static void ers_obj_destroy(ERS *self)
aFree(instance);
}
-void ers_cache_size(ERS *self, unsigned int new_size)
+static void ers_cache_size(ERS *self, unsigned int new_size)
{
struct ers_instance_t *instance = (struct ers_instance_t *)self;
diff --git a/src/common/grfio.c b/src/common/grfio.c
index ba8a1d161..79154d191 100644
--- a/src/common/grfio.c
+++ b/src/common/grfio.c
@@ -68,19 +68,19 @@ enum grf_filelist_type {
//#define GRFIO_LOCAL
// stores info about every loaded file
-struct grf_filelist *filelist = NULL;
-int filelist_entrys = 0;
-int filelist_maxentry = 0;
+static struct grf_filelist *filelist = NULL;
+static int filelist_entrys = 0;
+static int filelist_maxentry = 0;
// stores grf file names
-char** gentry_table = NULL;
-int gentry_entrys = 0;
-int gentry_maxentry = 0;
+static char** gentry_table = NULL;
+static int gentry_entrys = 0;
+static int gentry_maxentry = 0;
// the path to the data directory
-char data_dir[1024] = "";
+static char data_dir[1024] = "";
-struct grfio_interface grfio_s;
+static struct grfio_interface grfio_s;
struct grfio_interface *grfio;
// little endian char array to uint conversion
@@ -273,19 +273,19 @@ static void grf_decode(unsigned char *buf, size_t len, char entry_type, int entr
/* Zlib Subroutines */
/// @copydoc grfio_interface::crc32()
-unsigned long grfio_crc32(const unsigned char *buf, unsigned int len)
+static unsigned long grfio_crc32(const unsigned char *buf, unsigned int len)
{
return crc32(crc32(0L, Z_NULL, 0), buf, len);
}
/// @copydoc grfio_interface::decode_zip
-int grfio_decode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len)
+static int grfio_decode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len)
{
return uncompress(dest, dest_len, source, source_len);
}
/// @copydoc grfio_interface::encode_zip
-int grfio_encode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len)
+static int grfio_encode_zip(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len)
{
if (*dest_len == 0) /* [Ind/Hercules] */
*dest_len = compressBound(source_len);
@@ -299,7 +299,7 @@ int grfio_encode_zip(void *dest, unsigned long *dest_len, const void *source, un
/* File List Subroutines */
/// File list hash table
-int filelist_hash[256];
+static int filelist_hash[256];
/**
* Initializes the table that holds the first elements of all hash chains
@@ -351,7 +351,7 @@ static struct grf_filelist *grfio_filelist_find(const char *fname)
}
/// @copydoc grfio_interface::find_file()
-const char *grfio_find_file(const char *fname)
+static const char *grfio_find_file(const char *fname)
{
struct grf_filelist *flist = grfio_filelist_find(fname);
if (flist == NULL)
@@ -458,7 +458,7 @@ static void grfio_localpath_create(char *buffer, size_t size, const char *filena
}
/// @copydoc grfio_interface::reads()
-void *grfio_reads(const char *fname, int *size)
+static void *grfio_reads(const char *fname, int *size)
{
struct grf_filelist *entry = grfio_filelist_find(fname);
if (entry == NULL || entry->gentry <= 0) {
@@ -885,7 +885,7 @@ static int grfio_add(const char *fname)
}
/// @copydoc grfio_interface::final()
-void grfio_final(void)
+static void grfio_final(void)
{
if (filelist != NULL) {
int i;
@@ -911,7 +911,7 @@ void grfio_final(void)
}
/// @copydoc grfio_interface::init()
-void grfio_init(const char *fname)
+static void grfio_init(const char *fname)
{
FILE *data_conf;
int grf_num = 0;
diff --git a/src/common/mapindex.c b/src/common/mapindex.c
index e79054f72..d5cda5c22 100644
--- a/src/common/mapindex.c
+++ b/src/common/mapindex.c
@@ -33,12 +33,12 @@
#include <stdlib.h>
/* mapindex.c interface source */
-struct mapindex_interface mapindex_s;
+static struct mapindex_interface mapindex_s;
struct mapindex_interface *mapindex;
/// Retrieves the map name from 'string' (removing .gat extension if present).
/// Result gets placed either into 'buf' or in a static local buffer.
-const char* mapindex_getmapname(const char* string, char* output)
+static const char *mapindex_getmapname(const char *string, char *output)
{
static char buf[MAP_NAME_LENGTH];
char* dest = (output != NULL) ? output : buf;
@@ -62,7 +62,7 @@ const char* mapindex_getmapname(const char* string, char* output)
/// Retrieves the map name from 'string' (adding .gat extension if not already present).
/// Result gets placed either into 'buf' or in a static local buffer.
-const char* mapindex_getmapname_ext(const char* string, char* output)
+static const char *mapindex_getmapname_ext(const char *string, char *output)
{
static char buf[MAP_NAME_LENGTH_EXT];
char* dest = (output != NULL) ? output : buf;
@@ -94,7 +94,7 @@ const char* mapindex_getmapname_ext(const char* string, char* output)
/// Adds a map to the specified index
/// Returns 1 if successful, 0 otherwise
-int mapindex_addmap(int index, const char* name)
+static int mapindex_addmap(int index, const char *name)
{
char map_name[MAP_NAME_LENGTH];
@@ -136,7 +136,7 @@ int mapindex_addmap(int index, const char* name)
return index;
}
-unsigned short mapindex_name2id(const char* name)
+static unsigned short mapindex_name2id(const char *name)
{
int i;
char map_name[MAP_NAME_LENGTH];
@@ -150,7 +150,7 @@ unsigned short mapindex_name2id(const char* name)
return 0;
}
-const char *mapindex_id2name_sub(uint16 id, const char *file, int line, const char *func)
+static const char *mapindex_id2name_sub(uint16 id, const char *file, int line, const char *func)
{
if (id >= MAX_MAPINDEX || !mapindex_exists(id)) {
ShowDebug("mapindex_id2name: Requested name for non-existant map index [%d] in cache. %s:%s:%d\n", id,file,func,line);
@@ -159,7 +159,7 @@ const char *mapindex_id2name_sub(uint16 id, const char *file, int line, const ch
return mapindex->list[id].name;
}
-int mapindex_init(void)
+static int mapindex_init(void)
{
FILE *fp;
char line[1024];
@@ -198,7 +198,7 @@ int mapindex_init(void)
return total;
}
-bool mapindex_check_default(void)
+static bool mapindex_check_default(void)
{
if (!strdb_iget(mapindex->db, mapindex->default_map)) {
ShowError("mapindex_init: MAP_DEFAULT '%s' not found in cache! update mapindex.h MAP_DEFAULT var!!!\n", mapindex->default_map);
@@ -207,14 +207,14 @@ bool mapindex_check_default(void)
return true;
}
-void mapindex_removemap(int index)
+static void mapindex_removemap(int index)
{
Assert_retv(index < MAX_MAPINDEX);
strdb_remove(mapindex->db, mapindex->list[index].name);
mapindex->list[index].name[0] = '\0';
}
-void mapindex_final(void)
+static void mapindex_final(void)
{
db_destroy(mapindex->db);
}
diff --git a/src/common/md5calc.c b/src/common/md5calc.c
index 9784bd7b8..3f9ccdc41 100644
--- a/src/common/md5calc.c
+++ b/src/common/md5calc.c
@@ -34,7 +34,7 @@
* Implementation of the md5 interface.
*/
-struct md5_interface md5_s;
+static struct md5_interface md5_s;
struct md5_interface *md5;
/// Global variable
@@ -233,7 +233,7 @@ static void md5_buf2binary(const uint8 *buf, const int buf_size, uint8 *output)
}
/// @copydoc md5_interface::string()
-void md5_string(const char *string, char *output)
+static void md5_string(const char *string, char *output)
{
uint8 digest[16];
@@ -249,7 +249,7 @@ void md5_string(const char *string, char *output)
}
/// @copydoc md5_interface::salt();
-void md5_salt(int len, char *output)
+static void md5_salt(int len, char *output)
{
int i;
Assert_retv(len > 0);
diff --git a/src/common/memmgr.c b/src/common/memmgr.c
index bdaf61db3..3c645e7fa 100644
--- a/src/common/memmgr.c
+++ b/src/common/memmgr.c
@@ -31,7 +31,7 @@
#include <stdlib.h>
#include <string.h>
-struct malloc_interface iMalloc_s;
+static struct malloc_interface iMalloc_s;
struct malloc_interface *iMalloc;
////////////// Memory Libraries //////////////////
@@ -113,9 +113,7 @@ struct malloc_interface *iMalloc;
#error Unsupported OS
#endif
-#endif
-
-void* aMalloc_(size_t size, const char *file, int line, const char *func)
+static void *aMalloc_(size_t size, const char *file, int line, const char *func)
{
void *ret = MALLOC(size, file, line, func);
// ShowMessage("%s:%d: in func %s: aMalloc %d\n",file,line,func,size);
@@ -126,7 +124,7 @@ void* aMalloc_(size_t size, const char *file, int line, const char *func)
return ret;
}
-void* aCalloc_(size_t num, size_t size, const char *file, int line, const char *func)
+static void *aCalloc_(size_t num, size_t size, const char *file, int line, const char *func)
{
void *ret = CALLOC(num, size, file, line, func);
// ShowMessage("%s:%d: in func %s: aCalloc %d %d\n",file,line,func,num,size);
@@ -136,7 +134,7 @@ void* aCalloc_(size_t num, size_t size, const char *file, int line, const char *
}
return ret;
}
-void* aRealloc_(void *p, size_t size, const char *file, int line, const char *func)
+static void *aRealloc_(void *p, size_t size, const char *file, int line, const char *func)
{
void *ret = REALLOC(p, size, file, line, func);
// ShowMessage("%s:%d: in func %s: aRealloc %p %d\n",file,line,func,p,size);
@@ -147,13 +145,10 @@ void* aRealloc_(void *p, size_t size, const char *file, int line, const char *fu
return ret;
}
-void* aReallocz_(void *p, size_t size, const char *file, int line, const char *func)
+static void *aReallocz_(void *p, size_t size, const char *file, int line, const char *func)
{
unsigned char *ret = NULL;
// ShowMessage("%s:%d: in func %s: aReallocz %p %ld\n",file,line,func,p,size);
-#ifdef USE_MEMMGR
- ret = REALLOC(p, size, file, line, func);
-#else
if (p != NULL) {
size_t newSize;
size_t oldSize = BUFFER_SIZE(p);
@@ -166,7 +161,6 @@ void* aReallocz_(void *p, size_t size, const char *file, int line, const char *f
if (ret != NULL)
memset(ret, 0, BUFFER_SIZE(ret));
}
-#endif
if (ret == NULL) {
ShowFatalError("%s:%d: in func %s: aRealloc error out of memory!\n",file,line,func);
exit(EXIT_FAILURE);
@@ -174,7 +168,7 @@ void* aReallocz_(void *p, size_t size, const char *file, int line, const char *f
return ret;
}
-char* aStrdup_(const char *p, const char *file, int line, const char *func)
+static char *aStrdup_(const char *p, const char *file, int line, const char *func)
{
char *ret = STRDUP(p, file, line, func);
// ShowMessage("%s:%d: in func %s: aStrdup %p\n",file,line,func,p);
@@ -201,7 +195,7 @@ char* aStrdup_(const char *p, const char *file, int line, const char *func)
* @param func @see ALC_MARK.
* @return the copied string.
*/
-char *aStrndup_(const char *p, size_t size, const char *file, int line, const char *func)
+static char *aStrndup_(const char *p, size_t size, const char *file, int line, const char *func)
{
size_t len = strnlen(p, size);
char *ret = MALLOC(len + 1, file, line, func);
@@ -214,7 +208,7 @@ char *aStrndup_(const char *p, size_t size, const char *file, int line, const ch
return ret;
}
-void aFree_(void *p, const char *file, int line, const char *func)
+static void aFree_(void *p, const char *file, int line, const char *func)
{
// ShowMessage("%s:%d: in func %s: aFree %p\n",file,line,func,p);
if (p)
@@ -222,8 +216,7 @@ void aFree_(void *p, const char *file, int line, const char *func)
//p = NULL;
}
-
-#ifdef USE_MEMMGR
+#else // USE_MEMMGR
#if defined(DEBUG)
#define DEBUG_MEMMGR
@@ -232,21 +225,21 @@ void aFree_(void *p, const char *file, int line, const char *func)
/* USE_MEMMGR */
/*
-* Memory manager
-* able to handle malloc and free efficiently
-* Since the complex processing, I might be slightly heavier.
-*
-* (I'm sorry for the poor description ^ ^;) such as data structures
-* Divided into "blocks" of a plurality of memory, "unit" of a plurality of blocks further
-* I have to divide. Size of the unit, a plurality of distribution equal to the capacity of one block
-* That's what you have. For example, if one unit of 32KB, one block 1 Yu 32Byte
-* Knit, or are able to gather 1024, gathered 512 units 64Byte
-* I can be or have. (Excluding padding, the unit_head)
-*
-* Lead-linked list (block_prev, block_next) in each other is the same size block
-* Linked list (hash_prev, hash_nect) even among such one in the block with the figure
-* I like to have. Thus, reuse of memory no longer needed can be performed efficiently.
-*/
+ * Memory manager
+ * able to handle malloc and free efficiently
+ * Since the complex processing, I might be slightly heavier.
+ *
+ * (I'm sorry for the poor description ^ ^;) such as data structures
+ * Divided into "blocks" of a plurality of memory, "unit" of a plurality of blocks further
+ * I have to divide. Size of the unit, a plurality of distribution equal to the capacity of one block
+ * That's what you have. For example, if one unit of 32KB, one block 1 Yu 32Byte
+ * Knit, or are able to gather 1024, gathered 512 units 64Byte
+ * I can be or have. (Excluding padding, the unit_head)
+ *
+ * Lead-linked list (block_prev, block_next) in each other is the same size block
+ * Linked list (hash_prev, hash_nect) even among such one in the block with the figure
+ * I like to have. Thus, reuse of memory no longer needed can be performed efficiently.
+ */
/* Alignment of the block */
#define BLOCK_ALIGNMENT1 16
@@ -286,8 +279,8 @@ struct unit_head {
long checksum;
};
-static struct block* hash_unfill[BLOCK_DATA_COUNT1 + BLOCK_DATA_COUNT2 + 1];
-static struct block* block_first, *block_last, block_head;
+static struct block *hash_unfill[BLOCK_DATA_COUNT1 + BLOCK_DATA_COUNT2 + 1];
+static struct block *block_first, *block_last, block_head;
/* Data for areas that do not use the memory be turned */
struct unit_head_large {
@@ -299,8 +292,8 @@ struct unit_head_large {
static struct unit_head_large *unit_head_large_first = NULL;
-static struct block* block_malloc(unsigned short hash);
-static void block_free(struct block* p);
+static struct block *block_malloc(unsigned short hash);
+static void block_free(struct block *p);
static size_t memmgr_usage_bytes;
static size_t memmgr_usage_bytes_t;
@@ -308,7 +301,7 @@ static size_t memmgr_usage_bytes_t;
#define block2unit(p, n) ((struct unit_head*)(&(p)->data[ p->unit_size * (n) ]))
#define memmgr_assert(v) do { if(!(v)) { ShowError("Memory manager: assertion '" #v "' failed!\n"); } } while(0)
-static unsigned short size2hash( size_t size )
+static unsigned short size2hash(size_t size)
{
if( size <= BLOCK_DATA_SIZE1 ) {
return (unsigned short)(size + BLOCK_ALIGNMENT1 - 1) / BLOCK_ALIGNMENT1;
@@ -320,7 +313,7 @@ static unsigned short size2hash( size_t size )
}
}
-static size_t hash2size( unsigned short hash )
+static size_t hash2size(unsigned short hash)
{
if( hash <= BLOCK_DATA_COUNT1) {
return hash * BLOCK_ALIGNMENT1;
@@ -329,7 +322,8 @@ static size_t hash2size( unsigned short hash )
}
}
-void *mmalloc_(size_t size, const char *file, int line, const char *func) {
+static void *mmalloc_(size_t size, const char *file, int line, const char *func)
+{
struct block *block;
short size_hash = size2hash( size );
struct unit_head *head;
@@ -435,14 +429,16 @@ void *mmalloc_(size_t size, const char *file, int line, const char *func) {
return (char *)head + sizeof(struct unit_head) - sizeof(long);
}
-void *mcalloc_(size_t num, size_t size, const char *file, int line, const char *func) {
+static void *mcalloc_(size_t num, size_t size, const char *file, int line, const char *func)
+{
void *p = iMalloc->malloc(num * size,file,line,func);
if (p)
memset(p, 0, num * size);
return p;
}
-void *mrealloc_(void *memblock, size_t size, const char *file, int line, const char *func) {
+static void *mrealloc_(void *memblock, size_t size, const char *file, int line, const char *func)
+{
size_t old_size;
if(memblock == NULL) {
return iMalloc->malloc(size,file,line,func);
@@ -467,7 +463,8 @@ void *mrealloc_(void *memblock, size_t size, const char *file, int line, const c
}
/* a mrealloc_ clone with the difference it 'z'eroes the newly created memory */
-void *mreallocz_(void *memblock, size_t size, const char *file, int line, const char *func) {
+static void *mreallocz_(void *memblock, size_t size, const char *file, int line, const char *func)
+{
size_t old_size;
void *p = NULL;
@@ -497,7 +494,8 @@ void *mreallocz_(void *memblock, size_t size, const char *file, int line, const
}
-char *mstrdup_(const char *p, const char *file, int line, const char *func) {
+static char *mstrdup_(const char *p, const char *file, int line, const char *func)
+{
if(p == NULL) {
return NULL;
} else {
@@ -525,7 +523,7 @@ char *mstrdup_(const char *p, const char *file, int line, const char *func) {
* @return the copied string.
* @retval NULL if the source string is NULL or in case of error.
*/
-char *mstrndup_(const char *p, size_t size, const char *file, int line, const char *func)
+static char *mstrndup_(const char *p, size_t size, const char *file, int line, const char *func)
{
if (p == NULL) {
return NULL;
@@ -539,7 +537,8 @@ char *mstrndup_(const char *p, size_t size, const char *file, int line, const ch
}
-void mfree_(void *ptr, const char *file, int line, const char *func) {
+static void mfree_(void *ptr, const char *file, int line, const char *func)
+{
struct unit_head *head;
if (ptr == NULL)
@@ -611,7 +610,7 @@ void mfree_(void *ptr, const char *file, int line, const char *func) {
}
/* Allocating blocks */
-static struct block* block_malloc(unsigned short hash)
+static struct block *block_malloc(unsigned short hash)
{
struct block *p;
if(hash_unfill[0] != NULL) {
@@ -668,7 +667,7 @@ static struct block* block_malloc(unsigned short hash)
return p;
}
-static void block_free(struct block* p)
+static void block_free(struct block *p)
{
if( p->unfill_prev ) {
if( p->unfill_prev == &block_head) {
@@ -686,7 +685,7 @@ static void block_free(struct block* p)
hash_unfill[0] = p;
}
-size_t memmgr_usage (void)
+static size_t memmgr_usage(void)
{
return memmgr_usage_bytes / 1024;
}
@@ -695,7 +694,8 @@ size_t memmgr_usage (void)
static char memmer_logfile[128];
static FILE *log_fp;
-static void memmgr_log(char *buf, char *vcsinfo) {
+static void memmgr_log(char *buf, char *vcsinfo)
+{
if( !log_fp ) {
time_t raw;
struct tm* t;
@@ -718,7 +718,7 @@ static void memmgr_log(char *buf, char *vcsinfo) {
///
/// @param ptr Pointer to the memory
/// @return true if the memory is active
-bool memmgr_verify(void* ptr)
+static bool memmgr_verify(void *ptr)
{
struct block* block = block_first;
struct unit_head_large* large = unit_head_large_first;
@@ -759,7 +759,7 @@ bool memmgr_verify(void* ptr)
return false;
}
-static void memmgr_final (void)
+static void memmgr_final(void)
{
struct block *block = block_first;
struct unit_head_large *large = unit_head_large_first;
@@ -815,7 +815,8 @@ static void memmgr_final (void)
#endif /* LOG_MEMMGR */
}
/* [Ind/Hercules] */
-void memmgr_report (int extra) {
+void memmgr_report(int extra)
+{
struct block *block = block_first;
struct unit_head_large *large = unit_head_large_first;
unsigned int count = 0, size = 0;
@@ -919,13 +920,13 @@ static void memmgr_init_messages(void)
/*======================================
-* Initialize
-*--------------------------------------
-*/
+ * Initialize
+ *--------------------------------------
+ */
/// Tests the memory for errors and memory leaks.
-void malloc_memory_check(void)
+static void malloc_memory_check(void)
{
MEMORY_CHECK();
}
@@ -933,7 +934,8 @@ void malloc_memory_check(void)
/// Returns true if a pointer is valid.
/// The check is best-effort, false positives are possible.
-bool malloc_verify_ptr(void* ptr) {
+static bool malloc_verify_ptr(void *ptr)
+{
#ifdef USE_MEMMGR
return memmgr_verify(ptr) && MEMORY_VERIFY(ptr);
#else
@@ -942,7 +944,8 @@ bool malloc_verify_ptr(void* ptr) {
}
-size_t malloc_usage (void) {
+static size_t malloc_usage(void)
+{
#ifdef USE_MEMMGR
return memmgr_usage ();
#else
@@ -950,7 +953,8 @@ size_t malloc_usage (void) {
#endif
}
-void malloc_final (void) {
+static void malloc_final(void)
+{
#ifdef USE_MEMMGR
memmgr_final ();
#endif
@@ -966,14 +970,14 @@ void malloc_final (void) {
* chance to other modules to initialize, in case they want to silence any
* status messages, but at the same time require malloc.
*/
-void malloc_init_messages(void)
+static void malloc_init_messages(void)
{
#ifdef USE_MEMMGR
memmgr_init_messages();
#endif
}
-void malloc_init(void)
+static void malloc_init(void)
{
#ifdef USE_MEMMGR
memmgr_usage_bytes_t = 0;
@@ -993,7 +997,8 @@ void malloc_init(void)
#endif
}
-void malloc_defaults(void) {
+void malloc_defaults(void)
+{
iMalloc = &iMalloc_s;
iMalloc->init = malloc_init;
iMalloc->final = malloc_final;
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 4a79245a1..fa8f3048d 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -371,13 +371,13 @@ struct item_option {
struct item {
int id;
- short nameid;
+ int nameid;
short amount;
unsigned int equip; // Location(s) where item is equipped (using enum equip_pos for bitmasking).
char identify;
char refine;
char attribute;
- short card[MAX_SLOTS];
+ int card[MAX_SLOTS];
unsigned int expire_time;
char favorite;
unsigned char bound;
@@ -538,8 +538,8 @@ struct s_pet {
int pet_id;
short class_;
short level;
- short egg_id;//pet egg id
- short equip;//pet equip name_id
+ int egg_id;//pet egg id
+ int equip;//pet equip name_id
short intimate;//pet friendly
short hungry;//pet hungry
char name[NAME_LENGTH];
@@ -634,7 +634,8 @@ struct mmo_charstatus {
unsigned int option;
short manner; // Defines how many minutes a char will be muted, each negative point is equivalent to a minute.
unsigned char karma;
- short hair,hair_color,clothes_color,body;
+ short hair, hair_color, clothes_color;
+ int body;
int party_id,guild_id,clan_id,pet_id,hom_id,mer_id,ele_id;
int fame;
@@ -644,12 +645,12 @@ struct mmo_charstatus {
int sword_faith, sword_calls;
struct {
- short weapon; ///< Weapon view sprite id.
- short shield; ///< Shield view sprite id.
- short head_top; ///< Top headgear view sprite id.
- short head_mid; ///< Middle headgear view sprite id.
- short head_bottom; ///< Bottom headgear view sprite id.
- short robe; ///< Robe view sprite id.
+ int weapon; ///< Weapon view sprite id.
+ int shield; ///< Shield view sprite id.
+ int head_top; ///< Top headgear view sprite id.
+ int head_mid; ///< Middle headgear view sprite id.
+ int head_bottom; ///< Bottom headgear view sprite id.
+ int robe; ///< Robe view sprite id.
} look;
char name[NAME_LENGTH];
diff --git a/src/common/mutex.c b/src/common/mutex.c
index fab1c45c0..dd63d2adc 100644
--- a/src/common/mutex.c
+++ b/src/common/mutex.c
@@ -39,7 +39,7 @@
* Implementation of the mutex interface.
*/
-struct mutex_interface mutex_s;
+static struct mutex_interface mutex_s;
struct mutex_interface *mutex;
struct mutex_data {
@@ -65,7 +65,7 @@ struct cond_data {
/* Mutex */
/// @copydoc mutex_interface::create()
-struct mutex_data *mutex_create(void)
+static struct mutex_data *mutex_create(void)
{
struct mutex_data *m = aMalloc(sizeof(struct mutex_data));
if (m == NULL) {
@@ -83,7 +83,7 @@ struct mutex_data *mutex_create(void)
}
/// @copydoc mutex_interface::destroy()
-void mutex_destroy(struct mutex_data *m)
+static void mutex_destroy(struct mutex_data *m)
{
nullpo_retv(m);
#ifdef WIN32
@@ -96,7 +96,7 @@ void mutex_destroy(struct mutex_data *m)
}
/// @copydoc mutex_interface::lock()
-void mutex_lock(struct mutex_data *m)
+static void mutex_lock(struct mutex_data *m)
{
nullpo_retv(m);
#ifdef WIN32
@@ -107,7 +107,7 @@ void mutex_lock(struct mutex_data *m)
}
/// @copydoc mutex_interface::trylock()
-bool mutex_trylock(struct mutex_data *m)
+static bool mutex_trylock(struct mutex_data *m)
{
nullpo_retr(false, m);
#ifdef WIN32
@@ -121,7 +121,7 @@ bool mutex_trylock(struct mutex_data *m)
}
/// @copydoc mutex_interface::unlock()
-void mutex_unlock(struct mutex_data *m)
+static void mutex_unlock(struct mutex_data *m)
{
nullpo_retv(m);
#ifdef WIN32
@@ -134,7 +134,7 @@ void mutex_unlock(struct mutex_data *m)
/* Conditional variable */
/// @copydoc mutex_interface::cond_create()
-struct cond_data *cond_create(void)
+static struct cond_data *cond_create(void)
{
struct cond_data *c = aMalloc(sizeof(struct cond_data));
if (c == NULL) {
@@ -155,7 +155,7 @@ struct cond_data *cond_create(void)
}
/// @copydoc mutex_interface::cond_destroy()
-void cond_destroy(struct cond_data *c)
+static void cond_destroy(struct cond_data *c)
{
nullpo_retv(c);
#ifdef WIN32
@@ -170,7 +170,7 @@ void cond_destroy(struct cond_data *c)
}
/// @copydoc mutex_interface::cond_wait()
-void cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeout_ticks)
+static void cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeout_ticks)
{
#ifdef WIN32
register DWORD ms;
@@ -224,7 +224,7 @@ void cond_wait(struct cond_data *c, struct mutex_data *m, sysint timeout_ticks)
}
/// @copydoc mutex_interface::cond_signal()
-void cond_signal(struct cond_data *c)
+static void cond_signal(struct cond_data *c)
{
#ifdef WIN32
# if 0
@@ -245,7 +245,7 @@ void cond_signal(struct cond_data *c)
}
/// @copydoc mutex_interface::cond_broadcast()
-void cond_broadcast(struct cond_data *c)
+static void cond_broadcast(struct cond_data *c)
{
#ifdef WIN32
# if 0
diff --git a/src/common/nullpo.c b/src/common/nullpo.c
index 1441ff853..e19f7f846 100644
--- a/src/common/nullpo.c
+++ b/src/common/nullpo.c
@@ -32,7 +32,7 @@
#include <execinfo.h>
#endif // HAVE_EXECINFO
-struct nullpo_interface nullpo_s;
+static struct nullpo_interface nullpo_s;
struct nullpo_interface *nullpo;
/**
@@ -44,7 +44,8 @@ struct nullpo_interface *nullpo;
* @param targetname Name of the checked symbol
* @param title Message title to display (i.e. failed assertion or nullpo info)
*/
-void assert_report(const char *file, int line, const char *func, const char *targetname, const char *title) {
+static void assert_report(const char *file, int line, const char *func, const char *targetname, const char *title)
+{
#ifdef HAVE_EXECINFO
void *array[10];
int size;
@@ -72,7 +73,8 @@ void assert_report(const char *file, int line, const char *func, const char *tar
/**
*
**/
-void nullpo_defaults(void) {
+void nullpo_defaults(void)
+{
nullpo = &nullpo_s;
nullpo->assert_report = assert_report;
}
diff --git a/src/common/random.c b/src/common/random.c
index 6fbaba91c..9bbe4f86c 100644
--- a/src/common/random.c
+++ b/src/common/random.c
@@ -40,11 +40,11 @@
* Implementation of the random number generator interface.
*/
-struct rnd_interface rnd_s;
+static struct rnd_interface rnd_s;
struct rnd_interface *rnd;
/// @copydoc rnd_interface::init()
-void rnd_init(void)
+static void rnd_init(void)
{
unsigned long seed = (unsigned long)timer->gettick();
seed += (unsigned long)time(NULL);
@@ -66,30 +66,30 @@ void rnd_init(void)
}
/// @copydoc rnd_interface::final()
-void rnd_final(void)
+static void rnd_final(void)
{
}
/// @copydoc rnd_interface::seed()
-void rnd_seed(uint32 seed)
+static void rnd_seed(uint32 seed)
{
init_genrand(seed);
}
/// @copydoc rnd_interface::random()
-int32 rnd_random(void)
+static int32 rnd_random(void)
{
return (int32)genrand_int31();
}
/// @copydoc rnd_interface::roll()
-uint32 rnd_roll(uint32 dice_faces)
+static uint32 rnd_roll(uint32 dice_faces)
{
return (uint32)(rnd->uniform()*dice_faces);
}
/// @copydoc rnd_interface::value()
-int32 rnd_value(int32 min, int32 max)
+static int32 rnd_value(int32 min, int32 max)
{
if (min >= max)
return min;
@@ -97,13 +97,13 @@ int32 rnd_value(int32 min, int32 max)
}
/// @copydoc rnd_interface::uniform()
-double rnd_uniform(void)
+static double rnd_uniform(void)
{
return ((uint32)genrand_int32())*(1.0/4294967296.0);// divided by 2^32
}
/// @copydoc rnd_interface::uniform53()
-double rnd_uniform53(void)
+static double rnd_uniform53(void)
{
return genrand_res53();
}
diff --git a/src/common/showmsg.c b/src/common/showmsg.c
index 8bcd1b4c7..32d1e7610 100644
--- a/src/common/showmsg.c
+++ b/src/common/showmsg.c
@@ -45,7 +45,7 @@
#define DEBUGLOGPATH "log"PATHSEP_STR"login-server.log"
#endif
-struct showmsg_interface showmsg_s;
+static struct showmsg_interface showmsg_s;
struct showmsg_interface *showmsg;
///////////////////////////////////////////////////////////////////////////////
@@ -186,7 +186,7 @@ Escape sequences for Select Character Set
#define is_console(handle) (FILE_TYPE_CHAR==GetFileType(handle))
///////////////////////////////////////////////////////////////////////////////
-int VFPRINTF(HANDLE handle, const char *fmt, va_list argptr)
+static int VFPRINTF(HANDLE handle, const char *fmt, va_list argptr)
{
/////////////////////////////////////////////////////////////////
/* XXX Two streams are being used. Disabled to avoid inconsistency [flaviojs]
@@ -467,8 +467,9 @@ int VFPRINTF(HANDLE handle, const char *fmt, va_list argptr)
return 0;
}
-int FPRINTF(HANDLE handle, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
-int FPRINTF(HANDLE handle, const char *fmt, ...) {
+static int FPRINTF(HANDLE handle, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
+static int FPRINTF(HANDLE handle, const char *fmt, ...)
+{
int ret;
va_list argptr;
va_start(argptr, fmt);
@@ -488,7 +489,7 @@ int FPRINTF(HANDLE handle, const char *fmt, ...) {
#define is_console(file) (0!=isatty(fileno(file)))
//vprintf_without_ansiformats
-int VFPRINTF(FILE *file, const char *fmt, va_list argptr)
+static int VFPRINTF(FILE *file, const char *fmt, va_list argptr)
{
char *p, *q;
NEWBUF(tempbuf); // temporary buffer
@@ -584,8 +585,9 @@ int VFPRINTF(FILE *file, const char *fmt, va_list argptr)
FREEBUF(tempbuf);
return 0;
}
-int FPRINTF(FILE *file, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
-int FPRINTF(FILE *file, const char *fmt, ...) {
+static int FPRINTF(FILE *file, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
+static int FPRINTF(FILE *file, const char *fmt, ...)
+{
int ret;
va_list argptr;
va_start(argptr, fmt);
@@ -601,7 +603,7 @@ int FPRINTF(FILE *file, const char *fmt, ...) {
#endif// not _WIN32
-int vShowMessage_(enum msg_type flag, const char *string, va_list ap)
+static int vShowMessage_(enum msg_type flag, const char *string, va_list ap)
{
va_list apcopy;
char prefix[100];
@@ -720,7 +722,7 @@ int vShowMessage_(enum msg_type flag, const char *string, va_list ap)
return 0;
}
-int showmsg_vShowMessage(const char *string, va_list ap)
+static int showmsg_vShowMessage(const char *string, va_list ap)
{
int ret;
va_list apcopy;
@@ -730,14 +732,17 @@ int showmsg_vShowMessage(const char *string, va_list ap)
return ret;
}
-void showmsg_clearScreen(void)
+static void showmsg_clearScreen(void)
{
#ifndef _WIN32
ShowMessage(CL_CLS); // to prevent empty string passed messages
#endif
}
-int ShowMessage_(enum msg_type flag, const char *string, ...) __attribute__((format(printf, 2, 3)));
-int ShowMessage_(enum msg_type flag, const char *string, ...) {
+
+#if 0 // Unused
+static int ShowMessage_(enum msg_type flag, const char *string, ...) __attribute__((format(printf, 2, 3)));
+static int ShowMessage_(enum msg_type flag, const char *string, ...)
+{
int ret;
va_list ap;
va_start(ap, string);
@@ -745,58 +750,59 @@ int ShowMessage_(enum msg_type flag, const char *string, ...) {
va_end(ap);
return ret;
}
+#endif // Unused
// direct printf replacement
-void showmsg_showMessage(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showMessage(const char *string, ...)
+static void showmsg_showMessage(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showMessage(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_NONE, string, ap);
va_end(ap);
}
-void showmsg_showStatus(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showStatus(const char *string, ...)
+static void showmsg_showStatus(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showStatus(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_STATUS, string, ap);
va_end(ap);
}
-void showmsg_showSQL(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showSQL(const char *string, ...)
+static void showmsg_showSQL(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showSQL(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_SQL, string, ap);
va_end(ap);
}
-void showmsg_showInfo(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showInfo(const char *string, ...)
+static void showmsg_showInfo(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showInfo(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_INFORMATION, string, ap);
va_end(ap);
}
-void showmsg_showNotice(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showNotice(const char *string, ...)
+static void showmsg_showNotice(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showNotice(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_NOTICE, string, ap);
va_end(ap);
}
-void showmsg_showWarning(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showWarning(const char *string, ...)
+static void showmsg_showWarning(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showWarning(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_WARNING, string, ap);
va_end(ap);
}
-void showmsg_showConfigWarning(struct config_setting_t *config, const char *string, ...) __attribute__((format(printf, 2, 3)));
-void showmsg_showConfigWarning(struct config_setting_t *config, const char *string, ...)
+static void showmsg_showConfigWarning(struct config_setting_t *config, const char *string, ...) __attribute__((format(printf, 2, 3)));
+static void showmsg_showConfigWarning(struct config_setting_t *config, const char *string, ...)
{
StringBuf buf;
va_list ap;
@@ -812,24 +818,24 @@ void showmsg_showConfigWarning(struct config_setting_t *config, const char *stri
va_end(ap);
StrBuf->Destroy(&buf);
}
-void showmsg_showDebug(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showDebug(const char *string, ...)
+static void showmsg_showDebug(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showDebug(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_DEBUG, string, ap);
va_end(ap);
}
-void showmsg_showError(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showError(const char *string, ...)
+static void showmsg_showError(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showError(const char *string, ...)
{
va_list ap;
va_start(ap, string);
vShowMessage_(MSG_ERROR, string, ap);
va_end(ap);
}
-void showmsg_showFatalError(const char *string, ...) __attribute__((format(printf, 1, 2)));
-void showmsg_showFatalError(const char *string, ...)
+static void showmsg_showFatalError(const char *string, ...) __attribute__((format(printf, 1, 2)));
+static void showmsg_showFatalError(const char *string, ...)
{
va_list ap;
va_start(ap, string);
@@ -837,11 +843,11 @@ void showmsg_showFatalError(const char *string, ...)
va_end(ap);
}
-void showmsg_init(void)
+static void showmsg_init(void)
{
}
-void showmsg_final(void)
+static void showmsg_final(void)
{
}
diff --git a/src/common/socket.c b/src/common/socket.c
index cec366765..290c7a1b3 100644
--- a/src/common/socket.c
+++ b/src/common/socket.c
@@ -75,19 +75,17 @@
/**
* Socket Interface Source
**/
-struct socket_interface sockt_s;
+static struct socket_interface sockt_s;
struct socket_interface *sockt;
-struct socket_data **session;
-
-const char *SOCKET_CONF_FILENAME = "conf/common/socket.conf";
+static const char *SOCKET_CONF_FILENAME = "conf/common/socket.conf";
#ifdef SEND_SHORTLIST
// Add a fd to the shortlist so that it'll be recognized as a fd that needs
// sending done on it.
-void send_shortlist_add_fd(int fd);
+static void send_shortlist_add_fd(int fd);
// Do pending network sends (and eof handling) from the shortlist.
-void send_shortlist_do_sends(void);
+static void send_shortlist_do_sends(void);
#endif // SEND_SHORTLIST
/////////////////////////////////////////////////////////////////////
@@ -123,7 +121,7 @@ static int sock_arr_len = 0;
///
/// @param s Socket
/// @return Fd or -1
-int sock2fd(SOCKET s)
+static int sock2fd(SOCKET s)
{
int fd;
@@ -144,7 +142,7 @@ int sock2fd(SOCKET s)
///
/// @param s Socket
/// @return New fd or -1
-int sock2newfd(SOCKET s)
+static int sock2newfd(SOCKET s)
{
int fd;
@@ -164,7 +162,7 @@ int sock2newfd(SOCKET s)
return fd;
}
-int sAccept(int fd, struct sockaddr* addr, int* addrlen)
+static int sAccept(int fd, struct sockaddr *addr, int *addrlen)
{
SOCKET s;
@@ -175,14 +173,14 @@ int sAccept(int fd, struct sockaddr* addr, int* addrlen)
return sock2newfd(s);
}
-int sClose(int fd)
+static int sClose(int fd)
{
int ret = closesocket(fd2sock(fd));
fd2sock(fd) = INVALID_SOCKET;
return ret;
}
-int sSocket(int af, int type, int protocol)
+static int sSocket(int af, int type, int protocol)
{
SOCKET s;
@@ -193,7 +191,7 @@ int sSocket(int af, int type, int protocol)
return sock2newfd(s);
}
-char* sErr(int code)
+static char *sErr(int code)
{
static char sbuf[512];
// strerror does not handle socket codes
@@ -259,7 +257,7 @@ char* sErr(int code)
#ifndef SOCKET_EPOLL
// Select based Event Dispatcher:
-fd_set readfds;
+static fd_set readfds;
#else // SOCKET_EPOLL
// Epoll based Event Dispatcher:
@@ -296,19 +294,19 @@ static time_t socket_data_last_tick = 0;
#define WFIFO_MAX (1*1024*1024)
#ifdef SEND_SHORTLIST
-int send_shortlist_array[FD_SETSIZE];// we only support FD_SETSIZE sockets, limit the array to that
-int send_shortlist_count = 0;// how many fd's are in the shortlist
-uint32 send_shortlist_set[(FD_SETSIZE+31)/32];// to know if specific fd's are already in the shortlist
+static int send_shortlist_array[FD_SETSIZE];// we only support FD_SETSIZE sockets, limit the array to that
+static int send_shortlist_count = 0;// how many fd's are in the shortlist
+static uint32 send_shortlist_set[(FD_SETSIZE+31)/32];// to know if specific fd's are already in the shortlist
#endif // SEND_SHORTLIST
static int create_session(int fd, RecvFunc func_recv, SendFunc func_send, ParseFunc func_parse);
#ifndef MINICORE
- int ip_rules = 1;
+ static int ip_rules = 1;
static int connect_check(uint32 ip);
#endif // MINICORE
-const char* error_msg(void)
+static const char *error_msg(void)
{
static char buf[512];
int code = sErrno;
@@ -319,13 +317,24 @@ const char* error_msg(void)
/*======================================
* CORE : Default processing functions
*--------------------------------------*/
-int null_recv(int fd) { return 0; }
-int null_send(int fd) { return 0; }
-int null_parse(int fd) { return 0; }
+static int null_recv(int fd)
+{
+ return 0;
+}
+
+static int null_send(int fd)
+{
+ return 0;
+}
+
+static int null_parse(int fd)
+{
+ return 0;
+}
-ParseFunc default_func_parse = null_parse;
+static ParseFunc default_func_parse = null_parse;
-void set_defaultparse(ParseFunc defaultparse)
+static void set_defaultparse(ParseFunc defaultparse)
{
default_func_parse = defaultparse;
}
@@ -333,7 +342,7 @@ void set_defaultparse(ParseFunc defaultparse)
/*======================================
* CORE : Socket options
*--------------------------------------*/
-void set_nonblocking(int fd, unsigned long yes)
+static void set_nonblocking(int fd, unsigned long yes)
{
// FIONBIO Use with a nonzero argp parameter to enable the nonblocking mode of socket s.
// The argp parameter is zero if nonblocking is to be disabled.
@@ -347,7 +356,7 @@ void set_nonblocking(int fd, unsigned long yes)
* @param fd The socket descriptor
* @param opt Optional, additional options to set (Can be NULL).
*/
-void setsocketopts(int fd, struct hSockOpt *opt)
+static void setsocketopts(int fd, struct hSockOpt *opt)
{
#if defined(WIN32)
BOOL yes = TRUE;
@@ -409,7 +418,7 @@ void setsocketopts(int fd, struct hSockOpt *opt)
/*======================================
* CORE : Socket Sub Function
*--------------------------------------*/
-void set_eof(int fd)
+static void set_eof(int fd)
{
if (sockt->session_is_active(fd)) {
#ifdef SEND_SHORTLIST
@@ -420,7 +429,7 @@ void set_eof(int fd)
}
}
-int recv_to_fifo(int fd)
+static int recv_to_fifo(int fd)
{
ssize_t len;
@@ -457,7 +466,7 @@ int recv_to_fifo(int fd)
return 0;
}
-int send_from_fifo(int fd)
+static int send_from_fifo(int fd)
{
ssize_t len;
@@ -504,13 +513,13 @@ int send_from_fifo(int fd)
}
/// Best effort - there's no warranty that the data will be sent.
-void flush_fifo(int fd)
+static void flush_fifo(int fd)
{
if(sockt->session[fd] != NULL)
sockt->session[fd]->func_send(fd);
}
-void flush_fifos(void)
+static void flush_fifos(void)
{
int i;
for(i = 1; i < sockt->fd_max; i++)
@@ -520,7 +529,7 @@ void flush_fifos(void)
/*======================================
* CORE : Connection functions
*--------------------------------------*/
-int connect_client(int listen_fd)
+static int connect_client(int listen_fd)
{
int fd;
struct sockaddr_in client_address;
@@ -579,7 +588,7 @@ int connect_client(int listen_fd)
return fd;
}
-int make_listen_bind(uint32 ip, uint16 port)
+static int make_listen_bind(uint32 ip, uint16 port)
{
struct sockaddr_in server_address = { 0 };
int fd;
@@ -648,7 +657,7 @@ int make_listen_bind(uint32 ip, uint16 port)
return fd;
}
-int make_connection(uint32 ip, uint16 port, struct hSockOpt *opt)
+static int make_connection(uint32 ip, uint16 port, struct hSockOpt *opt)
{
struct sockaddr_in remote_address = { 0 };
int fd;
@@ -749,7 +758,7 @@ static void delete_session(int fd)
}
}
-int realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_size)
+static int realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_size)
{
if (!sockt->session_is_valid(fd))
return 0;
@@ -766,7 +775,7 @@ int realloc_fifo(int fd, unsigned int rfifo_size, unsigned int wfifo_size)
return 0;
}
-int realloc_writefifo(int fd, size_t addition)
+static int realloc_writefifo(int fd, size_t addition)
{
size_t newsize;
@@ -794,7 +803,7 @@ int realloc_writefifo(int fd, size_t addition)
}
/// advance the RFIFO cursor (marking 'len' bytes as processed)
-int rfifoskip(int fd, size_t len)
+static int rfifoskip(int fd, size_t len)
{
struct socket_data *s;
@@ -816,7 +825,7 @@ int rfifoskip(int fd, size_t len)
}
/// advance the WFIFO cursor (marking 'len' bytes for sending)
-int wfifoset(int fd, size_t len)
+static int wfifoset(int fd, size_t len)
{
size_t newreserve;
struct socket_data* s;
@@ -884,7 +893,7 @@ int wfifoset(int fd, size_t len)
return 0;
}
-int do_sockets(int next)
+static int do_sockets(int next)
{
#ifndef SOCKET_EPOLL
fd_set rfd;
@@ -1088,7 +1097,7 @@ static int access_debug = 0;
static int ddos_count = 10;
static int ddos_interval = 3*1000;
static int ddos_autoreset = 10*60*1000;
-struct DBMap *connect_history = NULL;
+static struct DBMap *connect_history = NULL;
static int connect_check_(uint32 ip);
@@ -1232,7 +1241,7 @@ static int connect_check_clear(int tid, int64 tick, int id, intptr_t data)
/// Parses the ip address and mask and puts it into acc.
/// Returns 1 is successful, 0 otherwise.
-int access_ipmask(const char *str, struct access_control *acc)
+static int access_ipmask(const char *str, struct access_control *acc)
{
uint32 ip;
uint32 mask;
@@ -1288,7 +1297,7 @@ int access_ipmask(const char *str, struct access_control *acc)
*
* @retval false in case of failure
*/
-bool access_list_add(struct config_setting_t *setting, const char *list_name, struct access_control_list *access_list)
+static bool access_list_add(struct config_setting_t *setting, const char *list_name, struct access_control_list *access_list)
{
const char *temp = NULL;
int i, setting_length;
@@ -1321,6 +1330,7 @@ bool access_list_add(struct config_setting_t *setting, const char *list_name, st
#endif // MINICORE
//////////////////////////////
+#ifndef MINICORE
/**
* Reads 'socket_configuration/ip_rules' and initializes required variables.
*
@@ -1330,9 +1340,8 @@ bool access_list_add(struct config_setting_t *setting, const char *list_name, st
*
* @retval false in case of error.
*/
-bool socket_config_read_iprules(const char *filename, struct config_t *config, bool imported)
+static bool socket_config_read_iprules(const char *filename, struct config_t *config, bool imported)
{
-#ifndef MINICORE
struct config_setting_t *setting = NULL;
const char *temp = NULL;
@@ -1375,11 +1384,12 @@ bool socket_config_read_iprules(const char *filename, struct config_t *config, b
} else {
access_list_add(setting, "deny_list", &access_deny);
}
-#endif // ! MINICORE
return true;
}
+#endif // ! MINICORE
+#ifndef MINICORE
/**
* Reads 'socket_configuration/ddos' and initializes required variables.
*
@@ -1389,9 +1399,8 @@ bool socket_config_read_iprules(const char *filename, struct config_t *config, b
*
* @retval false in case of error.
*/
-bool socket_config_read_ddos(const char *filename, struct config_t *config, bool imported)
+static bool socket_config_read_ddos(const char *filename, struct config_t *config, bool imported)
{
-#ifndef MINICORE
struct config_setting_t *setting = NULL;
nullpo_retr(false, filename);
@@ -1408,9 +1417,9 @@ bool socket_config_read_ddos(const char *filename, struct config_t *config, bool
libconfig->setting_lookup_int(setting, "count", &ddos_count);
libconfig->setting_lookup_int(setting, "autoreset", &ddos_autoreset);
-#endif // ! MINICORE
return true;
}
+#endif // ! MINICORE
/**
* Reads 'socket_configuration' and initializes required variables.
@@ -1420,7 +1429,7 @@ bool socket_config_read_ddos(const char *filename, struct config_t *config, bool
*
* @retval false in case of error.
*/
-bool socket_config_read(const char *filename, bool imported)
+static bool socket_config_read(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -1484,7 +1493,7 @@ bool socket_config_read(const char *filename, bool imported)
return retval;
}
-void socket_final(void)
+static void socket_final(void)
{
int i;
#ifndef MINICORE
@@ -1523,7 +1532,7 @@ void socket_final(void)
}
/// Closes a socket.
-void socket_close(int fd)
+static void socket_close(int fd)
{
if( fd <= 0 ||fd >= FD_SETSIZE )
return;// invalid
@@ -1547,7 +1556,7 @@ void socket_close(int fd)
/// Retrieve local ips in host byte order.
/// Uses loopback is no address is found.
-int socket_getips(uint32* ips, int max)
+static int socket_getips(uint32 *ips, int max)
{
int num = 0;
@@ -1628,7 +1637,7 @@ int socket_getips(uint32* ips, int max)
return num;
}
-void socket_init(void)
+static void socket_init(void)
{
uint64 rlim_cur = FD_SETSIZE;
@@ -1730,18 +1739,18 @@ void socket_init(void)
ShowInfo("Server supports up to '"CL_WHITE"%"PRIu64""CL_RESET"' concurrent connections.\n", rlim_cur);
}
-bool session_is_valid(int fd)
+static bool session_is_valid(int fd)
{
return ( fd > 0 && fd < FD_SETSIZE && sockt->session[fd] != NULL );
}
-bool session_is_active(int fd)
+static bool session_is_active(int fd)
{
return ( sockt->session_is_valid(fd) && !sockt->session[fd]->flag.eof );
}
// Resolves hostname into a numeric ip.
-uint32 host2ip(const char *hostname)
+static uint32 host2ip(const char *hostname)
{
struct hostent* h;
nullpo_ret(hostname);
@@ -1757,7 +1766,7 @@ uint32 host2ip(const char *hostname)
*
* @return A pointer to the output string.
*/
-const char *ip2str(uint32 ip, char *ip_str)
+static const char *ip2str(uint32 ip, char *ip_str)
{
struct in_addr addr;
addr.s_addr = htonl(ip);
@@ -1765,20 +1774,20 @@ const char *ip2str(uint32 ip, char *ip_str)
}
// Converts a dot-formatted ip string into a numeric ip.
-uint32 str2ip(const char* ip_str)
+static uint32 str2ip(const char *ip_str)
{
return ntohl(inet_addr(ip_str));
}
// Reorders bytes from network to little endian (Windows).
// Necessary for sending port numbers to the RO client until Gravity notices that they forgot ntohs() calls.
-uint16 ntows(uint16 netshort)
+static uint16 ntows(uint16 netshort)
{
return ((netshort & 0xFF) << 8) | ((netshort & 0xFF00) >> 8);
}
/* [Ind/Hercules] - socket_datasync */
-void socket_datasync(int fd, bool send)
+static void socket_datasync(int fd, bool send)
{
struct {
unsigned int length;/* short is not enough for some */
@@ -1845,7 +1854,7 @@ void socket_datasync(int fd, bool send)
#ifdef SEND_SHORTLIST
// Add a fd to the shortlist so that it'll be recognized as a fd that needs
// sending or eof handling.
-void send_shortlist_add_fd(int fd)
+static void send_shortlist_add_fd(int fd)
{
int i;
int bit;
@@ -1872,7 +1881,7 @@ void send_shortlist_add_fd(int fd)
}
// Do pending network sends and eof handling from the shortlist.
-void send_shortlist_do_sends(void)
+static void send_shortlist_do_sends(void)
{
int i;
@@ -1928,7 +1937,7 @@ void send_shortlist_do_sends(void)
* @retval 0 if it is a WAN IP.
* @return the appropriate LAN server address to send, if it is a LAN IP.
*/
-uint32 socket_lan_subnet_check(uint32 ip, struct s_subnet *info)
+static uint32 socket_lan_subnet_check(uint32 ip, struct s_subnet *info)
{
int i;
ARR_FIND(0, VECTOR_LENGTH(sockt->lan_subnets), i, SUBNET_MATCH(ip, VECTOR_INDEX(sockt->lan_subnets, i).ip, VECTOR_INDEX(sockt->lan_subnets, i).mask));
@@ -1952,7 +1961,7 @@ uint32 socket_lan_subnet_check(uint32 ip, struct s_subnet *info)
* @retval true if we allow server connections from the given IP.
* @retval false otherwise.
*/
-bool socket_allowed_ip_check(uint32 ip)
+static bool socket_allowed_ip_check(uint32 ip)
{
int i;
ARR_FIND(0, VECTOR_LENGTH(sockt->allowed_ips), i, SUBNET_MATCH(ip, VECTOR_INDEX(sockt->allowed_ips, i).ip, VECTOR_INDEX(sockt->allowed_ips, i).mask));
@@ -1968,7 +1977,7 @@ bool socket_allowed_ip_check(uint32 ip)
* @retval true if we trust the given IP.
* @retval false otherwise.
*/
-bool socket_trusted_ip_check(uint32 ip)
+static bool socket_trusted_ip_check(uint32 ip)
{
int i;
ARR_FIND(0, VECTOR_LENGTH(sockt->trusted_ips), i, SUBNET_MATCH(ip, VECTOR_INDEX(sockt->trusted_ips, i).ip, VECTOR_INDEX(sockt->trusted_ips, i).mask));
@@ -1988,7 +1997,7 @@ bool socket_trusted_ip_check(uint32 ip)
* @param[in] groupname Current group name, for output/logging reasons.
* @return The amount of entries read, zero in case of errors.
*/
-int socket_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname)
+static int socket_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vector *list, const char *filename, const char *groupname)
{
int i, len;
char ipbuf[64], maskbuf[64];
@@ -2022,7 +2031,7 @@ int socket_net_config_read_sub(struct config_setting_t *t, struct s_subnet_vecto
*
* @param filename The filename to read from.
*/
-void socket_net_config_read(const char *filename)
+static void socket_net_config_read(const char *filename)
{
struct config_t network_config;
int i;
diff --git a/src/common/sql.c b/src/common/sql.c
index 6e0e9ba33..0b5b7fa07 100644
--- a/src/common/sql.c
+++ b/src/common/sql.c
@@ -37,12 +37,12 @@
#include <stdio.h>
#include <stdlib.h> // strtoul
-void hercules_mysql_error_handler(unsigned int ecode);
+static void hercules_mysql_error_handler(unsigned int ecode);
-int mysql_reconnect_type = 2;
-int mysql_reconnect_count = 1;
+static int mysql_reconnect_type = 2;
+static int mysql_reconnect_count = 1;
-struct sql_interface sql_s;
+static struct sql_interface sql_s;
struct sql_interface *SQL;
/// Sql handle
@@ -81,7 +81,7 @@ struct SqlStmt {
///////////////////////////////////////////////////////////////////////////////
/// Allocates and initializes a new Sql handle.
-struct Sql *Sql_Malloc(void)
+static struct Sql *Sql_Malloc(void)
{
struct Sql *self;
@@ -101,7 +101,7 @@ struct Sql *Sql_Malloc(void)
static int Sql_P_Keepalive(struct Sql *self);
/// Establishes a connection.
-int Sql_Connect(struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db)
+static int Sql_Connect(struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db)
{
if( self == NULL )
return SQL_ERROR;
@@ -124,7 +124,7 @@ int Sql_Connect(struct Sql *self, const char *user, const char *passwd, const ch
}
/// Retrieves the timeout of the connection.
-int Sql_GetTimeout(struct Sql *self, uint32 *out_timeout)
+static int Sql_GetTimeout(struct Sql *self, uint32 *out_timeout)
{
if( self && out_timeout && SQL_SUCCESS == SQL->Query(self, "SHOW VARIABLES LIKE 'wait_timeout'") ) {
char* data;
@@ -141,7 +141,7 @@ int Sql_GetTimeout(struct Sql *self, uint32 *out_timeout)
}
/// Retrieves the name of the columns of a table into out_buf, with the separator after each name.
-int Sql_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep)
+static int Sql_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep)
{
char* data;
size_t len;
@@ -170,7 +170,7 @@ int Sql_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_
}
/// Changes the encoding of the connection.
-int Sql_SetEncoding(struct Sql *self, const char *encoding)
+static int Sql_SetEncoding(struct Sql *self, const char *encoding)
{
if( self && mysql_set_character_set(&self->handle, encoding) == 0 )
return SQL_SUCCESS;
@@ -178,7 +178,7 @@ int Sql_SetEncoding(struct Sql *self, const char *encoding)
}
/// Pings the connection.
-int Sql_Ping(struct Sql *self)
+static int Sql_Ping(struct Sql *self)
{
if( self && mysql_ping(&self->handle) == 0 )
return SQL_SUCCESS;
@@ -220,7 +220,7 @@ static int Sql_P_Keepalive(struct Sql *self)
}
/// Escapes a string.
-size_t Sql_EscapeString(struct Sql *self, char *out_to, const char *from)
+static size_t Sql_EscapeString(struct Sql *self, char *out_to, const char *from)
{
if (self != NULL)
return (size_t)mysql_real_escape_string(&self->handle, out_to, from, (unsigned long)strlen(from));
@@ -229,7 +229,7 @@ size_t Sql_EscapeString(struct Sql *self, char *out_to, const char *from)
}
/// Escapes a string.
-size_t Sql_EscapeStringLen(struct Sql *self, char *out_to, const char *from, size_t from_len)
+static size_t Sql_EscapeStringLen(struct Sql *self, char *out_to, const char *from, size_t from_len)
{
if (self != NULL)
return (size_t)mysql_real_escape_string(&self->handle, out_to, from, (unsigned long)from_len);
@@ -238,8 +238,8 @@ size_t Sql_EscapeStringLen(struct Sql *self, char *out_to, const char *from, siz
}
/// Executes a query.
-int Sql_Query(struct Sql *self, const char *query, ...) __attribute__((format(printf, 2, 3)));
-int Sql_Query(struct Sql *self, const char *query, ...)
+static int Sql_Query(struct Sql *self, const char *query, ...) __attribute__((format(printf, 2, 3)));
+static int Sql_Query(struct Sql *self, const char *query, ...)
{
int res;
va_list args;
@@ -252,7 +252,7 @@ int Sql_Query(struct Sql *self, const char *query, ...)
}
/// Executes a query.
-int Sql_QueryV(struct Sql *self, const char *query, va_list args)
+static int Sql_QueryV(struct Sql *self, const char *query, va_list args)
{
if( self == NULL )
return SQL_ERROR;
@@ -277,7 +277,7 @@ int Sql_QueryV(struct Sql *self, const char *query, va_list args)
}
/// Executes a query.
-int Sql_QueryStr(struct Sql *self, const char *query)
+static int Sql_QueryStr(struct Sql *self, const char *query)
{
if( self == NULL )
return SQL_ERROR;
@@ -302,7 +302,7 @@ int Sql_QueryStr(struct Sql *self, const char *query)
}
/// Returns the number of the AUTO_INCREMENT column of the last INSERT/UPDATE query.
-uint64 Sql_LastInsertId(struct Sql *self)
+static uint64 Sql_LastInsertId(struct Sql *self)
{
if (self != NULL)
return (uint64)mysql_insert_id(&self->handle);
@@ -311,7 +311,7 @@ uint64 Sql_LastInsertId(struct Sql *self)
}
/// Returns the number of columns in each row of the result.
-uint32 Sql_NumColumns(struct Sql *self)
+static uint32 Sql_NumColumns(struct Sql *self)
{
if (self != NULL && self->result != NULL)
return (uint32)mysql_num_fields(self->result);
@@ -319,7 +319,7 @@ uint32 Sql_NumColumns(struct Sql *self)
}
/// Returns the number of rows in the result.
-uint64 Sql_NumRows(struct Sql *self)
+static uint64 Sql_NumRows(struct Sql *self)
{
if (self != NULL && self->result != NULL)
return (uint64)mysql_num_rows(self->result);
@@ -327,7 +327,7 @@ uint64 Sql_NumRows(struct Sql *self)
}
/// Fetches the next row.
-int Sql_NextRow(struct Sql *self)
+static int Sql_NextRow(struct Sql *self)
{
if (self != NULL && self->result != NULL) {
self->row = mysql_fetch_row(self->result);
@@ -343,7 +343,7 @@ int Sql_NextRow(struct Sql *self)
}
/// Gets the data of a column.
-int Sql_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len)
+static int Sql_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len)
{
if( self && self->row ) {
if( col < SQL->NumColumns(self) ) {
@@ -359,7 +359,7 @@ int Sql_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len)
}
/// Frees the result of the query.
-void Sql_FreeResult(struct Sql *self)
+static void Sql_FreeResult(struct Sql *self)
{
if( self && self->result ) {
mysql_free_result(self->result);
@@ -370,7 +370,7 @@ void Sql_FreeResult(struct Sql *self)
}
/// Shows debug information (last query).
-void Sql_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned long debug_line)
+static void Sql_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned long debug_line)
{
if( self == NULL )
ShowDebug("at %s:%lu - self is NULL\n", debug_file, debug_line);
@@ -381,7 +381,7 @@ void Sql_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned lon
}
/// Frees a Sql handle returned by Sql_Malloc.
-void Sql_Free(struct Sql *self)
+static void Sql_Free(struct Sql *self)
{
if( self )
{
@@ -417,7 +417,7 @@ static enum enum_field_types Sql_P_SizeToMysqlIntType(int sz)
/// Binds a parameter/result.
///
/// @private
-static int Sql_P_BindSqlDataType(MYSQL_BIND* bind, enum SqlDataType buffer_type, void* buffer, size_t buffer_len, unsigned long* out_length, int8* out_is_null)
+static int Sql_P_BindSqlDataType(MYSQL_BIND *bind, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, unsigned long *out_length, int8 *out_is_null)
{
nullpo_retr(SQL_ERROR, bind);
memset(bind, 0, sizeof(MYSQL_BIND));
@@ -531,7 +531,7 @@ static int Sql_P_BindSqlDataType(MYSQL_BIND* bind, enum SqlDataType buffer_type,
/// Prints debug information about a field (type and length).
///
/// @private
-static void Sql_P_ShowDebugMysqlFieldInfo(const char* prefix, enum enum_field_types type, int is_unsigned, unsigned long length, const char* length_postfix)
+static void Sql_P_ShowDebugMysqlFieldInfo(const char *prefix, enum enum_field_types type, int is_unsigned, unsigned long length, const char *length_postfix)
{
const char *sign = (is_unsigned ? "UNSIGNED " : "");
const char *type_string = NULL;
@@ -588,7 +588,7 @@ static void SqlStmt_P_ShowDebugTruncatedColumn(struct SqlStmt *self, size_t i)
}
/// Allocates and initializes a new SqlStmt handle.
-struct SqlStmt *SqlStmt_Malloc(struct Sql *sql)
+static struct SqlStmt *SqlStmt_Malloc(struct Sql *sql)
{
struct SqlStmt *self;
MYSQL_STMT* stmt;
@@ -616,8 +616,8 @@ struct SqlStmt *SqlStmt_Malloc(struct Sql *sql)
}
/// Prepares the statement.
-int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...) __attribute__((format(printf, 2, 3)));
-int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...)
+static int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...) __attribute__((format(printf, 2, 3)));
+static int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...)
{
int res;
va_list args;
@@ -630,7 +630,7 @@ int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...)
}
/// Prepares the statement.
-int SqlStmt_PrepareV(struct SqlStmt *self, const char *query, va_list args)
+static int SqlStmt_PrepareV(struct SqlStmt *self, const char *query, va_list args)
{
if( self == NULL )
return SQL_ERROR;
@@ -650,7 +650,7 @@ int SqlStmt_PrepareV(struct SqlStmt *self, const char *query, va_list args)
}
/// Prepares the statement.
-int SqlStmt_PrepareStr(struct SqlStmt *self, const char *query)
+static int SqlStmt_PrepareStr(struct SqlStmt *self, const char *query)
{
if( self == NULL )
return SQL_ERROR;
@@ -670,7 +670,7 @@ int SqlStmt_PrepareStr(struct SqlStmt *self, const char *query)
}
/// Returns the number of parameters in the prepared statement.
-size_t SqlStmt_NumParams(struct SqlStmt *self)
+static size_t SqlStmt_NumParams(struct SqlStmt *self)
{
if( self )
return (size_t)mysql_stmt_param_count(self->stmt);
@@ -679,7 +679,7 @@ size_t SqlStmt_NumParams(struct SqlStmt *self)
}
/// Binds a parameter to a buffer.
-int SqlStmt_BindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len)
+static int SqlStmt_BindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len)
{
if( self == NULL )
return SQL_ERROR;
@@ -716,7 +716,7 @@ PRAGMA_GCC46(GCC diagnostic pop)
}
/// Executes the prepared statement.
-int SqlStmt_Execute(struct SqlStmt *self)
+static int SqlStmt_Execute(struct SqlStmt *self)
{
if( self == NULL )
return SQL_ERROR;
@@ -741,7 +741,7 @@ int SqlStmt_Execute(struct SqlStmt *self)
}
/// Returns the number of the AUTO_INCREMENT column of the last INSERT/UPDATE statement.
-uint64 SqlStmt_LastInsertId(struct SqlStmt *self)
+static uint64 SqlStmt_LastInsertId(struct SqlStmt *self)
{
if( self )
return (uint64)mysql_stmt_insert_id(self->stmt);
@@ -750,7 +750,7 @@ uint64 SqlStmt_LastInsertId(struct SqlStmt *self)
}
/// Returns the number of columns in each row of the result.
-size_t SqlStmt_NumColumns(struct SqlStmt *self)
+static size_t SqlStmt_NumColumns(struct SqlStmt *self)
{
if( self )
return (size_t)mysql_stmt_field_count(self->stmt);
@@ -759,7 +759,7 @@ size_t SqlStmt_NumColumns(struct SqlStmt *self)
}
/// Binds the result of a column to a buffer.
-int SqlStmt_BindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null)
+static int SqlStmt_BindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null)
{
if (self == NULL)
return SQL_ERROR;
@@ -801,7 +801,7 @@ int SqlStmt_BindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer
}
/// Returns the number of rows in the result.
-uint64 SqlStmt_NumRows(struct SqlStmt *self)
+static uint64 SqlStmt_NumRows(struct SqlStmt *self)
{
if (self != NULL)
return (uint64)mysql_stmt_num_rows(self->stmt);
@@ -810,7 +810,7 @@ uint64 SqlStmt_NumRows(struct SqlStmt *self)
}
/// Fetches the next row.
-int SqlStmt_NextRow(struct SqlStmt *self)
+static int SqlStmt_NextRow(struct SqlStmt *self)
{
int err;
size_t i;
@@ -878,14 +878,14 @@ int SqlStmt_NextRow(struct SqlStmt *self)
}
/// Frees the result of the statement execution.
-void SqlStmt_FreeResult(struct SqlStmt *self)
+static void SqlStmt_FreeResult(struct SqlStmt *self)
{
if( self )
mysql_stmt_free_result(self->stmt);
}
/// Shows debug information (with statement).
-void SqlStmt_ShowDebug_(struct SqlStmt *self, const char *debug_file, const unsigned long debug_line)
+static void SqlStmt_ShowDebug_(struct SqlStmt *self, const char *debug_file, const unsigned long debug_line)
{
if( self == NULL )
ShowDebug("at %s:%lu - self is NULL\n", debug_file, debug_line);
@@ -896,7 +896,7 @@ void SqlStmt_ShowDebug_(struct SqlStmt *self, const char *debug_file, const unsi
}
/// Frees a SqlStmt returned by SqlStmt_Malloc.
-void SqlStmt_Free(struct SqlStmt *self)
+static void SqlStmt_Free(struct SqlStmt *self)
{
if( self )
{
@@ -915,7 +915,7 @@ void SqlStmt_Free(struct SqlStmt *self)
}
/* receives mysql error codes during runtime (not on first-time-connects) */
-void hercules_mysql_error_handler(unsigned int ecode)
+static void hercules_mysql_error_handler(unsigned int ecode)
{
switch( ecode ) {
case 2003:/* Can't connect to MySQL (this error only happens here when failing to reconnect) */
@@ -938,7 +938,7 @@ void hercules_mysql_error_handler(unsigned int ecode)
*
* @retval false in case of error.
*/
-bool Sql_inter_server_read(const char *filename, bool imported)
+static bool Sql_inter_server_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
diff --git a/src/common/strlib.c b/src/common/strlib.c
index f0357e4a0..ddb1eb78a 100644
--- a/src/common/strlib.c
+++ b/src/common/strlib.c
@@ -32,16 +32,17 @@
#define J_MAX_MALLOC_SIZE 65535
-struct strlib_interface strlib_s;
-struct stringbuf_interface stringbuf_s;
-struct sv_interface sv_s;
+static struct strlib_interface strlib_s;
+static struct stringbuf_interface stringbuf_s;
+static struct sv_interface sv_s;
struct strlib_interface *strlib;
struct stringbuf_interface *StrBuf;
struct sv_interface *sv;
// escapes a string in-place (' -> \' , \ -> \\ , % -> _)
-char* jstrescape (char* pt) {
+static char *jstrescape(char *pt)
+{
//copy from here
char *ptr;
int i = 0, j = 0;
@@ -73,7 +74,7 @@ char* jstrescape (char* pt) {
}
// escapes a string into a provided buffer
-char* jstrescapecpy (char* pt, const char* spt)
+static char *jstrescapecpy(char *pt, const char *spt)
{
//copy from here
//WARNING: Target string pt should be able to hold strlen(spt)*2, as each time
@@ -108,7 +109,7 @@ char* jstrescapecpy (char* pt, const char* spt)
}
// escapes exactly 'size' bytes of a string into a provided buffer
-int jmemescapecpy (char* pt, const char* spt, int size)
+static int jmemescapecpy(char *pt, const char *spt, int size)
{
//copy from here
int i =0, j=0;
@@ -135,7 +136,7 @@ int jmemescapecpy (char* pt, const char* spt, int size)
}
// Function to suppress control characters in a string.
-int strlib_remove_control_chars(char *str)
+static int strlib_remove_control_chars(char *str)
{
int i;
int change = 0;
@@ -152,7 +153,7 @@ int strlib_remove_control_chars(char *str)
// Removes characters identified by ISSPACE from the start and end of the string
// NOTE: make sure the string is not const!!
-char *strlib_trim(char *str)
+static char *strlib_trim(char *str)
{
size_t start;
size_t end;
@@ -180,7 +181,7 @@ char *strlib_trim(char *str)
// Converts one or more consecutive occurrences of the delimiters into a single space
// and removes such occurrences from the beginning and end of string
// NOTE: make sure the string is not const!!
-char *strlib_normalize_name(char *str, const char *delims)
+static char *strlib_normalize_name(char *str, const char *delims)
{
char* in = str;
char* out = str;
@@ -218,7 +219,7 @@ char *strlib_normalize_name(char *str, const char *delims)
//stristr: Case insensitive version of strstr, code taken from
//http://www.daniweb.com/code/snippet313.html, Dave Sinkula
//
-const char *strlib_stristr(const char *haystack, const char *needle)
+static const char *strlib_stristr(const char *haystack, const char *needle)
{
if ( !*needle )
{
@@ -246,7 +247,7 @@ const char *strlib_stristr(const char *haystack, const char *needle)
return 0;
}
-char* strlib_strtok_r(char *s1, const char *s2, char **lasts)
+static char* strlib_strtok_r(char *s1, const char *s2, char **lasts)
{
#ifdef __WIN32
char *ret;
@@ -269,7 +270,7 @@ char* strlib_strtok_r(char *s1, const char *s2, char **lasts)
#endif
}
-size_t strlib_strnlen(const char *string, size_t maxlen)
+static size_t strlib_strnlen(const char *string, size_t maxlen)
{
// TODO: Verify whether this implementation is still necessary for NetBSD 5.x
// and possibly some Solaris versions.
@@ -287,7 +288,7 @@ size_t strlib_strnlen(const char *string, size_t maxlen)
//----------------------------------------------------
// E-mail check: return 0 (not correct) or 1 (valid).
//----------------------------------------------------
-int strlib_e_mail_check(char *email)
+static int strlib_e_mail_check(char *email)
{
char ch;
char* last_arobas;
@@ -324,7 +325,8 @@ int strlib_e_mail_check(char *email)
// Return numerical value of a switch configuration
// on/off, yes/no, true/false, number
//--------------------------------------------------
-int strlib_config_switch(const char *str) {
+static int strlib_config_switch(const char *str)
+{
size_t len = strlen(str);
if ((len == 2 && strcmpi(str, "on") == 0)
|| (len == 3 && strcmpi(str, "yes") == 0)
@@ -345,7 +347,7 @@ int strlib_config_switch(const char *str) {
/// strncpy that always null-terminates the string
/// @remark this function will read at most `n` - 1 bytes from `src` (from 0 to `n` - 2)
-char *strlib_safestrncpy(char *dst, const char *src, size_t n)
+static char *strlib_safestrncpy(char *dst, const char *src, size_t n)
{
if( n > 0 )
{
@@ -366,7 +368,7 @@ char *strlib_safestrncpy(char *dst, const char *src, size_t n)
}
/// doesn't crash on null pointer
-size_t strlib_safestrnlen(const char *string, size_t maxlen)
+static size_t strlib_safestrnlen(const char *string, size_t maxlen)
{
return ( string != NULL ) ? strnlen(string, maxlen) : 0;
}
@@ -380,8 +382,8 @@ size_t strlib_safestrnlen(const char *string, size_t maxlen)
/// @param fmt Format string
/// @param ... Format arguments
/// @return The size of the string or -1 if the buffer is too small
-int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...) __attribute__((format(printf, 3, 4)));
-int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...)
+static int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...) __attribute__((format(printf, 3, 4)));
+static int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...)
{
va_list ap;
int ret;
@@ -398,7 +400,7 @@ int strlib_safesnprintf(char *buf, size_t sz, const char *fmt, ...)
/// Returns the line of the target position in the string.
/// Lines start at 1.
-int strlib_strline(const char *str, size_t pos)
+static int strlib_strline(const char *str, size_t pos)
{
const char* target;
int line;
@@ -424,7 +426,7 @@ int strlib_strline(const char *str, size_t pos)
/// @param output Output string
/// @param input Binary input buffer
/// @param count Number of bytes to convert
-bool strlib_bin2hex(char *output, const unsigned char *input, size_t count)
+static bool strlib_bin2hex(char *output, const unsigned char *input, size_t count)
{
char toHex[] = "0123456789abcdef";
size_t i;
@@ -444,7 +446,7 @@ bool strlib_bin2hex(char *output, const unsigned char *input, size_t count)
///
/// @param svstate Parse state
/// @return 1 if a field was parsed, 0 if already done, -1 on error.
-int sv_parse_next(struct s_svstate* svstate)
+static int sv_parse_next(struct s_svstate *svstate)
{
enum {
START_OF_FIELD,
@@ -615,7 +617,8 @@ int sv_parse_next(struct s_svstate* svstate)
/// @param npos Size of the pos array
/// @param opt Options that determine the parsing behavior
/// @return Number of fields found in the string or -1 if an error occurred
-int sv_parse(const char* str, int len, int startoff, char delim, int* out_pos, int npos, enum e_svopt opt) {
+static int sv_parse(const char *str, int len, int startoff, char delim, int *out_pos, int npos, enum e_svopt opt)
+{
struct s_svstate svstate;
int count;
@@ -665,7 +668,8 @@ int sv_parse(const char* str, int len, int startoff, char delim, int* out_pos, i
/// @param nfields Size of the field array
/// @param opt Options that determine the parsing behavior
/// @return Number of fields found in the string or -1 if an error occurred
-int sv_split(char* str, int len, int startoff, char delim, char** out_fields, int nfields, enum e_svopt opt) {
+static int sv_split(char *str, int len, int startoff, char delim, char **out_fields, int nfields, enum e_svopt opt)
+{
int pos[1024];
int i;
int done;
@@ -731,7 +735,8 @@ int sv_split(char* str, int len, int startoff, char delim, char** out_fields, in
/// @param len Length of the source string
/// @param escapes Extra characters to be escaped
/// @return Length of the escaped string
-size_t sv_escape_c(char* out_dest, const char* src, size_t len, const char* escapes) {
+static size_t sv_escape_c(char *out_dest, const char *src, size_t len, const char *escapes)
+{
size_t i;
size_t j;
@@ -799,7 +804,8 @@ size_t sv_escape_c(char* out_dest, const char* src, size_t len, const char* esca
/// @param src Source string
/// @param len Length of the source string
/// @return Length of the escaped string
-size_t sv_unescape_c(char* out_dest, const char* src, size_t len) {
+static size_t sv_unescape_c(char *out_dest, const char *src, size_t len)
+{
static unsigned char low2hex[256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0x0?
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,// 0x1?
@@ -880,7 +886,8 @@ size_t sv_unescape_c(char* out_dest, const char* src, size_t len) {
}
/// Skips a C escape sequence (starting with '\\').
-const char* skip_escaped_c(const char* p) {
+static const char *skip_escaped_c(const char *p)
+{
if( p && *p == '\\' ) {
++p;
switch( *p ) {
@@ -918,7 +925,8 @@ const char* skip_escaped_c(const char* p) {
/// @param maxcols Maximum number of columns of a valid row
/// @param parseproc User-supplied row processing function
/// @return true on success, false if file could not be opened
-bool sv_readdb(const char* directory, const char* filename, char delim, int mincols, int maxcols, int maxrows, bool (*parseproc)(char* fields[], int columns, int current)) {
+static bool sv_readdb(const char *directory, const char *filename, char delim, int mincols, int maxcols, int maxrows, bool (*parseproc)(char *fields[], int columns, int current))
+{
FILE* fp;
int lines = 0;
int entries = 0;
@@ -990,7 +998,8 @@ bool sv_readdb(const char* directory, const char* filename, char delim, int minc
// @author MouseJstr (original)
/// Allocates a StringBuf
-StringBuf* StringBuf_Malloc(void) {
+static StringBuf *StringBuf_Malloc(void)
+{
StringBuf* self;
CREATE(self, StringBuf, 1);
StrBuf->Init(self);
@@ -998,14 +1007,16 @@ StringBuf* StringBuf_Malloc(void) {
}
/// Initializes a previously allocated StringBuf
-void StringBuf_Init(StringBuf* self) {
+static void StringBuf_Init(StringBuf *self)
+{
self->max_ = 1024;
self->ptr_ = self->buf_ = (char*)aMalloc(self->max_ + 1);
}
/// Appends the result of printf to the StringBuf
-int StringBuf_Printf(StringBuf *self, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
-int StringBuf_Printf(StringBuf *self, const char *fmt, ...) {
+static int StringBuf_Printf(StringBuf *self, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
+static int StringBuf_Printf(StringBuf *self, const char *fmt, ...)
+{
int len;
va_list ap;
@@ -1017,7 +1028,8 @@ int StringBuf_Printf(StringBuf *self, const char *fmt, ...) {
}
/// Appends the result of vprintf to the StringBuf
-int StringBuf_Vprintf(StringBuf* self, const char* fmt, va_list ap) {
+static int StringBuf_Vprintf(StringBuf *self, const char *fmt, va_list ap)
+{
for(;;) {
va_list apcopy;
int n, off;
@@ -1040,7 +1052,8 @@ int StringBuf_Vprintf(StringBuf* self, const char* fmt, va_list ap) {
}
/// Appends the contents of another StringBuf to the StringBuf
-int StringBuf_Append(StringBuf* self, const StringBuf* sbuf) {
+static int StringBuf_Append(StringBuf *self, const StringBuf *sbuf)
+{
size_t available = self->max_ - (self->ptr_ - self->buf_);
size_t needed = sbuf->ptr_ - sbuf->buf_;
@@ -1057,7 +1070,8 @@ int StringBuf_Append(StringBuf* self, const StringBuf* sbuf) {
}
// Appends str to the StringBuf
-int StringBuf_AppendStr(StringBuf* self, const char* str) {
+static int StringBuf_AppendStr(StringBuf *self, const char *str)
+{
size_t available = self->max_ - (self->ptr_ - self->buf_);
size_t needed = strlen(str);
@@ -1075,34 +1089,41 @@ int StringBuf_AppendStr(StringBuf* self, const char* str) {
}
// Returns the length of the data in the Stringbuf
-int StringBuf_Length(StringBuf* self) {
+static int StringBuf_Length(StringBuf *self)
+{
return (int)(self->ptr_ - self->buf_);
}
/// Returns the data in the StringBuf
-char* StringBuf_Value(StringBuf* self) {
+static char *StringBuf_Value(StringBuf *self)
+{
*self->ptr_ = '\0';
return self->buf_;
}
/// Clears the contents of the StringBuf
-void StringBuf_Clear(StringBuf* self) {
+static void StringBuf_Clear(StringBuf *self)
+{
self->ptr_ = self->buf_;
}
/// Destroys the StringBuf
-void StringBuf_Destroy(StringBuf* self) {
+static void StringBuf_Destroy(StringBuf *self)
+{
aFree(self->buf_);
self->ptr_ = self->buf_ = 0;
self->max_ = 0;
}
// Frees a StringBuf returned by StringBuf_Malloc
-void StringBuf_Free(StringBuf* self) {
+static void StringBuf_Free(StringBuf *self)
+{
StrBuf->Destroy(self);
aFree(self);
}
-void strlib_defaults(void) {
+
+void strlib_defaults(void)
+{
/* connect */
strlib = &strlib_s;
StrBuf = &stringbuf_s;
@@ -1116,17 +1137,8 @@ void strlib_defaults(void) {
strlib->normalize_name_ = strlib_normalize_name;
strlib->stristr_ = strlib_stristr;
-#if !(defined(WIN32) && defined(_MSC_VER)) && !defined(HAVE_STRNLEN)
strlib->strnlen_ = strlib_strnlen;
-#else
- strlib->strnlen_ = NULL;
-#endif
-
-#ifdef WIN32
strlib->strtok_r_ = strlib_strtok_r;
-#else
- strlib->strtok_r_ = NULL;
-#endif
strlib->e_mail_check_ = strlib_e_mail_check;
strlib->config_switch_ = strlib_config_switch;
diff --git a/src/common/sysinfo.c b/src/common/sysinfo.c
index 0056aee1e..b8cb2a90a 100644
--- a/src/common/sysinfo.c
+++ b/src/common/sysinfo.c
@@ -59,8 +59,8 @@ struct sysinfo_private {
};
/// sysinfo.c interface source
-struct sysinfo_interface sysinfo_s;
-struct sysinfo_private sysinfo_p;
+static struct sysinfo_interface sysinfo_s;
+static struct sysinfo_private sysinfo_p;
struct sysinfo_interface *sysinfo;
@@ -238,7 +238,7 @@ enum windows_ver_suite {
* @retval true if a revision was correctly detected.
* @retval false if no revision was detected. out is set to NULL in this case.
*/
-bool sysinfo_svn_get_revision(char **out)
+static bool sysinfo_svn_get_revision(char **out)
{
// Only include SVN support if detected it, or we're on MSVC
#if !defined(SYSINFO_VCSTYPE) || SYSINFO_VCSTYPE == VCSTYPE_SVN || SYSINFO_VCSTYPE == VCSTYPE_UNKNOWN
@@ -310,7 +310,7 @@ bool sysinfo_svn_get_revision(char **out)
* @retval true if a revision was correctly detected.
* @retval false if no revision was detected. out is set to NULL in this case.
*/
-bool sysinfo_git_get_revision(char **out)
+static bool sysinfo_git_get_revision(char **out)
{
// Only include Git support if we detected it, or we're on MSVC
#if !defined(SYSINFO_VCSTYPE) || SYSINFO_VCSTYPE == VCSTYPE_GIT || SYSINFO_VCSTYPE == VCSTYPE_UNKNOWN
@@ -359,7 +359,7 @@ typedef BOOL (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD);
*
* Once retrieved, the version string is stored into sysinfo->p->osversion.
*/
-void sysinfo_osversion_retrieve(void)
+static void sysinfo_osversion_retrieve(void)
{
OSVERSIONINFOEX osvi;
StringBuf buf;
@@ -611,7 +611,7 @@ typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
* System info is not stored anywhere after retrieval
* @see http://msdn.microsoft.com/en-us/library/windows/desktop/ms724958(v=vs.85).aspx
**/
-void sysinfo_systeminfo_retrieve(LPSYSTEM_INFO info)
+static void sysinfo_systeminfo_retrieve(LPSYSTEM_INFO info)
{
PGNSI pGNSI;
@@ -629,7 +629,7 @@ void sysinfo_systeminfo_retrieve(LPSYSTEM_INFO info)
* Returns number of bytes in a memory page
* Only needed when compiling with MSVC
**/
-long sysinfo_getpagesize(void)
+static long sysinfo_getpagesize(void)
{
SYSTEM_INFO si;
ZeroMemory(&si, sizeof(SYSTEM_INFO));
@@ -644,7 +644,7 @@ long sysinfo_getpagesize(void)
* Once retrieved, the name is stored into sysinfo->p->cpu and the
* number of cores in sysinfo->p->cpucores.
*/
-void sysinfo_cpu_retrieve(void)
+static void sysinfo_cpu_retrieve(void)
{
StringBuf buf;
SYSTEM_INFO si;
@@ -681,7 +681,7 @@ void sysinfo_cpu_retrieve(void)
*
* Once retrieved, the name is stored into sysinfo->p->arch.
*/
-void sysinfo_arch_retrieve(void)
+static void sysinfo_arch_retrieve(void)
{
SYSTEM_INFO si;
ZeroMemory(&si, sizeof(SYSTEM_INFO));
@@ -710,7 +710,7 @@ void sysinfo_arch_retrieve(void)
*
* Once retrieved, the value is stored in sysinfo->p->vcsrevision_src.
*/
-void sysinfo_vcsrevision_src_retrieve(void)
+static void sysinfo_vcsrevision_src_retrieve(void)
{
if (sysinfo->p->vcsrevision_src != NULL) {
aFree(sysinfo->p->vcsrevision_src);
@@ -735,7 +735,7 @@ void sysinfo_vcsrevision_src_retrieve(void)
*
* Once retrieved, the value is stored in sysinfo->p->vcstype_name.
*/
-void sysinfo_vcstype_name_retrieve(void)
+static void sysinfo_vcstype_name_retrieve(void)
{
if (sysinfo->p->vcstype_name != NULL) {
aFree(sysinfo->p->vcstype_name);
@@ -765,7 +765,7 @@ void sysinfo_vcstype_name_retrieve(void)
*
* Output example: "Linux", "Darwin", "Windows", etc.
*/
-const char *sysinfo_platform(void)
+static const char *sysinfo_platform(void)
{
return sysinfo->p->platform;
}
@@ -784,7 +784,7 @@ const char *sysinfo_platform(void)
* Output example: "Windows 2008 Small Business Server", "OS X 10.8 Mountain Lion",
* "Gentoo Base System Release 2.2", "Debian GNU/Linux 6.0.6 (squeeze)", etc.
*/
-const char *sysinfo_osversion(void)
+static const char *sysinfo_osversion(void)
{
return sysinfo->p->osversion;
}
@@ -804,7 +804,7 @@ const char *sysinfo_osversion(void)
* "Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz", "Intel Core i7",
* "x86 CPU, Family 6, Model 54, Stepping 1", etc.
*/
-const char *sysinfo_cpu(void)
+static const char *sysinfo_cpu(void)
{
return sysinfo->p->cpu;
}
@@ -818,7 +818,7 @@ const char *sysinfo_cpu(void)
*
* @return the number of CPU cores.
*/
-int sysinfo_cpucores(void)
+static int sysinfo_cpucores(void)
{
return sysinfo->p->cpucores;
}
@@ -836,7 +836,7 @@ int sysinfo_cpucores(void)
*
* Output example: "x86", "x86_64", "IA-64", "ARM", etc.
*/
-const char *sysinfo_arch(void)
+static const char *sysinfo_arch(void)
{
return sysinfo->p->arch;
}
@@ -847,7 +847,7 @@ const char *sysinfo_arch(void)
* @retval true if this is a 64 bit build.
* @retval false if this isn't a 64 bit build (i.e. it is a 32 bit build).
*/
-bool sysinfo_is64bit(void)
+static bool sysinfo_is64bit(void)
{
#ifdef _LP64
return true;
@@ -866,7 +866,7 @@ bool sysinfo_is64bit(void)
* Output example: "Microsoft Visual C++ 2012 (v170050727)",
* "Clang v5.0.0", "MinGW32 v3.20", "GCC v4.7.3", etc.
*/
-const char *sysinfo_compiler(void)
+static const char *sysinfo_compiler(void)
{
return sysinfo->p->compiler;
}
@@ -882,7 +882,7 @@ const char *sysinfo_compiler(void)
*
* Output example: "-ggdb -O2 -flto -pipe -ffast-math ..."
*/
-const char *sysinfo_cflags(void)
+static const char *sysinfo_cflags(void)
{
return sysinfo->p->cflags;
}
@@ -898,7 +898,7 @@ const char *sysinfo_cflags(void)
*
* @see VCSTYPE_NONE, VCSTYPE_GIT, VCSTYPE_SVN, VCSTYPE_UNKNOWN
*/
-int sysinfo_vcstypeid(void)
+static int sysinfo_vcstypeid(void)
{
return sysinfo->p->vcstype;
}
@@ -916,7 +916,7 @@ int sysinfo_vcstypeid(void)
*
* Output example: "Git", "SVN", "Exported"
*/
-const char *sysinfo_vcstype(void)
+static const char *sysinfo_vcstype(void)
{
return sysinfo->p->vcstype_name;
}
@@ -935,7 +935,7 @@ const char *sysinfo_vcstype(void)
*
* Output example: Git: "9128feccf3bddda94a7f8a170305565416815b40", SVN: "17546"
*/
-const char *sysinfo_vcsrevision_src(void)
+static const char *sysinfo_vcsrevision_src(void)
{
return sysinfo->p->vcsrevision_src;
}
@@ -952,7 +952,7 @@ const char *sysinfo_vcsrevision_src(void)
*
* Output example: Git: "9128feccf3bddda94a7f8a170305565416815b40", SVN: "17546"
*/
-const char *sysinfo_vcsrevision_scripts(void)
+static const char *sysinfo_vcsrevision_scripts(void)
{
return sysinfo->p->vcsrevision_scripts;
}
@@ -961,7 +961,7 @@ const char *sysinfo_vcsrevision_scripts(void)
* Reloads the run-time (scripts) VCS revision information. To be used during
* script reloads to refresh the cached version.
*/
-void sysinfo_vcsrevision_reload(void)
+static void sysinfo_vcsrevision_reload(void)
{
if (sysinfo->p->vcsrevision_scripts != NULL) {
aFree(sysinfo->p->vcsrevision_scripts);
@@ -984,7 +984,7 @@ void sysinfo_vcsrevision_reload(void)
* @retval false if the current process is running as regular user, or
* in any case under Windows.
*/
-bool sysinfo_is_superuser(void)
+static bool sysinfo_is_superuser(void)
{
#ifndef _WIN32
if (geteuid() == 0)
@@ -996,7 +996,7 @@ bool sysinfo_is_superuser(void)
/**
* Interface runtime initialization.
*/
-void sysinfo_init(void)
+static void sysinfo_init(void)
{
sysinfo->p->compiler = SYSINFO_COMPILER;
#ifdef WIN32
@@ -1023,7 +1023,7 @@ void sysinfo_init(void)
/**
* Interface shutdown cleanup.
*/
-void sysinfo_final(void)
+static void sysinfo_final(void)
{
#ifdef WIN32
// Only need to be free'd in win32, they're #defined elsewhere
diff --git a/src/common/thread.c b/src/common/thread.c
index 2dc7d2682..605153011 100644
--- a/src/common/thread.c
+++ b/src/common/thread.c
@@ -49,7 +49,7 @@
* @author Florian Wilkemeyer <fw@f-ws.de>
*/
-struct thread_interface thread_s;
+static struct thread_interface thread_s;
struct thread_interface *thread;
/// The maximum amount of threads.
@@ -70,7 +70,7 @@ struct thread_handle {
};
#ifdef HAS_TLS
-__thread int g_rathread_ID = -1;
+static __thread int g_rathread_ID = -1;
#endif
// Subystem Code
@@ -78,7 +78,7 @@ __thread int g_rathread_ID = -1;
static struct thread_handle l_threads[THREADS_MAX];
/// @copydoc thread_interface::init()
-void thread_init(void)
+static void thread_init(void)
{
register int i;
memset(&l_threads, 0x00, THREADS_MAX * sizeof(struct thread_handle));
@@ -97,7 +97,7 @@ void thread_init(void)
}
/// @copydoc thread_interface::final()
-void thread_final(void)
+static void thread_final(void)
{
register int i;
@@ -125,7 +125,7 @@ static void thread_terminated(struct thread_handle *handle)
}
#ifdef WIN32
-DWORD WINAPI thread_main_redirector(LPVOID p)
+static DWORD WINAPI thread_main_redirector(LPVOID p)
{
#else
static void *thread_main_redirector(void *p)
@@ -170,13 +170,13 @@ static void *thread_main_redirector(void *p)
// API Level
/// @copydoc thread_interface::create()
-struct thread_handle *thread_create(threadFunc entry_point, void *param)
+static struct thread_handle *thread_create(threadFunc entry_point, void *param)
{
return thread->create_opt(entry_point, param, (1<<23) /*8MB*/, THREADPRIO_NORMAL);
}
/// @copydoc thread_interface::create_opt()
-struct thread_handle *thread_create_opt(threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio)
+static struct thread_handle *thread_create_opt(threadFunc entry_point, void *param, size_t stack_size, enum thread_priority prio)
{
#ifndef WIN32
pthread_attr_t attr;
@@ -226,7 +226,7 @@ struct thread_handle *thread_create_opt(threadFunc entry_point, void *param, siz
}
/// @copydoc thread_interface::destroy()
-void thread_destroy(struct thread_handle *handle)
+static void thread_destroy(struct thread_handle *handle)
{
#ifdef WIN32
if (TerminateThread(handle->hThread, 0) != FALSE) {
@@ -244,7 +244,7 @@ void thread_destroy(struct thread_handle *handle)
#endif
}
-struct thread_handle *thread_self(void)
+static struct thread_handle *thread_self(void)
{
#ifdef HAS_TLS
struct thread_handle *handle = &l_threads[g_rathread_ID];
@@ -273,7 +273,7 @@ struct thread_handle *thread_self(void)
}
/// @copydoc thread_interface::get_tid()
-int thread_get_tid(void)
+static int thread_get_tid(void)
{
#if defined(HAS_TLS)
return g_rathread_ID;
@@ -285,7 +285,7 @@ int thread_get_tid(void)
}
/// @copydoc thread_interface::wait()
-bool thread_wait(struct thread_handle *handle, void **out_exit_code)
+static bool thread_wait(struct thread_handle *handle, void **out_exit_code)
{
// Hint:
// no thread data cleanup routine call here!
@@ -302,20 +302,21 @@ bool thread_wait(struct thread_handle *handle, void **out_exit_code)
}
/// @copydoc thread_interface::prio_set()
-void thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
+static void thread_prio_set(struct thread_handle *handle, enum thread_priority prio)
{
handle->prio = THREADPRIO_NORMAL;
//@TODO
}
/// @copydoc thread_interface::prio_get()
-enum thread_priority thread_prio_get(struct thread_handle *handle)
+static enum thread_priority thread_prio_get(struct thread_handle *handle)
{
return handle->prio;
}
/// @copydoc thread_interface::yield()
-void thread_yield(void) {
+static void thread_yield(void)
+{
#ifdef WIN32
SwitchToThread();
#else
diff --git a/src/common/timer.c b/src/common/timer.c
index ad11bc18d..d5f9c83d1 100644
--- a/src/common/timer.c
+++ b/src/common/timer.c
@@ -40,7 +40,7 @@
#include <stdlib.h>
#include <string.h>
-struct timer_interface timer_s;
+static struct timer_interface timer_s;
struct timer_interface *timer;
// If the server can't handle processing thousands of monsters
@@ -54,7 +54,7 @@ static int timer_data_max = 0;
static int timer_data_num = 1;
// free timers (array)
-static int* free_timer_list = NULL;
+static int *free_timer_list = NULL;
static int free_timer_list_max = 0;
static int free_timer_list_pos = 0;
@@ -72,20 +72,21 @@ static BHEAP_VAR(int, timer_heap);
// server startup time
-time_t start_time;
+static time_t start_time;
/*----------------------------
* Timer debugging
*----------------------------*/
-struct timer_func_list {
+static struct timer_func_list {
struct timer_func_list* next;
TimerFunc func;
char* name;
} *tfl_root = NULL;
/// Sets the name of a timer function.
-int timer_add_func_list(TimerFunc func, char* name) {
+static int timer_add_func_list(TimerFunc func, char *name)
+{
struct timer_func_list* tfl;
nullpo_ret(func);
@@ -108,7 +109,7 @@ int timer_add_func_list(TimerFunc func, char* name) {
}
/// Returns the name of the timer function.
-char* search_timer_func_list(TimerFunc func)
+static char *search_timer_func_list(TimerFunc func)
{
struct timer_func_list* tfl;
@@ -124,9 +125,11 @@ char* search_timer_func_list(TimerFunc func)
*----------------------------*/
#if defined(ENABLE_RDTSC)
-static uint64 RDTSC_BEGINTICK = 0, RDTSC_CLOCK = 0;
+static uint64 RDTSC_BEGINTICK = 0;
+static uint64 RDTSC_CLOCK = 0;
-static __inline uint64 rdtsc_(void) {
+static __inline uint64 rdtsc_(void)
+{
register union {
uint64 qw;
uint32 dw[2];
@@ -137,7 +140,8 @@ static __inline uint64 rdtsc_(void) {
return t.qw;
}
-static void rdtsc_calibrate(void){
+static void rdtsc_calibrate(void)
+{
uint64 t1, t2;
int32 i;
@@ -164,7 +168,8 @@ static void rdtsc_calibrate(void){
* platform-abstracted tick retrieval
* @return server's current tick
*/
-static int64 sys_tick(void) {
+static int64 sys_tick(void)
+{
#if defined(WIN32)
// Windows: GetTickCount/GetTickCount64: Return the number of
// milliseconds that have elapsed since the system was started.
@@ -226,25 +231,28 @@ static int64 sys_tick(void) {
static int64 gettick_cache;
static int gettick_count = 1;
-int64 timer_gettick_nocache(void) {
+static int64 timer_gettick_nocache(void)
+{
gettick_count = TICK_CACHE;
gettick_cache = sys_tick();
return gettick_cache;
}
-int64 timer_gettick(void) {
+static int64 timer_gettick(void)
+{
return ( --gettick_count == 0 ) ? gettick_nocache() : gettick_cache;
}
//////////////////////////////
#else
//////////////////////////////
// tick doesn't get cached
-int64 timer_gettick_nocache(void)
+static int64 timer_gettick_nocache(void)
{
return sys_tick();
}
-int64 timer_gettick(void) {
+static int64 timer_gettick(void)
+{
return sys_tick();
}
//////////////////////////////////////////////////////////////////////////
@@ -256,7 +264,8 @@ int64 timer_gettick(void) {
*--------------------------------------*/
/// Adds a timer to the timer_heap
-static void push_timer_heap(int tid) {
+static void push_timer_heap(int tid)
+{
BHEAP_ENSURE(timer_heap, 1, 256);
BHEAP_PUSH(timer_heap, tid, DIFFTICK_MINTOPCMP, swap);
}
@@ -266,7 +275,8 @@ static void push_timer_heap(int tid) {
*--------------------------*/
/// Returns a free timer id.
-static int acquire_timer(void) {
+static int acquire_timer(void)
+{
int tid;
// select a free timer
@@ -299,7 +309,8 @@ static int acquire_timer(void) {
/// Starts a new timer that is deleted once it expires (single-use).
/// Returns the timer's id.
-int timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
+static int timer_add(int64 tick, TimerFunc func, int id, intptr_t data)
+{
int tid;
nullpo_retr(INVALID_TIMER, func);
@@ -328,7 +339,7 @@ int timer_add(int64 tick, TimerFunc func, int id, intptr_t data) {
/// Starts a new timer that automatically restarts itself (infinite loop until manually removed).
/// Returns the timer's id, or INVALID_TIMER if it fails.
-int timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int interval)
+static int timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int interval)
{
int tid;
@@ -364,7 +375,8 @@ int timer_add_interval(int64 tick, TimerFunc func, int id, intptr_t data, int in
}
/// Retrieves internal timer data
-const struct TimerData* timer_get(int tid) {
+static const struct TimerData *timer_get(int tid)
+{
Assert_retr(NULL, tid > 0);
return ( tid >= 0 && tid < timer_data_num ) ? &timer_data[tid] : NULL;
}
@@ -372,7 +384,7 @@ const struct TimerData* timer_get(int tid) {
/// Marks a timer specified by 'id' for immediate deletion once it expires.
/// Param 'func' is used for debug/verification purposes.
/// Returns 0 on success, < 0 on failure.
-int timer_do_delete(int tid, TimerFunc func)
+static int timer_do_delete(int tid, TimerFunc func)
{
nullpo_ret(func);
@@ -402,7 +414,8 @@ int timer_do_delete(int tid, TimerFunc func)
/// Adjusts a timer's expiration time.
/// Returns the new tick value, or -1 if it fails.
-int64 timer_addtick(int tid, int64 tick) {
+static int64 timer_addtick(int tid, int64 tick)
+{
if (tid < 1 || tid >= timer_data_num) {
ShowError("timer_addtick error : no such timer [%d]\n", tid);
Assert_retr(-1, 0);
@@ -419,7 +432,7 @@ int64 timer_addtick(int tid, int64 tick) {
* @return The new tick value.
* @retval -1 in case of failure.
*/
-int64 timer_settick(int tid, int64 tick)
+static int64 timer_settick(int tid, int64 tick)
{
int i;
@@ -461,7 +474,7 @@ int64 timer_settick(int tid, int64 tick)
* @param tick The current tick.
* @return The value of the smallest non-expired timer (or 1 second if there aren't any).
*/
-int do_timer(int64 tick)
+static int do_timer(int64 tick)
{
int64 diff = TIMER_MAX_INTERVAL; // return value
@@ -515,11 +528,12 @@ int do_timer(int64 tick)
return (int)cap_value(diff, TIMER_MIN_INTERVAL, TIMER_MAX_INTERVAL);
}
-unsigned long timer_get_uptime(void) {
+static unsigned long timer_get_uptime(void)
+{
return (unsigned long)difftime(time(NULL), start_time);
}
-void timer_init(void)
+static void timer_init(void)
{
#if defined(ENABLE_RDTSC)
rdtsc_calibrate();
@@ -528,7 +542,8 @@ void timer_init(void)
time(&start_time);
}
-void timer_final(void) {
+static void timer_final(void)
+{
struct timer_func_list *tfl;
struct timer_func_list *next;
@@ -542,12 +557,14 @@ void timer_final(void) {
BHEAP_CLEAR(timer_heap);
if (free_timer_list) aFree(free_timer_list);
}
+
/*=====================================
-* Default Functions : timer.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void timer_defaults(void) {
+ * Default Functions : timer.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void timer_defaults(void)
+{
timer = &timer_s;
/* funcs */
diff --git a/src/common/utils.c b/src/common/utils.c
index 44f3087c3..d4c838b56 100644
--- a/src/common/utils.c
+++ b/src/common/utils.c
@@ -45,11 +45,11 @@
#include <stdlib.h>
#include <sys/stat.h> // cache purposes [Ind/Hercules]
-struct HCache_interface HCache_s;
+static struct HCache_interface HCache_s;
struct HCache_interface *HCache;
/// Dumps given buffer into file pointed to by a handle.
-void WriteDump(FILE* fp, const void* buffer, size_t length)
+void WriteDump(FILE *fp, const void *buffer, size_t length)
{
size_t i;
char hex[48+1], ascii[16+1];
@@ -109,7 +109,7 @@ void ShowDump(const void *buffer, size_t length)
#ifdef WIN32
-static char* checkpath(char *path, const char *srcpath)
+static char *checkpath(char *path, const char *srcpath)
{
// just make sure the char*path is not const
char *p = path;
@@ -128,7 +128,7 @@ static char* checkpath(char *path, const char *srcpath)
return path;
}
-void findfile(const char *p, const char *pat, void (func)(const char*))
+void findfile(const char *p, const char *pat, void (func)(const char *))
{
WIN32_FIND_DATAA FindFileData;
HANDLE hFind;
@@ -171,7 +171,7 @@ void findfile(const char *p, const char *pat, void (func)(const char*))
#define MAX_DIR_PATH 2048
-static char* checkpath(char *path, const char*srcpath)
+static char *checkpath(char *path, const char *srcpath)
{
// just make sure the char*path is not const
char *p=path;
@@ -190,7 +190,7 @@ static char* checkpath(char *path, const char*srcpath)
return path;
}
-void findfile(const char *p, const char *pat, void (func)(const char*))
+void findfile(const char *p, const char *pat, void (func)(const char *))
{
DIR* dir; ///< pointer to the scanned directory.
struct dirent* entry; ///< pointer to one directory entry.
@@ -238,7 +238,7 @@ void findfile(const char *p, const char *pat, void (func)(const char*))
}
#endif
-bool exists(const char* filename)
+bool exists(const char *filename)
{
return !access(filename, F_OK);
}
@@ -309,14 +309,14 @@ int32 MakeLongLE(int32 val)
}
// Reads an uint16 in little-endian from the buffer
-uint16 GetUShort(const unsigned char* buf)
+uint16 GetUShort(const unsigned char *buf)
{
return ( ((uint16)(buf[0])) )
| ( ((uint16)(buf[1])) << 0x08 );
}
// Reads an uint32 in little-endian from the buffer
-uint32 GetULong(const unsigned char* buf)
+uint32 GetULong(const unsigned char *buf)
{
return ( ((uint32)(buf[0])) )
| ( ((uint32)(buf[1])) << 0x08 )
@@ -325,13 +325,13 @@ uint32 GetULong(const unsigned char* buf)
}
// Reads an int32 in little-endian from the buffer
-int32 GetLong(const unsigned char* buf)
+int32 GetLong(const unsigned char *buf)
{
return (int32)GetULong(buf);
}
// Reads a float (32 bits) from the buffer
-float GetFloat(const unsigned char* buf)
+float GetFloat(const unsigned char *buf)
{
uint32 val = GetULong(buf);
return *((float*)(void*)&val);
@@ -426,7 +426,7 @@ int apply_percentrate(int value, int rate, int maxrate)
//-----------------------------------------------------
// custom timestamp formatting (from eApp)
//-----------------------------------------------------
-const char* timestamp2string(char* str, size_t size, time_t timestamp, const char* format)
+const char *timestamp2string(char *str, size_t size, time_t timestamp, const char *format)
{
size_t len;
nullpo_retr(NULL, str);
@@ -436,7 +436,7 @@ const char* timestamp2string(char* str, size_t size, time_t timestamp, const cha
}
/* [Ind/Hercules] Caching */
-bool HCache_check(const char *file)
+static bool HCache_check(const char *file)
{
struct stat bufa, bufb;
FILE *first, *second;
@@ -487,7 +487,7 @@ bool HCache_check(const char *file)
return true;
}
-FILE *HCache_open(const char *file, const char *opt)
+static FILE *HCache_open(const char *file, const char *opt)
{
FILE *first;
char s_path[255];
@@ -520,7 +520,7 @@ FILE *HCache_open(const char *file, const char *opt)
return first;
}
-void HCache_init(void)
+static void HCache_init(void)
{
struct stat buf;
if (stat(SERVER_NAME, &buf) != 0) {
diff --git a/src/login/HPMlogin.c b/src/login/HPMlogin.c
index 4f63da6ac..c13bd96a3 100644
--- a/src/login/HPMlogin.c
+++ b/src/login/HPMlogin.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/login/HPMlogin.h b/src/login/HPMlogin.h
index 5e059aa7e..e16edb6b8 100644
--- a/src/login/HPMlogin.h
+++ b/src/login/HPMlogin.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/login/account.c b/src/login/account.c
index 6308a73d1..783cf85ea 100644
--- a/src/login/account.c
+++ b/src/login/account.c
@@ -39,11 +39,11 @@
/// global defines
#define ACCOUNT_SQL_DB_VERSION 20110114
-struct account_interface account_s;
+static struct account_interface account_s;
struct account_interface *account;
/// public constructor
-AccountDB* account_db_sql(void)
+static AccountDB *account_db_sql(void)
{
AccountDB_SQL* db = (AccountDB_SQL*)aCalloc(1, sizeof(AccountDB_SQL));
@@ -80,7 +80,7 @@ AccountDB* account_db_sql(void)
/* ------------------------------------------------------------------------- */
/// establishes database connection
-static bool account_db_sql_init(AccountDB* self)
+static bool account_db_sql_init(AccountDB *self)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct Sql *sql_handle = NULL;
@@ -109,7 +109,7 @@ static bool account_db_sql_init(AccountDB* self)
}
/// disconnects from database
-static void account_db_sql_destroy(AccountDB* self)
+static void account_db_sql_destroy(AccountDB *self)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
@@ -120,7 +120,7 @@ static void account_db_sql_destroy(AccountDB* self)
}
/// Gets a property from this database.
-static bool account_db_sql_get_property(AccountDB* self, const char* key, char* buf, size_t buflen)
+static bool account_db_sql_get_property(AccountDB *self, const char *key, char *buf, size_t buflen)
{
/* TODO:
* This functionality is not being used as of now, it was removed in
@@ -206,7 +206,7 @@ static bool account_db_sql_get_property(AccountDB* self, const char* key, char*
*
* @retval false in case of error.
*/
-bool account_db_read_inter(AccountDB_SQL *db, const char *filename, bool imported)
+static bool account_db_read_inter(AccountDB_SQL *db, const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -251,7 +251,7 @@ bool account_db_read_inter(AccountDB_SQL *db, const char *filename, bool importe
*
* @retval false in case of error.
*/
-static bool account_db_sql_set_property(AccountDB* self, struct config_t *config, bool imported)
+static bool account_db_sql_set_property(AccountDB *self, struct config_t *config, bool imported)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct config_setting_t *setting = NULL;
@@ -283,7 +283,7 @@ static bool account_db_sql_set_property(AccountDB* self, struct config_t *config
/// create a new account entry
/// If acc->account_id is -1, the account id will be auto-generated,
/// and its value will be written to acc->account_id if everything succeeds.
-static bool account_db_sql_create(AccountDB* self, struct mmo_account* acc)
+static bool account_db_sql_create(AccountDB *self, struct mmo_account *acc)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct Sql *sql_handle;
@@ -337,7 +337,7 @@ static bool account_db_sql_create(AccountDB* self, struct mmo_account* acc)
}
/// delete an existing account entry + its regs
-static bool account_db_sql_remove(AccountDB* self, const int account_id)
+static bool account_db_sql_remove(AccountDB *self, const int account_id)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct Sql *sql_handle;
@@ -360,21 +360,21 @@ static bool account_db_sql_remove(AccountDB* self, const int account_id)
}
/// update an existing account with the provided new data (both account and regs)
-static bool account_db_sql_save(AccountDB* self, const struct mmo_account* acc)
+static bool account_db_sql_save(AccountDB *self, const struct mmo_account *acc)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
return account->mmo_auth_tosql(db, acc, false);
}
/// retrieve data from db and store it in the provided data structure
-static bool account_db_sql_load_num(AccountDB* self, struct mmo_account* acc, const int account_id)
+static bool account_db_sql_load_num(AccountDB *self, struct mmo_account *acc, const int account_id)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
return account->mmo_auth_fromsql(db, acc, account_id);
}
/// retrieve data from db and store it in the provided data structure
-static bool account_db_sql_load_str(AccountDB* self, struct mmo_account* acc, const char* userid)
+static bool account_db_sql_load_str(AccountDB *self, struct mmo_account *acc, const char *userid)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
struct Sql *sql_handle;
@@ -413,9 +413,8 @@ static bool account_db_sql_load_str(AccountDB* self, struct mmo_account* acc, co
return account->db_sql_load_num(self, acc, account_id);
}
-
/// Returns a new forward iterator.
-static AccountDBIterator* account_db_sql_iterator(AccountDB* self)
+static AccountDBIterator *account_db_sql_iterator(AccountDB *self)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
AccountDBIterator_SQL* iter;
@@ -435,15 +434,14 @@ static AccountDBIterator* account_db_sql_iterator(AccountDB* self)
/// Destroys this iterator, releasing all allocated memory (including itself).
-static void account_db_sql_iter_destroy(AccountDBIterator* self)
+static void account_db_sql_iter_destroy(AccountDBIterator *self)
{
AccountDBIterator_SQL* iter = (AccountDBIterator_SQL*)self;
aFree(iter);
}
-
/// Fetches the next account in the database.
-static bool account_db_sql_iter_next(AccountDBIterator* self, struct mmo_account* acc)
+static bool account_db_sql_iter_next(AccountDBIterator *self, struct mmo_account *acc)
{
AccountDBIterator_SQL* iter = (AccountDBIterator_SQL*)self;
AccountDB_SQL* db;
@@ -478,8 +476,7 @@ static bool account_db_sql_iter_next(AccountDBIterator* self, struct mmo_account
return false;
}
-
-static bool account_mmo_auth_fromsql(AccountDB_SQL* db, struct mmo_account* acc, int account_id)
+static bool account_mmo_auth_fromsql(AccountDB_SQL *db, struct mmo_account *acc, int account_id)
{
struct Sql *sql_handle;
char* data;
@@ -524,7 +521,7 @@ static bool account_mmo_auth_fromsql(AccountDB_SQL* db, struct mmo_account* acc,
return true;
}
-static bool account_mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, bool is_new)
+static bool account_mmo_auth_tosql(AccountDB_SQL *db, const struct mmo_account *acc, bool is_new)
{
struct Sql *sql_handle;
struct SqlStmt *stmt;
@@ -619,13 +616,13 @@ static bool account_mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account*
return result;
}
-struct Sql *account_db_sql_up(AccountDB* self)
+static struct Sql *account_db_sql_up(AccountDB *self)
{
AccountDB_SQL* db = (AccountDB_SQL*)self;
return db ? db->accounts : NULL;
}
-void account_mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_id)
+static void account_mmo_save_accreg2(AccountDB *self, int fd, int account_id, int char_id)
{
struct Sql *sql_handle;
AccountDB_SQL* db = (AccountDB_SQL*)self;
@@ -677,7 +674,7 @@ void account_mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_
}
}
-void account_mmo_send_accreg2(AccountDB* self, int fd, int account_id, int char_id)
+static void account_mmo_send_accreg2(AccountDB *self, int fd, int account_id, int char_id)
{
struct Sql *sql_handle;
AccountDB_SQL* db = (AccountDB_SQL*)self;
@@ -822,7 +819,8 @@ void account_mmo_send_accreg2(AccountDB* self, int fd, int account_id, int char_
SQL->FreeResult(sql_handle);
}
-void account_defaults(void) {
+void account_defaults(void)
+{
account = &account_s;
account->db_sql_up = account_db_sql_up;
diff --git a/src/login/ipban.c b/src/login/ipban.c
index 140e0dda6..32ee1a19b 100644
--- a/src/login/ipban.c
+++ b/src/login/ipban.c
@@ -34,12 +34,12 @@
#include <stdlib.h>
-struct ipban_interface ipban_s;
+static struct ipban_interface ipban_s;
struct ipban_interface *ipban;
-struct s_ipban_dbs ipbandbs;
+static struct s_ipban_dbs ipbandbs;
// initialize
-void ipban_init(void)
+static void ipban_init(void)
{
ipban->inited = true;
@@ -68,7 +68,7 @@ void ipban_init(void)
}
// finalize
-void ipban_final(void)
+static void ipban_final(void)
{
if (!login->config->ipban)
return;// ipban disabled
@@ -94,7 +94,7 @@ void ipban_final(void)
* @retval false in case of error.
*/
-bool ipban_config_read_inter(const char *filename, bool imported)
+static bool ipban_config_read_inter(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -138,7 +138,7 @@ bool ipban_config_read_inter(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool ipban_config_read_connection(const char *filename, struct config_t *config, bool imported)
+static bool ipban_config_read_connection(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -172,7 +172,7 @@ bool ipban_config_read_connection(const char *filename, struct config_t *config,
*
* @retval false in case of error.
*/
-bool ipban_config_read_dynamic(const char *filename, struct config_t *config, bool imported)
+static bool ipban_config_read_dynamic(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -203,7 +203,7 @@ bool ipban_config_read_dynamic(const char *filename, struct config_t *config, bo
*
* @retval false in case of error.
*/
-bool ipban_config_read(const char *filename, struct config_t *config, bool imported)
+static bool ipban_config_read(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
bool retval = true;
@@ -234,7 +234,7 @@ bool ipban_config_read(const char *filename, struct config_t *config, bool impor
}
// check ip against active bans list
-bool ipban_check(uint32 ip)
+static bool ipban_check(uint32 ip)
{
uint8* p = (uint8*)&ip;
char* data = NULL;
@@ -262,7 +262,7 @@ bool ipban_check(uint32 ip)
}
// log failed attempt
-void ipban_log(uint32 ip)
+static void ipban_log(uint32 ip)
{
unsigned long failures;
@@ -284,7 +284,8 @@ void ipban_log(uint32 ip)
}
// remove expired bans
-int ipban_cleanup(int tid, int64 tick, int id, intptr_t data) {
+static int ipban_cleanup(int tid, int64 tick, int id, intptr_t data)
+{
if (!login->config->ipban)
return 0;// ipban disabled
@@ -294,7 +295,8 @@ int ipban_cleanup(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void ipban_defaults(void) {
+void ipban_defaults(void)
+{
ipban = &ipban_s;
ipban->dbs = &ipbandbs;
diff --git a/src/login/lclif.c b/src/login/lclif.c
index f514932a2..48a9c6b94 100644
--- a/src/login/lclif.c
+++ b/src/login/lclif.c
@@ -41,13 +41,13 @@
* Implementation of the login client interface.
*/
-struct lclif_interface lclif_s;
-struct lclif_interface_private lclif_p;
-struct lclif_interface_dbs lclif_dbs;
+static struct lclif_interface lclif_s;
+static struct lclif_interface_private lclif_p;
+static struct lclif_interface_dbs lclif_dbs;
struct lclif_interface *lclif;
/// @copydoc lclif_interface::connection_error()
-void lclif_connection_error(int fd, uint8 error)
+static void lclif_connection_error(int fd, uint8 error)
{
struct packet_SC_NOTIFY_BAN *packet = NULL;
WFIFOHEAD(fd, sizeof(*packet));
@@ -58,15 +58,15 @@ void lclif_connection_error(int fd, uint8 error)
}
/// @copydoc lclif_interface_private::parse_CA_CONNECT_INFO_CHANGED()
-enum parsefunc_rcode lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_CONNECT_INFO_CHANGED(int fd, struct login_session_data *sd)
{
return PACKET_VALID;
}
/// @copydoc lclif_interface_private::parse_CA_EXE_HASHCHECK()
-enum parsefunc_rcode lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_data *sd)
{
const struct packet_CA_EXE_HASHCHECK *packet = RP2PTR(fd);
sd->has_client_hash = 1;
@@ -75,8 +75,8 @@ enum parsefunc_rcode lclif_parse_CA_EXE_HASHCHECK(int fd, struct login_session_d
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN()
-enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd)
{
const struct packet_CA_LOGIN *packet = RP2PTR(fd);
@@ -94,8 +94,8 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN(int fd, struct login_session_data *sd)
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN2()
-enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd)
{
const struct packet_CA_LOGIN2 *packet = RP2PTR(fd);
@@ -110,8 +110,8 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN2(int fd, struct login_session_data *sd
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN3()
-enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd)
{
const struct packet_CA_LOGIN3 *packet = RP2PTR(fd);
@@ -128,8 +128,8 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN3(int fd, struct login_session_data *sd
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN4()
-enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd)
{
const struct packet_CA_LOGIN4 *packet = RP2PTR(fd);
@@ -146,8 +146,8 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN4(int fd, struct login_session_data *sd
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN_PCBANG()
-enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_data *sd)
{
const struct packet_CA_LOGIN_PCBANG *packet = RP2PTR(fd);
@@ -168,8 +168,8 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN_PCBANG(int fd, struct login_session_da
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN_HAN()
-enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data *sd)
{
const struct packet_CA_LOGIN_HAN *packet = RP2PTR(fd);
@@ -191,8 +191,8 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN_HAN(int fd, struct login_session_data
}
/// @copydoc lclif_interface_private::parse_CA_SSO_LOGIN_REQ()
-enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_data *sd)
{
const struct packet_CA_SSO_LOGIN_REQ *packet = RP2PTR(fd);
int tokenlen = (int)RFIFOREST(fd) - (int)sizeof(*packet);
@@ -217,8 +217,8 @@ enum parsefunc_rcode lclif_parse_CA_SSO_LOGIN_REQ(int fd, struct login_session_d
}
/// @copydoc lclif_interface_private::parse_CA_LOGIN_OTP()
-enum parsefunc_rcode lclif_parse_CA_LOGIN_OTP(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_LOGIN_OTP(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_OTP(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_LOGIN_OTP(int fd, struct login_session_data *sd)
{
//const struct packet_CA_LOGIN_OTP *packet = RP2PTR(fd);
login->client_login_otp(fd, sd);
@@ -226,8 +226,8 @@ enum parsefunc_rcode lclif_parse_CA_LOGIN_OTP(int fd, struct login_session_data
}
/// @copydoc lclif_interface_private::parse_CA_REQ_HASH()
-enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *sd)
{
memset(sd->md5key, '\0', sizeof(sd->md5key));
sd->md5keylen = (uint16)(12 + rnd() % 4);
@@ -238,8 +238,8 @@ enum parsefunc_rcode lclif_parse_CA_REQ_HASH(int fd, struct login_session_data *
}
/// @copydoc lclif_interface_private::parse_CA_CHARSERVERCONNECT()
-enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_session_data *sd)
{
char ip[16];
uint32 ipl = sockt->session[fd]->client_addr;
@@ -251,7 +251,7 @@ enum parsefunc_rcode lclif_parse_CA_CHARSERVERCONNECT(int fd, struct login_sessi
}
/// @copydoc lclif_interface::server_list()
-bool lclif_send_server_list(struct login_session_data *sd)
+static bool lclif_send_server_list(struct login_session_data *sd)
{
int server_num = 0, i, n, length;
uint32 ip;
@@ -309,9 +309,9 @@ bool lclif_send_server_list(struct login_session_data *sd)
}
/// @copydoc lclif_interface::auth_failed()
-void lclif_send_auth_failed(int fd, time_t ban, uint32 error)
+static void lclif_send_auth_failed(int fd, time_t ban, uint32 error)
{
-#if PACKETVER_ZERO_NUM >= 20180627
+#if PACKETVER >= 20180627
struct packet_AC_REFUSE_LOGIN_R2 *packet = NULL;
int packet_id = PACKET_ID_AC_REFUSE_LOGIN_R3;
#elif PACKETVER >= 20101123
@@ -333,7 +333,7 @@ void lclif_send_auth_failed(int fd, time_t ban, uint32 error)
}
/// @copydoc lclif_interface::login_error()
-void lclif_send_login_error(int fd, uint8 error)
+static void lclif_send_login_error(int fd, uint8 error)
{
struct packet_AC_REFUSE_LOGIN *packet = NULL;
WFIFOHEAD(fd, sizeof(*packet));
@@ -345,8 +345,8 @@ void lclif_send_login_error(int fd, uint8 error)
}
/// @copydoc lclif_interface::coding_key()
-void lclif_send_coding_key(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-void lclif_send_coding_key(int fd, struct login_session_data *sd)
+static void lclif_send_coding_key(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static void lclif_send_coding_key(int fd, struct login_session_data *sd)
{
struct packet_AC_ACK_HASH *packet = NULL;
int16 size = sizeof(*packet) + sd->md5keylen;
@@ -360,7 +360,7 @@ void lclif_send_coding_key(int fd, struct login_session_data *sd)
}
/// @copydoc lclif_interface::parse()
-int lclif_parse(int fd)
+static int lclif_parse(int fd)
{
struct login_session_data *sd = NULL;
int i;
@@ -426,7 +426,7 @@ int lclif_parse(int fd)
}
/// @copydoc lclif_interface_private::parse_sub()
-enum parsefunc_rcode lclif_parse_sub(int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_sub(int fd, struct login_session_data *sd)
{
int packet_len = (int)RFIFOREST(fd);
int16 packet_id = RFIFOW(fd, 0);
@@ -474,7 +474,7 @@ enum parsefunc_rcode lclif_parse_sub(int fd, struct login_session_data *sd)
}
/// @copydoc lclif_interface::packet()
-const struct login_packet_db *lclif_packet(int16 packet_id)
+static const struct login_packet_db *lclif_packet(int16 packet_id)
{
if (packet_id == PACKET_ID_CA_CHARSERVERCONNECT)
return &lclif->p->dbs->packet_db[0];
@@ -486,7 +486,7 @@ const struct login_packet_db *lclif_packet(int16 packet_id)
}
/// @copydoc lclif_interface::parse_packet()
-enum parsefunc_rcode lclif_parse_packet(const struct login_packet_db *lpd, int fd, struct login_session_data *sd)
+static enum parsefunc_rcode lclif_parse_packet(const struct login_packet_db *lpd, int fd, struct login_session_data *sd)
{
int result;
result = (*lpd->pFunc)(fd, sd);
@@ -495,7 +495,7 @@ enum parsefunc_rcode lclif_parse_packet(const struct login_packet_db *lpd, int f
}
/// @copydoc lclif_interface_private::packetdb_loaddb()
-void packetdb_loaddb(void)
+static void packetdb_loaddb(void)
{
int i;
struct packet {
@@ -536,13 +536,13 @@ void packetdb_loaddb(void)
}
/// @copydoc lclif_interface::init()
-void lclif_init(void)
+static void lclif_init(void)
{
lclif->p->packetdb_loaddb();
}
/// @copydoc lclif_interface::final()
-void lclif_final(void)
+static void lclif_final(void)
{
}
diff --git a/src/login/login.c b/src/login/login.c
index c78729dd8..d54348834 100644
--- a/src/login/login.c
+++ b/src/login/login.c
@@ -50,17 +50,17 @@
* Implementation of the login interface.
*/
-struct login_interface login_s;
+static struct login_interface login_s;
struct login_interface *login;
-struct s_login_dbs logindbs;
-struct lchrif_interface lchrif_s;
+static struct s_login_dbs logindbs;
+static struct lchrif_interface lchrif_s;
struct lchrif_interface *lchrif;
-struct Login_Config login_config_;
+static struct Login_Config login_config_;
-struct Account_engine account_engine;
+static struct Account_engine account_engine;
// account database
-AccountDB* accounts = NULL;
+static AccountDB *accounts = NULL;
//-----------------------------------------------------
// Auth database
@@ -80,7 +80,7 @@ static struct DBData login_create_online_user(union DBKey key, va_list args)
return DB->ptr2data(p);
}
-struct online_login_data* login_add_online_user(int char_server, int account_id)
+static struct online_login_data* login_add_online_user(int char_server, int account_id)
{
struct online_login_data* p;
p = idb_ensure(login->online_db, account_id, login->create_online_user);
@@ -93,7 +93,7 @@ struct online_login_data* login_add_online_user(int char_server, int account_id)
return p;
}
-void login_remove_online_user(int account_id)
+static void login_remove_online_user(int account_id)
{
struct online_login_data* p;
p = (struct online_login_data*)idb_get(login->online_db, account_id);
@@ -105,7 +105,8 @@ void login_remove_online_user(int account_id)
idb_remove(login->online_db, account_id);
}
-static int login_waiting_disconnect_timer(int tid, int64 tick, int id, intptr_t data) {
+static int login_waiting_disconnect_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct online_login_data* p = (struct online_login_data*)idb_get(login->online_db, id);
if( p != NULL && p->waiting_disconnect == tid && p->account_id == id )
{
@@ -150,7 +151,8 @@ static int login_online_data_cleanup_sub(union DBKey key, struct DBData *data, v
return 0;
}
-static int login_online_data_cleanup(int tid, int64 tick, int id, intptr_t data) {
+static int login_online_data_cleanup(int tid, int64 tick, int id, intptr_t data)
+{
login->online_db->foreach(login->online_db, login->online_data_cleanup_sub);
return 0;
}
@@ -159,7 +161,7 @@ static int login_online_data_cleanup(int tid, int64 tick, int id, intptr_t data)
//--------------------------------------------------------------------
// Packet send to all char-servers, except one (wos: without our self)
//--------------------------------------------------------------------
-int charif_sendallwos(int sfd, uint8* buf, size_t len)
+static int charif_sendallwos(int sfd, uint8 *buf, size_t len)
{
int i, c;
@@ -180,7 +182,7 @@ int charif_sendallwos(int sfd, uint8* buf, size_t len)
/// Initializes a server structure.
-void lchrif_server_init(int id)
+static void lchrif_server_init(int id)
{
Assert_retv(id >= 0 && id < MAX_SERVERS);
memset(&login->dbs->server[id], 0, sizeof(login->dbs->server[id]));
@@ -189,7 +191,7 @@ void lchrif_server_init(int id)
/// Destroys a server structure.
-void lchrif_server_destroy(int id)
+static void lchrif_server_destroy(int id)
{
Assert_retv(id >= 0 && id < MAX_SERVERS);
if (login->dbs->server[id].fd != -1)
@@ -201,7 +203,7 @@ void lchrif_server_destroy(int id)
/// Resets all the data related to a server.
-void lchrif_server_reset(int id)
+static void lchrif_server_reset(int id)
{
login->online_db->foreach(login->online_db, login->online_db_setoffline, id); //Set all chars from this char server to offline.
lchrif->server_destroy(id);
@@ -210,7 +212,7 @@ void lchrif_server_reset(int id)
/// Called when the connection to Char Server is disconnected.
-void lchrif_on_disconnect(int id)
+static void lchrif_on_disconnect(int id)
{
Assert_retv(id >= 0 && id < MAX_SERVERS);
ShowStatus("Char-server '%s' has disconnected.\n", login->dbs->server[id].name);
@@ -221,7 +223,8 @@ void lchrif_on_disconnect(int id)
//-----------------------------------------------------
// periodic ip address synchronization
//-----------------------------------------------------
-static int login_sync_ip_addresses(int tid, int64 tick, int id, intptr_t data) {
+static int login_sync_ip_addresses(int tid, int64 tick, int id, intptr_t data)
+{
uint8 buf[2];
ShowInfo("IP Sync in progress...\n");
WBUFW(buf,0) = 0x2735;
@@ -233,7 +236,7 @@ static int login_sync_ip_addresses(int tid, int64 tick, int id, intptr_t data) {
//-----------------------------------------------------
// encrypted/unencrypted password check (from eApp)
//-----------------------------------------------------
-bool login_check_encrypted(const char* str1, const char* str2, const char* passwd)
+static bool login_check_encrypted(const char *str1, const char *str2, const char *passwd)
{
char tmpstr[64+1], md5str[32+1];
@@ -246,7 +249,7 @@ bool login_check_encrypted(const char* str1, const char* str2, const char* passw
return (0==strcmp(passwd, md5str));
}
-bool login_check_password(const char* md5key, int passwdenc, const char* passwd, const char* refpass)
+static bool login_check_password(const char *md5key, int passwdenc, const char *passwd, const char *refpass)
{
nullpo_ret(passwd);
nullpo_ret(refpass);
@@ -269,12 +272,12 @@ bool login_check_password(const char* md5key, int passwdenc, const char* passwd,
* @retval 0 if it is a WAN IP.
* @return the appropriate LAN server address to send, if it is a LAN IP.
*/
-uint32 login_lan_subnet_check(uint32 ip)
+static uint32 login_lan_subnet_check(uint32 ip)
{
return sockt->lan_subnet_check(ip, NULL);
}
-void login_fromchar_auth_ack(int fd, int account_id, uint32 login_id1, uint32 login_id2, uint8 sex, int request_id, struct login_auth_node* node)
+static void login_fromchar_auth_ack(int fd, int account_id, uint32 login_id1, uint32 login_id2, uint8 sex, int request_id, struct login_auth_node *node)
{
WFIFOHEAD(fd,33);
WFIFOW(fd,0) = 0x2713;
@@ -303,7 +306,7 @@ void login_fromchar_auth_ack(int fd, int account_id, uint32 login_id1, uint32 lo
WFIFOSET(fd,33);
}
-void login_fromchar_parse_auth(int fd, int id, const char *const ip)
+static void login_fromchar_parse_auth(int fd, int id, const char *const ip)
{
struct login_auth_node* node;
@@ -339,7 +342,7 @@ void login_fromchar_parse_auth(int fd, int id, const char *const ip)
}
}
-void login_fromchar_parse_update_users(int fd, int id)
+static void login_fromchar_parse_update_users(int fd, int id)
{
int users = RFIFOL(fd,2);
RFIFOSKIP(fd,6);
@@ -353,7 +356,7 @@ void login_fromchar_parse_update_users(int fd, int id)
}
}
-void login_fromchar_parse_request_change_email(int fd, int id, const char *const ip)
+static void login_fromchar_parse_request_change_email(int fd, int id, const char *const ip)
{
struct mmo_account acc;
char email[40];
@@ -375,7 +378,7 @@ void login_fromchar_parse_request_change_email(int fd, int id, const char *const
}
}
-void login_fromchar_account(int fd, int account_id, struct mmo_account *acc)
+static void login_fromchar_account(int fd, int account_id, struct mmo_account *acc)
{
WFIFOHEAD(fd,72);
WFIFOW(fd,0) = 0x2717;
@@ -419,7 +422,7 @@ void login_fromchar_account(int fd, int account_id, struct mmo_account *acc)
WFIFOSET(fd,72);
}
-void login_fromchar_parse_account_data(int fd, int id, const char *const ip)
+static void login_fromchar_parse_account_data(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -436,20 +439,20 @@ void login_fromchar_parse_account_data(int fd, int id, const char *const ip)
}
}
-void login_fromchar_pong(int fd)
+static void login_fromchar_pong(int fd)
{
WFIFOHEAD(fd,2);
WFIFOW(fd,0) = 0x2718;
WFIFOSET(fd,2);
}
-void login_fromchar_parse_ping(int fd)
+static void login_fromchar_parse_ping(int fd)
{
RFIFOSKIP(fd,2);
login->fromchar_pong(fd);
}
-void login_fromchar_parse_change_email(int fd, int id, const char *const ip)
+static void login_fromchar_parse_change_email(int fd, int id, const char *const ip)
{
struct mmo_account acc;
char actual_email[40];
@@ -482,7 +485,7 @@ void login_fromchar_parse_change_email(int fd, int id, const char *const ip)
}
}
-void login_fromchar_account_update_other(int account_id, unsigned int state)
+static void login_fromchar_account_update_other(int account_id, unsigned int state)
{
uint8 buf[11];
WBUFW(buf,0) = 0x2731;
@@ -492,7 +495,7 @@ void login_fromchar_account_update_other(int account_id, unsigned int state)
charif_sendallwos(-1, buf, 11);
}
-void login_fromchar_parse_account_update(int fd, int id, const char *const ip)
+static void login_fromchar_parse_account_update(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -519,7 +522,7 @@ void login_fromchar_parse_account_update(int fd, int id, const char *const ip)
}
}
-void login_fromchar_ban(int account_id, time_t timestamp)
+static void login_fromchar_ban(int account_id, time_t timestamp)
{
uint8 buf[11];
WBUFW(buf,0) = 0x2731;
@@ -529,7 +532,7 @@ void login_fromchar_ban(int account_id, time_t timestamp)
charif_sendallwos(-1, buf, 11);
}
-void login_fromchar_parse_ban(int fd, int id, const char *const ip)
+static void login_fromchar_parse_ban(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -579,7 +582,7 @@ void login_fromchar_parse_ban(int fd, int id, const char *const ip)
}
}
-void login_fromchar_change_sex_other(int account_id, char sex)
+static void login_fromchar_change_sex_other(int account_id, char sex)
{
unsigned char buf[7];
WBUFW(buf,0) = 0x2723;
@@ -588,7 +591,7 @@ void login_fromchar_change_sex_other(int account_id, char sex)
charif_sendallwos(-1, buf, 7);
}
-void login_fromchar_parse_change_sex(int fd, int id, const char *const ip)
+static void login_fromchar_parse_change_sex(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -615,7 +618,7 @@ void login_fromchar_parse_change_sex(int fd, int id, const char *const ip)
}
}
-void login_fromchar_parse_account_reg2(int fd, int id, const char *const ip)
+static void login_fromchar_parse_account_reg2(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -629,7 +632,7 @@ void login_fromchar_parse_account_reg2(int fd, int id, const char *const ip)
RFIFOSKIP(fd,RFIFOW(fd,2));
}
-void login_fromchar_parse_unban(int fd, int id, const char *const ip)
+static void login_fromchar_parse_unban(int fd, int id, const char *const ip)
{
struct mmo_account acc;
@@ -649,19 +652,19 @@ void login_fromchar_parse_unban(int fd, int id, const char *const ip)
}
}
-void login_fromchar_parse_account_online(int fd, int id)
+static void login_fromchar_parse_account_online(int fd, int id)
{
login->add_online_user(id, RFIFOL(fd,2));
RFIFOSKIP(fd,6);
}
-void login_fromchar_parse_account_offline(int fd)
+static void login_fromchar_parse_account_offline(int fd)
{
login->remove_online_user(RFIFOL(fd,2));
RFIFOSKIP(fd,6);
}
-void login_fromchar_parse_online_accounts(int fd, int id)
+static void login_fromchar_parse_online_accounts(int fd, int id)
{
uint32 i, users;
login->online_db->foreach(login->online_db, login->online_db_setoffline, id); //Set all chars from this char-server offline first
@@ -678,7 +681,7 @@ void login_fromchar_parse_online_accounts(int fd, int id)
}
}
-void login_fromchar_parse_request_account_reg2(int fd)
+static void login_fromchar_parse_request_account_reg2(int fd)
{
int account_id = RFIFOL(fd,2);
int char_id = RFIFOL(fd,6);
@@ -687,21 +690,21 @@ void login_fromchar_parse_request_account_reg2(int fd)
account->mmo_send_accreg2(accounts,fd,account_id,char_id);
}
-void login_fromchar_parse_update_wan_ip(int fd, int id)
+static void login_fromchar_parse_update_wan_ip(int fd, int id)
{
login->dbs->server[id].ip = ntohl(RFIFOL(fd,2));
ShowInfo("Updated IP of Server #%d to %u.%u.%u.%u.\n",id, CONVIP(login->dbs->server[id].ip));
RFIFOSKIP(fd,6);
}
-void login_fromchar_parse_all_offline(int fd, int id)
+static void login_fromchar_parse_all_offline(int fd, int id)
{
ShowInfo("Setting accounts from char-server %d offline.\n", id);
login->online_db->foreach(login->online_db, login->online_db_setoffline, id);
RFIFOSKIP(fd,2);
}
-void login_fromchar_parse_change_pincode(int fd)
+static void login_fromchar_parse_change_pincode(int fd)
{
struct mmo_account acc;
@@ -713,7 +716,7 @@ void login_fromchar_parse_change_pincode(int fd)
RFIFOSKIP(fd,11);
}
-bool login_fromchar_parse_wrong_pincode(int fd)
+static bool login_fromchar_parse_wrong_pincode(int fd)
{
struct mmo_account acc;
@@ -733,7 +736,7 @@ bool login_fromchar_parse_wrong_pincode(int fd)
return false;
}
-void login_fromchar_accinfo(int fd, int account_id, int u_fd, int u_aid, int u_group, int map_fd, struct mmo_account *acc)
+static void login_fromchar_accinfo(int fd, int account_id, int u_fd, int u_aid, int u_group, int map_fd, struct mmo_account *acc)
{
if (acc)
{
@@ -773,7 +776,7 @@ void login_fromchar_accinfo(int fd, int account_id, int u_fd, int u_aid, int u_g
}
}
-void login_fromchar_parse_accinfo(int fd)
+static void login_fromchar_parse_accinfo(int fd)
{
struct mmo_account acc;
int account_id = RFIFOL(fd, 2), u_fd = RFIFOL(fd, 6), u_aid = RFIFOL(fd, 10), u_group = RFIFOL(fd, 14), map_fd = RFIFOL(fd, 18);
@@ -788,7 +791,7 @@ void login_fromchar_parse_accinfo(int fd)
//--------------------------------
// Packet parsing for char-servers
//--------------------------------
-int login_parse_fromchar(int fd)
+static int login_parse_fromchar(int fd)
{
int id;
uint32 ipl;
@@ -992,7 +995,8 @@ int login_parse_fromchar(int fd)
//-------------------------------------
// Make new account
//-------------------------------------
-int login_mmo_auth_new(const char* userid, const char* pass, const char sex, const char* last_ip) {
+static int login_mmo_auth_new(const char *userid, const char *pass, const char sex, const char *last_ip)
+{
static int num_regs = 0; // registration counter
static int64 new_reg_tick = 0;
int64 tick = timer->gettick();
@@ -1054,7 +1058,8 @@ int login_mmo_auth_new(const char* userid, const char* pass, const char sex, con
// Check/authentication of a connection
//-----------------------------------------------------
// TODO: Map result values to an enum (or at least document them)
-int login_mmo_auth(struct login_session_data* sd, bool isServer) {
+static int login_mmo_auth(struct login_session_data *sd, bool isServer)
+{
struct mmo_account acc;
size_t len;
@@ -1191,7 +1196,7 @@ int login_mmo_auth(struct login_session_data* sd, bool isServer) {
return -1; // account OK
}
-void login_kick(struct login_session_data* sd)
+static void login_kick(struct login_session_data *sd)
{
uint8 buf[6];
nullpo_retv(sd);
@@ -1200,7 +1205,7 @@ void login_kick(struct login_session_data* sd)
charif_sendallwos(-1, buf, 6);
}
-void login_auth_ok(struct login_session_data* sd)
+static void login_auth_ok(struct login_session_data *sd)
{
int fd = 0;
uint32 ip;
@@ -1285,7 +1290,7 @@ void login_auth_ok(struct login_session_data* sd)
}
}
-void login_auth_failed(struct login_session_data *sd, int result)
+static void login_auth_failed(struct login_session_data *sd, int result)
{
int fd;
uint32 ip;
@@ -1336,8 +1341,8 @@ void login_auth_failed(struct login_session_data *sd, int result)
lclif->auth_failed(fd, ban_time, result);
}
-bool login_client_login(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-bool login_client_login(int fd, struct login_session_data *sd)
+static bool login_client_login(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static bool login_client_login(int fd, struct login_session_data *sd)
{
int result;
char ip[16];
@@ -1360,8 +1365,8 @@ bool login_client_login(int fd, struct login_session_data *sd)
return false;
}
-bool login_client_login_otp(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
-bool login_client_login_otp(int fd, struct login_session_data *sd)
+static bool login_client_login_otp(int fd, struct login_session_data *sd) __attribute__((nonnull (2)));
+static bool login_client_login_otp(int fd, struct login_session_data *sd)
{
// send ok response with fake token
#ifdef PACKETVER_ZERO
@@ -1395,8 +1400,8 @@ bool login_client_login_otp(int fd, struct login_session_data *sd)
#endif // PACKETVER_ZERO
}
-void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status) __attribute__((nonnull (2)));
-void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status)
+static void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status) __attribute__((nonnull (2)));
+static void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status)
{
WFIFOHEAD(fd,3);
WFIFOW(fd,0) = 0x2711;
@@ -1405,8 +1410,8 @@ void login_char_server_connection_status(int fd, struct login_session_data* sd,
}
// CA_CHARSERVERCONNECT
-void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip, uint32 ipl) __attribute__((nonnull (2, 3)));
-void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip, uint32 ipl)
+static void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip, uint32 ipl) __attribute__((nonnull (2, 3)));
+static void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip, uint32 ipl)
{
char server_name[20];
char message[256];
@@ -1464,7 +1469,7 @@ void login_parse_request_connection(int fd, struct login_session_data* sd, const
}
}
-void login_config_set_defaults(void)
+static void login_config_set_defaults(void)
{
login->config->login_ip = INADDR_ANY;
login->config->login_port = 6900;
@@ -1503,7 +1508,7 @@ void login_config_set_defaults(void)
*
* @retval false in case of error.
*/
-bool login_config_read_inter(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_inter(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
const char *str = NULL;
@@ -1543,7 +1548,7 @@ bool login_config_read_inter(const char *filename, struct config_t *config, bool
*
* @retval false in case of error.
*/
-bool login_config_read_console(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_console(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -1576,7 +1581,7 @@ bool login_config_read_console(const char *filename, struct config_t *config, bo
*
* @retval false in case of error.
*/
-bool login_config_read_log(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_log(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -1604,7 +1609,7 @@ bool login_config_read_log(const char *filename, struct config_t *config, bool i
*
* @retval false in case of error.
*/
-bool login_config_read_account(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_account(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
AccountDB *db = login->dbs->account_engine->db;
@@ -1639,7 +1644,7 @@ bool login_config_read_account(const char *filename, struct config_t *config, bo
/**
* Frees login->config->client_hash_nodes
**/
-void login_clear_client_hash_nodes(void)
+static void login_clear_client_hash_nodes(void)
{
struct client_hash_node *node = login->config->client_hash_nodes;
@@ -1657,7 +1662,7 @@ void login_clear_client_hash_nodes(void)
*
* @param setting The setting to read from.
*/
-void login_config_set_md5hash(struct config_setting_t *setting)
+static void login_config_set_md5hash(struct config_setting_t *setting)
{
int i;
int count = libconfig->setting_length(setting);
@@ -1720,7 +1725,7 @@ void login_config_set_md5hash(struct config_setting_t *setting)
*
* @retval false in case of error.
*/
-bool login_config_read_permission_hash(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_permission_hash(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -1745,7 +1750,7 @@ bool login_config_read_permission_hash(const char *filename, struct config_t *co
/**
* Clears login->config->dnsbl_servers, freeing any allocated memory.
*/
-void login_clear_dnsbl_servers(void)
+static void login_clear_dnsbl_servers(void)
{
while (VECTOR_LENGTH(login->config->dnsbl_servers) > 0) {
aFree(&VECTOR_POP(login->config->dnsbl_servers));
@@ -1758,7 +1763,7 @@ void login_clear_dnsbl_servers(void)
*
* @param setting The configuration setting to read from.
*/
-void login_config_set_dnsbl_servers(struct config_setting_t *setting)
+static void login_config_set_dnsbl_servers(struct config_setting_t *setting)
{
int i;
int count = libconfig->setting_length(setting);
@@ -1790,7 +1795,7 @@ void login_config_set_dnsbl_servers(struct config_setting_t *setting)
*
* @retval false in case of error.
*/
-bool login_config_read_permission_blacklist(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_permission_blacklist(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -1821,7 +1826,7 @@ bool login_config_read_permission_blacklist(const char *filename, struct config_
*
* @retval false in case of error.
*/
-bool login_config_read_permission(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_permission(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
bool retval = true;
@@ -1858,7 +1863,7 @@ bool login_config_read_permission(const char *filename, struct config_t *config,
*
* @retval false in case of error.
*/
-bool login_config_read_users(const char *filename, struct config_t *config, bool imported)
+static bool login_config_read_users(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
bool retval = true;
@@ -1889,7 +1894,7 @@ bool login_config_read_users(const char *filename, struct config_t *config, bool
*
* @retval false in case of error.
**/
-bool login_config_read(const char *filename, bool imported)
+static bool login_config_read(const char *filename, bool imported)
{
struct config_t config;
const char *import = NULL;
@@ -1942,7 +1947,7 @@ bool login_config_read(const char *filename, bool imported)
*
* @retval users count or color id.
**/
-uint16 login_convert_users_to_colors(uint16 users)
+static uint16 login_convert_users_to_colors(uint16 users)
{
#if PACKETVER >= 20170726
if (!login->config->send_user_count_description)
@@ -2020,13 +2025,14 @@ void do_abort(void)
{
}
-void set_server_type(void) {
+void set_server_type(void)
+{
SERVER_TYPE = SERVER_TYPE_LOGIN;
}
/// Called when a terminate signal is received.
-void do_shutdown_login(void)
+static void do_shutdown_login(void)
{
if( core->runflag != LOGINSERVER_ST_SHUTDOWN )
{
@@ -2091,7 +2097,7 @@ void cmdline_args_init_local(void)
//------------------------------
// Login server initialization
//------------------------------
-int do_init(int argc, char** argv)
+int do_init(int argc, char **argv)
{
int i;
diff --git a/src/login/loginlog.c b/src/login/loginlog.c
index bf40d6ed8..19f269ab5 100644
--- a/src/login/loginlog.c
+++ b/src/login/loginlog.c
@@ -34,13 +34,13 @@
#include <stdlib.h> // exit
-struct loginlog_interface loginlog_s;
+static struct loginlog_interface loginlog_s;
struct loginlog_interface *loginlog;
-struct s_loginlog_dbs loginlogdbs;
+static struct s_loginlog_dbs loginlogdbs;
// Returns the number of failed login attempts by the ip in the last minutes.
-unsigned long loginlog_failedattempts(uint32 ip, unsigned int minutes)
+static unsigned long loginlog_failedattempts(uint32 ip, unsigned int minutes)
{
unsigned long failures = 0;
@@ -66,7 +66,7 @@ unsigned long loginlog_failedattempts(uint32 ip, unsigned int minutes)
* Records an event in the login log
*---------------------------------------------*/
// TODO: add an enum of rcode values
-void loginlog_log(uint32 ip, const char* username, int rcode, const char* message)
+static void loginlog_log(uint32 ip, const char *username, int rcode, const char *message)
{
char esc_username[NAME_LENGTH*2+1];
char esc_message[255*2+1];
@@ -88,7 +88,7 @@ void loginlog_log(uint32 ip, const char* username, int rcode, const char* messag
Sql_ShowDebug(loginlog->sql_handle);
}
-bool loginlog_init(void)
+static bool loginlog_init(void)
{
loginlog->sql_handle = SQL->Malloc();
@@ -107,7 +107,7 @@ bool loginlog_init(void)
return true;
}
-bool loginlog_final(void)
+static bool loginlog_final(void)
{
SQL->Free(loginlog->sql_handle);
loginlog->sql_handle = NULL;
@@ -124,7 +124,7 @@ bool loginlog_final(void)
*
* @retval false in case of error.
*/
-bool loginlog_config_read_names(const char *filename, struct config_t *config, bool imported)
+static bool loginlog_config_read_names(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -153,7 +153,7 @@ bool loginlog_config_read_names(const char *filename, struct config_t *config, b
*
* @retval false in case of error.
*/
-bool loginlog_config_read_log(const char *filename, struct config_t *config, bool imported)
+static bool loginlog_config_read_log(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -188,7 +188,7 @@ bool loginlog_config_read_log(const char *filename, struct config_t *config, boo
*
* @retval false in case of error.
**/
-bool loginlog_config_read(const char *filename, bool imported)
+static bool loginlog_config_read(const char *filename, bool imported)
{
struct config_t config;
const char *import = NULL;
diff --git a/src/map/HPMmap.c b/src/map/HPMmap.c
index 17b4fd813..e4640d09d 100644
--- a/src/map/HPMmap.c
+++ b/src/map/HPMmap.c
@@ -104,8 +104,8 @@ struct HPM_atcommand_list {
AtCommandFunc func;
};
-struct HPM_atcommand_list *atcommand_list = NULL;
-unsigned int atcommand_list_items = 0;
+static struct HPM_atcommand_list *atcommand_list = NULL;
+static unsigned int atcommand_list_items = 0;
/**
* HPM plugin data store validator sub-handler (map-server)
@@ -135,14 +135,16 @@ bool HPM_map_data_store_validate(enum HPluginDataTypes type, struct hplugin_data
return false;
}
-void HPM_map_plugin_load_sub(struct hplugin *plugin) {
+void HPM_map_plugin_load_sub(struct hplugin *plugin)
+{
plugin->hpi->sql_handle = map->mysql_handle;
plugin->hpi->addCommand = atcommand->create;
plugin->hpi->addScript = script->addScript;
plugin->hpi->addPCGPermission = HPM_map_add_group_permission;
}
-bool HPM_map_add_atcommand(char *name, AtCommandFunc func) {
+bool HPM_map_add_atcommand(char *name, AtCommandFunc func)
+{
unsigned int i = 0;
for(i = 0; i < atcommand_list_items; i++) {
@@ -162,7 +164,8 @@ bool HPM_map_add_atcommand(char *name, AtCommandFunc func) {
return true;
}
-void HPM_map_atcommands(void) {
+void HPM_map_atcommands(void)
+{
unsigned int i;
for(i = 0; i < atcommand_list_items; i++) {
@@ -173,7 +176,8 @@ void HPM_map_atcommands(void) {
/**
* Adds a new group permission to the HPM-provided list
**/
-void HPM_map_add_group_permission(unsigned int pluginID, char *name, unsigned int *mask) {
+void HPM_map_add_group_permission(unsigned int pluginID, char *name, unsigned int *mask)
+{
unsigned char index = pcg->HPMpermissions_count;
RECREATE(pcg->HPMpermissions, struct pc_groups_new_permission, ++pcg->HPMpermissions_count);
@@ -183,14 +187,16 @@ void HPM_map_add_group_permission(unsigned int pluginID, char *name, unsigned in
pcg->HPMpermissions[index].mask = mask;
}
-void HPM_map_do_init(void) {
+void HPM_map_do_init(void)
+{
HPM->load_sub = HPM_map_plugin_load_sub;
HPM->data_store_validate_sub = HPM_map_data_store_validate;
HPM->datacheck_init(HPMDataCheck, HPMDataCheckLen, HPMDataCheckVer);
HPM_shared_symbols(SERVER_TYPE_MAP);
}
-void HPM_map_do_final(void) {
+void HPM_map_do_final(void)
+{
if (atcommand_list)
aFree(atcommand_list);
/**
diff --git a/src/map/Makefile.in b/src/map/Makefile.in
index 1f2230888..7c04a4f37 100644
--- a/src/map/Makefile.in
+++ b/src/map/Makefile.in
@@ -52,9 +52,10 @@ MAP_H = atcommand.h battle.h battleground.h buyingstore.h channel.h chat.h \
instance.h intif.h irc-bot.h itemdb.h log.h mail.h map.h mapreg.h \
mercenary.h messages.h messages_main.h messages_re.h messages_zero.h \
mob.h npc.h packets.h packets_keys_main.h packets_keys_zero.h \
- packets_shuffle_main.h packets_shuffle_zero.h packets_struct.h party.h \
- path.h pc.h pc_groups.h pet.h quest.h rodex.h script.h searchstore.h \
- skill.h status.h storage.h trade.h unit.h vending.h
+ packets_shuffle_main.h packets_shuffle_re.h packets_shuffle_zero.h \
+ packets_struct.h party.h path.h pc.h pc_groups.h pet.h quest.h rodex.h \
+ script.h searchstore.h skill.h status.h storage.h trade.h unit.h \
+ vending.h
MAP_PH =
HAVE_MYSQL=@HAVE_MYSQL@
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index ae0c776c6..79bd92213 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -74,14 +74,15 @@
#include <stdlib.h>
#include <string.h>
-struct atcommand_interface atcommand_s;
+static struct atcommand_interface atcommand_s;
struct atcommand_interface *atcommand;
static char atcmd_output[CHAT_SIZE_MAX];
static char atcmd_player_name[NAME_LENGTH];
// @commands (script-based)
-struct atcmd_binding_data* get_atcommandbind_byname(const char* name) {
+static struct atcmd_binding_data *get_atcommandbind_byname(const char *name)
+{
int i = 0;
nullpo_retr(NULL, name);
@@ -93,14 +94,16 @@ struct atcmd_binding_data* get_atcommandbind_byname(const char* name) {
return ( i < atcommand->binding_count ) ? atcommand->binding[i] : NULL;
}
-const char* atcommand_msgsd(struct map_session_data *sd, int msg_number) {
+static const char *atcommand_msgsd(struct map_session_data *sd, int msg_number)
+{
Assert_retr("??", msg_number >= 0 && msg_number < MAX_MSG && atcommand->msg_table[0][msg_number] != NULL);
if (!sd || sd->lang_id >= atcommand->max_message_table || !atcommand->msg_table[sd->lang_id][msg_number])
return atcommand->msg_table[0][msg_number];
return atcommand->msg_table[sd->lang_id][msg_number];
}
-const char* atcommand_msgfd(int fd, int msg_number) {
+static const char *atcommand_msgfd(int fd, int msg_number)
+{
struct map_session_data *sd = sockt->session_is_valid(fd) ? sockt->session[fd]->session_data : NULL;
Assert_retr("??", msg_number >= 0 && msg_number < MAX_MSG && atcommand->msg_table[0][msg_number] != NULL);
if (!sd || sd->lang_id >= atcommand->max_message_table || !atcommand->msg_table[sd->lang_id][msg_number])
@@ -111,7 +114,8 @@ const char* atcommand_msgfd(int fd, int msg_number) {
//-----------------------------------------------------------
// Return the message string of the specified number by [Yor]
//-----------------------------------------------------------
-const char* atcommand_msg(int msg_number) {
+static const char *atcommand_msg(int msg_number)
+{
Assert_retr("??", msg_number >= 0 && msg_number < MAX_MSG);
if (atcommand->msg_table[map->default_lang_id][msg_number] != NULL && atcommand->msg_table[map->default_lang_id][msg_number][0] != '\0')
return atcommand->msg_table[map->default_lang_id][msg_number];
@@ -129,7 +133,8 @@ const char* atcommand_msg(int msg_number) {
* @param[in] allow_override whether to allow duplicate message IDs to override the original value.
* @return success state.
*/
-bool msg_config_read(const char *cfg_name, bool allow_override) {
+static bool msg_config_read(const char *cfg_name, bool allow_override)
+{
int msg_number;
char line[1024], w1[1024], w2[1024];
FILE *fp;
@@ -176,7 +181,8 @@ bool msg_config_read(const char *cfg_name, bool allow_override) {
/*==========================================
* Cleanup Message Data
*------------------------------------------*/
-void do_final_msg(void) {
+static void do_final_msg(void)
+{
int i, j;
for(i = 0; i < atcommand->max_message_table; i++) {
@@ -194,7 +200,8 @@ void do_final_msg(void) {
/**
* retrieves the help string associated with a given command.
*/
-static inline const char* atcommand_help_string(AtCommandInfo *info) {
+static inline const char *atcommand_help_string(AtCommandInfo *info)
+{
return info->help;
}
@@ -431,7 +438,8 @@ ACMD(send)
/*==========================================
* @rura, @warp, @mapmove
*------------------------------------------*/
-ACMD(mapmove) {
+ACMD(mapmove)
+{
char map_name[MAP_NAME_LENGTH_EXT];
unsigned short map_index;
short x = 0, y = 0;
@@ -486,7 +494,8 @@ ACMD(mapmove) {
/*==========================================
* Displays where a character is. Corrected version by Silent. [Skotlex]
*------------------------------------------*/
-ACMD(where) {
+ACMD(where)
+{
struct map_session_data* pl_sd;
memset(atcmd_player_name, '\0', sizeof atcmd_player_name);
@@ -514,7 +523,8 @@ ACMD(where) {
/*==========================================
*
*------------------------------------------*/
-ACMD(jumpto) {
+ACMD(jumpto)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -597,7 +607,8 @@ ACMD(jump)
* Display list of online characters with
* various info.
*------------------------------------------*/
-ACMD(who) {
+ACMD(who)
+{
const struct map_session_data *pl_sd = NULL;
struct s_mapiterator *iter = NULL;
char player_name[NAME_LENGTH] = "";
@@ -794,7 +805,8 @@ ACMD(save)
/*==========================================
*
*------------------------------------------*/
-ACMD(load) {
+ACMD(load)
+{
int16 m;
m = map->mapindex2mapid(sd->status.save_point.map);
@@ -932,7 +944,8 @@ ACMD(option)
/*==========================================
*
*------------------------------------------*/
-ACMD(hide) {
+ACMD(hide)
+{
if (pc_isinvisible(sd)) {
sd->sc.option &= ~OPTION_INVISIBLE;
if (sd->disguise != -1 )
@@ -1473,7 +1486,8 @@ ACMD(joblevelup)
/*==========================================
* @help
*------------------------------------------*/
-ACMD(help) {
+ACMD(help)
+{
const char *command_name = NULL;
char *default_command = "help";
AtCommandInfo *tinfo = NULL;
@@ -1541,7 +1555,7 @@ ACMD(help) {
* Arglist parameters:
* - (int) id: If 0, stop any attacks. Otherwise, the target block list id to stop attacking.
*/
-int atcommand_stopattack(struct block_list *bl,va_list ap)
+static int atcommand_stopattack(struct block_list *bl, va_list ap)
{
struct unit_data *ud = NULL;
int id = 0;
@@ -1560,7 +1574,7 @@ int atcommand_stopattack(struct block_list *bl,va_list ap)
/*==========================================
*
*------------------------------------------*/
-int atcommand_pvpoff_sub(struct block_list *bl,va_list ap)
+static int atcommand_pvpoff_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
nullpo_ret(bl);
@@ -1598,7 +1612,7 @@ ACMD(pvpoff)
/*==========================================
*
*------------------------------------------*/
-int atcommand_pvpon_sub(struct block_list *bl,va_list ap)
+static int atcommand_pvpon_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
nullpo_ret(bl);
@@ -1641,7 +1655,8 @@ ACMD(pvpon)
/*==========================================
*
*------------------------------------------*/
-ACMD(gvgoff) {
+ACMD(gvgoff)
+{
if (!map->list[sd->bl.m].flag.gvg) {
clif->message(fd, msg_fd(fd,162)); // GvG is already Off.
@@ -1870,7 +1885,8 @@ ACMD(hair_color)
/*==========================================
* @go [city_number or city_name] - Updated by Harbin
*------------------------------------------*/
-ACMD(go) {
+ACMD(go)
+{
int town = INT_MAX; // Initialized to INT_MAX instead of -1 to avoid conflicts with those who map [-3:-1] to @memo locations.
char map_name[MAP_NAME_LENGTH];
@@ -2100,7 +2116,7 @@ ACMD(monster)
/*==========================================
*
*------------------------------------------*/
-int atkillmonster_sub(struct block_list *bl, va_list ap)
+static int atkillmonster_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int flag = va_arg(ap, int);
@@ -2118,7 +2134,8 @@ int atkillmonster_sub(struct block_list *bl, va_list ap)
return 1;
}
-ACMD(killmonster) {
+ACMD(killmonster)
+{
int map_id, drop_flag;
char map_name[MAP_NAME_LENGTH_EXT];
@@ -2315,7 +2332,8 @@ ACMD(memo)
/*==========================================
*
*------------------------------------------*/
-ACMD(gat) {
+ACMD(gat)
+{
int y;
memset(atcmd_output, '\0', sizeof(atcmd_output));
@@ -2461,7 +2479,8 @@ ACMD(zeny)
/*==========================================
*
*------------------------------------------*/
-ACMD(param) {
+ACMD(param)
+{
int i, value = 0, new_value, max;
const char* param[] = { "str", "agi", "vit", "int", "dex", "luk" };
short* stats[6];
@@ -2521,7 +2540,8 @@ ACMD(param) {
/*==========================================
* Stat all by fritz (rewritten by [Yor])
*------------------------------------------*/
-ACMD(stat_all) {
+ACMD(stat_all)
+{
int index, count, value, max, new_value;
short* stats[6];
//we don't use direct initialization because it isn't part of the c standard.
@@ -2577,7 +2597,8 @@ ACMD(stat_all) {
/*==========================================
*
*------------------------------------------*/
-ACMD(guildlevelup) {
+ACMD(guildlevelup)
+{
int level = 0;
int16 added_level;
struct guild *guild_info;
@@ -2644,7 +2665,7 @@ ACMD(makeegg)
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,
- (short)pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
+ pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
100, 0, 1, pet->db[pet_id].jname);
} else {
clif->message(fd, msg_fd(fd,180)); // The monster/egg name/id doesn't exist.
@@ -2766,7 +2787,8 @@ ACMD(petrename)
/*==========================================
*
*------------------------------------------*/
-ACMD(recall) {
+ACMD(recall)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -3038,7 +3060,7 @@ ACMD(doommap)
/*==========================================
*
*------------------------------------------*/
-void atcommand_raise_sub(struct map_session_data* sd)
+static void atcommand_raise_sub(struct map_session_data *sd)
{
nullpo_retv(sd);
status->revive(&sd->bl, 100, 100);
@@ -3336,7 +3358,8 @@ ACMD(breakguild)
/*==========================================
*
*------------------------------------------*/
-ACMD(agitstart) {
+ACMD(agitstart)
+{
if (map->agit_flag == 1) {
clif->message(fd, msg_fd(fd,73)); // War of Emperium is currently in progress.
return false;
@@ -3352,7 +3375,8 @@ ACMD(agitstart) {
/*==========================================
*
*------------------------------------------*/
-ACMD(agitstart2) {
+ACMD(agitstart2)
+{
if (map->agit2_flag == 1) {
clif->message(fd, msg_fd(fd,404)); // "War of Emperium SE is currently in progress."
return false;
@@ -3368,7 +3392,8 @@ ACMD(agitstart2) {
/*==========================================
*
*------------------------------------------*/
-ACMD(agitend) {
+ACMD(agitend)
+{
if (map->agit_flag == 0) {
clif->message(fd, msg_fd(fd,75)); // War of Emperium is currently not in progress.
return false;
@@ -3384,7 +3409,8 @@ ACMD(agitend) {
/*==========================================
*
*------------------------------------------*/
-ACMD(agitend2) {
+ACMD(agitend2)
+{
if (map->agit2_flag == 0) {
clif->message(fd, msg_fd(fd,406)); // "War of Emperium SE is currently not in progress."
return false;
@@ -3400,7 +3426,8 @@ ACMD(agitend2) {
/*==========================================
* @mapexit - shuts down the map server
*------------------------------------------*/
-ACMD(mapexit) {
+ACMD(mapexit)
+{
map->do_shutdown();
return true;
}
@@ -3610,7 +3637,8 @@ ACMD(reloaditemdb)
/*==========================================
*
*------------------------------------------*/
-ACMD(reloadmobdb) {
+ACMD(reloadmobdb)
+{
mob->reload();
pet->read_db();
homun->reload();
@@ -3639,7 +3667,8 @@ ACMD(reloadskilldb)
/*==========================================
* @reloadatcommand - reloads conf/atcommand.conf conf/groups.conf
*------------------------------------------*/
-ACMD(reloadatcommand) {
+ACMD(reloadatcommand)
+{
struct config_t run_test;
if (!libconfig->load_file(&run_test, "conf/groups.conf")) {
@@ -3713,13 +3742,14 @@ ACMD(reloadbattleconf)
/*==========================================
* @reloadstatusdb - reloads job_db1.txt job_db2.txt job_db2-2.txt refine_db.txt size_fix.txt
*------------------------------------------*/
-ACMD(reloadstatusdb) {
+ACMD(reloadstatusdb)
+{
status->readdb();
clif->message(fd, msg_fd(fd,256));
return true;
}
/*==========================================
- * @reloadpcdb - reloads exp.txt skill_tree.txt attr_fix.txt statpoint.txt
+ * @reloadpcdb - reloads exp_group_db.conf skill_tree.txt attr_fix.txt statpoint.txt
*------------------------------------------*/
ACMD(reloadpcdb)
{
@@ -3731,7 +3761,8 @@ ACMD(reloadpcdb)
/*==========================================
* @reloadscript - reloads all scripts (npcs, warps, mob spawns, ...)
*------------------------------------------*/
-ACMD(reloadscript) {
+ACMD(reloadscript)
+{
struct s_mapiterator* iter;
struct map_session_data* pl_sd;
@@ -4104,7 +4135,8 @@ ACMD(mount_peco)
/*==========================================
*Spy Commands by Syrus22
*------------------------------------------*/
-ACMD(guildspy) {
+ACMD(guildspy)
+{
char guild_name[NAME_LENGTH];
struct guild *g;
@@ -4143,7 +4175,8 @@ ACMD(guildspy) {
/*==========================================
*
*------------------------------------------*/
-ACMD(partyspy) {
+ACMD(partyspy)
+{
char party_name[NAME_LENGTH];
struct party_data *p;
@@ -4212,7 +4245,8 @@ ACMD(repairall)
/*==========================================
* @nuke [Valaris]
*------------------------------------------*/
-ACMD(nuke) {
+ACMD(nuke)
+{
struct map_session_data *pl_sd;
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
@@ -4241,7 +4275,8 @@ ACMD(nuke) {
/*==========================================
* @tonpc
*------------------------------------------*/
-ACMD(tonpc) {
+ACMD(tonpc)
+{
char npcname[NAME_LENGTH+1];
struct npc_data *nd;
@@ -4367,7 +4402,8 @@ ACMD(unloadnpc)
/*==========================================
* time in txt for time command (by [Yor])
*------------------------------------------*/
-char* txt_time(int fd, unsigned int duration) {
+static char *txt_time(int fd, unsigned int duration)
+{
int days, hours, minutes, seconds;
static char temp1[CHAT_SIZE_MAX];
int tlen = 0;
@@ -4405,7 +4441,8 @@ char* txt_time(int fd, unsigned int duration) {
* @time/@date/@serverdate/@servertime: Display the date/time of the server (by [Yor]
* Calculation management of GM modification (@day/@night GM commands) is done
*------------------------------------------*/
-ACMD(servertime) {
+ACMD(servertime)
+{
time_t time_server; // variable for number of seconds (used with time() function)
struct tm *datetime; // variable for time in structure ->tm_mday, ->tm_sec, ...
char temp[CHAT_SIZE_MAX];
@@ -4460,7 +4497,7 @@ ACMD(servertime) {
//Added by Coltaro
//We're using this function here instead of using time_t so that it only counts player's jail time when he/she's online (and since the idea is to reduce the amount of minutes one by one in status->change_timer...).
//Well, using time_t could still work but for some reason that looks like more coding x_x
-void get_jail_time(int jailtime, int* year, int* month, int* day, int* hour, int* minute)
+static void get_jail_time(int jailtime, int *year, int *month, int *day, int *hour, int *minute)
{
const int factor_year = 518400; //12*30*24*60 = 518400
const int factor_month = 43200; //30*24*60 = 43200
@@ -4494,7 +4531,8 @@ void get_jail_time(int jailtime, int* year, int* month, int* day, int* hour, int
* @jail <char_name> by [Yor]
* Special warp! No check with nowarp and nowarpto flag
*------------------------------------------*/
-ACMD(jail) {
+ACMD(jail)
+{
struct map_session_data *pl_sd;
int x, y;
unsigned short m_index;
@@ -4547,7 +4585,8 @@ ACMD(jail) {
* @unjail/@discharge <char_name> by [Yor]
* Special warp! No check with nowarp and nowarpto flag
*------------------------------------------*/
-ACMD(unjail) {
+ACMD(unjail)
+{
struct map_session_data *pl_sd;
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
@@ -4581,7 +4620,8 @@ ACMD(unjail) {
return true;
}
-ACMD(jailfor) {
+ACMD(jailfor)
+{
struct map_session_data *pl_sd = NULL;
int year, month, day, hour, minute;
char * modif_p;
@@ -4865,7 +4905,8 @@ ACMD(undisguise)
/*==========================================
* UndisguiseAll
*------------------------------------------*/
-ACMD(undisguiseall) {
+ACMD(undisguiseall)
+{
struct map_session_data *pl_sd;
struct s_mapiterator* iter;
@@ -5043,7 +5084,8 @@ ACMD(killer)
* @killable by MouseJstr
* enable other people killing you
*------------------------------------------*/
-ACMD(killable) {
+ACMD(killable)
+{
sd->state.killable = !sd->state.killable;
if (sd->state.killable) {
@@ -5059,7 +5101,8 @@ ACMD(killable) {
* @skillon by MouseJstr
* turn skills on for the map
*------------------------------------------*/
-ACMD(skillon) {
+ACMD(skillon)
+{
map->list[sd->bl.m].flag.noskill = 0;
clif->message(fd, msg_fd(fd,244));
return true;
@@ -5069,7 +5112,8 @@ ACMD(skillon) {
* @skilloff by MouseJstr
* Turn skills off on the map
*------------------------------------------*/
-ACMD(skilloff) {
+ACMD(skilloff)
+{
map->list[sd->bl.m].flag.noskill = 1;
clif->message(fd, msg_fd(fd,243));
return true;
@@ -5079,7 +5123,8 @@ ACMD(skilloff) {
* @npcmove by MouseJstr
* move a npc
*------------------------------------------*/
-ACMD(npcmove) {
+ACMD(npcmove)
+{
int x = 0, y = 0, m;
struct npc_data *nd = 0;
@@ -5149,7 +5194,8 @@ ACMD(addwarp)
* @follow by [MouseJstr]
* Follow a player .. staying no more then 5 spaces away
*------------------------------------------*/
-ACMD(follow) {
+ACMD(follow)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -5374,7 +5420,8 @@ ACMD(skillid)
* @useskill by [MouseJstr]
* A way of using skills without having to find them in the skills menu
*------------------------------------------*/
-ACMD(useskill) {
+ACMD(useskill)
+{
struct map_session_data *pl_sd = NULL;
struct block_list *bl;
uint16 skill_id;
@@ -5420,7 +5467,8 @@ ACMD(useskill) {
* Debug command to locate new skill IDs. It sends the
* three possible skill-effect packets to the area.
*------------------------------------------*/
-ACMD(displayskill) {
+ACMD(displayskill)
+{
struct status_data *st;
int64 tick;
uint16 skill_id;
@@ -5491,7 +5539,8 @@ ACMD(skilltree)
}
// Hand a ring with partners name on it to this char
-void atcommand_getring(struct map_session_data* sd) {
+static void atcommand_getring(struct map_session_data *sd)
+{
int flag, item_id;
struct item item_tmp;
nullpo_retv(sd);
@@ -5514,7 +5563,8 @@ void atcommand_getring(struct map_session_data* sd) {
* @marry by [MouseJstr], fixed by Lupus
* Marry two players
*------------------------------------------*/
-ACMD(marry) {
+ACMD(marry)
+{
struct map_session_data *pl_sd = NULL;
char player_name[NAME_LENGTH] = "";
@@ -5633,7 +5683,8 @@ ACMD(autotrade)
* @changegm by durf (changed by Lupus)
* Changes Master of your Guild to a specified guild member
*------------------------------------------*/
-ACMD(changegm) {
+ACMD(changegm)
+{
struct guild *g;
struct map_session_data *pl_sd;
@@ -5665,7 +5716,8 @@ ACMD(changegm) {
* @changeleader by Skotlex
* Changes the leader of a party.
*------------------------------------------*/
-ACMD(changeleader) {
+ACMD(changeleader)
+{
if (!message[0]) {
clif->message(fd, msg_fd(fd,1185)); // Usage: @changeleader <party_member_name>
@@ -5854,7 +5906,8 @@ ACMD(autolootitem)
* Credits:
* chriser,Aleos
*------------------------------------------*/
-ACMD(autoloottype) {
+ACMD(autoloottype)
+{
uint8 action = 3; // 1=add, 2=remove, 3=help+list (default), 4=reset
enum item_types type = -1;
int ITEM_NONE = 0;
@@ -5967,8 +6020,8 @@ ACMD(snow)
/*==========================================
* Cherry tree snowstorm is made to fall. (Sakura)
*------------------------------------------*/
-ACMD(sakura) {
-
+ACMD(sakura)
+{
if (map->list[sd->bl.m].flag.sakura) {
map->list[sd->bl.m].flag.sakura=0;
clif->weather(sd->bl.m);
@@ -5984,8 +6037,8 @@ ACMD(sakura) {
/*==========================================
* Clouds appear.
*------------------------------------------*/
-ACMD(clouds) {
-
+ACMD(clouds)
+{
if (map->list[sd->bl.m].flag.clouds) {
map->list[sd->bl.m].flag.clouds=0;
clif->weather(sd->bl.m);
@@ -6002,8 +6055,8 @@ ACMD(clouds) {
/*==========================================
* Different type of clouds using effect 516
*------------------------------------------*/
-ACMD(clouds2) {
-
+ACMD(clouds2)
+{
if (map->list[sd->bl.m].flag.clouds2) {
map->list[sd->bl.m].flag.clouds2=0;
clif->weather(sd->bl.m);
@@ -6020,8 +6073,8 @@ ACMD(clouds2) {
/*==========================================
* Fog hangs over.
*------------------------------------------*/
-ACMD(fog) {
-
+ACMD(fog)
+{
if (map->list[sd->bl.m].flag.fog) {
map->list[sd->bl.m].flag.fog=0;
clif->weather(sd->bl.m);
@@ -6037,8 +6090,8 @@ ACMD(fog) {
/*==========================================
* Fallen leaves fall.
*------------------------------------------*/
-ACMD(leaves) {
-
+ACMD(leaves)
+{
if (map->list[sd->bl.m].flag.leaves) {
map->list[sd->bl.m].flag.leaves=0;
clif->weather(sd->bl.m);
@@ -6055,8 +6108,8 @@ ACMD(leaves) {
/*==========================================
* Fireworks appear.
*------------------------------------------*/
-ACMD(fireworks) {
-
+ACMD(fireworks)
+{
if (map->list[sd->bl.m].flag.fireworks) {
map->list[sd->bl.m].flag.fireworks=0;
clif->weather(sd->bl.m);
@@ -6164,20 +6217,23 @@ ACMD(mobsearch)
* @cleanmap - cleans items on the ground
* @cleanarea - cleans items on the ground within an specified area
*------------------------------------------*/
-int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) {
+static int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap)
+{
nullpo_ret(bl);
map->clearflooritem(bl);
return 0;
}
-ACMD(cleanmap) {
+ACMD(cleanmap)
+{
map->foreachinmap(atcommand->cleanfloor_sub, sd->bl.m, BL_ITEM);
clif->message(fd, msg_fd(fd,1221)); // All dropped items have been cleaned up.
return true;
}
-ACMD(cleanarea) {
+ACMD(cleanarea)
+{
int x0 = 0, y0 = 0, x1 = 0, y1 = 0, n = 0;
if (!*message || (n=sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1)) < 1) {
@@ -6228,7 +6284,7 @@ ACMD(npctalk)
snprintf(temp, sizeof(temp), "%s : %s", name, mes);
if(ifcolor) clif->messagecolor(&nd->bl,color,temp);
- else clif->disp_overhead(&nd->bl, temp);
+ else clif->disp_overhead(&nd->bl, temp, AREA_CHAT_WOC, NULL);
return true;
}
@@ -6288,7 +6344,7 @@ ACMD(pettalk)
}
snprintf(temp, sizeof temp ,"%s : %s", pd->pet.name, mes);
- clif->disp_overhead(&pd->bl, temp);
+ clif->disp_overhead(&pd->bl, temp, AREA_CHAT_WOC, NULL);
return true;
}
@@ -6341,7 +6397,8 @@ ACMD(users)
/*==========================================
*
*------------------------------------------*/
-ACMD(reset) {
+ACMD(reset)
+{
pc->resetstate(sd);
pc->resetskill(sd, PCRESETSKILL_RESYNC);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,208), sd->status.name); // '%s' skill and stats points reseted!
@@ -6424,7 +6481,8 @@ ACMD(adjgroup)
* @trade by [MouseJstr]
* Open a trade window with a remote player
*------------------------------------------*/
-ACMD(trade) {
+ACMD(trade)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -6467,7 +6525,8 @@ ACMD(setbattleflag)
/*==========================================
* @unmute [Valaris]
*------------------------------------------*/
-ACMD(unmute) {
+ACMD(unmute)
+{
struct map_session_data *pl_sd = NULL;
if (!*message) {
@@ -6518,7 +6577,8 @@ ACMD(uptime)
* @changesex <sex>
* => Changes one's sex. Argument sex can be 0 or 1, m or f, male or female.
*------------------------------------------*/
-ACMD(changesex) {
+ACMD(changesex)
+{
int i;
pc->resetskill(sd, PCRESETSKILL_CHSEX);
@@ -6532,7 +6592,8 @@ ACMD(changesex) {
/*================================================
* @mute - Mutes a player for a set amount of time
*------------------------------------------------*/
-ACMD(mute) {
+ACMD(mute)
+{
struct map_session_data *pl_sd = NULL;
int manner;
@@ -6610,7 +6671,8 @@ ACMD(identify)
return true;
}
-ACMD(misceffect) {
+ACMD(misceffect)
+{
int effect = 0;
if (!*message)
@@ -6851,7 +6913,8 @@ ACMD(showmobs)
/*==========================================
* homunculus level up [orn]
*------------------------------------------*/
-ACMD(homlevel) {
+ACMD(homlevel)
+{
struct homun_data *hd;
int level = 0;
enum homun_type htype;
@@ -6922,7 +6985,8 @@ ACMD(homevolution)
return true;
}
-ACMD(hommutate) {
+ACMD(hommutate)
+{
int homun_id;
enum homun_type m_class, m_id;
@@ -6951,7 +7015,8 @@ ACMD(hommutate) {
/*==========================================
* call choosen homunculus [orn]
*------------------------------------------*/
-ACMD(makehomun) {
+ACMD(makehomun)
+{
int homunid;
if (!*message) {
@@ -7063,7 +7128,7 @@ ACMD(homtalk)
}
snprintf(temp, sizeof temp ,"%s : %s", sd->hd->homunculus.name, mes);
- clif->disp_overhead(&sd->hd->bl, temp);
+ clif->disp_overhead(&sd->hd->bl, temp, AREA_CHAT_WOC, NULL);
return true;
}
@@ -7071,7 +7136,8 @@ ACMD(homtalk)
/*==========================================
* Show homunculus stats
*------------------------------------------*/
-ACMD(hominfo) {
+ACMD(hominfo)
+{
struct homun_data *hd;
struct status_data *st;
@@ -7331,7 +7397,8 @@ ACMD(whereis)
return true;
}
-ACMD(version) {
+ACMD(version)
+{
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1296), sysinfo->is64bit() ? 64 : 32, sysinfo->platform()); // Hercules %d-bit for %s
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts)
@@ -7343,8 +7410,9 @@ ACMD(version) {
/*==========================================
* @mutearea by MouseJstr
*------------------------------------------*/
-int atcommand_mutearea_sub(struct block_list *bl, va_list ap)
-{ // As it is being used [ACMD(mutearea)] there's no need to be a bool, but if there's need to reuse it, it's better to be this way
+static int atcommand_mutearea_sub(struct block_list *bl, va_list ap)
+{
+ // As it is being used [ACMD(mutearea)] there's no need to be a bool, but if there's need to reuse it, it's better to be this way
int time, id;
struct map_session_data *pl_sd = BL_CAST(BL_PC, bl);
@@ -7364,7 +7432,8 @@ int atcommand_mutearea_sub(struct block_list *bl, va_list ap)
return 1;
}
-ACMD(mutearea) {
+ACMD(mutearea)
+{
int time;
if (!*message) {
@@ -7423,7 +7492,7 @@ ACMD(me)
}
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,270), sd->status.name, tempmes); // *%s %s*
- clif->disp_overhead(&sd->bl, atcmd_output);
+ clif->disp_overhead(&sd->bl, atcmd_output, AREA_CHAT_WOC, NULL);
return true;
}
@@ -7579,7 +7648,8 @@ ACMD(fakename)
/*==========================================
* Ragnarok Resources
*------------------------------------------*/
-ACMD(mapflag) {
+ACMD(mapflag)
+{
#define CHECKFLAG( cmd ) do { if (map->list[ sd->bl.m ].flag.cmd ) clif->message(sd->fd,#cmd);} while(0)
#define SETFLAG( cmd ) do { \
if (strcmp( flag_name , #cmd ) == 0) { \
@@ -7767,7 +7837,8 @@ ACMD(invite)
return true;
}
-ACMD(duel) {
+ACMD(duel)
+{
unsigned int maxpl = 0;
if (sd->duel_group > 0) {
@@ -7820,7 +7891,8 @@ ACMD(duel) {
return true;
}
-ACMD(leave) {
+ACMD(leave)
+{
if (sd->duel_group <= 0) {
// "Duel: @leave without @duel."
clif->message(fd, msg_fd(fd,358));
@@ -7831,7 +7903,8 @@ ACMD(leave) {
return true;
}
-ACMD(accept) {
+ACMD(accept)
+{
if (!duel->checktime(sd)) {
char output[CHAT_SIZE_MAX];
// "Duel: You can take part in duel only one time per %d minutes."
@@ -7859,7 +7932,8 @@ ACMD(accept) {
return true;
}
-ACMD(reject) {
+ACMD(reject)
+{
if (sd->duel_invite <= 0) {
// "Duel: @reject without invitation."
clif->message(fd, msg_fd(fd,362));
@@ -7929,7 +8003,8 @@ ACMD(cash)
}
// @clone/@slaveclone/@evilclone <playername> [Valaris]
-ACMD(clone) {
+ACMD(clone)
+{
int x=0,y=0,flag=0,master=0,i=0;
struct map_session_data *pl_sd=NULL;
@@ -8047,7 +8122,8 @@ ACMD(auction)
/*==========================================
* Kill Steal Protection
*------------------------------------------*/
-ACMD(ksprotection) {
+ACMD(ksprotection)
+{
if( sd->state.noks ) {
sd->state.noks = KSPROTECT_NONE;
clif->message(fd, msg_fd(fd,1325)); // [ K.S Protection Inactive ]
@@ -8307,7 +8383,8 @@ ACMD(stats)
return true;
}
-ACMD(delitem) {
+ACMD(delitem)
+{
char item_name[100];
int nameid, amount = 0, total, idx;
struct item_data* id;
@@ -8368,7 +8445,8 @@ ACMD(delitem) {
/*==========================================
* Custom Fonts
*------------------------------------------*/
-ACMD(font) {
+ACMD(font)
+{
int font_id;
font_id = atoi(message);
@@ -8403,7 +8481,7 @@ ACMD(font) {
/*==========================================
* type: 1 = commands (@), 2 = charcommands (#)
*------------------------------------------*/
-void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommandType type)
+static void atcommand_commands_sub(struct map_session_data *sd, const int fd, AtCommandType type)
{
char line_buff[CHATBOX_SIZE];
char* cur = line_buff;
@@ -8528,7 +8606,8 @@ ACMD(cashmount)
return true;
}
-ACMD(accinfo) {
+ACMD(accinfo)
+{
char query[NAME_LENGTH];
if (!*message || strlen(message) > NAME_LENGTH ) {
@@ -8657,12 +8736,16 @@ ACMD(set)
aFree(data);
return true;
}
-ACMD(reloadquestdb) {
+
+ACMD(reloadquestdb)
+{
quest->reload();
clif->message(fd, msg_fd(fd,1377)); // Quest database has been reloaded.
return true;
}
-ACMD(addperm) {
+
+ACMD(addperm)
+{
int perm_size = pcg->permission_count;
bool add = (strcmpi(info->command, "addperm") == 0) ? true : false;
int i;
@@ -8718,6 +8801,7 @@ ACMD(addperm) {
return true;
}
+
ACMD(unloadnpcfile)
{
if (!*message) {
@@ -8733,7 +8817,9 @@ ACMD(unloadnpcfile)
}
return true;
}
-ACMD(cart) {
+
+ACMD(cart)
+{
#define MC_CART_MDFY(x,idx) do { \
sd->status.skill[idx].id = (x)?MC_PUSHCART:0; \
sd->status.skill[idx].lv = (x)?1:0; \
@@ -8775,6 +8861,7 @@ ACMD(cart) {
return true;
#undef MC_CART_MDFY
}
+
/* [Ind/Hercules] */
ACMD(join)
{
@@ -8818,8 +8905,10 @@ ACMD(join)
return true;
}
+
/* [Ind/Hercules] */
-void atcommand_channel_help(int fd, const char *command, bool can_create) {
+static void atcommand_channel_help(int fd, const char *command, bool can_create)
+{
nullpo_retv(command);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1404),command); // %s failed.
clif->message(fd, atcmd_output);
@@ -8869,8 +8958,10 @@ void atcommand_channel_help(int fd, const char *command, bool can_create) {
clif->message(fd, msg_fd(fd,1463));// - adds or removes <option name> with <option value> to <channel name> channel
}
}
+
/* [Ind/Hercules] */
-ACMD(channel) {
+ACMD(channel)
+{
struct channel_data *chan;
char subcmd[HCS_NAME_LENGTH], sub1[HCS_NAME_LENGTH], sub2[HCS_NAME_LENGTH], sub3[HCS_NAME_LENGTH];
unsigned char k = 0;
@@ -9289,8 +9380,10 @@ ACMD(channel) {
}
return true;
}
+
/* debug only, delete after */
-ACMD(fontcolor) {
+ACMD(fontcolor)
+{
unsigned char k;
if (!*message) {
@@ -9322,7 +9415,9 @@ ACMD(fontcolor) {
return true;
}
-ACMD(searchstore){
+
+ACMD(searchstore)
+{
int val = atoi(message);
switch (val) {
@@ -9426,10 +9521,12 @@ ACMD(skdebug)
clif->message(fd,atcmd_output);
return true;
}
+
/**
* cooldown-debug
**/
-ACMD(cddebug) {
+ACMD(cddebug)
+{
int i;
struct skill_cd* cd = NULL;
@@ -9474,7 +9571,8 @@ ACMD(cddebug) {
/**
*
**/
-ACMD(lang) {
+ACMD(lang)
+{
uint8 i;
if (!*message) {
@@ -9644,7 +9742,8 @@ ACMD(reloadclans)
**/
#define ACMD_DEF(x) { #x, atcommand_ ## x, NULL, NULL, NULL, true }
#define ACMD_DEF2(x2, x) { x2, atcommand_ ## x, NULL, NULL, NULL, true }
-void atcommand_basecommands(void) {
+static void atcommand_basecommands(void)
+{
/**
* Command reference list, place the base of your commands here
**/
@@ -9935,7 +10034,8 @@ void atcommand_basecommands(void) {
#undef ACMD_DEF
#undef ACMD_DEF2
-bool atcommand_add(char *name, AtCommandFunc func, bool replace) {
+static bool atcommand_add(char *name, AtCommandFunc func, bool replace)
+{
AtCommandInfo* cmd;
nullpo_retr(false, name);
@@ -9958,18 +10058,21 @@ bool atcommand_add(char *name, AtCommandFunc func, bool replace) {
/*==========================================
* Command lookup functions
*------------------------------------------*/
-AtCommandInfo* atcommand_exists(const char* name) {
+static AtCommandInfo *atcommand_exists(const char *name)
+{
return strdb_get(atcommand->db, name);
}
-AtCommandInfo* get_atcommandinfo_byname(const char *name) {
+static AtCommandInfo *get_atcommandinfo_byname(const char *name)
+{
AtCommandInfo *cmd;
if ((cmd = strdb_get(atcommand->db, name)))
return cmd;
return NULL;
}
-const char* atcommand_checkalias(const char *aliasname) {
+static const char *atcommand_checkalias(const char *aliasname)
+{
AliasInfo *alias_info = NULL;
if ((alias_info = (AliasInfo*)strdb_get(atcommand->alias_db, aliasname)) != NULL)
return alias_info->command->command;
@@ -9977,7 +10080,8 @@ const char* atcommand_checkalias(const char *aliasname) {
}
/// AtCommand suggestion
-void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bool is_atcmd_cmd) {
+static void atcommand_get_suggestions(struct map_session_data *sd, const char *name, bool is_atcmd_cmd)
+{
struct DBIterator *atcommand_iter, *alias_iter;
AtCommandInfo* command_info = NULL;
AliasInfo* alias_info = NULL;
@@ -10058,7 +10162,7 @@ void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bo
* @retval true if the message was recognized as atcommand.
* @retval false if the message should be considered a non-command message.
*/
-bool atcommand_exec(const int fd, struct map_session_data *sd, const char *message, bool player_invoked)
+static bool atcommand_exec(const int fd, struct map_session_data *sd, const char *message, bool player_invoked)
{
char params[100], command[100];
char output[CHAT_SIZE_MAX];
@@ -10230,7 +10334,8 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
/*==========================================
*
*------------------------------------------*/
-void atcommand_config_read(const char* config_filename) {
+static void atcommand_config_read(const char *config_filename)
+{
struct config_t atcommand_config;
struct config_setting_t *aliases = NULL, *help = NULL, *nolog = NULL;
const char *symbol = NULL;
@@ -10369,7 +10474,7 @@ static inline int atcommand_command_type2idx(AtCommandType type)
* Loads permissions for groups to use commands.
*
*/
-void atcommand_db_load_groups(GroupSettings **groups, struct config_setting_t **commands_, size_t sz)
+static void atcommand_db_load_groups(GroupSettings **groups, struct config_setting_t **commands_, size_t sz)
{
struct DBIterator *iter = db_iterator(atcommand->db);
AtCommandInfo *atcmd;
@@ -10429,7 +10534,8 @@ void atcommand_db_load_groups(GroupSettings **groups, struct config_setting_t **
return;
}
-bool atcommand_can_use(struct map_session_data *sd, const char *command) {
+static bool atcommand_can_use(struct map_session_data *sd, const char *command)
+{
AtCommandInfo *acmd_d;
struct atcmd_binding_data *bcmd_d;
@@ -10446,7 +10552,8 @@ bool atcommand_can_use(struct map_session_data *sd, const char *command) {
return false;
}
-bool atcommand_can_use2(struct map_session_data *sd, const char *command, AtCommandType type) {
+static bool atcommand_can_use2(struct map_session_data *sd, const char *command, AtCommandType type)
+{
AtCommandInfo *acmd_d;
struct atcmd_binding_data *bcmd_d;
@@ -10462,7 +10569,9 @@ bool atcommand_can_use2(struct map_session_data *sd, const char *command, AtComm
return false;
}
-bool atcommand_hp_add(char *name, AtCommandFunc func) {
+
+static bool atcommand_hp_add(char *name, AtCommandFunc func)
+{
/* if commands are added after group permissions are thrown in, they end up with no permissions */
/* so we restrict commands to be linked in during boot */
if( core->runflag == MAPSERVER_ST_RUNNING ) {
@@ -10476,7 +10585,7 @@ bool atcommand_hp_add(char *name, AtCommandFunc func) {
/**
* @see DBApply
*/
-int atcommand_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
+static int atcommand_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
{
AtCommandInfo *cmd = DB->data2ptr(data);
aFree(cmd->at_groups);
@@ -10486,7 +10595,8 @@ int atcommand_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
return 0;
}
-void atcommand_db_clear(void) {
+static void atcommand_db_clear(void)
+{
if( atcommand->db != NULL ) {
atcommand->db->destroy(atcommand->db, atcommand->cmd_db_clear_sub);
atcommand->db = NULL;
@@ -10497,7 +10607,8 @@ void atcommand_db_clear(void) {
}
}
-void atcommand_doload(void) {
+static void atcommand_doload(void)
+{
if( core->runflag >= MAPSERVER_ST_RUNNING )
atcommand->cmd_db_clear();
if( atcommand->db == NULL )
@@ -10508,12 +10619,14 @@ void atcommand_doload(void) {
atcommand->config_read(map->ATCOMMAND_CONF_FILENAME);
}
-void atcommand_expand_message_table(void) {
+static void atcommand_expand_message_table(void)
+{
RECREATE(atcommand->msg_table, char **, ++atcommand->max_message_table);
CREATE(atcommand->msg_table[atcommand->max_message_table - 1], char *, MAX_MSG);
}
-void do_init_atcommand(bool minimal) {
+static void do_init_atcommand(bool minimal)
+{
if (minimal)
return;
@@ -10524,11 +10637,13 @@ void do_init_atcommand(bool minimal) {
atcommand->doload();
}
-void do_final_atcommand(void) {
+static void do_final_atcommand(void)
+{
atcommand->cmd_db_clear();
}
-void atcommand_defaults(void) {
+void atcommand_defaults(void)
+{
atcommand = &atcommand_s;
atcommand->db = NULL;
diff --git a/src/map/battle.c b/src/map/battle.c
index 4d320704a..e571977fe 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -59,7 +59,7 @@
#include <string.h>
struct Battle_Config battle_config;
-struct battle_interface battle_s;
+static struct battle_interface battle_s;
struct battle_interface *battle;
/**
@@ -68,7 +68,7 @@ struct battle_interface *battle;
* @param bl The bl to check.
* @return The current/last skill ID.
*/
-int battle_getcurrentskill(struct block_list *bl)
+static int battle_getcurrentskill(struct block_list *bl)
{
const struct unit_data *ud;
@@ -91,7 +91,8 @@ int battle_getcurrentskill(struct block_list *bl)
/*==========================================
* Get random targeting enemy
*------------------------------------------*/
-int battle_gettargeted_sub(struct block_list *bl, va_list ap) {
+static int battle_gettargeted_sub(struct block_list *bl, va_list ap)
+{
struct block_list **bl_list;
struct unit_data *ud;
int target_id;
@@ -119,7 +120,8 @@ int battle_gettargeted_sub(struct block_list *bl, va_list ap) {
return 0;
}
-struct block_list* battle_gettargeted(struct block_list *target) {
+static struct block_list *battle_gettargeted(struct block_list *target)
+{
struct block_list *bl_list[24];
int c = 0;
nullpo_retr(NULL, target);
@@ -134,7 +136,8 @@ struct block_list* battle_gettargeted(struct block_list *target) {
}
//Returns the id of the current targeted character of the passed bl. [Skotlex]
-int battle_gettarget(struct block_list* bl) {
+static int battle_gettarget(struct block_list *bl)
+{
nullpo_ret(bl);
switch (bl->type) {
@@ -149,7 +152,8 @@ int battle_gettarget(struct block_list* bl) {
return 0;
}
-int battle_getenemy_sub(struct block_list *bl, va_list ap) {
+static int battle_getenemy_sub(struct block_list *bl, va_list ap)
+{
struct block_list **bl_list;
struct block_list *target;
int *c;
@@ -177,7 +181,8 @@ int battle_getenemy_sub(struct block_list *bl, va_list ap) {
}
// Picks a random enemy of the given type (BL_PC, BL_CHAR, etc) within the range given. [Skotlex]
-struct block_list* battle_getenemy(struct block_list *target, int type, int range) {
+static struct block_list *battle_getenemy(struct block_list *target, int type, int range)
+{
struct block_list *bl_list[24];
int c = 0;
@@ -193,7 +198,9 @@ struct block_list* battle_getenemy(struct block_list *target, int type, int rang
return bl_list[rnd()%c];
}
-int battle_getenemyarea_sub(struct block_list *bl, va_list ap) {
+
+static int battle_getenemyarea_sub(struct block_list *bl, va_list ap)
+{
struct block_list **bl_list, *src;
int *c, ignore_id;
@@ -223,7 +230,8 @@ int battle_getenemyarea_sub(struct block_list *bl, va_list ap) {
}
// Pick a random enemy
-struct block_list* battle_getenemyarea(struct block_list *src, int x, int y, int range, int type, int ignore_id) {
+static struct block_list *battle_getenemyarea(struct block_list *src, int x, int y, int range, int type, int ignore_id)
+{
struct block_list *bl_list[24];
int c = 0;
@@ -239,7 +247,8 @@ struct block_list* battle_getenemyarea(struct block_list *src, int x, int y, int
return bl_list[rnd()%c];
}
-int battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
+static int battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data)
+{
struct delay_damage *dat = (struct delay_damage *)data;
if ( dat ) {
@@ -280,7 +289,8 @@ int battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct block_list *target, int attack_type, uint16 skill_id, uint16 skill_lv, int64 damage, enum damage_lv dmg_lv, int ddelay, bool additional_effects) {
+static int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct block_list *target, int attack_type, uint16 skill_id, uint16 skill_lv, int64 damage, enum damage_lv dmg_lv, int ddelay, bool additional_effects)
+{
struct delay_damage *dat;
struct status_change *sc;
struct block_list *d_tbl = NULL;
@@ -328,7 +338,8 @@ int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct
return 0;
}
-int battle_attr_ratio(int atk_elem,int def_type, int def_lv)
+
+static int battle_attr_ratio(int atk_elem, int def_type, int def_lv)
{
if (atk_elem < ELE_NEUTRAL || atk_elem >= ELE_MAX)
return 100;
@@ -344,7 +355,7 @@ int battle_attr_ratio(int atk_elem,int def_type, int def_lv)
* Added passing of the chars so that the status changes can affect it. [Skotlex]
* Note: Passing src/target == NULL is perfectly valid, it skips SC_ checks.
*------------------------------------------*/
-int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 damage,int atk_elem,int def_type, int def_lv)
+static int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 damage, int atk_elem, int def_type, int def_lv)
{
struct status_change *sc=NULL, *tsc=NULL;
int ratio;
@@ -438,8 +449,10 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d
return damage + (damage * (ratio - 100) / 100);
}
+// [malufett]
//FIXME: Missing documentation for flag, flag2
-int64 battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, struct weapon_atk *watk, int nk, bool n_ele, short s_ele, short s_ele_, int size, int type, int flag, int flag2){ // [malufett]
+static int64 battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, struct weapon_atk *watk, int nk, bool n_ele, short s_ele, short s_ele_, int size, int type, int flag, int flag2)
+{
#ifdef RENEWAL
int64 damage, eatk = 0;
struct status_change *sc;
@@ -511,6 +524,7 @@ int64 battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, u
return 0;
#endif
}
+
/*==========================================
* Calculates the standard damage of a normal attack assuming it hits,
* it calculates nothing extra fancy, is needed for magnum breaks WATK_ELEMENT bonus. [Skotlex]
@@ -525,7 +539,8 @@ int64 battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, u
*/
/* 'battle_calc_base_damage' is used on renewal, 'battle_calc_base_damage2' otherwise. */
// FIXME: Missing documentation for flag2
-int64 battle_calc_base_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int nk, bool n_ele, short s_ele, short s_ele_, int type, int flag, int flag2) {
+static int64 battle_calc_base_damage(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int nk, bool n_ele, short s_ele, short s_ele_, int type, int flag, int flag2)
+{
int64 damage;
struct status_data *st = status->get_status_data(src);
struct status_change *sc = status->get_sc(src);
@@ -562,7 +577,9 @@ int64 battle_calc_base_damage(struct block_list *src, struct block_list *bl, uin
return damage;
}
-int64 battle_calc_base_damage2(struct status_data *st, struct weapon_atk *wa, struct status_change *sc, unsigned short t_size, struct map_session_data *sd, int flag) {
+
+static int64 battle_calc_base_damage2(struct status_data *st, struct weapon_atk *wa, struct status_change *sc, unsigned short t_size, struct map_session_data *sd, int flag)
+{
unsigned int atkmin=0, atkmax=0;
short type = 0;
int64 damage = 0;
@@ -643,7 +660,8 @@ int64 battle_calc_base_damage2(struct status_data *st, struct weapon_atk *wa, st
return damage;
}
-int64 battle_calc_sizefix(struct map_session_data *sd, int64 damage, int type, int size, bool ignore){
+static int64 battle_calc_sizefix(struct map_session_data *sd, int64 damage, int type, int size, bool ignore)
+{
//SizeFix only for players
nullpo_retr(damage, sd);
if (!(sd->special_state.no_sizefix || (ignore)))
@@ -655,7 +673,8 @@ int64 battle_calc_sizefix(struct map_session_data *sd, int64 damage, int type, i
* Passive skill damages increases
*------------------------------------------*/
// FIXME: type is undocumented
-int64 battle_addmastery(struct map_session_data *sd,struct block_list *target,int64 dmg,int type) {
+static int64 battle_addmastery(struct map_session_data *sd, struct block_list *target, int64 dmg, int type)
+{
int64 damage;
struct status_data *st = status->get_status_data(target);
int weapon, skill_lv;
@@ -767,7 +786,8 @@ int64 battle_addmastery(struct map_session_data *sd,struct block_list *target,in
/*==========================================
* Calculates ATK masteries.
*------------------------------------------*/
-int64 battle_calc_masteryfix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int div, bool left, bool weapon) {
+static int64 battle_calc_masteryfix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int div, bool left, bool weapon)
+{
int skill2_lv, i;
struct status_change *sc;
struct map_session_data *sd;
@@ -901,14 +921,16 @@ int64 battle_calc_masteryfix(struct block_list *src, struct block_list *target,
return damage;
}
-void battle_calc_masteryfix_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int64 *damage, int *div, bool *left, bool *weapon) {
+static void battle_calc_masteryfix_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int64 *damage, int *div, bool *left, bool *weapon)
+{
}
/*==========================================
* Elemental attribute fix.
*------------------------------------------*/
// FIXME: flag is undocumented
-int64 battle_calc_elefix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int nk, int n_ele, int s_ele, int s_ele_, bool left, int flag){
+static int64 battle_calc_elefix(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int nk, int n_ele, int s_ele, int s_ele_, bool left, int flag)
+{
struct status_data *tstatus;
nullpo_ret(src);
@@ -953,7 +975,8 @@ int64 battle_calc_elefix(struct block_list *src, struct block_list *target, uint
#endif
return damage;
}
-int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64 damage, int s_ele, int nk, int flag) {
+static int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64 damage, int s_ele, int nk, int flag)
+{
#ifdef RENEWAL
struct map_session_data *tsd;
struct status_data *sstatus;
@@ -984,6 +1007,7 @@ int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64
#endif
return damage;
}
+
/*==========================================
* Calculates card bonuses damage adjustments.
* cflag(cardfix flag):
@@ -991,7 +1015,8 @@ int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64
* &2 - atker side cardfix(BF_WEAPON) otherwise target side(BF_WEAPON).
*------------------------------------------*/
// FIXME: wflag is undocumented
-int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int64 damage, int cflag, int wflag){
+static int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int64 damage, int cflag, int wflag)
+{
struct map_session_data *sd, *tsd;
int cardfix = 1000;
short t_class, s_class, s_race2, t_race2;
@@ -1280,7 +1305,8 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
* &4 - tdef(Total defense reduction)
*------------------------------------------*/
// TODO: Add an enum for flag
-int64 battle_calc_defense(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int flag, int pdef){
+static int64 battle_calc_defense(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int flag, int pdef)
+{
struct status_data *sstatus, *tstatus;
struct map_session_data *sd, *tsd;
struct status_change *sc, *tsc;
@@ -1468,7 +1494,8 @@ int64 battle_calc_defense(int attack_type, struct block_list *src, struct block_
}
// Minstrel/Wanderer number check for chorus skills.
-int battle_calc_chorusbonus(struct map_session_data *sd) {
+static int battle_calc_chorusbonus(struct map_session_data *sd)
+{
int members = 0;
if (!sd || !sd->status.party_id)
@@ -1484,7 +1511,8 @@ int battle_calc_chorusbonus(struct map_session_data *sd) {
}
// FIXME: flag is undocumented
-int battle_calc_skillratio(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int skillratio, int flag){
+static int battle_calc_skillratio(int attack_type, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int skillratio, int flag)
+{
int i;
struct status_change *sc, *tsc;
struct map_session_data *sd, *tsd;
@@ -2706,10 +2734,12 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
return skillratio;
}
-void battle_calc_skillratio_magic_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag) {
+static void battle_calc_skillratio_magic_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag)
+{
}
-void battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag) {
+static void battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *skillratio, int *flag)
+{
}
/*==========================================
@@ -2717,7 +2747,8 @@ void battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list *
* ATK may be MISS, BLOCKED FAIL, reduce, increase, end status...
* After this we apply bg/gvg reduction
*------------------------------------------*/
-int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int64 damage,uint16 skill_id,uint16 skill_lv) {
+static int64 battle_calc_damage(struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv)
+{
struct map_session_data *s_sd, *t_sd;
struct status_change *s_sc, *sc;
struct status_change_entry *sce;
@@ -3327,7 +3358,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
return damage;
}
-int64 battle_calc_pc_damage(struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv)
+static int64 battle_calc_pc_damage(struct block_list *src, struct block_list *bl, struct Damage *d, int64 damage, uint16 skill_id, uint16 skill_lv)
{
int flag = d->flag;
@@ -3362,7 +3393,8 @@ int64 battle_calc_pc_damage(struct block_list *src, struct block_list *bl, struc
* Calculates BG related damage adjustments.
*------------------------------------------*/
// FIXME: flag is undocumented
-int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag) {
+static int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag)
+{
if (!damage)
return 0;
@@ -3382,7 +3414,8 @@ int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64
* Calculates GVG related damage adjustments.
*------------------------------------------*/
// FIXME: flag is undocumented
-int64 battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int64 damage,int div_,uint16 skill_id,uint16 skill_lv,int flag) {
+static int64 battle_calc_gvg_damage(struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag)
+{
struct mob_data* md = BL_CAST(BL_MOB, bl);
int class_ = status->get_class(bl);
@@ -3443,7 +3476,8 @@ int64 battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int64
/*==========================================
* HP/SP drain calculation
*------------------------------------------*/
-int battle_calc_drain(int64 damage, int rate, int per) {
+static int battle_calc_drain(int64 damage, int rate, int per)
+{
int64 diff = 0;
if (per && rnd()%1000 < rate) {
@@ -3461,7 +3495,7 @@ int battle_calc_drain(int64 damage, int rate, int per) {
/*==========================================
* Consumes ammo for the given skill.
*------------------------------------------*/
-void battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv)
+static void battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv)
{
int qty=1;
@@ -3481,7 +3515,8 @@ void battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv)
}
//Skill Range Criteria
-int battle_range_type(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv) {
+static int battle_range_type(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv)
+{
nullpo_retr(BF_SHORT, src);
nullpo_retr(BF_SHORT, target);
@@ -3505,7 +3540,9 @@ int battle_range_type(struct block_list *src, struct block_list *target, uint16
return BF_SHORT;
return BF_LONG;
}
-int battle_adjust_skill_damage(int m, unsigned short skill_id) {
+
+static int battle_adjust_skill_damage(int m, unsigned short skill_id)
+{
if( map->list[m].skill_count ) {
int i;
ARR_FIND(0, map->list[m].skill_count, i, map->list[m].skills[i]->skill_id == skill_id );
@@ -3518,7 +3555,8 @@ int battle_adjust_skill_damage(int m, unsigned short skill_id) {
return 0;
}
-int battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id) {
+static int battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id)
+{
int i;
nullpo_ret(sd);
if (!sd->skillblown[0].id)
@@ -3530,13 +3568,15 @@ int battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id) {
}
return 0;
}
+
//For quick div adjustment.
#define damage_div_fix(dmg, div) do { if ((div) > 1) (dmg)*=(div); else if ((div) < 0) (div)*=-1; } while(0)
/*==========================================
* battle_calc_magic_attack [DracoRPG]
*------------------------------------------*/
// FIXME: mflag is undocumented
-struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv,int mflag) {
+static struct Damage battle_calc_magic_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int mflag)
+{
int nk;
short s_ele = 0;
struct map_session_data *sd = NULL;
@@ -3873,7 +3913,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
* Calculate Misc damage for skill_id
*------------------------------------------*/
// FIXME: mflag is undocumented
-struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv,int mflag) {
+static struct Damage battle_calc_misc_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int mflag)
+{
int temp;
short i, nk;
short s_ele;
@@ -4302,14 +4343,15 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
return md;
}
-void battle_calc_misc_attack_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *mflag, struct Damage *md) {
+static void battle_calc_misc_attack_unknown(struct block_list *src, struct block_list *target, uint16 *skill_id, uint16 *skill_lv, int *mflag, struct Damage *md)
+{
}
/*==========================================
* battle_calc_weapon_attack (by Skotlex)
*------------------------------------------*/
// FIXME: wflag is undocumented
-struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv,int wflag)
+static struct Damage battle_calc_weapon_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int wflag)
{
short temp=0;
short s_ele, s_ele_;
@@ -5695,7 +5737,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
/*==========================================
* Battle main entry, from skill->attack
*------------------------------------------*/
-struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,uint16 skill_id,uint16 skill_lv,int count)
+static struct Damage battle_calc_attack(int attack_type, struct block_list *bl, struct block_list *target, uint16 skill_id, uint16 skill_lv, int count)
{
struct Damage d;
struct map_session_data *sd=BL_CAST(BL_PC,bl);
@@ -5757,7 +5799,8 @@ struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct bl
}
//Performs reflect damage (magic (maya) is performed over skill.c).
-void battle_reflect_damage(struct block_list *target, struct block_list *src, struct Damage *wd,uint16 skill_id) {
+static void battle_reflect_damage(struct block_list *target, struct block_list *src, struct Damage *wd, uint16 skill_id)
+{
int64 damage, rdamage = 0, trdamage = 0;
struct map_session_data *sd, *tsd;
struct status_change *sc;
@@ -5965,7 +6008,7 @@ void battle_reflect_damage(struct block_list *target, struct block_list *src, st
#undef NORMALIZE_RDAMAGE
}
-void battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss)
+static void battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss)
{
struct weapon_data *wd;
int type, thp = 0, tsp = 0, rhp = 0, rsp = 0, hp, sp, i;
@@ -6023,8 +6066,10 @@ void battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rda
if (rhp || rsp)
status_zap(tbl, rhp, rsp);
}
+
// Deals the same damage to targets in area. [pakpil]
-int battle_damage_area(struct block_list *bl, va_list ap) {
+static int battle_damage_area(struct block_list *bl, va_list ap)
+{
int64 tick;
int amotion, dmotion, damage;
struct block_list *src;
@@ -6058,12 +6103,12 @@ int battle_damage_area(struct block_list *bl, va_list ap) {
return 0;
}
-bool battle_check_arrows(struct map_session_data *sd)
+static bool battle_check_arrows(struct map_session_data *sd)
{
int index = sd->equip_index[EQI_AMMO];
if (index < 0) {
if (sd->weapontype1 > W_KATAR && sd->weapontype1 < W_HUUMA)
- clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0);
+ clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0, 0);
else
clif->arrow_fail(sd, 0);
return false;
@@ -6082,13 +6127,13 @@ bool battle_check_arrows(struct map_session_data *sd)
case W_GATLING:
case W_SHOTGUN:
if (sd->inventory_data[index]->subtype != A_BULLET) {
- clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0);
+ clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0, 0);
return false;
}
break;
case W_GRENADE:
if (sd->inventory_data[index]->subtype != A_GRENADE) {
- clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0);
+ clif->skill_fail(sd, 0, USESKILL_FAIL_NEED_MORE_BULLET, 0, 0);
return false;
}
break;
@@ -6101,7 +6146,8 @@ bool battle_check_arrows(struct map_session_data *sd)
* Do a basic physical attack (call trough unit_attack_timer)
*------------------------------------------*/
// FIXME: flag is undocumented
-enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* target, int64 tick, int flag) {
+static enum damage_lv battle_weapon_attack(struct block_list *src, struct block_list *target, int64 tick, int flag)
+{
struct map_session_data *sd = NULL, *tsd = NULL;
struct status_data *sstatus, *tstatus;
struct status_change *sc, *tsc;
@@ -6355,7 +6401,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
}
if( type != CAST_GROUND ) {
- clif->skill_fail(sd,r_skill,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, r_skill, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return wd.dmg_lv;
}
@@ -6411,7 +6457,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
#undef GET_NORMAL_ATTACK
#undef GET_NORMAL_ATTACK2
-bool battle_check_undead(int race,int element)
+static bool battle_check_undead(int race, int element)
{
if(battle_config.undead_detect_type == 0) {
if(element == ELE_UNDEAD)
@@ -6429,7 +6475,7 @@ bool battle_check_undead(int race,int element)
}
//Returns the upmost level master starting with the given object
-struct block_list *battle_get_master(struct block_list *src)
+static struct block_list *battle_get_master(struct block_list *src)
{
struct block_list *prev = NULL; //Used for infinite loop check (master of yourself?)
nullpo_retr(NULL, src);
@@ -6493,7 +6539,7 @@ struct block_list *battle_get_master(struct block_list *src)
* -1: flag fails
* 0: Invalid target (non-targetable ever)
*------------------------------------------*/
-int battle_check_target( struct block_list *src, struct block_list *target,int flag)
+static int battle_check_target(struct block_list *src, struct block_list *target, int flag)
{
int16 m; //map
int state = 0; //Initial state none
@@ -6862,11 +6908,12 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
return (flag&state)?1:-1;
}
+
/*==========================================
* Check if can attack from this range
* Basic check then calling path->search for obstacle etc..
*------------------------------------------*/
-bool battle_check_range(struct block_list *src, struct block_list *bl, int range)
+static bool battle_check_range(struct block_list *src, struct block_list *bl, int range)
{
int d;
nullpo_retr(false, src);
@@ -7325,7 +7372,7 @@ static const struct battle_data {
{ "features/feature_attendance_endtime",&battle_config.feature_attendance_endtime, 1, 0, 99999999, },
};
-bool battle_set_value_sub(int index, int value)
+static bool battle_set_value_sub(int index, int value)
{
Assert_retr(false, index >= 0);
if (value < battle_data[index].min || value > battle_data[index].max) {
@@ -7337,7 +7384,7 @@ bool battle_set_value_sub(int index, int value)
return true;
}
-bool battle_set_value(const char *param, const char *value)
+static bool battle_set_value(const char *param, const char *value)
{
int val;
int i;
@@ -7357,7 +7404,7 @@ bool battle_set_value(const char *param, const char *value)
return battle->config_set_value_sub(i, val);
}
-bool battle_get_value(const char *w1, int *value)
+static bool battle_get_value(const char *w1, int *value)
{
int i;
@@ -7376,13 +7423,15 @@ bool battle_get_value(const char *w1, int *value)
return false;
}
-void battle_set_defaults(void) {
+static void battle_set_defaults(void)
+{
int i;
for (i = 0; i < ARRAYLENGTH(battle_data); i++)
*battle_data[i].val = battle_data[i].defval;
}
-void battle_adjust_conf(void) {
+static void battle_adjust_conf(void)
+{
battle_config.monster_max_aspd = 2000 - battle_config.monster_max_aspd*10;
battle_config.max_aspd = 2000 - battle_config.max_aspd*10;
battle_config.max_third_aspd = 2000 - battle_config.max_third_aspd*10;
@@ -7459,7 +7508,7 @@ void battle_adjust_conf(void) {
* @param imported Whether the current config is imported from another file.
* @retval false in case of error.
*/
-bool battle_config_read(const char *filename, bool imported)
+static bool battle_config_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
@@ -7526,7 +7575,8 @@ bool battle_config_read(const char *filename, bool imported)
return retval;
}
-void do_init_battle(bool minimal) {
+static void do_init_battle(bool minimal)
+{
if (minimal)
return;
@@ -7534,12 +7584,14 @@ void do_init_battle(bool minimal) {
timer->add_func_list(battle->delay_damage_sub, "battle_delay_damage_sub");
}
-void do_final_battle(void) {
+static void do_final_battle(void)
+{
ers_destroy(battle->delay_damage_ers);
}
/* initialize the interface */
-void battle_defaults(void) {
+void battle_defaults(void)
+{
battle = &battle_s;
battle->bc = &battle_config;
diff --git a/src/map/battleground.c b/src/map/battleground.c
index 834d500fa..4bedc2a00 100644
--- a/src/map/battleground.c
+++ b/src/map/battleground.c
@@ -47,16 +47,18 @@
#include <stdio.h>
#include <string.h>
-struct battleground_interface bg_s;
+static struct battleground_interface bg_s;
struct battleground_interface *bg;
/// Search a BG Team using bg_id
-struct battleground_data* bg_team_search(int bg_id) {
+static struct battleground_data* bg_team_search(int bg_id)
+{
if( !bg_id ) return NULL;
return (struct battleground_data *)idb_get(bg->team_db, bg_id);
}
-struct map_session_data* bg_getavailablesd(struct battleground_data *bgd) {
+static struct map_session_data* bg_getavailablesd(struct battleground_data *bgd)
+{
int i;
nullpo_retr(NULL, bgd);
ARR_FIND(0, MAX_BG_MEMBERS, i, bgd->members[i].sd != NULL);
@@ -64,7 +66,8 @@ struct map_session_data* bg_getavailablesd(struct battleground_data *bgd) {
}
/// Deletes BG Team from db
-bool bg_team_delete(int bg_id) {
+static bool bg_team_delete(int bg_id)
+{
int i;
struct battleground_data *bgd = bg->team_search(bg_id);
@@ -82,7 +85,8 @@ bool bg_team_delete(int bg_id) {
}
/// Warps a Team
-bool bg_team_warp(int bg_id, unsigned short map_index, short x, short y) {
+static bool bg_team_warp(int bg_id, unsigned short map_index, short x, short y)
+{
int i;
struct battleground_data *bgd = bg->team_search(bg_id);
if( bgd == NULL ) return false;
@@ -91,13 +95,15 @@ bool bg_team_warp(int bg_id, unsigned short map_index, short x, short y) {
return true;
}
-void bg_send_dot_remove(struct map_session_data *sd) {
+static void bg_send_dot_remove(struct map_session_data *sd)
+{
if( sd && sd->bg_id )
clif->bg_xy_remove(sd);
}
/// Player joins team
-bool bg_team_join(int bg_id, struct map_session_data *sd) {
+static bool bg_team_join(int bg_id, struct map_session_data *sd)
+{
int i;
struct battleground_data *bgd = bg->team_search(bg_id);
@@ -135,7 +141,8 @@ bool bg_team_join(int bg_id, struct map_session_data *sd) {
}
/// Single Player leaves team
-int bg_team_leave(struct map_session_data *sd, enum bg_team_leave_type flag) {
+static int bg_team_leave(struct map_session_data *sd, enum bg_team_leave_type flag)
+{
int i, bg_id;
struct battleground_data *bgd;
@@ -185,7 +192,8 @@ int bg_team_leave(struct map_session_data *sd, enum bg_team_leave_type flag) {
}
/// Respawn after killed
-bool bg_member_respawn(struct map_session_data *sd) {
+static bool bg_member_respawn(struct map_session_data *sd)
+{
struct battleground_data *bgd;
if( sd == NULL || !pc_isdead(sd) || !sd->bg_id || (bgd = bg->team_search(sd->bg_id)) == NULL )
return false;
@@ -197,7 +205,8 @@ bool bg_member_respawn(struct map_session_data *sd) {
return true; // Warped
}
-int bg_create(unsigned short map_index, short rx, short ry, const char *ev, const char *dev) {
+static int bg_create(unsigned short map_index, short rx, short ry, const char *ev, const char *dev)
+{
struct battleground_data *bgd;
bg->team_counter++;
@@ -216,7 +225,8 @@ int bg_create(unsigned short map_index, short rx, short ry, const char *ev, cons
return bgd->bg_id;
}
-int bg_team_get_id(struct block_list *bl) {
+static int bg_team_get_id(struct block_list *bl)
+{
nullpo_ret(bl);
switch( bl->type ) {
case BL_PC:
@@ -265,7 +275,7 @@ int bg_team_get_id(struct block_list *bl) {
return 0;
}
-bool bg_send_message(struct map_session_data *sd, const char *mes)
+static bool bg_send_message(struct map_session_data *sd, const char *mes)
{
struct battleground_data *bgd;
@@ -280,7 +290,7 @@ bool bg_send_message(struct map_session_data *sd, const char *mes)
/**
* @see DBApply
*/
-int bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
+static int bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct battleground_data *bgd = DB->data2ptr(data);
struct map_session_data *sd;
@@ -298,12 +308,14 @@ int bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-int bg_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
+static int bg_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
+{
bg->team_db->foreach(bg->team_db, bg->send_xy_timer_sub, tick);
return 0;
}
-enum bg_queue_types bg_str2teamtype (const char *str) {
+static enum bg_queue_types bg_str2teamtype(const char *str)
+{
char temp[200], *parse;
enum bg_queue_types type = BGQT_INVALID;
@@ -331,7 +343,8 @@ enum bg_queue_types bg_str2teamtype (const char *str) {
return type;
}
-void bg_config_read(void) {
+static void bg_config_read(void)
+{
struct config_t bg_conf;
struct config_setting_t *data = NULL;
const char *config_filename = "conf/battlegrounds.conf"; // FIXME hardcoded name
@@ -497,7 +510,8 @@ void bg_config_read(void) {
}
libconfig->destroy(&bg_conf);
}
-struct bg_arena *bg_name2arena(const char *name)
+
+static struct bg_arena *bg_name2arena(const char *name)
{
int i;
nullpo_retr(NULL, name);
@@ -517,7 +531,7 @@ struct bg_arena *bg_name2arena(const char *name)
* @return the position (starting at 1).
* @retval 0 if the queue doesn't exist or the given account ID isn't present in it.
*/
-int bg_id2pos(int queue_id, int account_id)
+static int bg_id2pos(int queue_id, int account_id)
{
struct script_queue *queue = script->queue(queue_id);
if (queue) {
@@ -530,7 +544,7 @@ int bg_id2pos(int queue_id, int account_id)
return 0;
}
-void bg_queue_ready_ack(struct bg_arena *arena, struct map_session_data *sd, bool response)
+static void bg_queue_ready_ack(struct bg_arena *arena, struct map_session_data *sd, bool response)
{
nullpo_retv(arena);
nullpo_retv(sd);
@@ -561,7 +575,8 @@ void bg_queue_ready_ack(struct bg_arena *arena, struct map_session_data *sd, boo
}
}
-void bg_queue_player_cleanup(struct map_session_data *sd) {
+static void bg_queue_player_cleanup(struct map_session_data *sd)
+{
nullpo_retv(sd);
if ( sd->bg_queue.client_has_bg_data ) {
if( sd->bg_queue.arena )
@@ -576,7 +591,9 @@ void bg_queue_player_cleanup(struct map_session_data *sd) {
sd->bg_queue.client_has_bg_data = 0;
sd->bg_queue.type = 0;
}
-void bg_match_over(struct bg_arena *arena, bool canceled) {
+
+static void bg_match_over(struct bg_arena *arena, bool canceled)
+{
struct script_queue *queue = script->queue(arena->queue_id);
int i;
@@ -606,7 +623,9 @@ void bg_match_over(struct bg_arena *arena, bool canceled) {
/* reset queue */
script->queue_clear(arena->queue_id);
}
-void bg_begin(struct bg_arena *arena) {
+
+static void bg_begin(struct bg_arena *arena)
+{
struct script_queue *queue = script->queue(arena->queue_id);
int i, count = 0;
@@ -663,13 +682,16 @@ void bg_begin(struct bg_arena *arena) {
npc->event_do(arena->npc_event);
}
}
-int bg_begin_timer(int tid, int64 tick, int id, intptr_t data) {
+
+static int bg_begin_timer(int tid, int64 tick, int id, intptr_t data)
+{
bg->begin(bg->arena[id]);
bg->arena[id]->begin_timer = INVALID_TIMER;
return 0;
}
-int bg_afk_timer(int tid, int64 tick, int id, intptr_t data) {
+static int bg_afk_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct s_mapiterator* iter;
struct map_session_data* sd;
int count = 0;
@@ -691,7 +713,8 @@ int bg_afk_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void bg_queue_pregame(struct bg_arena *arena) {
+static void bg_queue_pregame(struct bg_arena *arena)
+{
struct script_queue *queue;
int i;
nullpo_retv(arena);
@@ -706,13 +729,16 @@ void bg_queue_pregame(struct bg_arena *arena) {
}
arena->begin_timer = timer->add( timer->gettick() + (arena->pregame_duration*1000), bg->begin_timer, arena->id, 0 );
}
-int bg_fillup_timer(int tid, int64 tick, int id, intptr_t data) {
+
+static int bg_fillup_timer(int tid, int64 tick, int id, intptr_t data)
+{
bg->queue_pregame(bg->arena[id]);
bg->arena[id]->fillup_timer = INVALID_TIMER;
return 0;
}
-void bg_queue_check(struct bg_arena *arena) {
+static void bg_queue_check(struct bg_arena *arena)
+{
int count;
struct script_queue *queue;
nullpo_retv(arena);
@@ -729,7 +755,9 @@ void bg_queue_check(struct bg_arena *arena) {
arena->fillup_timer = timer->add( timer->gettick() + (arena->fillup_duration*1000), bg->fillup_timer, arena->id, 0 );
}
}
-void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type) {
+
+static void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type)
+{
enum BATTLEGROUNDS_QUEUE_ACK result = bg->can_queue(sd,arena,type);
struct script_queue *queue = NULL;
int i, count = 0;
@@ -810,7 +838,9 @@ void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_q
clif->bgqueue_ack(sd,BGQA_SUCCESS,arena->id);
bg->queue_check(arena);
}
-enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type) {
+
+static enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type)
+{
int tick;
unsigned int tsec;
@@ -914,7 +944,9 @@ enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_
}
return BGQA_SUCCESS;
}
-void do_init_battleground(bool minimal) {
+
+static void do_init_battleground(bool minimal)
+{
if (minimal)
return;
@@ -927,7 +959,7 @@ void do_init_battleground(bool minimal) {
/**
* @see DBApply
*/
-int bg_team_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int bg_team_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct battleground_data* bgd = DB->data2ptr(data);
@@ -936,7 +968,7 @@ int bg_team_db_final(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void do_final_battleground(void)
+static void do_final_battleground(void)
{
bg->team_db->destroy(bg->team_db,bg->team_db_final);
@@ -949,7 +981,9 @@ void do_final_battleground(void)
aFree(bg->arena);
}
}
-void battleground_defaults(void) {
+
+void battleground_defaults(void)
+{
bg = &bg_s;
bg->queue_on = false;
diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c
index 16c35ff2a..df622e4ab 100644
--- a/src/map/buyingstore.c
+++ b/src/map/buyingstore.c
@@ -35,15 +35,16 @@
#include "common/socket.h" // RBUF*
#include "common/strlib.h" // safestrncpy
-struct buyingstore_interface buyingstore_s;
+static struct buyingstore_interface buyingstore_s;
struct buyingstore_interface *buyingstore;
/// Returns unique buying store id
-unsigned int buyingstore_getuid(void) {
+static unsigned int buyingstore_getuid(void)
+{
return buyingstore->nextid++;
}
-bool buyingstore_setup(struct map_session_data* sd, unsigned char slots)
+static bool buyingstore_setup(struct map_session_data *sd, unsigned char slots)
{
nullpo_retr(false, sd);
if( !battle_config.feature_buying_store || sd->state.vending || sd->state.buyingstore || sd->state.trading || slots == 0 )
@@ -80,7 +81,7 @@ bool buyingstore_setup(struct map_session_data* sd, unsigned char slots)
return true;
}
-void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned char result, const char* storename, const uint8* itemlist, unsigned int count)
+static void buyingstore_create(struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist, unsigned int count)
{
unsigned int i, weight, listidx;
@@ -127,13 +128,14 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
// check item list
for (i = 0; i < count; i++) {
// itemlist: <name id>.W <amount>.W <price>.L
- unsigned short nameid, amount;
+ int nameid;
+ unsigned short amount;
int price, idx;
struct item_data* id;
- nameid = RBUFW(itemlist,i*8+0);
- amount = RBUFW(itemlist,i*8+2);
- price = RBUFL(itemlist,i*8+4);
+ nameid = itemlist[i].itemId;
+ amount = itemlist[i].amount;
+ price = itemlist[i].price;
if( ( id = itemdb->exists(nameid) ) == NULL || amount == 0 )
{// invalid input
@@ -161,7 +163,8 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
ARR_FIND( 0, i, listidx, sd->buyingstore.items[listidx].nameid == nameid );
if( listidx != i )
{// duplicate
- ShowWarning("buyingstore_create: Found duplicate item on buying list (nameid=%hu, amount=%hu, account_id=%d, char_id=%d).\n", nameid, amount, sd->status.account_id, sd->status.char_id);
+ ShowWarning("buyingstore_create: Found duplicate item on buying list (nameid=%d, amount=%hu, account_id=%d, char_id=%d).\n",
+ nameid, amount, sd->status.account_id, sd->status.char_id);
break;
}
}
@@ -196,7 +199,7 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
clif->buyingstore_entry(sd);
}
-void buyingstore_close(struct map_session_data* sd)
+static void buyingstore_close(struct map_session_data *sd)
{
nullpo_retv(sd);
if (sd->state.buyingstore)
@@ -210,7 +213,7 @@ void buyingstore_close(struct map_session_data* sd)
}
}
-void buyingstore_open(struct map_session_data* sd, int account_id)
+static void buyingstore_open(struct map_session_data *sd, int account_id)
{
struct map_session_data* pl_sd;
@@ -240,8 +243,7 @@ void buyingstore_open(struct map_session_data* sd, int account_id)
clif->buyingstore_itemlist(sd, pl_sd);
}
-
-void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int buyer_id, const uint8* itemlist, unsigned int count)
+static void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub* itemlist, unsigned int count)
{
int zeny = 0;
unsigned int i, weight, listidx, k;
@@ -289,20 +291,21 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int
// check item list
for( i = 0; i < count; i++ )
{// itemlist: <index>.W <name id>.W <amount>.W
- unsigned short nameid, amount;
+ int nameid;
+ unsigned short amount;
int index;
- index = RBUFW(itemlist,i*6+0)-2;
- nameid = RBUFW(itemlist,i*6+2);
- amount = RBUFW(itemlist,i*6+4);
+ index = itemlist[i].index - 2;
+ nameid = itemlist[i].itemId;
+ amount = itemlist[i].amount;
- if( i )
+ if (i)
{// duplicate check. as the client does this too, only malicious intent should be caught here
- ARR_FIND( 0, i, k, RBUFW(itemlist,k*6+0)-2 == index );
- if( k != i )
+ ARR_FIND(0, i, k, itemlist[k].index - 2 == index);
+ if (k != i)
{// duplicate
- ShowWarning("buyingstore_trade: Found duplicate item on selling list (prevnameid=%hu, prevamount=%hu, nameid=%hu, amount=%hu, account_id=%d, char_id=%d).\n",
- RBUFW(itemlist,k*6+2), RBUFW(itemlist,k*6+4), nameid, amount, sd->status.account_id, sd->status.char_id);
+ ShowWarning("buyingstore_trade: Found duplicate item on selling list (prevnameid=%d, prevamount=%d, nameid=%d, amount=%hu, account_id=%d, char_id=%d).\n",
+ (int)itemlist[k].itemId, (int)itemlist[k].amount, nameid, amount, sd->status.account_id, sd->status.char_id);
clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, nameid);
return;
}
@@ -361,14 +364,15 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int
// process item list
for( i = 0; i < count; i++ )
{// itemlist: <index>.W <name id>.W <amount>.W
- unsigned short nameid, amount;
+ int nameid;
+ unsigned short amount;
int index;
- index = RBUFW(itemlist,i*6+0)-2;
- nameid = RBUFW(itemlist,i*6+2);
- amount = RBUFW(itemlist,i*6+4);
+ index = itemlist[i].index - 2;
+ nameid = itemlist[i].itemId;
+ amount = itemlist[i].amount;
- ARR_FIND( 0, pl_sd->buyingstore.slots, listidx, pl_sd->buyingstore.items[listidx].nameid == nameid );
+ ARR_FIND(0, pl_sd->buyingstore.slots, listidx, pl_sd->buyingstore.items[listidx].nameid == nameid );
zeny = amount*pl_sd->buyingstore.items[listidx].price;
// move item
@@ -415,9 +419,8 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int
}
}
-
/// Checks if an item is being bought in given player's buying store.
-bool buyingstore_search(struct map_session_data* sd, unsigned short nameid)
+static bool buyingstore_search(struct map_session_data *sd, int nameid)
{
unsigned int i;
@@ -436,10 +439,9 @@ bool buyingstore_search(struct map_session_data* sd, unsigned short nameid)
return true;
}
-
/// Searches for all items in a buyingstore, that match given ids, price and possible cards.
/// @return Whether or not the search should be continued.
-bool buyingstore_searchall(struct map_session_data* sd, const struct s_search_store_search* s)
+static bool buyingstore_searchall(struct map_session_data *sd, const struct s_search_store_search *s)
{
unsigned int i, idx;
struct s_buyingstore_item* it;
@@ -484,7 +486,9 @@ bool buyingstore_searchall(struct map_session_data* sd, const struct s_search_st
return true;
}
-void buyingstore_defaults(void) {
+
+void buyingstore_defaults(void)
+{
buyingstore = &buyingstore_s;
buyingstore->nextid = 0;
@@ -499,5 +503,4 @@ void buyingstore_defaults(void) {
buyingstore->search = buyingstore_search;
buyingstore->searchall = buyingstore_searchall;
buyingstore->getuid = buyingstore_getuid;
-
}
diff --git a/src/map/buyingstore.h b/src/map/buyingstore.h
index 408678e8e..63762f321 100644
--- a/src/map/buyingstore.h
+++ b/src/map/buyingstore.h
@@ -30,6 +30,8 @@ struct map_session_data;
* Declarations
**/
struct s_search_store_search;
+struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub;
+struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub;
/**
* Defines
@@ -61,7 +63,7 @@ enum e_buyingstore_failure {
struct s_buyingstore_item {
int price;
unsigned short amount;
- unsigned short nameid;
+ int nameid;
};
struct s_buyingstore {
@@ -75,15 +77,15 @@ struct s_buyingstore {
**/
struct buyingstore_interface {
unsigned int nextid;
- short blankslots[MAX_SLOTS]; // used when checking whether or not an item's card slots are blank
+ int blankslots[MAX_SLOTS]; // used when checking whether or not an item's card slots are blank
struct item_option blankoptions[MAX_ITEM_OPTIONS]; // used for search result temporary.
/* */
bool (*setup) (struct map_session_data* sd, unsigned char slots);
- void (*create) (struct map_session_data* sd, int zenylimit, unsigned char result, const char* storename, const uint8* itemlist, unsigned int count);
+ void (*create) (struct map_session_data* sd, int zenylimit, unsigned char result, const char* storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub* itemlist, unsigned int count);
void (*close) (struct map_session_data* sd);
void (*open) (struct map_session_data* sd, int account_id);
- void (*trade) (struct map_session_data* sd, int account_id, unsigned int buyer_id, const uint8* itemlist, unsigned int count);
- bool (*search) (struct map_session_data* sd, unsigned short nameid);
+ void (*trade) (struct map_session_data* sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub* itemlist, unsigned int count);
+ bool (*search) (struct map_session_data* sd, int nameid);
bool (*searchall) (struct map_session_data* sd, const struct s_search_store_search* s);
unsigned int (*getuid) (void);
};
diff --git a/src/map/channel.c b/src/map/channel.c
index 9ec415883..3bb2016d8 100644
--- a/src/map/channel.c
+++ b/src/map/channel.c
@@ -44,7 +44,7 @@
#include <stdlib.h>
#include <string.h>
-struct channel_interface channel_s;
+static struct channel_interface channel_s;
struct channel_interface *channel;
static struct Channel_Config channel_config;
@@ -56,7 +56,7 @@ static struct Channel_Config channel_config;
* @param sd The issuer character, for character-specific channels (i.e. map, ally)
* @return a pointer to the channel, or NULL.
*/
-struct channel_data *channel_search(const char *name, struct map_session_data *sd)
+static struct channel_data *channel_search(const char *name, struct map_session_data *sd)
{
const char *realname = name;
if (!realname || !*realname)
@@ -95,7 +95,7 @@ struct channel_data *channel_search(const char *name, struct map_session_data *s
* @param color The channel chat color.
* @return A pointer to the created channel.
*/
-struct channel_data *channel_create(enum channel_types type, const char *name, unsigned char color)
+static struct channel_data *channel_create(enum channel_types type, const char *name, unsigned char color)
{
struct channel_data *chan;
@@ -123,7 +123,7 @@ struct channel_data *channel_create(enum channel_types type, const char *name, u
*
* @param chan The channel to delete
*/
-void channel_delete(struct channel_data *chan)
+static void channel_delete(struct channel_data *chan)
{
nullpo_retv(chan);
@@ -156,7 +156,7 @@ void channel_delete(struct channel_data *chan)
* @param chan The channel to edit.
* @param pass The password to set. Pass NULL to remove existing passwords.
*/
-void channel_set_password(struct channel_data *chan, const char *password)
+static void channel_set_password(struct channel_data *chan, const char *password)
{
nullpo_retv(chan);
if (password)
@@ -176,7 +176,7 @@ void channel_set_password(struct channel_data *chan, const char *password)
* @retval HCS_STATUS_NOPERM if the source character doesn't have enough permissions.
* @retval HCS_STATUS_FAIL in case of generic failure.
*/
-enum channel_operation_status channel_ban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd)
+static enum channel_operation_status channel_ban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd)
{
struct channel_ban_entry *entry = NULL;
@@ -215,7 +215,7 @@ enum channel_operation_status channel_ban(struct channel_data *chan, const struc
* @retval HCS_STATUS_NOPERM if the source character doesn't have enough permissions.
* @retval HCS_STATUS_FAIL in case of generic failure.
*/
-enum channel_operation_status channel_unban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd)
+static enum channel_operation_status channel_unban(struct channel_data *chan, const struct map_session_data *ssd, struct map_session_data *tsd)
{
nullpo_retr(HCS_STATUS_FAIL, chan);
@@ -251,7 +251,7 @@ enum channel_operation_status channel_unban(struct channel_data *chan, const str
* @param chan The channel.
* @param options The new options set to apply.
*/
-void channel_set_options(struct channel_data *chan, unsigned int options)
+static void channel_set_options(struct channel_data *chan, unsigned int options)
{
nullpo_retv(chan);
@@ -267,7 +267,7 @@ void channel_set_options(struct channel_data *chan, unsigned int options)
*
* If no source character is specified, it'll send an anonymous message.
*/
-void channel_send(struct channel_data *chan, struct map_session_data *sd, const char *msg)
+static void channel_send(struct channel_data *chan, struct map_session_data *sd, const char *msg)
{
char message[150];
nullpo_retv(chan);
@@ -309,7 +309,7 @@ void channel_send(struct channel_data *chan, struct map_session_data *sd, const
* @param sd The character
* @param stealth If true, hide join announcements.
*/
-void channel_join_sub(struct channel_data *chan, struct map_session_data *sd, bool stealth)
+static void channel_join_sub(struct channel_data *chan, struct map_session_data *sd, bool stealth)
{
nullpo_retv(chan);
nullpo_retv(sd);
@@ -349,7 +349,7 @@ void channel_join_sub(struct channel_data *chan, struct map_session_data *sd, bo
* @retval HCS_STATUS_BANNED if the character is in the channel's ban list
* @retval HCS_STATUS_FAIL in case of generic error
*/
-enum channel_operation_status channel_join(struct channel_data *chan, struct map_session_data *sd, const char *password, bool silent)
+static enum channel_operation_status channel_join(struct channel_data *chan, struct map_session_data *sd, const char *password, bool silent)
{
bool stealth = false;
@@ -407,7 +407,7 @@ enum channel_operation_status channel_join(struct channel_data *chan, struct map
* @param chan The channel to leave
* @param sd The character
*/
-void channel_leave_sub(struct channel_data *chan, struct map_session_data *sd)
+static void channel_leave_sub(struct channel_data *chan, struct map_session_data *sd)
{
unsigned char i;
@@ -441,7 +441,7 @@ void channel_leave_sub(struct channel_data *chan, struct map_session_data *sd)
* @param chan The channel to leave
* @param sd The character
*/
-void channel_leave(struct channel_data *chan, struct map_session_data *sd)
+static void channel_leave(struct channel_data *chan, struct map_session_data *sd)
{
nullpo_retv(chan);
nullpo_retv(sd);
@@ -470,7 +470,7 @@ void channel_leave(struct channel_data *chan, struct map_session_data *sd)
*
* @param sd The target character
*/
-void channel_quit(struct map_session_data *sd)
+static void channel_quit(struct map_session_data *sd)
{
nullpo_retv(sd);
while (sd->channel_count > 0) {
@@ -491,7 +491,7 @@ void channel_quit(struct map_session_data *sd)
*
* @param sd The target character (sd must be non null)
*/
-void channel_map_join(struct map_session_data *sd)
+static void channel_map_join(struct map_session_data *sd)
{
nullpo_retv(sd);
if (sd->state.autotrade || sd->state.standalone)
@@ -507,7 +507,7 @@ void channel_map_join(struct map_session_data *sd)
channel->join(map->list[sd->bl.m].channel, sd, "", false);
}
-void channel_irc_join(struct map_session_data *sd)
+static void channel_irc_join(struct map_session_data *sd)
{
struct channel_data *chan = ircbot->channel;
@@ -529,7 +529,7 @@ void channel_irc_join(struct map_session_data *sd)
* @param g_source Source guild
* @param g_ally Allied guild
*/
-void channel_guild_join_alliance(const struct guild *g_source, const struct guild *g_ally)
+static void channel_guild_join_alliance(const struct guild *g_source, const struct guild *g_ally)
{
struct channel_data *chan;
@@ -557,7 +557,7 @@ void channel_guild_join_alliance(const struct guild *g_source, const struct guil
* @param g_source Source guild
* @param g_ally Former allied guild
*/
-void channel_guild_leave_alliance(const struct guild *g_source, const struct guild *g_ally)
+static void channel_guild_leave_alliance(const struct guild *g_source, const struct guild *g_ally)
{
struct channel_data *chan;
@@ -581,7 +581,7 @@ void channel_guild_leave_alliance(const struct guild *g_source, const struct gui
*
* @param sd The character (must be non null)
*/
-void channel_quit_guild(struct map_session_data *sd)
+static void channel_quit_guild(struct map_session_data *sd)
{
unsigned char i;
@@ -596,7 +596,7 @@ void channel_quit_guild(struct map_session_data *sd)
}
}
-void read_channels_config(void)
+static void read_channels_config(void)
{
struct config_t channels_conf;
struct config_setting_t *chsys = NULL;
@@ -826,7 +826,7 @@ void read_channels_config(void)
/*==========================================
*
*------------------------------------------*/
-int do_init_channel(bool minimal)
+static int do_init_channel(bool minimal)
{
if (minimal)
return 0;
@@ -838,7 +838,7 @@ int do_init_channel(bool minimal)
return 0;
}
-void do_final_channel(void)
+static void do_final_channel(void)
{
struct DBIterator *iter = db_iterator(channel->db);
struct channel_data *chan;
diff --git a/src/map/chat.c b/src/map/chat.c
index 7282c2815..9852131be 100644
--- a/src/map/chat.c
+++ b/src/map/chat.c
@@ -39,12 +39,12 @@
#include <stdio.h>
#include <string.h>
-struct chat_interface chat_s;
+static struct chat_interface chat_s;
struct chat_interface *chat;
/// Initializes a chatroom object (common functionality for both pc and npc chatrooms).
/// Returns a chatroom object on success, or NULL on failure.
-struct chat_data* chat_createchat(struct block_list* bl, const char* title, const char* pass, int limit, bool pub, int trigger, const char* ev, int zeny, int min_level, int max_level)
+static struct chat_data *chat_createchat(struct block_list *bl, const char *title, const char *pass, int limit, bool pub, int trigger, const char *ev, int zeny, int min_level, int max_level)
{
struct chat_data* cd;
nullpo_retr(NULL, bl);
@@ -91,7 +91,8 @@ struct chat_data* chat_createchat(struct block_list* bl, const char* title, cons
/*==========================================
* player chatroom creation
*------------------------------------------*/
-bool chat_createpcchat(struct map_session_data* sd, const char* title, const char* pass, int limit, bool pub) {
+static bool chat_createpcchat(struct map_session_data *sd, const char *title, const char *pass, int limit, bool pub)
+{
struct chat_data* cd;
nullpo_ret(sd);
nullpo_ret(title);
@@ -135,7 +136,8 @@ bool chat_createpcchat(struct map_session_data* sd, const char* title, const cha
/*==========================================
* join an existing chatroom
*------------------------------------------*/
-bool chat_joinchat(struct map_session_data* sd, int chatid, const char* pass) {
+static bool chat_joinchat(struct map_session_data *sd, int chatid, const char *pass)
+{
struct chat_data* cd;
nullpo_ret(sd);
@@ -190,7 +192,6 @@ bool chat_joinchat(struct map_session_data* sd, int chatid, const char* pass) {
return true;
}
-
/*==========================================
* Leave a chatroom
* Return
@@ -199,7 +200,8 @@ bool chat_joinchat(struct map_session_data* sd, int chatid, const char* pass) {
* 2: Chat room deleted (chat room empty)
* 3: Owner changed (Owner left and a new one as assigned)
*------------------------------------------*/
-int chat_leavechat(struct map_session_data* sd, bool kicked) {
+static int chat_leavechat(struct map_session_data *sd, bool kicked)
+{
struct chat_data* cd;
int i;
int leavechar;
@@ -273,7 +275,8 @@ int chat_leavechat(struct map_session_data* sd, bool kicked) {
* 0: User not found/Missing data
* 1: Success
*------------------------------------------*/
-bool chat_changechatowner(struct map_session_data* sd, const char* nextownername) {
+static bool chat_changechatowner(struct map_session_data *sd, const char *nextownername)
+{
struct chat_data* cd;
struct map_session_data* tmpsd;
int i;
@@ -319,7 +322,8 @@ bool chat_changechatowner(struct map_session_data* sd, const char* nextownername
* 0: Missing data
* 1: Success
*------------------------------------------*/
-bool chat_changechatstatus(struct map_session_data* sd, const char* title, const char* pass, int limit, bool pub) {
+static bool chat_changechatstatus(struct map_session_data *sd, const char *title, const char *pass, int limit, bool pub)
+{
struct chat_data* cd;
nullpo_ret(sd);
@@ -347,7 +351,8 @@ bool chat_changechatstatus(struct map_session_data* sd, const char* title, const
* 0: User cannot be kicked (is gm)/Missing data
* 1: Success
*------------------------------------------*/
-bool chat_kickchat(struct map_session_data* sd, const char* kickusername) {
+static bool chat_kickchat(struct map_session_data *sd, const char *kickusername)
+{
struct chat_data* cd;
int i;
@@ -375,7 +380,7 @@ bool chat_kickchat(struct map_session_data* sd, const char* kickusername) {
/*==========================================
* Creates a chat room for the npc
*------------------------------------------*/
-bool chat_createnpcchat(struct npc_data* nd, const char* title, int limit, bool pub, int trigger, const char* ev, int zeny, int min_level, int max_level)
+static bool chat_createnpcchat(struct npc_data *nd, const char *title, int limit, bool pub, int trigger, const char *ev, int zeny, int min_level, int max_level)
{
struct chat_data* cd;
nullpo_ret(nd);
@@ -407,7 +412,8 @@ bool chat_createnpcchat(struct npc_data* nd, const char* title, int limit, bool
* 0: Missing data
* 1: Success
*------------------------------------------*/
-bool chat_deletenpcchat(struct npc_data* nd) {
+static bool chat_deletenpcchat(struct npc_data *nd)
+{
struct chat_data *cd;
nullpo_ret(nd);
@@ -431,7 +437,7 @@ bool chat_deletenpcchat(struct npc_data* nd) {
* 0: Couldn't trigger / Missing data
* 1: Success
*------------------------------------------*/
-bool chat_triggerevent(struct chat_data *cd)
+static bool chat_triggerevent(struct chat_data *cd)
{
nullpo_ret(cd);
@@ -445,7 +451,7 @@ bool chat_triggerevent(struct chat_data *cd)
/// Enables the event of the chat room.
/// At most, 127 users are needed to trigger the event.
-bool chat_enableevent(struct chat_data* cd)
+static bool chat_enableevent(struct chat_data *cd)
{
nullpo_ret(cd);
@@ -455,7 +461,7 @@ bool chat_enableevent(struct chat_data* cd)
}
/// Disables the event of the chat room
-bool chat_disableevent(struct chat_data* cd)
+static bool chat_disableevent(struct chat_data *cd)
{
nullpo_ret(cd);
@@ -464,7 +470,7 @@ bool chat_disableevent(struct chat_data* cd)
}
/// Kicks all the users from the chat room.
-bool chat_npckickall(struct chat_data* cd)
+static bool chat_npckickall(struct chat_data *cd)
{
nullpo_ret(cd);
@@ -479,7 +485,8 @@ bool chat_npckickall(struct chat_data* cd)
* Generated by HerculesInterfaceMaker
* created by Susu
*-------------------------------------*/
-void chat_defaults(void) {
+void chat_defaults(void)
+{
chat = &chat_s;
/* funcs */
diff --git a/src/map/chrif.c b/src/map/chrif.c
index 13e88b15b..cd24c5fea 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -53,7 +53,7 @@
#include <stdlib.h>
#include <sys/types.h>
-struct chrif_interface chrif_s;
+static struct chrif_interface chrif_s;
struct chrif_interface *chrif;
//Used Packets:
@@ -109,18 +109,21 @@ struct chrif_interface *chrif;
//This define should spare writing the check in every function. [Skotlex]
#define chrif_check(a) do { if(!chrif->isconnected()) return a; } while(0)
+#if 0 // Unused
/// Resets all the data.
-void chrif_reset(void) __attribute__ ((noreturn));
-void chrif_reset(void)
+static void chrif_reset(void) __attribute__ ((noreturn));
+static void chrif_reset(void)
{
// TODO kick everyone out and reset everything [FlavioJS]
exit(EXIT_FAILURE);
}
+#endif // 0
/// Checks the conditions for the server to stop.
/// Releases the cookie when all characters are saved.
/// If all the conditions are met, it stops the core loop.
-void chrif_check_shutdown(void) {
+static void chrif_check_shutdown(void)
+{
if( core->runflag != MAPSERVER_ST_SHUTDOWN )
return;
if( db_size(chrif->auth_db) > 0 )
@@ -128,16 +131,19 @@ void chrif_check_shutdown(void) {
core->runflag = CORE_ST_STOP;
}
-struct auth_node* chrif_search(int account_id) {
+static struct auth_node* chrif_search(int account_id)
+{
return (struct auth_node*)idb_get(chrif->auth_db, account_id);
}
-struct auth_node* chrif_auth_check(int account_id, int char_id, enum sd_state state) {
+static struct auth_node* chrif_auth_check(int account_id, int char_id, enum sd_state state)
+{
struct auth_node *node = chrif->search(account_id);
return ( node && node->char_id == char_id && node->state == state ) ? node : NULL;
}
-bool chrif_auth_delete(int account_id, int char_id, enum sd_state state) {
+static bool chrif_auth_delete(int account_id, int char_id, enum sd_state state)
+{
struct auth_node *node;
if ( (node = chrif->auth_check(account_id, char_id, state) ) ) {
@@ -165,7 +171,7 @@ bool chrif_auth_delete(int account_id, int char_id, enum sd_state state) {
}
//Moves the sd character to the auth_db structure.
-bool chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state)
+static bool chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state)
{
struct auth_node *node;
@@ -194,7 +200,7 @@ bool chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state)
return true;
}
-bool chrif_auth_logout(struct map_session_data *sd, enum sd_state state)
+static bool chrif_auth_logout(struct map_session_data *sd, enum sd_state state)
{
nullpo_retr(false, sd);
if(sd->fd && state == ST_LOGOUT) { //Disassociate player, and free it after saving ack returns. [Skotlex]
@@ -207,7 +213,7 @@ bool chrif_auth_logout(struct map_session_data *sd, enum sd_state state)
return chrif->sd_to_auth(sd, state);
}
-bool chrif_auth_finished(struct map_session_data *sd)
+static bool chrif_auth_finished(struct map_session_data *sd)
{
struct auth_node *node;
@@ -223,19 +229,22 @@ bool chrif_auth_finished(struct map_session_data *sd)
}
// sets char-server's user id
-void chrif_setuserid(char *id) {
+static void chrif_setuserid(char *id)
+{
nullpo_retv(id);
memcpy(chrif->userid, id, NAME_LENGTH);
}
// sets char-server's password
-void chrif_setpasswd(char *pwd) {
+static void chrif_setpasswd(char *pwd)
+{
nullpo_retv(pwd);
memcpy(chrif->passwd, pwd, NAME_LENGTH);
}
// security check, prints warning if using default password
-void chrif_checkdefaultlogin(void) {
+static void chrif_checkdefaultlogin(void)
+{
#ifndef BUILDBOT
if (strcmp(chrif->userid, "s1")==0 && strcmp(chrif->passwd, "p1")==0) {
ShowWarning("Using the default user/password s1/p1 is NOT RECOMMENDED.\n");
@@ -246,7 +255,8 @@ void chrif_checkdefaultlogin(void) {
}
// sets char-server's ip address
-bool chrif_setip(const char* ip) {
+static bool chrif_setip(const char *ip)
+{
char ip_str[16];
nullpo_retr(false, ip);
@@ -263,12 +273,14 @@ bool chrif_setip(const char* ip) {
}
// sets char-server's port number
-void chrif_setport(uint16 port) {
+static void chrif_setport(uint16 port)
+{
chrif->port = port;
}
// says whether the char-server is connected or not
-int chrif_isconnected(void) {
+static int chrif_isconnected(void)
+{
return (chrif->fd > 0 && sockt->session[chrif->fd] != NULL && chrif->state == 2);
}
@@ -278,7 +290,8 @@ int chrif_isconnected(void) {
* Flag = 2: Character is changing map-servers
*------------------------------------------*/
// TODO: Flag enum
-bool chrif_save(struct map_session_data *sd, int flag) {
+static bool chrif_save(struct map_session_data *sd, int flag)
+{
nullpo_ret(sd);
pc->makesavestatus(sd);
@@ -331,7 +344,8 @@ bool chrif_save(struct map_session_data *sd, int flag) {
}
// connects to char-server (plaintext)
-void chrif_connect(int fd) {
+static void chrif_connect(int fd)
+{
ShowStatus("Logging in to char server...\n");
WFIFOHEAD(fd,60);
WFIFOW(fd,0) = 0x2af8;
@@ -344,7 +358,8 @@ void chrif_connect(int fd) {
}
// sends maps to char-server
-void chrif_sendmap(int fd) {
+static void chrif_sendmap(int fd)
+{
int i;
ShowStatus("Sending maps to char server...\n");
@@ -359,7 +374,8 @@ void chrif_sendmap(int fd) {
}
// receive maps from some other map-server (relayed via char-server)
-void chrif_recvmap(int fd) {
+static void chrif_recvmap(int fd)
+{
int i, j;
uint32 ip = ntohl(RFIFOL(fd,4));
uint16 port = ntohs(RFIFOW(fd,8));
@@ -375,7 +391,8 @@ void chrif_recvmap(int fd) {
}
// remove specified maps (used when some other map-server disconnects)
-void chrif_removemap(int fd) {
+static void chrif_removemap(int fd)
+{
int i, j;
uint32 ip = RFIFOL(fd,4);
uint16 port = RFIFOW(fd,8);
@@ -390,13 +407,15 @@ void chrif_removemap(int fd) {
}
// received after a character has been "final saved" on the char-server
-void chrif_save_ack(int fd) {
+static void chrif_save_ack(int fd)
+{
chrif->auth_delete(RFIFOL(fd,2), RFIFOL(fd,6), ST_LOGOUT);
chrif->check_shutdown();
}
// request to move a character between mapservers
-bool chrif_changemapserver(struct map_session_data* sd, uint32 ip, uint16 port) {
+static bool chrif_changemapserver(struct map_session_data *sd, uint32 ip, uint16 port)
+{
nullpo_ret(sd);
if (chrif->other_mapserver_count < 1) {//No other map servers are online!
@@ -427,7 +446,8 @@ bool chrif_changemapserver(struct map_session_data* sd, uint32 ip, uint16 port)
/// map-server change request acknowledgment (positive or negative)
/// R 2b06 <account_id>.L <login_id1>.L <login_id2>.L <char_id>.L <map_index>.W <x>.W <y>.W <ip>.L <port>.W
-bool chrif_changemapserverack(int account_id, int login_id1, int login_id2, int char_id, short map_index, short x, short y, uint32 ip, uint16 port) {
+static bool chrif_changemapserverack(int account_id, int login_id1, int login_id2, int char_id, short map_index, short x, short y, uint32 ip, uint16 port)
+{
struct auth_node *node;
if ( !( node = chrif->auth_check(account_id, char_id, ST_MAPCHANGE) ) )
@@ -448,7 +468,8 @@ bool chrif_changemapserverack(int account_id, int login_id1, int login_id2, int
/*==========================================
*
*------------------------------------------*/
-void chrif_connectack(int fd) {
+static void chrif_connectack(int fd)
+{
static bool char_init_done = false;
if (RFIFOB(fd,2)) {
@@ -476,7 +497,7 @@ void chrif_connectack(int fd) {
/**
* @see DBApply
*/
-int chrif_reconnect(union DBKey key, struct DBData *data, va_list ap)
+static int chrif_reconnect(union DBKey key, struct DBData *data, va_list ap)
{
struct auth_node *node = DB->data2ptr(data);
@@ -509,7 +530,8 @@ int chrif_reconnect(union DBKey key, struct DBData *data, va_list ap)
}
/// Called when all the connection steps are completed.
-void chrif_on_ready(void) {
+static void chrif_on_ready(void)
+{
static bool once = false;
ShowStatus("Map Server is now online.\n");
@@ -540,7 +562,7 @@ void chrif_on_ready(void) {
/*==========================================
*
*------------------------------------------*/
-void chrif_sendmapack(int fd)
+static void chrif_sendmapack(int fd)
{
if (RFIFOB(fd,2)) {
ShowFatalError("chrif : send map list to char server failed %d\n", RFIFOB(fd,2));
@@ -555,7 +577,7 @@ void chrif_sendmapack(int fd)
/*==========================================
* Request sc_data from charserver [Skotlex]
*------------------------------------------*/
-bool chrif_scdata_request(int account_id, int char_id)
+static bool chrif_scdata_request(int account_id, int char_id)
{
#ifdef ENABLE_SC_SAVING
chrif_check(false);
@@ -572,7 +594,8 @@ bool chrif_scdata_request(int account_id, int char_id)
/*==========================================
* Request auth confirmation
*------------------------------------------*/
-void chrif_authreq(struct map_session_data *sd, bool hstandalone) {
+static void chrif_authreq(struct map_session_data *sd, bool hstandalone)
+{
struct auth_node *node= chrif->search(sd->bl.id);
nullpo_retv(sd);
@@ -596,7 +619,8 @@ void chrif_authreq(struct map_session_data *sd, bool hstandalone) {
/*==========================================
* Auth confirmation ack
*------------------------------------------*/
-void chrif_authok(int fd) {
+static void chrif_authok(int fd)
+{
int account_id, group_id, char_id;
uint32 login_id1,login_id2;
time_t expiration_time;
@@ -658,7 +682,9 @@ void chrif_authok(int fd) {
}
// client authentication failed
-void chrif_authfail(int fd) {/* HELLO WORLD. ip in RFIFOL 15 is not being used (but is available) */
+static void chrif_authfail(int fd)
+{
+ /* HELLO WORLD. ip in RFIFOL 15 is not being used (but is available) */
int account_id, char_id;
uint32 login_id1;
char sex;
@@ -687,7 +713,7 @@ void chrif_authfail(int fd) {/* HELLO WORLD. ip in RFIFOL 15 is not being used (
* This can still happen (client times out while waiting for char to confirm auth data)
* @see DBApply
*/
-int auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list ap)
+static int auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct auth_node *node = DB->data2ptr(data);
@@ -712,7 +738,8 @@ int auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-int auth_db_cleanup(int tid, int64 tick, int id, intptr_t data) {
+static int auth_db_cleanup(int tid, int64 tick, int id, intptr_t data)
+{
chrif_check(0);
chrif->auth_db->foreach(chrif->auth_db, chrif->auth_db_cleanup_sub);
return 0;
@@ -721,7 +748,8 @@ int auth_db_cleanup(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Request char selection
*------------------------------------------*/
-bool chrif_charselectreq(struct map_session_data* sd, uint32 s_ip) {
+static bool chrif_charselectreq(struct map_session_data *sd, uint32 s_ip)
+{
nullpo_ret(sd);
if( !sd->bl.id || !sd->login_id1 )
@@ -744,7 +772,8 @@ bool chrif_charselectreq(struct map_session_data* sd, uint32 s_ip) {
/*==========================================
* Search Char trough id on char serv
*------------------------------------------*/
-bool chrif_searchcharid(int char_id) {
+static bool chrif_searchcharid(int char_id)
+{
if( !char_id )
return false;
@@ -762,7 +791,8 @@ bool chrif_searchcharid(int char_id) {
/*==========================================
* Change Email
*------------------------------------------*/
-bool chrif_changeemail(int id, const char *actual_email, const char *new_email) {
+static bool chrif_changeemail(int id, const char *actual_email, const char *new_email)
+{
if (battle_config.etc_log)
ShowInfo("chrif_changeemail: account: %d, actual_email: '%s', new_email: '%s'.\n", id, actual_email, new_email);
@@ -795,7 +825,7 @@ bool chrif_changeemail(int id, const char *actual_email, const char *new_email)
* charunban { n/a }
* changecharsex { <sex>.b } -- use chrif_changesex
*------------------------------------------*/
-bool chrif_char_ask_name(int acc, const char* character_name, unsigned short operation_type, int year, int month, int day, int hour, int minute, int second)
+static bool chrif_char_ask_name(int acc, const char *character_name, unsigned short operation_type, int year, int month, int day, int hour, int minute, int second)
{
nullpo_retr(false, character_name);
chrif_check(false);
@@ -826,7 +856,7 @@ bool chrif_char_ask_name(int acc, const char* character_name, unsigned short ope
* @param change_account Whether to change the per-account sex.
* @retval true.
*/
-bool chrif_changesex(struct map_session_data *sd, bool change_account)
+static bool chrif_changesex(struct map_session_data *sd, bool change_account)
{
nullpo_retr(false, sd);
chrif_check(false);
@@ -855,7 +885,8 @@ bool chrif_changesex(struct map_session_data *sd, bool change_account)
* type of operation: @see chrif_char_ask_name
* type of answer: @see hz_char_ask_name_answer
*------------------------------------------*/
-bool chrif_char_ask_name_answer(int acc, const char* player_name, uint16 type, uint16 answer) {
+static bool chrif_char_ask_name_answer(int acc, const char *player_name, uint16 type, uint16 answer)
+{
struct map_session_data* sd;
char action[25];
char output[256];
@@ -893,7 +924,8 @@ bool chrif_char_ask_name_answer(int acc, const char* player_name, uint16 type, u
/*==========================================
* Request char server to change sex of char (modified by Yor)
*------------------------------------------*/
-void chrif_changedsex(int fd) {
+static void chrif_changedsex(int fd)
+{
int acc = RFIFOL(fd,2);
//int sex = RFIFOL(fd,6); // Dead store. Uncomment if needed again.
@@ -910,10 +942,12 @@ void chrif_changedsex(int fd) {
// of this process, but there's no need to perform map-server specific response
// as everything should been changed through char-server [Panikon]
}
+
/*==========================================
* Request Char Server to Divorce Players
*------------------------------------------*/
-bool chrif_divorce(int partner_id1, int partner_id2) {
+static bool chrif_divorce(int partner_id1, int partner_id2)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,10);
@@ -929,7 +963,8 @@ bool chrif_divorce(int partner_id1, int partner_id2) {
* Divorce players
* only used if 'partner_id' is offline
*------------------------------------------*/
-bool chrif_divorceack(int char_id, int partner_id) {
+static bool chrif_divorceack(int char_id, int partner_id)
+{
struct map_session_data* sd;
int i;
@@ -952,10 +987,12 @@ bool chrif_divorceack(int char_id, int partner_id) {
return true;
}
+
/*==========================================
* Removes Baby from parents
*------------------------------------------*/
-void chrif_deadopt(int father_id, int mother_id, int child_id) {
+static void chrif_deadopt(int father_id, int mother_id, int child_id)
+{
struct map_session_data* sd;
int idx = skill->get_index(WE_CALLBABY);
@@ -980,7 +1017,8 @@ void chrif_deadopt(int father_id, int mother_id, int child_id) {
/*==========================================
* Disconnection of a player (account or char has been banned of has a status, from login or char server) by [Yor]
*------------------------------------------*/
-void chrif_idbanned(int fd) {
+static void chrif_idbanned(int fd)
+{
int id;
struct map_session_data *sd;
@@ -1027,7 +1065,8 @@ void chrif_idbanned(int fd) {
//Disconnect the player out of the game, simple packet
//packet.w AID.L WHY.B 2+4+1 = 7byte
-int chrif_disconnectplayer(int fd) {
+static int chrif_disconnectplayer(int fd)
+{
struct map_session_data* sd;
int account_id = RFIFOL(fd, 2);
@@ -1062,7 +1101,7 @@ int chrif_disconnectplayer(int fd) {
/*==========================================
* Request/Receive top 10 Fame character list
*------------------------------------------*/
-int chrif_updatefamelist(struct map_session_data *sd)
+static int chrif_updatefamelist(struct map_session_data *sd)
{
int type;
@@ -1084,7 +1123,8 @@ int chrif_updatefamelist(struct map_session_data *sd)
return 0;
}
-bool chrif_buildfamelist(void) {
+static bool chrif_buildfamelist(void)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,2);
@@ -1094,7 +1134,8 @@ bool chrif_buildfamelist(void) {
return true;
}
-void chrif_recvfamelist(int fd) {
+static void chrif_recvfamelist(int fd)
+{
int num, size;
int total = 0, len = 8;
@@ -1128,7 +1169,8 @@ void chrif_recvfamelist(int fd) {
/// fame ranking update confirmation
/// R 2b22 <table>.B <index>.B <value>.L
-int chrif_updatefamelist_ack(int fd) {
+static int chrif_updatefamelist_ack(int fd)
+{
struct fame_list* list;
uint8 index;
@@ -1148,8 +1190,9 @@ int chrif_updatefamelist_ack(int fd) {
return 1;
}
-bool chrif_save_scdata(struct map_session_data *sd) { //parses the sc_data of the player and sends it to the char-server for saving. [Skotlex]
-
+//parses the sc_data of the player and sends it to the char-server for saving. [Skotlex]
+static bool chrif_save_scdata(struct map_session_data *sd)
+{
#ifdef ENABLE_SC_SAVING
int i, count=0;
int64 tick;
@@ -1203,8 +1246,8 @@ bool chrif_save_scdata(struct map_session_data *sd) { //parses the sc_data of th
}
//Retrieve and load sc_data for a player. [Skotlex]
-bool chrif_load_scdata(int fd) {
-
+static bool chrif_load_scdata(int fd)
+{
#ifdef ENABLE_SC_SAVING
struct map_session_data *sd;
int aid, cid, i, count;
@@ -1241,7 +1284,8 @@ bool chrif_load_scdata(int fd) {
* Send rates to char server [Wizputer]
* S 2b16 <base rate>.L <job rate>.L <drop rate>.L
*------------------------------------------*/
-bool chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate) {
+static bool chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,14);
@@ -1256,7 +1300,8 @@ bool chrif_ragsrvinfo(int base_rate, int job_rate, int drop_rate) {
/*=========================================
* Tell char-server character disconnected [Wizputer]
*-----------------------------------------*/
-bool chrif_char_offline_nsd(int account_id, int char_id) {
+static bool chrif_char_offline_nsd(int account_id, int char_id)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,10);
@@ -1271,7 +1316,8 @@ bool chrif_char_offline_nsd(int account_id, int char_id) {
/*=========================================
* Tell char-server to reset all chars offline [Wizputer]
*-----------------------------------------*/
-bool chrif_flush(void) {
+static bool chrif_flush(void)
+{
chrif_check(false);
sockt->set_nonblocking(chrif->fd, 0);
@@ -1284,7 +1330,8 @@ bool chrif_flush(void) {
/*=========================================
* Tell char-server to reset all chars offline [Wizputer]
*-----------------------------------------*/
-bool chrif_char_reset_offline(void) {
+static bool chrif_char_reset_offline(void)
+{
chrif_check(false);
WFIFOHEAD(chrif->fd,2);
@@ -1297,7 +1344,8 @@ bool chrif_char_reset_offline(void) {
/*=========================================
* Tell char-server character is online [Wizputer]. Look like unused.
*-----------------------------------------*/
-bool chrif_char_online(struct map_session_data *sd) {
+static bool chrif_char_online(struct map_session_data *sd)
+{
chrif_check(false);
nullpo_retr(false, sd);
@@ -1311,7 +1359,8 @@ bool chrif_char_online(struct map_session_data *sd) {
}
/// Called when the connection to Char Server is disconnected.
-void chrif_on_disconnect(void) {
+static void chrif_on_disconnect(void)
+{
if( chrif->connected != 1 )
ShowWarning("Connection to Char Server lost.\n\n");
chrif->connected = 0;
@@ -1323,7 +1372,8 @@ void chrif_on_disconnect(void) {
timer->add(timer->gettick() + 1000, chrif->check_connect_char_server, 0, 0);
}
-void chrif_update_ip(int fd) {
+static void chrif_update_ip(int fd)
+{
uint32 new_ip;
WFIFOHEAD(fd,6);
@@ -1344,15 +1394,20 @@ void chrif_update_ip(int fd) {
}
// pings the charserver ( since on-demand flag.ping was introduced, shouldn't this be dropped? only wasting traffic and processing [Ind])
-void chrif_keepalive(int fd) {
+static void chrif_keepalive(int fd)
+{
WFIFOHEAD(fd,2);
WFIFOW(fd,0) = 0x2b23;
WFIFOSET(fd,2);
}
-void chrif_keepalive_ack(int fd) {
+
+static void chrif_keepalive_ack(int fd)
+{
sockt->session[fd]->flag.ping = 0;/* reset ping state, we received a packet */
}
-void chrif_skillid2idx(int fd) {
+
+static void chrif_skillid2idx(int fd)
+{
int i, count = 0;
if( fd == 0 ) fd = chrif->fd;
@@ -1364,7 +1419,7 @@ void chrif_skillid2idx(int fd) {
WFIFOW(fd,0) = 0x2b0b;
for (i = 0; i < MAX_SKILL_DB; i++) {
if (skill->dbs->db[i].nameid != 0) {
- WFIFOW(fd, 4 + (count*4)) = skill->dbs->db[i].nameid;
+ WFIFOW(fd, 4 + (count*4)) = skill->dbs->db[i].nameid; // really skill id
WFIFOW(fd, 6 + (count*4)) = i;
count++;
}
@@ -1373,10 +1428,12 @@ void chrif_skillid2idx(int fd) {
WFIFOSET(fd,4 + (count * 4));
}
+
/*==========================================
*
*------------------------------------------*/
-int chrif_parse(int fd) {
+static int chrif_parse(int fd)
+{
int packet_len, cmd;
// only process data from the char-server
@@ -1470,7 +1527,8 @@ int chrif_parse(int fd) {
return 0;
}
-int send_usercount_tochar(int tid, int64 tick, int id, intptr_t data) {
+static int send_usercount_tochar(int tid, int64 tick, int id, intptr_t data)
+{
chrif_check(-1);
WFIFOHEAD(chrif->fd,4);
@@ -1484,7 +1542,8 @@ int send_usercount_tochar(int tid, int64 tick, int id, intptr_t data) {
* timerFunction
* Send to char the number of client connected to map
*------------------------------------------*/
-bool send_users_tochar(void) {
+static bool send_users_tochar(void)
+{
int users = 0, i = 0;
const struct map_session_data *sd;
struct s_mapiterator *iter;
@@ -1515,7 +1574,8 @@ bool send_users_tochar(void) {
* timerFunction
* Check the connection to char server, (if it down)
*------------------------------------------*/
-int check_connect_char_server(int tid, int64 tick, int id, intptr_t data) {
+static int check_connect_char_server(int tid, int64 tick, int id, intptr_t data)
+{
static int displayed = 0;
if ( chrif->fd <= 0 || sockt->session[chrif->fd] == NULL ) {
if ( !displayed ) {
@@ -1549,7 +1609,7 @@ int check_connect_char_server(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Asks char server to remove friend_id from the friend list of char_id
*------------------------------------------*/
-bool chrif_removefriend(int char_id, int friend_id)
+static bool chrif_removefriend(int char_id, int friend_id)
{
chrif_check(false);
@@ -1564,7 +1624,7 @@ bool chrif_removefriend(int char_id, int friend_id)
/**
* Sends a single scdata for saving into char server, meant to ensure integrity of duration-less conditions
**/
-void chrif_save_scdata_single(int account_id, int char_id, short type, struct status_change_entry *sce)
+static void chrif_save_scdata_single(int account_id, int char_id, short type, struct status_change_entry *sce)
{
if( !chrif->isconnected() )
return;
@@ -1583,10 +1643,11 @@ void chrif_save_scdata_single(int account_id, int char_id, short type, struct st
WFIFOSET(chrif->fd, 28);
}
+
/**
* Sends a single scdata deletion request into char server, meant to ensure integrity of duration-less conditions
**/
-void chrif_del_scdata_single(int account_id, int char_id, short type)
+static void chrif_del_scdata_single(int account_id, int char_id, short type)
{
if( !chrif->isconnected() ) {
ShowError("MAYDAY! failed to delete status %d from CID:%d/AID:%d\n",type,char_id,account_id);
@@ -1606,7 +1667,7 @@ void chrif_del_scdata_single(int account_id, int char_id, short type)
/**
* @see DBApply
*/
-int auth_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int auth_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct auth_node *node = DB->data2ptr(data);
@@ -1628,7 +1689,7 @@ int auth_db_final(union DBKey key, struct DBData *data, va_list ap)
/*==========================================
* Destructor
*------------------------------------------*/
-void do_final_chrif(void)
+static void do_final_chrif(void)
{
if( chrif->fd != -1 ) {
sockt->close(chrif->fd);
@@ -1643,7 +1704,8 @@ void do_final_chrif(void)
/*==========================================
*
*------------------------------------------*/
-void do_init_chrif(bool minimal) {
+static void do_init_chrif(bool minimal)
+{
if (minimal)
return;
@@ -1669,7 +1731,8 @@ void do_init_chrif(bool minimal) {
* Generated by HerculesInterfaceMaker
* created by Susu
*-------------------------------------*/
-void chrif_defaults(void) {
+void chrif_defaults(void)
+{
const int packet_len_table[CHRIF_PACKET_LEN_TABLE_SIZE] = { // U - used, F - free
60, 3, -1, 27, 10, -1, 6, -1, // 2af8-2aff: U->2af8, U->2af9, U->2afa, U->2afb, U->2afc, U->2afd, U->2afe, U->2aff
6, -1, 18, 7, -1, 39, 30, 10, // 2b00-2b07: U->2b00, U->2b01, U->2b02, U->2b03, U->2b04, U->2b05, U->2b06, U->2b07
diff --git a/src/map/clan.c b/src/map/clan.c
index 7aa9be5d4..3d5c70eb1 100644
--- a/src/map/clan.c
+++ b/src/map/clan.c
@@ -52,7 +52,7 @@
#include <stdlib.h>
#include <string.h>
-struct clan_interface clan_s;
+static struct clan_interface clan_s;
struct clan_interface *clan;
/**
@@ -61,7 +61,7 @@ struct clan_interface *clan;
* @param clan_id Clan ID
* @return struct clan*
*/
-struct clan *clan_search(int clan_id)
+static struct clan *clan_search(int clan_id)
{
if (clan_id <= 0) {
return NULL;
@@ -75,7 +75,7 @@ struct clan *clan_search(int clan_id)
* @param name Clan Name
* @return struct clan*
*/
-struct clan *clan_searchname(const char *name)
+static struct clan *clan_searchname(const char *name)
{
struct clan *c;
struct DBIterator *iter;
@@ -98,7 +98,7 @@ struct clan *clan_searchname(const char *name)
* @param (struct clan *) c clan structure
* @return (struct map_session_data *)
*/
-struct map_session_data *clan_getonlinesd(struct clan *c)
+static struct map_session_data *clan_getonlinesd(struct clan *c)
{
int i;
nullpo_retr(NULL, c);
@@ -114,7 +114,7 @@ struct map_session_data *clan_getonlinesd(struct clan *c)
* @param char_id Player's Char ID
* @return int
*/
-int clan_getindex(const struct clan *c, int char_id)
+static int clan_getindex(const struct clan *c, int char_id)
{
int i;
nullpo_retr(INDEX_NOT_FOUND, c);
@@ -130,7 +130,7 @@ int clan_getindex(const struct clan *c, int char_id)
/**
* Starts clan buff
*/
-void clan_buff_start(struct map_session_data *sd, struct clan *c)
+static void clan_buff_start(struct map_session_data *sd, struct clan *c)
{
nullpo_retv(sd);
nullpo_retv(c);
@@ -146,7 +146,7 @@ void clan_buff_start(struct map_session_data *sd, struct clan *c)
/**
* Ends clan buff
*/
-void clan_buff_end(struct map_session_data *sd, struct clan *c)
+static void clan_buff_end(struct map_session_data *sd, struct clan *c)
{
nullpo_retv(sd);
nullpo_retv(c);
@@ -165,7 +165,7 @@ void clan_buff_end(struct map_session_data *sd, struct clan *c)
* @param clan_id Clan which will add this player
* @return bool
*/
-bool clan_join(struct map_session_data *sd, int clan_id)
+static bool clan_join(struct map_session_data *sd, int clan_id)
{
struct clan *c;
struct clan_member m;
@@ -230,7 +230,7 @@ bool clan_join(struct map_session_data *sd, int clan_id)
*
* @param sd Player Data
*/
-void clan_member_online(struct map_session_data *sd, bool first)
+static void clan_member_online(struct map_session_data *sd, bool first)
{
struct clan *c;
int i, inactivity;
@@ -329,7 +329,7 @@ void clan_member_online(struct map_session_data *sd, bool first)
/**
* Re-join a player on its clan
*/
-int clan_rejoin(struct map_session_data *sd, va_list ap)
+static int clan_rejoin(struct map_session_data *sd, va_list ap)
{
nullpo_ret(sd);
@@ -344,7 +344,7 @@ int clan_rejoin(struct map_session_data *sd, va_list ap)
/**
* Removes Player from clan
*/
-bool clan_leave(struct map_session_data *sd, bool first)
+static bool clan_leave(struct map_session_data *sd, bool first)
{
int i;
struct clan *c;
@@ -388,7 +388,7 @@ bool clan_leave(struct map_session_data *sd, bool first)
*
* @param (struct map_session_data *) sd Player Data
*/
-void clan_member_offline(struct map_session_data *sd)
+static void clan_member_offline(struct map_session_data *sd)
{
struct clan *c;
int i;
@@ -415,7 +415,7 @@ void clan_member_offline(struct map_session_data *sd)
/**
* Sends a message to the whole clan
*/
-bool clan_send_message(struct map_session_data *sd, const char *mes)
+static bool clan_send_message(struct map_session_data *sd, const char *mes)
{
int len;
nullpo_retr(false, sd);
@@ -437,7 +437,7 @@ bool clan_send_message(struct map_session_data *sd, const char *mes)
/**
* Clan receive a message, will be displayed to whole clan
*/
-void clan_recv_message(struct clan *c, const char *mes, int len)
+static void clan_recv_message(struct clan *c, const char *mes, int len)
{
clif->clan_message(c, mes, len);
}
@@ -445,7 +445,7 @@ void clan_recv_message(struct clan *c, const char *mes, int len)
/**
* Set constants for each clan
*/
-void clan_set_constants(void)
+static void clan_set_constants(void)
{
struct DBIterator *iter = db_iterator(clan->db);
struct clan *c;
@@ -460,7 +460,7 @@ void clan_set_constants(void)
/**
* Returns the clan_id of bl
*/
-int clan_get_id(const struct block_list *bl)
+static int clan_get_id(const struct block_list *bl)
{
nullpo_ret(bl);
@@ -515,7 +515,7 @@ int clan_get_id(const struct block_list *bl)
/**
* Checks every clan player and remove those who are inactive
*/
-int clan_inactivity_kick(int tid, int64 tick, int id, intptr_t data)
+static int clan_inactivity_kick(int tid, int64 tick, int id, intptr_t data)
{
struct clan *c = NULL;
int i;
@@ -553,7 +553,7 @@ int clan_inactivity_kick(int tid, int64 tick, int id, intptr_t data)
/**
* Timeout for the request of offline kick
*/
-int clan_request_kickoffline(int tid, int64 tick, int id, intptr_t data)
+static int clan_request_kickoffline(int tid, int64 tick, int id, intptr_t data)
{
struct clan *c = NULL;
@@ -577,7 +577,7 @@ int clan_request_kickoffline(int tid, int64 tick, int id, intptr_t data)
/**
* Timeout of the request for counting members
*/
-int clan_request_membercount(int tid, int64 tick, int id, intptr_t data)
+static int clan_request_membercount(int tid, int64 tick, int id, intptr_t data)
{
struct clan *c = NULL;
@@ -606,12 +606,12 @@ int clan_request_membercount(int tid, int64 tick, int id, intptr_t data)
* @param[in] n Ordinal number of the entry, to be displayed in case of validation errors.
* @param[in] source Source of the entry (file name), to be displayed in case of validation errors.
*/
-void clan_read_db_additional_fields(struct clan *entry, struct config_setting_t *t, int n, const char *source)
+static void clan_read_db_additional_fields(struct clan *entry, struct config_setting_t *t, int n, const char *source)
{
// do nothing. plugins can do own work
}
-void clan_read_buffs(struct clan *c, struct config_setting_t *buff, const char *source)
+static void clan_read_buffs(struct clan *c, struct config_setting_t *buff, const char *source)
{
struct clan_buff *b;
const char *str = NULL;
@@ -647,7 +647,7 @@ void clan_read_buffs(struct clan *c, struct config_setting_t *buff, const char *
* validation errors.
* @return int.
*/
-int clan_read_db_sub(struct config_setting_t *settings, const char *source, bool reload)
+static int clan_read_db_sub(struct config_setting_t *settings, const char *source, bool reload)
{
int total, s, valid = 0;
@@ -895,7 +895,7 @@ int clan_read_db_sub(struct config_setting_t *settings, const char *source, bool
* @param settings The Settings Group from config file.
* @param source File name.
*/
-void clan_read_db(struct config_setting_t *settings, const char *source, bool reload)
+static void clan_read_db(struct config_setting_t *settings, const char *source, bool reload)
{
struct config_setting_t *clans;
@@ -918,7 +918,7 @@ void clan_read_db(struct config_setting_t *settings, const char *source, bool re
*
* @param bool clear Whether to clear clan->db before reading clans
*/
-bool clan_config_read(bool reload)
+static bool clan_config_read(bool reload)
{
struct config_t clan_conf;
struct config_setting_t *settings = NULL;
@@ -979,7 +979,7 @@ bool clan_config_read(bool reload)
* @param source Source of the entry (file name), to be displayed in
* case of validation errors.
*/
-void clan_config_read_additional_settings(struct config_setting_t *settings, const char *source)
+static void clan_config_read_additional_settings(struct config_setting_t *settings, const char *source)
{
// do nothing. plugins can do own work
}
@@ -987,7 +987,7 @@ void clan_config_read_additional_settings(struct config_setting_t *settings, con
/**
* Reloads Clan DB
*/
-void clan_reload(void)
+static void clan_reload(void)
{
clan->config_read(true);
}
@@ -995,7 +995,7 @@ void clan_reload(void)
/**
*
*/
-void do_init_clan(bool minimal)
+static void do_init_clan(bool minimal)
{
clan->db = idb_alloc(DB_OPT_RELEASE_DATA);
@@ -1009,7 +1009,7 @@ void do_init_clan(bool minimal)
/**
*
*/
-void do_final_clan(void)
+static void do_final_clan(void)
{
struct DBIterator *iter = db_iterator(clan->db);
struct clan *c;
diff --git a/src/map/clif.c b/src/map/clif.c
index 820a219f6..e15a65902 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -77,10 +77,10 @@
#include <stdarg.h>
#include <time.h>
-struct clif_interface clif_s;
+static struct clif_interface clif_s;
struct clif_interface *clif;
-struct s_packet_db packet_db[MAX_PACKET_DB + 1];
+static struct s_packet_db packet_db[MAX_PACKET_DB + 1];
/* re-usable */
static struct packet_itemlist_normal itemlist_normal;
@@ -96,7 +96,8 @@ static struct packet_npc_market_open npcmarket_open;
//#define DUMP_INVALID_PACKET
//Converts item type in case of pet eggs.
-static inline int itemtype(int type) {
+static inline int itemtype(int type)
+{
switch( type ) {
#if PACKETVER >= 20080827
case IT_WEAPON:
@@ -111,7 +112,8 @@ static inline int itemtype(int type) {
}
}
-static inline void WBUFPOS(uint8* p, unsigned short pos, short x, short y, unsigned char dir) {
+static inline void WBUFPOS(uint8 *p, unsigned short pos, short x, short y, unsigned char dir)
+{
p += pos;
p[0] = (uint8)(x>>2);
p[1] = (uint8)((x<<6) | ((y>>4)&0x3f));
@@ -119,7 +121,8 @@ static inline void WBUFPOS(uint8* p, unsigned short pos, short x, short y, unsig
}
// client-side: x0+=sx0*0.0625-0.5 and y0+=sy0*0.0625-0.5
-static inline void WBUFPOS2(uint8* p, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0) {
+static inline void WBUFPOS2(uint8 *p, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0)
+{
p += pos;
p[0] = (uint8)(x0>>2);
p[1] = (uint8)((x0<<6) | ((y0>>4)&0x3f));
@@ -130,16 +133,19 @@ static inline void WBUFPOS2(uint8* p, unsigned short pos, short x0, short y0, sh
}
#if 0 // Currently unused
-static inline void WFIFOPOS(int fd, unsigned short pos, short x, short y, unsigned char dir) {
+static inline void WFIFOPOS(int fd, unsigned short pos, short x, short y, unsigned char dir)
+{
WBUFPOS(WFIFOP(fd,pos), 0, x, y, dir);
}
#endif // 0
-static inline void WFIFOPOS2(int fd, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0) {
+static inline void WFIFOPOS2(int fd, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0)
+{
WBUFPOS2(WFIFOP(fd,pos), 0, x0, y0, x1, y1, sx0, sy0);
}
-static inline void RBUFPOS(const uint8* p, unsigned short pos, short* x, short* y, unsigned char* dir) {
+static inline void RBUFPOS(const uint8 *p, unsigned short pos, short *x, short *y, unsigned char *dir)
+{
p += pos;
if( x ) {
@@ -155,12 +161,14 @@ static inline void RBUFPOS(const uint8* p, unsigned short pos, short* x, short*
}
}
-static inline void RFIFOPOS(int fd, unsigned short pos, short* x, short* y, unsigned char* dir) {
+static inline void RFIFOPOS(int fd, unsigned short pos, short *x, short *y, unsigned char *dir)
+{
RBUFPOS(RFIFOP(fd,pos), 0, x, y, dir);
}
#if 0 // currently unused
-static inline void RBUFPOS2(const uint8* p, unsigned short pos, short* x0, short* y0, short* x1, short* y1, unsigned char* sx0, unsigned char* sy0) {
+static inline void RBUFPOS2(const uint8 *p, unsigned short pos, short *x0, short *y0, short *x1, short *y1, unsigned char *sx0, unsigned char *sy0)
+{
p += pos;
if( x0 ) {
@@ -187,13 +195,15 @@ static inline void RBUFPOS2(const uint8* p, unsigned short pos, short* x0, short
sy0[0] = ( p[5] & 0x0f ) >> 0;
}
}
-static inline void RFIFOPOS2(int fd, unsigned short pos, short* x0, short* y0, short* x1, short* y1, unsigned char* sx0, unsigned char* sy0) {
+
+static inline void RFIFOPOS2(int fd, unsigned short pos, short *x0, short *y0, short *x1, short *y1, unsigned char *sx0, unsigned char *sy0)
+{
RBUFPOS2(WFIFOP(fd,pos), 0, x0, y0, x1, y1, sx0, sy0);
}
#endif // 0
//To identify disguised characters.
-bool clif_isdisguised(struct block_list* bl)
+static bool clif_isdisguised(struct block_list *bl)
{
struct map_session_data *sd = BL_CAST(BL_PC, bl);
if (sd == NULL || sd->disguise == -1)
@@ -204,7 +214,8 @@ bool clif_isdisguised(struct block_list* bl)
/*==========================================
* Ip setting of map-server
*------------------------------------------*/
-bool clif_setip(const char* ip) {
+static bool clif_setip(const char *ip)
+{
char ip_str[16];
nullpo_retr(false, ip);
clif->map_ip = sockt->host2ip(ip);
@@ -218,7 +229,8 @@ bool clif_setip(const char* ip) {
return true;
}
-bool clif_setbindip(const char* ip) {
+static bool clif_setbindip(const char *ip)
+{
nullpo_retr(false, ip);
clif->bind_ip = sockt->host2ip(ip);
if ( clif->bind_ip ) {
@@ -234,30 +246,35 @@ bool clif_setbindip(const char* ip) {
* Sets map port to 'port'
* is run from map.c upon loading map server configuration
*------------------------------------------*/
-void clif_setport(uint16 port)
+static void clif_setport(uint16 port)
{
clif->map_port = port;
}
+#if 0 // Unused function
/*==========================================
* Returns map server IP
*------------------------------------------*/
-uint32 clif_getip(void)
+static uint32 clif_getip(void)
{
return clif->map_ip;
}
+#endif // 0
+#if 0 // Unused function
/*==========================================
* Returns map port which is set by clif_setport()
*------------------------------------------*/
-uint16 clif_getport(void)
+static uint16 clif_getport(void)
{
return clif->map_port;
}
+#endif // 0
+
/*==========================================
* Updates server ip resolution and returns it
*------------------------------------------*/
-uint32 clif_refresh_ip(void)
+static uint32 clif_refresh_ip(void)
{
uint32 new_ip = sockt->host2ip(clif->map_ip_str);
if ( new_ip && new_ip != clif->map_ip ) {
@@ -268,7 +285,7 @@ uint32 clif_refresh_ip(void)
return 0;
}
-unsigned char clif_bl_type(struct block_list *bl)
+static unsigned char clif_bl_type(struct block_list *bl)
{
#if PACKETVER >= 20071106
struct view_data *vd;
@@ -327,7 +344,8 @@ unsigned char clif_bl_type(struct block_list *bl)
* - AREA_WOS (AREA WITHOUT SELF) : Not run for self
* - AREA_CHAT_WOC : Everyone in the area of your chat without a chat
*------------------------------------------*/
-int clif_send_sub(struct block_list *bl, va_list ap) {
+static int clif_send_sub(struct block_list *bl, va_list ap)
+{
struct block_list *src_bl;
struct map_session_data *sd;
void *buf;
@@ -383,7 +401,7 @@ int clif_send_sub(struct block_list *bl, va_list ap) {
return clif->send_actual(fd, buf, len);
}
-int clif_send_actual(int fd, void *buf, int len)
+static int clif_send_actual(int fd, void *buf, int len)
{
nullpo_retr(0, buf);
WFIFOHEAD(fd, len);
@@ -407,7 +425,8 @@ int clif_send_actual(int fd, void *buf, int len)
* Packet Delegation (called on all packets that require data to be sent to more than one client)
* functions that are sent solely to one use whose ID it posses use WFIFOSET
*------------------------------------------*/
-bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target type) {
+static bool clif_send(const void *buf, int len, struct block_list *bl, enum send_target type)
+{
int i;
struct map_session_data *sd, *tsd;
struct party_data *p = NULL;
@@ -694,7 +713,7 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target
/// Notifies the client, that it's connection attempt was accepted.
/// 0073 <start time>.L <position>.3B <x size>.B <y size>.B (ZC_ACCEPT_ENTER)
/// 02eb <start time>.L <position>.3B <x size>.B <y size>.B <font>.W (ZC_ACCEPT_ENTER2)
-void clif_authok(struct map_session_data *sd)
+static void clif_authok(struct map_session_data *sd)
{
struct packet_authok p;
@@ -722,7 +741,7 @@ void clif_authok(struct map_session_data *sd)
/// 2 = mobile - out of available time
/// 3 = mobile - already logged in
/// 4 = mobile - waiting state
-void clif_authrefuse(int fd, uint8 error_code)
+static void clif_authrefuse(int fd, uint8 error_code)
{
WFIFOHEAD(fd,packet_len(0x74));
WFIFOW(fd,0) = 0x74;
@@ -765,7 +784,7 @@ void clif_authrefuse(int fd, uint8 error_code)
/// 115 = You are in game connection ban period.
/// ? = disconnected -> MsgStringTable[3]
// TODO: type enum
-void clif_authfail_fd(int fd, int type)
+static void clif_authfail_fd(int fd, int type)
{
if (!fd || !sockt->session[fd] || sockt->session[fd]->func_parse != clif->parse) //clif_authfail should only be invoked on players!
return;
@@ -783,7 +802,8 @@ void clif_authfail_fd(int fd, int type)
/// type:
/// 1 = disconnect, char-select
/// ? = nothing
-void clif_charselectok(int id, uint8 ok) {
+static void clif_charselectok(int id, uint8 ok)
+{
struct map_session_data* sd;
int fd;
@@ -800,7 +820,8 @@ void clif_charselectok(int id, uint8 ok) {
/// Makes an item appear on the ground.
/// 009e <id>.L <name id>.W <identified>.B <x>.W <y>.W <subX>.B <subY>.B <amount>.W (ZC_ITEM_FALL_ENTRY)
/// 084b (ZC_ITEM_FALL_ENTRY4)
-void clif_dropflooritem(struct flooritem_data* fitem) {
+static void clif_dropflooritem(struct flooritem_data *fitem)
+{
struct packet_dropflooritem p;
int view;
@@ -835,7 +856,7 @@ void clif_dropflooritem(struct flooritem_data* fitem) {
/// Makes an item disappear from the ground.
/// 00a1 <id>.L (ZC_ITEM_DISAPPEAR)
-void clif_clearflooritem(struct flooritem_data *fitem, int fd)
+static void clif_clearflooritem(struct flooritem_data *fitem, int fd)
{
unsigned char buf[16];
@@ -861,7 +882,7 @@ void clif_clearflooritem(struct flooritem_data *fitem, int fd)
/// 2 = logged out
/// 3 = teleport
/// 4 = trickdead
-void clif_clearunit_single(int id, clr_type type, int fd)
+static void clif_clearunit_single(int id, clr_type type, int fd)
{
WFIFOHEAD(fd, packet_len(0x80));
WFIFOW(fd,0) = 0x80;
@@ -878,7 +899,7 @@ void clif_clearunit_single(int id, clr_type type, int fd)
/// 2 = logged out
/// 3 = teleport
/// 4 = trickdead
-void clif_clearunit_area(struct block_list* bl, clr_type type)
+static void clif_clearunit_area(struct block_list *bl, clr_type type)
{
unsigned char buf[8];
@@ -899,14 +920,16 @@ void clif_clearunit_area(struct block_list* bl, clr_type type)
/// Used to make monsters with player-sprites disappear after dying
/// like normal monsters, because the client does not remove those
/// automatically.
-int clif_clearunit_delayed_sub(int tid, int64 tick, int id, intptr_t data) {
+static int clif_clearunit_delayed_sub(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list *bl = (struct block_list *)data;
clif->clearunit_area(bl, (clr_type) id);
ers_free(clif->delay_clearunit_ers,bl);
return 0;
}
-void clif_clearunit_delayed(struct block_list* bl, clr_type type, int64 tick) {
+static void clif_clearunit_delayed(struct block_list *bl, clr_type type, int64 tick)
+{
struct block_list *tbl;
nullpo_retv(bl);
@@ -916,7 +939,7 @@ void clif_clearunit_delayed(struct block_list* bl, clr_type type, int64 tick) {
}
/// Gets weapon view info from sd's inventory_data and points (*rhand,*lhand)
-void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand)
+static void clif_get_weapon_view(struct map_session_data *sd, int *rhand, int *lhand)
{
nullpo_retv(sd);
nullpo_retv(rhand);
@@ -956,7 +979,8 @@ void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, un
}
//To make the assignation of the level based on limits clearer/easier. [Skotlex]
-static int clif_setlevel_sub(int lv) {
+static int clif_setlevel_sub(int lv)
+{
if( lv < battle_config.max_lv ) {
;
} else if( lv < battle_config.aura_lv ) {
@@ -968,7 +992,8 @@ static int clif_setlevel_sub(int lv) {
return lv;
}
-static int clif_setlevel(struct block_list* bl) {
+static int clif_setlevel(struct block_list *bl)
+{
int lv = status->get_lv(bl);
nullpo_retr(0, bl);
if( battle_config.client_limit_unit_lv&bl->type )
@@ -981,8 +1006,10 @@ static int clif_setlevel(struct block_list* bl) {
}
return lv;
}
+
/* for 'packetver < 20091103' 0x78 non-pc-looking unit handling */
-void clif_set_unit_idle2(struct block_list* bl, struct map_session_data *tsd, enum send_target target) {
+static void clif_set_unit_idle2(struct block_list *bl, struct map_session_data *tsd, enum send_target target)
+{
#if PACKETVER < 20091103
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
@@ -1034,10 +1061,12 @@ void clif_set_unit_idle2(struct block_list* bl, struct map_session_data *tsd, en
return;
#endif
}
+
/*==========================================
* Prepares 'unit standing' packet
*------------------------------------------*/
-void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enum send_target target) {
+static void clif_set_unit_idle(struct block_list *bl, struct map_session_data *tsd, enum send_target target)
+{
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
struct view_data* vd = status->get_viewdata(bl);
@@ -1074,7 +1103,7 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu
p.head = vd->hair_style;
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
-#if PACKETVER < 7
+#if PACKETVER < 7 || PACKETVER_RE_NUM >= 20180704
p.shield = vd->shield;
#endif
p.accessory2 = vd->head_top;
@@ -1143,8 +1172,10 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu
}
}
+
/* for 'packetver < 20091103' 0x7c non-pc-looking unit handling */
-void clif_spawn_unit2(struct block_list* bl, enum send_target target) {
+static void clif_spawn_unit2(struct block_list *bl, enum send_target target)
+{
#if PACKETVER < 20091103
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
@@ -1190,7 +1221,9 @@ void clif_spawn_unit2(struct block_list* bl, enum send_target target) {
return;
#endif
}
-void clif_spawn_unit(struct block_list* bl, enum send_target target) {
+
+static void clif_spawn_unit(struct block_list *bl, enum send_target target)
+{
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
struct view_data* vd = status->get_viewdata(bl);
@@ -1227,7 +1260,7 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
p.head = vd->hair_style;
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
-#if PACKETVER < 7
+#if PACKETVER < 7 || PACKETVER_RE_NUM >= 20180704
p.shield = vd->shield;
#endif
p.accessory2 = vd->head_top;
@@ -1301,7 +1334,8 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
/*==========================================
* Prepares 'unit walking' packet
*------------------------------------------*/
-void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd, struct unit_data* ud, enum send_target target) {
+static void clif_set_unit_walking(struct block_list *bl, struct map_session_data *tsd, struct unit_data *ud, enum send_target target)
+{
struct map_session_data* sd;
struct status_change* sc = status->get_sc(bl);
struct view_data* vd = status->get_viewdata(bl);
@@ -1335,7 +1369,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
p.moveStartTime = (unsigned int)timer->gettick();
-#if PACKETVER < 7
+#if PACKETVER < 7 || PACKETVER_RE_NUM >= 20180704
p.shield = vd->shield;
#endif
p.accessory2 = vd->head_top;
@@ -1402,7 +1436,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
/// 01b0 <id>.L <type>.B <value>.L
/// type:
/// unused
-void clif_class_change(struct block_list *bl, int class_, int type, struct map_session_data *sd)
+static void clif_class_change(struct block_list *bl, int class_, int type, struct map_session_data *sd)
{
nullpo_retv(bl);
@@ -1424,7 +1458,8 @@ void clif_class_change(struct block_list *bl, int class_, int type, struct map_s
/// Notifies the client of an object's spirits.
/// 01d0 <id>.L <amount>.W (ZC_SPIRITS)
/// 01e1 <id>.L <amount>.W (ZC_SPIRITS2)
-void clif_spiritball_single(int fd, struct map_session_data *sd) {
+static void clif_spiritball_single(int fd, struct map_session_data *sd)
+{
nullpo_retv(sd);
WFIFOHEAD(fd, packet_len(0x1e1));
WFIFOW(fd,0)=0x1e1;
@@ -1436,7 +1471,7 @@ void clif_spiritball_single(int fd, struct map_session_data *sd) {
/*==========================================
* Kagerou/Oboro amulet spirit
*------------------------------------------*/
-void clif_charm_single(int fd, struct map_session_data *sd)
+static void clif_charm_single(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20110809
nullpo_retv(sd);
@@ -1453,7 +1488,8 @@ void clif_charm_single(int fd, struct map_session_data *sd)
* Run when player changes map / refreshes
* Tells its client to display all weather settings being used by this map
*------------------------------------------*/
-void clif_weather_check(struct map_session_data *sd) {
+static void clif_weather_check(struct map_session_data *sd)
+{
int16 m;
int fd;
@@ -1478,10 +1514,11 @@ void clif_weather_check(struct map_session_data *sd) {
if (map->list[m].flag.leaves)
clif->specialeffect_single(&sd->bl, 333, fd);
}
+
/**
* Run when the weather on a map changes, throws all players in map id 'm' to clif_weather_check function
**/
-void clif_weather(int16 m)
+static void clif_weather(int16 m)
{
struct s_mapiterator* iter;
struct map_session_data *sd=NULL;
@@ -1493,10 +1530,11 @@ void clif_weather(int16 m)
}
mapit->free(iter);
}
+
/**
* Main function to spawn a unit on the client (player/mob/pet/etc)
**/
-bool clif_spawn(struct block_list *bl)
+static bool clif_spawn(struct block_list *bl)
{
struct view_data *vd;
@@ -1574,19 +1612,11 @@ bool clif_spawn(struct block_list *bl)
/// Sends information about owned homunculus to the client (ZC_PROPERTY_HOMUN). [orn]
/// 022e <name>.24B <modified>.B <level>.W <hunger>.W <intimacy>.W <equip id>.W <atk>.W <matk>.W <hit>.W <crit>.W <def>.W <mdef>.W <flee>.W <aspd>.W <hp>.W <max hp>.W <sp>.W <max sp>.W <exp>.L <max exp>.L <skill points>.W <atk range>.W
-void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag) {
+static void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag)
+{
struct status_data *hstatus;
- unsigned char buf[128];
enum homun_type htype;
- int offset = 0;
-
-// probably can works also for < 20141223, but in 3CeaM packet size defined only for 20150513
-#if PACKETVER < 20150513
- int cmd = 0x22e;
-#else
- int cmd = 0x9f7;
-#endif
- int len = packet_len(cmd);
+ struct PACKET_ZC_PROPERTY_HOMUN p;
nullpo_retv(sd);
nullpo_retv(hd);
@@ -1594,75 +1624,73 @@ void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag)
hstatus = &hd->battle_status;
htype = homun->class2type(hd->homunculus.class_);
- memset(buf, 0, len);
- WBUFW(buf, 0) = cmd;
- memcpy(WBUFP(buf, 2), hd->homunculus.name, NAME_LENGTH);
+ memset(&p, 0, sizeof(p));
+ p.packetType = hominfoType;
+ memcpy(p.name, hd->homunculus.name, NAME_LENGTH);
// Bit field, bit 0 : rename_flag (1 = already renamed), bit 1 : homunc vaporized (1 = true), bit 2 : homunc dead (1 = true)
- WBUFB(buf, 26) = (!battle_config.hom_rename && hd->homunculus.rename_flag ? 0x1 : 0x0) | (hd->homunculus.vaporize == HOM_ST_REST ? 0x2 : 0) | (hd->homunculus.hp > 0 ? 0x4 : 0);
- WBUFW(buf, 27) = hd->homunculus.level;
- WBUFW(buf, 29) = hd->homunculus.hunger;
- WBUFW(buf, 31) = (unsigned short) (hd->homunculus.intimacy / 100) ;
- WBUFW(buf, 33) = 0; // equip id
+ p.flags = (!battle_config.hom_rename && hd->homunculus.rename_flag ? 0x1 : 0x0) | (hd->homunculus.vaporize == HOM_ST_REST ? 0x2 : 0) | (hd->homunculus.hp > 0 ? 0x4 : 0);
+ p.level = hd->homunculus.level;
+ p.hunger = hd->homunculus.hunger;
+ p.intimacy = hd->homunculus.intimacy / 100;
+ p.itemId = 0; // equip id
#ifdef RENEWAL
- WBUFW(buf, 35) = cap_value(hstatus->rhw.atk2, 0, INT16_MAX);
+ p.atk2 = cap_value(hstatus->rhw.atk2, 0, INT16_MAX);
#else
- WBUFW(buf,35) = cap_value(hstatus->rhw.atk2 + hstatus->batk, 0, INT16_MAX);
+ p.atk2 = cap_value(hstatus->rhw.atk2 + hstatus->batk, 0, INT16_MAX);
#endif
- WBUFW(buf,37) = cap_value(hstatus->matk_max, 0, INT16_MAX);
- WBUFW(buf,39) = hstatus->hit;
+ p.matk = cap_value(hstatus->matk_max, 0, INT16_MAX);
+ p.hit = hstatus->hit;
if (battle_config.hom_setting&0x10)
- WBUFW(buf, 41) = hstatus->luk / 3 + 1; //crit is a +1 decimal value! Just display purpose.[Vicious]
+ p.crit = hstatus->luk / 3 + 1; //crit is a +1 decimal value! Just display purpose.[Vicious]
else
- WBUFW(buf, 41) = hstatus->cri / 10;
+ p.crit = hstatus->cri / 10;
#ifdef RENEWAL
- WBUFW(buf, 43) = hstatus->def + hstatus->def2;
- WBUFW(buf, 45) = hstatus->mdef + hstatus->mdef2;
+ p.def = hstatus->def + hstatus->def2;
+ p.mdef = hstatus->mdef + hstatus->mdef2;
#else
- WBUFW(buf, 43) =hstatus->def + hstatus->vit ;
- WBUFW(buf, 45) = hstatus->mdef;
+ p.def = hstatus->def + hstatus->vit ;
+ p.mdef = hstatus->mdef;
#endif
- WBUFW(buf, 47) = hstatus->flee;
- WBUFW(buf, 49) = (flag) ? 0 : hstatus->amotion;
+ p.flee = hstatus->flee;
+ p.amotion = (flag) ? 0 : hstatus->amotion;
// probably can works also for < 20141223, but in 3CeaM packet size defined only for 20150513
#if PACKETVER < 20150513
if (hstatus->max_hp > INT16_MAX) {
- WBUFW(buf, 51) = hstatus->hp / (hstatus->max_hp / 100);
- WBUFW(buf, 53) = 100;
+ p.hp = hstatus->hp / (hstatus->max_hp / 100);
+ p.maxHp = 100;
} else {
- WBUFW(buf, 51) = hstatus->hp;
- WBUFW(buf, 53) = hstatus->max_hp;
+ p.hp = hstatus->hp;
+ p.maxHp = hstatus->max_hp;
}
#else
- WBUFL(buf, 51) = hstatus->hp;
- WBUFL(buf, 55) = hstatus->max_hp;
- offset = 4;
+ p.hp = hstatus->hp;
+ p.maxHp = hstatus->max_hp;
#endif
if (hstatus->max_sp > INT16_MAX) {
- WBUFW(buf, 55 + offset) = hstatus->sp / (hstatus->max_sp / 100);
- WBUFW(buf, 57 + offset) = 100;
+ p.sp = hstatus->sp / (hstatus->max_sp / 100);
+ p.maxSp = 100;
} else {
- WBUFW(buf, 55 + offset) = hstatus->sp;
- WBUFW(buf, 57 + offset) = hstatus->max_sp;
+ p.sp = hstatus->sp;
+ p.maxSp = hstatus->max_sp;
}
- WBUFL(buf, 59 + offset) = hd->homunculus.exp;
- WBUFL(buf, 63 + offset) = hd->exp_next;
+ p.exp = hd->homunculus.exp;
+ p.expNext = hd->exp_next;
switch (htype) {
case HT_REG:
case HT_EVO:
if (hd->homunculus.level >= battle_config.hom_max_level)
- WBUFL(buf, 63 + offset) = 0;
+ p.expNext = 0;
break;
case HT_S:
if (hd->homunculus.level >= battle_config.hom_S_max_level)
- WBUFL(buf, 63 + offset) = 0;
+ p.expNext = 0;
break;
}
- WBUFW(buf, 67 + offset) = hd->homunculus.skillpts;
- WBUFW(buf, 69 + offset) = status_get_range(&hd->bl);
-
- clif->send(buf, len, &sd->bl, SELF);
+ p.skillPoints = hd->homunculus.skillpts;
+ p.range = status_get_range(&hd->bl);
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
}
/// Notification about a change in homunuculus' state (ZC_CHANGESTATE_MER).
@@ -1675,7 +1703,7 @@ void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag)
/// 2 = hunger
/// 3 = accessory?
/// ? = ignored
-void clif_send_homdata(struct map_session_data *sd, int state, int param)
+static void clif_send_homdata(struct map_session_data *sd, int state, int param)
{
int fd;
@@ -1696,7 +1724,8 @@ void clif_send_homdata(struct map_session_data *sd, int state, int param)
}
/// Prepares and sends homun related information [orn]
-void clif_homskillinfoblock(struct map_session_data *sd) {
+static void clif_homskillinfoblock(struct map_session_data *sd)
+{
struct homun_data *hd;
int fd;
int i,j;
@@ -1737,7 +1766,9 @@ void clif_homskillinfoblock(struct map_session_data *sd) {
return;
}
-void clif_homskillup(struct map_session_data *sd, uint16 skill_id) { //[orn]
+//[orn]
+static void clif_homskillup(struct map_session_data *sd, uint16 skill_id)
+{
struct homun_data *hd;
int fd, idx;
nullpo_retv(sd);
@@ -1757,24 +1788,30 @@ void clif_homskillup(struct map_session_data *sd, uint16 skill_id) { //[orn]
WFIFOSET(fd,packet_len(0x239));
}
-void clif_hom_food(struct map_session_data *sd,int foodid,int fail)
+/// Result of request to feed a homun/merc (ZC_FEED_MER).
+/// 022f <result>.B <name id>.W
+/// result:
+/// 0 = failure
+/// 1 = success
+static void clif_hom_food(struct map_session_data *sd, int foodid, int fail)
{
int fd;
+ struct PACKET_ZC_FEED_MER p;
+
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd,packet_len(0x22f));
- WFIFOW(fd,0)=0x22f;
- WFIFOB(fd,2)=fail;
- WFIFOW(fd,3)=foodid;
- WFIFOSET(fd,packet_len(0x22f));
-
- return;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x22f;
+ p.result = fail;
+ p.itemId = foodid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Notifies the client, that it is walking (ZC_NOTIFY_PLAYERMOVE).
/// 0087 <walk start time>.L <walk data>.6B
-void clif_walkok(struct map_session_data *sd)
+static void clif_walkok(struct map_session_data *sd)
{
int fd;
@@ -1787,7 +1824,8 @@ void clif_walkok(struct map_session_data *sd)
WFIFOSET(fd,packet_len(0x87));
}
-void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *ud) {
+static void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *ud)
+{
#ifdef ANTI_MAYAP_CHEAT
struct status_change *sc = NULL;
#endif
@@ -1841,7 +1879,7 @@ void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *u
/// Notifies clients in an area, that an other visible object is walking (ZC_NOTIFY_PLAYERMOVE).
/// 0086 <id>.L <walk data>.6B <walk start time>.L
/// Note: unit must not be self
-void clif_move(struct unit_data *ud)
+static void clif_move(struct unit_data *ud)
{
unsigned char buf[16];
struct view_data *vd;
@@ -1895,7 +1933,8 @@ void clif_move(struct unit_data *ud)
/*==========================================
* Delays the map->quit of a player after they are disconnected. [Skotlex]
*------------------------------------------*/
-int clif_delayquit(int tid, int64 tick, int id, intptr_t data) {
+static int clif_delayquit(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = NULL;
//Remove player from map server
@@ -1907,7 +1946,8 @@ int clif_delayquit(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
*
*------------------------------------------*/
-void clif_quitsave(int fd, struct map_session_data *sd) {
+static void clif_quitsave(int fd, struct map_session_data *sd)
+{
nullpo_retv(sd);
if (!battle_config.prevent_logout ||
DIFF_TICK(timer->gettick(), sd->canlog_tick) > battle_config.prevent_logout)
@@ -1923,7 +1963,8 @@ void clif_quitsave(int fd, struct map_session_data *sd) {
/// Notifies the client of a position change to coordinates on given map (ZC_NPCACK_MAPMOVE).
/// 0091 <map name>.16B <x>.W <y>.W
-void clif_changemap(struct map_session_data *sd, short m, int x, int y) {
+static void clif_changemap(struct map_session_data *sd, short m, int x, int y)
+{
int fd;
nullpo_retv(sd);
fd = sd->fd;
@@ -1938,7 +1979,7 @@ void clif_changemap(struct map_session_data *sd, short m, int x, int y) {
/// Notifies the client of a position change (on air ship) to coordinates on given map (ZC_AIRSHIP_MAPMOVE).
/// 0A4B <map name>.16B <x>.W <y>.W
-void clif_changemap_airship(struct map_session_data *sd, short m, int x, int y)
+static void clif_changemap_airship(struct map_session_data *sd, short m, int x, int y)
{
#if PACKETVER_MAIN_NUM >= 20180620 || PACKETVER_RE_NUM >= 20180321 || PACKETVER_ZERO_NUM >= 20171027
// [4144] this packet is not used yet by kro, but it here
@@ -1958,7 +1999,8 @@ void clif_changemap_airship(struct map_session_data *sd, short m, int x, int y)
/// Notifies the client of a position change to coordinates on given map, which is on another map-server (ZC_NPCACK_SERVERMOVE).
/// 0092 <map name>.16B <x>.W <y>.W <ip>.L <port>.W
/// 0ac7 <map name>.16B <x>.W <y>.W <ip>.L <port>.W <zero>.128B
-void clif_changemapserver(struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port) {
+static void clif_changemapserver(struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port)
+{
int fd;
#if PACKETVER >= 20170315
const int cmd = 0xac7;
@@ -1980,7 +2022,7 @@ void clif_changemapserver(struct map_session_data* sd, unsigned short map_index,
/// Notifies the client of a position change (with air ship) to coordinates on given map, which is on another map-server (ZC_NPCACK_SERVERMOVE).
/// 0a4c <map name>.16B <x>.W <y>.W <ip>.L <port>.W
-void clif_changemapserver_airship(struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port)
+static void clif_changemapserver_airship(struct map_session_data *sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port)
{
#if (PACKETVER_MAIN_NUM >= 20180620) || (PACKETVER_RE_NUM >= 20180321) || (PACKETVER_ZERO_NUM >= 20171027)
// [4144] this packet is not used yet by kro, but it here
@@ -2000,7 +2042,7 @@ void clif_changemapserver_airship(struct map_session_data* sd, unsigned short ma
#endif
}
-void clif_blown(struct block_list *bl)
+static void clif_blown(struct block_list *bl)
{
//Aegis packets says fixpos, but it's unsure whether slide works better or not.
nullpo_retv(bl);
@@ -2012,7 +2054,8 @@ void clif_blown(struct block_list *bl)
/// isn't walkable, the char doesn't move at all. If the char is
/// sitting it will stand up (ZC_STOPMOVE).
/// 0088 <id>.L <x>.W <y>.W
-void clif_fixpos(struct block_list *bl) {
+static void clif_fixpos(struct block_list *bl)
+{
unsigned char buf[10];
nullpo_retv(bl);
@@ -2031,7 +2074,7 @@ void clif_fixpos(struct block_list *bl) {
/// Displays the buy/sell dialog of an NPC shop (ZC_SELECT_DEALTYPE).
/// 00c4 <shop id>.L
-void clif_npcbuysell(struct map_session_data* sd, int id)
+static void clif_npcbuysell(struct map_session_data *sd, int id)
{
int fd;
@@ -2046,15 +2089,17 @@ void clif_npcbuysell(struct map_session_data* sd, int id)
/// Presents list of items, that can be bought in an NPC shop (ZC_PC_PURCHASE_ITEMLIST).
/// 00c6 <packet len>.W { <price>.L <discount price>.L <item type>.B <name id>.W }*
-void clif_buylist(struct map_session_data *sd, struct npc_data *nd) {
+static void clif_buylist(struct map_session_data *sd, struct npc_data *nd)
+{
struct npc_item_list *shop = NULL;
unsigned short shop_size = 0;
- int fd,i,c;
+ int fd, i, c, len;
+ struct PACKET_ZC_PC_PURCHASE_ITEMLIST *p;
nullpo_retv(sd);
nullpo_retv(nd);
- if( nd->subtype == SCRIPT ) {
+ if (nd->subtype == SCRIPT) {
shop = nd->u.scr.shop->item;
shop_size = nd->u.scr.shop->items;
} else {
@@ -2064,31 +2109,34 @@ void clif_buylist(struct map_session_data *sd, struct npc_data *nd) {
fd = sd->fd;
- WFIFOHEAD(fd, 4 + shop_size * 11);
- WFIFOW(fd,0) = 0xc6;
+ len = sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST) + shop_size * sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0xc6;
c = 0;
- for( i = 0; i < shop_size; i++ ) {
- if( shop[i].nameid ) {
+ for (i = 0; i < shop_size; i++) {
+ if (shop[i].nameid) {
struct item_data* id = itemdb->exists(shop[i].nameid);
int val = shop[i].value;
- if( id == NULL )
+ if (id == NULL)
continue;
- WFIFOL(fd, 4+c*11) = val;
- WFIFOL(fd, 8+c*11) = pc->modifybuyvalue(sd,val);
- WFIFOB(fd,12+c*11) = itemtype(id->type);
- WFIFOW(fd,13+c*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid;
+ p->items[c].price = val;
+ p->items[c].discountPrice = pc->modifybuyvalue(sd, val);
+ p->items[c].itemType = itemtype(id->type);
+ p->items[c].itemId = (id->view_id > 0) ? id->view_id : id->nameid;
c++;
}
}
- WFIFOW(fd,2) = 4 + c*11;
- WFIFOSET(fd,WFIFOW(fd,2));
+ len = sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST) + c * sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
}
/// Presents list of items, that can be sold to an NPC shop (ZC_PC_SELL_ITEMLIST).
/// 00c7 <packet len>.W { <index>.W <price>.L <overcharge price>.L }*
-void clif_selllist(struct map_session_data *sd)
+static void clif_selllist(struct map_session_data *sd)
{
int fd,i,c=0,val;
@@ -2131,7 +2179,7 @@ void clif_selllist(struct map_session_data *sd)
/// - set npcid of dialog window (0 by default)
/// - if set to clear on next mes, clear contents
/// - append this text
-void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
+static void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
{
int fd, slen;
#ifdef SCRIPT_MES_STRIP_LINEBREAK
@@ -2176,7 +2224,7 @@ void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes)
/// - 00B9 <npcid of dialog window>.L
/// - set to clear on next mes
/// - remove 'next' button
-void clif_scriptnext(struct map_session_data *sd, int npcid)
+static void clif_scriptnext(struct map_session_data *sd, int npcid)
{
int fd;
@@ -2204,7 +2252,7 @@ void clif_scriptnext(struct map_session_data *sd, int npcid)
/// - close the dialog window
/// - close the menu window
/// - 0146 <npcid of dialog window>.L
-void clif_scriptclose(struct map_session_data *sd, int npcid)
+static void clif_scriptclose(struct map_session_data *sd, int npcid)
{
int fd;
@@ -2220,7 +2268,8 @@ void clif_scriptclose(struct map_session_data *sd, int npcid)
/*==========================================
*
*------------------------------------------*/
-void clif_sendfakenpc(struct map_session_data *sd, int npcid) {
+static void clif_sendfakenpc(struct map_session_data *sd, int npcid)
+{
unsigned char *buf;
int fd;
@@ -2263,7 +2312,7 @@ void clif_sendfakenpc(struct map_session_data *sd, int npcid) {
/// WARNING: the 'cancel' button closes other windows besides the dialog window and the menu window.
/// Which suggests their have intertwined behavior. (probably the mouse targeting)
/// TODO investigate behavior of other windows [FlavioJS]
-void clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes)
+static void clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes)
{
int fd, slen;
struct block_list *bl = NULL;
@@ -2299,7 +2348,8 @@ void clif_scriptmenu(struct map_session_data *sd, int npcid, const char *mes)
/// - if npcid exists in the client:
/// - 0143 <npcid of inputnum window>.L <atoi(text)>.L
/// - close inputnum window
-void clif_scriptinput(struct map_session_data *sd, int npcid) {
+static void clif_scriptinput(struct map_session_data *sd, int npcid)
+{
int fd;
struct block_list *bl = NULL;
@@ -2328,7 +2378,8 @@ void clif_scriptinput(struct map_session_data *sd, int npcid) {
/// - if npcid is 0 or npcid exists in the client:
/// - 01d5 <packetlen>.W <npcid of inputstr window>.L <text>.?B
/// - close inputstr window
-void clif_scriptinputstr(struct map_session_data *sd, int npcid) {
+static void clif_scriptinputstr(struct map_session_data *sd, int npcid)
+{
int fd;
struct block_list *bl = NULL;
@@ -2356,7 +2407,7 @@ void clif_scriptinputstr(struct map_session_data *sd, int npcid) {
/// 2 = remove mark
/// color:
/// 0x00RRGGBB
-void clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color)
+static void clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color)
{
int fd;
@@ -2384,7 +2435,7 @@ void clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, in
/// 3 = middle of screen, inside a movable window
/// 4 = middle of screen, movable with a close button, chrome-less
/// 255 = hide
-void clif_cutin(struct map_session_data* sd, const char* image, int type)
+static void clif_cutin(struct map_session_data *sd, const char *image, int type)
{
int fd;
@@ -2401,104 +2452,55 @@ void clif_cutin(struct map_session_data* sd, const char* image, int type)
/*==========================================
* Fills in card data from the given item and into the buffer. [Skotlex]
*------------------------------------------*/
-void clif_addcards(unsigned char* buf, struct item* item) {
- int i=0,j;
+static void clif_addcards(struct EQUIPSLOTINFO *buf, struct item *item)
+{
+ int i = 0, j;
nullpo_retv(buf);
- if( item == NULL ) { //Blank data
- WBUFW(buf,0) = 0;
- WBUFW(buf,2) = 0;
- WBUFW(buf,4) = 0;
- WBUFW(buf,6) = 0;
- return;
- }
- if( item->card[0] == CARD0_PET ) { //pet eggs
- WBUFW(buf,0) = 0;
- WBUFW(buf,2) = 0;
- WBUFW(buf,4) = 0;
- WBUFW(buf,6) = item->card[3]; //Pet renamed flag.
- return;
- }
- if( item->card[0] == CARD0_FORGE || item->card[0] == CARD0_CREATE ) { //Forged/created items
- WBUFW(buf,0) = item->card[0];
- WBUFW(buf,2) = item->card[1];
- WBUFW(buf,4) = item->card[2];
- WBUFW(buf,6) = item->card[3];
- return;
- }
- //Client only receives four cards.. so randomly send them a set of cards. [Skotlex]
- if( MAX_SLOTS > 4 && (j = itemdb_slot(item->nameid)) > 4 )
- i = rnd()%(j-3); //eg: 6 slots, possible i values: 0->3, 1->4, 2->5 => i = rnd()%3;
-
- //Normal items.
- if( item->card[i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- WBUFW(buf,0) = j;
- else
- WBUFW(buf,0) = item->card[i];
-
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- WBUFW(buf,2) = j;
- else
- WBUFW(buf,2) = item->card[i];
-
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- WBUFW(buf,4) = j;
- else
- WBUFW(buf,4) = item->card[i];
-
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- WBUFW(buf,6) = j;
- else
- WBUFW(buf,6) = item->card[i];
-}
-
-void clif_addcards2(unsigned short *cards, struct item* item) {
- int i=0,j;
- nullpo_retv(cards);
- if( item == NULL ) { //Blank data
- cards[0] = 0;
- cards[1] = 0;
- cards[2] = 0;
- cards[3] = 0;
+ if (item == NULL) { //Blank data
+ buf->card[0] = 0;
+ buf->card[1] = 0;
+ buf->card[2] = 0;
+ buf->card[3] = 0;
return;
}
- if( item->card[0] == CARD0_PET ) { //pet eggs
- cards[0] = 0;
- cards[1] = 0;
- cards[2] = 0;
- cards[3] = item->card[3]; //Pet renamed flag.
+ if (item->card[0] == CARD0_PET) { //pet eggs
+ buf->card[0] = 0;
+ buf->card[1] = 0;
+ buf->card[2] = 0;
+ buf->card[3] = item->card[3]; //Pet renamed flag.
return;
}
- if( item->card[0] == CARD0_FORGE || item->card[0] == CARD0_CREATE ) { //Forged/created items
- cards[0] = item->card[0];
- cards[1] = item->card[1];
- cards[2] = item->card[2];
- cards[3] = item->card[3];
+ if (item->card[0] == CARD0_FORGE || item->card[0] == CARD0_CREATE) { //Forged/created items
+ buf->card[0] = item->card[0];
+ buf->card[1] = item->card[1];
+ buf->card[2] = item->card[2];
+ buf->card[3] = item->card[3];
return;
}
//Client only receives four cards.. so randomly send them a set of cards. [Skotlex]
- if( MAX_SLOTS > 4 && (j = itemdb_slot(item->nameid)) > 4 )
- i = rnd()%(j-3); //eg: 6 slots, possible i values: 0->3, 1->4, 2->5 => i = rnd()%3;
+ if (MAX_SLOTS > 4 && (j = itemdb_slot(item->nameid)) > 4)
+ i = rnd() % (j - 3); //eg: 6 slots, possible i values: 0->3, 1->4, 2->5 => i = rnd()%3;
//Normal items.
- if( item->card[i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- cards[0] = j;
+ if (item->card[i] > 0 && (j = itemdb_viewid(item->card[i])) > 0)
+ buf->card[0] = j;
else
- cards[0] = item->card[i];
+ buf->card[0] = item->card[i];
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- cards[1] = j;
+ if (item->card[++i] > 0 && (j = itemdb_viewid(item->card[i])) > 0)
+ buf->card[1] = j;
else
- cards[1] = item->card[i];
+ buf->card[1] = item->card[i];
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- cards[2] = j;
+ if (item->card[++i] > 0 && (j = itemdb_viewid(item->card[i])) > 0)
+ buf->card[2] = j;
else
- cards[2] = item->card[i];
+ buf->card[2] = item->card[i];
- if( item->card[++i] > 0 && (j=itemdb_viewid(item->card[i])) > 0 )
- cards[3] = j;
+ if (item->card[++i] > 0 && (j = itemdb_viewid(item->card[i])) > 0)
+ buf->card[3] = j;
else
- cards[3] = item->card[i];
+ buf->card[3] = item->card[i];
}
/**
@@ -2509,7 +2511,7 @@ void clif_addcards2(unsigned short *cards, struct item* item) {
* @param buf[in,out] The buffer to write to. The pointer must be valid and initialized.
* @param item[in] The source item.
*/
- int clif_add_item_options(struct ItemOptions *buf, const struct item *it)
+static int clif_add_item_options(struct ItemOptions *buf, const struct item *it)
{
int i = 0, j = 0, total_options = 0;
@@ -2542,7 +2544,7 @@ void clif_addcards2(unsigned short *cards, struct item* item) {
/// 0990 <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W (ZC_ITEM_PICKUP_ACK_V5)
/// 0a0c <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W (ZC_ITEM_PICKUP_ACK_V6)
/// 0a37 <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W <favorite>.B <view id>.W (ZC_ITEM_PICKUP_ACK_V7)
-void clif_additem(struct map_session_data *sd, int n, int amount, int fail)
+static void clif_additem(struct map_session_data *sd, int n, int amount, int fail)
{
struct packet_additem p;
nullpo_retv(sd);
@@ -2569,7 +2571,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail)
p.IsIdentified = sd->status.inventory[n].identify ? 1 : 0;
p.IsDamaged = (sd->status.inventory[n].attribute & ATTR_BROKEN) != 0 ? 1 : 0;
p.refiningLevel =sd->status.inventory[n].refine;
- clif->addcards2(&p.slot.card[0], &sd->status.inventory[n]);
+ clif->addcards(&p.slot, &sd->status.inventory[n]);
p.location = pc->equippoint(sd,n);
p.type = itemtype(sd->inventory_data[n]->type);
#if PACKETVER >= 20061218
@@ -2596,7 +2598,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail)
/// Notifies the client, that an inventory item was deleted or dropped (ZC_ITEM_THROW_ACK).
/// 00af <index>.W <amount>.W
-void clif_dropitem(struct map_session_data *sd,int n,int amount)
+static void clif_dropitem(struct map_session_data *sd, int n, int amount)
{
int fd;
@@ -2613,7 +2615,7 @@ void clif_dropitem(struct map_session_data *sd,int n,int amount)
/// Notifies the client, that an inventory item was deleted (ZC_DELETE_ITEM_FROM_BODY).
/// 07fa <delete type>.W <index>.W <amount>.W
/// delete type: @see enum delitem_reason
-void clif_delitem(struct map_session_data *sd,int n,int amount, short reason)
+static void clif_delitem(struct map_session_data *sd, int n, int amount, short reason)
{
#if PACKETVER < 20091117
clif->dropitem(sd,n,amount);
@@ -2637,7 +2639,8 @@ void clif_delitem(struct map_session_data *sd,int n,int amount, short reason)
// Equip is >= 0 for equippable items (holds the equip-point, is 0 for pet
// armor/egg) -1 for stackable items, -2 for stackable items where arrows must send in the equip-point.
// look like unused, not adding checks
-void clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *id, int equip) {
+static void clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *id, int equip)
+{
if (id->view_id > 0)
WBUFW(buf,n)=id->view_id;
else
@@ -2659,7 +2662,7 @@ void clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *
}
-void clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *it, struct item_data *id, int eqp_pos)
+static void clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *it, struct item_data *id, int eqp_pos)
{
nullpo_retv(p);
nullpo_retv(it);
@@ -2684,7 +2687,7 @@ void clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *it, struc
#endif
p->RefiningLevel = it->refine;
- clif->addcards2(&p->slot.card[0], it);
+ clif->addcards(&p->slot, it);
#if PACKETVER >= 20071002
p->HireExpireDate = it->expire_time;
@@ -2710,7 +2713,8 @@ void clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *it, struc
#endif
}
-void clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id) {
+static void clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id)
+{
nullpo_retv(p);
nullpo_retv(i);
nullpo_retv(id);
@@ -2732,7 +2736,7 @@ void clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, stru
p->WearState = id->equip;
#if PACKETVER >= 5
- clif->addcards2(&p->slot.card[0], i);
+ clif->addcards(&p->slot, i);
#endif
#if PACKETVER >= 20080102
@@ -2746,7 +2750,8 @@ void clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *i, stru
#endif
}
-void clif_inventorylist(struct map_session_data *sd) {
+static void clif_inventorylist(struct map_session_data *sd)
+{
int i, normal = 0, equip = 0;
nullpo_retv(sd);
@@ -2789,7 +2794,8 @@ void clif_inventorylist(struct map_session_data *sd) {
}
//Required when items break/get-repaired. Only sends equippable item list.
-void clif_equiplist(struct map_session_data *sd) {
+static void clif_equiplist(struct map_session_data *sd)
+{
int i, equip = 0;
nullpo_retv(sd);
@@ -2820,7 +2826,8 @@ void clif_equiplist(struct map_session_data *sd) {
#endif
}
-void clif_storagelist(struct map_session_data* sd, struct item* items, int items_length) {
+static void clif_storagelist(struct map_session_data *sd, struct item *items, int items_length)
+{
int i = 0;
struct item_data *id;
@@ -2868,7 +2875,8 @@ void clif_storagelist(struct map_session_data* sd, struct item* items, int items
}
-void clif_cartlist(struct map_session_data *sd) {
+static void clif_cartlist(struct map_session_data *sd)
+{
int i, normal = 0, equip = 0;
struct item_data *id;
@@ -2905,7 +2913,7 @@ void clif_cartlist(struct map_session_data *sd) {
/// Client behavior:
/// Closes the cart storage and removes all it's items from memory.
/// The Num & Weight values of the cart are left untouched and the cart is NOT removed.
-void clif_clearcart(int fd)
+static void clif_clearcart(int fd)
{
WFIFOHEAD(fd, packet_len(0x12b));
WFIFOW(fd,0) = 0x12b;
@@ -2915,7 +2923,7 @@ void clif_clearcart(int fd)
/// Guild XY locators (ZC_NOTIFY_POSITION_TO_GUILDM) [Valaris]
/// 01eb <account id>.L <x>.W <y>.W
-void clif_guild_xy(struct map_session_data *sd)
+static void clif_guild_xy(struct map_session_data *sd)
{
unsigned char buf[10];
@@ -2931,7 +2939,7 @@ void clif_guild_xy(struct map_session_data *sd)
/*==========================================
* Sends x/y dot to a single fd. [Skotlex]
*------------------------------------------*/
-void clif_guild_xy_single(int fd, struct map_session_data *sd)
+static void clif_guild_xy_single(int fd, struct map_session_data *sd)
{
if( sd->bg_id )
return;
@@ -2946,7 +2954,7 @@ void clif_guild_xy_single(int fd, struct map_session_data *sd)
}
// Guild XY locators [Valaris]
-void clif_guild_xy_remove(struct map_session_data *sd)
+static void clif_guild_xy_remove(struct map_session_data *sd)
{
unsigned char buf[10];
@@ -2962,7 +2970,7 @@ void clif_guild_xy_remove(struct map_session_data *sd)
/*==========================================
*
*------------------------------------------*/
-int clif_hpmeter_sub(struct block_list *bl, va_list ap)
+static int clif_hpmeter_sub(struct block_list *bl, va_list ap)
{
#if PACKETVER < 20100126
const int cmd = 0x106;
@@ -3004,7 +3012,8 @@ int clif_hpmeter_sub(struct block_list *bl, va_list ap)
* Server tells all players that are allowed to view HP bars
* and are nearby 'sd' that 'sd' hp bar was updated.
*------------------------------------------*/
-int clif_hpmeter(struct map_session_data *sd) {
+static int clif_hpmeter(struct map_session_data *sd)
+{
nullpo_ret(sd);
map->foreachinarea(clif->hpmeter_sub, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_PC, sd);
return 0;
@@ -3018,7 +3027,7 @@ int clif_hpmeter(struct map_session_data *sd) {
/// 013a <atk range>.W (ZC_ATTACK_RANGE)
/// 0141 <status id>.L <base status>.L <plus status>.L (ZC_COUPLESTATUS)
/// TODO: Extract individual packets.
-void clif_updatestatus(struct map_session_data *sd,int type)
+static void clif_updatestatus(struct map_session_data *sd, int type)
{
int fd,len;
@@ -3274,7 +3283,7 @@ void clif_updatestatus(struct map_session_data *sd,int type)
/// Notifies client of a parameter change of an another player (ZC_PAR_CHANGE_USER).
/// 01ab <account id>.L <var id>.W <value>.L
-void clif_changestatus(struct map_session_data* sd,int type,int val)
+static void clif_changestatus(struct map_session_data *sd, int type, int val)
{
unsigned char buf[12];
@@ -3298,7 +3307,7 @@ void clif_changestatus(struct map_session_data* sd,int type,int val)
}
/// Updates sprite/style properties of an object.
-void clif_changelook(struct block_list *bl,int type,int val)
+static void clif_changelook(struct block_list *bl, int type, int val)
{
struct map_session_data* sd;
struct status_change* sc;
@@ -3451,34 +3460,28 @@ void clif_changelook(struct block_list *bl,int type,int val)
}
//Sends a change-base-look packet required for traps as they are triggered.
-void clif_changetraplook(struct block_list *bl,int val)
+static void clif_changetraplook(struct block_list *bl, int val)
{
clif->sendlook(bl, bl->id, LOOK_BASE, val, 0, AREA);
}
/// 00c3 <id>.L <type>.B <value>.B (ZC_SPRITE_CHANGE)
/// 01d7 <id>.L <type>.B <value>.L (ZC_SPRITE_CHANGE2)
-void clif_sendlook(struct block_list *bl, int id, int type, int val, int val2, enum send_target target)
+static void clif_sendlook(struct block_list *bl, int id, int type, int val, int val2, enum send_target target)
{
- unsigned char buf[32];
-#if PACKETVER < 4
- WBUFW(buf,0)=0xc3;
- WBUFL(buf,2)=id;
- WBUFB(buf,6)=type;
- WBUFB(buf,7)=val;
- clif->send(buf,packet_len(0xc3),bl,target);
-#else
- WBUFW(buf,0)=0x1d7;
- WBUFL(buf,2)=id;
- WBUFB(buf,6)=type;
- WBUFW(buf,7)=val;
- WBUFW(buf,9)=val2;
- clif->send(buf,packet_len(0x1d7),bl,target);
+ struct PACKET_ZC_SPRITE_CHANGE p;
+ p.packetType = sendLookType;
+ p.AID = id;
+ p.type = type;
+ p.val = val;
+#if PACKETVER >= 4
+ p.val2 = val2;
#endif
+ clif->send(&p, sizeof(p), bl, target);
}
//For the stupid cloth-dye bug. Resends the given view data to the area specified by bl.
-void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_target target)
+static void clif_refreshlook(struct block_list *bl, int id, int type, int val, enum send_target target)
{
clif->sendlook(bl, id, type, val, 0, target);
}
@@ -3488,7 +3491,8 @@ void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_ta
/// <int>.B <need int>.B <dex>.B <need dex>.B <luk>.B <need luk>.B <atk>.W <atk2>.W
/// <matk min>.W <matk max>.W <def>.W <def2>.W <mdef>.W <mdef2>.W <hit>.W
/// <flee>.W <flee2>.W <crit>.W <aspd>.W <aspd2>.W
-void clif_initialstatus(struct map_session_data *sd) {
+static void clif_initialstatus(struct map_session_data *sd)
+{
int fd, mdef2;
unsigned char *buf;
@@ -3548,7 +3552,7 @@ void clif_initialstatus(struct map_session_data *sd) {
/// Marks an ammunition item in inventory as equipped (ZC_EQUIP_ARROW).
/// 013c <index>.W
-void clif_arrowequip(struct map_session_data *sd,int val)
+static void clif_arrowequip(struct map_session_data *sd, int val)
{
int fd;
@@ -3573,7 +3577,7 @@ void clif_arrowequip(struct map_session_data *sd,int val)
/// 3 = assassin, baby_assassin, assassin_cross => MsgStringTable[1040]="You have equipped throwing daggers."
/// gunslinger => MsgStringTable[1175]="Bullets have been equipped."
/// NOT ninja => MsgStringTable[245]="Ammunition has been equipped."
-void clif_arrow_fail(struct map_session_data *sd,int type)
+static void clif_arrow_fail(struct map_session_data *sd, int type)
{
int fd;
@@ -3588,16 +3592,20 @@ void clif_arrow_fail(struct map_session_data *sd,int type)
/// Presents a list of items, that can be processed by Arrow Crafting (ZC_MAKINGARROW_LIST).
/// 01ad <packet len>.W { <name id>.W }*
-void clif_arrow_create_list(struct map_session_data *sd)
+static void clif_arrow_create_list(struct map_session_data *sd)
{
int i, c;
int fd;
+ int len;
+ struct PACKET_ZC_MAKINGARROW_LIST *p;
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd, MAX_SKILL_ARROW_DB*2+4);
- WFIFOW(fd,0) = 0x1ad;
+ len = MAX_SKILL_ARROW_DB * sizeof(struct PACKET_ZC_MAKINGARROW_LIST_sub) + sizeof(struct PACKET_ZC_MAKINGARROW_LIST);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x1ad;
for (i = 0, c = 0; i < MAX_SKILL_ARROW_DB; i++) {
int j;
@@ -3606,14 +3614,15 @@ void clif_arrow_create_list(struct map_session_data *sd)
&& !sd->status.inventory[j].equip && sd->status.inventory[j].identify
) {
if ((j = itemdb_viewid(skill->dbs->arrow_db[i].nameid)) > 0)
- WFIFOW(fd,c*2+4) = j;
+ p->items[c].itemId = j;
else
- WFIFOW(fd,c*2+4) = skill->dbs->arrow_db[i].nameid;
+ p->items[c].itemId = skill->dbs->arrow_db[i].nameid;
c++;
}
}
- WFIFOW(fd,2) = c*2+4;
- WFIFOSET(fd, WFIFOW(fd,2));
+ len = c * sizeof(struct PACKET_ZC_MAKINGARROW_LIST_sub) + sizeof(struct PACKET_ZC_MAKINGARROW_LIST);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
if (c > 0) {
sd->menuskill_id = AC_MAKINGARROW;
sd->menuskill_val = c;
@@ -3627,7 +3636,7 @@ void clif_arrow_create_list(struct map_session_data *sd)
/// result:
/// 0 = failure
/// 1 = success
-void clif_statusupack(struct map_session_data *sd,int type,int ok,int val)
+static void clif_statusupack(struct map_session_data *sd, int type, int ok, int val)
{
int fd;
@@ -3645,7 +3654,8 @@ void clif_statusupack(struct map_session_data *sd,int type,int ok,int val)
/// Notifies the client about the result of a request to equip an item (ZC_REQ_WEAR_EQUIP_ACK).
/// 00aa <index>.W <equip location>.W <result>.B
/// 00aa <index>.W <equip location>.W <view id>.W <result>.B (PACKETVER >= 20100629)
-void clif_equipitemack(struct map_session_data *sd,int n,int pos,enum e_EQUIP_ITEM_ACK result) {
+static void clif_equipitemack(struct map_session_data *sd, int n, int pos, enum e_EQUIP_ITEM_ACK result)
+{
struct packet_equipitem_ack p;
nullpo_retv(sd);
@@ -3666,7 +3676,8 @@ void clif_equipitemack(struct map_session_data *sd,int n,int pos,enum e_EQUIP_IT
/// Notifies the client about the result of a request to take off an item (ZC_REQ_TAKEOFF_EQUIP_ACK).
/// 00ac <index>.W <equip location>.W <result>.B
-void clif_unequipitemack(struct map_session_data *sd,int n,int pos,enum e_UNEQUIP_ITEM_ACK result) {
+static void clif_unequipitemack(struct map_session_data *sd, int n, int pos, enum e_UNEQUIP_ITEM_ACK result)
+{
struct packet_unequipitem_ack p;
nullpo_retv(sd);
@@ -3692,7 +3703,7 @@ void clif_unequipitemack(struct map_session_data *sd,int n,int pos,enum e_UNEQUI
/// 7 = base level up (super novice)
/// 8 = job level up (super novice)
/// 9 = base level up (taekwon)
-void clif_misceffect(struct block_list* bl,int type)
+static void clif_misceffect(struct block_list *bl, int type)
{
unsigned char buf[32];
@@ -3708,7 +3719,7 @@ void clif_misceffect(struct block_list* bl,int type)
/// Notifies clients in the area of a state change.
/// 0119 <id>.L <body state>.W <health state>.W <effect state>.W <pk mode>.B (ZC_STATE_CHANGE)
/// 0229 <id>.L <body state>.W <health state>.W <effect state>.L <pk mode>.B (ZC_STATE_CHANGE3)
-void clif_changeoption(struct block_list* bl)
+static void clif_changeoption(struct block_list *bl)
{
unsigned char buf[32];
struct status_change *sc;
@@ -3759,7 +3770,8 @@ void clif_changeoption(struct block_list* bl)
/// Displays status change effects on NPCs/monsters (ZC_NPC_SHOWEFST_UPDATE).
/// 028a <id>.L <effect state>.L <level>.L <showEFST>.L
-void clif_changeoption2(struct block_list* bl) {
+static void clif_changeoption2(struct block_list *bl)
+{
unsigned char buf[20];
struct status_change *sc;
@@ -3786,42 +3798,35 @@ void clif_changeoption2(struct block_list* bl) {
/// Notifies the client about the result of an item use request.
/// 00a8 <index>.W <amount>.W <result>.B (ZC_USE_ITEM_ACK)
/// 01c8 <index>.W <name id>.W <id>.L <amount>.W <result>.B (ZC_USE_ITEM_ACK2)
-void clif_useitemack(struct map_session_data *sd,int index,int amount,bool ok)
+static void clif_useitemack(struct map_session_data *sd, int index, int amount, bool ok)
{
+ struct PACKET_ZC_USE_ITEM_ACK p;
+ int fd;
+
nullpo_retv(sd);
- if(!ok) {
- int fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0xa8));
- WFIFOW(fd,0)=0xa8;
- WFIFOW(fd,2)=index+2;
- WFIFOW(fd,4)=amount;
- WFIFOB(fd,6)=ok;
- WFIFOSET(fd,packet_len(0xa8));
- }
- else {
-#if PACKETVER < 3
- int fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0xa8));
- WFIFOW(fd,0)=0xa8;
- WFIFOW(fd,2)=index+2;
- WFIFOW(fd,4)=amount;
- WFIFOB(fd,6)=ok;
- WFIFOSET(fd,packet_len(0xa8));
-#else
- unsigned char buf[32];
+ if (index < 0 || index >= MAX_INVENTORY)
+ return;
- WBUFW(buf,0)=0x1c8;
- WBUFW(buf,2)=index+2;
- if(sd->inventory_data[index] && sd->inventory_data[index]->view_id > 0)
- WBUFW(buf,4)=sd->inventory_data[index]->view_id;
- else
- WBUFW(buf,4)=sd->status.inventory[index].nameid;
- WBUFL(buf,6)=sd->bl.id;
- WBUFW(buf,10)=amount;
- WBUFB(buf,12)=ok;
- clif->send(buf,packet_len(0x1c8),&sd->bl,AREA);
+ fd = sd->fd;
+ p.packetType = useItemAckType;
+ p.index = index + 2;
+#if PACKETVER > 3
+ if (sd->inventory_data[index] && sd->inventory_data[index]->view_id > 0)
+ p.itemId = sd->inventory_data[index]->view_id;
+ else
+ p.itemId = sd->status.inventory[index].nameid;
+ p.AID = sd->bl.id;
#endif
+ p.amount = amount;
+ p.result = ok;
+
+ if (!ok) {
+ WFIFOHEAD(fd, sizeof(p));
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
+ } else {
+ clif->send(&p, sizeof(p), &sd->bl, AREA);
}
}
@@ -3832,7 +3837,7 @@ void clif_useitemack(struct map_session_data *sd,int index,int amount,bool ok)
/// 1 = Room limit exceeded
/// 2 = Same room already exists
// TODO: Flag enum
-void clif_createchat(struct map_session_data* sd, int flag)
+static void clif_createchat(struct map_session_data *sd, int flag)
{
int fd;
@@ -3852,7 +3857,7 @@ void clif_createchat(struct map_session_data* sd, int flag)
/// 1 = public
/// 2 = arena (npc waiting room)
/// 3 = PK zone (non-clickable)
-void clif_dispchat(struct chat_data *cd, int fd)
+static void clif_dispchat(struct chat_data *cd, int fd)
{
unsigned char buf[128];
uint8 type;
@@ -3892,7 +3897,7 @@ void clif_dispchat(struct chat_data *cd, int fd)
/// 1 = public
/// 2 = arena (npc waiting room)
/// 3 = PK zone (non-clickable)
-void clif_changechatstatus(struct chat_data *cd)
+static void clif_changechatstatus(struct chat_data *cd)
{
unsigned char buf[128];
uint8 type;
@@ -3921,7 +3926,7 @@ void clif_changechatstatus(struct chat_data *cd)
/// Removes the chatroom (ZC_DESTROY_ROOM).
/// 00d8 <chat id>.L
-void clif_clearchat(struct chat_data *cd,int fd)
+static void clif_clearchat(struct chat_data *cd, int fd)
{
unsigned char buf[32];
@@ -3949,7 +3954,7 @@ void clif_clearchat(struct chat_data *cd,int fd)
/// 5 = too low level
/// 6 = too high level
/// 7 = unsuitable job class
-void clif_joinchatfail(struct map_session_data *sd,int flag)
+static void clif_joinchatfail(struct map_session_data *sd, int flag)
{
int fd;
@@ -3968,7 +3973,7 @@ void clif_joinchatfail(struct map_session_data *sd,int flag)
/// role:
/// 0 = owner (menu)
/// 1 = normal
-void clif_joinchatok(struct map_session_data *sd,struct chat_data* cd)
+static void clif_joinchatok(struct map_session_data *sd, struct chat_data *cd)
{
int fd;
int i,t;
@@ -4004,7 +4009,7 @@ void clif_joinchatok(struct map_session_data *sd,struct chat_data* cd)
/// Notifies clients in a chat about a new member (ZC_MEMBER_NEWENTRY).
/// 00dc <users>.W <name>.24B
-void clif_addchat(struct chat_data* cd,struct map_session_data *sd)
+static void clif_addchat(struct chat_data *cd, struct map_session_data *sd)
{
unsigned char buf[32];
@@ -4022,7 +4027,7 @@ void clif_addchat(struct chat_data* cd,struct map_session_data *sd)
/// role:
/// 0 = owner (menu)
/// 1 = normal
-void clif_changechatowner(struct chat_data* cd, struct map_session_data* sd)
+static void clif_changechatowner(struct chat_data *cd, struct map_session_data *sd)
{
unsigned char buf[64];
@@ -4045,7 +4050,7 @@ void clif_changechatowner(struct chat_data* cd, struct map_session_data* sd)
/// flag:
/// 0 = left
/// 1 = kicked
-void clif_leavechat(struct chat_data* cd, struct map_session_data* sd, bool flag)
+static void clif_leavechat(struct chat_data *cd, struct map_session_data *sd, bool flag)
{
unsigned char buf[32];
@@ -4063,7 +4068,7 @@ void clif_leavechat(struct chat_data* cd, struct map_session_data* sd, bool flag
/// Opens a trade request window from char 'name'.
/// 00e5 <nick>.24B (ZC_REQ_EXCHANGE_ITEM)
/// 01f4 <nick>.24B <charid>.L <baselvl>.W (ZC_REQ_EXCHANGE_ITEM2)
-void clif_traderequest(struct map_session_data *sd, const char *name)
+static void clif_traderequest(struct map_session_data *sd, const char *name)
{
int fd;
#if PACKETVER >= 6
@@ -4102,16 +4107,16 @@ void clif_traderequest(struct map_session_data *sd, const char *name)
/// 3 = Accept
/// 4 = Cancel
/// 5 = Busy
-void clif_tradestart(struct map_session_data *sd, uint8 type)
+static void clif_tradestart(struct map_session_data *sd, uint8 type)
{
int fd;
-#if PACKETVER >= 6
+#if PACKETVER >= 20090406
struct map_session_data *tsd = NULL;
#endif // PACKETVER >= 6
nullpo_retv(sd);
fd = sd->fd;
-#if PACKETVER >= 6
+#if PACKETVER >= 20090406
tsd = map->id2sd(sd->trade_partner);
if (tsd) {
WFIFOHEAD(fd,packet_len(0x1f5));
@@ -4122,76 +4127,51 @@ void clif_tradestart(struct map_session_data *sd, uint8 type)
WFIFOSET(fd,packet_len(0x1f5));
return;
}
-#endif // PACKETVER >= 6
+#else
WFIFOHEAD(fd,packet_len(0xe7));
WFIFOW(fd,0) = 0xe7;
WFIFOB(fd,2) = type;
WFIFOSET(fd,packet_len(0xe7));
+#endif // PACKETVER >= 6
}
/// Notifies the client about an item from other player in current trade.
/// 00e9 <amount>.L <nameid>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_EXCHANGE_ITEM)
/// 080f <nameid>.W <item type>.B <amount>.L <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_EXCHANGE_ITEM2)
-void clif_tradeadditem(struct map_session_data* sd, struct map_session_data* tsd, int index, int amount)
+static void clif_tradeadditem(struct map_session_data *sd, struct map_session_data *tsd, int index, int amount)
{
int fd;
- unsigned char *buf;
+ struct PACKET_ZC_ADD_EXCHANGE_ITEM p;
+
nullpo_retv(sd);
nullpo_retv(tsd);
fd = tsd->fd;
- buf = WFIFOP(fd,0);
- WFIFOHEAD(fd,packet_len(tradeaddType));
- WBUFW(buf,0) = tradeaddType;
- if( index == 0 )
- {
-#if PACKETVER < 20100223
- WBUFL(buf,2) = amount; //amount
- WBUFW(buf,6) = 0; // type id
-#else
- WBUFW(buf,2) = 0; // type id
- WBUFB(buf,4) = 0; // item type
- WBUFL(buf,5) = amount; // amount
- buf = WBUFP(buf,1); //Advance 1B
-#endif
- WBUFB(buf,8) = 0; //identify flag
- WBUFB(buf,9) = 0; // attribute
- WBUFB(buf,10)= 0; //refine
- WBUFW(buf,11)= 0; //card (4w)
- WBUFW(buf,13)= 0; //card (4w)
- WBUFW(buf,15)= 0; //card (4w)
- WBUFW(buf,17)= 0; //card (4w)
-#if PACKETVER >= 20150226
- clif->add_item_options(WBUFP(buf, 19), &sd->status.inventory[index]);
-#endif
- }
- else
+ WFIFOHEAD(fd, sizeof(p));
+ memset(&p, 0, sizeof(p));
+ p.packetType = tradeaddType;
+ p.amount = amount;
+ if (index != 0)
{
index -= 2; //index fix
-#if PACKETVER < 20100223
- WBUFL(buf,2) = amount; //amount
- if(sd->inventory_data[index] && sd->inventory_data[index]->view_id > 0)
- WBUFW(buf,6) = sd->inventory_data[index]->view_id;
- else
- WBUFW(buf,6) = sd->status.inventory[index].nameid; // type id
-#else
+ Assert_retv(index >= 0 && index < MAX_INVENTORY);
if(sd->inventory_data[index] && sd->inventory_data[index]->view_id > 0)
- WBUFW(buf,2) = sd->inventory_data[index]->view_id;
+ p.itemId = sd->inventory_data[index]->view_id;
else
- WBUFW(buf,2) = sd->status.inventory[index].nameid; // type id
- WBUFB(buf,4) = sd->inventory_data[index]->type; // item type
- WBUFL(buf,5) = amount; // amount
- buf = WBUFP(buf,1); //Advance 1B
-#endif
- WBUFB(buf,8) = sd->status.inventory[index].identify; //identify flag
- WBUFB(buf,9) = sd->status.inventory[index].attribute; // attribute
- WBUFB(buf,10)= sd->status.inventory[index].refine; //refine
- clif->addcards(WBUFP(buf, 11), &sd->status.inventory[index]);
+ p.itemId = sd->status.inventory[index].nameid;
+#if PACKETVER >= 20100223
+ p.itemType = sd->inventory_data[index]->type;
+#endif
+ p.identified = sd->status.inventory[index].identify;
+ p.damaged = sd->status.inventory[index].attribute;
+ p.refine = sd->status.inventory[index].refine;
+ clif->addcards(&p.slot, &sd->status.inventory[index]);
#if PACKETVER >= 20150226
- clif->add_item_options(WBUFP(buf, 19), &sd->status.inventory[index]);
+ clif->add_item_options(&p.option_data[0], &sd->status.inventory[index]);
#endif
}
- WFIFOSET(fd,packet_len(tradeaddType));
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Notifies the client about the result of request to add an item to the current trade (ZC_ACK_ADD_EXCHANGE_ITEM).
@@ -4200,7 +4180,9 @@ void clif_tradeadditem(struct map_session_data* sd, struct map_session_data* tsd
/// 0 = success
/// 1 = overweight
/// 2 = trade canceled
-void clif_tradeitemok(struct map_session_data* sd, int index, int fail)
+/// 3 = amount is exceeded. message 0x792
+/// 4 = other amount is exceeded. message 0x793
+static void clif_tradeitemok(struct map_session_data *sd, int index, int fail)
{
int fd;
nullpo_retv(sd);
@@ -4218,7 +4200,7 @@ void clif_tradeitemok(struct map_session_data* sd, int index, int fail)
/// who:
/// 0 = self
/// 1 = other player
-void clif_tradedeal_lock(struct map_session_data* sd, int fail)
+static void clif_tradedeal_lock(struct map_session_data *sd, int fail)
{
int fd;
nullpo_retv(sd);
@@ -4232,7 +4214,7 @@ void clif_tradedeal_lock(struct map_session_data* sd, int fail)
/// Notifies the client about the trade being canceled (ZC_CANCEL_EXCHANGE_ITEM).
/// 00ee
-void clif_tradecancelled(struct map_session_data* sd)
+static void clif_tradecancelled(struct map_session_data *sd)
{
int fd;
nullpo_retv(sd);
@@ -4248,7 +4230,7 @@ void clif_tradecancelled(struct map_session_data* sd)
/// result:
/// 0 = success
/// 1 = failure
-void clif_tradecompleted(struct map_session_data* sd, int fail)
+static void clif_tradecompleted(struct map_session_data *sd, int fail)
{
int fd;
nullpo_retv(sd);
@@ -4265,7 +4247,7 @@ void clif_tradecompleted(struct map_session_data* sd, int fail)
/// NOTE: Unknown purpose. Items are not removed until the window is
/// refreshed (ex. by putting another item in there).
/// unused
-void clif_tradeundo(struct map_session_data* sd)
+static void clif_tradeundo(struct map_session_data *sd)
{
int fd;
@@ -4278,7 +4260,7 @@ void clif_tradeundo(struct map_session_data* sd)
/// Updates storage total amount (ZC_NOTIFY_STOREITEM_COUNTINFO).
/// 00f2 <current count>.W <max count>.W
-void clif_updatestorageamount(struct map_session_data* sd, int amount, int max_amount)
+static void clif_updatestorageamount(struct map_session_data *sd, int amount, int max_amount)
{
int fd;
@@ -4295,38 +4277,39 @@ void clif_updatestorageamount(struct map_session_data* sd, int amount, int max_a
/// Notifies the client of an item being added to the storage.
/// 00f4 <index>.W <amount>.L <nameid>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_STORE)
/// 01c4 <index>.W <amount>.L <nameid>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_STORE2)
-void clif_storageitemadded(struct map_session_data* sd, struct item* i, int index, int amount)
+static void clif_storageitemadded(struct map_session_data *sd, struct item *i, int index, int amount)
{
- int view,fd;
- int offset = 0;
+ int view, fd;
+ struct PACKET_ZC_ADD_ITEM_TO_STORE p;
nullpo_retv(sd);
nullpo_retv(i);
- fd=sd->fd;
+
+ fd = sd->fd;
view = itemdb_viewid(i->nameid);
- WFIFOHEAD(fd,packet_len(storageaddType));
- WFIFOW(fd, 0) = storageaddType; // Storage item added
- WFIFOW(fd, 2) = index+1; // index
- WFIFOL(fd, 4) = amount; // amount
- WFIFOW(fd, 8) = ( view > 0 ) ? view : i->nameid; // id
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = storageaddType; // Storage item added
+ p.index = index + 1; // index
+ p.amount = amount; // amount
+ p.itemId = (view > 0) ? view : i->nameid; // id
#if PACKETVER >= 5
- WFIFOB(fd,10) = itemtype(itemdb_type(i->nameid)); //type
- offset += 1;
+ p.itemType = itemtype(itemdb_type(i->nameid)); //type
#endif
- WFIFOB(fd,10+offset) = i->identify; //identify flag
- WFIFOB(fd,11+offset) = i->attribute; // attribute
- WFIFOB(fd,12+offset) = i->refine; //refine
- clif->addcards(WFIFOP(fd,13+offset), i);
+ p.identified = i->identify; //identify flag
+ p.damaged = i->attribute; // attribute
+ p.refine = i->refine; //refine
+ clif->addcards(&p.slot, i);
#if PACKETVER >= 20150226
- clif->add_item_options(WFIFOP(fd, 21 + offset), i);
+ clif->add_item_options(&p.option_data[0], i);
#endif
- WFIFOSET(fd,packet_len(storageaddType));
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Notifies the client of an item being deleted from the storage (ZC_DELETE_ITEM_FROM_STORE).
/// 00f6 <index>.W <amount>.L
-void clif_storageitemremoved(struct map_session_data* sd, int index, int amount)
+static void clif_storageitemremoved(struct map_session_data *sd, int index, int amount)
{
int fd;
@@ -4343,7 +4326,7 @@ void clif_storageitemremoved(struct map_session_data* sd, int index, int amount)
/// Closes storage (ZC_CLOSE_STORE).
/// 00f8
-void clif_storageclose(struct map_session_data* sd)
+static void clif_storageclose(struct map_session_data *sd)
{
int fd;
@@ -4358,7 +4341,8 @@ void clif_storageclose(struct map_session_data* sd)
/*==========================================
* Server tells 'sd' player client the abouts of 'dstsd' player
*------------------------------------------*/
-void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* dstsd) {
+static void clif_getareachar_pc(struct map_session_data *sd, struct map_session_data *dstsd)
+{
struct block_list *d_bl;
int i;
@@ -4398,7 +4382,8 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds
clif->devotion(d_bl, sd);
}
-void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) {
+static void clif_getareachar_unit(struct map_session_data *sd, struct block_list *bl)
+{
struct unit_data *ud;
struct view_data *vd;
@@ -4499,7 +4484,8 @@ static inline int clif_calc_delay(int type, int div, int damage, int delay)
/*==========================================
* Estimates walk delay based on the damage criteria. [Skotlex]
*------------------------------------------*/
-int clif_calc_walkdelay(struct block_list *bl,int delay, int type, int damage, int div_) {
+static int clif_calc_walkdelay(struct block_list *bl, int delay, int type, int damage, int div_)
+{
if (type == 4 || type == 9 || damage <=0)
return 0;
@@ -4523,7 +4509,8 @@ int clif_calc_walkdelay(struct block_list *bl,int delay, int type, int damage, i
/// 08c8 <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.L <IsSPDamage>.B <div>.W <type>.B <damage2>.L (ZC_NOTIFY_ACT2)
/// type: @see enum battle_dmg_type
/// for BDT_NORMAL: [ damage: total damage, div: amount of hits, damage2: assassin dual-wield damage ]
-int clif_damage(struct block_list* src, struct block_list* dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type, int64 in_damage2) {
+static int clif_damage(struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type, int64 in_damage2)
+{
struct packet_damage p;
struct status_change *sc;
#if PACKETVER < 20071113
@@ -4602,7 +4589,7 @@ int clif_damage(struct block_list* src, struct block_list* dst, int sdelay, int
/*==========================================
* src picks up dst
*------------------------------------------*/
-void clif_takeitem(struct block_list* src, struct block_list* dst)
+static void clif_takeitem(struct block_list *src, struct block_list *dst)
{
//clif->damage(src,dst,0,0,0,0,BDT_PICKUP,0);
unsigned char buf[32];
@@ -4621,7 +4608,7 @@ void clif_takeitem(struct block_list* src, struct block_list* dst)
/*==========================================
* inform clients in area that `bl` is sitting
*------------------------------------------*/
-void clif_sitting(struct block_list* bl)
+static void clif_sitting(struct block_list *bl)
{
unsigned char buf[32];
nullpo_retv(bl);
@@ -4640,7 +4627,7 @@ void clif_sitting(struct block_list* bl)
/*==========================================
* inform clients in area that `bl` is standing
*------------------------------------------*/
-void clif_standing(struct block_list* bl)
+static void clif_standing(struct block_list *bl)
{
unsigned char buf[32];
nullpo_retv(bl);
@@ -4658,7 +4645,8 @@ void clif_standing(struct block_list* bl)
/// Inform client(s) about a map-cell change (ZC_UPDATE_MAPINFO).
/// 0192 <x>.W <y>.W <type>.W <map name>.16B
-void clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_target target) {
+static void clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_target target)
+{
unsigned char buf[32];
WBUFW(buf,0) = 0x192;
@@ -4683,30 +4671,35 @@ void clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_targe
/// Notifies the client about an item on floor (ZC_ITEM_ENTRY).
/// 009d <id>.L <name id>.W <identified>.B <x>.W <y>.W <amount>.W <subX>.B <subY>.B
-void clif_getareachar_item(struct map_session_data* sd,struct flooritem_data* fitem) {
- int view,fd;
+static void clif_getareachar_item(struct map_session_data *sd, struct flooritem_data *fitem)
+{
+ int view, fd;
+ struct PACKET_ZC_ITEM_ENTRY p;
nullpo_retv(sd);
nullpo_retv(fitem);
- fd=sd->fd;
+ fd = sd->fd;
- WFIFOHEAD(fd,packet_len(0x9d));
- WFIFOW(fd,0)=0x9d;
- WFIFOL(fd,2)=fitem->bl.id;
- if((view = itemdb_viewid(fitem->item_data.nameid)) > 0)
- WFIFOW(fd,6)=view;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x9d;
+ p.AID = fitem->bl.id;
+ if ((view = itemdb_viewid(fitem->item_data.nameid)) > 0)
+ p.itemId = view;
else
- WFIFOW(fd,6)=fitem->item_data.nameid;
- WFIFOB(fd,8)=fitem->item_data.identify;
- WFIFOW(fd,9)=fitem->bl.x;
- WFIFOW(fd,11)=fitem->bl.y;
- WFIFOW(fd,13)=fitem->item_data.amount;
- WFIFOB(fd,15)=fitem->subx;
- WFIFOB(fd,16)=fitem->suby;
- WFIFOSET(fd,packet_len(0x9d));
+ p.itemId = fitem->item_data.nameid;
+ p.identify = fitem->item_data.identify;
+ p.x = fitem->bl.x;
+ p.y = fitem->bl.y;
+ p.amount = fitem->item_data.amount;
+ p.subX = fitem->subx;
+ p.subY = fitem->suby;
+
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
-void clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum send_target target) {
+static void clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum send_target target)
+{
struct packet_graffiti_entry p;
nullpo_retv(bl);
@@ -4730,7 +4723,8 @@ void clif_graffiti_entry(struct block_list *bl, struct skill_unit *su, enum send
/// 01c9 <id>.L <creator id>.L <x>.W <y>.W <unit id>.B <visible>.B <has msg>.B <msg>.80B (ZC_SKILL_ENTRY2)
/// 08c7 <lenght>.W <id> L <creator id>.L <x>.W <y>.W <unit id>.B <range>.W <visible>.B (ZC_SKILL_ENTRY3)
/// 099f <lenght>.W <id> L <creator id>.L <x>.W <y>.W <unit id>.L <range>.W <visible>.B (ZC_SKILL_ENTRY4)
-void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su, enum send_target target) {
+static void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su, enum send_target target)
+{
struct packet_skill_entry p;
nullpo_retv(bl);
nullpo_retv(su);
@@ -4784,7 +4778,8 @@ void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su, en
/*==========================================
* Server tells client to remove unit of id 'unit->bl.id'
*------------------------------------------*/
-void clif_clearchar_skillunit(struct skill_unit *su, int fd) {
+static void clif_clearchar_skillunit(struct skill_unit *su, int fd)
+{
nullpo_retv(su);
WFIFOHEAD(fd,packet_len(0x120));
@@ -4798,7 +4793,8 @@ void clif_clearchar_skillunit(struct skill_unit *su, int fd) {
/// Removes a skill unit (ZC_SKILL_DISAPPEAR).
/// 0120 <id>.L
-void clif_skill_delunit(struct skill_unit *su) {
+static void clif_skill_delunit(struct skill_unit *su)
+{
unsigned char buf[16];
nullpo_retv(su);
@@ -4811,7 +4807,7 @@ void clif_skill_delunit(struct skill_unit *su) {
/// Sent when an object gets ankle-snared (ZC_SKILL_UPDATE).
/// 01ac <id>.L
/// Only affects units with class [139,153] client-side.
-void clif_skillunit_update(struct block_list* bl)
+static void clif_skillunit_update(struct block_list *bl)
{
unsigned char buf[6];
nullpo_retv(bl);
@@ -4825,7 +4821,8 @@ void clif_skillunit_update(struct block_list* bl)
/*==========================================
*
*------------------------------------------*/
-int clif_getareachar(struct block_list* bl,va_list ap) {
+static int clif_getareachar(struct block_list *bl, va_list ap)
+{
struct map_session_data *sd;
nullpo_ret(bl);
@@ -4854,7 +4851,7 @@ int clif_getareachar(struct block_list* bl,va_list ap) {
/*==========================================
* tbl has gone out of view-size of bl
*------------------------------------------*/
-int clif_outsight(struct block_list *bl,va_list ap)
+static int clif_outsight(struct block_list *bl, va_list ap)
{
struct block_list *tbl;
struct view_data *vd;
@@ -4911,7 +4908,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
/*==========================================
* tbl has come into view of bl
*------------------------------------------*/
-int clif_insight(struct block_list *bl,va_list ap)
+static int clif_insight(struct block_list *bl, va_list ap)
{
struct block_list *tbl;
struct map_session_data *sd, *tsd;
@@ -4944,7 +4941,7 @@ int clif_insight(struct block_list *bl,va_list ap)
/// Updates whole skill tree (ZC_SKILLINFO_LIST).
/// 010f <packet len>.W { <skill id>.W <type>.L <level>.W <sp cost>.W <attack range>.W <skill name>.24B <upgradable>.B }*
-void clif_skillinfoblock(struct map_session_data *sd)
+static void clif_skillinfoblock(struct map_session_data *sd)
{
int fd;
int i,len,id;
@@ -5000,7 +4997,7 @@ void clif_skillinfoblock(struct map_session_data *sd)
/// Adds new skill to the skill tree (ZC_ADD_SKILL).
/// 0111 <skill id>.W <type>.L <level>.W <sp cost>.W <attack range>.W <skill name>.24B <upgradable>.B
-void clif_addskill(struct map_session_data *sd, int id)
+static void clif_addskill(struct map_session_data *sd, int id)
{
int fd, skill_lv, idx = skill->get_index(id);
@@ -5036,7 +5033,7 @@ void clif_addskill(struct map_session_data *sd, int id)
/// Deletes a skill from the skill tree (ZC_SKILLINFO_DELETE).
/// 0441 <skill id>.W
-void clif_deleteskill(struct map_session_data *sd, int id)
+static void clif_deleteskill(struct map_session_data *sd, int id)
{
#if PACKETVER >= 20081217
int fd;
@@ -5059,7 +5056,7 @@ void clif_deleteskill(struct map_session_data *sd, int id)
/// flag:
/// 0: guild call
/// 1: player call
-void clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill_lv, int flag)
+static void clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill_lv, int flag)
{
int fd;
nullpo_retv(sd);
@@ -5082,7 +5079,7 @@ void clif_skillup(struct map_session_data *sd, uint16 skill_id, int skill_lv, in
/// Updates a skill in the skill tree (ZC_SKILLINFO_UPDATE2).
/// 07e1 <skill id>.W <type>.L <level>.W <sp cost>.W <attack range>.W <upgradable>.B
-void clif_skillinfo(struct map_session_data *sd,int skill_id, int inf)
+static void clif_skillinfo(struct map_session_data *sd, int skill_id, int inf)
{
const int fd = sd->fd;
int idx = skill->get_index(skill_id);
@@ -5127,7 +5124,7 @@ void clif_skillinfo(struct map_session_data *sd,int skill_id, int inf)
/// is disposable:
/// 0 = yellow chat text "[src name] will use skill [skill name]."
/// 1 = no text
-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)
+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;
@@ -5164,7 +5161,7 @@ void clif_useskill(struct block_list* bl, int src_id, int dst_id, int dst_x, int
/// Notifies clients in area, that an object canceled casting (ZC_DISPEL).
/// 01b9 <id>.L
-void clif_skillcastcancel(struct block_list* bl)
+static void clif_skillcastcancel(struct block_list *bl)
{
unsigned char buf[16];
@@ -5198,9 +5195,10 @@ void clif_skillcastcancel(struct block_list* bl)
/// if(result!=0) doesn't display any of the previous messages
/// Note: when this packet is received an unknown flag is always set to 0,
/// suggesting this is an ACK packet for the UseSkill packets and should be sent on success too [FlavioJS]
-void clif_skill_fail(struct map_session_data *sd,uint16 skill_id,enum useskill_fail_cause cause,int btype)
+static void clif_skill_fail(struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id)
{
int fd;
+ struct PACKET_ZC_ACK_TOUSESKILL p;
if (!sd) {
//Since this is the most common nullpo....
@@ -5208,33 +5206,36 @@ void clif_skill_fail(struct map_session_data *sd,uint16 skill_id,enum useskill_f
return;
}
- fd=sd->fd;
+ fd = sd->fd;
if (!fd) return;
- if(battle_config.display_skill_fail&1)
+ if (battle_config.display_skill_fail&1)
return; //Disable all skill failed messages
- if(cause==USESKILL_FAIL_SKILLINTERVAL && !sd->state.showdelay)
+ if (cause == USESKILL_FAIL_SKILLINTERVAL && !sd->state.showdelay)
return; //Disable delay failed messages
- if(skill_id == RG_SNATCHER && battle_config.display_skill_fail&4)
+ if (skill_id == RG_SNATCHER && battle_config.display_skill_fail & 4)
return;
- if(skill_id == TF_POISON && battle_config.display_skill_fail&8)
+ if (skill_id == TF_POISON && battle_config.display_skill_fail & 8)
return;
- WFIFOHEAD(fd,packet_len(0x110));
- WFIFOW(fd,0) = 0x110;
- WFIFOW(fd,2) = skill_id;
- WFIFOL(fd,4) = btype;
- WFIFOB(fd,8) = 0;// success
- WFIFOB(fd,9) = cause;
- WFIFOSET(fd,packet_len(0x110));
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x110;
+ p.skillId = skill_id;
+ p.btype = btype;
+ p.itemId = item_id;
+ p.flag = 0; // 0 - failed
+ p.cause = cause;
+
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Skill cooldown display icon (ZC_SKILL_POSTDELAY).
/// 043d <skill ID>.W <tick>.L
-void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsigned int duration)
+static void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsigned int duration)
{
#if PACKETVER>=20081112
int fd;
@@ -5253,7 +5254,8 @@ void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsigned
/// Skill attack effect and damage.
/// 0114 <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <damage>.W <level>.W <div>.W <type>.B (ZC_NOTIFY_SKILL)
/// 01de <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <damage>.L <level>.W <div>.W <type>.B (ZC_NOTIFY_SKILL2)
-int clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 in_damage, int div, uint16 skill_id, uint16 skill_lv, int type) {
+static int clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 in_damage, int div, uint16 skill_id, uint16 skill_lv, int type)
+{
unsigned char buf[64];
struct status_change *sc;
int damage;
@@ -5354,7 +5356,8 @@ int clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick
/// Ground skill attack effect and damage (ZC_NOTIFY_SKILL_POSITION).
/// 0115 <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <x>.W <y>.W <damage>.W <level>.W <div>.W <type>.B
#if 0
-int clif_skill_damage2(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int damage, int div, uint16 skill_id, uint16 skill_lv, int type) {
+static int clif_skill_damage2(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int damage, int div, uint16 skill_id, uint16 skill_lv, int type)
+{
unsigned char buf[64];
struct status_change *sc;
@@ -5411,7 +5414,7 @@ int clif_skill_damage2(struct block_list *src, struct block_list *dst, int64 tic
/// Non-damaging skill effect.
/// 011a <skill id>.W <skill lv>.W <dst id>.L <src id>.L <result>.B (ZC_USE_SKILL)
/// 09cb <skill id>.W <skill lv>.L <dst id>.L <src id>.L <result>.B (ZC_USE_SKILL2)
-int clif_skill_nodamage(struct block_list *src, struct block_list *dst, uint16 skill_id, int heal, int fail)
+static int clif_skill_nodamage(struct block_list *src, struct block_list *dst, uint16 skill_id, int heal, int fail)
{
unsigned char buf[32];
short offset = 0;
@@ -5455,7 +5458,8 @@ int clif_skill_nodamage(struct block_list *src, struct block_list *dst, uint16 s
/// Non-damaging ground skill effect (ZC_NOTIFY_GROUNDSKILL).
/// 0117 <skill id>.W <src id>.L <level>.W <x>.W <y>.W <tick>.L
-void clif_skill_poseffect(struct block_list *src, uint16 skill_id, int val, int x, int y, int64 tick) {
+static void clif_skill_poseffect(struct block_list *src, uint16 skill_id, int val, int x, int y, int64 tick)
+{
unsigned char buf[32];
nullpo_retv(src);
@@ -5478,7 +5482,7 @@ void clif_skill_poseffect(struct block_list *src, uint16 skill_id, int val, int
/// Presents a list of available warp destinations (ZC_WARPLIST).
/// 011c <skill id>.W { <map name>.16B }*4
-void clif_skill_warppoint(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4)
+static void clif_skill_warppoint(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4)
{
int fd;
@@ -5515,7 +5519,7 @@ void clif_skill_warppoint(struct map_session_data* sd, uint16 skill_id, uint16 s
///
/// @param sd Who receives the message
/// @param type What message
-void clif_skill_memomessage(struct map_session_data* sd, int type)
+static void clif_skill_memomessage(struct map_session_data *sd, int type)
{
int fd;
@@ -5538,7 +5542,7 @@ void clif_skill_memomessage(struct map_session_data* sd, int type)
///
/// @param sd Who receives the message
/// @param type What message
-void clif_skill_mapinfomessage(struct map_session_data *sd, int type)
+static void clif_skill_mapinfomessage(struct map_session_data *sd, int type)
{
int fd;
@@ -5554,7 +5558,8 @@ void clif_skill_mapinfomessage(struct map_session_data *sd, int type)
/// Displays Sense (WZ_ESTIMATION) information window (ZC_MONSTER_INFO).
/// 018c <class>.W <level>.W <size>.W <hp>.L <def>.W <race>.W <mdef>.W <element>.W
/// <water%>.B <earth%>.B <fire%>.B <wind%>.B <poison%>.B <holy%>.B <shadow%>.B <ghost%>.B <undead%>.B
-void clif_skill_estimation(struct map_session_data *sd,struct block_list *dst) {
+static void clif_skill_estimation(struct map_session_data *sd, struct block_list *dst)
+{
struct status_data *dstatus;
unsigned char buf[64];
int i;//, fix;
@@ -5591,37 +5596,42 @@ void clif_skill_estimation(struct map_session_data *sd,struct block_list *dst) {
/// 018d <packet len>.W { <name id>.W { <material id>.W }*3 }*
/// material id:
/// unused by the client
-void clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id , int trigger)
+static void clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id, int trigger)
{
- int i,c,view,fd;
+ int i, c, view, fd;
+ int len;
+ struct PACKET_ZC_MAKABLEITEMLIST *p;
+
nullpo_retv(sd);
- if(sd->menuskill_id == skill_id)
+ if (sd->menuskill_id == skill_id)
return; //Avoid resending the menu twice or more times...
- if( skill_id == GC_CREATENEWPOISON )
+ if (skill_id == GC_CREATENEWPOISON)
skill_id = GC_RESEARCHNEWPOISON;
- fd=sd->fd;
- WFIFOHEAD(fd, MAX_SKILL_PRODUCE_DB * 8 + 8);
- WFIFOW(fd, 0)=0x18d;
-
- for(i=0,c=0;i<MAX_SKILL_PRODUCE_DB;i++){
- if( skill->can_produce_mix(sd,skill->dbs->produce_db[i].nameid, trigger, 1) &&
- ( ( skill_id > 0 && skill->dbs->produce_db[i].req_skill == skill_id ) || skill_id < 0 )
- ){
- if((view = itemdb_viewid(skill->dbs->produce_db[i].nameid)) > 0)
- WFIFOW(fd,c*8+ 4)= view;
+ fd = sd->fd;
+ len = MAX_SKILL_PRODUCE_DB * sizeof(struct PACKET_ZC_MAKABLEITEMLIST_sub) + sizeof(struct PACKET_ZC_MAKABLEITEMLIST);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x18d;
+
+ for (i = 0, c = 0; i < MAX_SKILL_PRODUCE_DB; i++) {
+ if (skill->can_produce_mix(sd, skill->dbs->produce_db[i].nameid, trigger, 1) &&
+ ((skill_id > 0 && skill->dbs->produce_db[i].req_skill == skill_id) || skill_id < 0)) {
+ if ((view = itemdb_viewid(skill->dbs->produce_db[i].nameid)) > 0)
+ p->items[c].itemId = view;
else
- WFIFOW(fd,c*8+ 4)= skill->dbs->produce_db[i].nameid;
- WFIFOW(fd,c*8+ 6)= 0;
- WFIFOW(fd,c*8+ 8)= 0;
- WFIFOW(fd,c*8+10)= 0;
+ p->items[c].itemId = skill->dbs->produce_db[i].nameid;
+ p->items[c].material[0] = 0;
+ p->items[c].material[1] = 0;
+ p->items[c].material[2] = 0;
c++;
}
}
- WFIFOW(fd, 2)=c*8+8;
- WFIFOSET(fd,WFIFOW(fd,2));
- if(c > 0) {
+ len = c * sizeof(struct PACKET_ZC_MAKABLEITEMLIST_sub) + sizeof(struct PACKET_ZC_MAKABLEITEMLIST);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
+ if (c > 0) {
sd->menuskill_id = skill_id;
sd->menuskill_val = trigger;
return;
@@ -5637,61 +5647,65 @@ void clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id , int
/// 4 = GN_MIX_COOKING
/// 5 = GN_MAKEBOMB
/// 6 = GN_S_PHARMACY
-void clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type)
+static void clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type)
{
int fd;
int i, c;
int view;
+ int len;
+ struct PACKET_ZC_MAKINGITEM_LIST *p;
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd, 6 + 2 * MAX_SKILL_PRODUCE_DB);
- WFIFOW(fd,0) = 0x25a;
- WFIFOW(fd,4) = list_type; // list type
+ len = sizeof(struct PACKET_ZC_MAKINGITEM_LIST) + MAX_SKILL_PRODUCE_DB * sizeof(struct PACKET_ZC_MAKINGITEM_LIST_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x25a;
+ p->makeItem = list_type; // list type
c = 0;
- for( i = 0; i < MAX_SKILL_PRODUCE_DB; i++ ) {
- if( !skill->can_produce_mix(sd,skill->dbs->produce_db[i].nameid,trigger, qty) )
+ for (i = 0; i < MAX_SKILL_PRODUCE_DB; i++) {
+ if (!skill->can_produce_mix(sd,skill->dbs->produce_db[i].nameid,trigger, qty))
continue;
- if( (view = itemdb_viewid(skill->dbs->produce_db[i].nameid)) > 0 )
- WFIFOW(fd, 6 + 2 * c) = view;
+ if ((view = itemdb_viewid(skill->dbs->produce_db[i].nameid)) > 0)
+ p->items[c].itemId = view;
else
- WFIFOW(fd, 6 + 2 * c) = skill->dbs->produce_db[i].nameid;
+ p->items[c].itemId = skill->dbs->produce_db[i].nameid;
c++;
}
- if( skill_id == AM_PHARMACY ) {
+ len = sizeof(struct PACKET_ZC_MAKINGITEM_LIST) + c * sizeof(struct PACKET_ZC_MAKINGITEM_LIST_sub);
+ p->packetLength = len;
+ if (skill_id == AM_PHARMACY) {
// Only send it while Cooking else check for c.
- WFIFOW(fd,2) = 6 + 2 * c;
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
- if( c > 0 ) {
+ if (c > 0) {
sd->menuskill_id = skill_id;
sd->menuskill_val = trigger;
- if( skill_id != AM_PHARMACY ) {
+ if (skill_id != AM_PHARMACY) {
sd->menuskill_val2 = qty; // amount.
- WFIFOW(fd,2) = 6 + 2 * c;
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
} else {
clif_menuskill_clear(sd);
- if( skill_id != AM_PHARMACY ) { // AM_PHARMACY is used to Cooking.
+ if (skill_id != AM_PHARMACY) { // AM_PHARMACY is used to Cooking.
// It fails.
#if PACKETVER >= 20091013
clif->msgtable_skill(sd, skill_id, MSG_SKILL_MATERIAL_FAIL);
#else
- WFIFOW(fd,2) = 6 + 2 * c;
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
#endif
}
}
}
-void clif_status_change_notick(struct block_list *bl,int type,int flag,int tick,int val1, int val2, int val3) {
+static void clif_status_change_notick(struct block_list *bl, int type, int flag, int tick, int val1, int val2, int val3)
+{
struct packet_sc_notick p;
struct map_session_data *sd;
@@ -5719,7 +5733,8 @@ void clif_status_change_notick(struct block_list *bl,int type,int flag,int tick,
/// 08ff <id>.L <index>.W <remain msec>.L { <val>.L }*3 (PACKETVER >= 20111108)
/// 0983 <index>.W <id>.L <state>.B <total msec>.L <remain msec>.L { <val>.L }*3 (PACKETVER >= 20120618)
/// 0984 <id>.L <index>.W <total msec>.L <remain msec>.L { <val>.L }*3 (PACKETVER >= 20120618)
-void clif_status_change(struct block_list *bl,int type,int flag,int tick,int val1, int val2, int val3) {
+static void clif_status_change(struct block_list *bl, int type, int flag, int tick, int val1, int val2, int val3)
+{
struct packet_status_change p;
struct map_session_data *sd;
@@ -5755,7 +5770,7 @@ void clif_status_change(struct block_list *bl,int type,int flag,int tick,int val
/// Send message (modified by [Yor]) (ZC_NOTIFY_PLAYERCHAT).
/// 008e <packet len>.W <message>.?B
-void clif_displaymessage(const int fd, const char *mes)
+static void clif_displaymessage(const int fd, const char *mes)
{
nullpo_retv(mes);
@@ -5780,7 +5795,8 @@ void clif_displaymessage(const int fd, const char *mes)
}
}
-void clif_displaymessage2(const int fd, const char* mes) {
+static void clif_displaymessage2(const int fd, const char *mes)
+{
nullpo_retv(mes);
//Scrapped, as these are shared by disconnected players =X [Skotlex]
@@ -5812,9 +5828,11 @@ void clif_displaymessage2(const int fd, const char* mes) {
aFree(message);
}
}
+
/* oh noo! another version of 0x8e! */
-void clif_displaymessage_sprintf(const int fd, const char *mes, ...) __attribute__((format(printf, 2, 3)));
-void clif_displaymessage_sprintf(const int fd, const char *mes, ...) {
+static void clif_displaymessage_sprintf(const int fd, const char *mes, ...) __attribute__((format(printf, 2, 3)));
+static void clif_displaymessage_sprintf(const int fd, const char *mes, ...)
+{
va_list ap;
nullpo_retv(mes);
@@ -5846,9 +5864,10 @@ void clif_displaymessage_sprintf(const int fd, const char *mes, ...) {
WFIFOSET(fd, 5 + len);
}
}
+
/// Send broadcast message in yellow or blue without font formatting (ZC_BROADCAST).
/// 009a <packet len>.W <message>.?B
-void clif_broadcast(struct block_list *bl, const char *mes, int len, int type, enum send_target target)
+static void clif_broadcast(struct block_list *bl, const char *mes, int len, int type, enum send_target target)
{
int lp = (type&BC_COLOR_MASK) ? 4 : 0;
unsigned char *buf = NULL;
@@ -5872,7 +5891,7 @@ void clif_broadcast(struct block_list *bl, const char *mes, int len, int type, e
* Displays a message on a 'bl' to all it's nearby clients
* Used by npc_globalmessage
*------------------------------------------*/
-void clif_GlobalMessage(struct block_list *bl, const char *message)
+static void clif_GlobalMessage(struct block_list *bl, const char *message)
{
char buf[256];
int len;
@@ -5897,7 +5916,7 @@ void clif_GlobalMessage(struct block_list *bl, const char *message)
/// Send broadcast message with font formatting (ZC_BROADCAST2).
/// 01c3 <packet len>.W <fontColor>.L <fontType>.W <fontSize>.W <fontAlign>.W <fontY>.W <message>.?B
-void clif_broadcast2(struct block_list *bl, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target)
+static void clif_broadcast2(struct block_list *bl, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target)
{
unsigned char *buf;
@@ -5923,7 +5942,7 @@ void clif_broadcast2(struct block_list *bl, const char *mes, int len, unsigned i
/// 5 = HP (SP_HP)
/// 7 = SP (SP_SP)
/// ? = ignored
-void clif_heal(int fd, int type, int val)
+static void clif_heal(int fd, int type, int val)
{
#if PACKETVER < 20150513
short cmd = 0x13d;
@@ -5947,7 +5966,7 @@ void clif_heal(int fd, int type, int val)
/// 0148 <id>.L <type>.W
/// type:
/// ignored
-void clif_resurrection(struct block_list *bl,int type)
+static void clif_resurrection(struct block_list *bl, int type)
{
unsigned char buf[16];
@@ -5971,7 +5990,7 @@ void clif_resurrection(struct block_list *bl,int type)
/// Sets the map property (ZC_NOTIFY_MAPPROPERTY).
/// 0199 <type>.W
-void clif_map_property(struct map_session_data* sd, enum map_property property)
+static void clif_map_property(struct map_session_data *sd, enum map_property property)
{
int fd;
@@ -5986,7 +6005,8 @@ void clif_map_property(struct map_session_data* sd, enum map_property property)
/// Set the map type (ZC_NOTIFY_MAPPROPERTY2).
/// 01d6 <type>.W
-void clif_map_type(struct map_session_data* sd, enum map_type type) {
+static void clif_map_type(struct map_session_data *sd, enum map_type type)
+{
int fd;
nullpo_retv(sd);
@@ -6001,7 +6021,7 @@ void clif_map_type(struct map_session_data* sd, enum map_type type) {
/// Updates PvP ranking (ZC_NOTIFY_RANKING).
/// 019a <id>.L <ranking>.L <total>.L
// FIXME: missing documentation for the 'type' parameter
-void clif_pvpset(struct map_session_data *sd,int pvprank,int pvpnum,int type)
+static void clif_pvpset(struct map_session_data *sd, int pvprank, int pvpnum, int type)
{
nullpo_retv(sd);
@@ -6034,7 +6054,7 @@ void clif_pvpset(struct map_session_data *sd,int pvprank,int pvpnum,int type)
/*==========================================
*
*------------------------------------------*/
-void clif_map_property_mapall(int mapid, enum map_property property)
+static void clif_map_property_mapall(int mapid, enum map_property property)
{
struct block_list bl;
unsigned char buf[16];
@@ -6053,7 +6073,7 @@ void clif_map_property_mapall(int mapid, enum map_property property)
/// 0 = success
/// 1 = failure
/// 2 = downgrade
-void clif_refine(int fd, int fail, int index, int val)
+static void clif_refine(int fd, int fail, int index, int val)
{
WFIFOHEAD(fd,packet_len(0x188));
WFIFOW(fd,0)=0x188;
@@ -6070,19 +6090,21 @@ void clif_refine(int fd, int fail, int index, int val)
/// 1 = "weapon upgraded: %s" MsgStringTable[912] in rgb(0,205,205)
/// 2 = "cannot upgrade %s until you level up the upgrade weapon skill" MsgStringTable[913] in rgb(255,200,200)
/// 3 = "you lack the item %s to upgrade the weapon" MsgStringTable[914] in rgb(255,200,200)
-void clif_upgrademessage(int fd, int result, int item_id)
+static void clif_upgrademessage(int fd, int result, int item_id)
{
- WFIFOHEAD(fd,packet_len(0x223));
- WFIFOW(fd,0)=0x223;
- WFIFOL(fd,2)=result;
- WFIFOW(fd,6)=item_id;
- WFIFOSET(fd,packet_len(0x223));
+ struct PACKET_ZC_ACK_WEAPONREFINE p;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x223;
+ p.result = result;
+ p.itemId = item_id;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Whisper is transmitted to the destination player (ZC_WHISPER).
/// 0097 <packet len>.W <nick>.24B <message>.?B
/// 0097 <packet len>.W <nick>.24B <isAdmin>.L <message>.?B (PACKETVER >= 20091104)
-void clif_wis_message(int fd, const char *nick, const char *mes, int mes_len)
+static void clif_wis_message(int fd, const char *nick, const char *mes, int mes_len)
{
#if PACKETVER >= 20091104
struct map_session_data *ssd = NULL;
@@ -6117,7 +6139,8 @@ void clif_wis_message(int fd, const char *nick, const char *mes, int mes_len)
/// 1 = target character is not logged in
/// 2 = ignored by target
/// 3 = everyone ignored by target
-void clif_wis_end(int fd, int flag) {
+static void clif_wis_end(int fd, int flag)
+{
struct map_session_data *sd = sockt->session_is_valid(fd) ? sockt->session[fd]->session_data : NULL;
struct packet_wis_end p;
@@ -6136,7 +6159,7 @@ void clif_wis_end(int fd, int flag) {
/// Returns character name requested by char_id (ZC_ACK_REQNAME_BYGID).
/// 0194 <char id>.L <name>.24B
/// 0af7 <flag>.W <char id>.L <name>.24B
-void clif_solved_charname(int fd, int charid, const char* name)
+static void clif_solved_charname(int fd, int charid, const char *name)
{
nullpo_retv(name);
#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328
@@ -6161,8 +6184,8 @@ void clif_solved_charname(int fd, int charid, const char* name)
}
/// Presents a list of items that can be carded/composed (ZC_ITEMCOMPOSITION_LIST).
-/// 017b <packet len>.W { <name id>.W }*
-void clif_use_card(struct map_session_data *sd,int idx)
+/// 017b <packet len>.W { <index>.W }*
+static void clif_use_card(struct map_session_data *sd, int idx)
{
int i, c;
int fd;
@@ -6195,7 +6218,7 @@ void clif_use_card(struct map_session_data *sd,int idx)
/// result:
/// 0 = success
/// 1 = failure
-void clif_insert_card(struct map_session_data *sd,int idx_equip,int idx_card,int flag)
+static void clif_insert_card(struct map_session_data *sd, int idx_equip, int idx_card, int flag)
{
int fd;
@@ -6211,8 +6234,8 @@ void clif_insert_card(struct map_session_data *sd,int idx_equip,int idx_card,int
}
/// Presents a list of items that can be identified (ZC_ITEMIDENTIFY_LIST).
-/// 0177 <packet len>.W { <name id>.W }*
-void clif_item_identify_list(struct map_session_data *sd)
+/// 0177 <packet len>.W { <index>.W }*
+static void clif_item_identify_list(struct map_session_data *sd)
{
int i,c;
int fd;
@@ -6240,7 +6263,7 @@ void clif_item_identify_list(struct map_session_data *sd)
/// Notifies the client about the result of a item identify request (ZC_ACK_ITEMIDENTIFY).
/// 0179 <index>.W <result>.B
-void clif_item_identified(struct map_session_data *sd,int idx,int flag)
+static void clif_item_identified(struct map_session_data *sd, int idx, int flag)
{
int fd;
@@ -6256,36 +6279,42 @@ void clif_item_identified(struct map_session_data *sd,int idx,int flag)
/// Presents a list of items that can be repaired (ZC_REPAIRITEMLIST).
/// 01fc <packet len>.W { <index>.W <name id>.W <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }*
-void clif_item_repair_list(struct map_session_data *sd,struct map_session_data *dstsd, int lv)
+static void clif_item_repair_list(struct map_session_data *sd, struct map_session_data *dstsd, int lv)
{
int i,c;
int fd;
+ int len;
+ struct PACKET_ZC_REPAIRITEMLIST *p;
nullpo_retv(sd);
nullpo_retv(dstsd);
- fd=sd->fd;
+ fd = sd->fd;
- WFIFOHEAD(fd, MAX_INVENTORY * 13 + 4);
- WFIFOW(fd,0)=0x1fc;
+ len = MAX_INVENTORY * sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub) + sizeof(struct PACKET_ZC_REPAIRITEMLIST);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x1fc;
for (i = c = 0; i < MAX_INVENTORY; i++) {
int nameid = dstsd->status.inventory[i].nameid;
if (nameid > 0 && (dstsd->status.inventory[i].attribute & ATTR_BROKEN) != 0) { // && skill_can_repair(sd,nameid)) {
- WFIFOW(fd,c*13+4) = i;
- WFIFOW(fd,c*13+6) = nameid;
- WFIFOB(fd,c*13+8) = dstsd->status.inventory[i].refine;
- clif->addcards(WFIFOP(fd,c*13+9), &dstsd->status.inventory[i]);
+ p->items[c].index = i;
+ p->items[c].itemId = nameid;
+ p->items[c].refine = dstsd->status.inventory[i].refine;
+ clif->addcards(&p->items[c].slot, &dstsd->status.inventory[i]);
c++;
}
}
- if(c > 0) {
- WFIFOW(fd,2)=c*13+4;
- WFIFOSET(fd,WFIFOW(fd,2));
+ if (c > 0) {
+ len = c * sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub) + sizeof(struct PACKET_ZC_REPAIRITEMLIST);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
sd->menuskill_id = BS_REPAIRWEAPON;
sd->menuskill_val = dstsd->bl.id;
sd->menuskill_val2 = lv;
- }else
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ } else {
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
+ }
}
/// Notifies the client about the result of a item repair request (ZC_ACK_ITEMREPAIR).
@@ -6295,7 +6324,7 @@ void clif_item_repair_list(struct map_session_data *sd,struct map_session_data *
/// result:
/// 0 = Item repair success.
/// 1 = Item repair failure.
-void clif_item_repaireffect(struct map_session_data *sd,int idx,int flag)
+static void clif_item_repaireffect(struct map_session_data *sd, int idx, int flag)
{
int fd;
@@ -6313,7 +6342,7 @@ void clif_item_repaireffect(struct map_session_data *sd,int idx,int flag)
/// Displays a message, that an equipment got damaged (ZC_EQUIPITEM_DAMAGED).
/// 02bb <equip location>.W <account id>.L
-void clif_item_damaged(struct map_session_data* sd, unsigned short position)
+static void clif_item_damaged(struct map_session_data *sd, unsigned short position)
{
int fd;
@@ -6329,34 +6358,38 @@ void clif_item_damaged(struct map_session_data* sd, unsigned short position)
/// Presents a list of weapon items that can be refined [Taken from jAthena] (ZC_NOTIFY_WEAPONITEMLIST).
/// 0221 <packet len>.W { <index>.W <name id>.W <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }*
-void clif_item_refine_list(struct map_session_data *sd)
+static void clif_item_refine_list(struct map_session_data *sd)
{
int i,c;
int fd;
+ int len;
+ struct PACKET_ZC_NOTIFY_WEAPONITEMLIST *p;
uint16 skill_lv;
nullpo_retv(sd);
- skill_lv = pc->checkskill(sd,WS_WEAPONREFINE);
-
- fd=sd->fd;
+ skill_lv = pc->checkskill(sd, WS_WEAPONREFINE);
- WFIFOHEAD(fd, MAX_INVENTORY * 13 + 4);
- WFIFOW(fd,0)=0x221;
+ fd = sd->fd;
+ len = MAX_INVENTORY * sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub) + sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x221;
for (i = c = 0; i < MAX_INVENTORY; i++) {
- if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].identify
+ if (sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].identify
&& itemdb_wlv(sd->status.inventory[i].nameid) >= 1
&& !sd->inventory_data[i]->flag.no_refine
- && !(sd->status.inventory[i].equip&EQP_ARMS)){
- WFIFOW(fd,c*13+ 4)=i+2;
- WFIFOW(fd,c*13+ 6)=sd->status.inventory[i].nameid;
- WFIFOB(fd,c*13+ 8)=sd->status.inventory[i].refine;
- clif->addcards(WFIFOP(fd,c*13+9), &sd->status.inventory[i]);
+ && !(sd->status.inventory[i].equip & EQP_ARMS)) {
+ p->items[c].index = i + 2;
+ p->items[c].itemId = sd->status.inventory[i].nameid;
+ p->items[c].refine = sd->status.inventory[i].refine;
+ clif->addcards(&p->items[c].slot, &sd->status.inventory[i]);
c++;
}
}
- WFIFOW(fd,2)=c*13+4;
- WFIFOSET(fd,WFIFOW(fd,2));
+ len = c * sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub) + sizeof(struct PACKET_ZC_NOTIFY_WEAPONITEMLIST);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
if (c > 0) {
sd->menuskill_id = WS_WEAPONREFINE;
sd->menuskill_val = skill_lv;
@@ -6365,7 +6398,7 @@ void clif_item_refine_list(struct map_session_data *sd)
/// Notification of an auto-casted skill (ZC_AUTORUN_SKILL).
/// 0147 <skill id>.W <type>.L <level>.W <sp cost>.W <atk range>.W <skill name>.24B <upgradeable>.B
-void clif_item_skill(struct map_session_data *sd,uint16 skill_id,uint16 skill_lv)
+static void clif_item_skill(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
int fd;
@@ -6387,44 +6420,42 @@ void clif_item_skill(struct map_session_data *sd,uint16 skill_id,uint16 skill_lv
/// Adds an item to character's cart.
/// 0124 <index>.W <amount>.L <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_CART)
/// 01c5 <index>.W <amount>.L <name id>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_CART2)
-void clif_cart_additem(struct map_session_data *sd,int n,int amount,int fail)
+static void clif_cart_additem(struct map_session_data *sd, int n, int amount, int fail)
{
- int view,fd;
- unsigned char *buf;
- int offset = 0;
+ int view, fd;
+ struct PACKET_ZC_ADD_ITEM_TO_CART p;
nullpo_retv(sd);
- fd=sd->fd;
- if(n<0 || n>=MAX_CART || sd->status.cart[n].nameid<=0)
+ fd = sd->fd;
+ if (n < 0 || n >= MAX_CART || sd->status.cart[n].nameid <= 0)
return;
- WFIFOHEAD(fd,packet_len(cartaddType));
- buf=WFIFOP(fd,0);
- WBUFW(buf,0)=cartaddType;
- WBUFW(buf,2)=n+2;
- WBUFL(buf,4)=amount;
- if((view = itemdb_viewid(sd->status.cart[n].nameid)) > 0)
- WBUFW(buf,8)=view;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = cartaddType;
+ p.index = n + 2;
+ p.amount = amount;
+ if ((view = itemdb_viewid(sd->status.cart[n].nameid)) > 0)
+ p.itemId = view;
else
- WBUFW(buf,8)=sd->status.cart[n].nameid;
+ p.itemId = sd->status.cart[n].nameid;
#if PACKETVER >= 5
- WBUFB(buf,10)=itemdb_type(sd->status.cart[n].nameid);
- offset = 1;
+ p.itemType = itemdb_type(sd->status.cart[n].nameid);
#endif
- WBUFB(buf,10+offset)=sd->status.cart[n].identify;
- WBUFB(buf,11+offset)=sd->status.cart[n].attribute;
- WBUFB(buf,12+offset)=sd->status.cart[n].refine;
- clif->addcards(WBUFP(buf,13+offset), &sd->status.cart[n]);
+ p.identified = sd->status.cart[n].identify;
+ p.damaged = sd->status.cart[n].attribute;
+ p.refine = sd->status.cart[n].refine;
+ clif->addcards(&p.slot, &sd->status.cart[n]);
#if PACKETVER >= 20150226
- clif->add_item_options(WBUFP(buf, 21 + offset), &sd->status.cart[n]);
+ clif->add_item_options(&p.option_data[0], &sd->status.cart[n]);
#endif
- WFIFOSET(fd,packet_len(cartaddType));
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Deletes an item from character's cart (ZC_DELETE_ITEM_FROM_CART).
/// 0125 <index>.W <amount>.L
-void clif_cart_delitem(struct map_session_data *sd,int n,int amount)
+static void clif_cart_delitem(struct map_session_data *sd, int n, int amount)
{
int fd;
@@ -6443,7 +6474,7 @@ void clif_cart_delitem(struct map_session_data *sd,int n,int amount)
/// 012d <num>.W
/// num:
/// number of allowed item slots
-void clif_openvendingreq(struct map_session_data* sd, int num)
+static void clif_openvendingreq(struct map_session_data *sd, int num)
{
int fd;
@@ -6458,7 +6489,7 @@ void clif_openvendingreq(struct map_session_data* sd, int num)
/// Displays a vending board to target/area (ZC_STORE_ENTRY).
/// 0131 <owner id>.L <message>.80B
-void clif_showvendingboard(struct block_list* bl, const char* message, int fd)
+static void clif_showvendingboard(struct block_list *bl, const char *message, int fd)
{
unsigned char buf[128];
@@ -6479,7 +6510,7 @@ void clif_showvendingboard(struct block_list* bl, const char* message, int fd)
/// Removes a vending board from screen (ZC_DISAPPEAR_ENTRY).
/// 0132 <owner id>.L
-void clif_closevendingboard(struct block_list* bl, int fd)
+static void clif_closevendingboard(struct block_list *bl, int fd)
{
unsigned char buf[16];
@@ -6499,26 +6530,13 @@ void clif_closevendingboard(struct block_list* bl, int fd)
/// Sends a list of items in a shop.
/// R 0133 <packet len>.W <owner id>.L { <price>.L <amount>.W <index>.W <type>.B <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }* (ZC_PC_PURCHASE_ITEMLIST_FROMMC)
/// R 0800 <packet len>.W <owner id>.L <unique id>.L { <price>.L <amount>.W <index>.W <type>.B <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }* (ZC_PC_PURCHASE_ITEMLIST_FROMMC2)
-void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_vending* vending_items) {
- int i,fd;
+static void clif_vendinglist(struct map_session_data *sd, unsigned int id, struct s_vending *vending_items)
+{
+ int i, fd;
int count;
struct map_session_data* vsd;
-#if PACKETVER < 20100105
- const int cmd = 0x133;
- const int offset = 8;
-#else
- const int cmd = 0x800;
- const int offset = 12;
-#endif
-
-#if PACKETVER < 20150226
- const int item_length = 22;
-// [4144] date 20160921 not confirmend. Can be bigger or smaller
-#elif PACKETVER < 20160921
- const int item_length = 47;
-#else
- const int item_length = 53;
-#endif
+ int len;
+ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC *p;
nullpo_retv(sd);
nullpo_retv(vending_items);
@@ -6526,37 +6544,39 @@ void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_ven
fd = sd->fd;
count = vsd->vend_num;
+ len = sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC) + count * sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub);
- WFIFOHEAD(fd, offset+count*item_length);
- WFIFOW(fd,0) = cmd;
- WFIFOW(fd,2) = offset+count*item_length;
- WFIFOL(fd,4) = id;
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = vendinglistType;
+ p->packetLength = len;
+ p->AID = id;
#if PACKETVER >= 20100105
- WFIFOL(fd,8) = vsd->vender_id;
+ p->venderId = vsd->vender_id;
#endif
- for( i = 0; i < count; i++ ) {
+ for (i = 0; i < count; i++) {
int index = vending_items[i].index;
struct item_data* data = itemdb->search(vsd->status.cart[index].nameid);
- WFIFOL(fd,offset+ 0+i*item_length) = vending_items[i].value;
- WFIFOW(fd,offset+ 4+i*item_length) = vending_items[i].amount;
- WFIFOW(fd,offset+ 6+i*item_length) = vending_items[i].index + 2;
- WFIFOB(fd,offset+ 8+i*item_length) = itemtype(data->type);
- WFIFOW(fd,offset+ 9+i*item_length) = ( data->view_id > 0 ) ? data->view_id : vsd->status.cart[index].nameid;
- WFIFOB(fd,offset+11+i*item_length) = vsd->status.cart[index].identify;
- WFIFOB(fd,offset+12+i*item_length) = vsd->status.cart[index].attribute;
- WFIFOB(fd,offset+13+i*item_length) = vsd->status.cart[index].refine;
- clif->addcards(WFIFOP(fd,offset+14+i*item_length), &vsd->status.cart[index]);
+ p->items[i].price = vending_items[i].value;
+ p->items[i].amount = vending_items[i].amount;
+ p->items[i].index = vending_items[i].index + 2;
+ p->items[i].itemType = itemtype(data->type);
+ p->items[i].itemId = (data->view_id > 0) ? data->view_id : vsd->status.cart[index].nameid;
+ p->items[i].identified = vsd->status.cart[index].identify;
+ p->items[i].damaged = vsd->status.cart[index].attribute;
+ p->items[i].refine = vsd->status.cart[index].refine;
+ clif->addcards(&p->items[i].slot, &vsd->status.cart[index]);
#if PACKETVER >= 20150226
- clif->add_item_options(WFIFOP(fd, offset + 22 + i * item_length), &vsd->status.cart[index]);
+ clif->add_item_options(&p->items[i].option_data[0], &vsd->status.cart[index]);
#endif
-// [4144] date 20160921 not confirmend. Can be bigger or smaller
+// [4144] date 20160921 not confirmed. Can be bigger or smaller
#if PACKETVER >= 20160921
- WFIFOL(fd, offset + 47 + i * item_length) = pc->item_equippoint(sd, data);
- WFIFOW(fd, offset + 51 + i * item_length) = data->view_sprite;
+ p->items[i].location = pc->item_equippoint(sd, data);
+ p->items[i].viewSprite = data->view_sprite;
#endif
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
/// Shop purchase failure (ZC_PC_PURCHASE_RESULT_FROMMC).
@@ -6569,7 +6589,7 @@ void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_ven
/// 5 = "cannot use an npc shop while in a trade"
/// 6 = Because the store information was incorrect the item was not purchased.
/// 7 = No sales information.
-void clif_buyvending(struct map_session_data* sd, int index, int amount, int fail)
+static void clif_buyvending(struct map_session_data *sd, int index, int amount, int fail)
{
int fd;
@@ -6586,49 +6606,56 @@ void clif_buyvending(struct map_session_data* sd, int index, int amount, int fai
/// Shop creation success (ZC_PC_PURCHASE_MYITEMLIST).
/// 0136 <packet len>.W <owner id>.L { <price>.L <index>.W <amount>.W <type>.B <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W }*
-void clif_openvending(struct map_session_data* sd, int id, struct s_vending* vending_items) {
- int i,fd;
+static void clif_openvending(struct map_session_data *sd, int id, struct s_vending *vending_items)
+{
+ int i, fd;
int count;
-#if PACKETVER >= 20150226
- const int item_length = 47;
-#else
- const int item_length = 22;
-#endif
+ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *p;
+ int len;
nullpo_retv(sd);
nullpo_retv(vending_items);
fd = sd->fd;
count = sd->vend_num;
-
- WFIFOHEAD(fd, 8+count*item_length);
- WFIFOW(fd,0) = 0x136;
- WFIFOW(fd,2) = 8+count*item_length;
- WFIFOL(fd,4) = id;
- for( i = 0; i < count; i++ ) {
+ len = sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST) + count * sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x136;
+ p->packetLength = len;
+ p->AID = id;
+ for (i = 0; i < count; i++) {
int index = vending_items[i].index;
struct item_data* data = itemdb->search(sd->status.cart[index].nameid);
- WFIFOL(fd, 8+i*item_length) = vending_items[i].value;
- WFIFOW(fd,12+i*item_length) = vending_items[i].index + 2;
- WFIFOW(fd,14+i*item_length) = vending_items[i].amount;
- WFIFOB(fd,16+i*item_length) = itemtype(data->type);
- WFIFOW(fd,17+i*item_length) = ( data->view_id > 0 ) ? data->view_id : sd->status.cart[index].nameid;
- WFIFOB(fd,19+i*item_length) = sd->status.cart[index].identify;
- WFIFOB(fd,20+i*item_length) = sd->status.cart[index].attribute;
- WFIFOB(fd,21+i*item_length) = sd->status.cart[index].refine;
- clif->addcards(WFIFOP(fd,22+i*item_length), &sd->status.cart[index]);
+ p->items[i].price = vending_items[i].value;
+ p->items[i].index = vending_items[i].index + 2;
+ p->items[i].amount = vending_items[i].amount;
+ p->items[i].itemType = itemtype(data->type);
+ p->items[i].itemId = (data->view_id > 0) ? data->view_id : sd->status.cart[index].nameid;
+ p->items[i].identified = sd->status.cart[index].identify;
+ p->items[i].damaged = sd->status.cart[index].attribute;
+ p->items[i].refine = sd->status.cart[index].refine;
+ clif->addcards(&p->items[i].slot, &sd->status.cart[index]);
#if PACKETVER >= 20150226
- clif->add_item_options(WFIFOP(fd, 30 + i * item_length), &sd->status.cart[index]);
+ clif->add_item_options(&p->items[i].option_data[0], &sd->status.cart[index]);
#endif
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
+ clif->openvendingAck(fd, 0);
+}
+
+// 0 - open vending success
+// 1 - message MSG_MERCHANTSHOP_MAKING_FAIL
+// 2 - silent ignore
+// 3 - message MSG_ID_C9D (You can not open a stall at the current location)
+static void clif_openvendingAck(int fd, int result)
+{
#if PACKETVER >= 20140625
- /** should go elsewhere perhaps? it has to be bundled with this however. **/
WFIFOHEAD(fd, packet_len(0xa28));
- WFIFOW(fd, 0) = 0xa28;
- WFIFOB(fd, 2) = 0;/** 1 is failure. our current responses to failure are working so not yet implemented **/
+ WFIFOW(fd, 0) = 0xa28; // ZC_ACK_OPENSTORE2
+ WFIFOB(fd, 2) = result;
WFIFOSET(fd, packet_len(0xa28));
#endif
}
@@ -6636,7 +6663,7 @@ void clif_openvending(struct map_session_data* sd, int id, struct s_vending* ven
/// Inform merchant that someone has bought an item.
/// 0137 <index>.W <amount>.W (ZC_DELETEITEM_FROM_MCSTORE).
/// 09e5 <index>.W <amount>.W <GID>.L <Date>.L <zeny>.L (ZC_DELETEITEM_FROM_MCSTORE2).
-void clif_vendingreport(struct map_session_data* sd, int index, int amount, uint32 char_id, int zeny)
+static void clif_vendingreport(struct map_session_data *sd, int index, int amount, uint32 char_id, int zeny)
{
int fd;
#if PACKETVER < 20141016 // TODO : not sure for client date [Napster]
@@ -6669,7 +6696,7 @@ void clif_vendingreport(struct map_session_data* sd, int index, int amount, uint
/// 2 = MsgStringTable[79]="already in a party"
/// 3 = cannot organize parties on this map
/// ? = nothing
-void clif_party_created(struct map_session_data *sd,int result)
+static void clif_party_created(struct map_session_data *sd, int result)
{
int fd;
@@ -6689,7 +6716,7 @@ void clif_party_created(struct map_session_data *sd,int result)
/// state:
/// 0 = connected
/// 1 = disconnected
-void clif_party_member_info(struct party_data *p, struct map_session_data *sd)
+static void clif_party_member_info(struct party_data *p, struct map_session_data *sd)
{
int i;
struct PACKET_ZC_ADD_MEMBER_TO_GROUP packet;
@@ -6735,7 +6762,7 @@ void clif_party_member_info(struct party_data *p, struct map_session_data *sd)
/// state:
/// 0 = connected
/// 1 = disconnected
-void clif_party_info(struct party_data* p, struct map_session_data *sd)
+static void clif_party_info(struct party_data *p, struct map_session_data *sd)
{
struct PACKET_ZC_GROUP_LIST *packet;
struct map_session_data* party_sd = NULL;
@@ -6781,7 +6808,7 @@ void clif_party_info(struct party_data* p, struct map_session_data *sd)
/// Updates the job and level of a party member
/// 0abd <account id>.L <job>.W <level>.W
-void clif_party_job_and_level(struct map_session_data *sd)
+static void clif_party_job_and_level(struct map_session_data *sd)
{
// [4144] packet 0xabd added in client in 2017-02-15 because this probably it can works for clients older than 20170502
#if PACKETVER >= 20170502
@@ -6803,7 +6830,7 @@ void clif_party_job_and_level(struct map_session_data *sd)
/// flag:
/// 0 = allow party invites
/// 1 = auto-deny party invites
-void clif_partyinvitationstate(struct map_session_data* sd)
+static void clif_partyinvitationstate(struct map_session_data *sd)
{
int fd;
nullpo_retv(sd);
@@ -6818,7 +6845,7 @@ void clif_partyinvitationstate(struct map_session_data* sd)
/// Party invitation request.
/// 00fe <party id>.L <party name>.24B (ZC_REQ_JOIN_GROUP)
/// 02c6 <party id>.L <party name>.24B (ZC_PARTY_JOIN_REQ)
-void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd)
+static void clif_party_invite(struct map_session_data *sd, struct map_session_data *tsd)
{
#if PACKETVER < 20070821
const int cmd = 0xfe;
@@ -6846,16 +6873,18 @@ void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd)
/// Party invite result.
/// 00fd <nick>.24S <result>.B (ZC_ACK_REQ_JOIN_GROUP)
/// 02c5 <nick>.24S <result>.L (ZC_PARTY_JOIN_REQ_ACK)
-/// result=0 : char is already in a party -> MsgStringTable[80]
-/// result=1 : party invite was rejected -> MsgStringTable[81]
-/// result=2 : party invite was accepted -> MsgStringTable[82]
-/// result=3 : party is full -> MsgStringTable[83]
-/// result=4 : char of the same account already joined the party -> MsgStringTable[608]
-/// result=5 : char blocked party invite -> MsgStringTable[1324] (since 20070904)
-/// result=7 : char is not online or doesn't exist -> MsgStringTable[71] (since 20070904)
-/// result=8 : (%s) TODO instance related? -> MsgStringTable[1388] (since 20080527)
-/// return=9 : TODO map prohibits party joining? -> MsgStringTable[1871] (since 20110205)
-void clif_party_inviteack(struct map_session_data* sd, const char* nick, int result)
+/// result=0 : char is already in a party -> MsgStringTable[80]
+/// result=1 : party invite was rejected -> MsgStringTable[81]
+/// result=2 : party invite was accepted -> MsgStringTable[82]
+/// result=3 : party is full -> MsgStringTable[83]
+/// result=4 : char of the same account already joined the party -> MsgStringTable[608]
+/// result=5 : char blocked party invite -> MsgStringTable[1324] (since 20070904)
+/// result=7 : char is not online or doesn't exist -> MsgStringTable[71] (since 20070904)
+/// result=8 : (%s) are currently in restricted map to join a party. -> MsgStringTable[1388] (since 20080527)
+/// result=9 : Cannot join a party in this map. -> MsgStringTable[1871] (since 20110215)
+/// result=10 : You cannot invite or withdraw while in memorial dungeon -> message: MSG_ID_BD3 (since 20161130)
+/// result=11 : The character is a level that can not join the party -> message: MSG_ID_C9A (since 20170412)
+static void clif_party_inviteack(struct map_session_data *sd, const char *nick, int result)
{
int fd;
nullpo_retv(sd);
@@ -6895,7 +6924,7 @@ void clif_party_inviteack(struct map_session_data* sd, const char* nick, int res
/// flag:
/// 0 = send to party
/// 1 = send to sd
-void clif_party_option(struct party_data *p,struct map_session_data *sd,int flag)
+static void clif_party_option(struct party_data *p, struct map_session_data *sd, int flag)
{
unsigned char buf[16];
#if PACKETVER < 20090603
@@ -6932,7 +6961,7 @@ void clif_party_option(struct party_data *p,struct map_session_data *sd,int flag
/// 1 = expel
/// 2 = cannot leave party on this map
/// 3 = cannot expel from party on this map
-void clif_party_withdraw(struct party_data* p, struct map_session_data* sd, int account_id, const char* name, int flag)
+static void clif_party_withdraw(struct party_data *p, struct map_session_data *sd, int account_id, const char *name, int flag)
{
unsigned char buf[64];
@@ -6962,7 +6991,7 @@ void clif_party_withdraw(struct party_data* p, struct map_session_data* sd, int
/// Party chat message (ZC_NOTIFY_CHAT_PARTY).
/// 0109 <packet len>.W <account id>.L <message>.?B
-void clif_party_message(struct party_data *p, int account_id, const char *mes, int len)
+static void clif_party_message(struct party_data *p, int account_id, const char *mes, int len)
{
struct map_session_data *sd;
int i;
@@ -6993,7 +7022,7 @@ void clif_party_message(struct party_data *p, int account_id, const char *mes, i
/// Updates the position of a party member on the minimap (ZC_NOTIFY_POSITION_TO_GROUPM).
/// 0107 <account id>.L <x>.W <y>.W
-void clif_party_xy(struct map_session_data *sd)
+static void clif_party_xy(struct map_session_data *sd)
{
unsigned char buf[16];
@@ -7009,7 +7038,7 @@ void clif_party_xy(struct map_session_data *sd)
/*==========================================
* Sends x/y dot to a single fd. [Skotlex]
*------------------------------------------*/
-void clif_party_xy_single(int fd, struct map_session_data *sd)
+static void clif_party_xy_single(int fd, struct map_session_data *sd)
{
nullpo_retv(sd);
WFIFOHEAD(fd,packet_len(0x107));
@@ -7023,7 +7052,7 @@ void clif_party_xy_single(int fd, struct map_session_data *sd)
/// Updates HP bar of a party member.
/// 0106 <account id>.L <hp>.W <max hp>.W (ZC_NOTIFY_HP_TO_GROUPM)
/// 080e <account id>.L <hp>.L <max hp>.L (ZC_NOTIFY_HP_TO_GROUPM_R2)
-void clif_party_hp(struct map_session_data *sd)
+static void clif_party_hp(struct map_session_data *sd)
{
unsigned char buf[16];
#if PACKETVER < 20100126
@@ -7054,7 +7083,7 @@ void clif_party_hp(struct map_session_data *sd)
/*==========================================
* Sends HP bar to a single fd. [Skotlex]
*------------------------------------------*/
-void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp)
+static void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp)
{
#if PACKETVER < 20100126
const int cmd = 0x106;
@@ -7082,7 +7111,7 @@ void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp)
/// Notifies the client, that it's attack target is too far (ZC_ATTACK_FAILURE_FOR_DISTANCE).
/// 0139 <target id>.L <target x>.W <target y>.W <x>.W <y>.W <atk range>.W
-void clif_movetoattack(struct map_session_data *sd,struct block_list *bl)
+static void clif_movetoattack(struct map_session_data *sd, struct block_list *bl)
{
int fd;
@@ -7108,27 +7137,33 @@ void clif_movetoattack(struct map_session_data *sd,struct block_list *bl)
/// 1 = failure
/// 2 = success (alchemist)
/// 3 = failure (alchemist)
-void clif_produceeffect(struct map_session_data* sd,int flag,int nameid)
+/// 4 = success (???)
+/// 5 = failure (???)
+/// 6 = failure (???)
+/// 7 = failure (???)
+static void clif_produceeffect(struct map_session_data *sd, int flag, int nameid)
{
- int view,fd;
+ int view, fd;
+ struct PACKET_ZC_ACK_REQMAKINGITEM p;
nullpo_retv(sd);
fd = sd->fd;
clif->solved_charname(fd, sd->status.char_id, sd->status.name);
- WFIFOHEAD(fd,packet_len(0x18f));
- WFIFOW(fd, 0)=0x18f;
- WFIFOW(fd, 2)=flag;
- if((view = itemdb_viewid(nameid)) > 0)
- WFIFOW(fd, 4)=view;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x18f;
+ p.result = flag;
+ if ((view = itemdb_viewid(nameid)) > 0)
+ p.itemId = view;
else
- WFIFOW(fd, 4)=nameid;
- WFIFOSET(fd,packet_len(0x18f));
+ p.itemId = nameid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Initiates the pet taming process (ZC_START_CAPTURE).
/// 019e
-void clif_catch_process(struct map_session_data *sd)
+static void clif_catch_process(struct map_session_data *sd)
{
int fd;
@@ -7144,7 +7179,7 @@ void clif_catch_process(struct map_session_data *sd)
/// 01a0 <result>.B
/// 0 = failure
/// 1 = success
-void clif_pet_roulette(struct map_session_data *sd,int data)
+static void clif_pet_roulette(struct map_session_data *sd, int data)
{
int fd;
@@ -7159,7 +7194,8 @@ void clif_pet_roulette(struct map_session_data *sd,int data)
/// Presents a list of pet eggs that can be hatched (ZC_PETEGG_LIST).
/// 01a6 <packet len>.W { <index>.W }*
-void clif_sendegg(struct map_session_data *sd) {
+static void clif_sendegg(struct map_session_data *sd)
+{
int i, n, fd;
nullpo_retv(sd);
@@ -7199,7 +7235,7 @@ void clif_sendegg(struct map_session_data *sd) {
/// 5 = hairstyle
///
/// If sd is null, the update is sent to nearby objects, otherwise it is sent only to that player.
-void clif_send_petdata(struct map_session_data* sd, struct pet_data* pd, int type, int param)
+static void clif_send_petdata(struct map_session_data *sd, struct pet_data *pd, int type, int param)
{
uint8 buf[16];
nullpo_retv(pd);
@@ -7216,7 +7252,7 @@ void clif_send_petdata(struct map_session_data* sd, struct pet_data* pd, int typ
/// Pet's base data (ZC_PROPERTY_PET).
/// 01a2 <name>.24B <renamed>.B <level>.W <hunger>.W <intimacy>.W <accessory id>.W <class>.W
-void clif_send_petstatus(struct map_session_data *sd)
+static void clif_send_petstatus(struct map_session_data *sd)
{
int fd;
struct s_pet *p;
@@ -7244,7 +7280,7 @@ void clif_send_petstatus(struct map_session_data *sd)
/// 01aa <id>.L <data>.L
/// data:
/// @see CZ_PET_ACT.
-void clif_pet_emotion(struct pet_data *pd,int param)
+static void clif_pet_emotion(struct pet_data *pd, int param)
{
unsigned char buf[16];
@@ -7273,23 +7309,25 @@ void clif_pet_emotion(struct pet_data *pd,int param)
/// result:
/// 0 = failure
/// 1 = success
-void clif_pet_food(struct map_session_data *sd,int foodid,int fail)
+static void clif_pet_food(struct map_session_data *sd, int foodid, int fail)
{
int fd;
+ struct PACKET_ZC_FEED_PET p;
nullpo_retv(sd);
- fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0x1a3));
- WFIFOW(fd,0)=0x1a3;
- WFIFOB(fd,2)=fail;
- WFIFOW(fd,3)=foodid;
- WFIFOSET(fd,packet_len(0x1a3));
+ fd = sd->fd;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x1a3;
+ p.result = fail;
+ p.itemId = foodid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Presents a list of skills that can be auto-spelled (ZC_AUTOSPELLLIST).
/// 01cd { <skill id>.L }*7
-void clif_autospell(struct map_session_data *sd,uint16 skill_lv)
+static void clif_autospell(struct map_session_data *sd, uint16 skill_lv)
{
int fd;
@@ -7335,7 +7373,7 @@ void clif_autospell(struct map_session_data *sd,uint16 skill_lv)
/// Devotion's visual effect (ZC_DEVOTIONLIST).
/// 01cf <devoter id>.L { <devotee id>.L }*5 <max distance>.W
-void clif_devotion(struct block_list *src, struct map_session_data *tsd)
+static void clif_devotion(struct block_list *src, struct map_session_data *tsd)
{
unsigned char buf[56];
@@ -7386,7 +7424,8 @@ void clif_devotion(struct block_list *src, struct map_session_data *tsd)
* 01d0 <id>.L <amount>.W (ZC_SPIRITS)
* 01e1 <id>.L <amount>.W (ZC_SPIRITS2)
*------------------------------------------*/
-void clif_spiritball(struct block_list *bl) {
+static void clif_spiritball(struct block_list *bl)
+{
unsigned char buf[16];
struct map_session_data *sd = BL_CAST(BL_PC,bl);
struct homun_data *hd = BL_CAST(BL_HOM,bl);
@@ -7405,7 +7444,7 @@ void clif_spiritball(struct block_list *bl) {
/// Notifies clients in area of a character's combo delay (ZC_COMBODELAY).
/// 01d2 <account id>.L <delay>.L
-void clif_combo_delay(struct block_list *bl,int wait)
+static void clif_combo_delay(struct block_list *bl, int wait)
{
unsigned char buf[32];
@@ -7422,7 +7461,7 @@ void clif_combo_delay(struct block_list *bl,int wait)
/// flag:
/// 0 = inactive
/// 1 = active
-void clif_bladestop(struct block_list *src, int dst_id, int active)
+static void clif_bladestop(struct block_list *src, int dst_id, int active)
{
unsigned char buf[32];
@@ -7438,7 +7477,7 @@ void clif_bladestop(struct block_list *src, int dst_id, int active)
/// MVP effect (ZC_MVP).
/// 010c <account id>.L
-void clif_mvp_effect(struct map_session_data *sd)
+static void clif_mvp_effect(struct map_session_data *sd)
{
unsigned char buf[16];
@@ -7451,25 +7490,28 @@ void clif_mvp_effect(struct map_session_data *sd)
/// MVP item reward message (ZC_MVP_GETTING_ITEM).
/// 010a <name id>.W
-void clif_mvp_item(struct map_session_data *sd,int nameid)
+/// 010a <name id>.L
+static void clif_mvp_item(struct map_session_data *sd, int nameid)
{
- int view,fd;
+ int view, fd;
+ struct PACKET_ZC_MVP_GETTING_ITEM p;
nullpo_retv(sd);
- fd=sd->fd;
- WFIFOHEAD(fd,packet_len(0x10a));
- WFIFOW(fd,0)=0x10a;
- if((view = itemdb_viewid(nameid)) > 0)
- WFIFOW(fd,2)=view;
+ fd = sd->fd;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x10a;
+ if ((view = itemdb_viewid(nameid)) > 0)
+ p.itemId = view;
else
- WFIFOW(fd,2)=nameid;
- WFIFOSET(fd,packet_len(0x10a));
+ p.itemId = nameid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// MVP EXP reward message (ZC_MVP_GETTING_SPECIAL_EXP).
/// 010b <exp>.L
-void clif_mvp_exp(struct map_session_data *sd, unsigned int exp)
+static void clif_mvp_exp(struct map_session_data *sd, unsigned int exp)
{
#if PACKETVER >= 20131223 // Kro removed this packet [Napster]
if (battle_config.mvp_exp_reward_message) {
@@ -7495,7 +7537,7 @@ void clif_mvp_exp(struct map_session_data *sd, unsigned int exp)
///
/// "You are the MVP, but cannot obtain the reward because
/// you are overweight."
-void clif_mvp_noitem(struct map_session_data* sd)
+static void clif_mvp_noitem(struct map_session_data *sd)
{
int fd = sd->fd;
@@ -7511,7 +7553,7 @@ void clif_mvp_noitem(struct map_session_data* sd)
/// 1 = "You are already in a Guild."
/// 2 = "That Guild Name already exists."
/// 3 = "You need the necessary item to create a Guild."
-void clif_guild_created(struct map_session_data *sd,int flag)
+static void clif_guild_created(struct map_session_data *sd, int flag)
{
int fd;
@@ -7527,7 +7569,7 @@ void clif_guild_created(struct map_session_data *sd,int flag)
/// Notifies the client that it is belonging to a guild (ZC_UPDATE_GDID).
/// 016c <guild id>.L <emblem id>.L <mode>.L <ismaster>.B <inter sid>.L <guild name>.24B
/// mode: @see enum guild_permission
-void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g)
+static void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g)
{
int ps,fd;
nullpo_retv(sd);
@@ -7552,7 +7594,7 @@ void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g)
/// status:
/// 0 = offline
/// 1 = online
-void clif_guild_memberlogin_notice(struct guild *g,int idx,int flag)
+static void clif_guild_memberlogin_notice(struct guild *g, int idx, int flag)
{
unsigned char buf[64];
struct map_session_data* sd;
@@ -7589,7 +7631,7 @@ void clif_guild_memberlogin_notice(struct guild *g,int idx,int flag)
// At next time the client would always show the message.
// The function sends all the statuses in the single packet
// to economize traffic. [LuzZza]
-void clif_guild_send_onlineinfo(struct map_session_data *sd)
+static void clif_guild_send_onlineinfo(struct map_session_data *sd)
{
struct guild *g;
unsigned char buf[14*128];
@@ -7628,7 +7670,7 @@ void clif_guild_send_onlineinfo(struct map_session_data *sd)
/// &0x10 = Expulsion list
/// &0x40 = Unknown (GMENUFLAG_ALLGUILDLIST)
/// &0x80 = Notice
-void clif_guild_masterormember(struct map_session_data *sd)
+static void clif_guild_masterormember(struct map_session_data *sd)
{
int fd;
@@ -7644,7 +7686,7 @@ void clif_guild_masterormember(struct map_session_data *sd)
/// Guild basic information (Territories [Valaris])
/// 0150 <guild id>.L <level>.L <member num>.L <member max>.L <exp>.L <max exp>.L <points>.L <honor>.L <virtue>.L <emblem id>.L <name>.24B <master name>.24B <manage land>.16B (ZC_GUILD_INFO)
/// 01b6 <guild id>.L <level>.L <member num>.L <member max>.L <exp>.L <max exp>.L <points>.L <honor>.L <virtue>.L <emblem id>.L <name>.24B <master name>.24B <manage land>.16B <zeny>.L (ZC_GUILD_INFO2)
-void clif_guild_basicinfo(struct map_session_data *sd)
+static void clif_guild_basicinfo(struct map_session_data *sd)
{
int fd;
struct guild *g;
@@ -7690,7 +7732,7 @@ void clif_guild_basicinfo(struct map_session_data *sd)
/// Guild alliance and opposition list (ZC_MYGUILD_BASIC_INFO).
/// 014c <packet len>.W { <relation>.L <guild id>.L <guild name>.24B }*
-void clif_guild_allianceinfo(struct map_session_data *sd)
+static void clif_guild_allianceinfo(struct map_session_data *sd)
{
int fd,i,c;
struct guild *g;
@@ -7722,7 +7764,7 @@ void clif_guild_allianceinfo(struct map_session_data *sd)
/// 1 = online
/// memo:
/// probably member's self-introduction (unused, no client UI/packets for editing it)
-void clif_guild_memberlist(struct map_session_data *sd)
+static void clif_guild_memberlist(struct map_session_data *sd)
{
int fd;
int i,c;
@@ -7772,7 +7814,8 @@ void clif_guild_memberlist(struct map_session_data *sd)
/// Guild position name information (ZC_POSITION_ID_NAME_INFO).
/// 0166 <packet len>.W { <position id>.L <position name>.24B }*
-void clif_guild_positionnamelist(struct map_session_data *sd) {
+static void clif_guild_positionnamelist(struct map_session_data *sd)
+{
int i,fd;
struct guild *g;
@@ -7796,7 +7839,8 @@ void clif_guild_positionnamelist(struct map_session_data *sd) {
/// mode: @see enum guild_permission
/// ranking:
/// TODO
-void clif_guild_positioninfolist(struct map_session_data *sd) {
+static void clif_guild_positioninfolist(struct map_session_data *sd)
+{
int i,fd;
struct guild *g;
@@ -7823,7 +7867,7 @@ void clif_guild_positioninfolist(struct map_session_data *sd) {
/// mode: @see enum guild_permission
/// ranking:
/// TODO
-void clif_guild_positionchanged(struct guild *g,int idx)
+static void clif_guild_positionchanged(struct guild *g, int idx)
{
// FIXME: This packet is intended to update the clients after a
// commit of position info changes, not sending one packet per
@@ -7848,7 +7892,7 @@ void clif_guild_positionchanged(struct guild *g,int idx)
/// Notifies clients in a guild about updated member position assignments (ZC_ACK_REQ_CHANGE_MEMBERS).
/// 0156 <packet len>.W { <account id>.L <char id>.L <position id>.L }*
-void clif_guild_memberpositionchanged(struct guild *g,int idx)
+static void clif_guild_memberpositionchanged(struct guild *g, int idx)
{
// FIXME: This packet is intended to update the clients after a
// commit of member position assignment changes, not sending one
@@ -7871,7 +7915,7 @@ void clif_guild_memberpositionchanged(struct guild *g,int idx)
/// Sends emblems bitmap data to the client that requested it (ZC_GUILD_EMBLEM_IMG).
/// 0152 <packet len>.W <guild id>.L <emblem id>.L <emblem data>.?B
-void clif_guild_emblem(struct map_session_data *sd,struct guild *g)
+static void clif_guild_emblem(struct map_session_data *sd, struct guild *g)
{
int fd;
nullpo_retv(sd);
@@ -7892,7 +7936,7 @@ void clif_guild_emblem(struct map_session_data *sd,struct guild *g)
/// Sends update of the guild id/emblem id to everyone in the area (ZC_CHANGE_GUILD).
/// 01b4 <id>.L <guild id>.L <emblem id>.W
-void clif_guild_emblem_area(struct block_list* bl)
+static void clif_guild_emblem_area(struct block_list *bl)
{
uint8 buf[12];
@@ -7909,7 +7953,7 @@ void clif_guild_emblem_area(struct block_list* bl)
/// Sends guild skills (ZC_GUILD_SKILLINFO).
/// 0162 <packet len>.W <skill points>.W { <skill id>.W <type>.L <level>.W <sp cost>.W <atk range>.W <skill name>.24B <upgradeable>.B }*
-void clif_guild_skillinfo(struct map_session_data* sd)
+static void clif_guild_skillinfo(struct map_session_data *sd)
{
int fd;
struct guild* g;
@@ -7948,7 +7992,7 @@ void clif_guild_skillinfo(struct map_session_data* sd)
/// Sends guild notice to client (ZC_GUILD_NOTICE).
/// 016f <subject>.60B <notice>.120B
-void clif_guild_notice(struct map_session_data* sd, struct guild* g)
+static void clif_guild_notice(struct map_session_data *sd, struct guild *g)
{
int fd;
@@ -7972,7 +8016,7 @@ void clif_guild_notice(struct map_session_data* sd, struct guild* g)
/// Guild invite (ZC_REQ_JOIN_GUILD).
/// 016a <guild id>.L <guild name>.24B
-void clif_guild_invite(struct map_session_data *sd,struct guild *g)
+static void clif_guild_invite(struct map_session_data *sd, struct guild *g)
{
int fd;
@@ -7994,7 +8038,7 @@ void clif_guild_invite(struct map_session_data *sd,struct guild *g)
/// 1 = Offer rejected.
/// 2 = Offer accepted.
/// 3 = Guild full.
-void clif_guild_inviteack(struct map_session_data *sd,int flag)
+static void clif_guild_inviteack(struct map_session_data *sd, int flag)
{
int fd;
@@ -8009,7 +8053,7 @@ void clif_guild_inviteack(struct map_session_data *sd,int flag)
/// Notifies clients of a guild of a leaving member (ZC_ACK_LEAVE_GUILD).
/// 015a <char name>.24B <reason>.40B
-void clif_guild_leave(struct map_session_data *sd,const char *name,const char *mes)
+static void clif_guild_leave(struct map_session_data *sd, const char *name, const char *mes)
{
unsigned char buf[128];
@@ -8024,7 +8068,7 @@ void clif_guild_leave(struct map_session_data *sd,const char *name,const char *m
/// Notifies clients of a guild of an expelled member.
/// 015c <char name>.24B <reason>.40B <account name>.24B (ZC_ACK_BAN_GUILD)
/// 0839 <char name>.24B <reason>.40B (ZC_ACK_BAN_GUILD_SSO)
-void clif_guild_expulsion(struct map_session_data* sd, const char* name, const char* mes, int account_id)
+static void clif_guild_expulsion(struct map_session_data *sd, const char *name, const char *mes, int account_id)
{
unsigned char buf[128];
#if PACKETVER < 20100803
@@ -8049,7 +8093,8 @@ void clif_guild_expulsion(struct map_session_data* sd, const char* name, const c
/// Guild expulsion list (ZC_BAN_LIST).
/// 0163 <packet len>.W { <char name>.24B <account name>.24B <reason>.40B }*
/// 0163 <packet len>.W { <char name>.24B <reason>.40B }* (PACKETVER >= 20100803)
-void clif_guild_expulsionlist(struct map_session_data* sd) {
+static void clif_guild_expulsionlist(struct map_session_data *sd)
+{
#if PACKETVER < 20100803
const int offset = NAME_LENGTH*2+40;
#else
@@ -8090,7 +8135,7 @@ void clif_guild_expulsionlist(struct map_session_data* sd) {
/// Guild chat message (ZC_GUILD_CHAT).
/// 017f <packet len>.W <message>.?B
-void clif_guild_message(struct guild *g,int account_id,const char *mes,int len)
+static void clif_guild_message(struct guild *g, int account_id, const char *mes, int len)
{// TODO: account_id is not used, candidate for deletion? [Ai4rei]
struct map_session_data *sd;
uint8 buf[256];
@@ -8114,7 +8159,7 @@ void clif_guild_message(struct guild *g,int account_id,const char *mes,int len)
/// Request for guild alliance (ZC_REQ_ALLY_GUILD).
/// 0171 <inviter account id>.L <guild name>.24B
-void clif_guild_reqalliance(struct map_session_data *sd,int account_id,const char *name)
+static void clif_guild_reqalliance(struct map_session_data *sd, int account_id, const char *name)
{
int fd;
@@ -8138,7 +8183,7 @@ void clif_guild_reqalliance(struct map_session_data *sd,int account_id,const cha
/// 3 = They have too any alliances.
/// 4 = You have too many alliances.
/// 5 = Alliances are disabled.
-void clif_guild_allianceack(struct map_session_data *sd,int flag)
+static void clif_guild_allianceack(struct map_session_data *sd, int flag)
{
int fd;
@@ -8156,7 +8201,7 @@ void clif_guild_allianceack(struct map_session_data *sd,int flag)
/// relation:
/// 0 = Ally
/// 1 = Enemy
-void clif_guild_delalliance(struct map_session_data *sd,int guild_id,int flag)
+static void clif_guild_delalliance(struct map_session_data *sd, int guild_id, int flag)
{
int fd;
@@ -8179,7 +8224,7 @@ void clif_guild_delalliance(struct map_session_data *sd,int guild_id,int flag)
/// 1 = Guild has too many Antagonists.
/// 2 = Already set as an Antagonist.
/// 3 = Antagonists are disabled.
-void clif_guild_oppositionack(struct map_session_data *sd,int flag)
+static void clif_guild_oppositionack(struct map_session_data *sd, int flag)
{
int fd;
@@ -8194,8 +8239,8 @@ void clif_guild_oppositionack(struct map_session_data *sd,int flag)
/// Adds alliance or opposition (ZC_ADD_RELATED_GUILD).
/// 0185 <relation>.L <guild id>.L <guild name>.24B
-/*
-void clif_guild_allianceadded(struct guild *g,int idx)
+#if 0
+static void clif_guild_allianceadded(struct guild *g, int idx)
{
unsigned char buf[64];
WBUFW(buf,0)=0x185;
@@ -8204,14 +8249,14 @@ void clif_guild_allianceadded(struct guild *g,int idx)
memcpy(WBUFP(buf,10),g->alliance[idx].name,NAME_LENGTH);
clif->send(buf,packet_len(0x185),guild->getavailablesd(g),GUILD);
}
-*/
+#endif // 0
/// Notifies the client about the result of a guild break (ZC_ACK_DISORGANIZE_GUILD_RESULT).
/// 015e <reason>.L
/// 0 = success
/// 1 = invalid key (guild name, @see clif_parse_GuildBreak)
/// 2 = there are still members in the guild
-void clif_guild_broken(struct map_session_data *sd,int flag)
+static void clif_guild_broken(struct map_session_data *sd, int flag)
{
int fd;
@@ -8228,7 +8273,7 @@ void clif_guild_broken(struct map_session_data *sd,int flag)
/// 00c0 <id>.L <type>.B
/// type:
/// enum emotion_type
-void clif_emotion(struct block_list *bl,int type)
+static void clif_emotion(struct block_list *bl, int type)
{
unsigned char buf[8];
@@ -8242,7 +8287,7 @@ void clif_emotion(struct block_list *bl,int type)
/// Displays the contents of a talkiebox trap (ZC_TALKBOX_CHATCONTENTS).
/// 0191 <id>.L <contents>.80B
-void clif_talkiebox(struct block_list* bl, const char* talkie)
+static void clif_talkiebox(struct block_list *bl, const char *talkie)
{
unsigned char buf[MESSAGE_SIZE+6];
nullpo_retv(bl);
@@ -8256,7 +8301,7 @@ void clif_talkiebox(struct block_list* bl, const char* talkie)
/// Displays wedding effect centered on an object (ZC_CONGRATULATION).
/// 01ea <id>.L
-void clif_wedding_effect(struct block_list *bl)
+static void clif_wedding_effect(struct block_list *bl)
{
unsigned char buf[6];
@@ -8269,7 +8314,8 @@ void clif_wedding_effect(struct block_list *bl)
/// Notifies the client of the name of the partner character (ZC_COUPLENAME).
/// 01e6 <partner name>.24B
-void clif_callpartner(struct map_session_data *sd) {
+static void clif_callpartner(struct map_session_data *sd)
+{
unsigned char buf[26];
nullpo_retv(sd);
@@ -8294,8 +8340,8 @@ void clif_callpartner(struct map_session_data *sd) {
/// Initiates the partner "taming" process [DracoRPG] (ZC_START_COUPLE).
/// 01e4
/// This packet while still implemented by the client is no longer being officially used.
-/*
-void clif_marriage_process(struct map_session_data *sd)
+#if 0
+static void clif_marriage_process(struct map_session_data *sd)
{
int fd;
nullpo_retv(sd);
@@ -8305,11 +8351,11 @@ void clif_marriage_process(struct map_session_data *sd)
WFIFOW(fd,0)=0x1e4;
WFIFOSET(fd,packet_len(0x1e4));
}
-*/
+#endif // 0
/// Notice of divorce (ZC_DIVORCE).
/// 0205 <partner name>.24B
-void clif_divorced(struct map_session_data* sd, const char* name)
+static void clif_divorced(struct map_session_data *sd, const char *name)
{
int fd;
nullpo_retv(sd);
@@ -8324,8 +8370,8 @@ void clif_divorced(struct map_session_data* sd, const char* name)
/// Marriage proposal (ZC_REQ_COUPLE).
/// 01e2 <account id>.L <char id>.L <char name>.24B
/// This packet while still implemented by the client is no longer being officially used.
-/*
-void clif_marriage_proposal(int fd, struct map_session_data *sd, struct map_session_data* ssd)
+#if 0
+static void clif_marriage_proposal(int fd, struct map_session_data *sd, struct map_session_data *ssd)
{
nullpo_retv(sd);
@@ -8336,12 +8382,12 @@ void clif_marriage_proposal(int fd, struct map_session_data *sd, struct map_sess
safestrncpy(WFIFOP(fd,10), ssd->status.name, NAME_LENGTH);
WFIFOSET(fd, packet_len(0x1e2));
}
-*/
+#endif // 0
/*==========================================
* Displays a message using the guild-chat colors to the specified targets. [Skotlex]
*------------------------------------------*/
-void clif_disp_message(struct block_list *src, const char *mes, enum send_target target)
+static void clif_disp_message(struct block_list *src, const char *mes, enum send_target target)
{
unsigned char buf[256];
int len;
@@ -8370,7 +8416,7 @@ void clif_disp_message(struct block_list *src, const char *mes, enum send_target
/// result:
/// 0 = failure
/// 1 = success
-void clif_GM_kickack(struct map_session_data *sd, int result)
+static void clif_GM_kickack(struct map_session_data *sd, int result)
{
int fd;
@@ -8383,7 +8429,8 @@ void clif_GM_kickack(struct map_session_data *sd, int result)
WFIFOSET(fd, packet_len(0xcd));
}
-void clif_GM_kick(struct map_session_data *sd,struct map_session_data *tsd) {
+static void clif_GM_kick(struct map_session_data *sd, struct map_session_data *tsd)
+{
int fd;
nullpo_retv(tsd);
@@ -8407,7 +8454,7 @@ void clif_GM_kick(struct map_session_data *sd,struct map_session_data *tsd) {
/// 3 = "Chat Block has been applied by GM due to your ill-mannerous action."
/// 4 = "Automated Chat Block has been applied due to Anti-Spam System."
/// 5 = "You got a good point from %s."
-void clif_manner_message(struct map_session_data* sd, uint32 type)
+static void clif_manner_message(struct map_session_data *sd, uint32 type)
{
int fd;
nullpo_retv(sd);
@@ -8424,7 +8471,7 @@ void clif_manner_message(struct map_session_data* sd, uint32 type)
/// type:
/// 0 = positive (unmute)
/// 1 = negative (mute)
-void clif_GM_silence(struct map_session_data* sd, struct map_session_data* tsd, uint8 type)
+static void clif_GM_silence(struct map_session_data *sd, struct map_session_data *tsd, uint8 type)
{
int fd;
nullpo_retv(sd);
@@ -8447,7 +8494,8 @@ void clif_GM_silence(struct map_session_data* sd, struct map_session_data* tsd,
/// 0 = success
/// 1 = failure
/// 2 = too many blocks
-void clif_wisexin(struct map_session_data *sd,int type,int flag) {
+static void clif_wisexin(struct map_session_data *sd, int type, int flag)
+{
int fd;
nullpo_retv(sd);
@@ -8468,7 +8516,8 @@ void clif_wisexin(struct map_session_data *sd,int type,int flag) {
/// result:
/// 0 = success
/// 1 = failure
-void clif_wisall(struct map_session_data *sd,int type,int flag) {
+static void clif_wisall(struct map_session_data *sd, int type, int flag)
+{
int fd;
nullpo_retv(sd);
@@ -8483,7 +8532,7 @@ void clif_wisall(struct map_session_data *sd,int type,int flag) {
/// Play a BGM! [Rikter/Yommy] (ZC_PLAY_NPC_BGM).
/// 07fe <bgm>.24B
-void clif_playBGM(struct map_session_data* sd, const char* name)
+static void clif_playBGM(struct map_session_data *sd, const char *name)
{
int fd;
@@ -8509,7 +8558,7 @@ void clif_playBGM(struct map_session_data* sd, const char* name)
/// npc id:
/// The acoustic direction of the sound is determined by the
/// relative position of the NPC to the player (3D sound).
-void clif_soundeffect(struct map_session_data* sd, struct block_list* bl, const char* name, int type)
+static void clif_soundeffect(struct map_session_data *sd, struct block_list *bl, const char *name, int type)
{
int fd;
@@ -8527,7 +8576,7 @@ void clif_soundeffect(struct map_session_data* sd, struct block_list* bl, const
WFIFOSET(fd,packet_len(0x1d3));
}
-void clif_soundeffectall(struct block_list* bl, const char* name, int type, enum send_target coverage)
+static void clif_soundeffectall(struct block_list *bl, const char *name, int type, enum send_target coverage)
{
unsigned char buf[40];
@@ -8546,7 +8595,7 @@ void clif_soundeffectall(struct block_list* bl, const char* name, int type, enum
/// 01f3 <id>.L <effect id>.L
/// effect id:
/// @see doc/effect_list.txt
-void clif_specialeffect(struct block_list* bl, int type, enum send_target target)
+static void clif_specialeffect(struct block_list *bl, int type, enum send_target target)
{
unsigned char buf[24];
@@ -8566,7 +8615,8 @@ void clif_specialeffect(struct block_list* bl, int type, enum send_target target
}
}
-void clif_specialeffect_single(struct block_list* bl, int type, int fd) {
+static void clif_specialeffect_single(struct block_list *bl, int type, int fd)
+{
nullpo_retv(bl);
WFIFOHEAD(fd,10);
WFIFOW(fd,0) = 0x1f3;
@@ -8581,7 +8631,7 @@ void clif_specialeffect_single(struct block_list* bl, int type, int fd) {
/// @see doc/effect_list.txt
/// num data:
/// effect-dependent value
-void clif_specialeffect_value(struct block_list* bl, int effect_id, int num, send_target target)
+static void clif_specialeffect_value(struct block_list *bl, int effect_id, int num, send_target target)
{
uint8 buf[14];
@@ -8606,7 +8656,7 @@ void clif_specialeffect_value(struct block_list* bl, int effect_id, int num, sen
* @param color Message color (RGB format: 0xRRGGBB)
* @param msg Message text
*/
-void clif_messagecolor_self(int fd, uint32 color, const char *msg)
+static void clif_messagecolor_self(int fd, uint32 color, const char *msg)
{
int msg_len;
@@ -8632,7 +8682,7 @@ void clif_messagecolor_self(int fd, uint32 color, const char *msg)
* @param color Message color (RGB format: 0xRRGGBB)
* @param msg Message text
*/
-void clif_messagecolor(struct block_list *bl, uint32 color, const char *msg)
+static void clif_messagecolor(struct block_list *bl, uint32 color, const char *msg)
{
int msg_len;
uint8 buf[256];
@@ -8662,7 +8712,7 @@ void clif_messagecolor(struct block_list *bl, uint32 color, const char *msg)
* Should only be used in cases where the client closed the
* storage window without server's consent
**/
-void clif_refresh_storagewindow(struct map_session_data *sd)
+static void clif_refresh_storagewindow(struct map_session_data *sd)
{
nullpo_retv(sd);
// Notify the client that the storage is open
@@ -8689,7 +8739,7 @@ void clif_refresh_storagewindow(struct map_session_data *sd)
}
// refresh the client's screen, getting rid of any effects
-void clif_refresh(struct map_session_data *sd)
+static void clif_refresh(struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -8754,7 +8804,7 @@ void clif_refresh(struct map_session_data *sd)
/// Updates the object's (bl) name on client.
/// 0095 <id>.L <char name>.24B (ZC_ACK_REQNAME)
/// 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL)
-void clif_charnameack (int fd, struct block_list *bl)
+static void clif_charnameack(int fd, struct block_list *bl)
{
unsigned char buf[103];
int cmd = 0x95;
@@ -8888,7 +8938,7 @@ void clif_charnameack (int fd, struct block_list *bl)
//Used to update when a char leaves a party/guild. [Skotlex]
//Needed because when you send a 0x95 packet, the client will not remove the cached party/guild info that is not sent.
-void clif_charnameupdate (struct map_session_data *ssd)
+static void clif_charnameupdate(struct map_session_data *ssd)
{
unsigned char buf[103];
int cmd = 0x195, ps = -1;
@@ -8946,7 +8996,7 @@ void clif_charnameupdate (struct map_session_data *ssd)
/// Visually moves(instant) a character to x,y. The char moves even
/// when the target cell isn't walkable. If the char is sitting it
/// stays that way.
-void clif_slide(struct block_list *bl, int x, int y)
+static void clif_slide(struct block_list *bl, int x, int y)
{
unsigned char buf[10];
nullpo_retv(bl);
@@ -8965,40 +9015,65 @@ void clif_slide(struct block_list *bl, int x, int y)
/// Public chat message (ZC_NOTIFY_CHAT). lordalfa/Skotlex - used by @me as well
/// 008d <packet len>.W <id>.L <message>.?B
-void clif_disp_overhead(struct block_list *bl, const char *mes)
+static void clif_disp_overhead(struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl)
{
- unsigned char buf[256]; //This should be more than sufficient, the theoretical max is CHAT_SIZE + 8 (pads and extra inserted crap)
+ char buf[CHAT_SIZE_MAX + (int)sizeof(struct PACKET_ZC_NOTIFY_CHAT)];
+ int max_len = CHAT_SIZE_MAX - (int)sizeof(struct PACKET_ZC_NOTIFY_CHAT);
+ struct PACKET_ZC_NOTIFY_CHAT *p = (struct PACKET_ZC_NOTIFY_CHAT *)&buf;
int mes_len;
nullpo_retv(bl);
nullpo_retv(mes);
- mes_len = (int)strlen(mes)+1; //Account for \0
- if (mes_len > (int)sizeof(buf)-8) {
- ShowError("clif_disp_overhead: Message too long (length %d)\n", mes_len);
- mes_len = sizeof(buf)-8; //Trunk it to avoid problems.
+ mes_len = (int)strlen(mes) + 1; //Account for \0
+ if (mes_len > max_len) {
+ ShowError("clif_disp_overhead: Truncated message '%s' (len=%d, max=%d).\n", mes, mes_len, max_len);
+ mes_len = max_len; //Trunk it to avoid problems.
}
+
// send message to others
- WBUFW(buf,0) = 0x8d;
- WBUFW(buf,2) = mes_len + 8; // len of message + 8 (command+len+id)
- WBUFL(buf,4) = bl->id;
- safestrncpy(WBUFP(buf,8), mes, mes_len);
- clif->send(buf, WBUFW(buf,2), bl, AREA_CHAT_WOC);
+ p->PacketType = 0x8d;
+ p->PacketLength = mes_len + (int)sizeof(struct PACKET_ZC_NOTIFY_CHAT); // len of message + 8 (command+len+id)
+ p->GID = bl->id;
+ safestrncpy(p->Message, mes, mes_len);
+ if (target == SELF && target_bl != NULL) {
+ clif->send(p, p->PacketLength, target_bl, SELF);
+ } else {
+ clif->send(p, p->PacketLength, bl, AREA_CHAT_WOC);
- // send back message to the speaker
- if (bl->type == BL_PC) {
- WBUFW(buf,0) = 0x8e;
- WBUFW(buf, 2) = mes_len + 4;
- safestrncpy(WBUFP(buf,4), mes, mes_len);
- clif->send(buf, WBUFW(buf,2), bl, SELF);
+ // send back message to the speaker
+ if (bl->type == BL_PC)
+ clif->notify_playerchat(bl, mes);
}
}
+static void clif_notify_playerchat(struct block_list *bl, const char *mes)
+{
+ char buf[CHAT_SIZE_MAX + (int)sizeof(struct PACKET_ZC_NOTIFY_PLAYERCHAT)];
+ int max_len = CHAT_SIZE_MAX - (int)sizeof(struct PACKET_ZC_NOTIFY_PLAYERCHAT);
+ struct PACKET_ZC_NOTIFY_PLAYERCHAT *p = (struct PACKET_ZC_NOTIFY_PLAYERCHAT *)&buf;
+ int mes_len;
+
+ nullpo_retv(bl);
+ nullpo_retv(mes);
+
+ mes_len = (int)strlen(mes) + 1; // Account for \0
+ if (mes_len > max_len) {
+ ShowError("clif_notify_playerchat: Truncated message '%s' (len=%d, max=%d).\n", mes, mes_len, max_len);
+ mes_len = max_len; // Truncate to avoid problems.
+ }
+
+ p->PacketType = 0x8e;
+ p->PacketLength = mes_len + (int)sizeof(struct PACKET_ZC_NOTIFY_PLAYERCHAT);
+ safestrncpy(p->Message, mes, mes_len);
+ clif->send(p, p->PacketLength, bl, SELF);
+}
+
/*==========================
* Minimap fix [Kevin]
* Remove dot from minimap
*--------------------------*/
-void clif_party_xy_remove(struct map_session_data *sd)
+static void clif_party_xy_remove(struct map_session_data *sd)
{
unsigned char buf[16];
nullpo_retv(sd);
@@ -9024,7 +9099,7 @@ void clif_party_xy_remove(struct map_session_data *sd)
/// 0x20 = HIT/Flee +50 (PA_GOSPEL)
/// 0x28 = Full strip failed because of coating (ST_FULLSTRIP)
/// ? = nothing
-void clif_gospel_info(struct map_session_data *sd, int type)
+static void clif_gospel_info(struct map_session_data *sd, int type)
{
int fd;
@@ -9065,7 +9140,7 @@ void clif_gospel_info(struct map_session_data *sd, int type)
/// 22 = [Collector Rank] Target Item : <monster_id used as item id>
/// 30 = [Sun, Moon and Stars Angel] Designed places and monsters have been reset.
/// 40 = Target HP : <monster_id used as HP>
-void clif_starskill(struct map_session_data* sd, const char* mapname, int monster_id, unsigned char star, unsigned char result)
+static void clif_starskill(struct map_session_data *sd, const char *mapname, int monster_id, unsigned char star, unsigned char result)
{
int fd;
@@ -9086,7 +9161,7 @@ void clif_starskill(struct map_session_data* sd, const char* mapname, int monste
* Info about Star Gladiator save map [Komurka]
* type: 1: Information, 0: Map registered
*------------------------------------------*/
-void clif_feel_info(struct map_session_data* sd, unsigned char feel_level, unsigned char type)
+static void clif_feel_info(struct map_session_data *sd, unsigned char feel_level, unsigned char type)
{
char mapname[MAP_NAME_LENGTH_EXT];
@@ -9100,7 +9175,7 @@ void clif_feel_info(struct map_session_data* sd, unsigned char feel_level, unsig
* Info about Star Gladiator hate mob [Komurka]
* type: 1: Register mob, 0: Information.
*------------------------------------------*/
-void clif_hate_info(struct map_session_data *sd, unsigned char hate_level,int class_, unsigned char type)
+static void clif_hate_info(struct map_session_data *sd, unsigned char hate_level, int class_, unsigned char type)
{
if( pc->db_checkid(class_) ) {
clif->starskill(sd, pc->job_name(class_), class_, hate_level, type ? 10 : 11);
@@ -9114,7 +9189,7 @@ void clif_hate_info(struct map_session_data *sd, unsigned char hate_level,int cl
/*==========================================
* Info about TaeKwon Do TK_MISSION mob [Skotlex]
*------------------------------------------*/
-void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char progress)
+static void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char progress)
{
clif->starskill(sd, mob->db(mob_id)->jname, mob_id, progress, 20);
}
@@ -9122,7 +9197,7 @@ void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char pr
/*==========================================
* Feel/Hate reset (thanks to Rayce) [Skotlex]
*------------------------------------------*/
-void clif_feel_hate_reset(struct map_session_data *sd)
+static void clif_feel_hate_reset(struct map_session_data *sd)
{
clif->starskill(sd, "", 0, 0, 30);
}
@@ -9135,7 +9210,7 @@ void clif_feel_hate_reset(struct map_session_data *sd)
/// value:
/// 0 = disabled
/// 1 = enabled
-void clif_zc_config(struct map_session_data* sd, enum CZ_CONFIG type, int flag)
+static void clif_zc_config(struct map_session_data *sd, enum CZ_CONFIG type, int flag)
{
int fd;
nullpo_retv(sd);
@@ -9153,7 +9228,7 @@ void clif_zc_config(struct map_session_data* sd, enum CZ_CONFIG type, int flag)
/// open equip window:
/// 0 = disabled
/// 1 = enabled
-void clif_equpcheckbox(struct map_session_data* sd)
+static void clif_equpcheckbox(struct map_session_data *sd)
{
int fd;
nullpo_retv(sd);
@@ -9170,7 +9245,8 @@ void clif_equpcheckbox(struct map_session_data* sd)
/// 02d7 <packet len>.W <name>.24B <class>.W <hairstyle>.W <bottom-viewid>.W <mid-viewid>.W <up-viewid>.W <haircolor>.W <cloth-dye>.W <gender>.B {equip item}.28B* (ZC_EQUIPWIN_MICROSCOPE, PACKETVER >= 20100629)
/// 0859 <packet len>.W <name>.24B <class>.W <hairstyle>.W <bottom-viewid>.W <mid-viewid>.W <up-viewid>.W <haircolor>.W <cloth-dye>.W <gender>.B {equip item}.28B* (ZC_EQUIPWIN_MICROSCOPE2, PACKETVER >= 20101124)
/// 0859 <packet len>.W <name>.24B <class>.W <hairstyle>.W <bottom-viewid>.W <mid-viewid>.W <up-viewid>.W <robe>.W <haircolor>.W <cloth-dye>.W <gender>.B {equip item}.28B* (ZC_EQUIPWIN_MICROSCOPE2, PACKETVER >= 20110111)
-void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* tsd) {
+static void clif_viewequip_ack(struct map_session_data *sd, struct map_session_data *tsd)
+{
int i, equip = 0;
nullpo_retv(sd);
@@ -9214,7 +9290,7 @@ void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* ts
* @param sd The target character.
* @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
*/
-void clif_msgtable(struct map_session_data* sd, enum clif_messages msg_id)
+static void clif_msgtable(struct map_session_data *sd, enum clif_messages msg_id)
{
int fd;
nullpo_retv(sd);
@@ -9235,7 +9311,7 @@ void clif_msgtable(struct map_session_data* sd, enum clif_messages msg_id)
* @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
* @param value The value to fill %d.
*/
-void clif_msgtable_num(struct map_session_data *sd, enum clif_messages msg_id, int value)
+static void clif_msgtable_num(struct map_session_data *sd, enum clif_messages msg_id, int value)
{
#if PACKETVER >= 20090805
int fd;
@@ -9262,7 +9338,7 @@ void clif_msgtable_num(struct map_session_data *sd, enum clif_messages msg_id, i
* @param skill_id ID of the skill to display.
* @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
*/
-void clif_msgtable_skill(struct map_session_data* sd, uint16 skill_id, enum clif_messages msg_id)
+static void clif_msgtable_skill(struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id)
{
int fd;
@@ -9277,13 +9353,13 @@ void clif_msgtable_skill(struct map_session_data* sd, uint16 skill_id, enum clif
}
/**
-* Displays a format string from msgstringtable.txt with a %s value (ZC_FORMATSTRING_MSG).
-*
-* @param sd The target character.
-* @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
-* @param value The value to fill %s.
-*/
-void clif_msgtable_str(struct map_session_data *sd, enum clif_messages msg_id, const char *value)
+ * Displays a format string from msgstringtable.txt with a %s value (ZC_FORMATSTRING_MSG).
+ *
+ * @param sd The target character.
+ * @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
+ * @param value The value to fill %s.
+ */
+static void clif_msgtable_str(struct map_session_data *sd, enum clif_messages msg_id, const char *value)
{
int message_len;
int len;
@@ -9307,13 +9383,13 @@ void clif_msgtable_str(struct map_session_data *sd, enum clif_messages msg_id, c
}
/**
-* Displays a format string from msgstringtable.txt with a color (ZC_MSG_COLOR).
-*
-* @param sd The target character.
-* @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
-* @param color The color to use
-*/
-void clif_msgtable_color(struct map_session_data *sd, enum clif_messages msg_id, uint32 color)
+ * Displays a format string from msgstringtable.txt with a color (ZC_MSG_COLOR).
+ *
+ * @param sd The target character.
+ * @param msg_id msgstringtable message index, 0-based (@see enum clif_messages)
+ * @param color The color to use
+ */
+static void clif_msgtable_color(struct map_session_data *sd, enum clif_messages msg_id, uint32 color)
{
struct PACKET_ZC_MSG_COLOR p;
@@ -9338,7 +9414,7 @@ void clif_msgtable_color(struct map_session_data *sd, enum clif_messages msg_id,
* @retval NULL if the validation failed, the messages was a command or the
* character can't send chat messages. out_buf shan't be used.
*/
-const char *clif_process_chat_message(struct map_session_data *sd, const struct packet_chat_message *packet, char *out_buf, int out_buflen)
+static const char *clif_process_chat_message(struct map_session_data *sd, const struct packet_chat_message *packet, char *out_buf, int out_buflen)
{
const char *srcname = NULL, *srcmessage = NULL, *message = NULL;
int textlen = 0, namelen = 0, messagelen = 0;
@@ -9409,7 +9485,7 @@ const char *clif_process_chat_message(struct map_session_data *sd, const struct
* character can't send chat messages. out_name and out_message
* shan't be used.
*/
-bool clif_process_whisper_message(struct map_session_data *sd, const struct packet_whisper_message *packet, char *out_name, char *out_message, int out_messagelen)
+static bool clif_process_whisper_message(struct map_session_data *sd, const struct packet_whisper_message *packet, char *out_name, char *out_message, int out_messagelen)
{
int namelen = 0, messagelen = 0;
@@ -9460,7 +9536,7 @@ bool clif_process_whisper_message(struct map_session_data *sd, const struct pack
return true;
}
-void clif_channel_msg(struct channel_data *chan, struct map_session_data *sd, char *msg)
+static void clif_channel_msg(struct channel_data *chan, struct map_session_data *sd, char *msg)
{
struct DBIterator *iter;
struct map_session_data *user;
@@ -9495,7 +9571,7 @@ void clif_channel_msg(struct channel_data *chan, struct map_session_data *sd, ch
dbi_destroy(iter);
}
-void clif_channel_msg2(struct channel_data *chan, char *msg)
+static void clif_channel_msg2(struct channel_data *chan, char *msg)
{
struct DBIterator *iter;
struct map_session_data *user;
@@ -9527,7 +9603,7 @@ void clif_channel_msg2(struct channel_data *chan, char *msg)
// TODO: [4144] same packet with login server. need somehow use one function for both servers
// 3 - Rejected by server
-void clif_auth_error(int fd, int errorCode)
+static void clif_auth_error(int fd, int errorCode)
{
struct packet_ZC_REFUSE_LOGIN p;
const int len = sizeof(p);
@@ -9550,7 +9626,8 @@ void clif_auth_error(int fd, int errorCode)
/// 0072 <account id>.L <char id>.L <auth code>.L <client time>.L <gender>.B (CZ_ENTER)
/// 0436 <account id>.L <char id>.L <auth code>.L <client time>.L <gender>.B (CZ_ENTER2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_WantToConnection(int fd, struct map_session_data* sd) {
+static void clif_parse_WantToConnection(int fd, struct map_session_data *sd)
+{
struct block_list* bl;
struct auth_node* node;
int cmd, account_id, char_id, login_id1, sex;
@@ -9618,10 +9695,11 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd) {
chrif->authreq(sd,false);
}
-void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Notification from the client, that it has finished map loading and is about to display player's character (CZ_NOTIFY_ACTORINIT).
/// 007d
-void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) {
+static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd)
+{
bool first_time = false;
if(sd->bl.prev != NULL)
@@ -9994,7 +10072,8 @@ void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) {
/// Server's tick (ZC_NOTIFY_TIME).
/// 007f <time>.L
-void clif_notify_time(struct map_session_data* sd, int64 time) {
+static void clif_notify_time(struct map_session_data *sd, int64 time)
+{
int fd;
nullpo_retv(sd);
@@ -10006,12 +10085,12 @@ void clif_notify_time(struct map_session_data* sd, int64 time) {
WFIFOSET(fd,packet_len(0x7f));
}
-void clif_parse_TickSend(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TickSend(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for server's tick.
/// 007e <client tick>.L (CZ_REQUEST_TIME)
/// 0360 <client tick>.L (CZ_REQUEST_TIME2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_TickSend(int fd, struct map_session_data *sd)
+static void clif_parse_TickSend(int fd, struct map_session_data *sd)
{
sd->client_tick = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
@@ -10023,7 +10102,8 @@ void clif_parse_TickSend(int fd, struct map_session_data *sd)
/// 07d9 { <is skill>.B <id>.L <count>.W }*36 (ZC_SHORTCUT_KEY_LIST_V2, PACKETVER >= 20090603)
/// 07d9 { <is skill>.B <id>.L <count>.W }*38 (ZC_SHORTCUT_KEY_LIST_V2, PACKETVER >= 20090617)
/// 0a00 <rotate>.B { <is skill>.B <id>.L <count>.W }*38 (ZC_SHORTCUT_KEY_LIST_V3, PACKETVER >= 20141022)
-void clif_hotkeys_send(struct map_session_data *sd) {
+static void clif_hotkeys_send(struct map_session_data *sd)
+{
#ifdef HOTKEY_SAVING
struct packet_hotkey p;
int i;
@@ -10041,17 +10121,18 @@ void clif_hotkeys_send(struct map_session_data *sd) {
#endif
}
-void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd)
+static void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd)
{
int cmd = RFIFOW(fd, 0);
sd->status.hotkey_rowshift = RFIFOB(fd, packet_db[cmd].pos[0]);
}
-void clif_parse_Hotkey(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Hotkey(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update a position on the hotkey bar (CZ_SHORTCUT_KEY_CHANGE).
/// 02ba <index>.W <is skill>.B <id>.L <count>.W
-void clif_parse_Hotkey(int fd, struct map_session_data *sd) {
+static void clif_parse_Hotkey(int fd, struct map_session_data *sd)
+{
#ifdef HOTKEY_SAVING
unsigned short idx;
int cmd;
@@ -10068,7 +10149,7 @@ void clif_parse_Hotkey(int fd, struct map_session_data *sd) {
/// Displays cast-like progress bar (ZC_PROGRESS).
/// 02f0 <color>.L <time>.L
-void clif_progressbar(struct map_session_data * sd, unsigned int color, unsigned int second)
+static void clif_progressbar(struct map_session_data *sd, unsigned int color, unsigned int second)
{
int fd;
@@ -10084,7 +10165,7 @@ void clif_progressbar(struct map_session_data * sd, unsigned int color, unsigned
/// Removes an ongoing progress bar (ZC_PROGRESS_CANCEL).
/// 02f2
-void clif_progressbar_abort(struct map_session_data * sd)
+static void clif_progressbar_abort(struct map_session_data *sd)
{
int fd;
@@ -10097,14 +10178,14 @@ void clif_progressbar_abort(struct map_session_data * sd)
}
/**
-* Displays cast-like progress bar on a unit.
-* 09d1 <id>.L <color>.L <time>.L
-*
-* @param bl Source block list.
-* @param color Message color (RGB format: 0xRRGGBB).
-* @param time Time in seconds.
-*/
-void clif_progressbar_unit(struct block_list *bl, uint32 color, uint32 time)
+ * Displays cast-like progress bar on a unit.
+ * 09d1 <id>.L <color>.L <time>.L
+ *
+ * @param bl Source block list.
+ * @param color Message color (RGB format: 0xRRGGBB).
+ * @param time Time in seconds.
+ */
+static void clif_progressbar_unit(struct block_list *bl, uint32 color, uint32 time)
{
#if PACKETVER >= 20130821
struct ZC_PROGRESS_ACTOR p;
@@ -10120,10 +10201,10 @@ void clif_progressbar_unit(struct block_list *bl, uint32 color, uint32 time)
#endif
}
-void clif_parse_progressbar(int fd, struct map_session_data * sd) __attribute__((nonnull (2)));
+static void clif_parse_progressbar(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Notification from the client, that the progress bar has reached 100% (CZ_PROGRESS).
/// 02f1
-void clif_parse_progressbar(int fd, struct map_session_data * sd)
+static void clif_parse_progressbar(int fd, struct map_session_data *sd)
{
int npc_id = sd->progressbar.npc_id;
@@ -10134,12 +10215,12 @@ void clif_parse_progressbar(int fd, struct map_session_data * sd)
npc->scriptcont(sd, npc_id, false);
}
-void clif_parse_WalkToXY(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_WalkToXY(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to walk to a certain position on the current map.
/// 0085 <dest>.3B (CZ_REQUEST_MOVE)
/// 035f <dest>.3B (CZ_REQUEST_MOVE2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
+static void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
{
short x, y;
@@ -10174,7 +10255,7 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
/// 0 = disconnect (quit)
/// 1 = cannot disconnect (wait 10 seconds)
/// ? = ignored
-void clif_disconnect_ack(struct map_session_data* sd, short result)
+static void clif_disconnect_ack(struct map_session_data *sd, short result)
{
int fd;
@@ -10187,12 +10268,12 @@ void clif_disconnect_ack(struct map_session_data* sd, short result)
WFIFOSET(fd,packet_len(0x18b));
}
-void clif_parse_QuitGame(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_QuitGame(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to disconnect from server (CZ_REQ_DISCONNECT).
/// 018a <type>.W
/// type:
/// 0 = quit
-void clif_parse_QuitGame(int fd, struct map_session_data *sd)
+static void clif_parse_QuitGame(int fd, struct map_session_data *sd)
{
/* Rovert's prevent logout option fixed [Valaris] */
if (!sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] && !sd->sc.data[SC_CLOAKINGEXCEED] && !sd->sc.data[SC__INVISIBILITY] && !sd->sc.data[SC_SUHIDE] &&
@@ -10204,12 +10285,13 @@ void clif_parse_QuitGame(int fd, struct map_session_data *sd)
}
}
-void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Requesting unit's name.
/// 0094 <id>.L (CZ_REQNAME)
/// 0368 <id>.L (CZ_REQNAME2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) {
+static void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd)
+{
int id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
struct block_list* bl;
//struct status_change *sc;
@@ -10242,7 +10324,8 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) {
clif->charnameack(fd, bl);
}
-int clif_undisguise_timer(int tid, int64 tick, int id, intptr_t data) {
+static int clif_undisguise_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data * sd;
if( (sd = map->id2sd(id)) ) {
sd->fontcolor_tid = INVALID_TIMER;
@@ -10264,8 +10347,8 @@ int clif_undisguise_timer(int tid, int64 tick, int id, intptr_t data) {
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_GlobalMessage(int fd, struct map_session_data *sd)
+static void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GlobalMessage(int fd, struct map_session_data *sd)
{
const struct packet_chat_message *packet = NULL;
char full_message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1];
@@ -10356,11 +10439,11 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data *sd)
map->foreachinrange(npc_chat->sub, &sd->bl, AREA_SIZE, BL_NPC, full_message, strlen(full_message), &sd->bl);
}
-void clif_parse_MapMove(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MapMove(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /mm /mapmove (as @rura GM command) (CZ_MOVETO_MAP).
/// Request to warp to a map on given coordinates.
/// 0140 <map name>.16B <x>.W <y>.W
-void clif_parse_MapMove(int fd, struct map_session_data *sd)
+static void clif_parse_MapMove(int fd, struct map_session_data *sd)
{
char command[MAP_NAME_LENGTH_EXT+25];
char map_name[MAP_NAME_LENGTH_EXT];
@@ -10385,7 +10468,7 @@ void clif_parse_MapMove(int fd, struct map_session_data *sd)
/// 5 = southeast
/// 6 = east
/// 7 = northeast
-void clif_changed_dir(struct block_list *bl, enum send_target target)
+static void clif_changed_dir(struct block_list *bl, enum send_target target)
{
unsigned char buf[64];
@@ -10404,12 +10487,12 @@ void clif_changed_dir(struct block_list *bl, enum send_target target)
}
}
-void clif_parse_ChangeDir(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangeDir(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change own body and head direction.
/// 009b <head dir>.W <dir>.B (CZ_CHANGE_DIRECTION)
/// 0361 <head dir>.W <dir>.B (CZ_CHANGE_DIRECTION2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_ChangeDir(int fd, struct map_session_data *sd)
+static void clif_parse_ChangeDir(int fd, struct map_session_data *sd)
{
unsigned char headdir, dir;
@@ -10420,24 +10503,24 @@ void clif_parse_ChangeDir(int fd, struct map_session_data *sd)
clif->changed_dir(&sd->bl, AREA_WOS);
}
-void clif_parse_Emotion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Emotion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to show an emotion (CZ_REQ_EMOTION).
/// 00bf <type>.B
/// type:
/// @see enum emotion_type
-void clif_parse_Emotion(int fd, struct map_session_data *sd)
+static void clif_parse_Emotion(int fd, struct map_session_data *sd)
{
int emoticon = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0]);
if (battle_config.basic_skill_check == 0 || pc->check_basicskill(sd, 2)) {
if (emoticon == E_MUTE) {// prevent use of the mute emote [Valaris]
- clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1, 0);
return;
}
// fix flood of emotion icon (ro-proxy): flood only the hacker player
if (sd->emotionlasttime + 1 >= time(NULL)) { // not more than 1 per second
sd->emotionlasttime = time(NULL);
- clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1, 0);
return;
}
sd->emotionlasttime = time(NULL);
@@ -10450,12 +10533,13 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd)
clif->emotion(&sd->bl, emoticon);
} else
- clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1, 0);
}
/// Amount of currently online players, reply to /w /who (ZC_USER_COUNT).
/// 00c2 <count>.L
-void clif_user_count(struct map_session_data* sd, int count) {
+static void clif_user_count(struct map_session_data *sd, int count)
+{
int fd;
nullpo_retv(sd);
@@ -10467,15 +10551,16 @@ void clif_user_count(struct map_session_data* sd, int count) {
WFIFOSET(fd,packet_len(0xc2));
}
-void clif_parse_HowManyConnections(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HowManyConnections(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /w /who (CZ_REQ_USER_COUNT).
/// Request to display amount of currently connected players.
/// 00c1
-void clif_parse_HowManyConnections(int fd, struct map_session_data *sd) {
+static void clif_parse_HowManyConnections(int fd, struct map_session_data *sd)
+{
clif->user_count(sd, map->getusers());
}
-void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, int64 tick)
+static void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, int64 tick)
{
nullpo_retv(sd);
if (pc_isdead(sd)) {
@@ -10519,7 +10604,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
if (!battle_config.sdelay_attack_enable && pc->checkskill(sd, SA_FREECAST) <= 0 && (skill->get_inf2(sd->ud.skill_id) & (INF2_FREE_CAST_REDUCED | INF2_FREE_CAST_NORMAL)) == 0) {
if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) {
- clif->skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
}
@@ -10531,7 +10616,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
break;
case 0x02: // sitdown
if (battle_config.basic_skill_check && !pc->check_basicskill(sd, 3)) {
- clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 2);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 2, 0);
break;
}
@@ -10586,7 +10671,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
}
}
-void clif_parse_ActionRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ActionRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for an action.
/// 0089 <target id>.L <action>.B (CZ_REQUEST_ACT)
/// 0437 <target id>.L <action>.B (CZ_REQUEST_ACT2)
@@ -10598,7 +10683,7 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd) __attribute__
/// 7 = continuous attack
/// 12 = (touch skill?)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_ActionRequest(int fd, struct map_session_data *sd)
+static void clif_parse_ActionRequest(int fd, struct map_session_data *sd)
{
clif->pActionRequest_sub(sd,
RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[1]),
@@ -10607,13 +10692,14 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd)
);
}
-void clif_parse_Restart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Restart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Response to the death/system menu (CZ_RESTART).
/// 00b2 <type>.B
/// type:
/// 0 = restart (respawn)
/// 1 = char-select (disconnect)
-void clif_parse_Restart(int fd, struct map_session_data *sd) {
+static void clif_parse_Restart(int fd, struct map_session_data *sd)
+{
switch(RFIFOB(fd,2)) {
case 0x00:
pc->respawn(sd,CLR_OUTSIGHT);
@@ -10643,8 +10729,8 @@ void clif_parse_Restart(int fd, struct map_session_data *sd) {
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_WisMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_WisMessage(int fd, struct map_session_data* sd)
+static void clif_parse_WisMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_WisMessage(int fd, struct map_session_data *sd)
{
struct map_session_data* dstsd;
int i;
@@ -10761,11 +10847,11 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
clif->wis_message(dstsd->fd, sd->status.name, message, (int)strlen(message));
}
-void clif_parse_Broadcast(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Broadcast(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /b /nb (CZ_BROADCAST).
/// Request to broadcast a message on whole server.
/// 0099 <packet len>.W <text>.?B 00
-void clif_parse_Broadcast(int fd, struct map_session_data *sd)
+static void clif_parse_Broadcast(int fd, struct map_session_data *sd)
{
const char commandname[] = "kami";
char command[sizeof commandname + 2 + CHAT_SIZE_MAX] = ""; // '@' command + ' ' + message + NUL
@@ -10784,12 +10870,12 @@ void clif_parse_Broadcast(int fd, struct map_session_data *sd)
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_TakeItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TakeItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to pick up an item.
/// 009f <id>.L (CZ_ITEM_PICKUP)
/// 0362 <id>.L (CZ_ITEM_PICKUP2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_TakeItem(int fd, struct map_session_data *sd)
+static void clif_parse_TakeItem(int fd, struct map_session_data *sd)
{
int map_object_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
struct flooritem_data *fitem = map->id2fi(map_object_id);
@@ -10826,12 +10912,12 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd)
clif->additem(sd,0,0,6);
}
-void clif_parse_DropItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_DropItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to drop an item.
/// 00a2 <index>.W <amount>.W (CZ_ITEM_THROW)
/// 0363 <index>.W <amount>.W (CZ_ITEM_THROW2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_DropItem(int fd, struct map_session_data *sd)
+static void clif_parse_DropItem(int fd, struct map_session_data *sd)
{
int item_index = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])-2;
int item_amount = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[1]);
@@ -10862,12 +10948,12 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd)
clif->dropitem(sd, item_index, 0);
}
-void clif_parse_UseItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UseItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to use an item.
/// 00a7 <index>.W <account id>.L (CZ_USE_ITEM)
/// 0439 <index>.W <account id>.L (CZ_USE_ITEM2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_UseItem(int fd, struct map_session_data *sd)
+static void clif_parse_UseItem(int fd, struct map_session_data *sd)
{
int n;
@@ -10889,11 +10975,11 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd)
clif->useitemack(sd,n,0,false); //Send an empty ack packet or the client gets stuck.
}
-void clif_parse_EquipItem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_EquipItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to equip an item (CZ_REQ_WEAR_EQUIP).
/// 00a9 <index>.W <position>.W
/// 0998 <index>.W <position>.L
-void clif_parse_EquipItem(int fd,struct map_session_data *sd)
+static void clif_parse_EquipItem(int fd, struct map_session_data *sd)
{
const struct packet_equip_item *p = RP2PTR(fd);
int index = 0;
@@ -10937,10 +11023,10 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd)
pc->equipitem(sd, index, p->wearLocation);
}
-void clif_parse_UnequipItem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UnequipItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to take off an equip (CZ_REQ_TAKEOFF_EQUIP).
/// 00ab <index>.W
-void clif_parse_UnequipItem(int fd,struct map_session_data *sd)
+static void clif_parse_UnequipItem(int fd, struct map_session_data *sd)
{
int index;
@@ -10964,12 +11050,12 @@ void clif_parse_UnequipItem(int fd,struct map_session_data *sd)
pc->unequipitem(sd,index, PCUNEQUIPITEM_RECALC);
}
-void clif_parse_NpcClicked(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcClicked(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to start a conversation with an NPC (CZ_CONTACTNPC).
/// 0090 <id>.L <type>.B
/// type:
/// 1 = click
-void clif_parse_NpcClicked(int fd,struct map_session_data *sd)
+static void clif_parse_NpcClicked(int fd, struct map_session_data *sd)
{
struct block_list *bl;
@@ -11008,13 +11094,13 @@ void clif_parse_NpcClicked(int fd,struct map_session_data *sd)
}
}
-void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Selection between buy/sell was made (CZ_ACK_SELECT_DEALTYPE).
/// 00c5 <id>.L <type>.B
/// type:
/// 0 = buy
/// 1 = sell
-void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd)
+static void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd)
{
if (sd->state.trading)
return;
@@ -11028,7 +11114,8 @@ void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd)
/// 1 = "You do not have enough zeny."
/// 2 = "You are over your Weight Limit."
/// 3 = "Out of the maximum capacity, you have too many items."
-void clif_npc_buy_result(struct map_session_data* sd, unsigned char result) {
+static void clif_npc_buy_result(struct map_session_data *sd, unsigned char result)
+{
int fd;
nullpo_retv(sd);
@@ -11039,17 +11126,18 @@ void clif_npc_buy_result(struct map_session_data* sd, unsigned char result) {
WFIFOSET(fd,packet_len(0xca));
}
-void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcBuyListSend(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to buy chosen items from npc shop (CZ_PC_PURCHASE_ITEMLIST).
/// 00c8 <packet len>.W { <amount>.W <name id>.W }*
-void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd)
+static void clif_parse_NpcBuyListSend(int fd, struct map_session_data *sd)
{
- int n = ((int)RFIFOW(fd,2)-4) / 4;
+ int n = ((int)RFIFOW(fd, 2) - sizeof(struct PACKET_CZ_PC_PURCHASE_ITEMLIST)) / sizeof(struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub);
int result;
+ const struct PACKET_CZ_PC_PURCHASE_ITEMLIST *p = RFIFOP(fd, 0);
Assert_retv(n >= 0);
- if( sd->state.trading || !sd->npc_shopid || pc_has_permission(sd,PC_PERM_DISABLE_STORE) ) {
+ if (sd->state.trading || !sd->npc_shopid || pc_has_permission(sd, PC_PERM_DISABLE_STORE)) {
result = 1;
} else {
struct itemlist item_list = { 0 };
@@ -11060,8 +11148,8 @@ void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd)
for (i = 0; i < n; i++) {
struct itemlist_entry entry = { 0 };
- entry.amount = RFIFOW(fd, 4 + 4 * i);
- entry.id = RFIFOW(fd, 4 + 4 * i + 2);
+ entry.amount = p->items[i].amount;
+ entry.id = p->items[i].itemId;
VECTOR_PUSH(item_list, entry);
}
@@ -11079,7 +11167,8 @@ void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd)
/// result:
/// 0 = "The deal has successfully completed."
/// 1 = "The deal has failed."
-void clif_npc_sell_result(struct map_session_data* sd, unsigned char result) {
+static void clif_npc_sell_result(struct map_session_data *sd, unsigned char result)
+{
int fd;
nullpo_retv(sd);
@@ -11090,10 +11179,10 @@ void clif_npc_sell_result(struct map_session_data* sd, unsigned char result) {
WFIFOSET(fd,packet_len(0xcb));
}
-void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcSellListSend(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to sell chosen items to npc shop (CZ_PC_SELL_ITEMLIST).
/// 00c9 <packet len>.W { <index>.W <amount>.W }*
-void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd)
+static void clif_parse_NpcSellListSend(int fd, struct map_session_data *sd)
{
int fail=0,n;
@@ -11128,13 +11217,13 @@ void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd)
clif->npc_sell_result(sd, fail);
}
-void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_CreateChatRoom(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Chatroom creation request (CZ_CREATE_CHATROOM).
/// 00d5 <packet len>.W <limit>.W <type>.B <passwd>.8B <title>.?B
/// type:
/// 0 = private
/// 1 = public
-void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
+static void clif_parse_CreateChatRoom(int fd, struct map_session_data *sd)
{
int len = (int)RFIFOW(fd, 2) - 15;
int limit;
@@ -11155,7 +11244,7 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
if (pc_ismuted(&sd->sc, MANNER_NOROOM))
return;
if(battle_config.basic_skill_check && !pc->check_basicskill(sd, 4)) {
- clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,3);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 3, 0);
return;
}
if( npc->isnear(&sd->bl) ) {
@@ -11163,7 +11252,7 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
//char output[150];
//sprintf(output, msg_txt(862), battle_config.min_npc_vendchat_distance); // "You're too close to a NPC, you must be at least %d cells away from any NPC."
//clif_displaymessage(sd->fd, output);
- clif->skill_fail(sd,1,USESKILL_FAIL_THERE_ARE_NPC_AROUND,0);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_THERE_ARE_NPC_AROUND, 0, 0);
return;
}
@@ -11173,10 +11262,10 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
chat->create_pc_chat(sd, s_title, s_password, limit, pub);
}
-void clif_parse_ChatAddMember(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ChatAddMember(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Chatroom join request (CZ_REQ_ENTER_ROOM).
/// 00d9 <chat ID>.L <passwd>.8B
-void clif_parse_ChatAddMember(int fd, struct map_session_data* sd)
+static void clif_parse_ChatAddMember(int fd, struct map_session_data *sd)
{
int chatid = RFIFOL(fd,2);
const char *password = RFIFOP(fd,6); // not zero-terminated
@@ -11184,13 +11273,13 @@ void clif_parse_ChatAddMember(int fd, struct map_session_data* sd)
chat->join(sd,chatid,password);
}
-void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Chatroom properties adjustment request (CZ_CHANGE_CHATROOM).
/// 00de <packet len>.W <limit>.W <type>.B <passwd>.8B <title>.?B
/// type:
/// 0 = private
/// 1 = public
-void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd)
+static void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data *sd)
{
int len = (int)RFIFOW(fd, 2) - 15;
int limit;
@@ -11214,29 +11303,29 @@ void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd)
chat->change_status(sd, s_title, s_password, limit, pub);
}
-void clif_parse_ChangeChatOwner(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangeChatOwner(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change the chat room ownership (CZ_REQ_ROLE_CHANGE).
/// 00e0 <role>.L <nick>.24B
/// role:
/// 0 = owner
/// 1 = normal
-void clif_parse_ChangeChatOwner(int fd, struct map_session_data* sd)
+static void clif_parse_ChangeChatOwner(int fd, struct map_session_data *sd)
{
chat->change_owner(sd, RFIFOP(fd,6)); // non null terminated
}
-void clif_parse_KickFromChat(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_KickFromChat(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to expel a player from chat room (CZ_REQ_EXPEL_MEMBER).
/// 00e2 <name>.24B
-void clif_parse_KickFromChat(int fd,struct map_session_data *sd)
+static void clif_parse_KickFromChat(int fd, struct map_session_data *sd)
{
chat->kick(sd, RFIFOP(fd,2)); // non null terminated
}
-void clif_parse_ChatLeave(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ChatLeave(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to leave the current chatroom (CZ_EXIT_ROOM).
/// 00e3
-void clif_parse_ChatLeave(int fd, struct map_session_data* sd)
+static void clif_parse_ChatLeave(int fd, struct map_session_data *sd)
{
chat->leave(sd, false);
}
@@ -11244,7 +11333,8 @@ void clif_parse_ChatLeave(int fd, struct map_session_data* sd)
//Handles notifying asker and rejecter of what has just occurred.
//Type is used to determine the correct msg_txt to use:
//0:
-void clif_noask_sub(struct map_session_data *src, struct map_session_data *target, int type) {
+static void clif_noask_sub(struct map_session_data *src, struct map_session_data *target, int type)
+{
const char* msg;
char output[256];
nullpo_retv(src);
@@ -11256,10 +11346,11 @@ void clif_noask_sub(struct map_session_data *src, struct map_session_data *targe
clif_disp_onlyself(target, output);
}
-void clif_parse_TradeRequest(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeRequest(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to begin a trade (CZ_REQ_EXCHANGE_ITEM).
/// 00e4 <account id>.L
-void clif_parse_TradeRequest(int fd,struct map_session_data *sd) {
+static void clif_parse_TradeRequest(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd;
t_sd = map->id2sd(RFIFOL(fd,2));
@@ -11274,28 +11365,28 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) {
}
if( battle_config.basic_skill_check && !pc->check_basicskill(sd, 1)) {
- clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
trade->request(sd,t_sd);
}
-void clif_parse_TradeAck(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to a trade request (CZ_ACK_EXCHANGE_ITEM).
/// 00e6 <result>.B
/// result:
/// 3 = accepted
/// 4 = rejected
-void clif_parse_TradeAck(int fd,struct map_session_data *sd)
+static void clif_parse_TradeAck(int fd, struct map_session_data *sd)
{
trade->ack(sd,RFIFOB(fd,2));
}
-void clif_parse_TradeAddItem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeAddItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add an item to current trade (CZ_ADD_EXCHANGE_ITEM).
/// 00e8 <index>.W <amount>.L
-void clif_parse_TradeAddItem(int fd,struct map_session_data *sd)
+static void clif_parse_TradeAddItem(int fd, struct map_session_data *sd)
{
short index = RFIFOW(fd,2);
int amount = RFIFOL(fd,4);
@@ -11306,42 +11397,43 @@ void clif_parse_TradeAddItem(int fd,struct map_session_data *sd)
trade->additem(sd, index, (short)amount);
}
-void clif_parse_TradeOk(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeOk(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to lock items in current trade (CZ_CONCLUDE_EXCHANGE_ITEM).
/// 00eb
-void clif_parse_TradeOk(int fd,struct map_session_data *sd)
+static void clif_parse_TradeOk(int fd, struct map_session_data *sd)
{
trade->ok(sd);
}
-void clif_parse_TradeCancel(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeCancel(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to cancel current trade (CZ_CANCEL_EXCHANGE_ITEM).
/// 00ed
-void clif_parse_TradeCancel(int fd,struct map_session_data *sd)
+static void clif_parse_TradeCancel(int fd, struct map_session_data *sd)
{
trade->cancel(sd);
}
-void clif_parse_TradeCommit(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_TradeCommit(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to commit current trade (CZ_EXEC_EXCHANGE_ITEM).
/// 00ef
-void clif_parse_TradeCommit(int fd,struct map_session_data *sd)
+static void clif_parse_TradeCommit(int fd, struct map_session_data *sd)
{
trade->commit(sd);
}
-void clif_parse_StopAttack(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_StopAttack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to stop chasing/attacking an unit (CZ_CANCEL_LOCKON).
/// 0118
-void clif_parse_StopAttack(int fd,struct map_session_data *sd)
+static void clif_parse_StopAttack(int fd, struct map_session_data *sd)
{
pc_stop_attack(sd);
}
-void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from inventory to cart (CZ_MOVE_ITEM_FROM_BODY_TO_CART).
/// 0126 <index>.W <amount>.L
-void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) {
+static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd)
+{
int flag = 0;
if (pc_istrading(sd))
return;
@@ -11353,20 +11445,20 @@ void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) {
}
}
-void clif_parse_GetItemFromCart(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GetItemFromCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from cart to inventory (CZ_MOVE_ITEM_FROM_CART_TO_BODY).
/// 0127 <index>.W <amount>.L
-void clif_parse_GetItemFromCart(int fd,struct map_session_data *sd)
+static void clif_parse_GetItemFromCart(int fd, struct map_session_data *sd)
{
if (!pc_iscarton(sd))
return;
pc->getitemfromcart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4));
}
-void clif_parse_RemoveOption(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RemoveOption(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to remove cart/falcon/peco/dragon (CZ_REQ_CARTOFF).
/// 012a
-void clif_parse_RemoveOption(int fd,struct map_session_data *sd)
+static void clif_parse_RemoveOption(int fd, struct map_session_data *sd)
{
if (pc_isridingpeco(sd) || pc_isfalcon(sd) || pc_isridingdragon(sd) || pc_ismadogear(sd)) {
// priority to remove this option before we can clear cart
@@ -11381,10 +11473,10 @@ void clif_parse_RemoveOption(int fd,struct map_session_data *sd)
}
}
-void clif_parse_ChangeCart(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangeCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change cart's visual look (CZ_REQ_CHANGECART).
/// 01af <num>.W
-void clif_parse_ChangeCart(int fd, struct map_session_data *sd)
+static void clif_parse_ChangeCart(int fd, struct map_session_data *sd)
{// TODO: State tracking?
int type;
@@ -11420,7 +11512,7 @@ void clif_parse_ChangeCart(int fd, struct map_session_data *sd)
/// Request to select cart's visual look for new cart design (CZ_SELECTCART).
/// 0980 <identity>.L <type>.B
-void clif_parse_SelectCart(int fd, struct map_session_data *sd)
+static void clif_parse_SelectCart(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20150805 // RagexeRE
int type;
@@ -11437,7 +11529,7 @@ void clif_parse_SelectCart(int fd, struct map_session_data *sd)
#endif
}
-void clif_parse_StatusUp(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_StatusUp(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to increase status (CZ_STATUS_CHANGE).
/// 00bb <status id>.W <amount>.B
/// status id:
@@ -11445,7 +11537,8 @@ void clif_parse_StatusUp(int fd,struct map_session_data *sd) __attribute__((nonn
/// amount:
/// Old clients send always 1 for this, even when using /str+ and the like.
/// Newer clients (2013-12-23 and newer) send the correct amount.
-void clif_parse_StatusUp(int fd,struct map_session_data *sd) {
+static void clif_parse_StatusUp(int fd, struct map_session_data *sd)
+{
int increase_amount;
increase_amount = RFIFOB(fd,4);
@@ -11457,15 +11550,16 @@ void clif_parse_StatusUp(int fd,struct map_session_data *sd) {
pc->statusup(sd, RFIFOW(fd,2), increase_amount);
}
-void clif_parse_SkillUp(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SkillUp(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to increase level of a skill (CZ_UPGRADE_SKILLLEVEL).
/// 0112 <skill id>.W
-void clif_parse_SkillUp(int fd,struct map_session_data *sd)
+static void clif_parse_SkillUp(int fd, struct map_session_data *sd)
{
pc->skillup(sd,RFIFOW(fd,2));
}
-void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id) {
+static void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id)
+{
int lv;
nullpo_retv(sd);
@@ -11483,7 +11577,7 @@ void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_dat
else if (DIFF_TICK(tick, hd->ud.canact_tick) < 0){
clif->emotion(&hd->bl, E_DOTS);
if (hd->master)
- clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
@@ -11495,7 +11589,8 @@ void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_dat
unit->skilluse_id(&hd->bl, target_id, skill_id, skill_lv);
}
-void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo) {
+static void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo)
+{
int lv;
nullpo_retv(sd);
if( !hd )
@@ -11510,7 +11605,7 @@ void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_da
} else if ( DIFF_TICK(tick, hd->ud.canact_tick) < 0 ) {
clif->emotion(&hd->bl, E_DOTS);
if ( hd->master )
- clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
@@ -11523,7 +11618,8 @@ void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_da
unit->skilluse_pos(&hd->bl, x, y, skill_id, skill_lv);
}
-void clif_parse_UseSkillToId_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id) {
+static void clif_parse_UseSkillToId_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, int target_id)
+{
int lv;
nullpo_retv(sd);
@@ -11545,7 +11641,8 @@ void clif_parse_UseSkillToId_mercenary(struct mercenary_data *md, struct map_ses
unit->skilluse_id(&md->bl, target_id, skill_id, skill_lv);
}
-void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo) {
+static void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_session_data *sd, int64 tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo)
+{
int lv;
nullpo_retv(sd);
if( !md )
@@ -11555,7 +11652,7 @@ void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_se
if( md->ud.skilltimer != INVALID_TIMER )
return;
if( DIFF_TICK(tick, md->ud.canact_tick) < 0 ) {
- clif->skill_fail(md->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(md->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
@@ -11568,12 +11665,12 @@ void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_se
unit->skilluse_pos(&md->bl, x, y, skill_id, skill_lv);
}
-void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to use a targeted skill.
/// 0113 <skill lv>.W <skill id>.W <target id>.L (CZ_USE_SKILL)
/// 0438 <skill lv>.W <skill id>.W <target id>.L (CZ_USE_SKILL2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
+static void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
{
uint16 skill_id, skill_lv;
int tmp, target_id;
@@ -11635,7 +11732,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
return;
} else if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 ) {
if( sd->skillitem != skill_id ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
}
@@ -11683,7 +11780,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
/*==========================================
* Client tells server he'd like to use AoE skill id 'skill_id' of level 'skill_lv' on 'x','y' location
*------------------------------------------*/
-void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo)
+static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo)
{
int64 tick = timer->gettick();
@@ -11717,7 +11814,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 ski
return;
if( skillmoreinfo != -1 ) {
if( pc_issit(sd) ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
//You can't use Graffiti/TalkieBox AND have a vending open, so this is safe.
@@ -11729,7 +11826,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 ski
if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 ) {
if( sd->skillitem != skill_id ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
}
@@ -11764,12 +11861,12 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 ski
}
}
-void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to use a ground skill.
/// 0116 <skill lv>.W <skill id>.W <x>.W <y>.W (CZ_USE_SKILL_TOGROUND)
/// 0366 <skill lv>.W <skill id>.W <x>.W <y>.W (CZ_USE_SKILL_TOGROUND2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd)
+static void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd)
{
if (pc_cant_act(sd))
return;
@@ -11785,12 +11882,12 @@ void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd)
);
}
-void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to use a ground skill with text.
/// 0190 <skill lv>.W <skill id>.W <x>.W <y>.W <contents>.80B (CZ_USE_SKILL_TOGROUND_WITHTALKBOX)
/// 0367 <skill lv>.W <skill id>.W <x>.W <y>.W <contents>.80B (CZ_USE_SKILL_TOGROUND_WITHTALKBOX2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd)
+static void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd)
{
if (pc_cant_act(sd))
return;
@@ -11806,10 +11903,10 @@ void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd)
);
}
-void clif_parse_UseSkillMap(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_UseSkillMap(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to map selection dialog (CZ_SELECT_WARPPOINT).
/// 011b <skill id>.W <map name>.16B
-void clif_parse_UseSkillMap(int fd, struct map_session_data* sd)
+static void clif_parse_UseSkillMap(int fd, struct map_session_data *sd)
{
uint16 skill_id = RFIFOW(fd,2);
char map_name[MAP_NAME_LENGTH];
@@ -11830,21 +11927,23 @@ void clif_parse_UseSkillMap(int fd, struct map_session_data* sd)
skill->castend_map(sd,skill_id,map_name);
}
-void clif_parse_RequestMemo(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RequestMemo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to set a memo on current map (CZ_REMEMBER_WARPPOINT).
/// 011d
-void clif_parse_RequestMemo(int fd,struct map_session_data *sd)
+static void clif_parse_RequestMemo(int fd, struct map_session_data *sd)
{
if (!pc_isdead(sd))
pc->memo(sd,-1);
}
-void clif_parse_ProduceMix(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ProduceMix(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to pharmacy item selection dialog (CZ_REQMAKINGITEM).
/// 018e <name id>.W { <material id>.W }*3
-void clif_parse_ProduceMix(int fd,struct map_session_data *sd)
+static void clif_parse_ProduceMix(int fd, struct map_session_data *sd)
{
- switch( sd->menuskill_id ) {
+ const struct PACKET_CZ_REQMAKINGITEM *p = RFIFOP(fd, 0);
+
+ switch (sd->menuskill_id) {
case -1:
case AM_PHARMACY:
case RK_RUNEMASTERY:
@@ -11855,16 +11954,17 @@ void clif_parse_ProduceMix(int fd,struct map_session_data *sd)
}
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
- if( skill->can_produce_mix(sd,RFIFOW(fd,2),sd->menuskill_val, 1) )
- skill->produce_mix(sd,0,RFIFOW(fd,2),RFIFOW(fd,4),RFIFOW(fd,6),RFIFOW(fd,8), 1);
+
+ if (skill->can_produce_mix(sd, p->itemId, sd->menuskill_val, 1))
+ skill->produce_mix(sd, 0, p->itemId, p->material[0], p->material[1], p->material[2], 1);
clif_menuskill_clear(sd);
}
-void clif_parse_Cooking(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Cooking(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to mixing item selection dialog (CZ_REQ_MAKINGITEM).
/// 025b <mk type>.W <name id>.W
/// mk type:
@@ -11874,45 +11974,49 @@ void clif_parse_Cooking(int fd,struct map_session_data *sd) __attribute__((nonnu
/// 4 = GN_MIX_COOKING
/// 5 = GN_MAKEBOMB
/// 6 = GN_S_PHARMACY
-void clif_parse_Cooking(int fd,struct map_session_data *sd) {
- int type = RFIFOW(fd,2);
- int nameid = RFIFOW(fd,4);
- int amount = sd->menuskill_val2?sd->menuskill_val2:1;
- if( type == 6 && sd->menuskill_id != GN_MIX_COOKING && sd->menuskill_id != GN_S_PHARMACY )
+static void clif_parse_Cooking(int fd, struct map_session_data *sd)
+{
+ const struct PACKET_CZ_REQ_MAKINGITEM *p = RFIFOP(fd, 0);
+ int type = p->type;
+ int nameid = p->itemId;
+ int amount = sd->menuskill_val2 ? sd->menuskill_val2 : 1;
+ if (type == 6 && sd->menuskill_id != GN_MIX_COOKING && sd->menuskill_id != GN_S_PHARMACY)
return;
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
- if( skill->can_produce_mix(sd,nameid,sd->menuskill_val, amount) )
- skill->produce_mix(sd,(type>1?sd->menuskill_id:0),nameid,0,0,0,amount);
+ if (skill->can_produce_mix(sd, nameid, sd->menuskill_val, amount))
+ skill->produce_mix(sd, (type > 1 ? sd->menuskill_id : 0), nameid, 0, 0, 0, amount);
clif_menuskill_clear(sd);
}
-void clif_parse_RepairItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RepairItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to repair weapon item selection dialog (CZ_REQ_ITEMREPAIR).
/// 01fd <index>.W <name id>.W <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W
-void clif_parse_RepairItem(int fd, struct map_session_data *sd)
+static void clif_parse_RepairItem(int fd, struct map_session_data *sd)
{
+ const struct PACKET_CZ_REQ_ITEMREPAIR *p = RFIFOP(fd, 0);
+
if (sd->menuskill_id != BS_REPAIRWEAPON)
return;
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
- skill->repairweapon(sd,RFIFOW(fd,2));
+ skill->repairweapon(sd, p->index);
clif_menuskill_clear(sd);
}
-void clif_parse_WeaponRefine(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_WeaponRefine(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to refine weapon item selection dialog (CZ_REQ_WEAPONREFINE).
/// 0222 <index>.L
-void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
+static void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
{
int idx;
@@ -11922,7 +12026,7 @@ void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
return;
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
@@ -11931,7 +12035,7 @@ void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
clif_menuskill_clear(sd);
}
-void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcSelectMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to script menu dialog (CZ_CHOOSE_MENU).
/// 00b8 <npc id>.L <choice>.B
/// choice:
@@ -11939,7 +12043,7 @@ void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd) __attribute__(
/// 255 = cancel
/// NOTE: If there were more than 254 items in the list, choice
/// overflows to choice%256.
-void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd)
+static void clif_parse_NpcSelectMenu(int fd, struct map_session_data *sd)
{
int npc_id = RFIFOL(fd,2);
uint8 select = RFIFOB(fd,6);
@@ -11961,18 +12065,18 @@ void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd)
npc->scriptcont(sd,npc_id, false);
}
-void clif_parse_NpcNextClicked(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcNextClicked(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// NPC dialog 'next' click (CZ_REQ_NEXT_SCRIPT).
/// 00b9 <npc id>.L
-void clif_parse_NpcNextClicked(int fd,struct map_session_data *sd)
+static void clif_parse_NpcNextClicked(int fd, struct map_session_data *sd)
{
npc->scriptcont(sd,RFIFOL(fd,2), false);
}
-void clif_parse_NpcAmountInput(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcAmountInput(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// NPC numeric input dialog value (CZ_INPUT_EDITDLG).
/// 0143 <npc id>.L <value>.L
-void clif_parse_NpcAmountInput(int fd,struct map_session_data *sd)
+static void clif_parse_NpcAmountInput(int fd, struct map_session_data *sd)
{
int npcid = RFIFOL(fd,2);
int amount = RFIFOL(fd,6);
@@ -11984,10 +12088,10 @@ void clif_parse_NpcAmountInput(int fd,struct map_session_data *sd)
npc->scriptcont(sd, npcid, false);
}
-void clif_parse_NpcStringInput(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// NPC text input dialog value (CZ_INPUT_EDITDLGSTR).
/// 01d5 <packet len>.W <npc id>.L <string>.?B
-void clif_parse_NpcStringInput(int fd, struct map_session_data* sd)
+static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd)
{
int len = RFIFOW(fd, 2);
// [4144] can't confirm exact client version. At least >= correct for 20150513
@@ -12009,10 +12113,10 @@ void clif_parse_NpcStringInput(int fd, struct map_session_data* sd)
npc->scriptcont(sd, npcid, false);
}
-void clif_parse_NpcCloseClicked(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NpcCloseClicked(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// NPC dialog 'close' click (CZ_CLOSE_DIALOG).
/// 0146 <npc id>.L
-void clif_parse_NpcCloseClicked(int fd,struct map_session_data *sd)
+static void clif_parse_NpcCloseClicked(int fd, struct map_session_data *sd)
{
if (!sd->npc_id) //Avoid parsing anything when the script was done with. [Skotlex]
return;
@@ -12020,12 +12124,12 @@ void clif_parse_NpcCloseClicked(int fd,struct map_session_data *sd)
npc->scriptcont(sd, RFIFOL(fd,2), true);
}
-void clif_parse_ItemIdentify(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ItemIdentify(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to identify item selection dialog (CZ_REQ_ITEMIDENTIFY).
/// 0178 <index>.W
/// index:
/// -1 = cancel
-void clif_parse_ItemIdentify(int fd,struct map_session_data *sd)
+static void clif_parse_ItemIdentify(int fd, struct map_session_data *sd)
{
short idx = RFIFOW(fd,2);
@@ -12043,7 +12147,7 @@ void clif_parse_ItemIdentify(int fd,struct map_session_data *sd)
/// Identifying item with right-click (CZ_REQ_ONECLICK_ITEMIDENTIFY).
/// 0A35 <index>.W
-void clif_parse_OneClick_ItemIdentify(int fd, struct map_session_data *sd)
+static void clif_parse_OneClick_ItemIdentify(int fd, struct map_session_data *sd)
{
int cmd = RFIFOW(fd,0);
short idx = RFIFOW(fd, packet_db[cmd].pos[0]) - 2;
@@ -12057,42 +12161,48 @@ void clif_parse_OneClick_ItemIdentify(int fd, struct map_session_data *sd)
skill->identify(sd, idx);
}
-void clif_parse_SelectArrow(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SelectArrow(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to arrow crafting item selection dialog (CZ_REQ_MAKINGARROW).
/// 01ae <name id>.W
-void clif_parse_SelectArrow(int fd,struct map_session_data *sd)
+static void clif_parse_SelectArrow(int fd, struct map_session_data *sd)
{
+ int itemId;
if (pc_istrading(sd)) {
- //Make it fail to avoid shop exploits where you sell something different than you see.
- clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ //Make it fail to avoid shop exploits where you sell something different than you see.
+ clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
return;
}
- switch( sd->menuskill_id ) {
+#if PACKETVER_RE_NUM >= 20180704
+ itemId = RFIFOL(fd, 2);
+#else
+ itemId = RFIFOW(fd, 2);
+#endif
+ switch (sd->menuskill_id) {
case AC_MAKINGARROW:
- skill->arrow_create(sd,RFIFOW(fd,2));
+ skill->arrow_create(sd, itemId);
break;
case SA_CREATECON:
- skill->produce_mix(sd,SA_CREATECON,RFIFOW(fd,2),0,0,0, 1);
+ skill->produce_mix(sd, SA_CREATECON, itemId, 0, 0, 0, 1);
break;
case WL_READING_SB:
- skill->spellbook(sd,RFIFOW(fd,2));
+ skill->spellbook(sd, itemId);
break;
case GC_POISONINGWEAPON:
- skill->poisoningweapon(sd,RFIFOW(fd,2));
+ skill->poisoningweapon(sd, itemId);
break;
case NC_MAGICDECOY:
- skill->magicdecoy(sd,RFIFOW(fd,2));
+ skill->magicdecoy(sd, itemId);
break;
}
clif_menuskill_clear(sd);
}
-void clif_parse_AutoSpell(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_AutoSpell(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to SA_AUTOSPELL skill selection dialog (CZ_SELECTAUTOSPELL).
/// 01ce <skill id>.L
-void clif_parse_AutoSpell(int fd,struct map_session_data *sd)
+static void clif_parse_AutoSpell(int fd, struct map_session_data *sd)
{
uint16 skill_id = RFIFOL(fd,2);
@@ -12108,42 +12218,44 @@ void clif_parse_AutoSpell(int fd,struct map_session_data *sd)
clif_menuskill_clear(sd);
}
-void clif_parse_UseCard(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_UseCard(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to display item carding/composition list (CZ_REQ_ITEMCOMPOSITION_LIST).
/// 017a <card index>.W
-void clif_parse_UseCard(int fd,struct map_session_data *sd)
+static void clif_parse_UseCard(int fd, struct map_session_data *sd)
{
clif->use_card(sd,RFIFOW(fd,2)-2);
}
-void clif_parse_InsertCard(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_InsertCard(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to carding/composing item selection dialog (CZ_REQ_ITEMCOMPOSITION).
/// 017c <card index>.W <equip index>.W
-void clif_parse_InsertCard(int fd,struct map_session_data *sd)
+static void clif_parse_InsertCard(int fd, struct map_session_data *sd)
{
pc->insert_card(sd,RFIFOW(fd,2)-2,RFIFOW(fd,4)-2);
}
-void clif_parse_SolveCharName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SolveCharName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request of character's name by char ID.
/// 0193 <char id>.L (CZ_REQNAME_BYGID)
/// 0369 <char id>.L (CZ_REQNAME_BYGID2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_SolveCharName(int fd, struct map_session_data *sd) {
+static void clif_parse_SolveCharName(int fd, struct map_session_data *sd)
+{
int charid;
charid = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
map->reqnickdb(sd, charid);
}
-void clif_parse_ResetChar(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ResetChar(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /resetskill /resetstate (CZ_RESET).
/// Request to reset stats or skills.
/// 0197 <type>.W
/// type:
/// 0 = state
/// 1 = skill
-void clif_parse_ResetChar(int fd, struct map_session_data *sd) {
+static void clif_parse_ResetChar(int fd, struct map_session_data *sd)
+{
char cmd[15];
if( RFIFOW(fd,2) )
@@ -12154,11 +12266,11 @@ void clif_parse_ResetChar(int fd, struct map_session_data *sd) {
atcommand->exec(fd, sd, cmd, true);
}
-void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /lb /nlb (CZ_LOCALBROADCAST).
/// Request to broadcast a message on current map.
/// 019c <packet len>.W <text>.?B
-void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd)
+static void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd)
{
const char commandname[] = "lkami";
char command[sizeof commandname + 2 + CHAT_SIZE_MAX] = ""; // '@' + command + ' ' + message + NUL
@@ -12177,12 +12289,12 @@ void clif_parse_LocalBroadcast(int fd, struct map_session_data *sd)
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_MoveToKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveToKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from inventory to storage.
/// 00f3 <index>.W <amount>.L (CZ_MOVE_ITEM_FROM_BODY_TO_STORE)
/// 0364 <index>.W <amount>.L (CZ_MOVE_ITEM_FROM_BODY_TO_STORE2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_MoveToKafra(int fd, struct map_session_data *sd)
+static void clif_parse_MoveToKafra(int fd, struct map_session_data *sd)
{
int item_index, item_amount;
@@ -12200,12 +12312,12 @@ void clif_parse_MoveToKafra(int fd, struct map_session_data *sd)
gstorage->add(sd, item_index, item_amount);
}
-void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveFromKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from storage to inventory.
/// 00f5 <index>.W <amount>.L (CZ_MOVE_ITEM_FROM_STORE_TO_BODY)
/// 0365 <index>.W <amount>.L (CZ_MOVE_ITEM_FROM_STORE_TO_BODY2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd)
+static void clif_parse_MoveFromKafra(int fd, struct map_session_data *sd)
{
int item_index, item_amount;
@@ -12218,10 +12330,10 @@ void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd)
gstorage->get(sd, item_index, item_amount);
}
-void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from cart to storage (CZ_MOVE_ITEM_FROM_CART_TO_STORE).
/// 0129 <index>.W <amount>.L
-void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd)
+static void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd)
{
if( sd->state.vending )
return;
@@ -12234,10 +12346,10 @@ void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd)
gstorage->addfromcart(sd, RFIFOW(fd,2) - 2, RFIFOL(fd,4));
}
-void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move an item from storage to cart (CZ_MOVE_ITEM_FROM_STORE_TO_CART).
/// 0128 <index>.W <amount>.L
-void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd)
+static void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd)
{
if( sd->state.vending )
return;
@@ -12250,10 +12362,10 @@ void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd)
gstorage->gettocart(sd, RFIFOW(fd,2)-1, RFIFOL(fd,4));
}
-void clif_parse_CloseKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CloseKafra(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to close storage (CZ_CLOSE_STORE).
/// 00f7
-void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
+static void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
{
if( sd->state.storage_flag == STORAGE_FLAG_NORMAL )
storage->close(sd);
@@ -12261,6 +12373,7 @@ void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
gstorage->close(sd);
}
+#if 0 // Unused function
/// Displays kafra storage password dialog (ZC_REQ_STORE_PASSWORD).
/// 023a <info>.W
/// info:
@@ -12269,7 +12382,7 @@ void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
/// 8 = too many wrong passwords
/// ? = ignored
/// NOTE: This packet is only available on certain non-kRO clients.
-void clif_storagepassword(struct map_session_data* sd, short info)
+static void clif_storagepassword(struct map_session_data *sd, short info)
{
int fd;
@@ -12280,19 +12393,21 @@ void clif_storagepassword(struct map_session_data* sd, short info)
WFIFOW(fd,2) = info;
WFIFOSET(fd,packet_len(0x23a));
}
+#endif // 0
-void clif_parse_StoragePassword(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_StoragePassword(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to the kafra storage password dialog (CZ_ACK_STORE_PASSWORD).
/// 023b <type>.W <password>.16B <new password>.16B
/// type:
/// 2 = change password
/// 3 = check password
/// NOTE: This packet is only available on certain non-kRO clients.
-void clif_parse_StoragePassword(int fd, struct map_session_data *sd)
+static void clif_parse_StoragePassword(int fd, struct map_session_data *sd)
{
//TODO
}
+#if 0 // Unused function
/// Result of kafra storage password validation (ZC_RESULT_STORE_PASSWORD).
/// 023c <result>.W <error count>.W
/// result:
@@ -12303,7 +12418,7 @@ void clif_parse_StoragePassword(int fd, struct map_session_data *sd)
/// 8 = too many wrong passwords
/// ? = ignored
/// NOTE: This packet is only available on certain non-kRO clients.
-void clif_storagepassword_result(struct map_session_data* sd, short result, short error_count)
+static void clif_storagepassword_result(struct map_session_data *sd, short result, short error_count)
{
int fd;
@@ -12315,12 +12430,13 @@ void clif_storagepassword_result(struct map_session_data* sd, short result, shor
WFIFOW(fd,4) = error_count;
WFIFOSET(fd,packet_len(0x23c));
}
+#endif // 0
-void clif_parse_CreateParty(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CreateParty(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Party creation request
/// 00f9 <party name>.24B (CZ_MAKE_GROUP)
/// 01e8 <party name>.24B <item pickup rule>.B <item share rule>.B (CZ_MAKE_GROUP2)
-void clif_parse_CreateParty(int fd, struct map_session_data *sd)
+static void clif_parse_CreateParty(int fd, struct map_session_data *sd)
{
char name[NAME_LENGTH];
@@ -12332,15 +12448,15 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd)
return;
}
if (battle_config.basic_skill_check && !pc->check_basicskill(sd, 7)) {
- clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 4, 0);
return;
}
party->create(sd,name,0,0);
}
-void clif_parse_CreateParty2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
+static void clif_parse_CreateParty2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
{
char name[NAME_LENGTH];
int item1 = RFIFOB(fd,26);
@@ -12354,18 +12470,19 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
return;
}
if (battle_config.basic_skill_check && !pc->check_basicskill(sd, 7)) {
- clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 4, 0);
return;
}
party->create(sd,name,item1,item2);
}
-void clif_parse_PartyInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Party invitation request
/// 00fc <account id>.L (CZ_REQ_JOIN_GROUP)
/// 02c4 <char name>.24B (CZ_PARTY_JOIN_REQ)
-void clif_parse_PartyInvite(int fd, struct map_session_data *sd) {
+static void clif_parse_PartyInvite(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd;
if(map->list[sd->bl.m].flag.partylock) {
@@ -12384,8 +12501,8 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd) {
party->invite(sd, t_sd);
}
-void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
+static void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
{
struct map_session_data *t_sd;
char name[NAME_LENGTH];
@@ -12408,28 +12525,29 @@ void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
party->invite(sd, t_sd);
}
-void clif_parse_ReplyPartyInvite(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Party invitation reply
/// 00ff <party id>.L <flag>.L (CZ_JOIN_GROUP)
/// 02c7 <party id>.L <flag>.B (CZ_PARTY_JOIN_REQ_ACK)
/// flag:
/// 0 = reject
/// 1 = accept
-void clif_parse_ReplyPartyInvite(int fd,struct map_session_data *sd)
+static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd)
{
party->reply_invite(sd,RFIFOL(fd,2),RFIFOL(fd,6));
}
-void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd)
+static void clif_parse_ReplyPartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ReplyPartyInvite2(int fd, struct map_session_data *sd)
{
party->reply_invite(sd,RFIFOL(fd,2),RFIFOB(fd,6));
}
-void clif_parse_LeaveParty(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_LeaveParty(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to leave party (CZ_REQ_LEAVE_GROUP).
/// 0100
-void clif_parse_LeaveParty(int fd, struct map_session_data *sd) {
+static void clif_parse_LeaveParty(int fd, struct map_session_data *sd)
+{
if(map->list[sd->bl.m].flag.partylock) {
// Party locked.
clif->message(fd, msg_fd(fd,227)); // Party modification is disabled in this map.
@@ -12438,10 +12556,11 @@ void clif_parse_LeaveParty(int fd, struct map_session_data *sd) {
party->leave(sd);
}
-void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to expel a party member (CZ_REQ_EXPEL_GROUP_MEMBER).
/// 0103 <account id>.L <char name>.24B
-void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) {
+static void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd)
+{
if(map->list[sd->bl.m].flag.partylock) {
// Party locked.
clif->message(fd, msg_fd(fd,227)); // Party modification is disabled in this map.
@@ -12450,11 +12569,11 @@ void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) {
party->removemember(sd, RFIFOL(fd,2), RFIFOP(fd,6));
}
-void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change party options.
/// 0102 <exp share rule>.L (CZ_CHANGE_GROUPEXPOPTION)
/// 07d7 <exp share rule>.L <item pickup rule>.B <item share rule>.B (CZ_GROUPINFO_CHANGE_V2)
-void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd)
+static void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd)
{
struct party_data *p;
int i;
@@ -12491,8 +12610,8 @@ void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd)
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_PartyMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_PartyMessage(int fd, struct map_session_data *sd)
+static void clif_parse_PartyMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyMessage(int fd, struct map_session_data *sd)
{
const struct packet_chat_message *packet = RP2PTR(fd);
char message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1];
@@ -12503,20 +12622,21 @@ void clif_parse_PartyMessage(int fd, struct map_session_data *sd)
party->send_message(sd, message);
}
-void clif_parse_PartyChangeLeader(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyChangeLeader(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Changes Party Leader (CZ_CHANGE_GROUP_MASTER).
/// 07da <account id>.L
-void clif_parse_PartyChangeLeader(int fd, struct map_session_data* sd) {
+static void clif_parse_PartyChangeLeader(int fd, struct map_session_data *sd)
+{
party->changeleader(sd, map->id2sd(RFIFOL(fd,2)));
}
-void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Party Booking in KRO [Spiria]
///
/// Request to register a party booking advertisement (CZ_PARTY_BOOKING_REQ_REGISTER).
/// 0802 <level>.W <map id>.W { <job>.W }*6
-void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
short level = RFIFOW(fd,2);
@@ -12539,7 +12659,7 @@ void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data* sd)
/// 0 = success
/// 1 = failure
/// 2 = already registered
-void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag)
+static void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag)
{
#ifndef PARTY_RECRUIT
int fd;
@@ -12555,10 +12675,10 @@ void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag)
#endif
}
-void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to search for party booking advertisement (CZ_PARTY_BOOKING_REQ_SEARCH).
/// 0804 <level>.W <map id>.W <job>.W <last index>.L <result count>.W
-void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
short level = RFIFOW(fd,2);
@@ -12578,7 +12698,7 @@ void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data* sd)
/// more results:
/// 0 = no
/// 1 = yes
-void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info** results, int count, bool more_result)
+static void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info **results, int count, bool more_result)
{
#ifndef PARTY_RECRUIT
int i, j;
@@ -12606,10 +12726,10 @@ void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info** results,
#endif
}
-void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete own party booking advertisement (CZ_PARTY_BOOKING_REQ_DELETE).
/// 0806
-void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
if(party->booking_delete(sd))
@@ -12626,7 +12746,7 @@ void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data* sd)
/// 1 = success (auto-removed expired ad)
/// 2 = failure
/// 3 = nothing registered
-void clif_PartyBookingDeleteAck(struct map_session_data* sd, int flag)
+static void clif_PartyBookingDeleteAck(struct map_session_data *sd, int flag)
{
#ifndef PARTY_RECRUIT
int fd;
@@ -12642,10 +12762,10 @@ void clif_PartyBookingDeleteAck(struct map_session_data* sd, int flag)
#endif
}
-void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update party booking advertisement (CZ_PARTY_BOOKING_REQ_UPDATE).
/// 0808 { <job>.W }*6
-void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
short job[PARTY_BOOKING_JOBS];
@@ -12662,7 +12782,7 @@ void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data* sd)
/// Notification about new party booking advertisement (ZC_PARTY_BOOKING_NOTIFY_INSERT).
/// 0809 <index>.L <char name>.24B <expire time>.L <level>.W <map id>.W { <job>.W }*6
-void clif_PartyBookingInsertNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad)
+static void clif_PartyBookingInsertNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad)
{
#ifndef PARTY_RECRUIT
int i;
@@ -12688,7 +12808,7 @@ void clif_PartyBookingInsertNotify(struct map_session_data* sd, struct party_boo
/// Notification about updated party booking advertisement (ZC_PARTY_BOOKING_NOTIFY_UPDATE).
/// 080a <index>.L { <job>.W }*6
-void clif_PartyBookingUpdateNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad)
+static void clif_PartyBookingUpdateNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad)
{
#ifndef PARTY_RECRUIT
int i;
@@ -12709,7 +12829,7 @@ void clif_PartyBookingUpdateNotify(struct map_session_data* sd, struct party_boo
/// Notification about deleted party booking advertisement (ZC_PARTY_BOOKING_NOTIFY_DELETE).
/// 080b <index>.L
-void clif_PartyBookingDeleteNotify(struct map_session_data* sd, int index)
+static void clif_PartyBookingDeleteNotify(struct map_session_data *sd, int index)
{
#ifndef PARTY_RECRUIT
uint8 buf[6];
@@ -12724,13 +12844,13 @@ void clif_PartyBookingDeleteNotify(struct map_session_data* sd, int index)
#endif
}
-void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Modified version of Party Booking System for 2012-04-10 or 2012-04-18 (RagexeRE).
/// Code written by mkbu95, Spiria, Yommy and Ind
/// Request to register a party booking advertisement (CZ_PARTY_RECRUIT_REQ_REGISTER).
/// 08e5 <level>.W <notice>.37B
-void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
short level = RFIFOW(fd,2);
@@ -12747,7 +12867,7 @@ void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data* sd)
/// more results:
/// 0 = no
/// 1 = yes
-void clif_PartyRecruitSearchAck(int fd, struct party_booking_ad_info** results, int count, bool more_result)
+static void clif_PartyRecruitSearchAck(int fd, struct party_booking_ad_info **results, int count, bool more_result)
{
#ifdef PARTY_RECRUIT
int i;
@@ -12782,7 +12902,7 @@ void clif_PartyRecruitSearchAck(int fd, struct party_booking_ad_info** results,
/// 0 = success
/// 1 = failure
/// 2 = already registered
-void clif_PartyRecruitRegisterAck(struct map_session_data *sd, int flag)
+static void clif_PartyRecruitRegisterAck(struct map_session_data *sd, int flag)
{
#ifdef PARTY_RECRUIT
int fd;
@@ -12798,10 +12918,10 @@ void clif_PartyRecruitRegisterAck(struct map_session_data *sd, int flag)
#endif
}
-void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to search for party booking advertisement (CZ_PARTY_RECRUIT_REQ_SEARCH).
/// 08e7 <level>.W <map id>.W <last index>.L <result count>.W
-void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
short level = RFIFOW(fd, 2);
@@ -12815,10 +12935,10 @@ void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data* sd)
#endif
}
-void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete own party booking advertisement (CZ_PARTY_RECRUIT_REQ_DELETE).
/// 08e9
-void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data* sd)
+static void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
if(party->booking_delete(sd))
@@ -12835,7 +12955,7 @@ void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data* sd)
/// 1 = success (auto-removed expired ad)
/// 2 = failure
/// 3 = nothing registered
-void clif_PartyRecruitDeleteAck(struct map_session_data* sd, int flag)
+static void clif_PartyRecruitDeleteAck(struct map_session_data *sd, int flag)
{
#ifdef PARTY_RECRUIT
int fd;
@@ -12851,10 +12971,10 @@ void clif_PartyRecruitDeleteAck(struct map_session_data* sd, int flag)
#endif
}
-void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update party booking advertisement (CZ_PARTY_RECRUIT_REQ_UPDATE).
/// 08eb <notice>.37B
-void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd)
+static void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
const char *notice = RFIFOP(fd, 2);
@@ -12867,7 +12987,7 @@ void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd)
/// Notification about new party booking advertisement (ZC_PARTY_RECRUIT_NOTIFY_INSERT).
/// 08ec <index>.L <expire time>.L <char name>.24B <level>.W <notice>.37B
-void clif_PartyRecruitInsertNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad)
+static void clif_PartyRecruitInsertNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+6+24+4+37+1];
@@ -12890,7 +13010,7 @@ void clif_PartyRecruitInsertNotify(struct map_session_data* sd, struct party_boo
/// Notification about updated party booking advertisement (ZC_PARTY_RECRUIT_NOTIFY_UPDATE).
/// 08ed <index>.L <notice>.37B
-void clif_PartyRecruitUpdateNotify(struct map_session_data *sd, struct party_booking_ad_info* pb_ad)
+static void clif_PartyRecruitUpdateNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+37+1];
@@ -12909,7 +13029,7 @@ void clif_PartyRecruitUpdateNotify(struct map_session_data *sd, struct party_boo
/// Notification about deleted party booking advertisement (ZC_PARTY_RECRUIT_NOTIFY_DELETE).
/// 08ee <index>.L
-void clif_PartyRecruitDeleteNotify(struct map_session_data* sd, int index)
+static void clif_PartyRecruitDeleteNotify(struct map_session_data *sd, int index)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+1];
@@ -12924,10 +13044,10 @@ void clif_PartyRecruitDeleteNotify(struct map_session_data* sd, int index)
#endif
}
-void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add to filtering list (PARTY_RECRUIT_ADD_FILTERLINGLIST).
/// 08ef <index>.L
-void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
int index = RFIFOL(fd, 2);
@@ -12938,10 +13058,10 @@ void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd
#endif
}
-void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to remove from filtering list (PARTY_RECRUIT_SUB_FILTERLINGLIST).
/// 08f0 <GID>.L
-void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
int gid = RFIFOL(fd, 2);
@@ -12952,10 +13072,10 @@ void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd
#endif
}
-void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to recruit volunteer (PARTY_RECRUIT_REQ_VOLUNTEER).
/// 08f1 <index>.L
-void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
int index = RFIFOL(fd, 2);
@@ -12968,7 +13088,7 @@ void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd)
/// Request volunteer information (PARTY_RECRUIT_VOLUNTEER_INFO).
/// 08f2 <AID>.L <job>.L <level>.W <char name>.24B
-void clif_PartyBookingVolunteerInfo(int index, struct map_session_data *sd)
+static void clif_PartyBookingVolunteerInfo(int index, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+4+4+2+24+1];
@@ -12988,31 +13108,31 @@ void clif_PartyBookingVolunteerInfo(int index, struct map_session_data *sd)
#if 0 //Disabled for now. Needs more info.
/// 08f3 <packet type>.W <cost>.L
-void clif_PartyBookingPersonalSetting(int fd, struct map_session_data *sd)
+static void clif_PartyBookingPersonalSetting(int fd, struct map_session_data *sd)
{
}
-void clif_parse_PartyBookingShowEquipment(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingShowEquipment(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f4 <target GID>.L
-void clif_parse_PartyBookingShowEquipment(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingShowEquipment(int fd, struct map_session_data *sd)
{
}
-void clif_parse_PartyBookingReqRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingReqRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f5 <packet len>.W
-void clif_parse_PartyBookingReqRecall(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingReqRecall(int fd, struct map_session_data *sd)
{
}
-void clif_PartyBookingRecallCost(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_PartyBookingRecallCost(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f6 <money>.L <map name>.16B
-void clif_PartyBookingRecallCost(int fd, struct map_session_data *sd)
+static void clif_PartyBookingRecallCost(int fd, struct map_session_data *sd)
{
}
-void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f7 <result>.B
-void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd)
{
}
@@ -13023,15 +13143,15 @@ void clif_parse_PartyBookingAckRecall(int fd, struct map_session_data *sd)
/// REASON_REFUSE = 0x2
/// REASON_NOT_PARTY_MEMBER = 0x3
/// REASON_ETC = 0x4
-void clif_PartyBookingFailedRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_PartyBookingFailedRecall(int fd, struct map_session_data *sd)
+static void clif_PartyBookingFailedRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_PartyBookingFailedRecall(int fd, struct map_session_data *sd)
{
}
#endif //if 0
-void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08f9 <refuse AID>.L
-void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned int aid = RFIFOL(fd, 2);
@@ -13042,9 +13162,9 @@ void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd)
#endif
}
-void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08fa <index>.L
-void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data *sd)
+static void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6];
@@ -13058,9 +13178,9 @@ void clif_PartyBookingRefuseVolunteer(unsigned int aid, struct map_session_data
#endif
}
-void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// 08fb <index>.L
-void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd)
+static void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
int index = RFIFOL(fd, 2);
@@ -13072,7 +13192,7 @@ void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd)
}
/// 0909 <index>.L
-void clif_PartyBookingCancelVolunteer(int index, struct map_session_data *sd)
+static void clif_PartyBookingCancelVolunteer(int index, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+1];
@@ -13088,7 +13208,7 @@ void clif_PartyBookingCancelVolunteer(int index, struct map_session_data *sd)
}
/// 090b <gid>.L <char name>.24B
-void clif_PartyBookingAddFilteringList(int index, struct map_session_data *sd)
+static void clif_PartyBookingAddFilteringList(int index, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+24+1];
@@ -13105,7 +13225,7 @@ void clif_PartyBookingAddFilteringList(int index, struct map_session_data *sd)
}
/// 090c <gid>.L <char name>.24B
-void clif_PartyBookingSubFilteringList(int gid, struct map_session_data *sd)
+static void clif_PartyBookingSubFilteringList(int gid, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
unsigned char buf[2+6+24+1];
@@ -13123,28 +13243,28 @@ void clif_PartyBookingSubFilteringList(int gid, struct map_session_data *sd)
#if 0
/// 091c <aid>.L
-void clif_PartyBookingCancelVolunteerToPM(struct map_session_data *sd)
+static void clif_PartyBookingCancelVolunteerToPM(struct map_session_data *sd)
{
}
/// 0971 <pm_aid>.L
-void clif_PartyBookingRefuseVolunteerToPM(struct map_session_data *sd)
+static void clif_PartyBookingRefuseVolunteerToPM(struct map_session_data *sd)
{
}
#endif //if 0
-void clif_parse_CloseVending(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_CloseVending(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to close own vending (CZ_REQ_CLOSESTORE).
/// 012e
-void clif_parse_CloseVending(int fd, struct map_session_data* sd)
+static void clif_parse_CloseVending(int fd, struct map_session_data *sd)
{
vending->close(sd);
}
-void clif_parse_VendingListReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_VendingListReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to open a vending shop (CZ_REQ_BUY_FROMMC).
/// 0130 <account id>.L
-void clif_parse_VendingListReq(int fd, struct map_session_data* sd)
+static void clif_parse_VendingListReq(int fd, struct map_session_data *sd)
{
if( sd->npc_id ) {// using an NPC
return;
@@ -13152,10 +13272,10 @@ void clif_parse_VendingListReq(int fd, struct map_session_data* sd)
vending->list(sd,RFIFOL(fd,2));
}
-void clif_parse_PurchaseReq(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PurchaseReq(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Shop item(s) purchase request (CZ_PC_PURCHASE_ITEMLIST_FROMMC).
/// 0134 <packet len>.W <account id>.L { <amount>.W <index>.W }*
-void clif_parse_PurchaseReq(int fd, struct map_session_data* sd)
+static void clif_parse_PurchaseReq(int fd, struct map_session_data *sd)
{
int len = (int)RFIFOW(fd, 2) - 8;
int id;
@@ -13173,10 +13293,10 @@ void clif_parse_PurchaseReq(int fd, struct map_session_data* sd)
sd->vended_id = 0;
}
-void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PurchaseReq2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Shop item(s) purchase request (CZ_PC_PURCHASE_ITEMLIST_FROMMC2).
/// 0801 <packet len>.W <account id>.L <unique id>.L { <amount>.W <index>.W }*
-void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd)
+static void clif_parse_PurchaseReq2(int fd, struct map_session_data *sd)
{
int len = (int)RFIFOW(fd, 2) - 12;
int aid;
@@ -13195,14 +13315,15 @@ void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd)
sd->vended_id = 0;
}
-void clif_parse_OpenVending(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_OpenVending(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Confirm or cancel the shop preparation window.
/// 012f <packet len>.W <shop name>.80B { <index>.W <amount>.W <price>.L }* (CZ_REQ_OPENSTORE)
/// 01b2 <packet len>.W <shop name>.80B <result>.B { <index>.W <amount>.W <price>.L }* (CZ_REQ_OPENSTORE2)
/// result:
/// 0 = canceled
/// 1 = open
-void clif_parse_OpenVending(int fd, struct map_session_data* sd) {
+static void clif_parse_OpenVending(int fd, struct map_session_data *sd)
+{
int len = (int)RFIFOW(fd, 2) - 85;
const char *message;
bool flag;
@@ -13235,10 +13356,10 @@ void clif_parse_OpenVending(int fd, struct map_session_data* sd) {
vending->open(sd, message, data, len/8);
}
-void clif_parse_CreateGuild(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CreateGuild(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild creation request (CZ_REQ_MAKE_GUILD).
/// 0165 <char id>.L <guild name>.24B
-void clif_parse_CreateGuild(int fd,struct map_session_data *sd)
+static void clif_parse_CreateGuild(int fd, struct map_session_data *sd)
{
char name[NAME_LENGTH];
safestrncpy(name, RFIFOP(fd,6), NAME_LENGTH);
@@ -13251,15 +13372,15 @@ void clif_parse_CreateGuild(int fd,struct map_session_data *sd)
guild->create(sd, name);
}
-void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for guild window interface permissions (CZ_REQ_GUILD_MENUINTERFACE).
/// 014d
-void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd)
+static void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd)
{
clif->guild_masterormember(sd);
}
-void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for guild window information (CZ_REQ_GUILD_MENU).
/// 014f <type>.L
/// type:
@@ -13270,7 +13391,7 @@ void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd) __attribut
/// 4 = expulsion list
/// 5 = unknown (GM_ALLGUILDLIST)
/// 6 = notice
-void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd)
+static void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd)
{
if( !sd->status.guild_id && !sd->bg_id )
return;
@@ -13300,10 +13421,10 @@ void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd)
}
}
-void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update guild positions (CZ_REG_CHANGE_GUILD_POSITIONINFO).
/// 0161 <packet len>.W { <position id>.L <mode>.L <ranking>.L <pay rate>.L <name>.24B }*
-void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd)
+static void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd)
{
int i;
int count = (RFIFOW(fd, 2) - 4) / 40;
@@ -13317,10 +13438,10 @@ void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd)
}
}
-void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update the position of guild members (CZ_REQ_CHANGE_MEMBERPOS).
/// 0155 <packet len>.W { <account id>.L <char id>.L <position id>.L }*
-void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd)
+static void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd)
{
int i;
int len = RFIFOW(fd, 2);
@@ -13344,10 +13465,10 @@ void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd)
}
}
-void clif_parse_GuildRequestEmblem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildRequestEmblem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request for guild emblem data (CZ_REQ_GUILD_EMBLEM_IMG).
/// 0151 <guild id>.L
-void clif_parse_GuildRequestEmblem(int fd,struct map_session_data *sd)
+static void clif_parse_GuildRequestEmblem(int fd, struct map_session_data *sd)
{
struct guild* g;
int guild_id = RFIFOL(fd,2);
@@ -13357,7 +13478,8 @@ void clif_parse_GuildRequestEmblem(int fd,struct map_session_data *sd)
}
/// Validates data of a guild emblem (compressed bitmap)
-bool clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len) {
+static bool clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len)
+{
enum e_bitmapconst {
RGBTRIPLE_SIZE = 3, // sizeof(RGBTRIPLE)
RGBQUAD_SIZE = 4, // sizeof(RGBQUAD)
@@ -13481,10 +13603,10 @@ bool clif_validate_emblem(const uint8 *emblem, unsigned long emblem_len) {
return true;
}
-void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildChangeEmblem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to update the guild emblem (CZ_REGISTER_GUILD_EMBLEM_IMG).
/// 0153 <packet len>.W <emblem data>.?B
-void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd)
+static void clif_parse_GuildChangeEmblem(int fd, struct map_session_data *sd)
{
unsigned int emblem_len = RFIFOW(fd,2)-4;
const uint8* emblem = RFIFOP(fd,4);
@@ -13501,10 +13623,10 @@ void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd)
guild->change_emblem(sd, emblem_len, (const char*)emblem);
}
-void clif_parse_GuildChangeNotice(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildChangeNotice(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild notice update request (CZ_GUILD_NOTICE).
/// 016e <guild id>.L <msg1>.60B <msg2>.120B
-void clif_parse_GuildChangeNotice(int fd, struct map_session_data* sd)
+static void clif_parse_GuildChangeNotice(int fd, struct map_session_data *sd)
{
int guild_id = RFIFOL(fd,2);
char *msg1 = NULL, *msg2 = NULL;
@@ -13526,7 +13648,8 @@ void clif_parse_GuildChangeNotice(int fd, struct map_session_data* sd)
}
// Helper function for guild invite functions
-bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_session_data *t_sd) {
+static bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_session_data *t_sd)
+{
if ( t_sd == NULL )// not online or does not exist
return false;
@@ -13552,20 +13675,21 @@ bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_sessi
return true;
}
-void clif_parse_GuildInvite(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild invite request (CZ_REQ_JOIN_GUILD).
/// 0168 <account id>.L <inviter account id>.L <inviter char id>.L
-void clif_parse_GuildInvite(int fd,struct map_session_data *sd) {
+static void clif_parse_GuildInvite(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd = map->id2sd(RFIFOL(fd,2));
if (!clif_sub_guild_invite(fd, sd, t_sd))
return;
}
-void clif_parse_GuildInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild invite request (/guildinvite) (CZ_REQ_JOIN_GUILD2).
/// 0916 <char name>.24B
-void clif_parse_GuildInvite2(int fd, struct map_session_data *sd)
+static void clif_parse_GuildInvite2(int fd, struct map_session_data *sd)
{
char nick[NAME_LENGTH];
struct map_session_data *t_sd = NULL;
@@ -13576,21 +13700,22 @@ void clif_parse_GuildInvite2(int fd, struct map_session_data *sd)
clif_sub_guild_invite(fd, sd, t_sd);
}
-void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildReplyInvite(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to guild invitation (CZ_JOIN_GUILD).
/// 016b <guild id>.L <answer>.L
/// answer:
/// 0 = refuse
/// 1 = accept
-void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd)
+static void clif_parse_GuildReplyInvite(int fd, struct map_session_data *sd)
{
guild->reply_invite(sd,RFIFOL(fd,2),RFIFOL(fd,6));
}
-void clif_parse_GuildLeave(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildLeave(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to leave guild (CZ_REQ_LEAVE_GUILD).
/// 0159 <guild id>.L <account id>.L <char id>.L <reason>.40B
-void clif_parse_GuildLeave(int fd,struct map_session_data *sd) {
+static void clif_parse_GuildLeave(int fd, struct map_session_data *sd)
+{
if(map->list[sd->bl.m].flag.guildlock) {
clif->message(fd, msg_fd(fd,228)); // Guild modification is disabled in this map.
return;
@@ -13603,10 +13728,11 @@ void clif_parse_GuildLeave(int fd,struct map_session_data *sd) {
guild->leave(sd,RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOP(fd,14));
}
-void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildExpulsion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to expel a member of a guild (CZ_REQ_BAN_GUILD).
/// 015b <guild id>.L <account id>.L <char id>.L <reason>.40B
-void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd) {
+static void clif_parse_GuildExpulsion(int fd, struct map_session_data *sd)
+{
if( map->list[sd->bl.m].flag.guildlock || sd->bg_id ) {
clif->message(fd, msg_fd(fd,228)); // Guild modification is disabled in this map.
return;
@@ -13624,8 +13750,8 @@ void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd) {
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_GuildMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_GuildMessage(int fd, struct map_session_data *sd)
+static void clif_parse_GuildMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildMessage(int fd, struct map_session_data *sd)
{
const struct packet_chat_message *packet = RP2PTR(fd);
char message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1];
@@ -13639,10 +13765,11 @@ void clif_parse_GuildMessage(int fd, struct map_session_data *sd)
guild->send_message(sd, message);
}
-void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Guild alliance request (CZ_REQ_ALLY_GUILD).
/// 0170 <account id>.L <inviter account id>.L <inviter char id>.L
-void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) {
+static void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd;
if(!sd->state.gmaster_flag)
@@ -13664,24 +13791,25 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) {
guild->reqalliance(sd,t_sd);
}
-void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to a guild alliance request (CZ_ALLY_GUILD).
/// 0172 <inviter account id>.L <answer>.L
/// answer:
/// 0 = refuse
/// 1 = accept
-void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd)
+static void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd)
{
guild->reply_reqalliance(sd,RFIFOL(fd,2),RFIFOL(fd,6));
}
-void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete a guild alliance or opposition (CZ_REQ_DELETE_RELATED_GUILD).
/// 0183 <opponent guild id>.L <relation>.L
/// relation:
/// 0 = Ally
/// 1 = Enemy
-void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) {
+static void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd)
+{
if(!sd->state.gmaster_flag)
return;
@@ -13692,10 +13820,11 @@ void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) {
guild->delalliance(sd,RFIFOL(fd,2),RFIFOL(fd,6));
}
-void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to set a guild as opposition (CZ_REQ_HOSTILE_GUILD).
/// 0180 <account id>.L
-void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) {
+static void clif_parse_GuildOpposition(int fd, struct map_session_data *sd)
+{
struct map_session_data *t_sd;
if(!sd->state.gmaster_flag)
@@ -13717,13 +13846,13 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) {
guild->opposition(sd,t_sd);
}
-void clif_parse_GuildBreak(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GuildBreak(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete own guild (CZ_REQ_DISORGANIZE_GUILD).
/// 015d <key>.40B
/// key:
/// now guild name; might have been (intended) email, since the
/// field name and size is same as the one in CH_DELETE_CHAR.
-void clif_parse_GuildBreak(int fd, struct map_session_data *sd)
+static void clif_parse_GuildBreak(int fd, struct map_session_data *sd)
{
char key[40];
if( map->list[sd->bl.m].flag.guildlock ) {
@@ -13737,7 +13866,7 @@ void clif_parse_GuildBreak(int fd, struct map_session_data *sd)
/// Pet
///
-void clif_parse_PetMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PetMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke a pet menu action (CZ_COMMAND_PET).
/// 01a1 <type>.B
/// type:
@@ -13746,23 +13875,23 @@ void clif_parse_PetMenu(int fd, struct map_session_data *sd) __attribute__((nonn
/// 2 = performance
/// 3 = return to egg
/// 4 = unequip accessory
-void clif_parse_PetMenu(int fd, struct map_session_data *sd)
+static void clif_parse_PetMenu(int fd, struct map_session_data *sd)
{
pet->menu(sd,RFIFOB(fd,2));
}
-void clif_parse_CatchPet(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CatchPet(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Attempt to tame a monster (CZ_TRYCAPTURE_MONSTER).
/// 019f <id>.L
-void clif_parse_CatchPet(int fd, struct map_session_data *sd)
+static void clif_parse_CatchPet(int fd, struct map_session_data *sd)
{
pet->catch_process2(sd,RFIFOL(fd,2));
}
-void clif_parse_SelectEgg(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SelectEgg(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to pet incubator egg selection dialog (CZ_SELECT_PETEGG).
/// 01a7 <index>.W
-void clif_parse_SelectEgg(int fd, struct map_session_data *sd)
+static void clif_parse_SelectEgg(int fd, struct map_session_data *sd)
{
if (sd->menuskill_id != SA_TAMINGMONSTER || sd->menuskill_val != -1) {
return;
@@ -13771,7 +13900,7 @@ void clif_parse_SelectEgg(int fd, struct map_session_data *sd)
clif_menuskill_clear(sd);
}
-void clif_parse_SendEmotion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SendEmotion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to display pet's emotion/talk (CZ_PET_ACT).
/// 01a9 <data>.L
/// data:
@@ -13796,24 +13925,24 @@ void clif_parse_SendEmotion(int fd, struct map_session_data *sd) __attribute__((
/// 2 = satisfied (noting)
/// 3 = stuffed (full)
/// 4 = full (so_full)
-void clif_parse_SendEmotion(int fd, struct map_session_data *sd)
+static void clif_parse_SendEmotion(int fd, struct map_session_data *sd)
{
if(sd->pd)
clif->pet_emotion(sd->pd,RFIFOL(fd,2));
}
-void clif_parse_ChangePetName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangePetName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change pet's name (CZ_RENAME_PET).
/// 01a5 <name>.24B
-void clif_parse_ChangePetName(int fd, struct map_session_data *sd)
+static void clif_parse_ChangePetName(int fd, struct map_session_data *sd)
{
pet->change_name(sd, RFIFOP(fd,2));
}
-void clif_parse_pet_evolution(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_pet_evolution(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to Evolve the pet (CZ_PET_EVOLUTION) [Dastgir/Hercules]
/// 09fb <Length>.W <EvolvedPetEggID>.W {<index>.W <amount>.W}*items
-void clif_parse_pet_evolution(int fd, struct map_session_data *sd)
+static void clif_parse_pet_evolution(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_PET_EVOLUTION *p = RP2PTR(fd);
int i = 0, idx, petIndex;
@@ -13893,7 +14022,7 @@ 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,
- (short)pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
+ 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);
} else {
@@ -13910,7 +14039,8 @@ void clif_parse_pet_evolution(int fd, struct map_session_data *sd)
* Result of Pet Evolution (ZC_PET_EVOLUTION_RESULT)
* 0x9fc <Result>.L
*/
-void clif_pet_evolution_result(int fd, enum pet_evolution_result result) {
+static void clif_pet_evolution_result(int fd, enum pet_evolution_result result)
+{
#if PACKETVER >= 20140122
WFIFOHEAD(fd, packet_len(0x9fc));
WFIFOW(fd, 0) = 0x9fc;
@@ -13919,12 +14049,13 @@ void clif_pet_evolution_result(int fd, enum pet_evolution_result result) {
#endif
}
-void clif_parse_GMKick(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMKick(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /kill (CZ_DISCONNECT_CHARACTER).
/// Request to disconnect a character.
/// 00cc <account id>.L
/// NOTE: Also sent when using GM right click menu "(name) force to quit"
-void clif_parse_GMKick(int fd, struct map_session_data *sd) {
+static void clif_parse_GMKick(int fd, struct map_session_data *sd)
+{
struct block_list *target;
int tid;
@@ -13978,17 +14109,18 @@ void clif_parse_GMKick(int fd, struct map_session_data *sd) {
}
}
-void clif_parse_GMKickAll(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GMKickAll(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /killall (CZ_DISCONNECT_ALL_CHARACTER).
/// Request to disconnect all characters.
/// 00ce
-void clif_parse_GMKickAll(int fd, struct map_session_data* sd) {
+static void clif_parse_GMKickAll(int fd, struct map_session_data *sd)
+{
char cmd[15];
sprintf(cmd,"%ckickall",atcommand->at_symbol);
atcommand->exec(fd, sd, cmd, true);
}
-void clif_parse_GMShift(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMShift(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /remove (CZ_REMOVE_AID).
/// Request to warp to a character with given login ID.
/// 01ba <account name>.24B
@@ -13996,7 +14128,7 @@ void clif_parse_GMShift(int fd, struct map_session_data *sd) __attribute__((nonn
/// /shift (CZ_SHIFT).
/// Request to warp to a character with given name.
/// 01bb <char name>.24B
-void clif_parse_GMShift(int fd, struct map_session_data *sd)
+static void clif_parse_GMShift(int fd, struct map_session_data *sd)
{
// FIXME: remove is supposed to receive account name for clients prior 20100803RE
char player_name[NAME_LENGTH];
@@ -14008,11 +14140,12 @@ void clif_parse_GMShift(int fd, struct map_session_data *sd)
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_GMRemove2(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GMRemove2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /remove (CZ_REMOVE_AID_SSO).
/// Request to warp to a character with given account ID.
/// 0843 <account id>.L
-void clif_parse_GMRemove2(int fd, struct map_session_data* sd) {
+static void clif_parse_GMRemove2(int fd, struct map_session_data *sd)
+{
int account_id;
struct map_session_data* pl_sd;
@@ -14024,7 +14157,7 @@ void clif_parse_GMRemove2(int fd, struct map_session_data* sd) {
}
}
-void clif_parse_GMRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMRecall(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /recall (CZ_RECALL).
/// Request to summon a player with given login ID to own position.
/// 01bc <account name>.24B
@@ -14032,7 +14165,7 @@ void clif_parse_GMRecall(int fd, struct map_session_data *sd) __attribute__((non
/// /summon (CZ_RECALL_GID).
/// Request to summon a player with given name to own position.
/// 01bd <char name>.24B
-void clif_parse_GMRecall(int fd, struct map_session_data *sd)
+static void clif_parse_GMRecall(int fd, struct map_session_data *sd)
{
// FIXME: recall is supposed to receive account name for clients prior 20100803RE
char player_name[NAME_LENGTH];
@@ -14044,11 +14177,12 @@ void clif_parse_GMRecall(int fd, struct map_session_data *sd)
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_GMRecall2(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GMRecall2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /recall (CZ_RECALL_SSO).
/// Request to summon a player with given account ID to own position.
/// 0842 <account id>.L
-void clif_parse_GMRecall2(int fd, struct map_session_data* sd) {
+static void clif_parse_GMRecall2(int fd, struct map_session_data *sd)
+{
int account_id;
struct map_session_data* pl_sd;
@@ -14060,7 +14194,7 @@ void clif_parse_GMRecall2(int fd, struct map_session_data* sd) {
}
}
-void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /item /monster (CZ_ITEM_CREATE).
/// Request to execute GM commands.
/// usage:
@@ -14074,7 +14208,7 @@ void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd) __attribute
/// /item agitinvest - reset current global agit investments.(not yet implemented)
/// 013f <item/mob name>.24B
/// 09ce <item/mob name>.100B [Ind/Yommy<3]
-void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd)
+static void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd)
{
const struct packet_gm_monster_item *p = RP2PTR(fd);
int i, count;
@@ -14130,12 +14264,13 @@ void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd)
}
}
-void clif_parse_GMHide(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMHide(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /hide (CZ_CHANGE_EFFECTSTATE).
/// 019d <effect state>.L
/// effect state:
/// TODO: Any OPTION_* ?
-void clif_parse_GMHide(int fd, struct map_session_data *sd) {
+static void clif_parse_GMHide(int fd, struct map_session_data *sd)
+{
char cmd[6];
sprintf(cmd,"%chide",atcommand->at_symbol);
@@ -14143,14 +14278,15 @@ void clif_parse_GMHide(int fd, struct map_session_data *sd) {
atcommand->exec(fd, sd, cmd, true);
}
-void clif_parse_GMReqNoChat(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMReqNoChat(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to adjust player's manner points (CZ_REQ_GIVE_MANNER_POINT).
/// 0149 <account id>.L <type>.B <value>.W
/// type:
/// 0 = positive points
/// 1 = negative points
/// 2 = self mute (+10 minutes)
-void clif_parse_GMReqNoChat(int fd,struct map_session_data *sd) {
+static void clif_parse_GMReqNoChat(int fd, struct map_session_data *sd)
+{
int id, type, value;
struct map_session_data *dstsd;
char command[NAME_LENGTH+15];
@@ -14197,11 +14333,11 @@ void clif_parse_GMReqNoChat(int fd,struct map_session_data *sd) {
atcommand->exec(fd, sd, command, true);
}
-void clif_parse_GMRc(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_GMRc(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /rc (CZ_REQ_GIVE_MANNER_BYNAME).
/// GM adjustment of a player's manner value by -60.
/// 0212 <char name>.24B
-void clif_parse_GMRc(int fd, struct map_session_data* sd)
+static void clif_parse_GMRc(int fd, struct map_session_data *sd)
{
char command[NAME_LENGTH+15];
char name[NAME_LENGTH];
@@ -14214,7 +14350,8 @@ void clif_parse_GMRc(int fd, struct map_session_data* sd)
/// Result of request to resolve account name (ZC_ACK_ACCOUNTNAME).
/// 01e0 <account id>.L <account name>.24B
-void clif_account_name(struct map_session_data* sd, int account_id, const char* accname) {
+static void clif_account_name(struct map_session_data *sd, int account_id, const char *accname)
+{
int fd;
nullpo_retv(sd);
@@ -14226,10 +14363,10 @@ void clif_account_name(struct map_session_data* sd, int account_id, const char*
WFIFOSET(fd,packet_len(0x1e0));
}
-void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// GM requesting account name (for right-click gm menu) (CZ_REQ_ACCOUNTNAME).
/// 01df <account id>.L
-void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd)
+static void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd)
{
int account_id = RFIFOL(fd,2);
@@ -14237,14 +14374,15 @@ void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd)
clif->account_name(sd, account_id, ""); // insert account name here >_<
}
-void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /changemaptype <x> <y> <type> (CZ_CHANGE_MAPTYPE).
/// GM single cell type change request.
/// 0198 <x>.W <y>.W <type>.W
/// type:
/// 0 = not walkable
/// 1 = walkable
-void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) {
+static void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd)
+{
int x,y,type;
if (!pc_has_permission(sd, PC_PERM_USE_CHANGEMAPTYPE))
@@ -14259,14 +14397,14 @@ void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) {
//FIXME: once players leave the map, the client 'forgets' this information.
}
-void clif_parse_PMIgnore(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PMIgnore(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /in /ex (CZ_SETTING_WHISPER_PC).
/// Request to allow/deny whispers from a nick.
/// 00cf <nick>.24B <type>.B
/// type:
/// 0 = (/ex nick) deny speech from nick
/// 1 = (/in nick) allow speech from nick
-void clif_parse_PMIgnore(int fd, struct map_session_data* sd)
+static void clif_parse_PMIgnore(int fd, struct map_session_data *sd)
{
char nick[NAME_LENGTH];
uint8 type;
@@ -14313,14 +14451,14 @@ void clif_parse_PMIgnore(int fd, struct map_session_data* sd)
clif->wisexin(sd, type, 0); // success
}
-void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /inall /exall (CZ_SETTING_WHISPER_STATE).
/// Request to allow/deny all whispers.
/// 00d0 <type>.B
/// type:
/// 0 = (/exall) deny all speech
/// 1 = (/inall) allow all speech
-void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd)
+static void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd)
{
int type = RFIFOB(fd,2), flag;
@@ -14351,7 +14489,8 @@ void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd)
/// Whisper ignore list (ZC_WHISPER_LIST).
/// 00d4 <packet len>.W { <char name>.24B }*
-void clif_PMIgnoreList(struct map_session_data* sd) {
+static void clif_PMIgnoreList(struct map_session_data *sd)
+{
int i, fd;
nullpo_retv(sd);
@@ -14367,18 +14506,18 @@ void clif_PMIgnoreList(struct map_session_data* sd) {
WFIFOSET(fd,WFIFOW(fd,2));
}
-void clif_parse_PMIgnoreList(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PMIgnoreList(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Whisper ignore list request (CZ_REQ_WHISPER_LIST).
/// 00d3
-void clif_parse_PMIgnoreList(int fd,struct map_session_data *sd)
+static void clif_parse_PMIgnoreList(int fd, struct map_session_data *sd)
{
clif->PMIgnoreList(sd);
}
-void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke the /doridori recovery bonus (CZ_DORIDORI).
/// 01e7
-void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd)
+static void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd)
{
if (sd->state.doridori) return;
@@ -14395,7 +14534,7 @@ void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd)
}
}
-void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke the effect of super novice's guardian angel prayer (CZ_CHOPOKGI).
/// 01ed
/// Note: This packet is caused by 7 lines of any text, followed by
@@ -14404,7 +14543,7 @@ void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) __at
/// "Dear angel, can you hear my voice?"
/// "I am" (space separated player name) "Super Novice~"
/// "Help me out~ Please~ T_T"
-void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd)
+static void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd)
{
/* [Ind/Hercules] */
/* game client is currently broken on this (not sure the packetver range) */
@@ -14433,7 +14572,8 @@ void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd)
/// state:
/// 0 = online
/// 1 = offline
-void clif_friendslist_toggle(struct map_session_data *sd,int account_id, int char_id, int online) {
+static void clif_friendslist_toggle(struct map_session_data *sd, int account_id, int char_id, int online)
+{
int i, fd;
nullpo_retv(sd);
@@ -14458,7 +14598,7 @@ void clif_friendslist_toggle(struct map_session_data *sd,int account_id, int cha
}
//Sub-function called from clif_foreachclient to toggle friends on/off [Skotlex]
-int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap)
+static int clif_friendslist_toggle_sub(struct map_session_data *sd, va_list ap)
{
int account_id, char_id, online;
account_id = va_arg(ap, int);
@@ -14471,7 +14611,7 @@ int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap)
/// Sends the whole friends list (ZC_FRIENDS_LIST).
/// 0201 <packet len>.W { <account id>.L <char id>.L <name>.24B }*
/// 0201 <packet len>.W { <account id>.L <char id>.L }*
-void clif_friendslist_send(struct map_session_data *sd)
+static void clif_friendslist_send(struct map_session_data *sd)
{
int i = 0, n, fd = sd->fd;
@@ -14510,7 +14650,7 @@ void clif_friendslist_send(struct map_session_data *sd)
/// 1 = MsgStringTable[822]="(%s) does not want to be friends with you."
/// 2 = MsgStringTable[819]="Your Friend List is full."
/// 3 = MsgStringTable[820]="(%s)'s Friend List is full."
-void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_data *f_sd, int type)
+static void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_data *f_sd, int type)
{
int fd;
nullpo_retv(sd);
@@ -14529,7 +14669,8 @@ void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_dat
/// Asks a player for permission to be added as friend (ZC_REQ_ADD_FRIENDS).
/// 0207 <req account id>.L <req char id>.L <req char name>.24B
-void clif_friendlist_req(struct map_session_data* sd, int account_id, int char_id, const char* name) {
+static void clif_friendlist_req(struct map_session_data *sd, int account_id, int char_id, const char *name)
+{
int fd;
nullpo_retv(sd);
@@ -14542,10 +14683,10 @@ void clif_friendlist_req(struct map_session_data* sd, int account_id, int char_i
WFIFOSET(fd,packet_len(0x207));
}
-void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add a player as friend (CZ_ADD_FRIENDS).
/// 0202 <name>.24B
-void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd)
+static void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd)
{
struct map_session_data *f_sd;
int i;
@@ -14593,14 +14734,14 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd)
clif->friendlist_req(f_sd, sd->status.account_id, sd->status.char_id, sd->status.name);
}
-void clif_parse_FriendsListReply(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_FriendsListReply(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to a friend add request (CZ_ACK_REQ_ADD_FRIENDS).
/// 0208 <inviter account id>.L <inviter char id>.L <result>.B
/// 0208 <inviter account id>.L <inviter char id>.L <result>.L (PACKETVER >= 6)
/// result:
/// 0 = rejected
/// 1 = accepted
-void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
+static void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
{
struct map_session_data *f_sd;
int account_id;
@@ -14661,10 +14802,10 @@ void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
}
}
-void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete a friend (CZ_DELETE_FRIENDS).
/// 0203 <account id>.L <char id>.L
-void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
+static void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
{
struct map_session_data *f_sd = NULL;
int account_id, char_id;
@@ -14727,7 +14868,8 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
/// /pvpinfo list (ZC_ACK_PVPPOINT).
/// 0210 <char id>.L <account id>.L <win point>.L <lose point>.L <point>.L
-void clif_PVPInfo(struct map_session_data* sd) {
+static void clif_PVPInfo(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
@@ -14742,10 +14884,10 @@ void clif_PVPInfo(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x210));
}
-void clif_parse_PVPInfo(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_PVPInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /pvpinfo (CZ_REQ_PVPPOINT).
/// 020f <char id>.L <account id>.L
-void clif_parse_PVPInfo(int fd,struct map_session_data *sd)
+static void clif_parse_PVPInfo(int fd, struct map_session_data *sd)
{
// TODO: Is there a way to use this on an another player (char/acc id)?
clif->PVPInfo(sd);
@@ -14754,7 +14896,8 @@ void clif_parse_PVPInfo(int fd,struct map_session_data *sd)
/// Ranking list
/// ranking pointlist { <name>.24B <point>.L }*10
-void clif_ranklist_sub(unsigned char *buf, enum fame_list_type type) {
+static void clif_ranklist_sub(unsigned char *buf, enum fame_list_type type)
+{
const char* name;
struct fame_list* list;
int i;
@@ -14787,7 +14930,7 @@ void clif_ranklist_sub(unsigned char *buf, enum fame_list_type type) {
}
/// 097d <RankingType>.W {<CharName>.24B <point>L}*10 <mypoint>L (ZC_ACK_RANKING)
-void clif_ranklist(struct map_session_data *sd, enum fame_list_type type)
+static void clif_ranklist(struct map_session_data *sd, enum fame_list_type type)
{
#if PACKETVER >= 20120502
int fd;
@@ -14810,11 +14953,12 @@ void clif_ranklist(struct map_session_data *sd, enum fame_list_type type)
#endif
}
-void clif_parse_ranklist(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ranklist(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/*
* 097c <type> (CZ_REQ_RANKING)
* */
-void clif_parse_ranklist(int fd, struct map_session_data *sd) {
+static void clif_parse_ranklist(int fd, struct map_session_data *sd)
+{
int16 type = RFIFOW(fd, 2); //type
switch( type ) {
@@ -14827,7 +14971,7 @@ void clif_parse_ranklist(int fd, struct map_session_data *sd) {
}
// 097e <RankingType>.W <point>.L <TotalPoint>.L (ZC_UPDATE_RANKING_POINT)
-void clif_update_rankingpoint(struct map_session_data *sd, enum fame_list_type type, int points)
+static void clif_update_rankingpoint(struct map_session_data *sd, enum fame_list_type type, int points)
{
#if PACKETVER < 20120502
switch( type ) {
@@ -14853,7 +14997,8 @@ void clif_update_rankingpoint(struct map_session_data *sd, enum fame_list_type t
/// /blacksmith list (ZC_BLACKSMITH_RANK).
/// 0219 { <name>.24B }*10 { <point>.L }*10
-void clif_blacksmith(struct map_session_data* sd) {
+static void clif_blacksmith(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
@@ -14864,16 +15009,18 @@ void clif_blacksmith(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x219));
}
-void clif_parse_Blacksmith(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Blacksmith(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /blacksmith (CZ_BLACKSMITH_RANK).
/// 0217
-void clif_parse_Blacksmith(int fd,struct map_session_data *sd) {
+static void clif_parse_Blacksmith(int fd, struct map_session_data *sd)
+{
clif->blacksmith(sd);
}
/// Notification about backsmith points (ZC_BLACKSMITH_POINT).
/// 021b <points>.L <total points>.L
-void clif_fame_blacksmith(struct map_session_data *sd, int points) {
+static void clif_fame_blacksmith(struct map_session_data *sd, int points)
+{
int fd;
nullpo_retv(sd);
@@ -14887,7 +15034,8 @@ void clif_fame_blacksmith(struct map_session_data *sd, int points) {
/// /alchemist list (ZC_ALCHEMIST_RANK).
/// 021a { <name>.24B }*10 { <point>.L }*10
-void clif_alchemist(struct map_session_data* sd) {
+static void clif_alchemist(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
@@ -14898,16 +15046,18 @@ void clif_alchemist(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x21a));
}
-void clif_parse_Alchemist(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Alchemist(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /alchemist (CZ_ALCHEMIST_RANK).
/// 0218
-void clif_parse_Alchemist(int fd,struct map_session_data *sd) {
+static void clif_parse_Alchemist(int fd, struct map_session_data *sd)
+{
clif->alchemist(sd);
}
/// Notification about alchemist points (ZC_ALCHEMIST_POINT).
/// 021c <points>.L <total points>.L
-void clif_fame_alchemist(struct map_session_data *sd, int points) {
+static void clif_fame_alchemist(struct map_session_data *sd, int points)
+{
int fd;
nullpo_retv(sd);
@@ -14921,7 +15071,8 @@ void clif_fame_alchemist(struct map_session_data *sd, int points) {
/// /taekwon list (ZC_TAEKWON_RANK).
/// 0226 { <name>.24B }*10 { <point>.L }*10
-void clif_taekwon(struct map_session_data* sd) {
+static void clif_taekwon(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
@@ -14932,16 +15083,18 @@ void clif_taekwon(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x226));
}
-void clif_parse_Taekwon(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Taekwon(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /taekwon (CZ_TAEKWON_RANK).
/// 0225
-void clif_parse_Taekwon(int fd,struct map_session_data *sd) {
+static void clif_parse_Taekwon(int fd, struct map_session_data *sd)
+{
clif->taekwon(sd);
}
/// Notification about taekwon points (ZC_TAEKWON_POINT).
/// 0224 <points>.L <total points>.L
-void clif_fame_taekwon(struct map_session_data *sd, int points) {
+static void clif_fame_taekwon(struct map_session_data *sd, int points)
+{
int fd;
nullpo_retv(sd);
@@ -14955,7 +15108,8 @@ void clif_fame_taekwon(struct map_session_data *sd, int points) {
/// /pk list (ZC_KILLER_RANK).
/// 0238 { <name>.24B }*10 { <point>.L }*10
-void clif_ranking_pk(struct map_session_data* sd) {
+static void clif_ranking_pk(struct map_session_data *sd)
+{
int i, fd;
nullpo_retv(sd);
@@ -14969,21 +15123,22 @@ void clif_ranking_pk(struct map_session_data* sd) {
WFIFOSET(fd, packet_len(0x238));
}
-void clif_parse_RankingPk(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RankingPk(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /pk (CZ_KILLER_RANK).
/// 0237
-void clif_parse_RankingPk(int fd,struct map_session_data *sd) {
+static void clif_parse_RankingPk(int fd, struct map_session_data *sd)
+{
clif->ranking_pk(sd);
}
-void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_FeelSaveOk(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// SG Feel save OK [Komurka] (CZ_AGREE_STARPLACE).
/// 0254 <which>.B
/// which:
/// 0 = sun
/// 1 = moon
/// 2 = star
-void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd)
+static void clif_parse_FeelSaveOk(int fd, struct map_session_data *sd)
{
int i;
if (sd->menuskill_id != SG_FEEL)
@@ -15009,7 +15164,7 @@ void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd)
/// 0 = sun
/// 1 = moon
/// 2 = star
-void clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv)
+static void clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv)
{
nullpo_retv(sd);
WFIFOHEAD(fd,packet_len(0x253));
@@ -15020,18 +15175,18 @@ void clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv)
sd->menuskill_val = skill_lv;
}
-void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change homunculus' name (CZ_RENAME_MER).
/// 0231 <name>.24B
-void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd)
+static void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd)
{
homun->change_name(sd, RFIFOP(fd,2));
}
-void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to warp/move homunculus/mercenary to it's owner (CZ_REQUEST_MOVETOOWNER).
/// 0234 <id>.L
-void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd)
+static void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd)
{
int id = RFIFOL(fd,2); // Mercenary or Homunculus
struct block_list *bl = NULL;
@@ -15049,10 +15204,10 @@ void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd)
unit->walktoxy(bl, ud->to_x, ud->to_y, 4);
}
-void clif_parse_HomMoveTo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HomMoveTo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to move homunculus/mercenary (CZ_REQUEST_MOVENPC).
/// 0232 <id>.L <position data>.3B
-void clif_parse_HomMoveTo(int fd, struct map_session_data *sd)
+static void clif_parse_HomMoveTo(int fd, struct map_session_data *sd)
{
int id = RFIFOL(fd,2); // Mercenary or Homunculus
struct block_list *bl = NULL;
@@ -15070,12 +15225,12 @@ void clif_parse_HomMoveTo(int fd, struct map_session_data *sd)
unit->walktoxy(bl, x, y, 4);
}
-void clif_parse_HomAttack(int fd,struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HomAttack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to do an action with homunculus/mercenary (CZ_REQUEST_ACTNPC).
/// 0233 <id>.L <target id>.L <action>.B
/// action:
/// always 0
-void clif_parse_HomAttack(int fd,struct map_session_data *sd)
+static void clif_parse_HomAttack(int fd, struct map_session_data *sd)
{
struct block_list *bl = NULL;
int id = RFIFOL(fd,2),
@@ -15092,7 +15247,7 @@ void clif_parse_HomAttack(int fd,struct map_session_data *sd)
unit->attack(bl, target_id, action_type != 0);
}
-void clif_parse_HomMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_HomMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke a homunculus menu action (CZ_COMMAND_MER).
/// 022d <type>.W <command>.B
/// type:
@@ -15101,7 +15256,8 @@ void clif_parse_HomMenu(int fd, struct map_session_data *sd) __attribute__((nonn
/// 0 = homunculus information
/// 1 = feed
/// 2 = delete
-void clif_parse_HomMenu(int fd, struct map_session_data *sd) { //[orn]
+static void clif_parse_HomMenu(int fd, struct map_session_data *sd)
+{ //[orn]
int cmd;
cmd = RFIFOW(fd,0);
@@ -15112,10 +15268,11 @@ void clif_parse_HomMenu(int fd, struct map_session_data *sd) { //[orn]
homun->menu(sd,RFIFOB(fd,packet_db[cmd].pos[1]));
}
-void clif_parse_AutoRevive(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_AutoRevive(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to resurrect oneself using Token of Siegfried (CZ_STANDING_RESURRECTION).
/// 0292
-void clif_parse_AutoRevive(int fd, struct map_session_data *sd) {
+static void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
+{
int item_position = pc->search_inventory(sd, ITEMID_TOKEN_OF_SIEGFRIED);
int hpsp = 100;
@@ -15147,7 +15304,8 @@ void clif_parse_AutoRevive(int fd, struct map_session_data *sd) {
/// <itemdefPower>.W <plusdefPower>.W <mdefPower>.W <plusmdefPower>.W
/// <hitSuccessValue>.W <avoidSuccessValue>.W <plusAvoidSuccessValue>.W
/// <criticalSuccessValue>.W <ASPD>.W <plusASPD>.W
-void clif_check(int fd, struct map_session_data* pl_sd) {
+static void clif_check(int fd, struct map_session_data *pl_sd)
+{
nullpo_retv(pl_sd);
WFIFOHEAD(fd,packet_len(0x214));
WFIFOW(fd, 0) = 0x214;
@@ -15180,11 +15338,11 @@ void clif_check(int fd, struct map_session_data* pl_sd) {
WFIFOSET(fd,packet_len(0x214));
}
-void clif_parse_Check(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Check(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// /check (CZ_REQ_STATUS_GM).
/// Request character's status values.
/// 0213 <char name>.24B
-void clif_parse_Check(int fd, struct map_session_data *sd)
+static void clif_parse_Check(int fd, struct map_session_data *sd)
{
char charname[NAME_LENGTH];
struct map_session_data* pl_sd;
@@ -15210,7 +15368,7 @@ void clif_parse_Check(int fd, struct map_session_data *sd)
/// result:
/// 0 = success
/// 1 = failure
-void clif_Mail_setattachment(int fd, int index, uint8 flag)
+static void clif_Mail_setattachment(int fd, int index, uint8 flag)
{
WFIFOHEAD(fd,packet_len(0x255));
WFIFOW(fd,0) = 0x255;
@@ -15225,7 +15383,7 @@ void clif_Mail_setattachment(int fd, int index, uint8 flag)
/// 0 = success
/// 1 = failure
/// 2 = too many items
-void clif_Mail_getattachment(int fd, uint8 flag)
+static void clif_Mail_getattachment(int fd, uint8 flag)
{
WFIFOHEAD(fd,packet_len(0x245));
WFIFOW(fd,0) = 0x245;
@@ -15238,7 +15396,7 @@ void clif_Mail_getattachment(int fd, uint8 flag)
/// result:
/// 0 = success
/// 1 = recipient does not exist
-void clif_Mail_send(int fd, bool fail)
+static void clif_Mail_send(int fd, bool fail)
{
WFIFOHEAD(fd,packet_len(0x249));
WFIFOW(fd,0) = 0x249;
@@ -15251,7 +15409,7 @@ void clif_Mail_send(int fd, bool fail)
/// result:
/// 0 = success
/// 1 = failure
-void clif_Mail_delete(int fd, int mail_id, short fail)
+static void clif_Mail_delete(int fd, int mail_id, short fail)
{
WFIFOHEAD(fd, packet_len(0x257));
WFIFOW(fd,0) = 0x257;
@@ -15265,7 +15423,7 @@ void clif_Mail_delete(int fd, int mail_id, short fail)
/// result:
/// 0 = success
/// 1 = failure
-void clif_Mail_return(int fd, int mail_id, short fail)
+static void clif_Mail_return(int fd, int mail_id, short fail)
{
WFIFOHEAD(fd,packet_len(0x274));
WFIFOW(fd,0) = 0x274;
@@ -15276,7 +15434,7 @@ void clif_Mail_return(int fd, int mail_id, short fail)
/// Notification about new mail (ZC_MAIL_RECEIVE).
/// 024a <mail id>.L <title>.40B <sender>.24B
-void clif_Mail_new(int fd, int mail_id, const char *sender, const char *title)
+static void clif_Mail_new(int fd, int mail_id, const char *sender, const char *title)
{
nullpo_retv(sender);
nullpo_retv(title);
@@ -15293,7 +15451,7 @@ void clif_Mail_new(int fd, int mail_id, const char *sender, const char *title)
/// type:
/// 0 = open
/// 1 = close
-void clif_Mail_window(int fd, int flag)
+static void clif_Mail_window(int fd, int flag)
{
WFIFOHEAD(fd,packet_len(0x260));
WFIFOW(fd,0) = 0x260;
@@ -15306,7 +15464,7 @@ void clif_Mail_window(int fd, int flag)
/// read:
/// 0 = unread
/// 1 = read
-void clif_Mail_refreshinbox(struct map_session_data *sd)
+static void clif_Mail_refreshinbox(struct map_session_data *sd)
{
int fd = sd->fd;
struct mail_data *md;
@@ -15343,10 +15501,10 @@ void clif_Mail_refreshinbox(struct map_session_data *sd)
}
}
-void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Mail inbox list request (CZ_MAIL_GET_LIST).
/// 023f
-void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd)
{
struct mail_data* md = &sd->mail.inbox;
@@ -15363,7 +15521,7 @@ void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd)
/// 0242 <packet len>.W <mail id>.L <title>.40B <sender>.24B <time>.L <zeny>.L
/// <amount>.L <name id>.W <item type>.W <identified>.B <damaged>.B <refine>.B
/// <card1>.W <card2>.W <card3>.W <card4>.W <message>.?B
-void clif_Mail_read(struct map_session_data *sd, int mail_id)
+static void clif_Mail_read(struct map_session_data *sd, int mail_id)
{
int i, fd = sd->fd;
@@ -15426,10 +15584,10 @@ void clif_Mail_read(struct map_session_data *sd, int mail_id)
}
}
-void clif_parse_Mail_read(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_read(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to open a mail (CZ_MAIL_OPEN).
/// 0241 <mail id>.L
-void clif_parse_Mail_read(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_read(int fd, struct map_session_data *sd)
{
int mail_id = RFIFOL(fd,2);
@@ -15441,10 +15599,10 @@ void clif_parse_Mail_read(int fd, struct map_session_data *sd)
clif->mail_read(sd, RFIFOL(fd,2));
}
-void clif_parse_Mail_getattach(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_getattach(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to receive mail's attachment (CZ_MAIL_GET_ITEM).
/// 0244 <mail id>.L
-void clif_parse_Mail_getattach(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_getattach(int fd, struct map_session_data *sd)
{
int mail_id = RFIFOL(fd,2);
int i;
@@ -15509,10 +15667,10 @@ void clif_parse_Mail_getattach(int fd, struct map_session_data *sd)
intif->Mail_getattach(sd->status.char_id, mail_id);
}
-void clif_parse_Mail_delete(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_delete(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to delete a mail (CZ_MAIL_DELETE).
/// 0243 <mail id>.L
-void clif_parse_Mail_delete(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_delete(int fd, struct map_session_data *sd)
{
int mail_id = RFIFOL(fd,2);
int i;
@@ -15540,10 +15698,10 @@ void clif_parse_Mail_delete(int fd, struct map_session_data *sd)
}
}
-void clif_parse_Mail_return(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_return(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to return a mail (CZ_REQ_MAIL_RETURN).
/// 0273 <mail id>.L <receive name>.24B
-void clif_parse_Mail_return(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_return(int fd, struct map_session_data *sd)
{
int mail_id = RFIFOL(fd,2);
int i;
@@ -15564,10 +15722,10 @@ void clif_parse_Mail_return(int fd, struct map_session_data *sd)
}
}
-void clif_parse_Mail_setattach(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_setattach(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add an item or Zeny to mail (CZ_MAIL_ADD_ITEM).
/// 0247 <index>.W <amount>.L
-void clif_parse_Mail_setattach(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_setattach(int fd, struct map_session_data *sd)
{
int idx = RFIFOW(fd,2);
int amount = RFIFOL(fd,4);
@@ -15582,14 +15740,14 @@ void clif_parse_Mail_setattach(int fd, struct map_session_data *sd)
clif->mail_setattachment(fd,idx,flag);
}
-void clif_parse_Mail_winopen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_winopen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to reset mail item and/or Zeny (CZ_MAIL_RESET_ITEM).
/// 0246 <type>.W
/// type:
/// 0 = reset all
/// 1 = remove item
/// 2 = remove zeny
-void clif_parse_Mail_winopen(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_winopen(int fd, struct map_session_data *sd)
{
int flag = RFIFOW(fd,2);
@@ -15599,11 +15757,11 @@ void clif_parse_Mail_winopen(int fd, struct map_session_data *sd)
mail->removezeny(sd, 0);
}
-void clif_parse_Mail_send(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Mail_send(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to send mail (CZ_MAIL_SEND).
/// 0248 <packet len>.W <recipient>.24B <title>.40B <body len>.B <body>.?B
-void clif_parse_Mail_send(int fd, struct map_session_data *sd)
+static void clif_parse_Mail_send(int fd, struct map_session_data *sd)
{
struct mail_message msg;
int body_len;
@@ -15675,7 +15833,7 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd)
/// type:
/// 0 = open
/// 1 = close
-void clif_Auction_openwindow(struct map_session_data *sd)
+static void clif_Auction_openwindow(struct map_session_data *sd)
{
int fd;
@@ -15695,7 +15853,7 @@ void clif_Auction_openwindow(struct map_session_data *sd)
/// Returns auction item search results (ZC_AUCTION_ITEM_REQ_SEARCH).
/// 0252 <packet len>.W <pages>.L <count>.L { <auction id>.L <seller name>.24B <name id>.W <type>.L <amount>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <now price>.L <max price>.L <buyer name>.24B <delete time>.L }*
-void clif_Auction_results(struct map_session_data *sd, short count, short pages, const uint8 *buf)
+static void clif_Auction_results(struct map_session_data *sd, short count, short pages, const uint8 *buf)
{
int i, fd, len = sizeof(struct auction_data);
struct auction_data auction;
@@ -15743,7 +15901,8 @@ void clif_Auction_results(struct map_session_data *sd, short count, short pages,
/// result:
/// 0 = success
/// 1 = failure
-void clif_Auction_setitem(int fd, int index, bool fail) {
+static void clif_Auction_setitem(int fd, int index, bool fail)
+{
WFIFOHEAD(fd,packet_len(0x256));
WFIFOW(fd,0) = 0x256;
WFIFOW(fd,2) = index;
@@ -15751,14 +15910,14 @@ void clif_Auction_setitem(int fd, int index, bool fail) {
WFIFOSET(fd,packet_len(0x256));
}
-void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to initialize 'new auction' data (CZ_AUCTION_CREATE).
/// 024b <type>.W
/// type:
/// 0 = create (any other action in auction window)
/// 1 = cancel (cancel pressed on register tab)
/// ? = junk, uninitialized value (ex. when switching between list filters)
-void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd)
{
if( sd->auction.amount > 0 )
clif->additem(sd, sd->auction.index, sd->auction.amount, 0);
@@ -15766,10 +15925,10 @@ void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd)
sd->auction.amount = 0;
}
-void clif_parse_Auction_setitem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_setitem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add an item to the action (CZ_AUCTION_ADD_ITEM).
/// 024c <index>.W <count>.L
-void clif_parse_Auction_setitem(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_setitem(int fd, struct map_session_data *sd)
{
int idx = RFIFOW(fd,2) - 2;
int amount = RFIFOL(fd,4); // Always 1
@@ -15823,7 +15982,7 @@ void clif_parse_Auction_setitem(int fd, struct map_session_data *sd)
/// 7 = You have failed to win the auction
/// 8 = You do not have enough Zeny
/// 9 = You cannot place more than 5 bids at a time
-void clif_Auction_message(int fd, unsigned char flag)
+static void clif_Auction_message(int fd, unsigned char flag)
{
WFIFOHEAD(fd,packet_len(0x250));
WFIFOW(fd,0) = 0x250;
@@ -15837,7 +15996,7 @@ void clif_Auction_message(int fd, unsigned char flag)
/// 0 = You have ended the auction
/// 1 = You cannot end the auction
/// 2 = Auction ID is incorrect
-void clif_Auction_close(int fd, unsigned char flag)
+static void clif_Auction_close(int fd, unsigned char flag)
{
WFIFOHEAD(fd, 4);
WFIFOW(fd,0) = 0x25d; // BUG: The client identifies this packet as 0x25d (CZ_AUCTION_REQ_MY_SELL_STOP)
@@ -15845,10 +16004,10 @@ void clif_Auction_close(int fd, unsigned char flag)
WFIFOSET(fd, 4);
}
-void clif_parse_Auction_register(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_register(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to add an auction (CZ_AUCTION_ADD).
/// 024d <now money>.L <max money>.L <delete hour>.W
-void clif_parse_Auction_register(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_register(int fd, struct map_session_data *sd)
{
struct auction_data auction;
struct item_data *item;
@@ -15940,30 +16099,30 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd)
}
}
-void clif_parse_Auction_cancel(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_cancel(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Cancels an auction (CZ_AUCTION_ADD_CANCEL).
/// 024e <auction id>.L
-void clif_parse_Auction_cancel(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_cancel(int fd, struct map_session_data *sd)
{
unsigned int auction_id = RFIFOL(fd,2);
intif->Auction_cancel(sd->status.char_id, auction_id);
}
-void clif_parse_Auction_close(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_close(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Closes an auction (CZ_AUCTION_REQ_MY_SELL_STOP).
/// 025d <auction id>.L
-void clif_parse_Auction_close(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_close(int fd, struct map_session_data *sd)
{
unsigned int auction_id = RFIFOL(fd,2);
intif->Auction_close(sd->status.char_id, auction_id);
}
-void clif_parse_Auction_bid(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_bid(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Places a bid on an auction (CZ_AUCTION_BUY).
/// 024f <auction id>.L <money>.L
-void clif_parse_Auction_bid(int fd, struct map_session_data *sd)
+static void clif_parse_Auction_bid(int fd, struct map_session_data *sd)
{
unsigned int auction_id = RFIFOL(fd,2);
int bid = RFIFOL(fd,6);
@@ -15985,7 +16144,7 @@ void clif_parse_Auction_bid(int fd, struct map_session_data *sd)
}
}
-void clif_parse_Auction_search(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_search(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Auction Search (CZ_AUCTION_ITEM_SEARCH).
/// 0251 <search type>.W <auction id>.L <search text>.24B <page number>.W
/// search type:
@@ -15995,7 +16154,7 @@ void clif_parse_Auction_search(int fd, struct map_session_data* sd) __attribute_
/// 3 = misc
/// 4 = name search
/// 5 = auction id search
-void clif_parse_Auction_search(int fd, struct map_session_data* sd)
+static void clif_parse_Auction_search(int fd, struct map_session_data *sd)
{
char search_text[NAME_LENGTH];
short type = RFIFOW(fd,2), page = RFIFOW(fd,32);
@@ -16010,13 +16169,13 @@ void clif_parse_Auction_search(int fd, struct map_session_data* sd)
intif->Auction_requestlist(sd->status.char_id, type, price, search_text, page);
}
-void clif_parse_Auction_buysell(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_Auction_buysell(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Requests list of own currently active bids or auctions (CZ_AUCTION_REQ_MY_INFO).
/// 025c <type>.W
/// type:
/// 0 = sell (own auctions)
/// 1 = buy (own bids)
-void clif_parse_Auction_buysell(int fd, struct map_session_data* sd)
+static void clif_parse_Auction_buysell(int fd, struct map_session_data *sd)
{
short type = RFIFOW(fd,2) + 6;
@@ -16034,16 +16193,14 @@ void clif_parse_Auction_buysell(int fd, struct map_session_data* sd)
/// List of items offered in a cash shop (ZC_PC_CASH_POINT_ITEMLIST).
/// 0287 <packet len>.W <cash point>.L { <sell price>.L <discount price>.L <item type>.B <name id>.W }*
/// 0287 <packet len>.W <cash point>.L <kafra point>.L { <sell price>.L <discount price>.L <item type>.B <name id>.W }* (PACKETVER >= 20070711)
-void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd) {
+static void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd)
+{
struct npc_item_list *shop = NULL;
unsigned short shop_size = 0;
- int fd,i, c = 0;
+ int fd, i, c = 0;
int currency[2] = { 0,0 };
-#if PACKETVER < 20070711
- const int offset = 8;
-#else
- const int offset = 12;
-#endif
+ int len;
+ struct PACKET_ZC_PC_CASH_POINT_ITEMLIST *p;
nullpo_retv(sd);
nullpo_retv(nd);
@@ -16066,33 +16223,36 @@ void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd) {
fd = sd->fd;
sd->npc_shopid = nd->bl.id;
- WFIFOHEAD(fd,offset+shop_size*11);
- WFIFOW(fd,0) = 0x287;
- /* 0x2 = length, set after parsing */
- WFIFOL(fd,4) = currency[0]; // Cash Points
+ len = sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST) + shop_size * sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x287;
+ p->cashPoints = currency[0];
#if PACKETVER >= 20070711
- WFIFOL(fd,8) = currency[1]; // Kafra Points
+ p->kafraPoints = currency[1];
#endif
- for( i = 0; i < shop_size; i++ ) {
- if( shop[i].nameid ) {
+ for (i = 0; i < shop_size; i++) {
+ if (shop[i].nameid) {
struct item_data* id = itemdb->search(shop[i].nameid);
- WFIFOL(fd,offset+0+i*11) = shop[i].value;
- WFIFOL(fd,offset+4+i*11) = shop[i].value; // Discount Price
- WFIFOB(fd,offset+8+i*11) = itemtype(id->type);
- WFIFOW(fd,offset+9+i*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid;
+ p->items[c].price = shop[i].value;
+ p->items[c].discountPrice = shop[i].value;
+ p->items[c].itemType = itemtype(id->type);
+ p->items[c].itemId = (id->view_id > 0) ? id->view_id : id->nameid;
c++;
}
}
- WFIFOW(fd,2) = offset+c*11;
- WFIFOSET(fd,WFIFOW(fd,2));
+ len = sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST) + c * sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub);
+ p->packetLength = len;
+ WFIFOSET(fd, len);
}
/// Cashshop Buy Ack (ZC_PC_CASH_POINT_UPDATE).
/// 0289 <cash point>.L <error>.W
/// 0289 <cash point>.L <kafra point>.L <error>.W (PACKETVER >= 20070711)
/// For error return codes see enum cashshop_error@clif.h
-void clif_cashshop_ack(struct map_session_data* sd, int error) {
+static void clif_cashshop_ack(struct map_session_data *sd, int error)
+{
struct npc_data *nd;
int fd;
int currency[2] = { 0,0 };
@@ -16120,41 +16280,41 @@ void clif_cashshop_ack(struct map_session_data* sd, int error) {
WFIFOSET(fd, packet_len(0x289));
}
-void clif_parse_cashshop_buy(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_cashshop_buy(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to buy item(s) from cash shop (CZ_PC_BUY_CASH_POINT_ITEM).
/// 0288 <name id>.W <amount>.W
/// 0288 <name id>.W <amount>.W <kafra points>.L (PACKETVER >= 20070711)
/// 0288 <packet len>.W <kafra points>.L <count>.W { <amount>.W <name id>.W }.4B*count (PACKETVER >= 20100803)
-void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
+static void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
{
int fail = 0;
+ const struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM *p = RFIFOP(fd, 0);
- if( sd->state.trading || !sd->npc_shopid || pc_has_permission(sd,PC_PERM_DISABLE_STORE) )
+ if (sd->state.trading || !sd->npc_shopid || pc_has_permission(sd,PC_PERM_DISABLE_STORE)) {
fail = 1;
- else {
-#if PACKETVER < 20101116
- short nameid = RFIFOW(fd,2);
- short amount = RFIFOW(fd,4);
- int points = RFIFOL(fd,6);
-
- fail = npc->cashshop_buy(sd, nameid, amount, points);
+ } else {
+#if PACKETVER < 20070711
+ fail = npc->cashshop_buy(sd, p->itemId, p->amount, 0);
+#elif PACKETVER < 20101116
+ fail = npc->cashshop_buy(sd, p->itemId, p->amount, p->kafraPoints);
#else
- int len = RFIFOW(fd,2);
+ int len = p->packetLength;
+ int needLen;
int points;
int count;
struct itemlist item_list = { 0 };
int i;
- if (len < 10) {
+ if (len < sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM)) {
ShowWarning("Player %d sent incorrect cash shop buy packet (len %d)!\n", sd->status.char_id, len);
return;
}
- points = RFIFOL(fd, 4);
- count = RFIFOW(fd, 8);
-
- if (len != 10 + count * 4) {
- ShowWarning("Player %d sent incorrect cash shop buy packet (len %d:%d)!\n", sd->status.char_id, len, 10 + count * 4);
+ points = p->kafraPoints;
+ count = p->count;
+ needLen = sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM) + count * sizeof(struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub);
+ if (len != needLen) {
+ ShowWarning("Player %d sent incorrect cash shop buy packet (len %d:%d)!\n", sd->status.char_id, len, needLen);
return;
}
@@ -16163,8 +16323,8 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
for (i = 0; i < count; i++) {
struct itemlist_entry entry = { 0 };
- entry.amount = RFIFOW(fd, 10 + 4 * i);
- entry.id = RFIFOW(fd, 10 + 4 * i + 2); // Nameid
+ entry.amount = p->items[i].amount;
+ entry.id = p->items[i].itemId;
VECTOR_PUSH(item_list, entry);
}
@@ -16185,7 +16345,7 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
/// 0 = "You cannot adopt more than 1 child."
/// 1 = "You must be at least character level 70 in order to adopt someone."
/// 2 = "You cannot adopt a married person."
-void clif_Adopt_reply(struct map_session_data *sd, int type)
+static void clif_Adopt_reply(struct map_session_data *sd, int type)
{
int fd;
@@ -16199,7 +16359,8 @@ void clif_Adopt_reply(struct map_session_data *sd, int type)
/// Adoption confirmation (ZC_REQ_BABY).
/// 01f6 <account id>.L <char id>.L <name>.B
-void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *src, int p_id) {
+static void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *src, int p_id)
+{
int fd;
nullpo_retv(sd);
@@ -16213,10 +16374,11 @@ void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *sr
WFIFOSET(fd,34);
}
-void clif_parse_Adopt_request(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Adopt_request(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to adopt a player (CZ_REQ_JOIN_BABY).
/// 01f9 <account id>.L
-void clif_parse_Adopt_request(int fd, struct map_session_data *sd) {
+static void clif_parse_Adopt_request(int fd, struct map_session_data *sd)
+{
struct map_session_data *tsd = map->id2sd(RFIFOL(fd,2)), *p_sd = map->charid2sd(sd->status.partner_id);
if( pc->can_Adopt(sd, p_sd, tsd) ) {
@@ -16225,13 +16387,14 @@ void clif_parse_Adopt_request(int fd, struct map_session_data *sd) {
}
}
-void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Answer to adopt confirmation (CZ_JOIN_BABY).
/// 01f7 <account id>.L <char id>.L <answer>.L
/// answer:
/// 0 = rejected
/// 1 = accepted
-void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) {
+static void clif_parse_Adopt_reply(int fd, struct map_session_data *sd)
+{
int p1_id = RFIFOL(fd,2);
int p2_id = RFIFOL(fd,6);
int result = RFIFOL(fd,10);
@@ -16260,7 +16423,7 @@ void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) {
/// 1 = Boss is alive (position update) (BOSS_INFO_ALIVE).
/// 2 = Boss is alive (initial announce) (BOSS_INFO_ALIVE_WITHMSG).
/// 3 = Boss is dead (BOSS_INFO_DEAD).
-void clif_bossmapinfo(int fd, struct mob_data *md, short flag)
+static void clif_bossmapinfo(int fd, struct mob_data *md, short flag)
{
WFIFOHEAD(fd,70);
memset(WFIFOP(fd,0),0,70);
@@ -16294,10 +16457,11 @@ void clif_bossmapinfo(int fd, struct mob_data *md, short flag)
WFIFOSET(fd,70);
}
-void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ViewPlayerEquip(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Requesting equip of a player (CZ_EQUIPWIN_MICROSCOPE).
/// 02d6 <account id>.L
-void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd) {
+static void clif_parse_ViewPlayerEquip(int fd, struct map_session_data *sd)
+{
int charid = RFIFOL(fd, 2);
struct map_session_data* tsd = map->id2sd(charid);
@@ -16313,7 +16477,7 @@ void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd) {
}
}
-void clif_parse_cz_config(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_cz_config(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Receive configurations (CZ_CONFIG).
/// 02d8 <type>.L <value>.L
/// type:
@@ -16323,7 +16487,7 @@ void clif_parse_cz_config(int fd, struct map_session_data *sd) __attribute__((no
/// value:
/// 0 = disabled
/// 1 = enabled
-void clif_parse_cz_config(int fd, struct map_session_data *sd)
+static void clif_parse_cz_config(int fd, struct map_session_data *sd)
{
enum CZ_CONFIG type = RFIFOL(fd, 2);
int flag = RFIFOL(fd, 6);
@@ -16355,12 +16519,12 @@ void clif_parse_cz_config(int fd, struct map_session_data *sd)
clif->zc_config(sd, type, flag);
}
-void clif_parse_PartyTick(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_PartyTick(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change party invitation tick.
/// value:
/// 0 = disabled
/// 1 = enabled
-void clif_parse_PartyTick(int fd, struct map_session_data* sd)
+static void clif_parse_PartyTick(int fd, struct map_session_data *sd)
{
bool flag = RFIFOB(fd,6)?true:false;
sd->status.allow_party = flag;
@@ -16374,7 +16538,7 @@ void clif_parse_PartyTick(int fd, struct map_session_data* sd)
/// 02b1 <packet len>.W <num>.L { <quest id>.L <active>.B }*num
/// 097a <packet len>.W <num>.L { <quest id>.L <active>.B <remaining time>.L <time>.L <count>.W { <mob_id>.L <killed>.W <total>.W <mob name>.24B }*count }*num
/// 09f8 <packet len>.W <num>.L { <quest id>.L <active>.B <remaining time>.L <time>.L <count>.W { <hunt identification>.L <mob type>.L <mob_id>.L <min level>.L <max level>.L <killed>.W <total>.W <mob name>.24B }*count }*num
-void clif_quest_send_list(struct map_session_data *sd)
+static void clif_quest_send_list(struct map_session_data *sd)
{
int i, len, real_len;
uint8 *buf = NULL;
@@ -16435,7 +16599,7 @@ void clif_quest_send_list(struct map_session_data *sd)
/// Sends list of all quest missions (ZC_ALL_QUEST_MISSION).
/// 02b2 <packet len>.W <num>.L { <quest id>.L <start time>.L <expire time>.L <mobs>.W { <mob id>.L <mob count>.W <mob name>.24B }*3 }*num
-void clif_quest_send_mission(struct map_session_data *sd)
+static void clif_quest_send_mission(struct map_session_data *sd)
{
int fd = sd->fd;
int i, j;
@@ -16470,7 +16634,7 @@ void clif_quest_send_mission(struct map_session_data *sd)
/// Notification about a new quest (ZC_ADD_QUEST).
/// 02b3 <quest id>.L <active>.B <start time>.L <expire time>.L <mobs>.W { <mob id>.L <mob count>.W <mob name>.24B }*3
/// 09f9 <quest id>.L <active>.B <start time>.L <expire time>.L <mobs>.W { <hunt identification>.L <mob type>.L <mob id>.L <min level>.L <max level>.L <mob count>.W <mob name>.24B }*3
-void clif_quest_add(struct map_session_data *sd, struct quest *qd)
+static void clif_quest_add(struct map_session_data *sd, struct quest *qd)
{
int i, len;
uint8 *buf = NULL;
@@ -16520,7 +16684,8 @@ void clif_quest_add(struct map_session_data *sd, struct quest *qd)
/// Notification about a quest being removed (ZC_DEL_QUEST).
/// 02b4 <quest id>.L
-void clif_quest_delete(struct map_session_data *sd, int quest_id) {
+static void clif_quest_delete(struct map_session_data *sd, int quest_id)
+{
int fd;
nullpo_retv(sd);
@@ -16534,7 +16699,7 @@ void clif_quest_delete(struct map_session_data *sd, int quest_id) {
/// Notification of an update to the hunting mission counter (ZC_UPDATE_MISSION_HUNT).
/// 02b5 <packet len>.W <mobs>.W { <quest id>.L <mob id>.L <total count>.W <current count>.W }*3
/// 09fa <packet len>.W <mobs>.W { <quest id>.L <hunt identification>.L <total count>.W <current count>.W }*3
-void clif_quest_update_objective(struct map_session_data *sd, struct quest *qd)
+static void clif_quest_update_objective(struct map_session_data *sd, struct quest *qd)
{
int i, len, real_len;
uint8 *buf = NULL;
@@ -16576,7 +16741,7 @@ void clif_quest_update_objective(struct map_session_data *sd, struct quest *qd)
/// Notification of an hunting mission counter just after quest is added (ZC_HUNTING_QUEST_INFO).
/// 08fe <packet len>.W { <quest id>.L <mob id>.L <total count>.W <current count>.W }*3
-void clif_quest_notify_objective(struct map_session_data *sd, struct quest *qd)
+static void clif_quest_notify_objective(struct map_session_data *sd, struct quest *qd)
{
#if PACKETVER >= 20150513
int i, len, real_len;
@@ -16613,16 +16778,18 @@ void clif_quest_notify_objective(struct map_session_data *sd, struct quest *qd)
#endif
}
-void clif_parse_questStateAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_questStateAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change the state of a quest (CZ_ACTIVE_QUEST).
/// 02b6 <quest id>.L <active>.B
-void clif_parse_questStateAck(int fd, struct map_session_data *sd) {
+static void clif_parse_questStateAck(int fd, struct map_session_data *sd)
+{
quest->update_status(sd, RFIFOL(fd,2), RFIFOB(fd,6)?Q_ACTIVE:Q_INACTIVE);
}
/// Notification about the change of a quest state (ZC_ACTIVE_QUEST).
/// 02b7 <quest id>.L <active>.B
-void clif_quest_update_status(struct map_session_data *sd, int quest_id, bool active) {
+static void clif_quest_update_status(struct map_session_data *sd, int quest_id, bool active)
+{
int fd;
nullpo_retv(sd);
@@ -16645,7 +16812,7 @@ void clif_quest_update_status(struct map_session_data *sd, int quest_id, bool ac
/// 1 = orange
/// 2 = green
/// 3 = purple
-void clif_quest_show_event(struct map_session_data *sd, struct block_list *bl, short state, short color)
+static void clif_quest_show_event(struct map_session_data *sd, struct block_list *bl, short state, short color)
{
#if PACKETVER >= 20090218
int fd;
@@ -16669,7 +16836,8 @@ void clif_quest_show_event(struct map_session_data *sd, struct block_list *bl, s
/// Notification about a mercenary status parameter change (ZC_MER_PAR_CHANGE).
/// 02a2 <var id>.W <value>.L
-void clif_mercenary_updatestatus(struct map_session_data *sd, int type) {
+static void clif_mercenary_updatestatus(struct map_session_data *sd, int type)
+{
struct mercenary_data *md;
struct status_data *mstatus;
int fd;
@@ -16735,7 +16903,8 @@ void clif_mercenary_updatestatus(struct map_session_data *sd, int type) {
/// 029b <id>.L <atk>.W <matk>.W <hit>.W <crit>.W <def>.W <mdef>.W <flee>.W <aspd>.W
/// <name>.24B <level>.W <hp>.L <maxhp>.L <sp>.L <maxsp>.L <expire time>.L <faith>.W
/// <calls>.L <kills>.L <atk range>.W
-void clif_mercenary_info(struct map_session_data *sd) {
+static void clif_mercenary_info(struct map_session_data *sd)
+{
int fd;
struct mercenary_data *md;
struct status_data *mstatus;
@@ -16791,7 +16960,7 @@ void clif_mercenary_info(struct map_session_data *sd) {
/// Mercenary skill tree (ZC_MER_SKILLINFO_LIST).
/// 029d <packet len>.W { <skill id>.W <type>.L <level>.W <sp cost>.W <attack range>.W <skill name>.24B <upgradeable>.B }*
-void clif_mercenary_skillblock(struct map_session_data *sd)
+static void clif_mercenary_skillblock(struct map_session_data *sd)
{
struct mercenary_data *md;
int fd, i, len = 4, j;
@@ -16826,12 +16995,12 @@ void clif_mercenary_skillblock(struct map_session_data *sd)
WFIFOSET(fd,len);
}
-void clif_parse_mercenary_action(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_mercenary_action(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke a mercenary menu action (CZ_MER_COMMAND).
/// 029f <command>.B
/// 1 = mercenary information
/// 2 = delete
-void clif_parse_mercenary_action(int fd, struct map_session_data* sd)
+static void clif_parse_mercenary_action(int fd, struct map_session_data *sd)
{
int option = RFIFOB(fd,2);
if (sd->md == NULL)
@@ -16847,7 +17016,7 @@ void clif_parse_mercenary_action(int fd, struct map_session_data* sd)
/// 1 = Your mercenary soldier has been killed.
/// 2 = Your mercenary soldier has been fired.
/// 3 = Your mercenary soldier has ran away.
-void clif_mercenary_message(struct map_session_data* sd, int message)
+static void clif_mercenary_message(struct map_session_data *sd, int message)
{
#if PACKETVER >= 20070227
clif->msgtable(sd, MSG_MER_FINISH + message);
@@ -16856,29 +17025,33 @@ void clif_mercenary_message(struct map_session_data* sd, int message)
/// Notification about the remaining time of a rental item (ZC_CASH_TIME_COUNTER).
/// 0298 <name id>.W <seconds>.L
-void clif_rental_time(int fd, int nameid, int seconds)
+static void clif_rental_time(int fd, int nameid, int seconds)
{ // '<ItemName>' item will disappear in <seconds/60> minutes.
- WFIFOHEAD(fd,packet_len(0x298));
- WFIFOW(fd,0) = 0x298;
- WFIFOW(fd,2) = nameid;
- WFIFOL(fd,4) = seconds;
- WFIFOSET(fd,packet_len(0x298));
+ struct PACKET_ZC_CASH_TIME_COUNTER p;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x298;
+ p.itemId = nameid;
+ p.seconds = seconds;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Deletes a rental item from client's inventory (ZC_CASH_ITEM_DELETE).
/// 0299 <index>.W <name id>.W
-void clif_rental_expired(int fd, int index, int nameid)
+static void clif_rental_expired(int fd, int index, int nameid)
{ // '<ItemName>' item has been deleted from the Inventory
- WFIFOHEAD(fd,packet_len(0x299));
- WFIFOW(fd,0) = 0x299;
- WFIFOW(fd,2) = index+2;
- WFIFOW(fd,4) = nameid;
- WFIFOSET(fd,packet_len(0x299));
+ struct PACKET_ZC_CASH_ITEM_DELETE p;
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x299;
+ p.index = index + 2;
+ p.itemId = nameid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Book Reading (ZC_READ_BOOK).
/// 0294 <book id>.L <page>.L
-void clif_readbook(int fd, int book_id, int page)
+static void clif_readbook(int fd, int book_id, int page)
{
WFIFOHEAD(fd,packet_len(0x294));
WFIFOW(fd,0) = 0x294;
@@ -16893,7 +17066,7 @@ void clif_readbook(int fd, int book_id, int page)
/// Updates HP bar of a camp member.
/// 02e0 <account id>.L <name>.24B <hp>.W <max hp>.W (ZC_BATTLEFIELD_NOTIFY_HP).
/// 0a0e <account id>.L <hp>.L <max hp>.L (ZC_BATTLEFIELD_NOTIFY_HP2)
-void clif_bg_hp(struct map_session_data *sd)
+static void clif_bg_hp(struct map_session_data *sd)
{
unsigned char buf[34];
@@ -16936,7 +17109,7 @@ void clif_bg_hp(struct map_session_data *sd)
/// Updates the position of a camp member on the minimap (ZC_BATTLEFIELD_NOTIFY_POSITION).
/// 02df <account id>.L <name>.24B <class>.W <x>.W <y>.W
-void clif_bg_xy(struct map_session_data *sd)
+static void clif_bg_xy(struct map_session_data *sd)
{
unsigned char buf[36];
nullpo_retv(sd);
@@ -16951,7 +17124,7 @@ void clif_bg_xy(struct map_session_data *sd)
clif->send(buf, packet_len(0x2df), &sd->bl, BG_SAMEMAP_WOS);
}
-void clif_bg_xy_remove(struct map_session_data *sd)
+static void clif_bg_xy_remove(struct map_session_data *sd)
{
unsigned char buf[36];
nullpo_retv(sd);
@@ -16968,7 +17141,7 @@ void clif_bg_xy_remove(struct map_session_data *sd)
/// Notifies clients of a battleground message (ZC_BATTLEFIELD_CHAT).
/// 02dc <packet len>.W <account id>.L <name>.24B <message>.?B
-void clif_bg_message(struct battleground_data *bgd, int src_id, const char *name, const char *mes)
+static void clif_bg_message(struct battleground_data *bgd, int src_id, const char *name, const char *mes)
{
struct map_session_data *sd;
unsigned char *buf;
@@ -17005,8 +17178,8 @@ void clif_bg_message(struct battleground_data *bgd, int src_id, const char *name
* @param fd The incoming file descriptor.
* @param sd The related character.
*/
-void clif_parse_BattleChat(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_BattleChat(int fd, struct map_session_data *sd)
+static void clif_parse_BattleChat(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BattleChat(int fd, struct map_session_data *sd)
{
const struct packet_chat_message *packet = RP2PTR(fd);
char message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1];
@@ -17019,7 +17192,8 @@ void clif_parse_BattleChat(int fd, struct map_session_data *sd)
/// Notifies client of a battleground score change (ZC_BATTLEFIELD_NOTIFY_POINT).
/// 02de <camp A points>.W <camp B points>.W
-void clif_bg_updatescore(int16 m) {
+static void clif_bg_updatescore(int16 m)
+{
struct block_list bl;
unsigned char buf[6];
@@ -17033,7 +17207,8 @@ void clif_bg_updatescore(int16 m) {
clif->send(buf,packet_len(0x2de),&bl,ALL_SAMEMAP);
}
-void clif_bg_updatescore_single(struct map_session_data *sd) {
+static void clif_bg_updatescore_single(struct map_session_data *sd)
+{
int fd;
nullpo_retv(sd);
fd = sd->fd;
@@ -17047,7 +17222,7 @@ void clif_bg_updatescore_single(struct map_session_data *sd) {
/// Battleground camp belong-information (ZC_BATTLEFIELD_NOTIFY_CAMPINFO).
/// 02dd <account id>.L <name>.24B <camp>.W
-void clif_sendbgemblem_area(struct map_session_data *sd)
+static void clif_sendbgemblem_area(struct map_session_data *sd)
{
unsigned char buf[33];
nullpo_retv(sd);
@@ -17059,7 +17234,7 @@ void clif_sendbgemblem_area(struct map_session_data *sd)
clif->send(buf,packet_len(0x2dd), &sd->bl, AREA);
}
-void clif_sendbgemblem_single(int fd, struct map_session_data *sd)
+static void clif_sendbgemblem_single(int fd, struct map_session_data *sd)
{
nullpo_retv(sd);
WFIFOHEAD(fd,32);
@@ -17072,7 +17247,7 @@ void clif_sendbgemblem_single(int fd, struct map_session_data *sd)
/// Custom Fonts (ZC_NOTIFY_FONT).
/// 02ef <account_id>.L <font id>.W
-void clif_font(struct map_session_data *sd)
+static void clif_font(struct map_session_data *sd)
{
#if PACKETVER >= 20080102
unsigned char buf[8];
@@ -17087,7 +17262,8 @@ void clif_font(struct map_session_data *sd)
/*==========================================
* Instancing Window
*------------------------------------------*/
-int clif_instance(int instance_id, int type, int flag) {
+static int clif_instance(int instance_id, int type, int flag)
+{
struct map_session_data *sd = NULL;
unsigned char buf[255];
enum send_target target = PARTY;
@@ -17159,7 +17335,7 @@ int clif_instance(int instance_id, int type, int flag) {
return 0;
}
-void clif_instance_join(int fd, int instance_id)
+static void clif_instance_join(int fd, int instance_id)
{
if( instance->list[instance_id].idle_timer != INVALID_TIMER ) {
WFIFOHEAD(fd,packet_len(0x02CD));
@@ -17184,7 +17360,7 @@ void clif_instance_join(int fd, int instance_id)
}
}
-void clif_instance_leave(int fd)
+static void clif_instance_leave(int fd)
{
WFIFOHEAD(fd,packet_len(0x02CE));
WFIFOW(fd,0) = 0x02ce;
@@ -17194,25 +17370,25 @@ void clif_instance_leave(int fd)
/// Notifies clients about item picked up by a party member (ZC_ITEM_PICKUP_PARTY).
/// 02b8 <account id>.L <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.W <item type>.B
-void clif_party_show_picker(struct map_session_data * sd, struct item * item_data)
+static void clif_party_show_picker(struct map_session_data *sd, struct item *item_data)
{
#if PACKETVER >= 20071002
- unsigned char buf[22];
struct item_data* id;
+ struct PACKET_ZC_ITEM_PICKUP_PARTY p;
nullpo_retv(sd);
nullpo_retv(item_data);
id = itemdb->search(item_data->nameid);
- WBUFW(buf,0) = 0x2b8;
- WBUFL(buf,2) = sd->status.account_id;
- WBUFW(buf,6) = item_data->nameid;
- WBUFB(buf,8) = item_data->identify;
- WBUFB(buf,9) = item_data->attribute;
- WBUFB(buf,10) = item_data->refine;
- clif->addcards(WBUFP(buf,11), item_data);
- WBUFW(buf,19) = id->equip; // equip location
- WBUFB(buf,21) = itemtype(id->type); // item type
- clif->send(buf, packet_len(0x2b8), &sd->bl, PARTY_SAMEMAP_WOS);
+ p.packetType = 0x2b8;
+ p.AID = sd->status.account_id;
+ p.itemId = item_data->nameid;
+ p.identified = item_data->identify;
+ p.damaged = item_data->attribute;
+ p.refine = item_data->refine;
+ clif->addcards(&p.slot, item_data);
+ p.location = id->equip; // equip location
+ p.itemType = itemtype(id->type); // item type
+ clif->send(&p, sizeof(p), &sd->bl, PARTY_SAMEMAP_WOS);
#endif
}
@@ -17223,7 +17399,7 @@ void clif_party_show_picker(struct map_session_data * sd, struct item * item_dat
/// exp type:
/// 0 = normal exp gain/loss
/// 1 = quest exp gain/loss
-void clif_displayexp(struct map_session_data *sd, uint64 exp, char type, bool is_quest)
+static void clif_displayexp(struct map_session_data *sd, uint64 exp, char type, bool is_quest)
{
int fd;
@@ -17261,7 +17437,7 @@ void clif_displayexp(struct map_session_data *sd, uint64 exp, char type, bool is
/// 3 = Decremental counter (1 tick/second), 'value' specifies start value (stops when reaching 0, displays at most 2 digits).
/// value:
/// Except for type 3 it is interpreted as seconds for displaying as DD:HH:MM:SS, HH:MM:SS, MM:SS or SS (leftmost '00' is not displayed).
-void clif_showdigit(struct map_session_data* sd, unsigned char type, int value)
+static void clif_showdigit(struct map_session_data *sd, unsigned char type, int value)
{
nullpo_retv(sd);
WFIFOHEAD(sd->fd, packet_len(0x1b1));
@@ -17271,7 +17447,7 @@ void clif_showdigit(struct map_session_data* sd, unsigned char type, int value)
WFIFOSET(sd->fd, packet_len(0x1b1));
}
-void clif_parse_LessEffect(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_LessEffect(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Notification of the state of client command /effect (CZ_LESSEFFECT).
/// 021d <state>.L
/// state:
@@ -17284,16 +17460,16 @@ void clif_parse_LessEffect(int fd, struct map_session_data* sd) __attribute__((n
/// constructed, this state tracking was rendered useless,
/// as the only skill unit, that is sent with 0x1c9 is
/// Graffiti.
-void clif_parse_LessEffect(int fd, struct map_session_data* sd)
+static void clif_parse_LessEffect(int fd, struct map_session_data *sd)
{
int isLess = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]);
sd->state.lesseffect = ( isLess != 0 );
}
-void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// S 07e4 <length>.w <option>.l <val>.l {<index>.w <amount>.w).4b*
-void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd)
+static void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd)
{
int n = ((int)RFIFOW(fd, 2) - 12) / 4;
int type = RFIFOL(fd,4);
@@ -17344,7 +17520,8 @@ void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd)
/*==========================================
* Elemental System
*==========================================*/
-void clif_elemental_updatestatus(struct map_session_data *sd, int type) {
+static void clif_elemental_updatestatus(struct map_session_data *sd, int type)
+{
struct elemental_data *ed;
struct status_data *estatus;
int fd;
@@ -17374,7 +17551,8 @@ void clif_elemental_updatestatus(struct map_session_data *sd, int type) {
WFIFOSET(fd,8);
}
-void clif_elemental_info(struct map_session_data *sd) {
+static void clif_elemental_info(struct map_session_data *sd)
+{
int fd;
struct elemental_data *ed;
struct status_data *estatus;
@@ -17400,7 +17578,7 @@ void clif_elemental_info(struct map_session_data *sd) {
/// Opens preparation window for buying store (ZC_OPEN_BUYING_STORE).
/// 0810 <slots>.B
-void clif_buyingstore_open(struct map_session_data* sd)
+static void clif_buyingstore_open(struct map_session_data *sd)
{
#if PACKETVER >= 20100303
int fd;
@@ -17414,47 +17592,48 @@ void clif_buyingstore_open(struct map_session_data* sd)
#endif
}
-void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to create a buying store (CZ_REQ_OPEN_BUYING_STORE).
/// 0811 <packet len>.W <limit zeny>.L <result>.B <store name>.80B { <name id>.W <amount>.W <price>.L }*
/// result:
/// 0 = cancel
/// 1 = open
-void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) {
- const unsigned int blocksize = 8;
- const uint8 *itemlist;
+static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data *sd)
+{
+ const unsigned int blocksize = sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub);
+ const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist;
char storename[MESSAGE_SIZE];
unsigned char result;
int zenylimit;
int count, packet_len;
- struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
+ const struct PACKET_CZ_REQ_OPEN_BUYING_STORE *p = RFIFOP(fd, 0);
- packet_len = RFIFOW(fd,info->pos[0]);
+ packet_len = p->packetLength;
// TODO: Make this check global for all variable length packets.
- if( packet_len < 89 )
+ if (packet_len < sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE))
{// minimum packet length
- ShowError("clif_parse_ReqOpenBuyingStore: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", 89U, packet_len, sd->bl.id);
+ ShowError("clif_parse_ReqOpenBuyingStore: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", (uint32)sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE), packet_len, sd->bl.id);
return;
}
- zenylimit = RFIFOL(fd,info->pos[1]);
- result = RFIFOL(fd,info->pos[2]);
- safestrncpy(storename, RFIFOP(fd,info->pos[3]), sizeof(storename));
- itemlist = RFIFOP(fd,info->pos[4]);
+ zenylimit = p->zenyLimit;
+ result = p->result;
+ safestrncpy(storename, p->storeName, sizeof(storename));
+ itemlist = &p->items[0];
// so that buyingstore_create knows, how many elements it has access to
- packet_len-= info->pos[4];
+ packet_len -= sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE);
if (packet_len < 0)
return;
- if( packet_len%blocksize )
+ if (packet_len % blocksize)
{
ShowError("clif_parse_ReqOpenBuyingStore: Unexpected item list size %d (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize);
return;
}
- count = packet_len/blocksize;
+ count = packet_len / blocksize;
buyingstore->create(sd, zenylimit, result, storename, itemlist, count);
}
@@ -17464,9 +17643,10 @@ void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) {
/// result:
/// 1 = "Failed to open buying store." (0x6cd, MSI_BUYINGSTORE_OPEN_FAILED)
/// 2 = "Total amount of then possessed items exceeds the weight limit by <weight/10-maxweight*90%>. Please re-enter." (0x6ce, MSI_BUYINGSTORE_OVERWEIGHT)
-/// 8 = "No sale (purchase) information available." (0x705)
+/// 9 = "No sale (purchase) information available." (0x705)
+/// 10 = "Cant open store at this location." (0xC9D)
/// ? = nothing
-void clif_buyingstore_open_failed(struct map_session_data* sd, unsigned short result, unsigned int weight)
+static void clif_buyingstore_open_failed(struct map_session_data *sd, unsigned short result, unsigned int weight)
{
#if PACKETVER >= 20100420
int fd;
@@ -17483,33 +17663,37 @@ void clif_buyingstore_open_failed(struct map_session_data* sd, unsigned short re
/// Notification, that the requested buying store was created (ZC_MYITEMLIST_BUYING_STORE).
/// 0813 <packet len>.W <account id>.L <limit zeny>.L { <price>.L <count>.W <type>.B <name id>.W }*
-void clif_buyingstore_myitemlist(struct map_session_data* sd)
+static void clif_buyingstore_myitemlist(struct map_session_data *sd)
{
int fd;
unsigned int i;
+ struct PACKET_ZC_MYITEMLIST_BUYING_STORE *p;
+ int len;
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd,12+sd->buyingstore.slots*9);
- WFIFOW(fd,0) = 0x813;
- WFIFOW(fd,2) = 12+sd->buyingstore.slots*9;
- WFIFOL(fd,4) = sd->bl.id;
- WFIFOL(fd,8) = sd->buyingstore.zenylimit;
+ len = sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE) + sd->buyingstore.slots * sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x813;
+ p->packetLength = len;
+ p->AID = sd->bl.id;
+ p->zenyLimit = sd->buyingstore.zenylimit;
- for( i = 0; i < sd->buyingstore.slots; i++ )
+ for (i = 0; i < sd->buyingstore.slots; i++)
{
- WFIFOL(fd,12+i*9) = sd->buyingstore.items[i].price;
- WFIFOW(fd,16+i*9) = sd->buyingstore.items[i].amount;
- WFIFOB(fd,18+i*9) = itemtype(itemdb_type(sd->buyingstore.items[i].nameid));
- WFIFOW(fd,19+i*9) = sd->buyingstore.items[i].nameid;
+ p->items[i].price = sd->buyingstore.items[i].price;
+ p->items[i].amount = sd->buyingstore.items[i].amount;
+ p->items[i].itemType = itemtype(itemdb_type(sd->buyingstore.items[i].nameid));
+ p->items[i].itemId = sd->buyingstore.items[i].nameid;
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
/// Notifies clients in area of a buying store (ZC_BUYING_STORE_ENTRY).
/// 0814 <account id>.L <store name>.80B
-void clif_buyingstore_entry(struct map_session_data* sd)
+static void clif_buyingstore_entry(struct map_session_data *sd)
{
#if PACKETVER >= 20100420
uint8 buf[86];
@@ -17522,7 +17706,7 @@ void clif_buyingstore_entry(struct map_session_data* sd)
clif->send(buf, packet_len(0x814), &sd->bl, AREA_WOS);
#endif
}
-void clif_buyingstore_entry_single(struct map_session_data* sd, struct map_session_data* pl_sd)
+static void clif_buyingstore_entry_single(struct map_session_data *sd, struct map_session_data *pl_sd)
{
#if PACKETVER >= 20100420
int fd;
@@ -17537,16 +17721,17 @@ void clif_buyingstore_entry_single(struct map_session_data* sd, struct map_sessi
#endif
}
-void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to close own buying store (CZ_REQ_CLOSE_BUYING_STORE).
/// 0815
-void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data* sd) {
+static void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data *sd)
+{
buyingstore->close(sd);
}
/// Notifies clients in area that a buying store was closed (ZC_DISAPPEAR_BUYING_STORE_ENTRY).
/// 0816 <account id>.L
-void clif_buyingstore_disappear_entry(struct map_session_data* sd)
+static void clif_buyingstore_disappear_entry(struct map_session_data *sd)
{
#if PACKETVER >= 20100309
uint8 buf[6];
@@ -17559,7 +17744,7 @@ void clif_buyingstore_disappear_entry(struct map_session_data* sd)
#endif
}
-void clif_buyingstore_disappear_entry_single(struct map_session_data* sd, struct map_session_data* pl_sd)
+static void clif_buyingstore_disappear_entry_single(struct map_session_data *sd, struct map_session_data *pl_sd)
{
#if PACKETVER >= 20100309
int fd;
@@ -17576,7 +17761,7 @@ void clif_buyingstore_disappear_entry_single(struct map_session_data* sd, struct
/// Request to open someone else's buying store (CZ_REQ_CLICK_TO_BUYING_STORE).
/// 0817 <account id>.L
-void clif_parse_ReqClickBuyingStore(int fd, struct map_session_data* sd)
+static void clif_parse_ReqClickBuyingStore(int fd, struct map_session_data *sd)
{
int account_id;
@@ -17587,66 +17772,70 @@ void clif_parse_ReqClickBuyingStore(int fd, struct map_session_data* sd)
/// Sends buying store item list (ZC_ACK_ITEMLIST_BUYING_STORE).
/// 0818 <packet len>.W <account id>.L <store id>.L <limit zeny>.L { <price>.L <amount>.W <type>.B <name id>.W }*
-void clif_buyingstore_itemlist(struct map_session_data* sd, struct map_session_data* pl_sd)
+static void clif_buyingstore_itemlist(struct map_session_data *sd, struct map_session_data *pl_sd)
{
int fd;
unsigned int i;
+ struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE *p;
+ int len;
nullpo_retv(sd);
nullpo_retv(pl_sd);
fd = sd->fd;
- WFIFOHEAD(fd,16+pl_sd->buyingstore.slots*9);
- WFIFOW(fd,0) = 0x818;
- WFIFOW(fd,2) = 16+pl_sd->buyingstore.slots*9;
- WFIFOL(fd,4) = pl_sd->bl.id;
- WFIFOL(fd,8) = pl_sd->buyer_id;
- WFIFOL(fd,12) = pl_sd->buyingstore.zenylimit;
-
- for( i = 0; i < pl_sd->buyingstore.slots; i++ )
+ len = sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE) + pl_sd->buyingstore.slots * sizeof(struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub);
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x818;
+ p->packetLength = len;
+ p->AID = pl_sd->bl.id;
+ p->storeId = pl_sd->buyer_id;
+ p->zenyLimit = pl_sd->buyingstore.zenylimit;
+
+ for (i = 0; i < pl_sd->buyingstore.slots; i++)
{
- WFIFOL(fd,16+i*9) = pl_sd->buyingstore.items[i].price;
- WFIFOW(fd,20+i*9) = pl_sd->buyingstore.items[i].amount; // TODO: Figure out, if no longer needed items (amount == 0) are listed on official.
- WFIFOB(fd,22+i*9) = itemtype(itemdb_type(pl_sd->buyingstore.items[i].nameid));
- WFIFOW(fd,23+i*9) = pl_sd->buyingstore.items[i].nameid;
+ p->items[i].price = pl_sd->buyingstore.items[i].price;
+ p->items[i].amount = pl_sd->buyingstore.items[i].amount; // TODO: Figure out, if no longer needed items (amount == 0) are listed on official.
+ p->items[i].itemType = itemtype(itemdb_type(pl_sd->buyingstore.items[i].nameid));
+ p->items[i].itemId = pl_sd->buyingstore.items[i].nameid;
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
-void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to sell items to a buying store (CZ_REQ_TRADE_BUYING_STORE).
/// 0819 <packet len>.W <account id>.L <store id>.L { <index>.W <name id>.W <amount>.W }*
-void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) {
- const unsigned int blocksize = 6;
- const uint8 *itemlist;
+static void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data *sd)
+{
+ const unsigned int blocksize = sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub);
+ const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub *itemlist;
int account_id;
unsigned int buyer_id;
int count, packet_len;
- struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-
- packet_len = RFIFOW(fd,info->pos[0]);
+ const struct PACKET_CZ_REQ_TRADE_BUYING_STORE *p = RFIFOP(fd, 0);
+ packet_len = p->packetLength;
- if( packet_len < 12 )
+ if (packet_len < sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE))
{// minimum packet length
- ShowError("clif_parse_ReqTradeBuyingStore: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", 12U, packet_len, sd->bl.id);
+ ShowError("clif_parse_ReqTradeBuyingStore: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", (uint32)sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE), packet_len, sd->bl.id);
return;
}
- account_id = RFIFOL(fd,info->pos[1]);
- buyer_id = RFIFOL(fd,info->pos[2]);
- itemlist = RFIFOP(fd,info->pos[3]);
+ account_id = p->AID;
+ buyer_id = p->storeId;
+ itemlist = &p->items[0];
// so that buyingstore_trade knows, how many elements it has access to
- packet_len-= info->pos[3];
+ packet_len -= sizeof(struct PACKET_CZ_REQ_TRADE_BUYING_STORE);
if (packet_len < 0)
return;
- if( packet_len%blocksize )
+ if (packet_len % blocksize)
{
ShowError("clif_parse_ReqTradeBuyingStore: Unexpected item list size %d (account_id=%d, buyer_id=%d, block size=%u)\n", packet_len, sd->bl.id, account_id, blocksize);
return;
}
- count = packet_len/blocksize;
+ count = packet_len / blocksize;
buyingstore->trade(sd, account_id, buyer_id, itemlist, count);
}
@@ -17657,7 +17846,7 @@ void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) {
/// 3 = "All items within the buy limit were purchased." (0x6cf, MSI_BUYINGSTORE_TRADE_OVERLIMITZENY)
/// 4 = "All items were purchased." (0x6d0, MSI_BUYINGSTORE_TRADE_BUYCOMPLETE)
/// ? = nothing
-void clif_buyingstore_trade_failed_buyer(struct map_session_data* sd, short result)
+static void clif_buyingstore_trade_failed_buyer(struct map_session_data *sd, short result)
{
#if PACKETVER >= 20100420
int fd;
@@ -17673,31 +17862,26 @@ void clif_buyingstore_trade_failed_buyer(struct map_session_data* sd, short resu
/// Updates the zeny limit and an item in the buying store item list (ZC_UPDATE_ITEM_FROM_BUYING_STORE).
/// 081b <name id>.W <amount>.W <limit zeny>.L
-void clif_buyingstore_update_item(struct map_session_data* sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny)
+static void clif_buyingstore_update_item(struct map_session_data *sd, int nameid, unsigned short amount, uint32 char_id, int zeny)
{
int fd;
-#if PACKETVER < 20141016 // TODO : not sure for client date [Napster]
- const int cmd = 0x81b;
-#else
- const int cmd = 0x9e6;
-#endif
- const int len = packet_len(cmd);
+ struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE p;
nullpo_retv(sd);
+
fd = sd->fd;
- WFIFOHEAD(fd, len);
- WFIFOW(fd, 0) = cmd;
- WFIFOW(fd, 2) = nameid;
- WFIFOW(fd, 4) = amount; // amount of nameid received
-#if PACKETVER < 20141016
- WFIFOL(fd, 6) = sd->buyingstore.zenylimit;
-#else
- WFIFOL(fd, 6) = zeny; // zeny
- WFIFOL(fd, 10) = sd->buyingstore.zenylimit;
- WFIFOL(fd, 14) = char_id; // GID
- WFIFOL(fd, 18) = (int)time(NULL); // date
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = buyingStoreUpdateItemType;
+ p.itemId = nameid;
+ p.amount = amount;
+ p.zenyLimit = sd->buyingstore.zenylimit;
+#if PACKETVER >= 20141016
+ p.zeny = zeny;
+ p.charId = char_id; // GID
+ p.updateTime = (int)time(NULL);
#endif
- WFIFOSET(fd, len);
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
}
/// Deletes item from inventory, that was sold to a buying store (ZC_ITEM_DELETE_BUYING_STORE).
@@ -17706,7 +17890,7 @@ void clif_buyingstore_update_item(struct map_session_data* sd, unsigned short na
/// "%s (%d) were sold at %dz." (0x6d2, MSI_BUYINGSTORE_TRADE_SELLCOMPLETE)
///
/// NOTE: This function has to be called _instead_ of clif_delitem/clif_dropitem.
-void clif_buyingstore_delete_item(struct map_session_data* sd, short index, unsigned short amount, int price)
+static void clif_buyingstore_delete_item(struct map_session_data *sd, short index, unsigned short amount, int price)
{
#if PACKETVER >= 20100420
int fd;
@@ -17729,22 +17913,24 @@ void clif_buyingstore_delete_item(struct map_session_data* sd, short index, unsi
/// 6 = "The trade failed, because the entered amount of item %s is higher, than the buyer is willing to buy." (0x6d3, MSI_BUYINGSTORE_TRADE_OVERCOUNT)
/// 7 = "The trade failed, because the buyer is lacking required balance." (0x6d1, MSI_BUYINGSTORE_TRADE_LACKBUYERZENY)
/// ? = nothing
-void clif_buyingstore_trade_failed_seller(struct map_session_data* sd, short result, unsigned short nameid)
+static void clif_buyingstore_trade_failed_seller(struct map_session_data *sd, short result, int nameid)
{
#if PACKETVER >= 20100420
int fd;
+ struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER p;
nullpo_retv(sd);
fd = sd->fd;
- WFIFOHEAD(fd,packet_len(0x824));
- WFIFOW(fd,0) = 0x824;
- WFIFOW(fd,2) = result;
- WFIFOW(fd,4) = nameid;
- WFIFOSET(fd,packet_len(0x824));
+ WFIFOHEAD(fd, sizeof(p));
+ p.packetType = 0x824;
+ p.result = result;
+ p.itemId = nameid;
+ memcpy(WFIFOP(fd, 0), &p, sizeof(p));
+ WFIFOSET(fd, sizeof(p));
#endif
}
-void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_SearchStoreInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Search Store Info System
///
@@ -17757,52 +17943,67 @@ void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) __attribute
/// NOTE: The client determines the item ids by specifying a name and optionally,
/// amount of card slots. If the client does not know about the item it
/// cannot be searched.
-void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) {
- const unsigned int blocksize = 2;
- const uint8* itemlist;
- const uint8* cardlist;
+static void clif_parse_SearchStoreInfo(int fd, struct map_session_data *sd)
+{
+ const unsigned int blocksize = sizeof(struct PACKET_CZ_SEARCH_STORE_INFO_item);
+ const struct PACKET_CZ_SEARCH_STORE_INFO_item* itemlist;
+ const struct PACKET_CZ_SEARCH_STORE_INFO_item* cardlist;
unsigned char type;
unsigned int min_price, max_price;
int packet_len, count, item_count, card_count;
- struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
+ int i;
+ const struct PACKET_CZ_SEARCH_STORE_INFO *p = RFIFOP(fd, 0);
+ uint32 *items_list;
+ uint32 *cards_list;
- packet_len = RFIFOW(fd,info->pos[0]);
+ packet_len = p->packetLength;
- if( packet_len < 15 )
+ if (packet_len < sizeof(struct PACKET_CZ_SEARCH_STORE_INFO))
{// minimum packet length
- ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", 15U, packet_len, sd->bl.id);
+ ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", (uint32)sizeof(struct PACKET_CZ_SEARCH_STORE_INFO), packet_len, sd->bl.id);
return;
}
- type = RFIFOB(fd,info->pos[1]);
- max_price = RFIFOL(fd,info->pos[2]);
- min_price = RFIFOL(fd,info->pos[3]);
- item_count = RFIFOB(fd,info->pos[4]);
- card_count = RFIFOB(fd,info->pos[5]);
- itemlist = RFIFOP(fd,info->pos[6]);
+ type = p->searchType;
+ max_price = p->maxPrice;
+ min_price = p->minPrice;
+ item_count = p->itemsCount;
+ card_count = p->cardsCount;
+ itemlist = &p->items[0];
// check, if there is enough data for the claimed count of items
- packet_len-= info->pos[6];
+ packet_len -= sizeof(struct PACKET_CZ_SEARCH_STORE_INFO);
if (packet_len < 0)
return;
- if( packet_len%blocksize )
+ if (packet_len % blocksize)
{
ShowError("clif_parse_SearchStoreInfo: Unexpected item list size %d (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize);
return;
}
- count = packet_len/blocksize;
+ count = packet_len / blocksize;
- if( count < item_count+card_count )
+ if (count < item_count + card_count)
{
- ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected count=%d, count=%d, account_id=%d).\n", item_count+card_count, count, sd->bl.id);
+ ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected count=%d, count=%d, account_id=%d).\n", item_count + card_count, count, sd->bl.id);
return;
}
- cardlist = RFIFOP(fd, info->pos[6] + blocksize * item_count);
+ cardlist = RFIFOP(fd, sizeof(struct PACKET_CZ_SEARCH_STORE_INFO) + blocksize * item_count);
- searchstore->query(sd, type, min_price, max_price, (const unsigned short*)itemlist, item_count, (const unsigned short*)cardlist, card_count);
+ items_list = aMalloc(sizeof(uint32) * item_count);
+ cards_list = aMalloc(sizeof(uint32) * card_count);
+ for (i = 0; i < item_count; i ++) {
+ items_list[i] = itemlist[i].itemId;
+ }
+ for (i = 0; i < card_count; i ++) {
+ cards_list[i] = cardlist[i].itemId;
+ }
+ // TODO: add search by item options.
+ searchstore->query(sd, type, min_price, max_price, items_list, item_count, cards_list, card_count);
+ aFree(items_list);
+ aFree(cards_list);
}
/// Results for a store search request (ZC_SEARCH_STORE_INFO_ACK).
@@ -17813,40 +18014,40 @@ void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) {
/// is next page:
/// 0 = no "next" label
/// 1 = "next" label to retrieve more results
-void clif_search_store_info_ack(struct map_session_data* sd)
+static void clif_search_store_info_ack(struct map_session_data *sd)
{
-#if PACKETVER >= 20150226
- const unsigned int blocksize = MESSAGE_SIZE + 26 + 5 * MAX_ITEM_OPTIONS;
-#else
- const unsigned int blocksize = MESSAGE_SIZE + 26;
-#endif
+ const unsigned int blocksize = sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub);
int fd;
unsigned int i, start, end;
+ struct PACKET_ZC_SEARCH_STORE_INFO_ACK *p;
+ int len;
nullpo_retv(sd);
fd = sd->fd;
- start = sd->searchstore.pages*SEARCHSTORE_RESULTS_PER_PAGE;
- end = min(sd->searchstore.count, start+SEARCHSTORE_RESULTS_PER_PAGE);
+ start = sd->searchstore.pages * SEARCHSTORE_RESULTS_PER_PAGE;
+ end = min(sd->searchstore.count, start + SEARCHSTORE_RESULTS_PER_PAGE);
- WFIFOHEAD(fd,7+(end-start)*blocksize);
- WFIFOW(fd,0) = 0x836;
- WFIFOW(fd,2) = 7+(end-start)*blocksize;
- WFIFOB(fd,4) = !sd->searchstore.pages;
- WFIFOB(fd,5) = searchstore->querynext(sd);
- WFIFOB(fd,6) = (unsigned char)min(sd->searchstore.uses, UINT8_MAX);
-
- for( i = start; i < end; i++ ) {
+ len = sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK) + (end - start) * blocksize;
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x836;
+ p->packetLength = len;
+ p->firstPage = !sd->searchstore.pages;
+ p->nextPage = searchstore->querynext(sd);
+ p->usesCount = (unsigned char)min(sd->searchstore.uses, UINT8_MAX);
+
+ for (i = start; i < end; i++) {
struct s_search_store_info_item* ssitem = &sd->searchstore.items[i];
struct item it;
- WFIFOL(fd,i*blocksize+ 7) = ssitem->store_id;
- WFIFOL(fd,i*blocksize+11) = ssitem->account_id;
- memcpy(WFIFOP(fd,i*blocksize+15), ssitem->store_name, MESSAGE_SIZE);
- WFIFOW(fd,i*blocksize+15+MESSAGE_SIZE) = ssitem->nameid;
- WFIFOB(fd,i*blocksize+17+MESSAGE_SIZE) = itemtype(itemdb_type(ssitem->nameid));
- WFIFOL(fd,i*blocksize+18+MESSAGE_SIZE) = ssitem->price;
- WFIFOW(fd,i*blocksize+22+MESSAGE_SIZE) = ssitem->amount;
- WFIFOB(fd,i*blocksize+24+MESSAGE_SIZE) = ssitem->refine;
+ p->items[i].storeId = ssitem->store_id;
+ p->items[i].AID = ssitem->account_id;
+ memcpy(&p->items[i].shopName, ssitem->store_name, MESSAGE_SIZE);
+ p->items[i].itemId = ssitem->nameid;
+ p->items[i].itemType = itemtype(itemdb_type(ssitem->nameid));
+ p->items[i].price = ssitem->price;
+ p->items[i].amount = ssitem->amount;
+ p->items[i].refine = ssitem->refine;
// make-up an item for clif_addcards
memset(&it, 0, sizeof(it));
@@ -17854,14 +18055,14 @@ void clif_search_store_info_ack(struct map_session_data* sd)
it.nameid = ssitem->nameid;
it.amount = ssitem->amount;
- clif->addcards(WFIFOP(fd, i * blocksize + 25 + MESSAGE_SIZE), &it);
+ clif->addcards(&p->items[i].slot, &it);
#if PACKETVER >= 20150226
memcpy(&it.option, &ssitem->option, sizeof(it.option));
- clif->add_item_options(WFIFOP(fd, i * blocksize + 33 + MESSAGE_SIZE), &it);
+ clif->add_item_options(&p->items[i].option_data[0], &it);
#endif
}
- WFIFOSET(fd,WFIFOW(fd,2));
+ WFIFOSET(fd, len);
}
/// Notification of failure when searching for stores (ZC_SEARCH_STORE_INFO_FAILED).
@@ -17872,7 +18073,7 @@ void clif_search_store_info_ack(struct map_session_data* sd)
/// 2 = "You cannot search anymore." (0x706)
/// 3 = "You cannot search yet." (0x708)
/// 4 = "No sale (purchase) information available." (0x705)
-void clif_search_store_info_failed(struct map_session_data* sd, unsigned char reason)
+static void clif_search_store_info_failed(struct map_session_data *sd, unsigned char reason)
{
#if PACKETVER >= 20100601
int fd;
@@ -17886,10 +18087,10 @@ void clif_search_store_info_failed(struct map_session_data* sd, unsigned char re
#endif
}
-void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to display next page of results (CZ_SEARCH_STORE_INFO_NEXT_PAGE).
/// 0838
-void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data* sd)
+static void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data *sd)
{
searchstore->next(sd);
}
@@ -17899,7 +18100,7 @@ void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data* sd)
/// type:
/// 0 = Search Stores
/// 1 = Search Stores (Cash), asks for confirmation, when clicking a store
-void clif_open_search_store_info(struct map_session_data* sd)
+static void clif_open_search_store_info(struct map_session_data *sd)
{
#if PACKETVER >= 20100608
int fd;
@@ -17916,33 +18117,26 @@ void clif_open_search_store_info(struct map_session_data* sd)
#endif
}
-void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to close the store search window (CZ_CLOSE_SEARCH_STORE_INFO).
/// 083b
-void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data* sd)
+static void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data *sd)
{
searchstore->close(sd);
}
-void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to invoke catalog effect on a store from search results (CZ_SSILIST_ITEM_CLICK).
/// 083c <account id>.L <store id>.L <nameid>.W
-void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data* sd)
+static void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data *sd)
{
- unsigned short nameid;
- int account_id, store_id;
- struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
-
- account_id = RFIFOL(fd,info->pos[0]);
- store_id = RFIFOL(fd,info->pos[1]);
- nameid = RFIFOW(fd,info->pos[2]);
-
- searchstore->click(sd, account_id, store_id, nameid);
+ const struct PACKET_CZ_SSILIST_ITEM_CLICK *p = RFIFOP(fd, 0);
+ searchstore->click(sd, p->AID, p->storeId, p->itemId);
}
/// Notification of the store position on current map (ZC_SSILIST_ITEM_CLICK_ACK).
/// 083d <xPos>.W <yPos>.W
-void clif_search_store_info_click_ack(struct map_session_data* sd, short x, short y)
+static void clif_search_store_info_click_ack(struct map_session_data *sd, short x, short y)
{
#if PACKETVER >= 20100608
int fd;
@@ -17958,7 +18152,8 @@ void clif_search_store_info_click_ack(struct map_session_data* sd, short x, shor
}
/// Parse function for packet debugging.
-void clif_parse_debug(int fd,struct map_session_data *sd) {
+static void clif_parse_debug(int fd, struct map_session_data *sd)
+{
int cmd, packet_len;
// clif_parse ensures, that there is at least 2 bytes of data
@@ -17982,7 +18177,8 @@ void clif_parse_debug(int fd,struct map_session_data *sd) {
* Server tells client to display a window similar to Magnifier (item) one
* Server populates the window with available elemental converter options according to player's inventory
*------------------------------------------*/
-int clif_elementalconverter_list(struct map_session_data *sd) {
+static int clif_elementalconverter_list(struct map_session_data *sd)
+{
int i,c,view,fd;
nullpo_ret(sd);
@@ -18013,7 +18209,8 @@ int clif_elementalconverter_list(struct map_session_data *sd) {
/**
* Rune Knight
**/
-void clif_millenniumshield(struct block_list *bl, short shields ) {
+static void clif_millenniumshield(struct block_list *bl, short shields)
+{
#if PACKETVER >= 20081217
unsigned char buf[10];
@@ -18031,7 +18228,7 @@ void clif_millenniumshield(struct block_list *bl, short shields ) {
/*==========================================
* Spellbook list [LimitLine/3CeAM]
*------------------------------------------*/
-int clif_spellbook_list(struct map_session_data *sd)
+static int clif_spellbook_list(struct map_session_data *sd)
{
int i, c;
int fd;
@@ -18060,7 +18257,7 @@ int clif_spellbook_list(struct map_session_data *sd)
}
else{
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK, 0, 0);
}
return 1;
@@ -18071,7 +18268,8 @@ int clif_spellbook_list(struct map_session_data *sd)
/*==========================================
* Magic Decoy Material List
*------------------------------------------*/
-int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x, short y) {
+static int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x, short y)
+{
int i, c;
int fd;
@@ -18095,7 +18293,7 @@ int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x,
WFIFOW(fd,2) = c * 2 + 4;
WFIFOSET(fd, WFIFOW(fd, 2));
} else {
- clif->skill_fail(sd,NC_MAGICDECOY,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, NC_MAGICDECOY, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -18107,7 +18305,8 @@ int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x,
/*==========================================
* Guillotine Cross Poisons List
*------------------------------------------*/
-int clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
+static int clif_poison_list(struct map_session_data *sd, uint16 skill_lv)
+{
int i, c;
int fd;
@@ -18129,13 +18328,14 @@ int clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
WFIFOW(fd,2) = c * 2 + 4;
WFIFOSET(fd, WFIFOW(fd, 2));
} else {
- clif->skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_GUILLONTINE_POISON,0);
+ clif->skill_fail(sd, GC_POISONINGWEAPON, USESKILL_FAIL_GUILLONTINE_POISON, 0, 0);
return 0;
}
return 1;
}
-int clif_autoshadowspell_list(struct map_session_data *sd) {
+static int clif_autoshadowspell_list(struct map_session_data *sd)
+{
int fd, i, c;
nullpo_ret(sd);
fd = sd->fd;
@@ -18162,7 +18362,7 @@ int clif_autoshadowspell_list(struct map_session_data *sd) {
sd->menuskill_val = c;
} else {
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
- clif->skill_fail(sd,SC_AUTOSHADOWSPELL,USESKILL_FAIL_IMITATION_SKILL_NONE,0);
+ clif->skill_fail(sd, SC_AUTOSHADOWSPELL, USESKILL_FAIL_IMITATION_SKILL_NONE, 0, 0);
}
return 1;
@@ -18171,7 +18371,7 @@ int clif_autoshadowspell_list(struct map_session_data *sd) {
* Skill list for Four Elemental Analysis
* and Change Material skills.
*------------------------------------------*/
-int clif_skill_itemlistwindow( struct map_session_data *sd, uint16 skill_id, uint16 skill_lv )
+static int clif_skill_itemlistwindow(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
#if PACKETVER >= 20090922
int fd;
@@ -18197,18 +18397,19 @@ int clif_skill_itemlistwindow( struct map_session_data *sd, uint16 skill_id, uin
}
-void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/*==========================================
* used by SC_AUTOSHADOWSPELL
* RFIFOL(fd,2) - flag (currently not used)
*------------------------------------------*/
-void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) {
+static void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd)
+{
if( sd->menuskill_id != SC_AUTOSHADOWSPELL )
return;
if( pc_istrading(sd) ) {
- clif->skill_fail(sd,sd->ud.skill_id,0,0);
+ clif->skill_fail(sd, sd->ud.skill_id, 0, 0, 0);
clif_menuskill_clear(sd);
return;
}
@@ -18221,7 +18422,7 @@ void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) {
/*==========================================
* Kagerou/Oboro amulet spirit
*------------------------------------------*/
-void clif_charm(struct map_session_data *sd)
+static void clif_charm(struct map_session_data *sd)
{
#if PACKETVER >= 20110809
unsigned char buf[10];
@@ -18236,7 +18437,7 @@ void clif_charm(struct map_session_data *sd)
#endif
}
-void clif_parse_MoveItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_MoveItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Move Item from or to Personal Tab (CZ_WHATSOEVER) [FE]
/// 0907 <index>.W
///
@@ -18244,7 +18445,8 @@ void clif_parse_MoveItem(int fd, struct map_session_data *sd) __attribute__((non
/// type:
/// 0 = move item to personal tab
/// 1 = move item to normal tab
-void clif_parse_MoveItem(int fd, struct map_session_data *sd) {
+static void clif_parse_MoveItem(int fd, struct map_session_data *sd)
+{
#if PACKETVER >= 20111122
int index;
@@ -18270,7 +18472,8 @@ void clif_parse_MoveItem(int fd, struct map_session_data *sd) {
}
/* [Ind/Hercules] */
-void clif_cashshop_db(void) {
+static void clif_cashshop_db(void)
+{
struct config_t cashshop_conf;
struct config_setting_t *cashshop = NULL, *cats = NULL;
const char *config_filename = "db/cashshop_db.conf"; // FIXME hardcoded name
@@ -18306,7 +18509,7 @@ void clif_cashshop_db(void) {
continue;
}
- if( name[0] == 'I' && name[1] == 'D' && strlen(name) <= 7 ) {
+ if (name[0] == 'I' && name[1] == 'D' && strlen(name) <= 12) {
if( !( data = itemdb->exists(atoi(name+2))) ) {
ShowWarning("cashshop_db: unknown item id '%s' in category '%s'\n", name+2, entry_name);
continue;
@@ -18334,7 +18537,8 @@ void clif_cashshop_db(void) {
}
/// Items that are in favorite tab of inventory (ZC_ITEM_FAVORITE).
/// 0900 <index>.W <favorite>.B
-void clif_favorite_item(struct map_session_data* sd, unsigned short index) {
+static void clif_favorite_item(struct map_session_data *sd, unsigned short index)
+{
#if PACKETVER >= 20120410
int fd;
@@ -18348,7 +18552,8 @@ void clif_favorite_item(struct map_session_data* sd, unsigned short index) {
#endif
}
-void clif_snap( struct block_list *bl, short x, short y ) {
+static void clif_snap(struct block_list *bl, short x, short y)
+{
#if PACKETVER >= 20110809
unsigned char buf[10];
@@ -18362,7 +18567,7 @@ void clif_snap( struct block_list *bl, short x, short y ) {
#endif
}
-void clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd)
+static void clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd)
{
#if PACKETVER >= 20120228
struct packet_monster_hp p;
@@ -18379,12 +18584,14 @@ void clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd)
}
/* [Ind/Hercules] placeholder for unsupported incoming packets (avoids server disconnecting client) */
-void __attribute__ ((unused)) clif_parse_dull(int fd,struct map_session_data *sd) {
+static void __attribute__ ((unused)) clif_parse_dull(int fd, struct map_session_data *sd)
+{
return;
}
-void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) {
+static void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopOpen(int fd, struct map_session_data *sd)
+{
if (map->list[sd->bl.m].flag.nocashshop) {
clif->messagecolor_self(fd, COLOR_RED, msg_fd(fd,1489)); //Cash Shop is disabled in this map
@@ -18398,40 +18605,52 @@ void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) {
WFIFOSET(fd, 10);
}
-void clif_parse_CashShopClose(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CashShopClose(int fd, struct map_session_data *sd) {
+static void clif_parse_CashShopClose(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopClose(int fd, struct map_session_data *sd)
+{
/* TODO apply some state tracking */
}
-void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd)
+static void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd)
+{
+ clif->cashShopSchedule(fd, sd);
+}
+
+void clif_cashShopSchedule(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20110614
- int i, j = 0;
+ int i = 0;
- for( i = 0; i < CASHSHOP_TAB_MAX; i++ ) {
- if( clif->cs.item_count[i] == 0 )
+ nullpo_retv(sd);
+ for (i = 0; i < CASHSHOP_TAB_MAX; i++) {
+ const int len = sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM) + (clif->cs.item_count[i] * sizeof(struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub));
+ int j = 0;
+ struct PACKET_ZC_ACK_SCHEDULER_CASHITEM *p;
+ if (clif->cs.item_count[i] == 0)
continue; // Skip empty tabs, the client only expects filled ones
- WFIFOHEAD(fd, 8 + ( clif->cs.item_count[i] * 6 ) );
- WFIFOW(fd, 0) = 0x8ca;
- WFIFOW(fd, 2) = 8 + ( clif->cs.item_count[i] * 6 );
- WFIFOW(fd, 4) = clif->cs.item_count[i];
- WFIFOW(fd, 6) = i;
+ WFIFOHEAD(fd, len);
+ p = WFIFOP(fd, 0);
+ p->packetType = 0x8ca;
+ p->packetLength = len;
+ p->count = clif->cs.item_count[i];
+ p->tabNum = i;
- for( j = 0; j < clif->cs.item_count[i]; j++ ) {
- WFIFOW(fd, 8 + ( 6 * j ) ) = clif->cs.data[i][j]->id;
- WFIFOL(fd, 10 + ( 6 * j ) ) = clif->cs.data[i][j]->price;
+ for (j = 0; j < clif->cs.item_count[i]; j++) {
+ p->items[j].itemId = clif->cs.data[i][j]->id;
+ p->items[j].price = clif->cs.data[i][j]->price;
}
- WFIFOSET(fd, 8 + ( clif->cs.item_count[i] * 6 ));
+ WFIFOSET(fd, len);
}
#endif
}
/// R 0848 <len>.W <limit>.W <kafra pay>.L (<item id>.L <amount>.L <tab>.W)*
-void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) {
+static void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopBuy(int fd, struct map_session_data *sd)
+{
int len = RFIFOW(fd, 2);
unsigned short limit, i, j;
unsigned int kafra_pay;
@@ -18538,11 +18757,12 @@ void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) {
}
}
-void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/* [Ind/Hercules] */
-void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd)
+static void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd)
{
-#if PACKETVER >= 20110222
+// [4144] packet exists only in 2011 and was dropped after
+#if PACKETVER >= 20110222 && PACKETVER < 20120000
short tab = RFIFOW(fd, 2);
int j;
@@ -18565,7 +18785,7 @@ void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd)
}
/* [Ind/Hercules] */
-void clif_maptypeproperty2(struct block_list *bl,enum send_target t)
+static void clif_maptypeproperty2(struct block_list *bl, enum send_target t)
{
#if PACKETVER >= 20121010
struct packet_maptypeproperty2 p;
@@ -18593,7 +18813,8 @@ void clif_maptypeproperty2(struct block_list *bl,enum send_target t)
#endif
}
-void clif_status_change2(struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3) {
+static void clif_status_change2(struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3)
+{
struct packet_status_change2 p;
p.PacketType = status_change2Type;
@@ -18608,7 +18829,8 @@ void clif_status_change2(struct block_list *bl, int tid, enum send_target target
clif->send(&p,sizeof(p), bl, target);
}
-void clif_partytickack(struct map_session_data* sd, bool flag) {
+static void clif_partytickack(struct map_session_data *sd, bool flag)
+{
nullpo_retv(sd);
WFIFOHEAD(sd->fd, packet_len(0x2c9));
@@ -18617,7 +18839,7 @@ void clif_partytickack(struct map_session_data* sd, bool flag) {
WFIFOSET(sd->fd, packet_len(0x2c9));
}
-void clif_ShowScript(struct block_list *bl, const char *message)
+static void clif_ShowScript(struct block_list *bl, const char *message)
{
#if PACKETVER >= 20110111
char buf[256];
@@ -18642,7 +18864,8 @@ void clif_ShowScript(struct block_list *bl, const char *message)
#endif
}
-void clif_status_change_end(struct block_list *bl, int tid, enum send_target target, int type) {
+static void clif_status_change_end(struct block_list *bl, int tid, enum send_target target, int type)
+{
struct packet_status_change_end p;
nullpo_retv(bl);
@@ -18658,7 +18881,8 @@ void clif_status_change_end(struct block_list *bl, int tid, enum send_target tar
clif->send(&p,sizeof(p), bl, target);
}
-void clif_bgqueue_ack(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_ACK response, unsigned char arena_id) {
+static void clif_bgqueue_ack(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_ACK response, unsigned char arena_id)
+{
switch (response) {
case BGQA_FAIL_COOLDOWN:
case BGQA_FAIL_DESERTER:
@@ -18678,7 +18902,7 @@ void clif_bgqueue_ack(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_ACK
}
}
-void clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_NOTICE_DELETED response, const char *name)
+static void clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUNDS_QUEUE_NOTICE_DELETED response, const char *name)
{
struct packet_bgqueue_notice_delete p;
@@ -18690,8 +18914,8 @@ void clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUNDS_
clif->send(&p,sizeof(p), &sd->bl, SELF);
}
-void clif_parse_bgqueue_register(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_bgqueue_register(int fd, struct map_session_data *sd)
+static void clif_parse_bgqueue_register(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_bgqueue_register(int fd, struct map_session_data *sd)
{
const struct packet_bgqueue_register *p = RP2PTR(fd);
struct bg_arena *arena = NULL;
@@ -18715,7 +18939,8 @@ void clif_parse_bgqueue_register(int fd, struct map_session_data *sd)
bg->queue_add(sd, arena, (enum bg_queue_types)p->type);
}
-void clif_bgqueue_update_info(struct map_session_data *sd, unsigned char arena_id, int position) {
+static void clif_bgqueue_update_info(struct map_session_data *sd, unsigned char arena_id, int position)
+{
struct packet_bgqueue_update_info p;
nullpo_retv(sd);
@@ -18729,8 +18954,8 @@ void clif_bgqueue_update_info(struct map_session_data *sd, unsigned char arena_i
clif->send(&p,sizeof(p), &sd->bl, SELF);
}
-void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd)
+static void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd)
{
const struct packet_bgqueue_checkstate *p = RP2PTR(fd);
@@ -18741,8 +18966,8 @@ void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd)
}
}
-void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd)
+static void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd)
{
const struct packet_bgqueue_revoke_req *p = RP2PTR(fd);
@@ -18752,8 +18977,8 @@ void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd)
clif->bgqueue_notice_delete(sd, BGQND_FAIL_NOT_QUEUING,p->bg_name);
}
-void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd)
+static void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd)
{
const struct packet_bgqueue_battlebegin_ack *p = RP2PTR(fd);
struct bg_arena *arena;
@@ -18767,7 +18992,8 @@ void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd)
}
}
-void clif_bgqueue_joined(struct map_session_data *sd, int pos) {
+static void clif_bgqueue_joined(struct map_session_data *sd, int pos)
+{
struct packet_bgqueue_notify_entry p;
nullpo_retv(sd);
@@ -18778,13 +19004,15 @@ void clif_bgqueue_joined(struct map_session_data *sd, int pos) {
clif->send(&p,sizeof(p), &sd->bl, BG_QUEUE);
}
-void clif_bgqueue_pcleft(struct map_session_data *sd) {
+static void clif_bgqueue_pcleft(struct map_session_data *sd)
+{
/* no idea */
return;
}
// Sends BG ready req to all with same bg arena/type as sd
-void clif_bgqueue_battlebegins(struct map_session_data *sd, unsigned char arena_id, enum send_target target) {
+static void clif_bgqueue_battlebegins(struct map_session_data *sd, unsigned char arena_id, enum send_target target)
+{
struct packet_bgqueue_battlebegins p;
nullpo_retv(sd);
@@ -18796,7 +19024,7 @@ void clif_bgqueue_battlebegins(struct map_session_data *sd, unsigned char arena_
clif->send(&p,sizeof(p), &sd->bl, target);
}
-void clif_scriptclear(struct map_session_data *sd, int npcid)
+static void clif_scriptclear(struct map_session_data *sd, int npcid)
{
#if PACKETVER >= 20110928
struct packet_script_clear p;
@@ -18810,12 +19038,13 @@ void clif_scriptclear(struct map_session_data *sd, int npcid)
}
/* Made Possible Thanks to Yommy! */
-void clif_package_item_announce(struct map_session_data *sd, unsigned short nameid, unsigned short containerid) {
+static void clif_package_item_announce(struct map_session_data *sd, int nameid, int containerid)
+{
struct packet_package_item_announce p;
nullpo_retv(sd);
p.PacketType = package_item_announceType;
- p.PacketLength = 11+NAME_LENGTH;
+ p.PacketLength = 11 + NAME_LENGTH;
p.type = 0x0;
p.ItemID = nameid;
p.len = NAME_LENGTH;
@@ -18827,24 +19056,31 @@ void clif_package_item_announce(struct map_session_data *sd, unsigned short name
}
/* Made Possible Thanks to Yommy! */
-void clif_item_drop_announce(struct map_session_data *sd, unsigned short nameid, char *monsterName) {
+static void clif_item_drop_announce(struct map_session_data *sd, int nameid, char *monsterName)
+{
struct packet_item_drop_announce p;
nullpo_retv(sd);
p.PacketType = item_drop_announceType;
p.PacketLength = sizeof(p);
- p.type = 0x1;
p.ItemID = nameid;
+ p.monsterNameLen = NAME_LENGTH;
p.len = NAME_LENGTH;
safestrncpy(p.Name, sd->status.name, sizeof(p.Name));
- p.monsterNameLen = NAME_LENGTH;
- safestrncpy(p.monsterName, monsterName, sizeof(p.monsterName));
-
- clif->send(&p,sizeof(p), &sd->bl, ALL_CLIENT);
+ if (monsterName == NULL) {
+ // message: MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN2
+ p.type = 0x2;
+ } else {
+ // message: MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN
+ p.type = 0x1;
+ safestrncpy(p.monsterName, monsterName, sizeof(p.monsterName));
+ }
+ clif->send(&p, sizeof(p), &sd->bl, ALL_CLIENT);
}
/* [Ind/Hercules] special thanks to Yommy~! */
-void clif_skill_cooldown_list(int fd, struct skill_cd* cd) {
+static void clif_skill_cooldown_list(int fd, struct skill_cd *cd)
+{
#if PACKETVER >= 20120604
const int offset = 10;
#else
@@ -18884,7 +19120,8 @@ void clif_skill_cooldown_list(int fd, struct skill_cd* cd) {
* - ADDITEM_TO_CART_FAIL_WEIGHT = 0x0
* - ADDITEM_TO_CART_FAIL_COUNT = 0x1
*/
-void clif_cart_additem_ack(struct map_session_data *sd, int flag) {
+static void clif_cart_additem_ack(struct map_session_data *sd, int flag)
+{
struct packet_cart_additem_ack p;
nullpo_retv(sd);
@@ -18895,8 +19132,8 @@ void clif_cart_additem_ack(struct map_session_data *sd, int flag) {
}
/* Bank System [Yommy/Hercules] */
-void clif_parse_BankDeposit(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_BankDeposit(int fd, struct map_session_data *sd)
+static void clif_parse_BankDeposit(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankDeposit(int fd, struct map_session_data *sd)
{
const struct packet_banking_deposit_req *p = RP2PTR(fd);
int money;
@@ -18911,8 +19148,8 @@ void clif_parse_BankDeposit(int fd, struct map_session_data *sd)
pc->bank_deposit(sd,money);
}
-void clif_parse_BankWithdraw(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_BankWithdraw(int fd, struct map_session_data *sd)
+static void clif_parse_BankWithdraw(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankWithdraw(int fd, struct map_session_data *sd)
{
const struct packet_banking_withdraw_req *p = RP2PTR(fd);
int money;
@@ -18927,8 +19164,8 @@ void clif_parse_BankWithdraw(int fd, struct map_session_data *sd)
pc->bank_withdraw(sd,money);
}
-void clif_parse_BankCheck(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_BankCheck(int fd, struct map_session_data* sd)
+static void clif_parse_BankCheck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankCheck(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20130320
struct packet_banking_check p;
@@ -18946,17 +19183,19 @@ void clif_parse_BankCheck(int fd, struct map_session_data* sd)
#endif
}
-void clif_parse_BankOpen(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_BankOpen(int fd, struct map_session_data* sd) {
+static void clif_parse_BankOpen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankOpen(int fd, struct map_session_data *sd)
+{
return;
}
-void clif_parse_BankClose(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_BankClose(int fd, struct map_session_data* sd) {
+static void clif_parse_BankClose(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_BankClose(int fd, struct map_session_data *sd)
+{
return;
}
-void clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK reason)
+static void clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK reason)
{
#if PACKETVER >= 20130313
struct packet_banking_deposit_ack p;
@@ -18971,7 +19210,7 @@ void clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK r
#endif
}
-void clif_bank_withdraw(struct map_session_data *sd,enum e_BANKING_WITHDRAW_ACK reason)
+static void clif_bank_withdraw(struct map_session_data *sd, enum e_BANKING_WITHDRAW_ACK reason)
{
#if PACKETVER >= 20130313
struct packet_banking_withdraw_ack p;
@@ -18988,7 +19227,8 @@ void clif_bank_withdraw(struct map_session_data *sd,enum e_BANKING_WITHDRAW_ACK
/* TODO: official response packet (tried 0x8cb/0x97b but the display was quite screwed up.) */
/* currently mimicing */
-void clif_show_modifiers (struct map_session_data *sd) {
+static void clif_show_modifiers(struct map_session_data *sd)
+{
nullpo_retv(sd);
if( sd->status.mod_exp != 100 || sd->status.mod_drop != 100 || sd->status.mod_death != 100 ) {
@@ -19001,7 +19241,8 @@ void clif_show_modifiers (struct map_session_data *sd) {
}
-void clif_notify_bounditem(struct map_session_data *sd, unsigned short index) {
+static void clif_notify_bounditem(struct map_session_data *sd, unsigned short index)
+{
struct packet_notify_bounditem p;
nullpo_retv(sd);
@@ -19011,11 +19252,12 @@ void clif_notify_bounditem(struct map_session_data *sd, unsigned short index) {
clif->send(&p,sizeof(p), &sd->bl, SELF);
}
-void clif_parse_GMFullStrip(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_GMFullStrip(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/**
* Parses the (GM) right click option 'remove all equipment'
**/
-void clif_parse_GMFullStrip(int fd, struct map_session_data *sd) {
+static void clif_parse_GMFullStrip(int fd, struct map_session_data *sd)
+{
struct map_session_data *tsd = map->id2sd(RFIFOL(fd,2));
int i;
@@ -19032,7 +19274,8 @@ void clif_parse_GMFullStrip(int fd, struct map_session_data *sd) {
/**
* clif_delay_damage timer, sends the stored data and clears the memory afterwards
**/
-int clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
+static int clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data)
+{
struct cdelayed_damage *dd = (struct cdelayed_damage *)data;
clif->send(&dd->p,sizeof(struct packet_damage),&dd->bl,AREA_WOS);
@@ -19056,7 +19299,8 @@ int clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) {
*
* @return clif->calc_walkdelay used in further processing
**/
-int clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type) {
+static int clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type)
+{
struct cdelayed_damage *dd;
struct status_change *sc;
#if PACKETVER < 20071113
@@ -19115,15 +19359,17 @@ int clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst
return clif->calc_walkdelay(dst,ddelay,type,damage,div);
}
-void clif_parse_NPCShopClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCShopClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/* Thanks to Yommy */
-void clif_parse_NPCShopClosed(int fd, struct map_session_data *sd) {
+static void clif_parse_NPCShopClosed(int fd, struct map_session_data *sd)
+{
/* TODO track the state <3~ */
sd->npc_shopid = 0;
}
/* NPC Market (by Ind after an extensive debugging of the packet, only possible thanks to Yommy <3) */
-void clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd) {
+static void clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd)
+{
#if PACKETVER >= 20131223
struct npc_item_list *shop;
unsigned short shop_size, i, c;
@@ -19152,13 +19398,14 @@ void clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd) {
#endif
}
-void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd) {
+static void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd)
+{
/* TODO track the state <3~ */
sd->npc_shopid = 0;
}
-void clif_npc_market_purchase_ack(struct map_session_data *sd, const struct itemlist *item_list, unsigned char response)
+static void clif_npc_market_purchase_ack(struct map_session_data *sd, const struct itemlist *item_list, unsigned char response)
{
#if PACKETVER >= 20131223
unsigned short c = 0;
@@ -19195,8 +19442,8 @@ void clif_npc_market_purchase_ack(struct map_session_data *sd, const struct item
#endif
}
-void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd)
+static void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20131223
const struct packet_npc_market_purchase *p = RP2PTR(fd);
@@ -19225,7 +19472,8 @@ void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd)
#endif
}
-void clif_PartyLeaderChanged(struct map_session_data *sd, int prev_leader_aid, int new_leader_aid) {
+static void clif_PartyLeaderChanged(struct map_session_data *sd, int prev_leader_aid, int new_leader_aid)
+{
struct packet_party_leader_changed p;
nullpo_retv(sd);
@@ -19237,9 +19485,10 @@ void clif_PartyLeaderChanged(struct map_session_data *sd, int prev_leader_aid, i
clif->send(&p,sizeof(p),&sd->bl,PARTY);
}
-void clif_parse_RouletteOpen(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteOpen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/* Roulette System [Yommy/Hercules] */
-void clif_parse_RouletteOpen(int fd, struct map_session_data* sd) {
+static void clif_parse_RouletteOpen(int fd, struct map_session_data *sd)
+{
#if PACKETVER >= 20140612
struct packet_roulette_open_ack p;
@@ -19262,8 +19511,8 @@ void clif_parse_RouletteOpen(int fd, struct map_session_data* sd) {
#endif
}
-void clif_parse_RouletteInfo(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_RouletteInfo(int fd, struct map_session_data* sd)
+static void clif_parse_RouletteInfo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteInfo(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20140612
struct packet_roulette_info_ack p;
@@ -19284,7 +19533,7 @@ void clif_parse_RouletteInfo(int fd, struct map_session_data* sd)
p.ItemInfo[count].Position = j;
p.ItemInfo[count].ItemId = clif->rd.nameid[i][j];
p.ItemInfo[count].Count = clif->rd.qty[i][j];
-#if PACKETVER >= 20180523 // unknown real version
+#if PACKETVER >= 20180511
p.ItemInfo[count].unused = 0;
#endif
count++;
@@ -19294,8 +19543,9 @@ void clif_parse_RouletteInfo(int fd, struct map_session_data* sd)
#endif
}
-void clif_parse_RouletteClose(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_RouletteClose(int fd, struct map_session_data* sd) {
+static void clif_parse_RouletteClose(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteClose(int fd, struct map_session_data *sd)
+{
if( !battle_config.feature_roulette ) {
clif->message(fd, msg_fd(fd,82)); // Roulette is disabled
return;
@@ -19307,8 +19557,9 @@ void clif_parse_RouletteClose(int fd, struct map_session_data* sd) {
return;
}
-void clif_parse_RouletteGenerate(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
-void clif_parse_RouletteGenerate(int fd, struct map_session_data* sd) {
+static void clif_parse_RouletteGenerate(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteGenerate(int fd, struct map_session_data *sd)
+{
unsigned char result = GENERATE_ROULETTE_SUCCESS;
short stage = sd->roulette.stage;
@@ -19361,11 +19612,11 @@ void clif_parse_RouletteGenerate(int fd, struct map_session_data* sd) {
sd->roulette.stage++;
}
-void clif_parse_RouletteRecvItem(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
+static void clif_parse_RouletteRecvItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/**
* Request to cash in!
**/
-void clif_parse_RouletteRecvItem(int fd, struct map_session_data* sd)
+static void clif_parse_RouletteRecvItem(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20140612
struct packet_roulette_itemrecv_ack p;
@@ -19413,7 +19664,8 @@ void clif_parse_RouletteRecvItem(int fd, struct map_session_data* sd)
#endif
}
-bool clif_parse_roulette_db(void) {
+static bool clif_parse_roulette_db(void)
+{
struct config_t roulette_conf;
struct config_setting_t *roulette = NULL, *levels = NULL;
const char *config_filename = "db/roulette_db.conf"; // FIXME hardcoded name
@@ -19448,7 +19700,7 @@ bool clif_parse_roulette_db(void) {
continue;
}
- if( name[0] == 'I' && name[1] == 'D' && strlen(name) <= 7 ) {
+ if (name[0] == 'I' && name[1] == 'D' && strlen(name) <= 12) {
if( !( data = itemdb->exists(atoi(name+2))) ) {
ShowWarning("roulette_db: unknown item id '%s' in category '%s'\n", name+2, entry_name);
continue;
@@ -19505,7 +19757,7 @@ bool clif_parse_roulette_db(void) {
/**
*
**/
-void clif_roulette_generate_ack(struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID)
+static void clif_roulette_generate_ack(struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, int bonusItemID)
{
#if PACKETVER >= 20140612
struct packet_roulette_generate_ack p;
@@ -19527,7 +19779,7 @@ void clif_roulette_generate_ack(struct map_session_data *sd, unsigned char resul
/**
* Stackable items merger
*/
-void clif_openmergeitem(int fd, struct map_session_data *sd)
+static void clif_openmergeitem(int fd, struct map_session_data *sd)
{
#if PACKETVER > 20120228
int i = 0, n = 0, j = 0;
@@ -19575,7 +19827,7 @@ void clif_openmergeitem(int fd, struct map_session_data *sd)
#endif
}
-int clif_comparemergeitem(const void *a, const void *b)
+static int clif_comparemergeitem(const void *a, const void *b)
{
const struct merge_item *a_ = a;
const struct merge_item *b_ = b;
@@ -19587,11 +19839,12 @@ int clif_comparemergeitem(const void *a, const void *b)
return a_->nameid > b_->nameid ? -1 : 1;
}
-void clif_ackmergeitems(int fd, struct map_session_data *sd)
+static void clif_ackmergeitems(int fd, struct map_session_data *sd)
{
#if PACKETVER > 20120228
int i = 0, n = 0, length = 0, count = 0;
- int16 nameid = 0, indexes[MAX_INVENTORY] = {0}, amounts[MAX_INVENTORY] = {0};
+ int nameid = 0;
+ int16 indexes[MAX_INVENTORY] = {0}, amounts[MAX_INVENTORY] = {0};
struct item item_data;
nullpo_retv(sd);
@@ -19672,13 +19925,13 @@ void clif_ackmergeitems(int fd, struct map_session_data *sd)
#endif
}
-void clif_cancelmergeitem (int fd, struct map_session_data *sd)
+static void clif_cancelmergeitem(int fd, struct map_session_data *sd)
{
//Track The merge item cancelation ?
return;
}
-void clif_dressroom_open(struct map_session_data *sd, int view)
+static void clif_dressroom_open(struct map_session_data *sd, int view)
{
#if PACKETVER >= 20150513
int fd;
@@ -19695,7 +19948,7 @@ void clif_dressroom_open(struct map_session_data *sd, int view)
/// Request to select cart's visual look for new cart design (ZC_SELECTCART).
/// 097f <Length>.W <identity>.L <type>.B
-void clif_selectcart(struct map_session_data *sd)
+static void clif_selectcart(struct map_session_data *sd)
{
#if PACKETVER >= 20150805
int i = 0, fd;
@@ -19716,7 +19969,7 @@ void clif_selectcart(struct map_session_data *sd)
}
/// Starts navigation to the given target on client side
-void clif_navigate_to(struct map_session_data *sd, const char* mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id)
+static void clif_navigate_to(struct map_session_data *sd, const char *mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id)
{
// probably this packet with other fields present in older packet versions
#if PACKETVER >= 20120307
@@ -19763,7 +20016,7 @@ void clif_navigate_to(struct map_session_data *sd, const char* mapname, uint16 x
* @param bl The requested bl.
* @return The bl's name (guaranteed to be non-NULL).
*/
-const char *clif_get_bl_name(const struct block_list *bl)
+static const char *clif_get_bl_name(const struct block_list *bl)
{
const char *name = status->get_name(bl);
@@ -19778,7 +20031,7 @@ const char *clif_get_bl_name(const struct block_list *bl)
* 098a <length>.W <clan id>.L <clan name>.24B <clan master>.24B <clan map>.16B <alliance count>.B
* <antagonist count>.B { <alliance>.24B } * alliance count { <antagonist>.24B } * antagonist count (ZC_CLANINFO)
*/
-void clif_clan_basicinfo(struct map_session_data *sd)
+static void clif_clan_basicinfo(struct map_session_data *sd)
{
#if PACKETVER >= 20120716
int len, i, fd;
@@ -19835,7 +20088,7 @@ void clif_clan_basicinfo(struct map_session_data *sd)
* Clan System: Updates the online and maximum player count of a clan.
* 0988 <online count>.W <maximum member amount>.W (ZC_NOTIFY_CLAN_CONNECTINFO)
*/
-void clif_clan_onlinecount(struct clan *c)
+static void clif_clan_onlinecount(struct clan *c)
{
#if PACKETVER >= 20120716
struct map_session_data *sd;
@@ -19854,10 +20107,10 @@ void clif_clan_onlinecount(struct clan *c)
}
/**
-* Clan System: Notifies the client that the player has left his clan.
-* 0989 (ZC_ACK_CLAN_LEAVE)
-**/
-void clif_clan_leave(struct map_session_data* sd)
+ * Clan System: Notifies the client that the player has left his clan.
+ * 0989 (ZC_ACK_CLAN_LEAVE)
+ */
+static void clif_clan_leave(struct map_session_data *sd)
{
#if PACKETVER >= 20131223
struct PACKET_ZC_ACK_CLAN_LEAVE p;
@@ -19874,7 +20127,7 @@ void clif_clan_leave(struct map_session_data* sd)
* Clan System: Sends a clan message to a player
* 098e <length>.W <name>.24B <message>.?B (ZC_NOTIFY_CLAN_CHAT)
*/
-void clif_clan_message(struct clan *c, const char *mes, int len)
+static void clif_clan_message(struct clan *c, const char *mes, int len)
{
#if PACKETVER >= 20120716
struct map_session_data *sd;
@@ -19905,12 +20158,12 @@ void clif_clan_message(struct clan *c, const char *mes, int len)
#endif
}
-void clif_parse_ClanMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_ClanMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/**
* Clan System: Parses a clan message from a player.
* 098d <length>.W <text>.?B (<name> : <message>) (CZ_CLAN_CHAT)
*/
-void clif_parse_ClanMessage(int fd, struct map_session_data *sd)
+static void clif_parse_ClanMessage(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20120716
const struct packet_chat_message *packet = RP2PTR(fd);
@@ -19924,20 +20177,23 @@ void clif_parse_ClanMessage(int fd, struct map_session_data *sd)
}
/* */
-unsigned short clif_decrypt_cmd( int cmd, struct map_session_data *sd ) {
+static unsigned short clif_decrypt_cmd(int cmd, struct map_session_data *sd)
+{
if( sd ) {
return (cmd ^ ((sd->cryptKey >> 16) & 0x7FFF));
}
return (cmd ^ (((( clif->cryptKey[0] * clif->cryptKey[1] ) + clif->cryptKey[2]) >> 16) & 0x7FFF));
}
-unsigned short clif_parse_cmd_normal( int fd, struct map_session_data *sd ) {
+static unsigned short clif_parse_cmd_normal(int fd, struct map_session_data *sd)
+{
unsigned short cmd = RFIFOW(fd,0);
return cmd;
}
-unsigned short clif_parse_cmd_decrypt( int fd, struct map_session_data *sd ) {
+static unsigned short clif_parse_cmd_decrypt(int fd, struct map_session_data *sd)
+{
unsigned short cmd = RFIFOW(fd,0);
cmd = clif->decrypt_cmd(cmd, sd);
@@ -19945,7 +20201,8 @@ unsigned short clif_parse_cmd_decrypt( int fd, struct map_session_data *sd ) {
return cmd;
}
-unsigned short clif_parse_cmd_optional( int fd, struct map_session_data *sd ) {
+static unsigned short clif_parse_cmd_optional(int fd, struct map_session_data *sd)
+{
unsigned short cmd = RFIFOW(fd,0);
// filter out invalid / unsupported packets
@@ -19964,8 +20221,8 @@ unsigned short clif_parse_cmd_optional( int fd, struct map_session_data *sd ) {
* RoDEX
*------------------------------------------*/
-void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_OPEN_WRITE_MAIL *rPacket = RFIFOP(fd, 0);
int8 result = (rodex->isenabled() == true && sd->npc_id == 0) ? 1 : 0;
@@ -19973,7 +20230,7 @@ void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd)
clif->rodex_open_write_mail(fd, rPacket->receiveName, result);
}
-void clif_rodex_open_write_mail(int fd, const char *receiver_name, int8 result)
+static void clif_rodex_open_write_mail(int fd, const char *receiver_name, int8 result)
{
#if PACKETVER >= 20140416
struct PACKET_ZC_ACK_OPEN_WRITE_MAIL *sPacket = NULL;
@@ -19989,8 +20246,8 @@ void clif_rodex_open_write_mail(int fd, const char *receiver_name, int8 result)
#endif
}
-void clif_parse_rodex_add_item(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_add_item(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_add_item(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_add_item(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_ADD_ITEM_TO_MAIL *rPacket = RFIFOP(fd, 0);
int16 idx = rPacket->index - 2;
@@ -19998,7 +20255,7 @@ void clif_parse_rodex_add_item(int fd, struct map_session_data *sd)
rodex->add_item(sd, idx, (int16)rPacket->count);
}
-void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 amount, int8 result)
+static void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result)
{
#if PACKETVER >= 20141119
struct PACKET_ZC_ADD_ITEM_TO_MAIL *packet;
@@ -20006,7 +20263,7 @@ void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 am
nullpo_retv(sd);
if (idx < 0 || idx >= MAX_INVENTORY)
- result = RODEX_ADD_ITEM_FATAL_ERROR;
+ return;
fd = sd->fd;
@@ -20023,7 +20280,7 @@ void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 am
packet->index = idx + 2;
packet->count = amount;
- packet->ITID = sd->status.inventory[idx].nameid;
+ packet->itemId = sd->status.inventory[idx].nameid;
packet->type = itemtype(sd->inventory_data[idx]->type);
packet->IsIdentified = sd->status.inventory[idx].identify ? 1 : 0;
packet->IsDamaged = (sd->status.inventory[idx].attribute & ATTR_BROKEN) != 0 ? 1 : 0;
@@ -20036,12 +20293,14 @@ void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 am
packet->optionData[j].value = sd->status.inventory[idx].option[j].value;
}
packet->weight = sd->rodex.tmp.weight / 10;
+ packet->favorite = sd->status.inventory[idx].favorite;
+ packet->location = pc->equippoint(sd, idx);
WFIFOSET(fd, sizeof(*packet));
#endif
}
-void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_REMOVE_ITEM_MAIL *rPacket = RFIFOP(fd, 0);
int16 idx = rPacket->index - 2;
@@ -20049,7 +20308,7 @@ void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd)
rodex->remove_item(sd, idx, (int16)rPacket->cnt);
}
-void clif_rodex_remove_item_result(struct map_session_data *sd, int16 idx, int16 amount)
+static void clif_rodex_remove_item_result(struct map_session_data *sd, int16 idx, int16 amount)
{
#if PACKETVER >= 20140521
struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL *packet;
@@ -20071,8 +20330,8 @@ void clif_rodex_remove_item_result(struct map_session_data *sd, int16 idx, int16
#endif
}
-void clif_parse_rodex_checkname(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_checkname(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_checkname(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+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;
@@ -20084,7 +20343,7 @@ void clif_parse_rodex_checkname(int fd, struct map_session_data *sd)
rodex->check_player(sd, name, &base_level, &char_id, &class);
}
-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, short class_, int base_level, const char *name)
{
#if PACKETVER >= 20140521
struct PACKET_ZC_CHECKNAME *sPacket;
@@ -20112,8 +20371,8 @@ void clif_rodex_checkname_result(struct map_session_data *sd, int char_id, short
#endif
}
-void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_SEND_MAIL *rPacket = RFIFOP(fd, 0);
int8 result;
@@ -20139,7 +20398,7 @@ void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd)
rodex->clean(sd, 1);
}
-void clif_rodex_send_mail_result(int fd, struct map_session_data *sd, int8 result)
+static void clif_rodex_send_mail_result(int fd, struct map_session_data *sd, int8 result)
{
#if PACKETVER >= 20131230
struct PACKET_ZC_WRITE_MAIL_RESULT *sPacket;
@@ -20152,7 +20411,7 @@ void clif_rodex_send_mail_result(int fd, struct map_session_data *sd, int8 resul
#endif
}
-void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_type, int64 page_start)
+static void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_type, int64 page_start)
{
#if PACKETVER >= 20131218
struct PACKET_ZC_MAIL_LIST *packet;
@@ -20210,7 +20469,7 @@ void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_typ
#endif
}
-void clif_rodex_send_mails_all(int fd, struct map_session_data *sd, int64 mail_id)
+static void clif_rodex_send_mails_all(int fd, struct map_session_data *sd, int64 mail_id)
{
#if PACKETVER >= 20170419
struct PACKET_ZC_MAIL_LIST *packet;
@@ -20282,7 +20541,7 @@ void clif_rodex_send_mails_all(int fd, struct map_session_data *sd, int64 mail_i
#endif
}
-void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type, int count)
+static void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type, int count)
{
#if PACKETVER >= 20131218
struct PACKET_ZC_MAIL_LIST *packet;
@@ -20342,23 +20601,23 @@ void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type
#endif
}
-void clif_parse_rodex_next_maillist(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_next_maillist(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_next_maillist(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_next_maillist(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_NEXT_MAIL_LIST *packet = RFIFOP(fd, 0);
rodex->next_page(sd, packet->opentype, packet->Lower_MailID);
}
-void clif_parse_rodex_read_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_read_mail(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_read_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_read_mail(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_READ_MAIL *rPacket = RFIFOP(fd, 0);
rodex->read_mail(sd, rPacket->MailID);
}
-void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rodex_message *msg)
+static void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rodex_message *msg)
{
#if PACKETVER >= 20140115
struct PACKET_ZC_READ_MAIL *sPacket;
@@ -20384,11 +20643,14 @@ void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rod
size += body_len;
for (i = 0; i < RODEX_MAX_ITEM; ++i) {
struct item *it = &msg->items[i].item;
+ struct item_data *data;
int j, k;
- if (it->nameid == 0) {
+ if (it->nameid == 0)
+ continue;
+ data = itemdb->search(it->nameid);
+ if (data == NULL)
continue;
- }
item = WFIFOP(fd, size);
memset(item, 0x0, sizeof(*item));
@@ -20398,6 +20660,9 @@ void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rod
item->IsIdentified = it->identify ? 1 : 0;
item->IsDamaged = (it->attribute & ATTR_BROKEN) != 0 ? 1 : 0;
item->refiningLevel = it->refine;
+ item->location = pc->item_equippoint(sd, data);
+ item->viewSprite = data->view_sprite;
+ item->bindOnEquip = it->bound ? 2 : data->flag.bindonequip ? 1 : 0;
for (k = 0; k < MAX_SLOTS; ++k) {
item->slot.card[k] = it->card[k];
}
@@ -20413,15 +20678,15 @@ void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rod
#endif
}
-void clif_parse_rodex_delete_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_delete_mail(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_delete_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_delete_mail(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_DELETE_MAIL *rPacket = RFIFOP(fd, 0);
rodex->delete_mail(sd, rPacket->MailID);
}
-void clif_rodex_delete_mail(struct map_session_data *sd, int8 opentype, int64 mail_id)
+static void clif_rodex_delete_mail(struct map_session_data *sd, int8 opentype, int64 mail_id)
{
#if PACKETVER >= 20131218
struct PACKET_ZC_ACK_DELETE_MAIL *sPacket;
@@ -20440,15 +20705,15 @@ void clif_rodex_delete_mail(struct map_session_data *sd, int8 opentype, int64 ma
#endif
}
-void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_request_zeny(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_ZENY_FROM_MAIL *rPacket = RFIFOP(fd, 0);
rodex->get_zeny(sd, rPacket->opentype, rPacket->MailID);
}
-void clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result)
+static void clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result)
{
#if PACKETVER >= 20140409
struct PACKET_ZC_ACK_ZENY_FROM_MAIL *sPacket;
@@ -20468,15 +20733,15 @@ void clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int64 m
#endif
}
-void clif_parse_rodex_request_items(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_request_items(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_request_items(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_request_items(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_ITEM_FROM_MAIL *rPacket = RFIFOP(fd, 0);
rodex->get_items(sd, rPacket->opentype, rPacket->MailID);
}
-void clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result)
+static void clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result)
{
#if PACKETVER >= 20140409
struct PACKET_ZC_ACK_ITEM_FROM_MAIL *sPacket;
@@ -20496,7 +20761,7 @@ void clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64
#endif
}
-void clif_rodex_icon(int fd, bool show)
+static void clif_rodex_icon(int fd, bool show)
{
// packet add date is 20140716, but from players reports it wrong. Using closer known correct version.
#if PACKETVER >= 20141112
@@ -20507,8 +20772,8 @@ void clif_rodex_icon(int fd, bool show)
#endif
}
-void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_REFRESH_MAIL_LIST *packet = RFIFOP(fd, 0);
#if PACKETVER >= 20170419
@@ -20518,8 +20783,8 @@ void clif_parse_rodex_refresh_maillist(int fd, struct map_session_data *sd)
#endif
}
-void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_OPEN_MAIL *packet = RFIFOP(fd, 0);
#if PACKETVER >= 20170419
@@ -20530,20 +20795,20 @@ void clif_parse_rodex_open_mailbox(int fd, struct map_session_data *sd)
rodex->clean(sd, 1);
}
-void clif_parse_rodex_close_mailbox(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_close_mailbox(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_close_mailbox(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_close_mailbox(int fd, struct map_session_data *sd)
{
rodex->clean(sd, 0);
intif->rodex_checkhasnew(sd);
}
-void clif_parse_rodex_cancel_write_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_rodex_cancel_write_mail(int fd, struct map_session_data *sd)
+static void clif_parse_rodex_cancel_write_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_rodex_cancel_write_mail(int fd, struct map_session_data *sd)
{
rodex->clean(sd, 1);
}
-void clif_skill_scale(struct block_list *bl, int src_id, int x, int y, uint16 skill_id, uint16 skill_lv, int casttime)
+static void clif_skill_scale(struct block_list *bl, int src_id, int x, int y, uint16 skill_id, uint16 skill_lv, int casttime)
{
#if PACKETVER >= 20151223
struct PACKET_ZC_SKILL_SCALE p;
@@ -20571,7 +20836,7 @@ void clif_skill_scale(struct block_list *bl, int src_id, int x, int y, uint16 sk
/// Send hat effects to the client (ZC_HAT_EFFECT).
/// 0A3B <Length>.W <AID>.L <Status>.B { <HatEffectId>.W }
-void clif_hat_effect(struct block_list *bl, struct block_list *tbl, enum send_target target)
+static void clif_hat_effect(struct block_list *bl, struct block_list *tbl, enum send_target target)
{
#if PACKETVER >= 20150422
unsigned char *buf;
@@ -20607,7 +20872,7 @@ void clif_hat_effect(struct block_list *bl, struct block_list *tbl, enum send_ta
#endif
}
-void clif_hat_effect_single(struct block_list *bl, uint16 effectId, bool enable){
+static void clif_hat_effect_single(struct block_list *bl, uint16 effectId, bool enable){
#if PACKETVER >= 20150422
unsigned char buf[13];
@@ -20623,7 +20888,7 @@ void clif_hat_effect_single(struct block_list *bl, uint16 effectId, bool enable)
#endif
}
-bool clif_parse_attendance_db(void)
+static bool clif_parse_attendance_db(void)
{
struct config_t attendance_conf;
struct config_setting_t *attendance = NULL, *it = NULL;
@@ -20645,7 +20910,7 @@ bool clif_parse_attendance_db(void)
return true;
}
-bool clif_attendancedb_libconfig_sub(struct config_setting_t *it, int n, const char *source)
+static bool clif_attendancedb_libconfig_sub(struct config_setting_t *it, int n, const char *source)
{
struct attendance_entry entry = { 0 };
int i32 = 0;
@@ -20670,7 +20935,7 @@ bool clif_attendancedb_libconfig_sub(struct config_setting_t *it, int n, const c
return true;
}
-bool clif_attendance_timediff(struct map_session_data *sd)
+static bool clif_attendance_timediff(struct map_session_data *sd)
{
int64 timediff;
@@ -20682,7 +20947,7 @@ bool clif_attendance_timediff(struct map_session_data *sd)
return false;
return true;
}
-time_t clif_attendance_getendtime(void)
+static time_t clif_attendance_getendtime(void)
{
time_t timestamp;
struct tm tmtime = { 0 };
@@ -20701,29 +20966,22 @@ time_t clif_attendance_getendtime(void)
return timestamp;
}
-void clif_parse_open_ui_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_open_ui_request(int fd, struct map_session_data *sd)
+static void clif_parse_open_ui_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_open_ui_request(int fd, struct map_session_data *sd)
{
-
const struct PACKET_CZ_OPEN_UI *p = RP2PTR(fd);
- if (clif->attendance_getendtime() < time(NULL)) {
-#if PACKETVER >= 20180207
- clif->msgtable_color(sd, MSG_ATTENDANCE_UNAVAILABLE, COLOR_RED);
-#endif
- return;
- }
-
- if (battle_config.feature_enable_attendance_system != 1)
- return;
clif->open_ui(sd, p->UIType);
}
-void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType)
+static void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType)
{
#if PACKETVER >= 20150128
struct PACKET_ZC_OPEN_UI p;
+#if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411
+ int claimed = 0;
+#endif
nullpo_retv(sd);
@@ -20737,8 +20995,15 @@ void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType)
break;
case CZ_ATTENDANCE_UI:
{
+ if (clif->attendance_getendtime() < time(NULL)) {
+#if PACKETVER >= 20180207
+ clif->msgtable_color(sd, MSG_ATTENDANCE_UNAVAILABLE, COLOR_RED);
+#endif
+ return;
+ }
+ if (battle_config.feature_enable_attendance_system != 1)
+ return;
#if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411
- int claimed = 0;
if (clif->attendance_timediff(sd) != true)
++claimed;
else if (sd->status.attendance_count >= VECTOR_LENGTH(clif->attendance_data))
@@ -20760,8 +21025,8 @@ void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType)
#endif
}
-void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd)
+static void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd)
{
#if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411
@@ -20811,12 +21076,12 @@ void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd)
#endif
}
-void clif_parse_cz_blocking_play_cancel(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_cz_blocking_play_cancel(int fd, struct map_session_data *sd)
+static void clif_parse_cz_blocking_play_cancel(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_cz_blocking_play_cancel(int fd, struct map_session_data *sd)
{
}
-void clif_ui_action(struct map_session_data *sd, int32 UIType, int32 data)
+static void clif_ui_action(struct map_session_data *sd, int32 UIType, int32 data)
{
struct PACKET_ZC_UI_ACTION p;
@@ -20830,8 +21095,8 @@ void clif_ui_action(struct map_session_data *sd, int32 UIType, int32 data)
clif->send(&p, sizeof(p), &sd->bl, SELF);
}
-void clif_parse_private_airship_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_private_airship_request(int fd, struct map_session_data *sd)
+static void clif_parse_private_airship_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_private_airship_request(int fd, struct map_session_data *sd)
{
#if PACKETVER_RE_NUM >= 20180321 || PACKETVER_MAIN_NUM >= 20180620
char evname[EVENT_NAME_LENGTH];
@@ -20851,7 +21116,7 @@ void clif_parse_private_airship_request(int fd, struct map_session_data *sd)
#endif
}
-void clif_private_airship_response(struct map_session_data *sd, uint32 flag)
+static void clif_private_airship_response(struct map_session_data *sd, uint32 flag)
{
#if PACKETVER_RE_NUM >= 20180321 || PACKETVER_MAIN_NUM >= 20180620
struct PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE p;
@@ -20872,7 +21137,7 @@ void clif_private_airship_response(struct map_session_data *sd, uint32 flag)
#endif
}
-void clif_stylist_vector_init(void)
+static void clif_stylist_vector_init(void)
{
int i;
for (i = 0; i < MAX_STYLIST_TYPE; i++) {
@@ -20880,7 +21145,7 @@ void clif_stylist_vector_init(void)
}
}
-void clif_stylist_vector_clear(void)
+static void clif_stylist_vector_clear(void)
{
int i;
for (i = 0; i < MAX_STYLIST_TYPE; i++) {
@@ -20888,7 +21153,7 @@ void clif_stylist_vector_clear(void)
}
}
-bool clif_stylist_read_db_libconfig(void)
+static bool clif_stylist_read_db_libconfig(void)
{
struct config_t stylist_conf;
struct config_setting_t *stylist = NULL, *it = NULL;
@@ -20914,7 +21179,7 @@ bool clif_stylist_read_db_libconfig(void)
return true;
}
-bool clif_stylist_read_db_libconfig_sub(struct config_setting_t *it, int idx, const char *source)
+static bool clif_stylist_read_db_libconfig_sub(struct config_setting_t *it, int idx, const char *source)
{
struct stylist_data_entry entry = { 0 };
int i32 = 0, type = 0;
@@ -20953,7 +21218,7 @@ bool clif_stylist_read_db_libconfig_sub(struct config_setting_t *it, int idx, co
return true;
}
-bool clif_style_change_validate_requirements(struct map_session_data *sd, int type, int16 idx)
+static bool clif_style_change_validate_requirements(struct map_session_data *sd, int type, int16 idx)
{
struct item it;
struct stylist_data_entry *entry;
@@ -20984,7 +21249,7 @@ bool clif_style_change_validate_requirements(struct map_session_data *sd, int ty
}
return false;
}
-void clif_stylist_send_rodexitem(struct map_session_data *sd, int16 itemid)
+static void clif_stylist_send_rodexitem(struct map_session_data *sd, int itemid)
{
struct rodex_message msg = { 0 };
@@ -21005,8 +21270,8 @@ void clif_stylist_send_rodexitem(struct map_session_data *sd, int16 itemid)
intif->rodex_sendmail(&msg);
}
-void clif_parse_cz_req_style_change(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
-void clif_parse_cz_req_style_change(int fd, struct map_session_data *sd)
+static void clif_parse_cz_req_style_change(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
+static void clif_parse_cz_req_style_change(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_REQ_STYLE_CHANGE *p = RP2PTR(fd);
@@ -21027,7 +21292,7 @@ void clif_parse_cz_req_style_change(int fd, struct map_session_data *sd)
return;
}
-void clif_cz_req_style_change_sub(struct map_session_data *sd, int type, int16 idx, bool isitem)
+static void clif_cz_req_style_change_sub(struct map_session_data *sd, int type, int16 idx, bool isitem)
{
struct stylist_data_entry *entry;
@@ -21046,7 +21311,7 @@ void clif_cz_req_style_change_sub(struct map_session_data *sd, int type, int16 i
}
}
-void clif_style_change_response(struct map_session_data *sd, enum stylist_shop flag)
+static void clif_style_change_response(struct map_session_data *sd, enum stylist_shop flag)
{
#if PACKETVER >= 20151104
struct PACKET_ZC_STYLE_CHANGE_RES p;
@@ -21065,7 +21330,8 @@ void clif_style_change_response(struct map_session_data *sd, enum stylist_shop f
/*==========================================
* Main client packet processing function
*------------------------------------------*/
-int clif_parse(int fd) {
+static int clif_parse(int fd)
+{
int cmd, packet_len;
struct map_session_data *sd;
int pnum;
@@ -21218,14 +21484,15 @@ int clif_parse(int fd) {
* @param packet_id The packet ID.
* @return The corresponding packet_db entry, if any.
*/
-const struct s_packet_db *clif_packet(int packet_id)
+static const struct s_packet_db *clif_packet(int packet_id)
{
if (packet_id < MIN_PACKET_DB || packet_id > MAX_PACKET_DB || packet_db[packet_id].len == 0)
return NULL;
return &packet_db[packet_id];
}
-static void __attribute__ ((unused)) packetdb_addpacket(short cmd, int len, ...) {
+static void __attribute__ ((unused)) packetdb_addpacket(short cmd, int len, ...)
+{
va_list va;
int i;
int pos;
@@ -21269,13 +21536,17 @@ static void __attribute__ ((unused)) packetdb_addpacket(short cmd, int len, ...)
}
va_end(va);
}
-void packetdb_loaddb(void) {
+
+static void packetdb_loaddb(void)
+{
memset(packet_db,0,sizeof(packet_db));
#define packet(id, size, ...) packetdb_addpacket((id), (size), ##__VA_ARGS__, 0xFFFF)
#include "packets.h" /* load structure data */
#ifdef PACKETVER_ZERO
#include "packets_shuffle_zero.h"
+#elif defined(PACKETVER_RE)
+#include "packets_shuffle_re.h"
#else // PACKETVER_ZERO
#include "packets_shuffle_main.h"
#endif // PACKETVER_ZERO
@@ -21292,7 +21563,9 @@ void packetdb_loaddb(void) {
#endif // defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
#undef packetKeys
}
-void clif_bc_ready(void) {
+
+static void clif_bc_ready(void)
+{
if( battle_config.display_status_timers )
clif->status_change = clif_status_change;
else
@@ -21314,7 +21587,7 @@ void clif_bc_ready(void) {
/*==========================================
*
*------------------------------------------*/
-int do_init_clif(bool minimal)
+static int do_init_clif(bool minimal)
{
if (minimal)
return 0;
@@ -21336,7 +21609,7 @@ int do_init_clif(bool minimal)
return 0;
}
-void do_final_clif(void)
+static void do_final_clif(void)
{
unsigned char i;
@@ -21359,7 +21632,9 @@ void do_final_clif(void)
}
}
-void clif_defaults(void) {
+
+void clif_defaults(void)
+{
clif = &clif_s;
/* vars */
clif->bind_ip = INADDR_ANY;
@@ -21404,11 +21679,11 @@ void clif_defaults(void) {
clif->unequipitemack = clif_unequipitemack;
clif->useitemack = clif_useitemack;
clif->addcards = clif_addcards;
- clif->addcards2 = clif_addcards2;
clif->item_sub = clif_item_sub; // look like unused
clif->getareachar_item = clif_getareachar_item;
clif->cart_additem_ack = clif_cart_additem_ack;
clif->cashshop_load = clif_cashshop_db;
+ clif->cashShopSchedule = clif_cashShopSchedule;
clif->package_announce = clif_package_item_announce;
clif->item_drop_announce = clif_item_drop_announce;
/* unit-related */
@@ -21624,6 +21899,7 @@ void clif_defaults(void) {
clif->messagecolor_self = clif_messagecolor_self;
clif->messagecolor = clif_messagecolor;
clif->disp_overhead = clif_disp_overhead;
+ clif->notify_playerchat = clif_notify_playerchat;
clif->msgtable_skill = clif_msgtable_skill;
clif->msgtable = clif_msgtable;
clif->msgtable_num = clif_msgtable_num;
@@ -21654,6 +21930,7 @@ void clif_defaults(void) {
clif->vendinglist = clif_vendinglist;
clif->buyvending = clif_buyvending;
clif->openvending = clif_openvending;
+ clif->openvendingAck = clif_openvendingAck;
clif->vendingreport = clif_vendingreport;
/* storage handling */
clif->storagelist = clif_storagelist;
diff --git a/src/map/clif.h b/src/map/clif.h
index 63eaeff49..47b2c8f46 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -56,6 +56,9 @@ struct unit_data;
struct view_data;
enum clif_messages;
+enum rodex_add_item;
+enum rodex_get_zeny;
+enum rodex_get_items;
/**
* Defines
@@ -364,7 +367,8 @@ typedef enum useskill_fail_cause { // clif_skill_fail
USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 82,
USESKILL_FAIL_THERE_ARE_NPC_AROUND = 83,
USESKILL_FAIL_NEED_MORE_BULLET = 84,
-}useskill_fail_cause;
+ // max known value 96
+} useskill_fail_cause;
/**
* Used to answer CZ_PC_BUY_CASH_POINT_ITEM (clif_parse_cashshop_buy)
@@ -614,7 +618,7 @@ struct s_packet_db {
};
struct hCSData {
- unsigned short id;
+ int id;
unsigned int price;
};
@@ -625,7 +629,7 @@ struct cdelayed_damage {
struct merge_item {
int16 position;
- int16 nameid;
+ int nameid;
};
/* attendance data */
@@ -638,8 +642,8 @@ struct attendance_entry {
struct stylist_data_entry {
int16 id;
int32 zeny;
- int16 itemid;
- int16 boxid;
+ int itemid;
+ int boxid;
};
VECTOR_DECL(struct stylist_data_entry) stylist_data[MAX_STYLIST_TYPE];
@@ -719,14 +723,14 @@ struct clif_interface {
void (*equipitemack) (struct map_session_data *sd,int n,int pos,enum e_EQUIP_ITEM_ACK result);
void (*unequipitemack) (struct map_session_data *sd,int n,int pos,enum e_UNEQUIP_ITEM_ACK result);
void (*useitemack) (struct map_session_data *sd,int index,int amount,bool ok);
- void (*addcards) (unsigned char* buf, struct item* item);
- void (*addcards2) (unsigned short *cards, struct item* item);
+ void (*addcards) (struct EQUIPSLOTINFO *buf, struct item* item);
void (*item_sub) (unsigned char *buf, int n, struct item *i, struct item_data *id, int equip);
void (*getareachar_item) (struct map_session_data* sd,struct flooritem_data* fitem);
void (*cart_additem_ack) (struct map_session_data *sd, int flag);
void (*cashshop_load) (void);
- void (*package_announce) (struct map_session_data *sd, unsigned short nameid, unsigned short containerid);
- void (*item_drop_announce) (struct map_session_data *sd, unsigned short nameid, char *monsterName);
+ void (*cashShopSchedule) (int fd, struct map_session_data *sd);
+ void (*package_announce) (struct map_session_data *sd, int nameid, int containerid);
+ void (*item_drop_announce) (struct map_session_data *sd, int nameid, char *monsterName);
/* unit-related */
void (*clearunit_single) (int id, clr_type type, int fd);
void (*clearunit_area) (struct block_list* bl, clr_type type);
@@ -807,7 +811,7 @@ struct clif_interface {
int (*insight) (struct block_list *bl,va_list ap);
int (*outsight) (struct block_list *bl,va_list ap);
void (*skillcastcancel) (struct block_list* bl);
- void (*skill_fail) (struct map_session_data *sd,uint16 skill_id,enum useskill_fail_cause cause,int btype);
+ void (*skill_fail) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id);
void (*skill_cooldown) (struct map_session_data *sd, uint16 skill_id, unsigned int duration);
void (*skill_memomessage) (struct map_session_data* sd, int type);
void (*skill_mapinfomessage) (struct map_session_data *sd, int type);
@@ -839,7 +843,7 @@ struct clif_interface {
void (*hpmeter_single) (int fd, int id, unsigned int hp, unsigned int maxhp);
int (*hpmeter_sub) (struct block_list *bl, va_list ap);
void (*upgrademessage) (int fd, int result, int item_id);
- void (*get_weapon_view) (struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand);
+ void (*get_weapon_view) (struct map_session_data* sd, int *rhand, int *lhand);
void (*gospel_info) (struct map_session_data *sd, int type);
void (*feel_req) (int fd, struct map_session_data *sd, uint16 skill_lv);
void (*starskill) (struct map_session_data* sd, const char* mapname, int monster_id, unsigned char star, unsigned char result);
@@ -939,7 +943,8 @@ struct clif_interface {
void (*broadcast2) (struct block_list *bl, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target);
void (*messagecolor_self) (int fd, uint32 color, const char *msg);
void (*messagecolor) (struct block_list* bl, uint32 color, const char* msg);
- void (*disp_overhead) (struct block_list *bl, const char* mes);
+ void (*disp_overhead) (struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl);
+ void (*notify_playerchat) (struct block_list *bl, const char *mes);
void (*msgtable) (struct map_session_data* sd, enum clif_messages msg_id);
void (*msgtable_num) (struct map_session_data *sd, enum clif_messages msg_id, int value);
void (*msgtable_skill) (struct map_session_data *sd, uint16 skill_id, enum clif_messages msg_id);
@@ -971,6 +976,7 @@ struct clif_interface {
void (*vendinglist) (struct map_session_data* sd, unsigned int id, struct s_vending* vending_list);
void (*buyvending) (struct map_session_data* sd, int index, int amount, int fail);
void (*openvending) (struct map_session_data* sd, int id, struct s_vending* vending_list);
+ void (*openvendingAck) (int fd, int result);
void (*vendingreport) (struct map_session_data* sd, int index, int amount, uint32 char_id, int zeny);
/* storage handling */
void (*storagelist) (struct map_session_data* sd, struct item* items, int items_length);
@@ -1135,9 +1141,9 @@ struct clif_interface {
void (*buyingstore_disappear_entry_single) (struct map_session_data* sd, struct map_session_data* pl_sd);
void (*buyingstore_itemlist) (struct map_session_data* sd, struct map_session_data* pl_sd);
void (*buyingstore_trade_failed_buyer) (struct map_session_data* sd, short result);
- void (*buyingstore_update_item) (struct map_session_data* sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny);
+ void (*buyingstore_update_item) (struct map_session_data* sd, int nameid, unsigned short amount, uint32 char_id, int zeny);
void (*buyingstore_delete_item) (struct map_session_data* sd, short index, unsigned short amount, int price);
- void (*buyingstore_trade_failed_seller) (struct map_session_data* sd, short result, unsigned short nameid);
+ void (*buyingstore_trade_failed_seller) (struct map_session_data* sd, short result, int nameid);
/* search store-related */
void (*search_store_info_ack) (struct map_session_data* sd);
void (*search_store_info_failed) (struct map_session_data* sd, unsigned char reason);
@@ -1180,7 +1186,7 @@ struct clif_interface {
void (*npc_market_purchase_ack) (struct map_session_data *sd, const struct itemlist *item_list, unsigned char response);
/* */
bool (*parse_roulette_db) (void);
- void (*roulette_generate_ack) (struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID);
+ void (*roulette_generate_ack) (struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, int bonusItemID);
/* Merge Items */
void (*openmergeitem) (int fd, struct map_session_data *sd);
void (*cancelmergeitem) (int fd, struct map_session_data *sd);
@@ -1443,7 +1449,7 @@ struct clif_interface {
void (*pRodexOpenWriteMail) (int fd, struct map_session_data *sd);
void (*rodex_open_write_mail) (int fd, const char *receiver_name, int8 result);
void (*pRodexAddItem) (int fd, struct map_session_data *sd);
- void (*rodex_add_item_result) (struct map_session_data *sd, int16 idx, int16 amount, int8 result);
+ void (*rodex_add_item_result) (struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result);
void (*pRodexRemoveItem) (int fd, struct map_session_data *sd);
void (*rodex_remove_item_result) (struct map_session_data *sd, int16 idx, int16 amount);
void (*pRodexSendMail) (int fd, struct map_session_data *sd);
@@ -1463,9 +1469,9 @@ struct clif_interface {
void (*rodex_delete_mail) (struct map_session_data *sd, int8 opentype, int64 mail_id);
void (*pRodexRefreshMaillist) (int fd, struct map_session_data *sd);
void (*pRodexRequestZeny) (int fd, struct map_session_data *sd);
- void (*rodex_request_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result);
+ void (*rodex_request_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result);
void (*pRodexRequestItems) (int fd, struct map_session_data *sd);
- void (*rodex_request_items) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result);
+ void (*rodex_request_items) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result);
void (*rodex_icon) (int fd, bool show);
void (*skill_scale) (struct block_list *bl, int src_id, int x, int y, uint16 skill_id, uint16 skill_lv, int casttime);
/* Clan System */
@@ -1494,7 +1500,7 @@ struct clif_interface {
bool (*stylist_read_db_libconfig) (void);
bool (*stylist_read_db_libconfig_sub) (struct config_setting_t *it, int idx, const char *source);
bool (*style_change_validate_requirements) (struct map_session_data *sd, int type, int16 idx);
- void (*stylist_send_rodexitem) (struct map_session_data *sd, int16 itemid);
+ void (*stylist_send_rodexitem) (struct map_session_data *sd, int itemid);
void (*pReqStyleChange) (int fd, struct map_session_data *sd);
void (*cz_req_style_change_sub) (struct map_session_data *sd, int type, int16 idx, bool isitem);
void (*style_change_response) (struct map_session_data *sd, enum stylist_shop flag);
diff --git a/src/map/duel.c b/src/map/duel.c
index d22c34495..39e5b5253 100644
--- a/src/map/duel.c
+++ b/src/map/duel.c
@@ -33,13 +33,14 @@
#include <string.h>
#include <time.h>
-struct duel_interface duel_s;
+static struct duel_interface duel_s;
struct duel_interface *duel;
/*==========================================
* Duel organizing functions [LuzZza]
*------------------------------------------*/
-void duel_savetime(struct map_session_data* sd) {
+static void duel_savetime(struct map_session_data *sd)
+{
time_t clock;
struct tm *t;
@@ -49,7 +50,8 @@ void duel_savetime(struct map_session_data* sd) {
pc_setglobalreg(sd, script->add_str("PC_LAST_DUEL_TIME"), t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min);
}
-int duel_checktime(struct map_session_data* sd) {
+static int duel_checktime(struct map_session_data *sd)
+{
int diff;
time_t clock;
struct tm *t;
@@ -62,7 +64,7 @@ int duel_checktime(struct map_session_data* sd) {
return !(diff >= 0 && diff < battle_config.duel_time_interval);
}
-static int duel_showinfo_sub(struct map_session_data* sd, va_list va)
+static int duel_showinfo_sub(struct map_session_data *sd, va_list va)
{
struct map_session_data *ssd = va_arg(va, struct map_session_data*);
int *p = va_arg(va, int*);
@@ -77,7 +79,8 @@ static int duel_showinfo_sub(struct map_session_data* sd, va_list va)
return 1;
}
-void duel_showinfo(const unsigned int did, struct map_session_data* sd) {
+static void duel_showinfo(const unsigned int did, struct map_session_data *sd)
+{
int p=0;
char output[256];
@@ -97,7 +100,8 @@ void duel_showinfo(const unsigned int did, struct map_session_data* sd) {
map->foreachpc(duel_showinfo_sub, sd, &p);
}
-int duel_create(struct map_session_data* sd, const unsigned int maxpl) {
+static int duel_create(struct map_session_data *sd, const unsigned int maxpl)
+{
int i=1;
char output[256];
@@ -120,7 +124,8 @@ int duel_create(struct map_session_data* sd, const unsigned int maxpl) {
return i;
}
-void duel_invite(const unsigned int did, struct map_session_data* sd, struct map_session_data* target_sd) {
+static void duel_invite(const unsigned int did, struct map_session_data *sd, struct map_session_data *target_sd)
+{
char output[256];
nullpo_retv(sd);
@@ -137,7 +142,7 @@ void duel_invite(const unsigned int did, struct map_session_data* sd, struct map
clif->broadcast(&target_sd->bl, output, (int)strlen(output)+1, BC_BLUE, SELF);
}
-static int duel_leave_sub(struct map_session_data* sd, va_list va)
+static int duel_leave_sub(struct map_session_data *sd, va_list va)
{
int did = va_arg(va, int);
nullpo_ret(sd);
@@ -146,7 +151,8 @@ static int duel_leave_sub(struct map_session_data* sd, va_list va)
return 0;
}
-void duel_leave(const unsigned int did, struct map_session_data* sd) {
+static void duel_leave(const unsigned int did, struct map_session_data *sd)
+{
char output[256];
nullpo_retv(sd);
@@ -166,7 +172,8 @@ void duel_leave(const unsigned int did, struct map_session_data* sd) {
clif->maptypeproperty2(&sd->bl,SELF);
}
-void duel_accept(const unsigned int did, struct map_session_data* sd) {
+static void duel_accept(const unsigned int did, struct map_session_data *sd)
+{
char output[256];
nullpo_retv(sd);
@@ -183,7 +190,8 @@ void duel_accept(const unsigned int did, struct map_session_data* sd) {
clif->maptypeproperty2(&sd->bl,SELF);
}
-void duel_reject(const unsigned int did, struct map_session_data* sd) {
+static void duel_reject(const unsigned int did, struct map_session_data *sd)
+{
char output[256];
nullpo_retv(sd);
@@ -195,10 +203,12 @@ void duel_reject(const unsigned int did, struct map_session_data* sd) {
sd->duel_invite = 0;
}
-void do_final_duel(void) {
+static void do_final_duel(void)
+{
}
-void do_init_duel(bool minimal) {
+static void do_init_duel(bool minimal)
+{
if (minimal)
return;
@@ -206,11 +216,12 @@ void do_init_duel(bool minimal) {
}
/*=====================================
-* Default Functions : duel.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void duel_defaults(void) {
+ * Default Functions : duel.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void duel_defaults(void)
+{
duel = &duel_s;
/* vars */
duel->count = 0;
diff --git a/src/map/elemental.c b/src/map/elemental.c
index 6b6d6bc54..b7bd5c090 100644
--- a/src/map/elemental.c
+++ b/src/map/elemental.c
@@ -57,20 +57,23 @@
#include <stdlib.h>
#include <string.h>
-struct elemental_interface elemental_s;
+static struct elemental_interface elemental_s;
struct elemental_interface *elemental;
-int elemental_search_index(int class_) {
+static int elemental_search_index(int class_)
+{
int i;
ARR_FIND(0, MAX_ELEMENTAL_CLASS, i, elemental->db[i].class_ == class_);
return (i == MAX_ELEMENTAL_CLASS)?-1:i;
}
-bool elemental_class(int class_) {
+static bool elemental_class(int class_)
+{
return (bool)(elemental->search_index(class_) > -1);
}
-struct view_data * elemental_get_viewdata(int class_) {
+static struct view_data *elemental_get_viewdata(int class_)
+{
int i = elemental->search_index(class_);
if( i < 0 )
return 0;
@@ -78,7 +81,8 @@ struct view_data * elemental_get_viewdata(int class_) {
return &elemental->db[i].vd;
}
-int elemental_create(struct map_session_data *sd, int class_, unsigned int lifetime) {
+static int elemental_create(struct map_session_data *sd, int class_, unsigned int lifetime)
+{
struct s_elemental ele;
struct s_elemental_db *db;
int i, summon_level, skill_level;
@@ -169,7 +173,8 @@ int elemental_create(struct map_session_data *sd, int class_, unsigned int lifet
return 1;
}
-int elemental_get_lifetime(struct elemental_data *ed) {
+static int elemental_get_lifetime(struct elemental_data *ed)
+{
const struct TimerData * td;
if( ed == NULL || ed->summon_timer == INVALID_TIMER )
return 0;
@@ -178,7 +183,8 @@ int elemental_get_lifetime(struct elemental_data *ed) {
return (td != NULL) ? DIFF_TICK32(td->tick, timer->gettick()) : 0;
}
-int elemental_save(struct elemental_data *ed) {
+static int elemental_save(struct elemental_data *ed)
+{
nullpo_retr(1, ed);
ed->elemental.mode = ed->battle_status.mode;
ed->elemental.hp = ed->battle_status.hp;
@@ -197,7 +203,8 @@ int elemental_save(struct elemental_data *ed) {
return 1;
}
-int elemental_summon_end_timer(int tid, int64 tick, int id, intptr_t data) {
+static int elemental_summon_end_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct elemental_data *ed;
@@ -217,14 +224,16 @@ int elemental_summon_end_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void elemental_summon_stop(struct elemental_data *ed) {
+static void elemental_summon_stop(struct elemental_data *ed)
+{
nullpo_retv(ed);
if( ed->summon_timer != INVALID_TIMER )
timer->delete(ed->summon_timer, elemental->summon_end_timer);
ed->summon_timer = INVALID_TIMER;
}
-int elemental_delete(struct elemental_data *ed, int reply) {
+static int elemental_delete(struct elemental_data *ed, int reply)
+{
struct map_session_data *sd;
nullpo_ret(ed);
@@ -246,7 +255,8 @@ int elemental_delete(struct elemental_data *ed, int reply) {
return unit->remove_map(&ed->bl, 0, ALC_MARK);
}
-void elemental_summon_init(struct elemental_data *ed) {
+static void elemental_summon_init(struct elemental_data *ed)
+{
nullpo_retv(ed);
if (ed->summon_timer == INVALID_TIMER)
ed->summon_timer = timer->add(timer->gettick() + ed->elemental.life_time, elemental->summon_end_timer, ed->master->bl.id, 0);
@@ -254,7 +264,7 @@ void elemental_summon_init(struct elemental_data *ed) {
ed->regen.state.block = 0;
}
-int elemental_data_received(const struct s_elemental *ele, bool flag)
+static int elemental_data_received(const struct s_elemental *ele, bool flag)
{
struct map_session_data *sd;
struct elemental_data *ed;
@@ -318,7 +328,8 @@ int elemental_data_received(const struct s_elemental *ele, bool flag)
return 1;
}
-int elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id) {
+static int elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id)
+{
struct block_list *bl;
sc_type type = status->skill2sc(skill_id);
@@ -365,7 +376,8 @@ int elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id) {
return 1;
}
-int elemental_clean_effect(struct elemental_data *ed) {
+static int elemental_clean_effect(struct elemental_data *ed)
+{
struct map_session_data *sd;
nullpo_ret(ed);
@@ -425,7 +437,8 @@ int elemental_clean_effect(struct elemental_data *ed) {
return 1;
}
-int elemental_action(struct elemental_data *ed, struct block_list *bl, int64 tick) {
+static int elemental_action(struct elemental_data *ed, struct block_list *bl, int64 tick)
+{
struct skill_condition req;
uint16 skill_id, skill_lv;
int i;
@@ -506,7 +519,8 @@ int elemental_action(struct elemental_data *ed, struct block_list *bl, int64 tic
* Action that elemental perform after changing mode.
* Activates one of the skills of the new mode.
*-------------------------------------------------------------*/
-int elemental_change_mode_ack(struct elemental_data *ed, int mode) {
+static int elemental_change_mode_ack(struct elemental_data *ed, int mode)
+{
struct block_list *bl = &ed->master->bl;
uint16 skill_id, skill_lv;
int i;
@@ -552,7 +566,7 @@ int elemental_change_mode_ack(struct elemental_data *ed, int mode) {
* @param mode The new mode.
* @retval 1 in case of success.
*/
-int elemental_change_mode(struct elemental_data *ed, uint32 mode)
+static int elemental_change_mode(struct elemental_data *ed, uint32 mode)
{
int skillmode = EL_SKILLMODE_PASIVE;
nullpo_ret(ed);
@@ -580,7 +594,8 @@ int elemental_change_mode(struct elemental_data *ed, uint32 mode)
return 1;
}
-void elemental_heal(struct elemental_data *ed, int hp, int sp) {
+static void elemental_heal(struct elemental_data *ed, int hp, int sp)
+{
nullpo_retv(ed);
if( hp )
clif->elemental_updatestatus(ed->master, SP_HP);
@@ -588,12 +603,14 @@ void elemental_heal(struct elemental_data *ed, int hp, int sp) {
clif->elemental_updatestatus(ed->master, SP_SP);
}
-int elemental_dead(struct elemental_data *ed) {
+static int elemental_dead(struct elemental_data *ed)
+{
elemental->delete(ed, 1);
return 0;
}
-int elemental_unlocktarget(struct elemental_data *ed) {
+static int elemental_unlocktarget(struct elemental_data *ed)
+{
nullpo_ret(ed);
ed->target_id = 0;
@@ -602,7 +619,8 @@ int elemental_unlocktarget(struct elemental_data *ed) {
return 0;
}
-int elemental_skillnotok(uint16 skill_id, struct elemental_data *ed) {
+static int elemental_skillnotok(uint16 skill_id, struct elemental_data *ed)
+{
int idx = skill->get_index(skill_id);
nullpo_retr(1,ed);
@@ -612,7 +630,8 @@ int elemental_skillnotok(uint16 skill_id, struct elemental_data *ed) {
return skill->not_ok(skill_id, ed->master);
}
-struct skill_condition elemental_skill_get_requirements(uint16 skill_id, uint16 skill_lv){
+static struct skill_condition elemental_skill_get_requirements(uint16 skill_id, uint16 skill_lv)
+{
struct skill_condition req;
int idx = skill->get_index(skill_id);
@@ -630,7 +649,8 @@ struct skill_condition elemental_skill_get_requirements(uint16 skill_id, uint16
return req;
}
-int elemental_set_target( struct map_session_data *sd, struct block_list *bl ) {
+static int elemental_set_target(struct map_session_data *sd, struct block_list *bl)
+{
struct elemental_data *ed;
nullpo_ret(sd);
@@ -650,7 +670,8 @@ int elemental_set_target( struct map_session_data *sd, struct block_list *bl ) {
return 1;
}
-int elemental_ai_sub_timer_activesearch(struct block_list *bl, va_list ap) {
+static int elemental_ai_sub_timer_activesearch(struct block_list *bl, va_list ap)
+{
struct elemental_data *ed;
struct block_list **target;
int dist;
@@ -689,7 +710,8 @@ int elemental_ai_sub_timer_activesearch(struct block_list *bl, va_list ap) {
return 0;
}
-int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data *sd, int64 tick) {
+static int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data *sd, int64 tick)
+{
struct block_list *target = NULL;
int master_dist, view_range;
uint32 mode;
@@ -805,7 +827,8 @@ int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data *s
return 0;
}
-int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
+static int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap)
+{
int64 tick = va_arg(ap,int64);
nullpo_ret(sd);
if(sd->status.ele_id && sd->ed)
@@ -814,12 +837,14 @@ int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
return 0;
}
-int elemental_ai_timer(int tid, int64 tick, int id, intptr_t data) {
+static int elemental_ai_timer(int tid, int64 tick, int id, intptr_t data)
+{
map->foreachpc(elemental->ai_sub_foreachclient,tick);
return 0;
}
-int read_elementaldb(void) {
+static int read_elementaldb(void)
+{
FILE *fp;
char line[1024], *p;
char *str[26];
@@ -911,7 +936,8 @@ int read_elementaldb(void) {
return 0;
}
-int read_elemental_skilldb(void) {
+static int read_elemental_skilldb(void)
+{
FILE *fp;
char line[1024], *p;
char *str[4];
@@ -983,16 +1009,19 @@ int read_elemental_skilldb(void) {
return 0;
}
-void reload_elementaldb(void) {
+static void reload_elementaldb(void)
+{
elemental->read_db();
elemental->reload_skilldb();
}
-void reload_elemental_skilldb(void) {
+static void reload_elemental_skilldb(void)
+{
elemental->read_skilldb();
}
-int do_init_elemental(bool minimal) {
+static int do_init_elemental(bool minimal)
+{
if (minimal)
return 0;
@@ -1005,16 +1034,18 @@ int do_init_elemental(bool minimal) {
return 0;
}
-void do_final_elemental(void) {
+static void do_final_elemental(void)
+{
return;
}
/*=====================================
-* Default Functions : elemental.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void elemental_defaults(void) {
+ * Default Functions : elemental.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void elemental_defaults(void)
+{
elemental = &elemental_s;
/* */
diff --git a/src/map/guild.c b/src/map/guild.c
index 8b9c0fd43..28954edf1 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -51,13 +51,13 @@
#include <stdlib.h>
#include <string.h>
-struct guild_interface guild_s;
+static struct guild_interface guild_s;
struct guild_interface *guild;
/*==========================================
* Retrieves and validates the sd pointer for this guild member [Skotlex]
*------------------------------------------*/
-struct map_session_data *guild_sd_check(int guild_id, int account_id, int char_id)
+static struct map_session_data *guild_sd_check(int guild_id, int account_id, int char_id)
{
struct map_session_data *sd = map->id2sd(account_id);
@@ -74,14 +74,16 @@ struct map_session_data *guild_sd_check(int guild_id, int account_id, int char_i
}
// Modified [Komurka]
-int guild_skill_get_max (int id) {
+static int guild_skill_get_max(int id)
+{
if (id < GD_SKILLBASE || id >= GD_SKILLBASE+MAX_GUILDSKILL)
return 0;
return guild->skill_tree[id-GD_SKILLBASE].max;
}
// Retrieve skill_lv learned by guild
-int guild_checkskill(struct guild *g, int id) {
+static int guild_checkskill(struct guild *g, int id)
+{
int idx = id - GD_SKILLBASE;
nullpo_ret(g);
if (idx < 0 || idx >= MAX_GUILDSKILL)
@@ -92,7 +94,7 @@ int guild_checkskill(struct guild *g, int id) {
/*==========================================
* guild_skill_tree.txt reading - from jA [Komurka]
*------------------------------------------*/
-bool guild_read_guildskill_tree_db(char* split[], int columns, int current)
+static bool guild_read_guildskill_tree_db(char *split[], int columns, int current)
{// <skill id>,<max lv>,<req id1>,<req lv1>,<req id2>,<req lv2>,<req id3>,<req lv3>,<req id4>,<req lv4>,<req id5>,<req lv5>
int k, id, skill_id;
@@ -125,7 +127,7 @@ bool guild_read_guildskill_tree_db(char* split[], int columns, int current)
/*==========================================
* Guild skill check - from jA [Komurka]
*------------------------------------------*/
-int guild_check_skill_require(struct guild *g,int id)
+static int guild_check_skill_require(struct guild *g, int id)
{
int i;
int idx = id-GD_SKILLBASE;
@@ -145,7 +147,7 @@ int guild_check_skill_require(struct guild *g,int id)
return 1;
}
-bool guild_read_castledb(char* str[], int columns, int current)
+static bool guild_read_castledb(char *str[], int columns, int current)
{// <castle id>,<map name>,<castle name>,<castle event>[,<reserved/unused switch flag>]
struct guild_castle *gc;
int index;
@@ -169,13 +171,13 @@ bool guild_read_castledb(char* str[], int columns, int current)
}
/// lookup: guild id -> guild*
-struct guild* guild_search(int guild_id)
+static struct guild *guild_search(int guild_id)
{
return (struct guild*)idb_get(guild->db,guild_id);
}
/// lookup: guild name -> guild*
-struct guild* guild_searchname(char* str)
+static struct guild *guild_searchname(char *str)
{
struct guild* g;
struct DBIterator *iter = db_iterator(guild->db);
@@ -192,13 +194,13 @@ struct guild* guild_searchname(char* str)
}
/// lookup: castle id -> castle*
-struct guild_castle* guild_castle_search(int gcid)
+static struct guild_castle *guild_castle_search(int gcid)
{
return (struct guild_castle*)idb_get(guild->castle_db,gcid);
}
/// lookup: map index -> castle*
-struct guild_castle* guild_mapindex2gc(short map_index)
+static struct guild_castle *guild_mapindex2gc(short map_index)
{
struct guild_castle* gc;
struct DBIterator *iter = db_iterator(guild->castle_db);
@@ -214,12 +216,12 @@ struct guild_castle* guild_mapindex2gc(short map_index)
}
/// lookup: map name -> castle*
-struct guild_castle* guild_mapname2gc(const char* mapname)
+static struct guild_castle *guild_mapname2gc(const char *mapname)
{
return guild->mapindex2gc(mapindex->name2id(mapname));
}
-struct map_session_data* guild_getavailablesd(struct guild* g)
+static struct map_session_data *guild_getavailablesd(struct guild *g)
{
int i;
@@ -230,7 +232,7 @@ struct map_session_data* guild_getavailablesd(struct guild* g)
}
/// lookup: player AID/CID -> member index
-int guild_getindex(const struct guild *g, int account_id, int char_id)
+static int guild_getindex(const struct guild *g, int account_id, int char_id)
{
int i;
@@ -245,7 +247,7 @@ int guild_getindex(const struct guild *g, int account_id, int char_id)
}
/// lookup: player sd -> member position
-int guild_getposition(struct guild* g, struct map_session_data* sd)
+static int guild_getposition(struct guild *g, struct map_session_data *sd)
{
int i;
@@ -257,7 +259,7 @@ int guild_getposition(struct guild* g, struct map_session_data* sd)
}
//Creation of member information
-void guild_makemember(struct guild_member *m,struct map_session_data *sd)
+static void guild_makemember(struct guild_member *m, struct map_session_data *sd)
{
nullpo_retv(sd);
nullpo_retv(m);
@@ -283,7 +285,7 @@ void guild_makemember(struct guild_member *m,struct map_session_data *sd)
* Server cache to be flushed to inter the Guild EXP
* @see DBApply
*/
-int guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap)
+static int guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap)
{
int i;
struct guild_expcache *c;
@@ -311,7 +313,8 @@ int guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-int guild_payexp_timer(int tid, int64 tick, int id, intptr_t data) {
+static int guild_payexp_timer(int tid, int64 tick, int id, intptr_t data)
+{
guild->expcache_db->clear(guild->expcache_db,guild->payexp_timer_sub);
return 0;
}
@@ -320,7 +323,7 @@ int guild_payexp_timer(int tid, int64 tick, int id, intptr_t data) {
* Taken from party_send_xy_timer_sub. [Skotlex]
* @see DBApply
*/
-int guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
+static int guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct guild *g = DB->data2ptr(data);
int i;
@@ -345,12 +348,13 @@ int guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap)
}
//Code from party_send_xy_timer [Skotlex]
-int guild_send_xy_timer(int tid, int64 tick, int id, intptr_t data) {
+static int guild_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
+{
guild->db->foreach(guild->db,guild->send_xy_timer_sub,tick);
return 0;
}
-int guild_send_dot_remove(struct map_session_data *sd)
+static int guild_send_dot_remove(struct map_session_data *sd)
{
nullpo_ret(sd);
if (sd->status.guild_id)
@@ -359,7 +363,7 @@ int guild_send_dot_remove(struct map_session_data *sd)
}
//------------------------------------------------------------------------
-int guild_create(struct map_session_data *sd, const char *name)
+static int guild_create(struct map_session_data *sd, const char *name)
{
char tname[NAME_LENGTH];
struct guild_member m;
@@ -393,7 +397,8 @@ int guild_create(struct map_session_data *sd, const char *name)
}
//Whether or not to create guild
-int guild_created(int account_id,int guild_id) {
+static int guild_created(int account_id, int guild_id)
+{
struct map_session_data *sd=map->id2sd(account_id);
if(sd==NULL)
@@ -414,13 +419,13 @@ int guild_created(int account_id,int guild_id) {
}
//Information request
-int guild_request_info(int guild_id)
+static int guild_request_info(int guild_id)
{
return intif->guild_request_info(guild_id);
}
//Information request with event
-int guild_npc_request_info(int guild_id,const char *event)
+static int guild_npc_request_info(int guild_id, const char *event)
{
if (guild->search(guild_id) != NULL) {
if (event != NULL && *event != '\0')
@@ -443,7 +448,7 @@ int guild_npc_request_info(int guild_id,const char *event)
}
//Confirmation of the character belongs to guild
-int guild_check_member(const struct guild *g)
+static int guild_check_member(const struct guild *g)
{
int i;
struct map_session_data *sd;
@@ -469,7 +474,7 @@ int guild_check_member(const struct guild *g)
}
//Delete association with guild_id for all characters
-int guild_recv_noinfo(int guild_id)
+static int guild_recv_noinfo(int guild_id)
{
struct map_session_data *sd;
struct s_mapiterator* iter;
@@ -485,7 +490,7 @@ int guild_recv_noinfo(int guild_id)
}
//Get and display information for all member
-int guild_recv_info(const struct guild *sg)
+static int guild_recv_info(const struct guild *sg)
{
struct guild *g,before;
int i,bm,m;
@@ -634,7 +639,8 @@ int guild_recv_info(const struct guild *sg)
/*=============================================
* Player sd send a guild invatation to player tsd to join his guild
*--------------------------------------------*/
-int guild_invite(struct map_session_data *sd, struct map_session_data *tsd) {
+static int guild_invite(struct map_session_data *sd, struct map_session_data *tsd)
+{
struct guild *g;
int i;
@@ -688,7 +694,8 @@ int guild_invite(struct map_session_data *sd, struct map_session_data *tsd) {
/// Guild invitation reply.
/// flag: 0:rejected, 1:accepted
-int guild_reply_invite(struct map_session_data* sd, int guild_id, int flag) {
+static int guild_reply_invite(struct map_session_data *sd, int guild_id, int flag)
+{
struct map_session_data* tsd;
nullpo_ret(sd);
@@ -746,7 +753,7 @@ int guild_reply_invite(struct map_session_data* sd, int guild_id, int flag) {
//- If guild is not in memory, it is requested
//- Otherwise sd pointer is set up.
//- Player must be authed and must belong to a guild before invoking this method
-void guild_member_joined(struct map_session_data *sd)
+static void guild_member_joined(struct map_session_data *sd)
{
struct guild* g;
int i;
@@ -780,7 +787,8 @@ void guild_member_joined(struct map_session_data *sd)
/*==========================================
* Add a player to a given guild_id
*----------------------------------------*/
-int guild_member_added(int guild_id,int account_id,int char_id,int flag) {
+static int guild_member_added(int guild_id, int account_id, int char_id, int flag)
+{
struct map_session_data *sd = map->id2sd(account_id),*sd2;
struct guild *g;
@@ -828,7 +836,7 @@ int guild_member_added(int guild_id,int account_id,int char_id,int flag) {
* Player request leaving a given guild_id
* mes - non null terminated string
*----------------------------------------*/
-int guild_leave(struct map_session_data* sd, int guild_id, int account_id, int char_id, const char* mes)
+static int guild_leave(struct map_session_data *sd, int guild_id, int account_id, int char_id, const char *mes)
{
struct guild *g;
@@ -857,7 +865,8 @@ int guild_leave(struct map_session_data* sd, int guild_id, int account_id, int c
* Request remove a player to a given guild_id
* mes - non null terminated string
*----------------------------------------*/
-int guild_expulsion(struct map_session_data* sd, int guild_id, int account_id, int char_id, const char* mes) {
+static int guild_expulsion(struct map_session_data *sd, int guild_id, int account_id, int char_id, const char *mes)
+{
struct map_session_data *tsd;
struct guild *g;
int i,ps;
@@ -892,7 +901,7 @@ int guild_expulsion(struct map_session_data* sd, int guild_id, int account_id, i
return 0;
}
-int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, const char* name, const char* mes)
+static int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes)
{
int i;
struct guild* g = guild->search(guild_id);
@@ -948,7 +957,8 @@ int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, c
return 0;
}
-void guild_retrieveitembound(int char_id,int aid,int guild_id) {
+static void guild_retrieveitembound(int char_id, int aid, int guild_id)
+{
#ifdef GP_BOUND_ITEMS
struct map_session_data *sd = map->charid2sd(char_id);
if (sd != NULL) { //Character is online
@@ -970,8 +980,9 @@ void guild_retrieveitembound(int char_id,int aid,int guild_id) {
#endif
}
-int guild_send_memberinfoshort(struct map_session_data *sd,int online)
-{ // cleaned up [LuzZza]
+// cleaned up [LuzZza]
+static int guild_send_memberinfoshort(struct map_session_data *sd, int online)
+{
struct guild *g;
nullpo_ret(sd);
@@ -1002,8 +1013,9 @@ int guild_send_memberinfoshort(struct map_session_data *sd,int online)
return 0;
}
-int guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login)
-{ // cleaned up [LuzZza]
+// 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)
+{
int i, alv, c, idx = INDEX_NOT_FOUND, om = 0, oldonline = -1;
struct guild *g = guild->search(guild_id);
@@ -1068,7 +1080,7 @@ int guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int on
/*====================================================
* Send a message to whole guild
*---------------------------------------------------*/
-int guild_send_message(struct map_session_data *sd, const char *mes)
+static int guild_send_message(struct map_session_data *sd, const char *mes)
{
int len = (int)strlen(mes);
nullpo_ret(sd);
@@ -1087,7 +1099,7 @@ int guild_send_message(struct map_session_data *sd, const char *mes)
/*====================================================
* Guild receive a message, will be displayed to whole member
*---------------------------------------------------*/
-int guild_recv_message(int guild_id,int account_id,const char *mes,int len)
+static int guild_recv_message(int guild_id, int account_id, const char *mes, int len)
{
struct guild *g;
if( (g=guild->search(guild_id))==NULL)
@@ -1099,7 +1111,7 @@ int guild_recv_message(int guild_id,int account_id,const char *mes,int len)
/*====================================================
* Member changing position in guild
*---------------------------------------------------*/
-int guild_change_memberposition(int guild_id,int account_id,int char_id,short idx)
+static int guild_change_memberposition(int guild_id, int account_id, int char_id, short idx)
{
return intif->guild_change_memberinfo(guild_id,account_id,char_id,GMI_POSITION,&idx,sizeof(idx));
}
@@ -1107,7 +1119,7 @@ int guild_change_memberposition(int guild_id,int account_id,int char_id,short id
/*====================================================
* Notification of new position for member
*---------------------------------------------------*/
-int guild_memberposition_changed(struct guild *g,int idx,int pos)
+static int guild_memberposition_changed(struct guild *g, int idx, int pos)
{
nullpo_ret(g);
Assert_ret(idx >= 0 && idx < MAX_GUILD);
@@ -1124,7 +1136,7 @@ int guild_memberposition_changed(struct guild *g,int idx,int pos)
/*====================================================
* Change guild title or member
*---------------------------------------------------*/
-int guild_change_position(int guild_id,int idx,int mode,int exp_mode,const char *name)
+static int guild_change_position(int guild_id, int idx, int mode, int exp_mode, const char *name)
{
struct guild_position p;
nullpo_ret(name);
@@ -1139,7 +1151,7 @@ int guild_change_position(int guild_id,int idx,int mode,int exp_mode,const char
/*====================================================
* Notification of member has changed his guild title
*---------------------------------------------------*/
-int guild_position_changed(int guild_id, int idx, const struct guild_position *p)
+static int guild_position_changed(int guild_id, int idx, const struct guild_position *p)
{
struct guild *g=guild->search(guild_id);
int i;
@@ -1160,7 +1172,7 @@ int guild_position_changed(int guild_id, int idx, const struct guild_position *p
/*====================================================
* Change guild notice
*---------------------------------------------------*/
-int guild_change_notice(struct map_session_data *sd,int guild_id,const char *mes1,const char *mes2)
+static int guild_change_notice(struct map_session_data *sd, int guild_id, const char *mes1, const char *mes2)
{
nullpo_ret(sd);
@@ -1172,7 +1184,7 @@ int guild_change_notice(struct map_session_data *sd,int guild_id,const char *mes
/*====================================================
* Notification of guild has changed his notice
*---------------------------------------------------*/
-int guild_notice_changed(int guild_id,const char *mes1,const char *mes2)
+static int guild_notice_changed(int guild_id, const char *mes1, const char *mes2)
{
int i;
struct guild *g=guild->search(guild_id);
@@ -1195,14 +1207,14 @@ int guild_notice_changed(int guild_id,const char *mes1,const char *mes2)
/*====================================================
* Change guild emblem
*---------------------------------------------------*/
-int guild_change_emblem(struct map_session_data *sd,int len,const char *data)
+static int guild_change_emblem(struct map_session_data *sd, int len, const char *data)
{
struct guild *g;
nullpo_ret(sd);
if (battle_config.require_glory_guild &&
!((g = sd->guild) && guild->checkskill(g, GD_GLORYGUILD)>0)) {
- clif->skill_fail(sd,GD_GLORYGUILD,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, GD_GLORYGUILD, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -1212,7 +1224,7 @@ int guild_change_emblem(struct map_session_data *sd,int len,const char *data)
/*====================================================
* Notification of guild emblem changed
*---------------------------------------------------*/
-int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data)
+static int guild_emblem_changed(int len, int guild_id, int emblem_id, const char *data)
{
int i;
struct map_session_data *sd;
@@ -1272,7 +1284,7 @@ int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data)
/**
* @see DBCreateData
*/
-struct DBData create_expcache(union DBKey key, va_list args)
+static struct DBData create_expcache(union DBKey key, va_list args)
{
struct guild_expcache *c;
struct map_session_data *sd = va_arg(args, struct map_session_data*);
@@ -1289,7 +1301,7 @@ struct DBData create_expcache(union DBKey key, va_list args)
/*====================================================
* Return taxed experience from player sd to guild
*---------------------------------------------------*/
-uint64 guild_payexp(struct map_session_data *sd, uint64 exp)
+static uint64 guild_payexp(struct map_session_data *sd, uint64 exp)
{
struct guild *g;
struct guild_expcache *c;
@@ -1323,7 +1335,7 @@ uint64 guild_payexp(struct map_session_data *sd, uint64 exp)
* Add this experience to guild exp
* [Celest]
*---------------------------------------------------*/
-int guild_getexp(struct map_session_data *sd,int exp)
+static int guild_getexp(struct map_session_data *sd, int exp)
{
struct guild_expcache *c;
nullpo_ret(sd);
@@ -1342,7 +1354,7 @@ int guild_getexp(struct map_session_data *sd,int exp)
/*====================================================
* Ask to increase guildskill skill_id
*---------------------------------------------------*/
-int guild_skillup(struct map_session_data *sd, uint16 skill_id)
+static int guild_skillup(struct map_session_data *sd, uint16 skill_id)
{
struct guild* g;
int idx = skill_id - GD_SKILLBASE;
@@ -1366,7 +1378,8 @@ int guild_skillup(struct map_session_data *sd, uint16 skill_id)
/*====================================================
* Notification of guildskill skill_id increase request
*---------------------------------------------------*/
-int guild_skillupack(int guild_id,uint16 skill_id,int account_id) {
+static int guild_skillupack(int guild_id, uint16 skill_id, int account_id)
+{
struct map_session_data *sd=map->id2sd(account_id);
struct guild *g=guild->search(guild_id);
int i;
@@ -1395,7 +1408,8 @@ int guild_skillupack(int guild_id,uint16 skill_id,int account_id) {
return 0;
}
-void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
+static void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
+{
struct skill_unit_group* group = NULL;
int type = status->skill2sc(skill_id);
nullpo_retv(sd);
@@ -1421,7 +1435,7 @@ void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id, uint1
* 0 = allied
* 1 = enemy
*---------------------------------------------------*/
-int guild_get_alliance_count(struct guild *g,int flag)
+static int guild_get_alliance_count(struct guild *g, int flag)
{
int i,c;
@@ -1435,7 +1449,7 @@ int guild_get_alliance_count(struct guild *g,int flag)
}
// Blocks all guild skills which have a common delay time.
-void guild_block_skill(struct map_session_data *sd, int time)
+static void guild_block_skill(struct map_session_data *sd, int time)
{
uint16 skill_id[] = { GD_BATTLEORDER, GD_REGENERATION, GD_RESTORE, GD_EMERGENCYCALL };
int i;
@@ -1450,7 +1464,7 @@ void guild_block_skill(struct map_session_data *sd, int time)
* 1 = enemy
* Returns true if yes.
*---------------------------------------------------*/
-int guild_check_alliance(int guild_id1, int guild_id2, int flag)
+static int guild_check_alliance(int guild_id1, int guild_id2, int flag)
{
struct guild *g;
int i;
@@ -1466,7 +1480,8 @@ int guild_check_alliance(int guild_id1, int guild_id2, int flag)
/*====================================================
* Player sd, asking player tsd an alliance between their 2 guilds
*---------------------------------------------------*/
-int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd) {
+static int guild_reqalliance(struct map_session_data *sd, struct map_session_data *tsd)
+{
struct guild *g[2];
int i;
@@ -1522,7 +1537,8 @@ int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
/*====================================================
* Player sd, answer to player tsd (account_id) for an alliance request
*---------------------------------------------------*/
-int guild_reply_reqalliance(struct map_session_data *sd,int account_id,int flag) {
+static int guild_reply_reqalliance(struct map_session_data *sd, int account_id, int flag)
+{
struct map_session_data *tsd;
nullpo_ret(sd);
@@ -1582,7 +1598,8 @@ int guild_reply_reqalliance(struct map_session_data *sd,int account_id,int flag)
/*====================================================
* Player sd asking to break alliance with guild guild_id
*---------------------------------------------------*/
-int guild_delalliance(struct map_session_data *sd,int guild_id,int flag) {
+static int guild_delalliance(struct map_session_data *sd, int guild_id, int flag)
+{
nullpo_ret(sd);
if(map->agit_flag || map->agit2_flag) {
@@ -1598,7 +1615,7 @@ int guild_delalliance(struct map_session_data *sd,int guild_id,int flag) {
/*====================================================
* Player sd, asking player tsd a formal enemy relation between their 2 guilds
*---------------------------------------------------*/
-int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd)
+static int guild_opposition(struct map_session_data *sd, struct map_session_data *tsd)
{
struct guild *g;
int i;
@@ -1641,7 +1658,8 @@ int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd)
/*====================================================
* Notification of a relationship between 2 guilds
*---------------------------------------------------*/
-int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id2,int flag,const char *name1,const char *name2) {
+static int guild_allianceack(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag, const char *name1, const char *name2)
+{
struct guild *g[2] = { NULL };
int guild_id[2] = { 0 };
const char *guild_name[2] = { NULL };
@@ -1731,7 +1749,7 @@ int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id
* Notification for the guild disbanded
* @see DBApply
*/
-int guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
+static int guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct guild *g = DB->data2ptr(data);
int guild_id=va_arg(ap,int);
@@ -1757,7 +1775,7 @@ int guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
* Invoked on Castles when a guild is broken. [Skotlex]
* @see DBApply
*/
-int castle_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
+static int castle_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct guild_castle *gc = DB->data2ptr(data);
int guild_id = va_arg(ap, int);
@@ -1778,7 +1796,7 @@ int castle_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap)
}
//Invoked on /breakguild "Guild name"
-int guild_broken(int guild_id,int flag)
+static int guild_broken(int guild_id, int flag)
{
struct guild *g = guild->search(guild_id);
struct map_session_data *sd = NULL;
@@ -1822,7 +1840,7 @@ int guild_broken(int guild_id,int flag)
}
//Changes the Guild Master to the specified player. [Skotlex]
-int guild_gm_change(int guild_id, int char_id)
+static int guild_gm_change(int guild_id, int char_id)
{
struct guild *g = guild->search(guild_id);
char *name;
@@ -1848,7 +1866,7 @@ int guild_gm_change(int guild_id, int char_id)
}
//Notification from Char server that a guild's master has changed. [Skotlex]
-int guild_gm_changed(int guild_id, int account_id, int char_id)
+static int guild_gm_changed(int guild_id, int account_id, int char_id)
{
struct guild *g;
struct guild_member gm;
@@ -1905,7 +1923,7 @@ int guild_gm_changed(int guild_id, int account_id, int char_id)
/*====================================================
* Guild disbanded
*---------------------------------------------------*/
-int guild_break(struct map_session_data *sd, const char *name)
+static int guild_break(struct map_session_data *sd, const char *name)
{
struct guild *g;
struct unit_data *ud;
@@ -1967,7 +1985,7 @@ int guild_break(struct map_session_data *sd, const char *name)
* Creates a list of guild castle IDs to be requested
* from char-server.
*/
-void guild_castle_map_init(void)
+static void guild_castle_map_init(void)
{
int num = db_size(guild->castle_db);
@@ -1997,7 +2015,7 @@ void guild_castle_map_init(void)
* @param index Type of data to change
* @param value New value
*/
-int guild_castledatasave(int castle_id, int index, int value)
+static int guild_castledatasave(int castle_id, int index, int value)
{
struct guild_castle *gc = guild->castle_search(castle_id);
@@ -2058,7 +2076,7 @@ int guild_castledatasave(int castle_id, int index, int value)
return 0;
}
-void guild_castle_reconnect_sub(void *key, void *data, va_list ap)
+static void guild_castle_reconnect_sub(void *key, void *data, va_list ap)
{
int castle_id = GetWord((int)h64BPTRSIZE(key), 0);
int index = GetWord((int)h64BPTRSIZE(key), 1);
@@ -2071,7 +2089,7 @@ void guild_castle_reconnect_sub(void *key, void *data, va_list ap)
* disconnected.
* On reconnect pushes all changes to char-server for saving.
*/
-void guild_castle_reconnect(int castle_id, int index, int value)
+static void guild_castle_reconnect(int castle_id, int index, int value)
{
static struct linkdb_node *gc_save_pending = NULL;
@@ -2087,7 +2105,7 @@ void guild_castle_reconnect(int castle_id, int index, int value)
}
// Load castle data then invoke OnAgitInit* on last
-int guild_castledataloadack(int len, const struct guild_castle *gc)
+static int guild_castledataloadack(int len, const struct guild_castle *gc)
{
int i;
int n = (len-4) / sizeof(struct guild_castle);
@@ -2130,7 +2148,7 @@ int guild_castledataloadack(int len, const struct guild_castle *gc)
/*====================================================
* Start normal woe and triggers all npc OnAgitStart
*---------------------------------------------------*/
-void guild_agit_start(void)
+static void guild_agit_start(void)
{
// Run All NPC_Event[OnAgitStart]
int c = npc->event_doall("OnAgitStart");
@@ -2140,7 +2158,7 @@ void guild_agit_start(void)
/*====================================================
* End normal woe and triggers all npc OnAgitEnd
*---------------------------------------------------*/
-void guild_agit_end(void)
+static void guild_agit_end(void)
{
// Run All NPC_Event[OnAgitEnd]
int c = npc->event_doall("OnAgitEnd");
@@ -2150,7 +2168,7 @@ void guild_agit_end(void)
/*====================================================
* Start woe2 and triggers all npc OnAgitStart2
*---------------------------------------------------*/
-void guild_agit2_start(void)
+static void guild_agit2_start(void)
{
// Run All NPC_Event[OnAgitStart2]
int c = npc->event_doall("OnAgitStart2");
@@ -2160,7 +2178,7 @@ void guild_agit2_start(void)
/*====================================================
* End woe2 and triggers all npc OnAgitEnd2
*---------------------------------------------------*/
-void guild_agit2_end(void)
+static void guild_agit2_end(void)
{
// Run All NPC_Event[OnAgitEnd2]
int c = npc->event_doall("OnAgitEnd2");
@@ -2168,7 +2186,7 @@ void guild_agit2_end(void)
}
// How many castles does this guild have?
-int guild_checkcastles(struct guild *g)
+static int guild_checkcastles(struct guild *g)
{
int nb_cas = 0;
struct guild_castle* gc = NULL;
@@ -2184,7 +2202,7 @@ int guild_checkcastles(struct guild *g)
}
// Are these two guilds allied?
-bool guild_isallied(int guild_id, int guild_id2)
+static bool guild_isallied(int guild_id, int guild_id2)
{
int i;
struct guild* g = guild->search(guild_id);
@@ -2194,7 +2212,8 @@ bool guild_isallied(int guild_id, int guild_id2)
return( i < MAX_GUILDALLIANCE && g->alliance[i].opposition == 0 );
}
-void guild_flag_add(struct npc_data *nd) {
+static void guild_flag_add(struct npc_data *nd)
+{
int i;
nullpo_retv(nd);
@@ -2212,7 +2231,8 @@ void guild_flag_add(struct npc_data *nd) {
guild->flags[i] = nd;
}
-void guild_flag_remove(struct npc_data *nd) {
+static void guild_flag_remove(struct npc_data *nd)
+{
int i, cursor;
nullpo_retv(nd);
if( guild->flags_count == 0 )
@@ -2241,7 +2261,7 @@ void guild_flag_remove(struct npc_data *nd) {
/**
* @see DBApply
*/
-int eventlist_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int eventlist_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct eventlist *next = NULL;
struct eventlist *current = DB->data2ptr(data);
@@ -2256,7 +2276,7 @@ int eventlist_db_final(union DBKey key, struct DBData *data, va_list ap)
/**
* @see DBApply
*/
-int guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap)
{
ers_free(guild->expcache_ers, DB->data2ptr(data));
return 0;
@@ -2265,7 +2285,7 @@ int guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap)
/**
* @see DBApply
*/
-int guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct guild_castle* gc = DB->data2ptr(data);
if( gc->temp_guardians )
@@ -2275,7 +2295,8 @@ int guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap)
}
/* called when scripts are reloaded/unloaded */
-void guild_flags_clear(void) {
+static void guild_flags_clear(void)
+{
int i;
for( i = 0; i < guild->flags_count; i++ ) {
if( guild->flags[i] )
@@ -2285,7 +2306,8 @@ void guild_flags_clear(void) {
guild->flags_count = 0;
}
-void do_init_guild(bool minimal) {
+static void do_init_guild(bool minimal)
+{
if (minimal)
return;
@@ -2305,7 +2327,7 @@ void do_init_guild(bool minimal) {
timer->add_interval(timer->gettick()+GUILD_SEND_XY_INVERVAL,guild->send_xy_timer,0,0,GUILD_SEND_XY_INVERVAL);
}
-void do_final_guild(void)
+static void do_final_guild(void)
{
struct DBIterator *iter = db_iterator(guild->db);
struct guild *g;
@@ -2331,7 +2353,9 @@ void do_final_guild(void)
if( guild->flags )
aFree(guild->flags);
}
-void guild_defaults(void) {
+
+void guild_defaults(void)
+{
guild = &guild_s;
guild->init = do_init_guild;
diff --git a/src/map/homunculus.c b/src/map/homunculus.c
index a708c0a28..a6e7bb71c 100644
--- a/src/map/homunculus.c
+++ b/src/map/homunculus.c
@@ -58,19 +58,21 @@
#include <stdlib.h>
#include <string.h>
-struct homunculus_interface homunculus_s;
-struct homun_dbs homundbs;
+static struct homunculus_interface homunculus_s;
+static struct homun_dbs homundbs;
struct homunculus_interface *homun;
//Returns the viewdata for homunculus
-struct view_data* homunculus_get_viewdata(int class_) {
+static struct view_data *homunculus_get_viewdata(int class_)
+{
Assert_retr(NULL, homdb_checkid(class_));
return &homun->dbs->viewdb[class_-HM_CLASS_BASE];
}
-enum homun_type homunculus_class2type(int class_) {
+static enum homun_type homunculus_class2type(int class_)
+{
switch(class_) {
// Normal Homunculus
case HOMID_LIF:
@@ -104,7 +106,8 @@ enum homun_type homunculus_class2type(int class_) {
}
}
-void homunculus_addspiritball(struct homun_data *hd, int max) {
+static void homunculus_addspiritball(struct homun_data *hd, int max)
+{
nullpo_retv(hd);
if (max > MAX_SKILL_LEVEL)
@@ -121,7 +124,8 @@ void homunculus_addspiritball(struct homun_data *hd, int max) {
clif->spiritball(&hd->bl);
}
-void homunculus_delspiritball(struct homun_data *hd, int count, int type) {
+static void homunculus_delspiritball(struct homun_data *hd, int count, int type)
+{
nullpo_retv(hd);
if (hd->homunculus.spiritball <= 0) {
@@ -140,11 +144,13 @@ void homunculus_delspiritball(struct homun_data *hd, int count, int type) {
clif->spiritball(&hd->bl);
}
-void homunculus_damaged(struct homun_data *hd) {
+static void homunculus_damaged(struct homun_data *hd)
+{
clif->hominfo(hd->master,hd,0);
}
-int homunculus_dead(struct homun_data *hd) {
+static int homunculus_dead(struct homun_data *hd)
+{
//There's no intimacy penalties on death (from Tharis)
struct map_session_data *sd;
@@ -165,7 +171,8 @@ int homunculus_dead(struct homun_data *hd) {
}
//Vaporize a character's homun. If flag, HP needs to be 80% or above.
-int homunculus_vaporize(struct map_session_data *sd, enum homun_state flag) {
+static int homunculus_vaporize(struct map_session_data *sd, enum homun_state flag)
+{
struct homun_data *hd;
nullpo_ret(sd);
@@ -193,7 +200,8 @@ int homunculus_vaporize(struct map_session_data *sd, enum homun_state flag) {
//delete a homunculus, completely "killing it".
//Emote is the emotion the master should use, send negative to disable.
-int homunculus_delete(struct homun_data *hd, int emote) {
+static int homunculus_delete(struct homun_data *hd, int emote)
+{
struct map_session_data *sd;
nullpo_ret(hd);
sd = hd->master;
@@ -212,7 +220,8 @@ int homunculus_delete(struct homun_data *hd, int emote) {
return unit->remove_map(&hd->bl,CLR_OUTSIGHT, ALC_MARK);
}
-int homunculus_calc_skilltree(struct homun_data *hd, int flag_evolve) {
+static int homunculus_calc_skilltree(struct homun_data *hd, int flag_evolve)
+{
int i, id = 0;
int j, f = 1;
int c = 0;
@@ -269,7 +278,8 @@ int homunculus_calc_skilltree(struct homun_data *hd, int flag_evolve) {
return 0;
}
-int homunculus_checkskill(struct homun_data *hd,uint16 skill_id) {
+static int homunculus_checkskill(struct homun_data *hd, uint16 skill_id)
+{
int i = skill_id - HM_SKILLBASE;
if(!hd)
return 0;
@@ -281,7 +291,8 @@ int homunculus_checkskill(struct homun_data *hd,uint16 skill_id) {
return 0;
}
-int homunculus_skill_tree_get_max(int id, int b_class) {
+static int homunculus_skill_tree_get_max(int id, int b_class)
+{
int i, skill_id;
b_class -= HM_CLASS_BASE;
Assert_ret(b_class >= 0 && b_class < MAX_HOMUNCULUS_CLASS);
@@ -291,7 +302,8 @@ int homunculus_skill_tree_get_max(int id, int b_class) {
return skill->get_max(id);
}
-void homunculus_skillup(struct homun_data *hd,uint16 skill_id) {
+static void homunculus_skillup(struct homun_data *hd, uint16 skill_id)
+{
int i = 0 ;
nullpo_retv(hd);
@@ -317,7 +329,8 @@ void homunculus_skillup(struct homun_data *hd,uint16 skill_id) {
}
}
-bool homunculus_levelup(struct homun_data *hd) {
+static bool homunculus_levelup(struct homun_data *hd)
+{
struct s_homunculus *hom;
struct h_stats *min, *max;
int growth_str, growth_agi, growth_vit, growth_int, growth_dex, growth_luk ;
@@ -396,7 +409,8 @@ bool homunculus_levelup(struct homun_data *hd) {
return true;
}
-int homunculus_change_class(struct homun_data *hd, short class_) {
+static int homunculus_change_class(struct homun_data *hd, short class_)
+{
int i = homun->db_search(class_,HOMUNCULUS_CLASS);
nullpo_retr(0, hd);
if (i == INDEX_NOT_FOUND)
@@ -408,7 +422,8 @@ int homunculus_change_class(struct homun_data *hd, short class_) {
return 1;
}
-bool homunculus_evolve(struct homun_data *hd) {
+static bool homunculus_evolve(struct homun_data *hd)
+{
struct s_homunculus *hom;
struct h_stats *max, *min;
struct map_session_data *sd;
@@ -460,7 +475,8 @@ bool homunculus_evolve(struct homun_data *hd) {
return true;
}
-bool homunculus_mutate(struct homun_data *hd, int homun_id) {
+static bool homunculus_mutate(struct homun_data *hd, int homun_id)
+{
struct s_homunculus *hom;
struct map_session_data *sd;
int prev_class = 0;
@@ -506,7 +522,8 @@ bool homunculus_mutate(struct homun_data *hd, int homun_id) {
return true;
}
-int homunculus_gainexp(struct homun_data *hd,unsigned int exp) {
+static int homunculus_gainexp(struct homun_data *hd, unsigned int exp)
+{
enum homun_type htype;
nullpo_ret(hd);
@@ -550,7 +567,8 @@ int homunculus_gainexp(struct homun_data *hd,unsigned int exp) {
}
// Return the new value
-unsigned int homunculus_add_intimacy(struct homun_data *hd, unsigned int value) {
+static unsigned int homunculus_add_intimacy(struct homun_data *hd, unsigned int value)
+{
nullpo_ret(hd);
if (battle_config.homunculus_friendly_rate != 100)
value = (value * battle_config.homunculus_friendly_rate) / 100;
@@ -563,7 +581,8 @@ unsigned int homunculus_add_intimacy(struct homun_data *hd, unsigned int value)
}
// Return 0 if decrease fails or intimacy became 0 else the new value
-unsigned int homunculus_consume_intimacy(struct homun_data *hd, unsigned int value) {
+static unsigned int homunculus_consume_intimacy(struct homun_data *hd, unsigned int value)
+{
nullpo_ret(hd);
if (hd->homunculus.intimacy >= value)
hd->homunculus.intimacy -= value;
@@ -573,12 +592,14 @@ unsigned int homunculus_consume_intimacy(struct homun_data *hd, unsigned int val
return hd->homunculus.intimacy;
}
-void homunculus_healed (struct homun_data *hd) {
+static void homunculus_healed(struct homun_data *hd)
+{
nullpo_retv(hd);
clif->hominfo(hd->master,hd,0);
}
-void homunculus_save(struct homun_data *hd) {
+static void homunculus_save(struct homun_data *hd)
+{
// copy data that must be saved in homunculus struct ( hp / sp )
struct map_session_data *sd = NULL;
//Do not check for max_hp/max_sp caps as current could be higher to max due
@@ -592,7 +613,8 @@ void homunculus_save(struct homun_data *hd) {
intif->homunculus_requestsave(sd->status.account_id, &hd->homunculus);
}
-unsigned char homunculus_menu(struct map_session_data *sd,unsigned char menu_num) {
+static unsigned char homunculus_menu(struct map_session_data *sd, unsigned char menu_num)
+{
nullpo_ret(sd);
if (sd->hd == NULL)
return 1;
@@ -613,7 +635,8 @@ unsigned char homunculus_menu(struct map_session_data *sd,unsigned char menu_num
return 0;
}
-bool homunculus_feed(struct map_session_data *sd, struct homun_data *hd) {
+static bool homunculus_feed(struct map_session_data *sd, struct homun_data *hd)
+{
int i, foodID, emotion;
nullpo_retr(false, hd);
@@ -661,7 +684,8 @@ bool homunculus_feed(struct map_session_data *sd, struct homun_data *hd) {
return true;
}
-int homunculus_hunger_timer(int tid, int64 tick, int id, intptr_t data) {
+static int homunculus_hunger_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct homun_data *hd;
@@ -702,7 +726,8 @@ int homunculus_hunger_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void homunculus_hunger_timer_delete(struct homun_data *hd) {
+static void homunculus_hunger_timer_delete(struct homun_data *hd)
+{
nullpo_retv(hd);
if(hd->hungry_timer != INVALID_TIMER) {
timer->delete(hd->hungry_timer,homun->hunger_timer);
@@ -710,7 +735,7 @@ void homunculus_hunger_timer_delete(struct homun_data *hd) {
}
}
-int homunculus_change_name(struct map_session_data *sd, const char *name)
+static int homunculus_change_name(struct map_session_data *sd, const char *name)
{
int i;
struct homun_data *hd;
@@ -731,7 +756,7 @@ int homunculus_change_name(struct map_session_data *sd, const char *name)
return intif_rename_hom(sd, name);
}
-bool homunculus_change_name_ack(struct map_session_data *sd, const char *name, int flag)
+static bool homunculus_change_name_ack(struct map_session_data *sd, const char *name, int flag)
{
struct homun_data *hd;
char *newname = NULL;
@@ -757,7 +782,8 @@ bool homunculus_change_name_ack(struct map_session_data *sd, const char *name, i
return true;
}
-int homunculus_db_search(int key,int type) {
+static int homunculus_db_search(int key, int type)
+{
int i;
for(i=0;i<MAX_HOMUNCULUS_CLASS;i++) {
@@ -791,7 +817,7 @@ int homunculus_db_search(int key,int type) {
* @param hom The homunculus source data.
* @retval false in case of errors.
*/
-bool homunculus_create(struct map_session_data *sd, const struct s_homunculus *hom)
+static bool homunculus_create(struct map_session_data *sd, const struct s_homunculus *hom)
{
struct homun_data *hd;
int i = 0;
@@ -841,14 +867,16 @@ bool homunculus_create(struct map_session_data *sd, const struct s_homunculus *h
return true;
}
-void homunculus_init_timers(struct homun_data * hd) {
+static void homunculus_init_timers(struct homun_data *hd)
+{
nullpo_retv(hd);
if (hd->hungry_timer == INVALID_TIMER)
hd->hungry_timer = timer->add(timer->gettick()+hd->homunculusDB->hungryDelay,homun->hunger_timer,hd->master->bl.id,0);
hd->regen.state.block = 0; //Restore HP/SP block.
}
-bool homunculus_call(struct map_session_data *sd) {
+static bool homunculus_call(struct map_session_data *sd)
+{
struct homun_data *hd;
nullpo_retr(false, sd);
@@ -886,7 +914,7 @@ bool homunculus_call(struct map_session_data *sd) {
}
// Receive homunculus data from char server
-bool homunculus_recv_data(int account_id, const struct s_homunculus *sh, int flag)
+static bool homunculus_recv_data(int account_id, const struct s_homunculus *sh, int flag)
{
struct map_session_data *sd;
struct homun_data *hd;
@@ -945,7 +973,8 @@ bool homunculus_recv_data(int account_id, const struct s_homunculus *sh, int fla
}
// Ask homunculus creation to char server
-bool homunculus_creation_request(struct map_session_data *sd, int class_) {
+static bool homunculus_creation_request(struct map_session_data *sd, int class_)
+{
struct s_homunculus hom;
struct h_stats *base;
int i;
@@ -981,7 +1010,8 @@ bool homunculus_creation_request(struct map_session_data *sd, int class_) {
return true;
}
-bool homunculus_ressurect(struct map_session_data* sd, unsigned char per, short x, short y) {
+static bool homunculus_ressurect(struct map_session_data *sd, unsigned char per, short x, short y)
+{
struct homun_data* hd;
nullpo_retr(false,sd);
@@ -1014,7 +1044,8 @@ bool homunculus_ressurect(struct map_session_data* sd, unsigned char per, short
return true;
}
-void homunculus_revive(struct homun_data *hd, unsigned int hp, unsigned int sp) {
+static void homunculus_revive(struct homun_data *hd, unsigned int hp, unsigned int sp)
+{
struct map_session_data *sd;
nullpo_retv(hd);
@@ -1028,7 +1059,8 @@ void homunculus_revive(struct homun_data *hd, unsigned int hp, unsigned int sp)
clif->homskillinfoblock(sd);
}
//Resets a homunc stats back to zero (but doesn't touches hunger or intimacy)
-void homunculus_stat_reset(struct homun_data *hd) {
+static void homunculus_stat_reset(struct homun_data *hd)
+{
struct s_homunculus_db *db;
struct s_homunculus *hom;
struct h_stats *base;
@@ -1052,7 +1084,8 @@ void homunculus_stat_reset(struct homun_data *hd) {
hd->homunculus.skillpts = 0;
}
-bool homunculus_shuffle(struct homun_data *hd) {
+static bool homunculus_shuffle(struct homun_data *hd)
+{
struct map_session_data *sd;
int lv, skillpts;
unsigned int exp;
@@ -1101,7 +1134,8 @@ bool homunculus_shuffle(struct homun_data *hd) {
return true;
}
-bool homunculus_read_db_sub(char* str[], int columns, int current) {
+static bool homunculus_read_db_sub(char *str[], int columns, int current)
+{
int classid;
struct s_homunculus_db *db;
@@ -1212,7 +1246,8 @@ bool homunculus_read_db_sub(char* str[], int columns, int current) {
return true;
}
-void homunculus_read_db(void) {
+static void homunculus_read_db(void)
+{
int i;
const char *filename[]={DBPATH"homunculus_db.txt","homunculus_db2.txt"};
memset(homun->dbs->db, 0, sizeof(homun->dbs->db));
@@ -1232,7 +1267,8 @@ void homunculus_read_db(void) {
}
// <hom class>,<skill id>,<max level>[,<job level>],<req id1>,<req lv1>,<req id2>,<req lv2>,<req id3>,<req lv3>,<req id4>,<req lv4>,<req id5>,<req lv5>,<intimacy lv req>
-bool homunculus_read_skill_db_sub(char* split[], int columns, int current) {
+static bool homunculus_read_skill_db_sub(char *split[], int columns, int current)
+{
int k, classid;
int j;
int minJobLevelPresent = 0;
@@ -1272,7 +1308,8 @@ bool homunculus_read_skill_db_sub(char* split[], int columns, int current) {
return true;
}
-int8 homunculus_get_intimacy_grade(struct homun_data *hd) {
+static int8 homunculus_get_intimacy_grade(struct homun_data *hd)
+{
unsigned int val;
nullpo_ret(hd);
val = hd->homunculus.intimacy / 100;
@@ -1292,12 +1329,14 @@ int8 homunculus_get_intimacy_grade(struct homun_data *hd) {
return 0;
}
-void homunculus_skill_db_read(void) {
+static void homunculus_skill_db_read(void)
+{
memset(homun->dbs->skill_tree, 0, sizeof(homun->dbs->skill_tree));
sv->readdb(map->db_path, "homun_skill_tree.txt", ',', 13, 15, -1, homun->read_skill_db_sub);
}
-void homunculus_exp_db_read(void) {
+static void homunculus_exp_db_read(void)
+{
char line[1024];
int i, j=0;
char *filename[]={
@@ -1331,16 +1370,19 @@ void homunculus_exp_db_read(void) {
}
}
-void homunculus_reload(void) {
+static void homunculus_reload(void)
+{
homun->read_db();
homun->exp_db_read();
}
-void homunculus_skill_reload(void) {
+static void homunculus_skill_reload(void)
+{
homun->skill_db_read();
}
-void do_init_homunculus(bool minimal) {
+static void do_init_homunculus(bool minimal)
+{
int class_;
if (minimal)
@@ -1358,11 +1400,13 @@ void do_init_homunculus(bool minimal) {
homun->dbs->viewdb[class_].class = HM_CLASS_BASE + class_;
}
-void do_final_homunculus(void) {
+static void do_final_homunculus(void)
+{
}
-void homunculus_defaults(void) {
+void homunculus_defaults(void)
+{
homun = &homunculus_s;
homun->dbs = &homundbs;
diff --git a/src/map/instance.c b/src/map/instance.c
index 250c73542..2c40449ad 100644
--- a/src/map/instance.c
+++ b/src/map/instance.c
@@ -47,11 +47,12 @@
#include <string.h>
#include <time.h>
-struct instance_interface instance_s;
+static struct instance_interface instance_s;
struct instance_interface *instance;
/// Checks whether given instance id is valid or not.
-bool instance_is_valid(int instance_id) {
+static bool instance_is_valid(int instance_id)
+{
if( instance_id < 0 || instance_id >= instance->instances ) {// out of range
return false;
}
@@ -69,7 +70,8 @@ bool instance_is_valid(int instance_id) {
* -4 = already exists | -3 = no free instances | -2 = owner not found | -1 = invalid type
* On success return instance_id
*--------------------------------------*/
-int instance_create(int owner_id, const char *name, enum instance_owner_type type) {
+static int instance_create(int owner_id, const char *name, enum instance_owner_type type)
+{
struct map_session_data *sd = NULL;
unsigned short *icptr = NULL;
struct party_data *p = NULL;
@@ -180,7 +182,8 @@ int instance_create(int owner_id, const char *name, enum instance_owner_type typ
* @retval -3 No more map indices available.
* @retval -4 Source map is already an instance.
**/
-int instance_add_map(const char *name, int instance_id, bool usebasename, const char *map_name) {
+static int instance_add_map(const char *name, int instance_id, bool usebasename, const char *map_name)
+{
int16 m = map->mapname2mapid(name);
int i, im = -1;
size_t num_cell, size, j;
@@ -317,7 +320,8 @@ int instance_add_map(const char *name, int instance_id, bool usebasename, const
* party_id : source party of this instance
* type : result (0 = map id | 1 = instance id)
*--------------------------------------*/
-int instance_map2imap(int16 m, int instance_id) {
+static int instance_map2imap(int16 m, int instance_id)
+{
int i;
if( !instance->valid(instance_id) ) {
@@ -331,7 +335,8 @@ int instance_map2imap(int16 m, int instance_id) {
return -1;
}
-int instance_mapname2imap(const char *map_name, int instance_id) {
+static int instance_mapname2imap(const char *map_name, int instance_id)
+{
int i;
nullpo_retr(-1, map_name);
@@ -351,7 +356,8 @@ int instance_mapname2imap(const char *map_name, int instance_id) {
* instance_id : where to search
* result : mapid of map "m" in this instance
*--------------------------------------*/
-int instance_mapid2imapid(int16 m, int instance_id) {
+static int instance_mapid2imapid(int16 m, int instance_id)
+{
Assert_retr(-1, m >= 0 && m < map->count);
if( map->list[m].flag.src4instance == 0 )
return m; // not instances found for this map
@@ -369,7 +375,7 @@ int instance_mapid2imapid(int16 m, int instance_id) {
/*--------------------------------------
* Used on Init instance. Duplicates each script on source map
*--------------------------------------*/
-int instance_map_npcsub(struct block_list* bl, va_list args)
+static int instance_map_npcsub(struct block_list *bl, va_list args)
{
struct npc_data *nd = NULL;
int16 m = va_arg(args, int); // Destination Map
@@ -384,7 +390,7 @@ int instance_map_npcsub(struct block_list* bl, va_list args)
return 1;
}
-int instance_init_npc(struct block_list* bl, va_list args)
+static int instance_init_npc(struct block_list *bl, va_list args)
{
struct npc_data *nd = NULL;
struct event_data *ev;
@@ -405,7 +411,8 @@ int instance_init_npc(struct block_list* bl, va_list args)
/*--------------------------------------
* Init all map on the instance. Npcs are created here
*--------------------------------------*/
-void instance_init(int instance_id) {
+static void instance_init(int instance_id)
+{
int i;
if( !instance->valid(instance_id) )
@@ -424,7 +431,8 @@ void instance_init(int instance_id) {
* Used on instance deleting process.
* Warps all players on each instance map to its save points.
*--------------------------------------*/
-int instance_del_load(struct map_session_data* sd, va_list args) {
+static int instance_del_load(struct map_session_data *sd, va_list args)
+{
int16 m = va_arg(args,int);
if( !sd || sd->bl.m != m )
@@ -435,7 +443,8 @@ int instance_del_load(struct map_session_data* sd, va_list args) {
}
/* for npcs behave differently when being unloaded within a instance */
-int instance_cleanup_sub(struct block_list *bl, va_list ap) {
+static int instance_cleanup_sub(struct block_list *bl, va_list ap)
+{
nullpo_ret(bl);
switch(bl->type) {
@@ -465,7 +474,8 @@ int instance_cleanup_sub(struct block_list *bl, va_list ap) {
/*--------------------------------------
* Removes a simple instance map
*--------------------------------------*/
-void instance_del_map(int16 m) {
+static void instance_del_map(int16 m)
+{
int i;
if( m <= 0 || map->list[m].instance_id == -1 ) {
@@ -537,7 +547,8 @@ void instance_del_map(int16 m) {
/*--------------------------------------
* Timer to destroy instance by process or idle
*--------------------------------------*/
-int instance_destroy_timer(int tid, int64 tick, int id, intptr_t data) {
+static int instance_destroy_timer(int tid, int64 tick, int id, intptr_t data)
+{
instance->destroy(id);
return 0;
}
@@ -545,7 +556,8 @@ int instance_destroy_timer(int tid, int64 tick, int id, intptr_t data) {
/*--------------------------------------
* Removes a instance, all its maps and npcs.
*--------------------------------------*/
-void instance_destroy(int instance_id) {
+static void instance_destroy(int instance_id)
+{
struct map_session_data *sd = NULL;
unsigned short *icptr = NULL;
struct party_data *p = NULL;
@@ -636,7 +648,8 @@ void instance_destroy(int instance_id) {
/*--------------------------------------
* Checks if there are users in the instance or not to start idle timer
*--------------------------------------*/
-void instance_check_idle(int instance_id) {
+static void instance_check_idle(int instance_id)
+{
bool idle = true;
unsigned int now = (unsigned int)time(NULL);
@@ -661,7 +674,7 @@ void instance_check_idle(int instance_id) {
/*--------------------------------------
* Set instance Timers
*--------------------------------------*/
-void instance_set_timeout(int instance_id, unsigned int progress_timeout, unsigned int idle_timeout)
+static void instance_set_timeout(int instance_id, unsigned int progress_timeout, unsigned int idle_timeout)
{
unsigned int now = (unsigned int)time(0);
@@ -700,7 +713,8 @@ void instance_set_timeout(int instance_id, unsigned int progress_timeout, unsign
/*--------------------------------------
* Checks if sd in on a instance and should be kicked from it
*--------------------------------------*/
-void instance_check_kick(struct map_session_data *sd) {
+static void instance_check_kick(struct map_session_data *sd)
+{
int16 m = sd->bl.m;
nullpo_retv(sd);
@@ -713,7 +727,8 @@ void instance_check_kick(struct map_session_data *sd) {
}
}
-void do_reload_instance(void) {
+static void do_reload_instance(void)
+{
struct s_mapiterator *iter;
struct map_session_data *sd;
int i, k;
@@ -743,7 +758,8 @@ void do_reload_instance(void) {
mapit->free(iter);
}
-void do_final_instance(void) {
+static void do_final_instance(void)
+{
int i;
for(i = 0; i < instance->instances; i++) {
@@ -757,14 +773,16 @@ void do_final_instance(void) {
instance->instances = 0;
}
-void do_init_instance(bool minimal) {
+static void do_init_instance(bool minimal)
+{
if (minimal)
return;
timer->add_func_list(instance->destroy_timer, "instance_destroy_timer");
}
-void instance_defaults(void) {
+void instance_defaults(void)
+{
instance = &instance_s;
instance->init = do_init_instance;
diff --git a/src/map/intif.c b/src/map/intif.c
index 8a88f9244..393058a8a 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -55,7 +55,7 @@
#include <string.h>
#include <sys/types.h>
-struct intif_interface intif_s;
+static struct intif_interface intif_s;
struct intif_interface *intif;
#define inter_fd (chrif->fd) // alias
@@ -63,37 +63,37 @@ struct intif_interface *intif;
//-----------------------------------------------------------------
// Send to inter server
-int CheckForCharServer(void)
+static int CheckForCharServer(void)
{
return ((chrif->fd <= 0) || sockt->session[chrif->fd] == NULL || sockt->session[chrif->fd]->wdata == NULL);
}
// pet
-int intif_create_pet(int account_id,int char_id,short pet_class,short pet_lv,short pet_egg_id,
- short pet_equip,short intimate,short hungry,char rename_flag,char incubate,char *pet_name)
+static int intif_create_pet(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, char *pet_name)
{
if (intif->CheckForCharServer())
return 0;
nullpo_ret(pet_name);
- WFIFOHEAD(inter_fd, 24 + 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;
- WFIFOW(inter_fd,14) = pet_egg_id;
- WFIFOW(inter_fd,16) = pet_equip;
- WFIFOW(inter_fd,18) = intimate;
- WFIFOW(inter_fd,20) = hungry;
- WFIFOB(inter_fd,22) = rename_flag;
- WFIFOB(inter_fd,23) = incubate;
- memcpy(WFIFOP(inter_fd,24),pet_name,NAME_LENGTH);
- WFIFOSET(inter_fd,24+NAME_LENGTH);
+ WFIFOHEAD(inter_fd, 28 + 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);
return 0;
}
-int intif_request_petdata(int account_id,int char_id,int pet_id)
+static int intif_request_petdata(int account_id, int char_id, int pet_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -107,7 +107,7 @@ int intif_request_petdata(int account_id,int char_id,int pet_id)
return 0;
}
-int intif_save_petdata(int account_id,struct s_pet *p)
+static int intif_save_petdata(int account_id, struct s_pet *p)
{
if (intif->CheckForCharServer())
return 0;
@@ -122,7 +122,7 @@ int intif_save_petdata(int account_id,struct s_pet *p)
return 0;
}
-int intif_delete_petdata(int pet_id)
+static int intif_delete_petdata(int pet_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -134,7 +134,7 @@ int intif_delete_petdata(int pet_id)
return 1;
}
-int intif_rename(struct map_session_data *sd, int type, const char *name)
+static int intif_rename(struct map_session_data *sd, int type, const char *name)
{
if (intif->CheckForCharServer())
return 1;
@@ -152,7 +152,7 @@ int intif_rename(struct map_session_data *sd, int type, const char *name)
}
// GM Send a message
-int intif_broadcast(const char *mes, int len, int type)
+static int intif_broadcast(const char *mes, int len, int type)
{
int lp = (type&BC_COLOR_MASK) ? 4 : 0;
@@ -184,7 +184,7 @@ int intif_broadcast(const char *mes, int len, int type)
return 0;
}
-int intif_broadcast2(const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY)
+static int intif_broadcast2(const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY)
{
nullpo_ret(mes);
Assert_ret(len < 32000);
@@ -213,7 +213,7 @@ int intif_broadcast2(const char *mes, int len, unsigned int fontColor, short fon
/// send a message using the main chat system
/// <sd> the source of message
/// <message> the message that was sent
-int intif_main_message(struct map_session_data* sd, const char* message)
+static int intif_main_message(struct map_session_data *sd, const char *message)
{
char output[256];
@@ -233,7 +233,7 @@ int intif_main_message(struct map_session_data* sd, const char* message)
}
// The transmission of Wisp/Page to inter-server (player not found on this server)
-int intif_wis_message(struct map_session_data *sd, const char *nick, const char *mes, int mes_len)
+static int intif_wis_message(struct map_session_data *sd, const char *nick, const char *mes, int mes_len)
{
if (intif->CheckForCharServer())
return 0;
@@ -262,7 +262,7 @@ int intif_wis_message(struct map_session_data *sd, const char *nick, const char
}
// The reply of Wisp/page
-int intif_wis_replay(int id, int flag)
+static int intif_wis_replay(int id, int flag)
{
if (intif->CheckForCharServer())
return 0;
@@ -279,7 +279,7 @@ int intif_wis_replay(int id, int flag)
}
// The transmission of GM only Wisp/Page from server to inter-server
-int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes)
+static int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes)
{
int mes_len;
if (intif->CheckForCharServer())
@@ -304,7 +304,7 @@ int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes)
}
//Request for saving registry values.
-int intif_saveregistry(struct map_session_data *sd)
+static int intif_saveregistry(struct map_session_data *sd)
{
struct DBIterator *iter;
union DBKey key;
@@ -421,7 +421,7 @@ int intif_saveregistry(struct map_session_data *sd)
}
//Request the registries for this player.
-int intif_request_registry(struct map_session_data *sd, int flag)
+static int intif_request_registry(struct map_session_data *sd, int flag)
{
nullpo_ret(sd);
@@ -450,7 +450,7 @@ int intif_request_registry(struct map_session_data *sd, int flag)
* @packet 0x3010 [out] <account_id>.L
* @param sd [in] pointer to session data.
*/
-void intif_request_account_storage(const struct map_session_data *sd)
+static void intif_request_account_storage(const struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -469,7 +469,7 @@ void intif_request_account_storage(const struct map_session_data *sd)
* @packet 0x3805 [in] <packet_len>.W <account_id>.L <struct item[]>.P
* @param fd [in] file/socket descriptor.
*/
-void intif_parse_account_storage(int fd)
+static void intif_parse_account_storage(int fd)
{
int account_id = 0, payload_size = 0, storage_count = 0;
int i = 0;
@@ -511,7 +511,7 @@ void intif_parse_account_storage(int fd)
* @packet 0x3011 [out] <packet_len>.W <account_id>.L <struct item[]>.P
* @param sd [in] pointer to session data.
*/
-void intif_send_account_storage(const struct map_session_data *sd)
+static void intif_send_account_storage(const struct map_session_data *sd)
{
int len = 0, i = 0, c = 0;
@@ -546,7 +546,7 @@ void intif_send_account_storage(const struct map_session_data *sd)
* @packet 0x3808 [in] <account_id>.L <saved_flag>.B
* @param fd [in] file/socket descriptor.
*/
-void intif_parse_account_storage_save_ack(int fd)
+static void intif_parse_account_storage_save_ack(int fd)
{
int account_id = RFIFOL(fd, 2);
uint8 saved = RFIFOB(fd, 6);
@@ -570,7 +570,7 @@ void intif_parse_account_storage_save_ack(int fd)
// Guild Storage
//-----------------------------------------------------------------
-int intif_request_guild_storage(int account_id,int guild_id)
+static int intif_request_guild_storage(int account_id, int guild_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -581,7 +581,7 @@ int intif_request_guild_storage(int account_id,int guild_id)
WFIFOSET(inter_fd,10);
return 0;
}
-int intif_send_guild_storage(int account_id,struct guild_storage *gstor)
+static int intif_send_guild_storage(int account_id, struct guild_storage *gstor)
{
if (intif->CheckForCharServer())
return 0;
@@ -597,7 +597,7 @@ int intif_send_guild_storage(int account_id,struct guild_storage *gstor)
}
// Party creation request
-int intif_create_party(struct party_member *member, const char *name, int item, int item2)
+static int intif_create_party(struct party_member *member, const char *name, int item, int item2)
{
if (intif->CheckForCharServer())
return 0;
@@ -616,7 +616,7 @@ int intif_create_party(struct party_member *member, const char *name, int item,
}
// Party information request
-int intif_request_partyinfo(int party_id, int char_id)
+static int intif_request_partyinfo(int party_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -629,7 +629,7 @@ int intif_request_partyinfo(int party_id, int char_id)
}
// Request to add a member to party
-int intif_party_addmember(int party_id,struct party_member *member)
+static int intif_party_addmember(int party_id, struct party_member *member)
{
if (intif->CheckForCharServer())
return 0;
@@ -644,7 +644,7 @@ int intif_party_addmember(int party_id,struct party_member *member)
}
// Request to change party configuration (exp,item share)
-int intif_party_changeoption(int party_id,int account_id,int exp,int item)
+static int intif_party_changeoption(int party_id, int account_id, int exp, int item)
{
if (intif->CheckForCharServer())
return 0;
@@ -659,7 +659,7 @@ int intif_party_changeoption(int party_id,int account_id,int exp,int item)
}
// Request to leave party
-int intif_party_leave(int party_id,int account_id, int char_id)
+static int intif_party_leave(int party_id, int account_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -673,7 +673,8 @@ int intif_party_leave(int party_id,int account_id, int char_id)
}
// Request keeping party for new map ??
-int intif_party_changemap(struct map_session_data *sd,int online) {
+static int intif_party_changemap(struct map_session_data *sd, int online)
+{
int16 m, map_index;
if (intif->CheckForCharServer())
@@ -699,7 +700,7 @@ int intif_party_changemap(struct map_session_data *sd,int online) {
}
// Request breaking party
-int intif_break_party(int party_id)
+static int intif_break_party(int party_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -711,7 +712,7 @@ int intif_break_party(int party_id)
}
// Sending party chat
-int intif_party_message(int party_id,int account_id,const char *mes,int len)
+static int intif_party_message(int party_id, int account_id, const char *mes, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -732,7 +733,7 @@ int intif_party_message(int party_id,int account_id,const char *mes,int len)
}
// Request a new leader for party
-int intif_party_leaderchange(int party_id,int account_id,int char_id)
+static int intif_party_leaderchange(int party_id, int account_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -755,7 +756,7 @@ int intif_party_leaderchange(int party_id,int account_id,int char_id)
* @param clan_id Id of the clan to have members counted
* @param kick_interval Interval of the inactivity kick
*/
-int intif_clan_membercount(int clan_id, int kick_interval)
+static int intif_clan_membercount(int clan_id, int kick_interval)
{
if (intif->CheckForCharServer() || clan_id == 0 || kick_interval <= 0)
return 0;
@@ -768,7 +769,7 @@ int intif_clan_membercount(int clan_id, int kick_interval)
return 1;
}
-int intif_clan_kickoffline(int clan_id, int kick_interval)
+static int intif_clan_kickoffline(int clan_id, int kick_interval)
{
if (intif->CheckForCharServer() || clan_id == 0 || kick_interval <= 0)
return 0;
@@ -781,7 +782,7 @@ int intif_clan_kickoffline(int clan_id, int kick_interval)
return 1;
}
-void intif_parse_RecvClanMemberAction(int fd)
+static void intif_parse_RecvClanMemberAction(int fd)
{
struct clan *c;
int clan_id = RFIFOL(fd, 2);
@@ -821,7 +822,7 @@ void intif_parse_RecvClanMemberAction(int fd)
}
// Request a Guild creation
-int intif_guild_create(const char *name,const struct guild_member *master)
+static int intif_guild_create(const char *name, const struct guild_member *master)
{
if (intif->CheckForCharServer())
return 0;
@@ -839,7 +840,7 @@ int intif_guild_create(const char *name,const struct guild_member *master)
}
// Request Guild information
-int intif_guild_request_info(int guild_id)
+static int intif_guild_request_info(int guild_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -851,7 +852,7 @@ int intif_guild_request_info(int guild_id)
}
// Request to add member to the guild
-int intif_guild_addmember(int guild_id,struct guild_member *m)
+static int intif_guild_addmember(int guild_id, struct guild_member *m)
{
if (intif->CheckForCharServer())
return 0;
@@ -866,7 +867,7 @@ int intif_guild_addmember(int guild_id,struct guild_member *m)
}
// Request a new leader for guild
-int intif_guild_change_gm(int guild_id, const char *name, int len)
+static int intif_guild_change_gm(int guild_id, const char *name, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -882,7 +883,7 @@ int intif_guild_change_gm(int guild_id, const char *name, int len)
}
// Request to leave guild
-int intif_guild_leave(int guild_id,int account_id,int char_id,int flag,const char *mes)
+static int intif_guild_leave(int guild_id, int account_id, int char_id, int flag, const char *mes)
{
if (intif->CheckForCharServer())
return 0;
@@ -899,7 +900,7 @@ int intif_guild_leave(int guild_id,int account_id,int char_id,int flag,const cha
}
//Update request / Lv online status of the guild members
-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, int16 class)
{
if (intif->CheckForCharServer())
return 0;
@@ -916,7 +917,7 @@ int intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, int o
}
//Guild disbanded notification
-int intif_guild_break(int guild_id)
+static int intif_guild_break(int guild_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -928,7 +929,7 @@ int intif_guild_break(int guild_id)
}
// Send a guild message
-int intif_guild_message(int guild_id,int account_id,const char *mes,int len)
+static int intif_guild_message(int guild_id, int account_id, const char *mes, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -953,7 +954,7 @@ int intif_guild_message(int guild_id,int account_id,const char *mes,int len)
* Requests to change a basic guild information, it is parsed via mapif_parse_GuildBasicInfoChange
* To see the information types that can be changed see mmo.h::guild_basic_info
**/
-int intif_guild_change_basicinfo(int guild_id,int type,const void *data,int len)
+static int intif_guild_change_basicinfo(int guild_id, int type, const void *data, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -970,8 +971,7 @@ int intif_guild_change_basicinfo(int guild_id,int type,const void *data,int len)
}
// Request a change of Guild member information
-int intif_guild_change_memberinfo(int guild_id,int account_id,int char_id,
- int type,const void *data,int len)
+static int intif_guild_change_memberinfo(int guild_id, int account_id, int char_id, int type, const void *data, int len)
{
if (intif->CheckForCharServer())
return 0;
@@ -990,7 +990,7 @@ int intif_guild_change_memberinfo(int guild_id,int account_id,int char_id,
}
// Request a change of Guild title
-int intif_guild_position(int guild_id,int idx,struct guild_position *p)
+static int intif_guild_position(int guild_id, int idx, struct guild_position *p)
{
if (intif->CheckForCharServer())
return 0;
@@ -1006,7 +1006,7 @@ int intif_guild_position(int guild_id,int idx,struct guild_position *p)
}
// Request an update of Guildskill skill_id
-int intif_guild_skillup(int guild_id, uint16 skill_id, int account_id, int max)
+static int intif_guild_skillup(int guild_id, uint16 skill_id, int account_id, int max)
{
if( intif->CheckForCharServer() )
return 0;
@@ -1021,7 +1021,7 @@ int intif_guild_skillup(int guild_id, uint16 skill_id, int account_id, int max)
}
// Request a new guild relationship
-int intif_guild_alliance(int guild_id1,int guild_id2,int account_id1,int account_id2,int flag)
+static int intif_guild_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag)
{
if (intif->CheckForCharServer())
return 0;
@@ -1037,7 +1037,7 @@ int intif_guild_alliance(int guild_id1,int guild_id2,int account_id1,int account
}
// Request to change guild notice
-int intif_guild_notice(int guild_id,const char *mes1,const char *mes2)
+static int intif_guild_notice(int guild_id, const char *mes1, const char *mes2)
{
if (intif->CheckForCharServer())
return 0;
@@ -1053,7 +1053,7 @@ int intif_guild_notice(int guild_id,const char *mes1,const char *mes2)
}
// Request to change guild emblem
-int intif_guild_emblem(int guild_id,int len,const char *data)
+static int intif_guild_emblem(int guild_id, int len, const char *data)
{
if (intif->CheckForCharServer())
return 0;
@@ -1076,7 +1076,7 @@ int intif_guild_emblem(int guild_id,int len,const char *data)
* @param num Number of castles, size of castle_ids array.
* @param castle_ids Pointer to array of castle IDs.
*/
-int intif_guild_castle_dataload(int num, int *castle_ids)
+static int intif_guild_castle_dataload(int num, int *castle_ids)
{
if (intif->CheckForCharServer())
return 0;
@@ -1090,7 +1090,7 @@ int intif_guild_castle_dataload(int num, int *castle_ids)
}
// Request change castle guild owner and save data
-int intif_guild_castle_datasave(int castle_id,int index, int value)
+static int intif_guild_castle_datasave(int castle_id, int index, int value)
{
if (intif->CheckForCharServer())
return 0;
@@ -1107,7 +1107,7 @@ int intif_guild_castle_datasave(int castle_id,int index, int value)
// Homunculus Packets send to Inter server [albator]
//-----------------------------------------------------------------
-int intif_homunculus_create(int account_id, struct s_homunculus *sh)
+static int intif_homunculus_create(int account_id, struct s_homunculus *sh)
{
if (intif->CheckForCharServer())
return 0;
@@ -1121,7 +1121,8 @@ int intif_homunculus_create(int account_id, struct s_homunculus *sh)
return 0;
}
-bool intif_homunculus_requestload(int account_id, int homun_id) {
+static bool intif_homunculus_requestload(int account_id, int homun_id)
+{
if (intif->CheckForCharServer())
return false;
WFIFOHEAD(inter_fd, 10);
@@ -1132,7 +1133,7 @@ bool intif_homunculus_requestload(int account_id, int homun_id) {
return true;
}
-int intif_homunculus_requestsave(int account_id, struct s_homunculus* sh)
+static int intif_homunculus_requestsave(int account_id, struct s_homunculus *sh)
{
if (intif->CheckForCharServer())
return 0;
@@ -1147,7 +1148,7 @@ int intif_homunculus_requestsave(int account_id, struct s_homunculus* sh)
}
-int intif_homunculus_requestdelete(int homun_id)
+static int intif_homunculus_requestdelete(int homun_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -1163,7 +1164,8 @@ int intif_homunculus_requestdelete(int homun_id)
// Packets receive from inter server
// Wisp/Page reception // rewritten by [Yor]
-void intif_parse_WisMessage(int fd) {
+static void intif_parse_WisMessage(int fd)
+{
struct map_session_data* sd;
const char *wisp_source;
char name[NAME_LENGTH];
@@ -1199,7 +1201,7 @@ void intif_parse_WisMessage(int fd) {
}
// Wisp/page transmission result reception
-void intif_parse_WisEnd(int fd)
+static void intif_parse_WisEnd(int fd)
{
struct map_session_data* sd;
const char *playername = RFIFOP(fd, 2);
@@ -1213,7 +1215,7 @@ void intif_parse_WisEnd(int fd)
return;
}
-int intif_parse_WisToGM_sub(struct map_session_data *sd, va_list va)
+static int intif_parse_WisToGM_sub(struct map_session_data *sd, va_list va)
{
int permission = va_arg(va, int);
char *wisp_name;
@@ -1232,7 +1234,7 @@ int intif_parse_WisToGM_sub(struct map_session_data *sd, va_list va)
// Received wisp message from map-server via char-server for ALL gm
// 0x3003/0x3803 <packet_len>.w <wispname>.24B <permission>.l <message>.?B
-void intif_parse_WisToGM(int fd)
+static void intif_parse_WisToGM(int fd)
{
int permission, mes_len;
char Wisp_name[NAME_LENGTH];
@@ -1254,7 +1256,7 @@ void intif_parse_WisToGM(int fd)
}
// Request player registre
-void intif_parse_Registers(int fd)
+static void intif_parse_Registers(int fd)
{
int flag;
struct map_session_data *sd;
@@ -1355,7 +1357,7 @@ void intif_parse_Registers(int fd)
pc->reg_received(sd); //Received all registry values, execute init scripts and what-not. [Skotlex]
}
-void intif_parse_LoadGuildStorage(int fd)
+static void intif_parse_LoadGuildStorage(int fd)
{
struct guild_storage *gstor;
struct map_session_data *sd;
@@ -1397,13 +1399,13 @@ void intif_parse_LoadGuildStorage(int fd)
}
// ACK guild_storage saved
-void intif_parse_SaveGuildStorage(int fd)
+static void intif_parse_SaveGuildStorage(int fd)
{
gstorage->saved(/*RFIFOL(fd,2), */RFIFOL(fd,6));
}
// ACK party creation
-void intif_parse_PartyCreated(int fd)
+static void intif_parse_PartyCreated(int fd)
{
if(battle_config.etc_log)
ShowInfo("intif: party created by account %u\n\n", RFIFOL(fd,2));
@@ -1411,7 +1413,8 @@ void intif_parse_PartyCreated(int fd)
}
// Receive party info
-void intif_parse_PartyInfo(int fd) {
+static void intif_parse_PartyInfo(int fd)
+{
if (RFIFOW(fd,2) == 12) {
ShowWarning("intif: party noinfo (char_id=%u party_id=%u)\n", RFIFOL(fd,4), RFIFOL(fd,8));
party->recv_noinfo(RFIFOL(fd,8), RFIFOL(fd,4));
@@ -1425,7 +1428,7 @@ void intif_parse_PartyInfo(int fd) {
}
// ACK adding party member
-void intif_parse_PartyMemberAdded(int fd)
+static void intif_parse_PartyMemberAdded(int fd)
{
if(battle_config.etc_log)
ShowInfo("intif: party member added Party (%u), Account(%u), Char(%u)\n", RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10));
@@ -1433,13 +1436,13 @@ void intif_parse_PartyMemberAdded(int fd)
}
// ACK changing party option
-void intif_parse_PartyOptionChanged(int fd)
+static void intif_parse_PartyOptionChanged(int fd)
{
party->optionchanged(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOW(fd,10),RFIFOW(fd,12),RFIFOB(fd,14));
}
// ACK member leaving party
-void intif_parse_PartyMemberWithdraw(int fd)
+static void intif_parse_PartyMemberWithdraw(int fd)
{
if(battle_config.etc_log)
ShowInfo("intif: party member withdraw: Party(%u), Account(%u), Char(%u)\n", RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10));
@@ -1447,28 +1450,32 @@ void intif_parse_PartyMemberWithdraw(int fd)
}
// ACK party break
-void intif_parse_PartyBroken(int fd) {
+static void intif_parse_PartyBroken(int fd)
+{
party->broken(RFIFOL(fd,2));
}
// ACK party on new map
-void intif_parse_PartyMove(int fd)
+static void intif_parse_PartyMove(int fd)
{
party->recv_movemap(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOW(fd,14),RFIFOB(fd,16),RFIFOW(fd,17));
}
// ACK party messages
-void intif_parse_PartyMessage(int fd) {
+static void intif_parse_PartyMessage(int fd)
+{
party->recv_message(RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12), RFIFOW(fd,2)-12);
}
// ACK guild creation
-void intif_parse_GuildCreated(int fd) {
+static void intif_parse_GuildCreated(int fd)
+{
guild->created(RFIFOL(fd,2),RFIFOL(fd,6));
}
// ACK guild infos
-void intif_parse_GuildInfo(int fd) {
+static void intif_parse_GuildInfo(int fd)
+{
if (RFIFOW(fd,2) == 8) {
ShowWarning("intif: guild noinfo %u\n", RFIFOL(fd,4));
guild->recv_noinfo(RFIFOL(fd,4));
@@ -1481,30 +1488,35 @@ void intif_parse_GuildInfo(int fd) {
}
// ACK adding guild member
-void intif_parse_GuildMemberAdded(int fd) {
+static void intif_parse_GuildMemberAdded(int fd)
+{
if(battle_config.etc_log)
ShowInfo("intif: guild member added %u %u %u %d\n", RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOB(fd,14));
guild->member_added(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14));
}
// ACK member leaving guild
-void intif_parse_GuildMemberWithdraw(int fd) {
+static void intif_parse_GuildMemberWithdraw(int fd)
+{
guild->member_withdraw(RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOB(fd,14), RFIFOP(fd,55), RFIFOP(fd,15));
}
// ACK guild member basic info
-void intif_parse_GuildMemberInfoShort(int fd) {
+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));
}
// ACK guild break
-void intif_parse_GuildBroken(int fd) {
+static void intif_parse_GuildBroken(int fd)
+{
guild->broken(RFIFOL(fd,2),RFIFOB(fd,6));
}
// basic guild info change notice
// 0x3839 <packet len>.w <guild id>.l <type>.w <data>.?b
-void intif_parse_GuildBasicInfoChanged(int fd) {
+static void intif_parse_GuildBasicInfoChanged(int fd)
+{
//int len = RFIFOW(fd,2) - 10;
int guild_id = RFIFOL(fd,4);
int type = RFIFOW(fd,8);
@@ -1540,7 +1552,8 @@ void intif_parse_GuildBasicInfoChanged(int fd) {
// guild member info change notice
// 0x383a <packet len>.w <guild id>.l <account id>.l <char id>.l <type>.w <data>.?b
-void intif_parse_GuildMemberInfoChanged(int fd) {
+static void intif_parse_GuildMemberInfoChanged(int fd)
+{
//int len = RFIFOW(fd,2) - 18;
int guild_id = RFIFOL(fd,4);
int account_id = RFIFOL(fd,8);
@@ -1571,7 +1584,8 @@ void intif_parse_GuildMemberInfoChanged(int fd) {
}
// ACK change of guild title
-void intif_parse_GuildPosition(int fd) {
+static void intif_parse_GuildPosition(int fd)
+{
if (RFIFOW(fd,2)!=sizeof(struct guild_position)+12)
ShowError("intif: guild info: data size mismatch (%u) %d != %"PRIuS"\n",
RFIFOL(fd,4), RFIFOW(fd,2), sizeof(struct guild_position) + 12);
@@ -1579,47 +1593,56 @@ void intif_parse_GuildPosition(int fd) {
}
// ACK change of guild skill update
-void intif_parse_GuildSkillUp(int fd) {
+static void intif_parse_GuildSkillUp(int fd)
+{
guild->skillupack(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10));
}
// ACK change of guild relationship
-void intif_parse_GuildAlliance(int fd) {
+static void intif_parse_GuildAlliance(int fd)
+{
guild->allianceack(RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14), RFIFOB(fd,18), RFIFOP(fd,19), RFIFOP(fd,43));
}
// ACK change of guild notice
-void intif_parse_GuildNotice(int fd) {
+static void intif_parse_GuildNotice(int fd)
+{
guild->notice_changed(RFIFOL(fd,2), RFIFOP(fd,6), RFIFOP(fd,66));
}
// ACK change of guild emblem
-void intif_parse_GuildEmblem(int fd) {
+static void intif_parse_GuildEmblem(int fd)
+{
guild->emblem_changed(RFIFOW(fd,2)-12, RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12));
}
// ACK guild message
-void intif_parse_GuildMessage(int fd) {
+static void intif_parse_GuildMessage(int fd)
+{
guild->recv_message(RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12), RFIFOW(fd,2)-12);
}
// Reply guild castle data request
-void intif_parse_GuildCastleDataLoad(int fd) {
+static void intif_parse_GuildCastleDataLoad(int fd)
+{
guild->castledataloadack(RFIFOW(fd,2), RFIFOP(fd,4));
}
// ACK change of guildmaster
-void intif_parse_GuildMasterChanged(int fd) {
+static void intif_parse_GuildMasterChanged(int fd)
+{
guild->gm_changed(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10));
}
// Request pet creation
-void intif_parse_CreatePet(int fd) {
+static void intif_parse_CreatePet(int fd)
+{
pet->get_egg(RFIFOL(fd,2), RFIFOW(fd,6), RFIFOL(fd,8));
}
// ACK pet data
-void intif_parse_RecvPetData(int fd) {
+static void intif_parse_RecvPetData(int fd)
+{
struct s_pet p;
int len;
len=RFIFOW(fd,2);
@@ -1633,19 +1656,21 @@ void intif_parse_RecvPetData(int fd) {
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
// ACK pet save data
-void intif_parse_SavePetOk(int fd) {
+static void intif_parse_SavePetOk(int fd)
+{
if(RFIFOB(fd,6) == 1)
ShowError("pet data save failure\n");
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
// ACK deleting pet
-void intif_parse_DeletePetOk(int fd) {
+static void intif_parse_DeletePetOk(int fd)
+{
if(RFIFOB(fd,2) == 1)
ShowError("pet data delete failure\n");
}
// ACK changing name request, players,pets,homun
-void intif_parse_ChangeNameOk(int fd)
+static void intif_parse_ChangeNameOk(int fd)
{
struct map_session_data *sd = NULL;
if((sd=map->id2sd(RFIFOL(fd,2)))==NULL ||
@@ -1668,7 +1693,8 @@ void intif_parse_ChangeNameOk(int fd)
//----------------------------------------------------------------
// Homunculus recv packets [albator]
-void intif_parse_CreateHomunculus(int fd) {
+static void intif_parse_CreateHomunculus(int fd)
+{
int len = RFIFOW(fd,2)-9;
if (sizeof(struct s_homunculus) != len) {
if (battle_config.etc_log)
@@ -1678,7 +1704,8 @@ void intif_parse_CreateHomunculus(int fd) {
homun->recv_data(RFIFOL(fd,4), RFIFOP(fd,9), RFIFOB(fd,8)) ;
}
-void intif_parse_RecvHomunculusData(int fd) {
+static void intif_parse_RecvHomunculusData(int fd)
+{
int len = RFIFOW(fd,2)-9;
if (sizeof(struct s_homunculus) != len) {
@@ -1690,29 +1717,29 @@ void intif_parse_RecvHomunculusData(int fd) {
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_SaveHomunculusOk(int fd) {
+static void intif_parse_SaveHomunculusOk(int fd)
+{
if(RFIFOB(fd,6) != 1)
ShowError("homunculus data save failure for account %u\n", RFIFOL(fd,2));
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_DeleteHomunculusOk(int fd) {
+static void intif_parse_DeleteHomunculusOk(int fd)
+{
if(RFIFOB(fd,2) != 1)
ShowError("Homunculus data delete failure\n");
}
/**************************************
-
-QUESTLOG SYSTEM FUNCTIONS
-
-***************************************/
+ * QUESTLOG SYSTEM FUNCTIONS *
+ **************************************/
/**
* Requests a character's quest log entries to the inter server.
*
* @param sd Character's data
*/
-void intif_request_questlog(struct map_session_data *sd)
+static void intif_request_questlog(struct map_session_data *sd)
{
nullpo_retv(sd);
WFIFOHEAD(inter_fd,6);
@@ -1728,7 +1755,8 @@ void intif_request_questlog(struct map_session_data *sd)
*
* @see intif_parse
*/
-void intif_parse_QuestLog(int fd) {
+static void intif_parse_QuestLog(int fd)
+{
int char_id = RFIFOL(fd, 4), num_received = (RFIFOW(fd, 2)-8)/sizeof(struct quest);
struct map_session_data *sd = map->charid2sd(char_id);
@@ -1783,7 +1811,8 @@ void intif_parse_QuestLog(int fd) {
*
* @see intif_parse
*/
-void intif_parse_QuestSave(int fd) {
+static void intif_parse_QuestSave(int fd)
+{
int cid = RFIFOL(fd, 2);
struct map_session_data *sd = map->id2sd(cid);
@@ -1799,7 +1828,7 @@ void intif_parse_QuestSave(int fd) {
* @param sd Character's data
* @return 0 in case of success, nonzero otherwise
*/
-int intif_quest_save(struct map_session_data *sd)
+static int intif_quest_save(struct map_session_data *sd)
{
int len = sizeof(struct quest)*sd->num_quests + 8;
@@ -1826,7 +1855,7 @@ int intif_quest_save(struct map_session_data *sd)
* Inbox Request
* flag: 0 Update Inbox | 1 OpenMail
*------------------------------------------*/
-int intif_Mail_requestinbox(int char_id, unsigned char flag)
+static int intif_Mail_requestinbox(int char_id, unsigned char flag)
{
if (intif->CheckForCharServer())
return 0;
@@ -1840,7 +1869,8 @@ int intif_Mail_requestinbox(int char_id, unsigned char flag)
return 0;
}
-void intif_parse_MailInboxReceived(int fd) {
+static void intif_parse_MailInboxReceived(int fd)
+{
struct map_session_data *sd;
unsigned char flag = RFIFOB(fd,8);
@@ -1869,7 +1899,7 @@ void intif_parse_MailInboxReceived(int fd) {
/*------------------------------------------
* Mail Read
*------------------------------------------*/
-int intif_Mail_read(int mail_id)
+static int intif_Mail_read(int mail_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -1884,7 +1914,7 @@ int intif_Mail_read(int mail_id)
/*------------------------------------------
* Get Attachment
*------------------------------------------*/
-int intif_Mail_getattach(int char_id, int mail_id)
+static int intif_Mail_getattach(int char_id, int mail_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -1898,7 +1928,8 @@ int intif_Mail_getattach(int char_id, int mail_id)
return 0;
}
-void intif_parse_MailGetAttach(int fd) {
+static void intif_parse_MailGetAttach(int fd)
+{
struct map_session_data *sd;
struct item item;
int zeny = RFIFOL(fd,8);
@@ -1923,7 +1954,7 @@ void intif_parse_MailGetAttach(int fd) {
/*------------------------------------------
* Delete Message
*------------------------------------------*/
-int intif_Mail_delete(int char_id, int mail_id)
+static int intif_Mail_delete(int char_id, int mail_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -1937,7 +1968,8 @@ int intif_Mail_delete(int char_id, int mail_id)
return 0;
}
-void intif_parse_MailDelete(int fd) {
+static void intif_parse_MailDelete(int fd)
+{
struct map_session_data *sd;
int char_id = RFIFOL(fd,2);
int mail_id = RFIFOL(fd,6);
@@ -1965,7 +1997,7 @@ void intif_parse_MailDelete(int fd) {
/*------------------------------------------
* Return Message
*------------------------------------------*/
-int intif_Mail_return(int char_id, int mail_id)
+static int intif_Mail_return(int char_id, int mail_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -1979,7 +2011,8 @@ int intif_Mail_return(int char_id, int mail_id)
return 0;
}
-void intif_parse_MailReturn(int fd) {
+static void intif_parse_MailReturn(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
int mail_id = RFIFOL(fd,6);
short fail = RFIFOB(fd,10);
@@ -2006,7 +2039,7 @@ void intif_parse_MailReturn(int fd) {
/*------------------------------------------
* Send Mail
*------------------------------------------*/
-int intif_Mail_send(int account_id, struct mail_message *msg)
+static int intif_Mail_send(int account_id, struct mail_message *msg)
{
int len = sizeof(struct mail_message) + 8;
@@ -2024,7 +2057,8 @@ int intif_Mail_send(int account_id, struct mail_message *msg)
return 1;
}
-void intif_parse_MailSend(int fd) {
+static void intif_parse_MailSend(int fd)
+{
struct mail_message msg;
struct map_session_data *sd;
bool fail;
@@ -2050,7 +2084,8 @@ void intif_parse_MailSend(int fd) {
}
}
-void intif_parse_MailNew(int fd) {
+static void intif_parse_MailNew(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
int mail_id = RFIFOL(fd,6);
const char *sender_name = RFIFOP(fd,10);
@@ -2067,7 +2102,7 @@ void intif_parse_MailNew(int fd) {
* AUCTION SYSTEM
* By Zephyrus
*==========================================*/
-int intif_Auction_requestlist(int char_id, short type, int price, const char* searchtext, short page)
+static int intif_Auction_requestlist(int char_id, short type, int price, const char *searchtext, short page)
{
int len = NAME_LENGTH + 16;
@@ -2088,7 +2123,8 @@ int intif_Auction_requestlist(int char_id, short type, int price, const char* se
return 0;
}
-void intif_parse_AuctionResults(int fd) {
+static void intif_parse_AuctionResults(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,4));
short count = RFIFOW(fd,8);
short pages = RFIFOW(fd,10);
@@ -2100,7 +2136,7 @@ void intif_parse_AuctionResults(int fd) {
clif->auction_results(sd, count, pages, data);
}
-int intif_Auction_register(struct auction_data *auction)
+static int intif_Auction_register(struct auction_data *auction)
{
int len = sizeof(struct auction_data) + 4;
@@ -2117,7 +2153,8 @@ int intif_Auction_register(struct auction_data *auction)
return 1;
}
-void intif_parse_AuctionRegister(int fd) {
+static void intif_parse_AuctionRegister(int fd)
+{
struct map_session_data *sd;
struct auction_data auction;
@@ -2144,7 +2181,7 @@ void intif_parse_AuctionRegister(int fd) {
}
}
-int intif_Auction_cancel(int char_id, unsigned int auction_id)
+static int intif_Auction_cancel(int char_id, unsigned int auction_id)
{
if( intif->CheckForCharServer() )
return 0;
@@ -2158,7 +2195,8 @@ int intif_Auction_cancel(int char_id, unsigned int auction_id)
return 0;
}
-void intif_parse_AuctionCancel(int fd) {
+static void intif_parse_AuctionCancel(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
int result = RFIFOB(fd,6);
@@ -2173,7 +2211,7 @@ void intif_parse_AuctionCancel(int fd) {
}
}
-int intif_Auction_close(int char_id, unsigned int auction_id)
+static int intif_Auction_close(int char_id, unsigned int auction_id)
{
if( intif->CheckForCharServer() )
return 0;
@@ -2187,7 +2225,8 @@ int intif_Auction_close(int char_id, unsigned int auction_id)
return 0;
}
-void intif_parse_AuctionClose(int fd) {
+static void intif_parse_AuctionClose(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
unsigned char result = RFIFOB(fd,6);
@@ -2202,7 +2241,7 @@ void intif_parse_AuctionClose(int fd) {
}
}
-int intif_Auction_bid(int char_id, const char* name, unsigned int auction_id, int bid)
+static int intif_Auction_bid(int char_id, const char *name, unsigned int auction_id, int bid)
{
int len = 16 + NAME_LENGTH;
@@ -2222,7 +2261,8 @@ int intif_Auction_bid(int char_id, const char* name, unsigned int auction_id, in
return 0;
}
-void intif_parse_AuctionBid(int fd) {
+static void intif_parse_AuctionBid(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
int bid = RFIFOL(fd,6);
unsigned char result = RFIFOB(fd,10);
@@ -2241,7 +2281,8 @@ void intif_parse_AuctionBid(int fd) {
}
// Used to send 'You have won the auction' and 'You failed to won the auction' messages
-void intif_parse_AuctionMessage(int fd) {
+static void intif_parse_AuctionMessage(int fd)
+{
struct map_session_data *sd = map->charid2sd(RFIFOL(fd,2));
unsigned char result = RFIFOB(fd,6);
@@ -2254,7 +2295,7 @@ void intif_parse_AuctionMessage(int fd) {
/*==========================================
* Mercenary's System
*------------------------------------------*/
-int intif_mercenary_create(struct s_mercenary *merc)
+static int intif_mercenary_create(struct s_mercenary *merc)
{
int size = sizeof(struct s_mercenary) + 4;
@@ -2270,7 +2311,8 @@ int intif_mercenary_create(struct s_mercenary *merc)
return 0;
}
-void intif_parse_MercenaryReceived(int fd) {
+static void intif_parse_MercenaryReceived(int fd)
+{
int len = RFIFOW(fd,2) - 5;
if (sizeof(struct s_mercenary) != len) {
@@ -2282,7 +2324,7 @@ void intif_parse_MercenaryReceived(int fd) {
mercenary->data_received(RFIFOP(fd,5), RFIFOB(fd,4));
}
-int intif_mercenary_request(int merc_id, int char_id)
+static int intif_mercenary_request(int merc_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -2295,7 +2337,7 @@ int intif_mercenary_request(int merc_id, int char_id)
return 0;
}
-int intif_mercenary_delete(int merc_id)
+static int intif_mercenary_delete(int merc_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -2307,12 +2349,13 @@ int intif_mercenary_delete(int merc_id)
return 0;
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_MercenaryDeleted(int fd) {
+static void intif_parse_MercenaryDeleted(int fd)
+{
if( RFIFOB(fd,2) != 1 )
ShowError("Mercenary data delete failure\n");
}
-int intif_mercenary_save(struct s_mercenary *merc)
+static int intif_mercenary_save(struct s_mercenary *merc)
{
int size = sizeof(struct s_mercenary) + 4;
@@ -2328,7 +2371,8 @@ int intif_mercenary_save(struct s_mercenary *merc)
return 0;
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_MercenarySaved(int fd) {
+static void intif_parse_MercenarySaved(int fd)
+{
if( RFIFOB(fd,2) != 1 )
ShowError("Mercenary data save failure\n");
}
@@ -2336,7 +2380,7 @@ void intif_parse_MercenarySaved(int fd) {
/*==========================================
* Elemental's System
*------------------------------------------*/
-int intif_elemental_create(struct s_elemental *ele)
+static int intif_elemental_create(struct s_elemental *ele)
{
int size = sizeof(struct s_elemental) + 4;
@@ -2352,7 +2396,8 @@ int intif_elemental_create(struct s_elemental *ele)
return 0;
}
-void intif_parse_ElementalReceived(int fd) {
+static void intif_parse_ElementalReceived(int fd)
+{
int len = RFIFOW(fd,2) - 5;
if (sizeof(struct s_elemental) != len) {
@@ -2364,7 +2409,7 @@ void intif_parse_ElementalReceived(int fd) {
elemental->data_received(RFIFOP(fd,5), RFIFOB(fd,4));
}
-int intif_elemental_request(int ele_id, int char_id)
+static int intif_elemental_request(int ele_id, int char_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -2377,7 +2422,7 @@ int intif_elemental_request(int ele_id, int char_id)
return 0;
}
-int intif_elemental_delete(int ele_id)
+static int intif_elemental_delete(int ele_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -2389,12 +2434,13 @@ int intif_elemental_delete(int ele_id)
return 0;
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_ElementalDeleted(int fd) {
+static void intif_parse_ElementalDeleted(int fd)
+{
if( RFIFOB(fd,2) != 1 )
ShowError("Elemental data delete failure\n");
}
-int intif_elemental_save(struct s_elemental *ele)
+static int intif_elemental_save(struct s_elemental *ele)
{
int size = sizeof(struct s_elemental) + 4;
@@ -2410,12 +2456,14 @@ int intif_elemental_save(struct s_elemental *ele)
return 0;
}
/* Really? Whats the point, shouldn't be sent when successful then [Ind] */
-void intif_parse_ElementalSaved(int fd) {
+static void intif_parse_ElementalSaved(int fd)
+{
if( RFIFOB(fd,2) != 1 )
ShowError("Elemental data save failure\n");
}
-void intif_request_accinfo( int u_fd, int aid, int group_lv, char* query ) {
+static void intif_request_accinfo(int u_fd, int aid, int group_lv, char *query)
+{
nullpo_retv(query);
WFIFOHEAD(inter_fd,2 + 4 + 4 + 4 + NAME_LENGTH);
@@ -2430,7 +2478,8 @@ void intif_request_accinfo( int u_fd, int aid, int group_lv, char* query ) {
return;
}
-void intif_parse_MessageToFD(int fd) {
+static void intif_parse_MessageToFD(int fd)
+{
int u_fd = RFIFOL(fd,4);
Assert_retv(sockt->session_is_valid(u_fd));
@@ -2451,7 +2500,8 @@ void intif_parse_MessageToFD(int fd) {
/*==========================================
* Item Bound System [Xantara][Mhalicot]
*------------------------------------------*/
-void intif_itembound_req(int char_id,int aid,int guild_id) {
+static void intif_itembound_req(int char_id, int aid, int guild_id)
+{
#ifdef GP_BOUND_ITEMS
struct guild_storage *gstor = idb_get(gstorage->db,guild_id);
WFIFOHEAD(inter_fd,12);
@@ -2466,7 +2516,8 @@ void intif_itembound_req(int char_id,int aid,int guild_id) {
}
//3856
-void intif_parse_Itembound_ack(int fd) {
+static void intif_parse_Itembound_ack(int fd)
+{
#ifdef GP_BOUND_ITEMS
struct guild_storage *gstor;
int guild_id = RFIFOW(fd,6);
@@ -2478,8 +2529,8 @@ void intif_parse_Itembound_ack(int fd) {
}
/*==========================================
-* RoDEX System
-*==========================================*/
+ * RoDEX System
+ *==========================================*/
/*------------------------------------------
* Mail List
@@ -2489,7 +2540,7 @@ void intif_parse_Itembound_ack(int fd) {
// char_id: char_id
// account_id: account_id (used by account mail)
// flag: 0 - Open/Refresh ; 1 = Next Page
-int intif_rodex_requestinbox(int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id)
+static int intif_rodex_requestinbox(int char_id, int account_id, int8 flag, int8 opentype, int64 mail_id)
{
if (intif->CheckForCharServer())
return 0;
@@ -2506,7 +2557,7 @@ int intif_rodex_requestinbox(int char_id, int account_id, int8 flag, int8 openty
return 0;
}
-void intif_parse_RequestRodexOpenInbox(int fd)
+static void intif_parse_RequestRodexOpenInbox(int fd)
{
struct map_session_data *sd;
#if PACKETVER < 20170419
@@ -2566,7 +2617,7 @@ void intif_parse_RequestRodexOpenInbox(int fd)
/*------------------------------------------
* Notifications
*------------------------------------------*/
-int intif_rodex_hasnew(struct map_session_data *sd)
+static int intif_rodex_hasnew(struct map_session_data *sd)
{
nullpo_retr(0, sd);
@@ -2582,7 +2633,7 @@ int intif_rodex_hasnew(struct map_session_data *sd)
return 0;
}
-void intif_parse_RodexNotifications(int fd)
+static void intif_parse_RodexNotifications(int fd)
{
struct map_session_data *sd;
bool has_messages;
@@ -2607,7 +2658,7 @@ void intif_parse_RodexNotifications(int fd)
/// 2 - user got Items
/// 3 - delete
/// 4 - sender Read (returned mail)
-int intif_rodex_updatemail(int64 mail_id, int8 flag)
+static int intif_rodex_updatemail(int64 mail_id, int8 flag)
{
if (intif->CheckForCharServer())
return 0;
@@ -2624,7 +2675,7 @@ int intif_rodex_updatemail(int64 mail_id, int8 flag)
/*------------------------------------------
* Send Mail
*------------------------------------------*/
-int intif_rodex_sendmail(struct rodex_message *msg)
+static int intif_rodex_sendmail(struct rodex_message *msg)
{
if (intif->CheckForCharServer())
return 0;
@@ -2640,7 +2691,7 @@ int intif_rodex_sendmail(struct rodex_message *msg)
return 0;
}
-void intif_parse_RodexSendMail(int fd)
+static void intif_parse_RodexSendMail(int fd)
{
struct map_session_data *ssd = NULL, *rsd = NULL;
int sender_id = RFIFOL(fd, 2);
@@ -2661,7 +2712,7 @@ void intif_parse_RodexSendMail(int fd)
/*------------------------------------------
* Check Player
*------------------------------------------*/
-int intif_rodex_checkname(struct map_session_data *sd, const char *name)
+static int intif_rodex_checkname(struct map_session_data *sd, const char *name)
{
if (intif->CheckForCharServer())
return 0;
@@ -2678,7 +2729,7 @@ int intif_rodex_checkname(struct map_session_data *sd, const char *name)
return 0;
}
-void intif_parse_RodexCheckName(int fd)
+static void intif_parse_RodexCheckName(int fd)
{
struct map_session_data *sd = NULL;
int reqchar_id = RFIFOL(fd, 2);
@@ -2712,7 +2763,7 @@ void intif_parse_RodexCheckName(int fd)
// Communication from the inter server
// Return a 0 (false) if there were any errors.
// 1, 2 if there are not enough to return the length of the packet if the packet processing
-int intif_parse(int fd)
+static int intif_parse(int fd)
{
int packet_len, cmd;
cmd = RFIFOW(fd,0);
@@ -2837,11 +2888,12 @@ int intif_parse(int fd)
}
/*=====================================
-* Default Functions : intif.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void intif_defaults(void) {
+ * Default Functions : intif.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void intif_defaults(void)
+{
const int packet_len_table [INTIF_PACKET_LEN_TABLE_SIZE] = {
-1,-1,27,-1, -1,-1,37,-1, 7, 0, 0, 0, 0, 0, 0, 0, //0x3800-0x380f
0, 0, 0, 0, 0, 0, 0, 0, -1,11, 0, 0, 0, 0, 0, 0, //0x3810
diff --git a/src/map/intif.h b/src/map/intif.h
index 4973768d7..c75b93201 100644
--- a/src/map/intif.h
+++ b/src/map/intif.h
@@ -58,8 +58,8 @@ 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, short pet_egg_id,
- short pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
+ int (*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 (*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);
int (*main_message) (struct map_session_data* sd, const char* message);
diff --git a/src/map/irc-bot.c b/src/map/irc-bot.c
index d087588af..6f37fa4a6 100644
--- a/src/map/irc-bot.c
+++ b/src/map/irc-bot.c
@@ -43,13 +43,14 @@
//#define IRCBOT_DEBUG
-struct irc_bot_interface irc_bot_s;
+static struct irc_bot_interface irc_bot_s;
struct irc_bot_interface *ircbot;
-char send_string[IRC_MESSAGE_LENGTH];
+static char send_string[IRC_MESSAGE_LENGTH];
/// @copydoc irc_bot_interface::connect_timer()
-int irc_connect_timer(int tid, int64 tick, int id, intptr_t data) {
+static int irc_connect_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct hSockOpt opt;
if( ircbot->isOn || ++ircbot->fails >= 3 )
return 0;
@@ -69,7 +70,8 @@ int irc_connect_timer(int tid, int64 tick, int id, intptr_t data) {
}
/// @copydoc irc_bot_interface::identify_timer()
-int irc_identify_timer(int tid, int64 tick, int id, intptr_t data) {
+static int irc_identify_timer(int tid, int64 tick, int id, intptr_t data)
+{
if( !ircbot->isOn )
return 0;
@@ -84,7 +86,8 @@ int irc_identify_timer(int tid, int64 tick, int id, intptr_t data) {
}
/// @copydoc irc_bot_interface::join_timer()
-int irc_join_timer(int tid, int64 tick, int id, intptr_t data) {
+static int irc_join_timer(int tid, int64 tick, int id, intptr_t data)
+{
if( !ircbot->isOn )
return 0;
@@ -105,7 +108,8 @@ int irc_join_timer(int tid, int64 tick, int id, intptr_t data) {
}
/// @copydoc irc_bot_interface::func_search()
-struct irc_func* irc_func_search(char* function_name) {
+static struct irc_func *irc_func_search(char *function_name)
+{
int i;
nullpo_retr(NULL, function_name);
for(i = 0; i < ircbot->funcs.size; i++) {
@@ -117,7 +121,8 @@ struct irc_func* irc_func_search(char* function_name) {
}
/// @copydoc irc_bot_interface::parse()
-int irc_parse(int fd) {
+static int irc_parse(int fd)
+{
char *parse_string = NULL, *p = NULL, *str_safe = NULL;
if (sockt->session[fd]->flag.eof) {
@@ -151,7 +156,8 @@ int irc_parse(int fd) {
}
/// @copydoc irc_bot_interface::parse_source()
-void irc_parse_source(char *source, char *nick, char *ident, char *host) {
+static void irc_parse_source(char *source, char *nick, char *ident, char *host)
+{
int i, pos = 0;
size_t len;
unsigned char stage = 0;
@@ -175,7 +181,8 @@ void irc_parse_source(char *source, char *nick, char *ident, char *host) {
}
/// @copydoc irc_bot_interface::parse_sub()
-void irc_parse_sub(int fd, char *str) {
+static void irc_parse_sub(int fd, char *str)
+{
char source[180], command[60], buf1[IRC_MESSAGE_LENGTH], buf2[IRC_MESSAGE_LENGTH];
char *target = buf1, *message = buf2;
struct irc_func *func;
@@ -205,7 +212,7 @@ void irc_parse_sub(int fd, char *str) {
}
/// @copydoc irc_bot_interface::queue()
-void irc_queue(char *str)
+static void irc_queue(char *str)
{
struct message_flood *queue_entry = NULL;
@@ -242,7 +249,7 @@ void irc_queue(char *str)
}
/// @copydoc irc_bot_interface::queue_timer()
-int irc_queue_timer(int tid, int64 tick, int id, intptr_t data)
+static int irc_queue_timer(int tid, int64 tick, int id, intptr_t data)
{
struct message_flood *queue_entry = ircbot->message_current;
nullpo_ret(queue_entry);
@@ -263,7 +270,7 @@ int irc_queue_timer(int tid, int64 tick, int id, intptr_t data)
}
/// @copydoc irc_bot_interface::send()
-void irc_send(char *str, bool force)
+static void irc_send(char *str, bool force)
{
size_t len;
nullpo_retv(str);
@@ -283,14 +290,16 @@ void irc_send(char *str, bool force)
}
/// @copydoc irc_interface_bot::pong()
-void irc_pong(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_pong(int fd, char *cmd, char *source, char *target, char *msg)
+{
nullpo_retv(cmd);
snprintf(send_string, IRC_MESSAGE_LENGTH, "PONG %s", cmd);
ircbot->send(send_string, false);
}
/// @copydoc irc_interface_bot::privmsg_ctcp()
-void irc_privmsg_ctcp(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_privmsg_ctcp(int fd, char *cmd, char *source, char *target, char *msg)
+{
char source_nick[IRC_NICK_LENGTH], source_ident[IRC_IDENT_LENGTH], source_host[IRC_HOST_LENGTH];
source_nick[0] = source_ident[0] = source_host[0] = '\0';
@@ -336,7 +345,8 @@ void irc_privmsg_ctcp(int fd, char *cmd, char *source, char *target, char *msg)
}
/// @copydoc irc_bot_interface::privmsg()
-void irc_privmsg(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_privmsg(int fd, char *cmd, char *source, char *target, char *msg)
+{
size_t len = msg ? strlen(msg) : 0;
nullpo_retv(source);
nullpo_retv(target);
@@ -374,7 +384,8 @@ void irc_privmsg(int fd, char *cmd, char *source, char *target, char *msg) {
}
/// @copydoc irc_bot_interface::userjoin()
-void irc_userjoin(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_userjoin(int fd, char *cmd, char *source, char *target, char *msg)
+{
char source_nick[IRC_NICK_LENGTH], source_ident[IRC_IDENT_LENGTH], source_host[IRC_HOST_LENGTH];
nullpo_retv(source);
@@ -390,7 +401,8 @@ void irc_userjoin(int fd, char *cmd, char *source, char *target, char *msg) {
}
/// @copydoc irc_bot_interface::userleave()
-void irc_userleave(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_userleave(int fd, char *cmd, char *source, char *target, char *msg)
+{
char source_nick[IRC_NICK_LENGTH], source_ident[IRC_IDENT_LENGTH], source_host[IRC_HOST_LENGTH];
nullpo_retv(source);
@@ -409,7 +421,8 @@ void irc_userleave(int fd, char *cmd, char *source, char *target, char *msg) {
}
/// @copydoc irc_bot_interface::usernick()
-void irc_usernick(int fd, char *cmd, char *source, char *target, char *msg) {
+static void irc_usernick(int fd, char *cmd, char *source, char *target, char *msg)
+{
char source_nick[IRC_NICK_LENGTH], source_ident[IRC_IDENT_LENGTH], source_host[IRC_HOST_LENGTH];
nullpo_retv(source);
@@ -425,7 +438,7 @@ void irc_usernick(int fd, char *cmd, char *source, char *target, char *msg) {
}
/// @copydoc irc_bot_interface::relay()
-void irc_relay(const char *name, const char *msg)
+static void irc_relay(const char *name, const char *msg)
{
if (!ircbot->isIn)
return;
@@ -440,7 +453,8 @@ void irc_relay(const char *name, const char *msg)
}
/// @copydoc irc_bot_interface::init()
-void irc_bot_init(bool minimal) {
+static void irc_bot_init(bool minimal)
+{
/// Command handlers
const struct irc_func irc_func_base[] = {
{ "PING" , ircbot->pong },
@@ -491,7 +505,8 @@ void irc_bot_init(bool minimal) {
}
/// @copydoc irc_bot_interface::final()
-void irc_bot_final(void) {
+static void irc_bot_final(void)
+{
int i;
if (!channel->config->irc)
@@ -519,7 +534,8 @@ void irc_bot_final(void) {
/**
* IRC bot interface defaults initializer
*/
-void ircbot_defaults(void) {
+void ircbot_defaults(void)
+{
ircbot = &irc_bot_s;
ircbot->channel = NULL;
diff --git a/src/map/itemdb.c b/src/map/itemdb.c
index f2fd2ac80..5e447d4c0 100644
--- a/src/map/itemdb.c
+++ b/src/map/itemdb.c
@@ -41,7 +41,7 @@
#include <stdlib.h>
#include <string.h>
-struct itemdb_interface itemdb_s;
+static struct itemdb_interface itemdb_s;
struct itemdb_interface *itemdb;
/**
@@ -49,7 +49,7 @@ struct itemdb_interface *itemdb;
* name = item alias, so we should find items aliases first. if not found then look for "jname" (full name)
* @see DBApply
*/
-int itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap)
+static int itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct item_data *item = DB->data2ptr(data), **dst, **dst2;
char *str;
@@ -78,7 +78,8 @@ int itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap)
/*==========================================
* Return item data from item name. (lookup)
*------------------------------------------*/
-struct item_data* itemdb_searchname(const char *str) {
+static struct item_data *itemdb_searchname(const char *str)
+{
struct item_data* item;
struct item_data* item2=NULL;
int i;
@@ -105,14 +106,15 @@ struct item_data* itemdb_searchname(const char *str) {
return item?item:item2;
}
/* name to item data */
-struct item_data* itemdb_name2id(const char *str) {
+static struct item_data *itemdb_name2id(const char *str)
+{
return strdb_get(itemdb->names,str);
}
/**
* @see DBMatcher
*/
-int itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list ap)
+static int itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list ap)
{
struct item_data *item = DB->data2ptr(&data);
char *str;
@@ -135,7 +137,8 @@ int itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list ap)
* 0 - approximate match
* 1 - exact match
*------------------------------------------*/
-int itemdb_searchname_array(struct item_data** data, int size, const char *str, int flag) {
+static int itemdb_searchname_array(struct item_data **data, int size, const char *str, int flag)
+{
struct item_data* item;
int i;
int count=0;
@@ -181,7 +184,8 @@ int itemdb_searchname_array(struct item_data** data, int size, const char *str,
return count;
}
/* [Ind/Hercules] */
-int itemdb_chain_item(unsigned short chain_id, int *rate) {
+static int itemdb_chain_item(unsigned short chain_id, int *rate)
+{
struct item_chain_entry *entry;
if( chain_id >= itemdb->chain_count ) {
@@ -199,7 +203,8 @@ int itemdb_chain_item(unsigned short chain_id, int *rate) {
return entry->id;
}
/* [Ind/Hercules] */
-void itemdb_package_item(struct map_session_data *sd, struct item_package *package) {
+static void itemdb_package_item(struct map_session_data *sd, struct item_package *package)
+{
int i = 0, get_count, j, flag;
nullpo_retv(sd);
@@ -287,7 +292,8 @@ void itemdb_package_item(struct map_session_data *sd, struct item_package *packa
/*==========================================
* Return a random item id from group. (takes into account % chance giving/tot group)
*------------------------------------------*/
-int itemdb_searchrandomid(struct item_group *group) {
+static int itemdb_searchrandomid(struct item_group *group)
+{
nullpo_retr(UNKNOWN_ITEM_ID, group);
if (group->qty)
@@ -296,7 +302,8 @@ int itemdb_searchrandomid(struct item_group *group) {
ShowError("itemdb_searchrandomid: No item entries for group id %d\n", group->id);
return UNKNOWN_ITEM_ID;
}
-bool itemdb_in_group(struct item_group *group, int nameid) {
+static bool itemdb_in_group(struct item_group *group, int nameid)
+{
int i;
nullpo_retr(false, group);
@@ -309,7 +316,7 @@ bool itemdb_in_group(struct item_group *group, int nameid) {
/// Searches for the item_data.
/// Returns the item_data or NULL if it does not exist.
-struct item_data* itemdb_exists(int nameid)
+static struct item_data *itemdb_exists(int nameid)
{
struct item_data* item;
@@ -326,14 +333,14 @@ struct item_data* itemdb_exists(int nameid)
* @param option_index as the index of the item option (client side).
* @return pointer to struct itemdb_option data or NULL.
*/
-struct itemdb_option *itemdb_option_exists(int idx)
+static struct itemdb_option *itemdb_option_exists(int idx)
{
return (struct itemdb_option *)idb_get(itemdb->options, idx);
}
/// Returns human readable name for given item type.
/// @param type Type id to retrieve name for ( IT_* ).
-const char* itemdb_typename(int type)
+static const char *itemdb_typename(int type)
{
switch(type)
{
@@ -362,7 +369,7 @@ const char* itemdb_typename(int type)
*
* @author Dastgir
*/
-void itemdb_jobid2mapid(uint64 *bclass, int job_class, bool enable)
+static void itemdb_jobid2mapid(uint64 *bclass, int job_class, bool enable)
{
uint64 mask[3] = { 0 };
int i;
@@ -489,7 +496,7 @@ void itemdb_jobid2mapid(uint64 *bclass, int job_class, bool enable)
* @param bclass Pointer to the variable containing the new format.
* @param jobmask Variable containing JobMask.
*/
-void itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask)
+static void itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask)
{
nullpo_retv(bclass);
bclass[0] = bclass[1] = bclass[2] = 0;
@@ -572,7 +579,7 @@ void itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask)
bclass[0] |= 1ULL<<MAPID_SUMMONER;
}
-void create_dummy_data(void)
+static void create_dummy_data(void)
{
memset(&itemdb->dummy, 0, sizeof(struct item_data));
itemdb->dummy.nameid=500;
@@ -584,7 +591,7 @@ void create_dummy_data(void)
itemdb->dummy.view_id=UNKNOWN_ITEM_ID;
}
-struct item_data* create_item_data(int nameid)
+static struct item_data *create_item_data(int nameid)
{
struct item_data *id;
CREATE(id, struct item_data, 1);
@@ -597,7 +604,8 @@ struct item_data* create_item_data(int nameid)
/*==========================================
* Loads (and creates if not found) an item from the db.
*------------------------------------------*/
-struct item_data* itemdb_load(int nameid) {
+static struct item_data *itemdb_load(int nameid)
+{
struct item_data *id;
if( nameid >= 0 && nameid < ARRAYLENGTH(itemdb->array) )
@@ -620,7 +628,7 @@ struct item_data* itemdb_load(int nameid) {
/*==========================================
* Loads an item from the db. If not found, it will return the dummy item.
*------------------------------------------*/
-struct item_data* itemdb_search(int nameid)
+static struct item_data *itemdb_search(int nameid)
{
struct item_data* id;
if( nameid >= 0 && nameid < ARRAYLENGTH(itemdb->array) )
@@ -640,7 +648,7 @@ struct item_data* itemdb_search(int nameid)
/*==========================================
* Returns if given item is a player-equippable piece.
*------------------------------------------*/
-int itemdb_isequip(int nameid)
+static int itemdb_isequip(int nameid)
{
int type=itemdb_type(nameid);
switch (type) {
@@ -656,7 +664,8 @@ int itemdb_isequip(int nameid)
/*==========================================
* Alternate version of itemdb_isequip
*------------------------------------------*/
-int itemdb_isequip2(struct item_data *data) {
+static int itemdb_isequip2(struct item_data *data)
+{
nullpo_ret(data);
switch(data->type) {
case IT_WEAPON:
@@ -671,7 +680,7 @@ int itemdb_isequip2(struct item_data *data) {
/*==========================================
* Returns if given item's type is stackable.
*------------------------------------------*/
-int itemdb_isstackable(int nameid)
+static int itemdb_isstackable(int nameid)
{
int type=itemdb_type(nameid);
switch(type) {
@@ -688,7 +697,7 @@ int itemdb_isstackable(int nameid)
/*==========================================
* Alternate version of itemdb_isstackable
*------------------------------------------*/
-int itemdb_isstackable2(struct item_data *data)
+static int itemdb_isstackable2(struct item_data *data)
{
nullpo_ret(data);
switch(data->type) {
@@ -705,43 +714,52 @@ int itemdb_isstackable2(struct item_data *data)
/*==========================================
* Trade Restriction functions [Skotlex]
*------------------------------------------*/
-int itemdb_isdropable_sub(struct item_data *item, int gmlv, int unused) {
+static int itemdb_isdropable_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NODROP) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_cantrade_sub(struct item_data* item, int gmlv, int gmlv2) {
+static int itemdb_cantrade_sub(struct item_data *item, int gmlv, int gmlv2)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOTRADE) || gmlv >= item->gm_lv_trade_override || gmlv2 >= item->gm_lv_trade_override));
}
-int itemdb_canpartnertrade_sub(struct item_data* item, int gmlv, int gmlv2) {
+static int itemdb_canpartnertrade_sub(struct item_data *item, int gmlv, int gmlv2)
+{
return (item && (item->flag.trade_restriction&ITR_PARTNEROVERRIDE || gmlv >= item->gm_lv_trade_override || gmlv2 >= item->gm_lv_trade_override));
}
-int itemdb_cansell_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_cansell_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOSELLTONPC) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_cancartstore_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_cancartstore_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOCART) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_canstore_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_canstore_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOSTORAGE) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_canguildstore_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_canguildstore_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOGSTORAGE) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_canmail_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_canmail_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOMAIL) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_canauction_sub(struct item_data* item, int gmlv, int unused) {
+static int itemdb_canauction_sub(struct item_data *item, int gmlv, int unused)
+{
return (item && (!(item->flag.trade_restriction&ITR_NOAUCTION) || gmlv >= item->gm_lv_trade_override));
}
-int itemdb_isrestricted(struct item* item, int gmlv, int gmlv2, int (*func)(struct item_data*, int, int))
+static int itemdb_isrestricted(struct item *item, int gmlv, int gmlv2, int (*func)(struct item_data*, int, int))
{
struct item_data* item_data;
int i;
@@ -765,7 +783,8 @@ int itemdb_isrestricted(struct item* item, int gmlv, int gmlv2, int (*func)(stru
/*==========================================
* Specifies if item-type should drop unidentified.
*------------------------------------------*/
-int itemdb_isidentified(int nameid) {
+static int itemdb_isidentified(int nameid)
+{
int type=itemdb_type(nameid);
switch (type) {
case IT_WEAPON:
@@ -777,7 +796,8 @@ int itemdb_isidentified(int nameid) {
}
}
/* same as itemdb_isidentified but without a lookup */
-int itemdb_isidentified2(struct item_data *data) {
+static int itemdb_isidentified2(struct item_data *data)
+{
nullpo_ret(data);
switch (data->type) {
case IT_WEAPON:
@@ -789,7 +809,8 @@ int itemdb_isidentified2(struct item_data *data) {
}
}
-void itemdb_read_groups(void) {
+static void itemdb_read_groups(void)
+{
struct config_t item_group_conf;
struct config_setting_t *itg = NULL, *it = NULL;
#ifdef RENEWAL
@@ -842,7 +863,7 @@ void itemdb_read_groups(void) {
itemdb->groups[count].id = data->nameid;
itemdb->groups[count].qty = gsize[ count ];
- CREATE(itemdb->groups[count].nameid, unsigned short, gsize[ count ] + 1);
+ CREATE(itemdb->groups[count].nameid, int, gsize[count] + 1);
c = 0;
while( (it = libconfig->setting_get_elem(itg,c++)) ) {
int repeat = 1;
@@ -852,7 +873,7 @@ void itemdb_read_groups(void) {
} else
itname = libconfig->setting_get_string_elem(itg,c - 1);
- if( itname[0] == 'I' && itname[1] == 'D' && strlen(itname) < 8 ) {
+ if (itname[0] == 'I' && itname[1] == 'D' && strlen(itname) <= 12) {
if( !( data = itemdb->exists(atoi(itname+2)) ) )
ShowWarning("itemdb_read_groups: unknown item ID '%d' in group '%s'!\n",atoi(itname+2),config_setting_name(itg));
} else if( !( data = itemdb->name2id(itname) ) )
@@ -877,7 +898,8 @@ void itemdb_read_groups(void) {
}
/* [Ind/Hercules] - HCache for Packages */
-void itemdb_write_cached_packages(const char *config_filename) {
+static void itemdb_write_cached_packages(const char *config_filename)
+{
FILE *file;
unsigned short pcount = itemdb->package_count;
unsigned short i;
@@ -891,7 +913,8 @@ void itemdb_write_cached_packages(const char *config_filename) {
hwrite(&pcount,sizeof(pcount),1,file);
for(i = 0; i < pcount; i++) {
- unsigned short id = itemdb->packages[i].id, random_qty = itemdb->packages[i].random_qty, must_qty = itemdb->packages[i].must_qty;
+ int id = itemdb->packages[i].id;
+ unsigned short random_qty = itemdb->packages[i].random_qty, must_qty = itemdb->packages[i].must_qty;
unsigned short c;
//into a package, first 2 bytes = id.
hwrite(&id,sizeof(id),1,file);
@@ -948,7 +971,9 @@ void itemdb_write_cached_packages(const char *config_filename) {
return;
}
-bool itemdb_read_cached_packages(const char *config_filename) {
+
+static bool itemdb_read_cached_packages(const char *config_filename)
+{
FILE *file;
unsigned short pcount = 0;
unsigned short i;
@@ -965,12 +990,13 @@ bool itemdb_read_cached_packages(const char *config_filename) {
itemdb->package_count = pcount;
for( i = 0; i < pcount; i++ ) {
- unsigned short id = 0, random_qty = 0, must_qty = 0;
+ int id = 0;
+ unsigned short random_qty = 0, must_qty = 0;
struct item_data *pdata;
struct item_package *package = &itemdb->packages[i];
unsigned short c;
- //into a package, first 2 bytes = id.
+ //into a package, first 4 bytes = id.
hread(&id,sizeof(id),1,file);
//next 2 bytes = must count
hread(&must_qty,sizeof(must_qty),1,file);
@@ -993,10 +1019,11 @@ bool itemdb_read_cached_packages(const char *config_filename) {
//now we loop into must
for(c = 0; c < package->must_qty; c++) {
struct item_package_must_entry *entry = &itemdb->packages[i].must_items[c];
- unsigned short mid = 0, qty = 0, hours = 0;
+ int mid = 0;
+ unsigned short qty = 0, hours = 0;
unsigned char announce = 0, named = 0, force_serial = 0;
struct item_data *data;
- //first 2 byte = item id
+ //first 4 byte = item id
hread(&mid,sizeof(mid),1,file);
//next 2 byte = qty
hread(&qty,sizeof(qty),1,file);
@@ -1036,7 +1063,8 @@ bool itemdb_read_cached_packages(const char *config_filename) {
//now we loop into the group's list
for(h = 0; h < group_qty; h++) {
struct item_package_rand_entry *entry = &itemdb->packages[i].random_groups[c].random_list[h];
- unsigned short mid = 0, qty = 0, hours = 0, rate = 0;
+ int mid = 0;
+ unsigned short qty = 0, hours = 0, rate = 0;
unsigned char announce = 0, named = 0, force_serial = 0;
struct item_data *data;
@@ -1079,7 +1107,8 @@ bool itemdb_read_cached_packages(const char *config_filename) {
return true;
}
-void itemdb_read_packages(void) {
+static void itemdb_read_packages(void)
+{
struct config_t item_packages_conf;
struct config_setting_t *itg = NULL, *it = NULL, *t = NULL;
#ifdef RENEWAL
@@ -1211,7 +1240,7 @@ void itemdb_read_packages(void) {
itname = config_setting_name(it);
- if( itname[0] == 'I' && itname[1] == 'D' && strlen(itname) < 8 ) {
+ if (itname[0] == 'I' && itname[1] == 'D' && strlen(itname) <= 12) {
if( !( data = itemdb->exists(atoi(itname+2)) ) )
ShowWarning("itemdb_read_packages: unknown item ID '%d' in package '%s'!\n",atoi(itname+2),config_setting_name(itg));
} else if( !( data = itemdb->name2id(itname) ) )
@@ -1318,7 +1347,7 @@ void itemdb_read_packages(void) {
* @param[in] source Source of the entry (file name), to be displayed in
* case of validation errors.
*/
-void itemdb_readdb_options_additional_fields(struct itemdb_option *ito, struct config_setting_t *t, const char *source)
+static void itemdb_readdb_options_additional_fields(struct itemdb_option *ito, struct config_setting_t *t, const char *source)
{
// do nothing. plugins can do their own work
}
@@ -1326,7 +1355,7 @@ void itemdb_readdb_options_additional_fields(struct itemdb_option *ito, struct c
/**
* Reads the Item Options configuration file.
*/
-void itemdb_read_options(void)
+static void itemdb_read_options(void)
{
struct config_t item_options_db;
struct config_setting_t *ito = NULL, *conf = NULL;
@@ -1428,7 +1457,8 @@ void itemdb_read_options(void)
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filepath);
}
-void itemdb_read_chains(void) {
+static void itemdb_read_chains(void)
+{
struct config_t item_chain_conf;
struct config_setting_t *itc = NULL;
#ifdef RENEWAL
@@ -1461,7 +1491,7 @@ void itemdb_read_chains(void) {
while( (entry = libconfig->setting_get_elem(itc,c++)) ) {
const char *itname = config_setting_name(entry);
- if( itname[0] == 'I' && itname[1] == 'D' && strlen(itname) < 8 ) {
+ if (itname[0] == 'I' && itname[1] == 'D' && strlen(itname) <= 12) {
if( !( data = itemdb->exists(atoi(itname+2)) ) )
ShowWarning("itemdb_read_chains: unknown item ID '%d' in chain '%s'!\n",atoi(itname+2),name);
} else if( !( data = itemdb->name2id(itname) ) )
@@ -1498,7 +1528,8 @@ void itemdb_read_chains(void) {
/**
* @return: amount of retrieved entries.
**/
-int itemdb_combo_split_atoi (char *str, int *val) {
+static int itemdb_combo_split_atoi(char *str, int *val)
+{
int i;
nullpo_ret(val);
@@ -1520,7 +1551,7 @@ int itemdb_combo_split_atoi (char *str, int *val) {
/**
* <combo{:combo{:combo:{..}}}>,<{ script }>
**/
-void itemdb_read_combos(void)
+static void itemdb_read_combos(void)
{
uint32 lines = 0, count = 0;
char line[1024];
@@ -1631,7 +1662,7 @@ void itemdb_read_combos(void)
/*======================================
* Applies gender restrictions according to settings. [Skotlex]
*======================================*/
-int itemdb_gendercheck(struct item_data *id)
+static int itemdb_gendercheck(struct item_data *id)
{
nullpo_ret(id);
if (id->nameid == WEDDING_RING_M) //Grom Ring
@@ -1663,14 +1694,15 @@ int itemdb_gendercheck(struct item_data *id)
* (i.e. item_db2 inheritance), as it will make sure not to free any scripts
* still in use by the new entry.
*/
-int itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
+static int itemdb_validate_entry(struct item_data *entry, int n, const char *source)
+{
struct item_data *item;
nullpo_ret(entry);
nullpo_ret(source);
- if( entry->nameid <= 0 || entry->nameid >= MAX_ITEMDB ) {
- ShowWarning("itemdb_validate_entry: Invalid item ID %d in entry %d of '%s', allowed values 0 < ID < %d (MAX_ITEMDB), skipping.\n",
- entry->nameid, n, source, MAX_ITEMDB);
+ if (entry->nameid <= 0 || entry->nameid > MAX_ITEM_ID) {
+ 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) {
script->free_code(entry->script);
entry->script = NULL;
@@ -1838,7 +1870,7 @@ int itemdb_validate_entry(struct item_data *entry, int n, const char *source) {
return item->nameid;
}
-void itemdb_readdb_additional_fields(int itemid, struct config_setting_t *it, int n, const char *source)
+static void itemdb_readdb_additional_fields(int itemid, struct config_setting_t *it, int n, const char *source)
{
// do nothing. plugins can do own work
}
@@ -1850,7 +1882,7 @@ void itemdb_readdb_additional_fields(int itemid, struct config_setting_t *it, in
* @param t Libconfig setting entry. It is expected to be valid and it won't
* be freed (it is care of the caller to do so if necessary).
*/
-void itemdb_readdb_job_sub(struct item_data *id, struct config_setting_t *t)
+static void itemdb_readdb_job_sub(struct item_data *id, struct config_setting_t *t)
{
int idx = 0;
struct config_setting_t *it = NULL;
@@ -1889,7 +1921,8 @@ void itemdb_readdb_job_sub(struct item_data *id, struct config_setting_t *t)
* validation errors.
* @return Nameid of the validated entry, or 0 in case of failure.
*/
-int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *source) {
+static int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *source)
+{
struct item_data id = { 0 };
struct config_setting_t *t = NULL;
const char *str = NULL;
@@ -1954,7 +1987,7 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
ShowWarning("itemdb_readdb_libconfig_sub: Invalid or missing id in \"%s\", entry #%d, skipping.\n", source, n);
return 0;
}
- id.nameid = (uint16)i32;
+ id.nameid = i32;
if( (t = libconfig->setting_get_member(it, "Inherit")) && (inherit = libconfig->setting_get_bool(t)) ) {
if( !itemdb->exists(id.nameid) ) {
@@ -2228,7 +2261,7 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
return itemdb->validate_entry(&id, n, source);
}
-bool itemdb_lookup_const(const struct config_setting_t *it, const char *name, int *value)
+static bool itemdb_lookup_const(const struct config_setting_t *it, const char *name, int *value)
{
const char *str = NULL;
@@ -2247,7 +2280,7 @@ bool itemdb_lookup_const(const struct config_setting_t *it, const char *name, in
return false;
}
-bool itemdb_lookup_const_mask(const struct config_setting_t *it, const char *name, int *value)
+static bool itemdb_lookup_const_mask(const struct config_setting_t *it, const char *name, int *value)
{
const struct config_setting_t *t = NULL;
@@ -2310,8 +2343,10 @@ bool itemdb_lookup_const_mask(const struct config_setting_t *it, const char *nam
* @param filename File name, relative to the database path.
* @return The number of found entries.
*/
-int itemdb_readdb_libconfig(const char *filename) {
+static int itemdb_readdb_libconfig(const char *filename)
+{
bool duplicate[MAX_ITEMDB];
+ struct DBMap *duplicate_db;
struct config_t item_db_conf;
struct config_setting_t *itdb, *it;
char filepath[256];
@@ -2328,34 +2363,47 @@ int itemdb_readdb_libconfig(const char *filename) {
return 0;
}
+ // TODO add duplicates check for itemdb->other
memset(&duplicate,0,sizeof(duplicate));
+ duplicate_db = idb_alloc(DB_OPT_BASE);
while( (it = libconfig->setting_get_elem(itdb,i++)) ) {
int nameid = itemdb->readdb_libconfig_sub(it, i-1, filename);
- if (nameid <= 0 || nameid >= MAX_ITEMDB)
+ if (nameid <= 0 || nameid > MAX_ITEM_ID)
continue;
itemdb->readdb_additional_fields(nameid, it, i - 1, filename);
count++;
- if( duplicate[nameid] ) {
- ShowWarning("itemdb_readdb:%s: duplicate entry of ID #%d (%s/%s)\n",
- filename, nameid, itemdb_name(nameid), itemdb_jname(nameid));
- } else
- duplicate[nameid] = true;
+ if (nameid < MAX_ITEMDB) {
+ if (duplicate[nameid]) {
+ ShowWarning("itemdb_readdb:%s: duplicate entry of ID #%d (%s/%s)\n",
+ filename, nameid, itemdb_name(nameid), itemdb_jname(nameid));
+ } else {
+ duplicate[nameid] = true;
+ }
+ } else {
+ if (idb_exists(duplicate_db, nameid)) {
+ ShowWarning("itemdb_readdb:%s: duplicate entry of ID #%d (%s/%s)\n",
+ filename, nameid, itemdb_name(nameid), itemdb_jname(nameid));
+ } else {
+ idb_iput(duplicate_db, nameid, true);
+ }
+ }
}
+ db_destroy(duplicate_db);
libconfig->destroy(&item_db_conf);
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filename);
-
return count;
}
/*==========================================
-* Unique item ID function
-* Only one operation by once
-*------------------------------------------*/
-uint64 itemdb_unique_id(struct map_session_data *sd) {
+ * Unique item ID function
+ * Only one operation by once
+ *------------------------------------------*/
+static uint64 itemdb_unique_id(struct map_session_data *sd)
+{
nullpo_ret(sd);
return ((uint64)sd->status.char_id << 32) | sd->status.uniqueitem_counter++;
@@ -2364,7 +2412,8 @@ uint64 itemdb_unique_id(struct map_session_data *sd) {
/**
* Reads all item-related databases.
*/
-void itemdb_read(bool minimal) {
+static void itemdb_read(bool minimal)
+{
int i;
struct DBData prev;
@@ -2375,6 +2424,7 @@ void itemdb_read(bool minimal) {
for (i = 0; i < ARRAYLENGTH(filename); i++)
itemdb->readdb_libconfig(filename[i]);
+ // TODO check duplicate names also in itemdb->other
for( i = 0; i < ARRAYLENGTH(itemdb->array); ++i ) {
if( itemdb->array[i] ) {
if( itemdb->names->put(itemdb->names,DB->str2key(itemdb->array[i]->name),DB->ptr2data(itemdb->array[i]),&prev) ) {
@@ -2400,7 +2450,8 @@ void itemdb_read(bool minimal) {
/**
* retrieves item_combo data by combo id
**/
-struct item_combo * itemdb_id2combo( unsigned short id ) {
+static struct item_combo *itemdb_id2combo(int id)
+{
if( id > itemdb->combo_count )
return NULL;
return itemdb->combos[id];
@@ -2409,7 +2460,7 @@ struct item_combo * itemdb_id2combo( unsigned short id ) {
/**
* check is item have usable type
**/
-bool itemdb_is_item_usable(struct item_data *item)
+static bool itemdb_is_item_usable(struct item_data *item)
{
nullpo_retr(false, item);
return item->type == IT_HEALING || item->type == IT_USABLE || item->type == IT_CASH;
@@ -2420,7 +2471,7 @@ bool itemdb_is_item_usable(struct item_data *item)
*------------------------------------------*/
/// Destroys the item_data.
-void destroy_item_data(struct item_data* self, int free_self)
+static void destroy_item_data(struct item_data *self, int free_self)
{
if( self == NULL )
return;
@@ -2446,7 +2497,7 @@ void destroy_item_data(struct item_data* self, int free_self)
/**
* @see DBApply
*/
-int itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap)
+static int itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct item_data *id = DB->data2ptr(data);
@@ -2456,7 +2507,7 @@ int itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-int itemdb_options_final_sub(union DBKey key, struct DBData *data, va_list ap)
+static int itemdb_options_final_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct itemdb_option *ito = DB->data2ptr(data);
@@ -2466,7 +2517,8 @@ int itemdb_options_final_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void itemdb_clear(bool total) {
+static void itemdb_clear(bool total)
+{
int i;
// clear the previous itemdb data
for( i = 0; i < ARRAYLENGTH(itemdb->array); ++i ) {
@@ -2536,7 +2588,8 @@ void itemdb_clear(bool total) {
db_clear(itemdb->names);
}
-void itemdb_reload(void) {
+static void itemdb_reload(void)
+{
struct s_mapiterator* iter;
struct map_session_data* sd;
@@ -2598,7 +2651,7 @@ void itemdb_reload(void) {
}
mapit->free(iter);
}
-void itemdb_name_constants(void)
+static void itemdb_name_constants(void)
{
struct DBIterator *iter = db_iterator(itemdb->names);
struct item_data *data;
@@ -2614,7 +2667,8 @@ void itemdb_name_constants(void)
dbi_destroy(iter);
}
-void do_final_itemdb(void) {
+static void do_final_itemdb(void)
+{
itemdb->clear(true);
itemdb->other->destroy(itemdb->other, itemdb->final_sub);
@@ -2625,7 +2679,8 @@ void do_final_itemdb(void) {
clif->stylist_vector_clear();
}
-void do_init_itemdb(bool minimal) {
+static void do_init_itemdb(bool minimal)
+{
memset(itemdb->array, 0, sizeof(itemdb->array));
itemdb->other = idb_alloc(DB_OPT_BASE);
itemdb->options = idb_alloc(DB_OPT_RELEASE_DATA);
@@ -2645,7 +2700,8 @@ void do_init_itemdb(bool minimal) {
VECTOR_INIT(clif->attendance_data);
clif->pAttendanceDB();
}
-void itemdb_defaults(void) {
+void itemdb_defaults(void)
+{
itemdb = &itemdb_s;
itemdb->init = do_init_itemdb;
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index efe3d0a3a..d92940445 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -33,10 +33,29 @@ struct hplugin_data_store;
/**
* Defines
**/
-#define MAX_ITEMDB 0x8000 // 32k array entries in array (the rest goes to the db)
+#ifndef MAX_ITEMDB
+#define MAX_ITEMDB 0xFFFF
+#endif
+
+#ifndef MAX_ITEM_ID
+#if PACKETVER_RE_NUM >= 20180704
+#define MAX_ITEM_ID 0x20000
+#else
+#define MAX_ITEM_ID 0xFFFF
+#endif
+#endif
+
+#ifndef MAX_ITEMDELAYS
#define MAX_ITEMDELAYS 10 // The maximum number of item delays
+#endif
+
+#ifndef MAX_SEARCH
#define MAX_SEARCH 5 //Designed for search functions, species max number of matches to display.
+#endif
+
+#ifndef MAX_ITEMS_PER_COMBO
#define MAX_ITEMS_PER_COMBO 6 /* maximum amount of items a combo may require */
+#endif
#define CARD0_FORGE 0x00FF
#define CARD0_CREATE 0x00FE
@@ -45,8 +64,17 @@ struct hplugin_data_store;
//Marks if the card0 given is "special" (non-item id used to mark pets/created items. [Skotlex]
#define itemdb_isspecial(i) ((i) == CARD0_FORGE || (i) == CARD0_CREATE || (i) == CARD0_PET)
+#ifndef UNKNOWN_ITEM_ID
//Use apple for unknown items.
#define UNKNOWN_ITEM_ID 512
+#endif
+
+#if MAX_ITEM_ID < MAX_ITEMDB
+#error "MAX_ITEM_ID must be bigger or same with MAX_ITEMDB"
+#endif
+#if MAX_ITEM_ID > 0xFFFF && PACKETVER_RE_NUM < 20180704
+#error "For clients before 20180704 RE, MAX_ITEM_ID must be smaller than 0x10000"
+#endif
enum item_itemid {
ITEMID_RED_POTION = 501,
@@ -393,19 +421,19 @@ VECTOR_STRUCT_DECL(itemlist, struct itemlist_entry);
struct item_combo {
struct script_code *script;
- unsigned short nameid[MAX_ITEMS_PER_COMBO];/* nameid array */
+ int nameid[MAX_ITEMS_PER_COMBO];/* nameid array */
unsigned char count;
- unsigned short id;/* id of this combo */
+ int id; /* id of this combo */
};
struct item_group {
- unsigned short id;
- unsigned short *nameid;
+ int id;
+ int *nameid;
unsigned short qty;
};
struct item_chain_entry {
- unsigned short id;
+ int id;
unsigned short rate;
struct item_chain_entry *next;
};
@@ -416,7 +444,7 @@ struct item_chain {
};
struct item_package_rand_entry {
- unsigned short id;
+ int id;
unsigned short qty;
unsigned short rate;
unsigned short hours;
@@ -427,7 +455,7 @@ struct item_package_rand_entry {
};
struct item_package_must_entry {
- unsigned short id;
+ int id;
unsigned short qty;
unsigned short hours;
unsigned int announce : 1;
@@ -441,7 +469,7 @@ struct item_package_rand_group {
};
struct item_package {
- unsigned short id;
+ int id;
struct item_package_rand_group *random_groups;
struct item_package_must_entry *must_items;
unsigned short random_qty;
@@ -454,7 +482,7 @@ struct itemdb_option {
};
struct item_data {
- uint16 nameid;
+ int nameid;
char name[ITEM_NAME_LENGTH],jname[ITEM_NAME_LENGTH];
int value_buy;
@@ -651,7 +679,7 @@ struct itemdb_interface {
int (*final_sub) (union DBKey key, struct DBData *data, va_list ap);
int (*options_final_sub) (union DBKey key, struct DBData *data, va_list ap);
void (*clear) (bool total);
- struct item_combo * (*id2combo) (unsigned short id);
+ struct item_combo * (*id2combo) (int id);
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);
diff --git a/src/map/log.c b/src/map/log.c
index b42837382..efb7fefbc 100644
--- a/src/map/log.c
+++ b/src/map/log.c
@@ -39,11 +39,12 @@
#include <stdlib.h>
#include <string.h>
-struct log_interface log_s;
+static struct log_interface log_s;
struct log_interface *logs;
/// obtain log type character for item/zeny logs
-char log_picktype2char(e_log_pick_type type) {
+static char log_picktype2char(e_log_pick_type type)
+{
switch( type ) {
case LOG_TYPE_TRADE: return 'T'; // (T)rade
case LOG_TYPE_VENDING: return 'V'; // (V)ending
@@ -82,7 +83,7 @@ char log_picktype2char(e_log_pick_type type) {
}
/// obtain log type character for chat logs
-char log_chattype2char(e_log_chat_type type)
+static char log_chattype2char(e_log_chat_type type)
{
switch (type) {
case LOG_CHAT_GLOBAL:
@@ -105,7 +106,8 @@ char log_chattype2char(e_log_chat_type type)
}
/// check if this item should be logged according the settings
-bool should_log_item(int nameid, int amount, int refine, struct item_data *id) {
+static bool should_log_item(int nameid, int amount, int refine, struct item_data *id)
+{
int filter = logs->config.filter;
if( id == NULL )
@@ -128,7 +130,7 @@ bool should_log_item(int nameid, int amount, int refine, struct item_data *id) {
return false;
}
-void log_branch_sub_sql(struct map_session_data* sd)
+static void log_branch_sub_sql(struct map_session_data *sd)
{
struct SqlStmt *stmt;
@@ -144,7 +146,8 @@ void log_branch_sub_sql(struct map_session_data* sd)
}
SQL->StmtFree(stmt);
}
-void log_branch_sub_txt(struct map_session_data* sd) {
+static void log_branch_sub_txt(struct map_session_data *sd)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -159,7 +162,8 @@ void log_branch_sub_txt(struct map_session_data* sd) {
}
/// logs items, that summon monsters
-void log_branch(struct map_session_data* sd) {
+static void log_branch(struct map_session_data *sd)
+{
nullpo_retv(sd);
if( !logs->config.branch )
@@ -167,7 +171,8 @@ void log_branch(struct map_session_data* sd) {
logs->branch_sub(sd);
}
-void log_pick_sub_sql(int id, int16 m, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick_sub_sql(int id, int16 m, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
nullpo_retv(itm);
if (SQL_ERROR == SQL->Query(logs->mysql_handle,
LOG_QUERY " INTO `%s` (`time`, `char_id`, `type`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, "
@@ -182,7 +187,8 @@ void log_pick_sub_sql(int id, int16 m, e_log_pick_type type, int amount, struct
return;
}
}
-void log_pick_sub_txt(int id, int16 m, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick_sub_txt(int id, int16 m, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -198,7 +204,8 @@ void log_pick_sub_txt(int id, int16 m, e_log_pick_type type, int amount, struct
fclose(logfp);
}
/// logs item transactions (generic)
-void log_pick(int id, int16 m, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick(int id, int16 m, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
nullpo_retv(itm);
if( ( logs->config.enable_logs&type ) == 0 ) {// disabled
return;
@@ -211,19 +218,22 @@ void log_pick(int id, int16 m, e_log_pick_type type, int amount, struct item* it
}
/// logs item transactions (players)
-void log_pick_pc(struct map_session_data* sd, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick_pc(struct map_session_data *sd, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
nullpo_retv(sd);
nullpo_retv(itm);
log_pick(sd->status.char_id, sd->bl.m, type, amount, itm, data ? data : itemdb->exists(itm->nameid));
}
/// logs item transactions (monsters)
-void log_pick_mob(struct mob_data* md, e_log_pick_type type, int amount, struct item* itm, struct item_data *data) {
+static void log_pick_mob(struct mob_data *md, e_log_pick_type type, int amount, struct item *itm, struct item_data *data)
+{
nullpo_retv(md);
nullpo_retv(itm);
log_pick(md->class_, md->bl.m, type, amount, itm, data ? data : itemdb->exists(itm->nameid));
}
-void log_zeny_sub_sql(struct map_session_data* sd, e_log_pick_type type, struct map_session_data* src_sd, int amount) {
+static void log_zeny_sub_sql(struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount)
+{
nullpo_retv(sd);
nullpo_retv(src_sd);
if( SQL_ERROR == SQL->Query(logs->mysql_handle, LOG_QUERY " INTO `%s` (`time`, `char_id`, `src_id`, `type`, `amount`, `map`) VALUES (NOW(), '%d', '%d', '%c', '%d', '%s')",
@@ -233,7 +243,8 @@ void log_zeny_sub_sql(struct map_session_data* sd, e_log_pick_type type, struct
return;
}
}
-void log_zeny_sub_txt(struct map_session_data* sd, e_log_pick_type type, struct map_session_data* src_sd, int amount) {
+static void log_zeny_sub_txt(struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -248,7 +259,7 @@ void log_zeny_sub_txt(struct map_session_data* sd, e_log_pick_type type, struct
fclose(logfp);
}
/// logs zeny transactions
-void log_zeny(struct map_session_data* sd, e_log_pick_type type, struct map_session_data* src_sd, int amount)
+static void log_zeny(struct map_session_data *sd, e_log_pick_type type, struct map_session_data *src_sd, int amount)
{
nullpo_retv(sd);
@@ -257,7 +268,8 @@ void log_zeny(struct map_session_data* sd, e_log_pick_type type, struct map_sess
logs->zeny_sub(sd,type,src_sd,amount);
}
-void log_mvpdrop_sub_sql(struct map_session_data* sd, int monster_id, int* log_mvp) {
+static void log_mvpdrop_sub_sql(struct map_session_data *sd, int monster_id, int *log_mvp)
+{
nullpo_retv(sd);
nullpo_retv(log_mvp);
if( SQL_ERROR == SQL->Query(logs->mysql_handle, LOG_QUERY " INTO `%s` (`mvp_date`, `kill_char_id`, `monster_id`, `prize`, `mvpexp`, `map`) VALUES (NOW(), '%d', '%d', '%d', '%d', '%s') ",
@@ -267,7 +279,8 @@ void log_mvpdrop_sub_sql(struct map_session_data* sd, int monster_id, int* log_m
return;
}
}
-void log_mvpdrop_sub_txt(struct map_session_data* sd, int monster_id, int* log_mvp) {
+static void log_mvpdrop_sub_txt(struct map_session_data *sd, int monster_id, int *log_mvp)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -282,7 +295,7 @@ void log_mvpdrop_sub_txt(struct map_session_data* sd, int monster_id, int* log_m
fclose(logfp);
}
/// logs MVP monster rewards
-void log_mvpdrop(struct map_session_data* sd, int monster_id, int* log_mvp)
+static void log_mvpdrop(struct map_session_data *sd, int monster_id, int *log_mvp)
{
nullpo_retv(sd);
@@ -292,7 +305,7 @@ void log_mvpdrop(struct map_session_data* sd, int monster_id, int* log_mvp)
logs->mvpdrop_sub(sd,monster_id,log_mvp);
}
-void log_atcommand_sub_sql(struct map_session_data* sd, const char* message)
+static void log_atcommand_sub_sql(struct map_session_data *sd, const char *message)
{
struct SqlStmt *stmt;
@@ -310,7 +323,8 @@ void log_atcommand_sub_sql(struct map_session_data* sd, const char* message)
}
SQL->StmtFree(stmt);
}
-void log_atcommand_sub_txt(struct map_session_data* sd, const char* message) {
+static void log_atcommand_sub_txt(struct map_session_data *sd, const char *message)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -325,7 +339,7 @@ void log_atcommand_sub_txt(struct map_session_data* sd, const char* message) {
fclose(logfp);
}
/// logs used atcommands
-void log_atcommand(struct map_session_data* sd, const char* message)
+static void log_atcommand(struct map_session_data *sd, const char *message)
{
nullpo_retv(sd);
@@ -336,7 +350,7 @@ void log_atcommand(struct map_session_data* sd, const char* message)
logs->atcommand_sub(sd,message);
}
-void log_npc_sub_sql(struct map_session_data *sd, const char *message)
+static void log_npc_sub_sql(struct map_session_data *sd, const char *message)
{
struct SqlStmt *stmt;
@@ -354,7 +368,8 @@ void log_npc_sub_sql(struct map_session_data *sd, const char *message)
}
SQL->StmtFree(stmt);
}
-void log_npc_sub_txt(struct map_session_data *sd, const char *message) {
+static void log_npc_sub_txt(struct map_session_data *sd, const char *message)
+{
char timestring[255];
time_t curtime;
FILE* logfp;
@@ -369,7 +384,7 @@ void log_npc_sub_txt(struct map_session_data *sd, const char *message) {
fclose(logfp);
}
/// logs messages passed to script command 'logmes'
-void log_npc(struct map_session_data* sd, const char* message)
+static void log_npc(struct map_session_data *sd, const char *message)
{
nullpo_retv(sd);
@@ -392,7 +407,7 @@ void log_npc(struct map_session_data* sd, const char* message)
* @param dst_charname Destination character name. Must not be NULL.
* @param message Message to log.
*/
-void log_chat_sub_sql(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
+static void log_chat_sub_sql(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
{
struct SqlStmt* stmt;
@@ -424,7 +439,7 @@ void log_chat_sub_sql(e_log_chat_type type, int type_id, int src_charid, int src
* @param dst_charname Destination character name. Must not be NULL.
* @param message Message to log.
*/
-void log_chat_sub_txt(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
+static void log_chat_sub_txt(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
{
char timestring[255];
time_t curtime;
@@ -454,7 +469,7 @@ void log_chat_sub_txt(e_log_chat_type type, int type_id, int src_charid, int src
* @param dst_charname Destination character name. May be NULL when unused.
* @param message Message to log.
*/
-void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
+static void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message)
{
if ((logs->config.chat&type) == 0) {
// disabled
@@ -472,7 +487,8 @@ void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid,
logs->chat_sub(type,type_id,src_charid,src_accid,mapname,x,y,dst_charname,message);
}
-void log_sql_init(void) {
+static void log_sql_init(void)
+{
// log db connection
logs->mysql_handle = SQL->Malloc();
@@ -485,7 +501,8 @@ void log_sql_init(void) {
if ( SQL_ERROR == SQL->SetEncoding(logs->mysql_handle, map->default_codepage) )
Sql_ShowDebug(logs->mysql_handle);
}
-void log_sql_final(void) {
+static void log_sql_final(void)
+{
ShowStatus("Close Log DB Connection....\n");
SQL->Free(logs->mysql_handle);
logs->mysql_handle = NULL;
@@ -738,7 +755,8 @@ bool log_config_read(const char *filename, bool imported)
return retval;
}
-void log_config_complete(void) {
+void log_config_complete(void)
+{
if( logs->config.sql_logs ) {
logs->pick_sub = log_pick_sub_sql;
logs->zeny_sub = log_zeny_sub_sql;
@@ -753,7 +771,8 @@ void log_config_complete(void) {
/**
* Initializes the log interface to the default values.
*/
-void log_defaults(void) {
+void log_defaults(void)
+{
logs = &log_s;
sprintf(logs->db_ip,"127.0.0.1");
diff --git a/src/map/mail.c b/src/map/mail.c
index 1eb69bc90..d67e658fd 100644
--- a/src/map/mail.c
+++ b/src/map/mail.c
@@ -34,10 +34,10 @@
#include <time.h>
#include <string.h>
-struct mail_interface mail_s;
+static struct mail_interface mail_s;
struct mail_interface *mail;
-void mail_clear(struct map_session_data *sd)
+static void mail_clear(struct map_session_data *sd)
{
nullpo_retv(sd);
sd->mail.nameid = 0;
@@ -48,7 +48,7 @@ void mail_clear(struct map_session_data *sd)
return;
}
-int mail_removeitem(struct map_session_data *sd, short flag)
+static int mail_removeitem(struct map_session_data *sd, short flag)
{
nullpo_ret(sd);
@@ -66,7 +66,7 @@ int mail_removeitem(struct map_session_data *sd, short flag)
return 1;
}
-int mail_removezeny(struct map_session_data *sd, short flag)
+static int mail_removezeny(struct map_session_data *sd, short flag)
{
nullpo_ret(sd);
@@ -79,7 +79,8 @@ int mail_removezeny(struct map_session_data *sd, short flag)
return 1;
}
-unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount) {
+static unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount)
+{
nullpo_retr(1, sd);
if( pc_istrading(sd) )
@@ -116,7 +117,7 @@ unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount) {
}
}
-bool mail_setattachment(struct map_session_data *sd, struct mail_message *msg)
+static bool mail_setattachment(struct map_session_data *sd, struct mail_message *msg)
{
int n;
@@ -156,7 +157,7 @@ bool mail_setattachment(struct map_session_data *sd, struct mail_message *msg)
return true;
}
-void mail_getattachment(struct map_session_data* sd, int zeny, struct item* item)
+static void mail_getattachment(struct map_session_data *sd, int zeny, struct item *item)
{
nullpo_retv(sd);
nullpo_retv(item);
@@ -172,7 +173,7 @@ void mail_getattachment(struct map_session_data* sd, int zeny, struct item* item
}
}
-int mail_openmail(struct map_session_data *sd)
+static int mail_openmail(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -184,7 +185,7 @@ int mail_openmail(struct map_session_data *sd)
return 1;
}
-void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg)
+static void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg)
{
nullpo_retv(sd);
nullpo_retv(msg);
@@ -204,7 +205,8 @@ void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg)
}
// This function only check if the mail operations are valid
-bool mail_invalid_operation(struct map_session_data *sd) {
+static bool mail_invalid_operation(struct map_session_data *sd)
+{
nullpo_retr(false, sd);
if( !map->list[sd->bl.m].flag.town && !pc->can_use_command(sd, "@mail") ) {
ShowWarning("clif->parse_Mail: char '%s' trying to do invalid mail operations.\n", sd->status.name);
diff --git a/src/map/map.c b/src/map/map.c
index 09f8116fd..8ea059700 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -87,8 +87,8 @@
#include <unistd.h>
#endif
-struct map_interface map_s;
-struct mapit_interface mapit_s;
+static struct map_interface map_s;
+static struct mapit_interface mapit_s;
struct map_interface *map;
struct mapit_interface *mapit;
@@ -96,18 +96,21 @@ struct mapit_interface *mapit;
/*==========================================
* server player count (of all mapservers)
*------------------------------------------*/
-void map_setusers(int users) {
+static void map_setusers(int users)
+{
map->users = users;
}
-int map_getusers(void) {
+static int map_getusers(void)
+{
return map->users;
}
/**
* Expands map->bl_list on demand
**/
-static inline void map_bl_list_expand(void) {
+static inline void map_bl_list_expand(void)
+{
map->bl_list_size += 250;
RECREATE(map->bl_list, struct block_list *, map->bl_list_size);
}
@@ -115,7 +118,8 @@ static inline void map_bl_list_expand(void) {
/**
* Expands map->block_free on demand
**/
-static inline void map_block_free_expand(void) {
+static inline void map_block_free_expand(void)
+{
map->block_free_list_size += 100;
RECREATE(map->block_free, struct block_list *, map->block_free_list_size);
}
@@ -123,14 +127,16 @@ static inline void map_block_free_expand(void) {
/*==========================================
* server player count (this mapserver only)
*------------------------------------------*/
-int map_usercount(void) {
+static int map_usercount(void)
+{
return db_size(map->pc_db);
}
/*==========================================
* Attempt to free a map blocklist
*------------------------------------------*/
-int map_freeblock (struct block_list *bl) {
+static int map_freeblock(struct block_list *bl)
+{
nullpo_retr(map->block_free_lock, bl);
if (map->block_free_lock == 0) {
@@ -151,14 +157,16 @@ int map_freeblock (struct block_list *bl) {
/*==========================================
* Lock blocklist, (prevent map->freeblock usage)
*------------------------------------------*/
-int map_freeblock_lock (void) {
+static int map_freeblock_lock(void)
+{
return ++map->block_free_lock;
}
/*==========================================
* Remove the lock on map_bl
*------------------------------------------*/
-int map_freeblock_unlock (void) {
+static int map_freeblock_unlock(void)
+{
if ((--map->block_free_lock) == 0) {
int i;
for (i = 0; i < map->block_free_count; i++) {
@@ -179,7 +187,8 @@ int map_freeblock_unlock (void) {
// Timer function to check if there some remaining lock and remove them if so.
// Called each 1s
-int map_freeblock_timer(int tid, int64 tick, int id, intptr_t data) {
+static int map_freeblock_timer(int tid, int64 tick, int id, intptr_t data)
+{
if (map->block_free_lock > 0) {
ShowError("map_freeblock_timer: block_free_lock(%d) is invalid.\n", map->block_free_lock);
map->block_free_lock = 1;
@@ -193,7 +202,8 @@ int map_freeblock_timer(int tid, int64 tick, int id, intptr_t data) {
* Updates the counter (cell.cell_bl) of how many objects are on a tile.
* @param add Whether the counter should be increased or decreased
**/
-void map_update_cell_bl( struct block_list *bl, bool increase ) {
+static void map_update_cell_bl(struct block_list *bl, bool increase)
+{
#ifdef CELL_NOSTACK
int pos;
@@ -222,7 +232,7 @@ void map_update_cell_bl( struct block_list *bl, bool increase ) {
* Adds a block to the map.
* Returns 0 on success, 1 on failure (illegal coordinates).
*------------------------------------------*/
-int map_addblock(struct block_list* bl)
+static int map_addblock(struct block_list *bl)
{
int16 m, x, y;
int pos;
@@ -270,7 +280,7 @@ int map_addblock(struct block_list* bl)
/*==========================================
* Removes a block from the map.
*------------------------------------------*/
-int map_delblock(struct block_list* bl)
+static int map_delblock(struct block_list *bl)
{
int pos;
nullpo_ret(bl);
@@ -313,7 +323,8 @@ int map_delblock(struct block_list* bl)
* Pass flag as 1 to prevent doing skill->unit_move checks
* (which are executed by default on BL_CHAR types)
*------------------------------------------*/
-int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) {
+static int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick)
+{
struct status_change *sc = NULL;
int x0, y0;
int moveblock;
@@ -431,7 +442,8 @@ int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) {
* 0x2 - don't count invinsible units
* TODO: merge with bl_getall_area
*------------------------------------------*/
-int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
+static int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag)
+{
int bx,by;
struct block_list *bl;
int count = 0;
@@ -489,7 +501,8 @@ int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
* Looks for a skill unit on a given cell
* flag&1: runs battle_check_target check based on unit->group->target_flag
*/
-struct skill_unit* map_find_skill_unit_oncell(struct block_list* target,int16 x,int16 y,uint16 skill_id,struct skill_unit* out_unit, int flag) {
+static struct skill_unit *map_find_skill_unit_oncell(struct block_list *target, int16 x, int16 y, uint16 skill_id, struct skill_unit *out_unit, int flag)
+{
int16 m,bx,by;
struct block_list *bl;
struct skill_unit *su;
@@ -530,7 +543,8 @@ struct skill_unit* map_find_skill_unit_oncell(struct block_list* target,int16 x,
* @param args Extra arguments for func
* @return Sum of the values returned by func
*/
-static int bl_vforeach(int (*func)(struct block_list*, va_list), int blockcount, int max, va_list args) {
+static int bl_vforeach(int (*func)(struct block_list*, va_list), int blockcount, int max, va_list args)
+{
int i;
int returnCount = 0;
@@ -559,7 +573,8 @@ static int bl_vforeach(int (*func)(struct block_list*, va_list), int blockcount,
* @param args Extra arguments for func
* @return Sum of the values returned by func
*/
-static int map_vforeachinmap(int (*func)(struct block_list*, va_list), int16 m, int type, va_list args) {
+static int map_vforeachinmap(int (*func)(struct block_list*, va_list), int16 m, int type, va_list args)
+{
int i;
int returnCount = 0;
int bsize;
@@ -607,7 +622,8 @@ static int map_vforeachinmap(int (*func)(struct block_list*, va_list), int16 m,
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinmap(int (*func)(struct block_list*, va_list), int16 m, int type, ...) {
+static int map_foreachinmap(int (*func)(struct block_list*, va_list), int16 m, int type, ...)
+{
int returnCount;
va_list ap;
@@ -629,7 +645,8 @@ int map_foreachinmap(int (*func)(struct block_list*, va_list), int16 m, int type
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachininstance(int (*func)(struct block_list*, va_list), int16 instance_id, int type, va_list ap) {
+static int map_vforeachininstance(int (*func)(struct block_list*, va_list), int16 instance_id, int type, va_list ap)
+{
int i;
int returnCount = 0;
@@ -655,7 +672,8 @@ int map_vforeachininstance(int (*func)(struct block_list*, va_list), int16 insta
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachininstance(int (*func)(struct block_list*, va_list), int16 instance_id, int type, ...) {
+static int map_foreachininstance(int (*func)(struct block_list*, va_list), int16 instance_id, int type, ...)
+{
int returnCount;
va_list ap;
@@ -675,7 +693,8 @@ int map_foreachininstance(int (*func)(struct block_list*, va_list), int16 instan
* @param ... Extra arguments for func
* @return Number of found objects
*/
-static int bl_getall_area(int type, int m, int x0, int y0, int x1, int y1, int (*func)(struct block_list*, va_list), ...) {
+static int bl_getall_area(int type, int m, int x0, int y0, int x1, int y1, int (*func)(struct block_list*, va_list), ...)
+{
va_list args;
int bx, by;
struct block_list *bl;
@@ -813,7 +832,8 @@ static int bl_vgetall_inrange(struct block_list *bl, va_list args)
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int type, va_list ap) {
+static int map_vforeachinrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -841,7 +861,8 @@ int map_vforeachinrange(int (*func)(struct block_list*, va_list), struct block_l
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int type, ...) {
+static int map_foreachinrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int type, ...)
+{
int returnCount;
va_list ap;
@@ -865,7 +886,8 @@ int map_foreachinrange(int (*func)(struct block_list*, va_list), struct block_li
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforcountinrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int count, int type, va_list ap) {
+static int map_vforcountinrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int count, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -895,7 +917,8 @@ int map_vforcountinrange(int (*func)(struct block_list*, va_list), struct block_
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_forcountinrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int count, int type, ...) {
+static int map_forcountinrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int count, int type, ...)
+{
int returnCount;
va_list ap;
@@ -941,7 +964,8 @@ static int bl_vgetall_inshootrange(struct block_list *bl, va_list args)
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinshootrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int type, va_list ap) {
+static int map_vforeachinshootrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -969,7 +993,8 @@ int map_vforeachinshootrange(int (*func)(struct block_list*, va_list), struct bl
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinshootrange(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int type, ...) {
+static int map_foreachinshootrange(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int type, ...)
+{
int returnCount;
va_list ap;
@@ -994,7 +1019,8 @@ int map_foreachinshootrange(int (*func)(struct block_list*, va_list), struct blo
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, va_list ap) {
+static int map_vforeachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -1023,7 +1049,8 @@ int map_vforeachinarea(int (*func)(struct block_list*, va_list), int16 m, int16
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, ...) {
+static int map_foreachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1050,7 +1077,8 @@ int map_foreachinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, va_list ap) {
+static int map_vforcountinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -1081,7 +1109,8 @@ int map_vforcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_forcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, ...) {
+static int map_forcountinarea(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1138,7 +1167,8 @@ static int bl_vgetall_inmovearea(struct block_list *bl, va_list args)
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinmovearea(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int16 dx, int16 dy, int type, va_list ap) {
+static int map_vforeachinmovearea(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int16 dx, int16 dy, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
int m, x0, x1, y0, y1;
@@ -1196,7 +1226,8 @@ int map_vforeachinmovearea(int (*func)(struct block_list*, va_list), struct bloc
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinmovearea(int (*func)(struct block_list*, va_list), struct block_list* center, int16 range, int16 dx, int16 dy, int type, ...) {
+static int map_foreachinmovearea(int (*func)(struct block_list*, va_list), struct block_list *center, int16 range, int16 dx, int16 dy, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1219,7 +1250,8 @@ int map_foreachinmovearea(int (*func)(struct block_list*, va_list), struct block
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachincell(int (*func)(struct block_list*, va_list), int16 m, int16 x, int16 y, int type, va_list ap) {
+static int map_vforeachincell(int (*func)(struct block_list*, va_list), int16 m, int16 x, int16 y, int type, va_list ap)
+{
int returnCount = 0;
int blockcount = map->bl_list_count;
va_list apcopy;
@@ -1245,7 +1277,8 @@ int map_vforeachincell(int (*func)(struct block_list*, va_list), int16 m, int16
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachincell(int (*func)(struct block_list*, va_list), int16 m, int16 x, int16 y, int type, ...) {
+static int map_foreachincell(int (*func)(struct block_list*, va_list), int16 m, int16 x, int16 y, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1324,7 +1357,8 @@ static int bl_vgetall_inpath(struct block_list *bl, va_list args)
* @param ap Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_vforeachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, va_list ap) {
+static int map_vforeachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, va_list ap)
+{
// [Skotlex]
// check for all targets in the square that
// contains the initial and final positions (area range increased to match the
@@ -1401,7 +1435,8 @@ int map_vforeachinpath(int (*func)(struct block_list*, va_list), int16 m, int16
* @param ... Extra arguments for func
* @return Sum of the values returned by func
*/
-int map_foreachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, ...) {
+static int map_foreachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, ...)
+{
int returnCount;
va_list ap;
@@ -1417,7 +1452,7 @@ int map_foreachinpath(int (*func)(struct block_list*, va_list), int16 m, int16 x
/// Generates a new flooritem object id from the interval [MIN_FLOORITEM, MAX_FLOORITEM).
/// Used for floor items, skill units and chatroom objects.
/// @return The new object id
-int map_get_new_object_id(void)
+static int map_get_new_object_id(void)
{
static int last_object_id = MIN_FLOORITEM - 1;
int i;
@@ -1449,7 +1484,7 @@ int map_get_new_object_id(void)
* Timered function to clear the floor (remove remaining item)
* Called each flooritem_lifetime ms
*------------------------------------------*/
-int map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data)
+static int map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl = idb_get(map->id_db, id);
struct flooritem_data *fitem = BL_CAST(BL_ITEM, bl);
@@ -1472,7 +1507,7 @@ int map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data)
/*
* clears a single bl item out of the bazooonga.
*/
-void map_clearflooritem(struct block_list *bl)
+static void map_clearflooritem(struct block_list *bl)
{
struct flooritem_data *fitem = BL_CAST(BL_ITEM, bl);
@@ -1492,7 +1527,8 @@ void map_clearflooritem(struct block_list *bl)
* to place an BL_ITEM object. Scan area is 9x9, returns 1 on success.
* x and y are modified with the target cell when successful.
*------------------------------------------*/
-int map_searchrandfreecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int stack) {
+static int map_searchrandfreecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int stack)
+{
int free_cell,i,j;
int free_cells[9][2];
@@ -1522,7 +1558,8 @@ int map_searchrandfreecell(int16 m, const struct block_list *bl, int16 *x, int16
return 1;
}
-int map_count_sub(struct block_list *bl,va_list ap) {
+static int map_count_sub(struct block_list *bl, va_list ap)
+{
return 1;
}
@@ -1538,7 +1575,7 @@ int map_count_sub(struct block_list *bl,va_list ap) {
* &2 = the target should be able to walk to the target tile.
* &4 = there shouldn't be any players around the target tile (use the no_spawn_on_player setting)
*------------------------------------------*/
-int map_search_freecell(struct block_list *src, int16 m, int16 *x,int16 *y, int16 rx, int16 ry, int flag)
+static int map_search_freecell(struct block_list *src, int16 m, int16 *x, int16 *y, int16 rx, int16 ry, int flag)
{
int tries, spawn=0;
int bx, by;
@@ -1612,7 +1649,7 @@ int map_search_freecell(struct block_list *src, int16 m, int16 *x,int16 *y, int1
* flag:
* 0x1 - only count standing units
*------------------------------------------*/
-bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int type, int flag)
+static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int type, int flag)
{
uint8 dir = 6;
int16 tx;
@@ -1698,7 +1735,7 @@ bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16
* @flag: &1 MVP item. &2 do stacking check.
* @showdropeffect: show effect when the item is dropped.
*------------------------------------------*/
-int map_addflooritem(const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags, bool showdropeffect)
+static int map_addflooritem(const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags, bool showdropeffect)
{
int r;
struct flooritem_data *fitem=NULL;
@@ -1746,7 +1783,7 @@ int map_addflooritem(const struct block_list *bl, struct item *item_data, int am
/**
* @see DBCreateData
*/
-struct DBData create_charid2nick(union DBKey key, va_list args)
+static struct DBData create_charid2nick(union DBKey key, va_list args)
{
struct charid2nick *p;
CREATE(p, struct charid2nick, 1);
@@ -1755,7 +1792,7 @@ struct DBData create_charid2nick(union DBKey key, va_list args)
/// Adds(or replaces) the nick of charid to nick_db and fullfils pending requests.
/// Does nothing if the character is online.
-void map_addnickdb(int charid, const char* nick)
+static void map_addnickdb(int charid, const char *nick)
{
struct charid2nick* p;
struct charid_request* req;
@@ -1779,7 +1816,7 @@ void map_addnickdb(int charid, const char* nick)
/// Removes the nick of charid from nick_db.
/// Sends name to all pending requests on charid.
-void map_delnickdb(int charid, const char* name)
+static void map_delnickdb(int charid, const char *name)
{
struct charid2nick* p;
struct charid_request* req;
@@ -1803,7 +1840,7 @@ void map_delnickdb(int charid, const char* name)
/// Notifies sd of the nick of charid.
/// Uses the name in the character if online.
/// Uses the name in nick_db if offline.
-void map_reqnickdb(struct map_session_data * sd, int charid)
+static void map_reqnickdb(struct map_session_data *sd, int charid)
{
struct charid2nick* p;
struct charid_request* req;
@@ -1832,7 +1869,7 @@ void map_reqnickdb(struct map_session_data * sd, int charid)
/*==========================================
* add bl to id_db
*------------------------------------------*/
-void map_addiddb(struct block_list *bl)
+static void map_addiddb(struct block_list *bl)
{
nullpo_retv(bl);
@@ -1857,7 +1894,7 @@ void map_addiddb(struct block_list *bl)
/*==========================================
* remove bl from id_db
*------------------------------------------*/
-void map_deliddb(struct block_list *bl)
+static void map_deliddb(struct block_list *bl)
{
nullpo_retv(bl);
@@ -1879,7 +1916,8 @@ void map_deliddb(struct block_list *bl)
/*==========================================
* Standard call when a player connection is closed.
*------------------------------------------*/
-int map_quit(struct map_session_data *sd) {
+static int map_quit(struct map_session_data *sd)
+{
int i;
nullpo_ret(sd);
@@ -2009,7 +2047,7 @@ int map_quit(struct map_session_data *sd) {
* @return The searched map_session_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a player unit.
*/
-struct map_session_data *map_id2sd(int id)
+static struct map_session_data *map_id2sd(int id)
{
struct block_list *bl = NULL;
if (id <= 0)
@@ -2029,7 +2067,7 @@ struct map_session_data *map_id2sd(int id)
* @return The searched npc_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a NPC.
*/
-struct npc_data *map_id2nd(int id)
+static struct npc_data *map_id2nd(int id)
{
// just a id2bl lookup because there's no npc_db
struct block_list* bl = map->id2bl(id);
@@ -2046,7 +2084,7 @@ struct npc_data *map_id2nd(int id)
* @return The searched mob_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a mob unit.
*/
-struct mob_data *map_id2md(int id)
+static struct mob_data *map_id2md(int id)
{
struct block_list *bl = NULL;
if (id <= 0)
@@ -2066,7 +2104,7 @@ struct mob_data *map_id2md(int id)
* @return The searched flooritem_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a floor item.
*/
-struct flooritem_data *map_id2fi(int id)
+static struct flooritem_data *map_id2fi(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2080,7 +2118,7 @@ struct flooritem_data *map_id2fi(int id)
* @return The searched chat_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a chat.
*/
-struct chat_data *map_id2cd(int id)
+static struct chat_data *map_id2cd(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2094,7 +2132,7 @@ struct chat_data *map_id2cd(int id)
* @return The searched skill_unit data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a skill unit.
*/
-struct skill_unit *map_id2su(int id)
+static struct skill_unit *map_id2su(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2108,7 +2146,7 @@ struct skill_unit *map_id2su(int id)
* @return The searched pet_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a pet.
*/
-struct pet_data *map_id2pd(int id)
+static struct pet_data *map_id2pd(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2122,7 +2160,7 @@ struct pet_data *map_id2pd(int id)
* @return The searched homun_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a homunculus.
*/
-struct homun_data *map_id2hd(int id)
+static struct homun_data *map_id2hd(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2136,7 +2174,7 @@ struct homun_data *map_id2hd(int id)
* @return The searched mercenary_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to a mercenary.
*/
-struct mercenary_data *map_id2mc(int id)
+static struct mercenary_data *map_id2mc(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2150,7 +2188,7 @@ struct mercenary_data *map_id2mc(int id)
* @return The searched elemental_data, if it exists.
* @retval NULL if the ID is invalid or doesn't belong to an elemental.
*/
-struct elemental_data *map_id2ed(int id)
+static struct elemental_data *map_id2ed(int id)
{
struct block_list* bl = map->id2bl(id);
@@ -2166,7 +2204,7 @@ struct elemental_data *map_id2ed(int id)
* @return The searched block_list, if it exists.
* @retval NULL if the ID is invalid.
*/
-struct block_list *map_id2bl(int id)
+static struct block_list *map_id2bl(int id)
{
return idb_get(map->id_db, id);
}
@@ -2178,13 +2216,14 @@ struct block_list *map_id2bl(int id)
* @retval true if the ID exists and is valid.
* @retval false otherwise.
*/
-bool map_blid_exists(int id)
+static bool map_blid_exists(int id)
{
return (idb_exists(map->id_db,id));
}
/// Returns the nick of the target charid or NULL if unknown (requests the nick to the char server).
-const char *map_charid2nick(int charid) {
+static const char *map_charid2nick(int charid)
+{
struct charid2nick *p;
struct map_session_data* sd;
@@ -2201,7 +2240,7 @@ const char *map_charid2nick(int charid) {
}
/// Returns the struct map_session_data of the charid or NULL if the char is not online.
-struct map_session_data* map_charid2sd(int charid)
+static struct map_session_data *map_charid2sd(int charid)
{
struct block_list *bl = idb_get(map->charid_db, charid);
if (bl)
@@ -2214,7 +2253,7 @@ struct map_session_data* map_charid2sd(int charid)
* (without sensitive case if necessary)
* return map_session_data pointer or NULL
*------------------------------------------*/
-struct map_session_data * map_nick2sd(const char *nick)
+static struct map_session_data *map_nick2sd(const char *nick)
{
struct map_session_data* sd;
struct map_session_data* found_sd;
@@ -2262,7 +2301,7 @@ struct map_session_data * map_nick2sd(const char *nick)
/*==========================================
* Convext Mirror
*------------------------------------------*/
-struct mob_data *map_getmob_boss(int16 m)
+static struct mob_data *map_getmob_boss(int16 m)
{
struct DBIterator *iter;
struct mob_data *md = NULL;
@@ -2280,7 +2319,7 @@ struct mob_data *map_getmob_boss(int16 m)
return (found)? md : NULL;
}
-struct mob_data *map_id2boss(int id)
+static struct mob_data *map_id2boss(int id)
{
struct block_list *bl = NULL;
if (id <= 0)
@@ -2298,7 +2337,7 @@ struct mob_data *map_id2boss(int id)
*
* @return The equivalent race bitmask.
*/
-uint32 map_race_id2mask(int race)
+static uint32 map_race_id2mask(int race)
{
if (race >= RC_FORMLESS && race < RC_MAX)
return 1 << race;
@@ -2326,7 +2365,7 @@ uint32 map_race_id2mask(int race)
/// Applies func to all the players in the db.
/// Stops iterating if func returns -1.
-void map_vforeachpc(int (*func)(struct map_session_data* sd, va_list args), va_list args)
+static void map_vforeachpc(int (*func)(struct map_session_data *sd, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->pc_db);
struct map_session_data *sd = NULL;
@@ -2348,7 +2387,8 @@ void map_vforeachpc(int (*func)(struct map_session_data* sd, va_list args), va_l
/// Applies func to all the players in the db.
/// Stops iterating if func returns -1.
/// @see map_vforeachpc
-void map_foreachpc(int (*func)(struct map_session_data* sd, va_list args), ...) {
+static void map_foreachpc(int (*func)(struct map_session_data *sd, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2358,7 +2398,7 @@ void map_foreachpc(int (*func)(struct map_session_data* sd, va_list args), ...)
/// Applies func to all the mobs in the db.
/// Stops iterating if func returns -1.
-void map_vforeachmob(int (*func)(struct mob_data* md, va_list args), va_list args)
+static void map_vforeachmob(int (*func)(struct mob_data *md, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->mobid_db);
struct mob_data *md = NULL;
@@ -2379,7 +2419,8 @@ void map_vforeachmob(int (*func)(struct mob_data* md, va_list args), va_list arg
/// Applies func to all the mobs in the db.
/// Stops iterating if func returns -1.
/// @see map_vforeachmob
-void map_foreachmob(int (*func)(struct mob_data* md, va_list args), ...) {
+static void map_foreachmob(int (*func)(struct mob_data *md, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2389,7 +2430,7 @@ void map_foreachmob(int (*func)(struct mob_data* md, va_list args), ...) {
/// Applies func to all the npcs in the db.
/// Stops iterating if func returns -1.
-void map_vforeachnpc(int (*func)(struct npc_data* nd, va_list args), va_list args)
+static void map_vforeachnpc(int (*func)(struct npc_data *nd, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->id_db);
struct block_list *bl = NULL;
@@ -2413,7 +2454,8 @@ void map_vforeachnpc(int (*func)(struct npc_data* nd, va_list args), va_list arg
/// Applies func to all the npcs in the db.
/// Stops iterating if func returns -1.
/// @see map_vforeachnpc
-void map_foreachnpc(int (*func)(struct npc_data* nd, va_list args), ...) {
+static void map_foreachnpc(int (*func)(struct npc_data *nd, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2423,7 +2465,7 @@ void map_foreachnpc(int (*func)(struct npc_data* nd, va_list args), ...) {
/// Applies func to everything in the db.
/// Stops iterating gif func returns -1.
-void map_vforeachregen(int (*func)(struct block_list* bl, va_list args), va_list args)
+static void map_vforeachregen(int (*func)(struct block_list *bl, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->regen_db);
struct block_list *bl = NULL;
@@ -2444,7 +2486,8 @@ void map_vforeachregen(int (*func)(struct block_list* bl, va_list args), va_list
/// Applies func to everything in the db.
/// Stops iterating gif func returns -1.
/// @see map_vforeachregen
-void map_foreachregen(int (*func)(struct block_list* bl, va_list args), ...) {
+static void map_foreachregen(int (*func)(struct block_list *bl, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2454,7 +2497,7 @@ void map_foreachregen(int (*func)(struct block_list* bl, va_list args), ...) {
/// Applies func to everything in the db.
/// Stops iterating if func returns -1.
-void map_vforeachiddb(int (*func)(struct block_list* bl, va_list args), va_list args)
+static void map_vforeachiddb(int (*func)(struct block_list *bl, va_list args), va_list args)
{
struct DBIterator *iter = db_iterator(map->id_db);
struct block_list *bl = NULL;
@@ -2475,7 +2518,8 @@ void map_vforeachiddb(int (*func)(struct block_list* bl, va_list args), va_list
/// Applies func to everything in the db.
/// Stops iterating if func returns -1.
/// @see map_vforeachiddb
-void map_foreachiddb(int (*func)(struct block_list* bl, va_list args), ...) {
+static void map_foreachiddb(int (*func)(struct block_list *bl, va_list args), ...)
+{
va_list args;
va_start(args, func);
@@ -2507,7 +2551,8 @@ struct s_mapiterator {
/// @param flags Flags of the iterator
/// @param type Target types
/// @return Iterator
-struct s_mapiterator* mapit_alloc(enum e_mapitflags flags, enum bl_type types) {
+static struct s_mapiterator *mapit_alloc(enum e_mapitflags flags, enum bl_type types)
+{
struct s_mapiterator* iter;
iter = ers_alloc(map->iterator_ers, struct s_mapiterator);
@@ -2522,7 +2567,8 @@ struct s_mapiterator* mapit_alloc(enum e_mapitflags flags, enum bl_type types) {
/// Frees the iterator.
///
/// @param iter Iterator
-void mapit_free(struct s_mapiterator* iter) {
+static void mapit_free(struct s_mapiterator *iter)
+{
nullpo_retv(iter);
dbi_destroy(iter->dbi);
@@ -2534,7 +2580,8 @@ void mapit_free(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return first block_list or NULL
-struct block_list* mapit_first(struct s_mapiterator* iter) {
+static struct block_list *mapit_first(struct s_mapiterator *iter)
+{
struct block_list* bl;
nullpo_retr(NULL,iter);
@@ -2551,7 +2598,8 @@ struct block_list* mapit_first(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return last block_list or NULL
-struct block_list* mapit_last(struct s_mapiterator* iter) {
+static struct block_list *mapit_last(struct s_mapiterator *iter)
+{
struct block_list* bl;
nullpo_retr(NULL,iter);
@@ -2568,7 +2616,8 @@ struct block_list* mapit_last(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return next block_list or NULL
-struct block_list* mapit_next(struct s_mapiterator* iter) {
+static struct block_list *mapit_next(struct s_mapiterator *iter)
+{
struct block_list* bl;
nullpo_retr(NULL,iter);
@@ -2589,7 +2638,8 @@ struct block_list* mapit_next(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return previous block_list or NULL
-struct block_list* mapit_prev(struct s_mapiterator* iter) {
+static struct block_list *mapit_prev(struct s_mapiterator *iter)
+{
struct block_list* bl;
nullpo_retr(NULL,iter);
@@ -2609,7 +2659,8 @@ struct block_list* mapit_prev(struct s_mapiterator* iter) {
///
/// @param iter Iterator
/// @return true if it exists
-bool mapit_exists(struct s_mapiterator* iter) {
+static bool mapit_exists(struct s_mapiterator *iter)
+{
nullpo_retr(false,iter);
return dbi_exists(iter->dbi);
@@ -2618,7 +2669,8 @@ bool mapit_exists(struct s_mapiterator* iter) {
/*==========================================
* Add npc-bl to id_db, basically register npc to map
*------------------------------------------*/
-bool map_addnpc(int16 m,struct npc_data *nd) {
+static bool map_addnpc(int16 m, struct npc_data *nd)
+{
nullpo_ret(nd);
if( m < 0 || m >= map->count )
@@ -2640,7 +2692,8 @@ bool map_addnpc(int16 m,struct npc_data *nd) {
*-----------------------------------------*/
// Stores the spawn data entry in the mob list.
// Returns the index of successful, or -1 if the list was full.
-int map_addmobtolist(unsigned short m, struct spawn_data *spawn) {
+static int map_addmobtolist(unsigned short m, struct spawn_data *spawn)
+{
int i;
nullpo_retr(-1, spawn);
ARR_FIND( 0, MAX_MOB_LIST_PER_MAP, i, map->list[m].moblist[i] == NULL );
@@ -2651,7 +2704,8 @@ int map_addmobtolist(unsigned short m, struct spawn_data *spawn) {
return -1;
}
-void map_spawnmobs(int16 m) {
+static void map_spawnmobs(int16 m)
+{
int i, k=0;
if (map->list[m].mob_delete_timer != INVALID_TIMER) {
//Mobs have not been removed yet [Skotlex]
@@ -2670,7 +2724,7 @@ void map_spawnmobs(int16 m) {
}
}
-int map_removemobs_sub(struct block_list *bl, va_list ap)
+static int map_removemobs_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
nullpo_ret(bl);
@@ -2699,7 +2753,8 @@ int map_removemobs_sub(struct block_list *bl, va_list ap)
return 1;
}
-int map_removemobs_timer(int tid, int64 tick, int id, intptr_t data) {
+static int map_removemobs_timer(int tid, int64 tick, int id, intptr_t data)
+{
int count;
const int16 m = id;
@@ -2723,7 +2778,8 @@ int map_removemobs_timer(int tid, int64 tick, int id, intptr_t data) {
return 1;
}
-void map_removemobs(int16 m) {
+static void map_removemobs(int16 m)
+{
Assert_retv(m >= 0 && m < map->count);
if (map->list[m].mob_delete_timer != INVALID_TIMER) // should never happen
return; //Mobs are already scheduled for removal
@@ -2734,7 +2790,8 @@ void map_removemobs(int16 m) {
/*==========================================
* Hookup, get map_id from map_name
*------------------------------------------*/
-int16 map_mapname2mapid(const char* name) {
+static int16 map_mapname2mapid(const char *name)
+{
unsigned short map_index;
map_index = mapindex->name2id(name);
if (!map_index)
@@ -2745,7 +2802,8 @@ int16 map_mapname2mapid(const char* name) {
/*==========================================
* Returns the map of the given mapindex. [Skotlex]
*------------------------------------------*/
-int16 map_mapindex2mapid(unsigned short map_index) {
+static int16 map_mapindex2mapid(unsigned short map_index)
+{
if (!map_index || map_index >= MAX_MAPINDEX)
return -1;
@@ -2756,7 +2814,8 @@ int16 map_mapindex2mapid(unsigned short map_index) {
/*==========================================
* Switching Ip, port ? (like changing map_server) get ip/port from map_name
*------------------------------------------*/
-int map_mapname2ipport(unsigned short name, uint32* ip, uint16* port) {
+static int map_mapname2ipport(unsigned short name, uint32 *ip, uint16 *port)
+{
struct map_data_other_server *mdos;
nullpo_retr(-1, ip);
@@ -2770,9 +2829,9 @@ int map_mapname2ipport(unsigned short name, uint32* ip, uint16* port) {
}
/*==========================================
-* Checks if both dirs point in the same direction.
-*------------------------------------------*/
-int map_check_dir(int s_dir,int t_dir)
+ * Checks if both dirs point in the same direction.
+ *------------------------------------------*/
+static int map_check_dir(int s_dir, int t_dir)
{
if(s_dir == t_dir)
return 0;
@@ -2792,7 +2851,7 @@ int map_check_dir(int s_dir,int t_dir)
/*==========================================
* Returns the direction of the given cell, relative to 'src'
*------------------------------------------*/
-uint8 map_calc_dir(struct block_list* src, int16 x, int16 y)
+static uint8 map_calc_dir(struct block_list *src, int16 x, int16 y)
{
uint8 dir = 0;
int dx, dy;
@@ -2834,7 +2893,7 @@ uint8 map_calc_dir(struct block_list* src, int16 x, int16 y)
* Randomizes target cell x,y to a random walkable cell that
* has the same distance from object as given coordinates do. [Skotlex]
*------------------------------------------*/
-int map_random_dir(struct block_list *bl, int16 *x, int16 *y)
+static int map_random_dir(struct block_list *bl, int16 *x, int16 *y)
{
short xi;
short yi;
@@ -2870,7 +2929,8 @@ int map_random_dir(struct block_list *bl, int16 *x, int16 *y)
}
// gat system
-struct mapcell map_gat2cell(int gat) {
+static struct mapcell map_gat2cell(int gat)
+{
struct mapcell cell;
memset(&cell,0,sizeof(struct mapcell));
@@ -2891,7 +2951,8 @@ struct mapcell map_gat2cell(int gat) {
return cell;
}
-int map_cell2gat(struct mapcell cell) {
+static int map_cell2gat(struct mapcell cell)
+{
if( cell.walkable == 1 && cell.shootable == 1 && cell.water == 0 ) return 0;
if( cell.walkable == 0 && cell.shootable == 0 && cell.water == 0 ) return 1;
if( cell.walkable == 1 && cell.shootable == 1 && cell.water == 1 ) return 3;
@@ -2906,7 +2967,7 @@ int map_cell2gat(struct mapcell cell) {
*
* @param[in, out] m The target map.
*/
-void map_cellfromcache(struct map_data *m)
+static void map_cellfromcache(struct map_data *m)
{
nullpo_retv(m);
@@ -2939,11 +3000,13 @@ void map_cellfromcache(struct map_data *m)
/*==========================================
* Confirm if celltype in (m,x,y) match the one given in cellchk
*------------------------------------------*/
-int map_getcell(int16 m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk) {
+static int map_getcell(int16 m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk)
+{
return (m < 0 || m >= map->count) ? 0 : map->list[m].getcellp(&map->list[m], bl, x, y, cellchk);
}
-int map_getcellp(struct map_data* m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk) {
+static int map_getcellp(struct map_data *m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk)
+{
struct mapcell cell;
nullpo_ret(m);
@@ -3011,7 +3074,8 @@ int map_getcellp(struct map_data* m, const struct block_list *bl, int16 x, int16
}
/* [Ind/Hercules] */
-int map_sub_getcellp(struct map_data* m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk) {
+static int map_sub_getcellp(struct map_data *m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk)
+{
nullpo_ret(m);
map->cellfromcache(m);
m->getcellp = map->getcellp;
@@ -3024,7 +3088,8 @@ int map_sub_getcellp(struct map_data* m, const struct block_list *bl, int16 x, i
* 'cell' - which flag to modify
* 'flag' - true = on, false = off
*------------------------------------------*/
-void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
+static void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag)
+{
int j;
if( m < 0 || m >= map->count || x < 0 || x >= map->list[m].xs || y < 0 || y >= map->list[m].ys )
@@ -3050,7 +3115,8 @@ void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
break;
}
}
-void map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
+static void map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag)
+{
if( m < 0 || m >= map->count || x < 0 || x >= map->list[m].xs || y < 0 || y >= map->list[m].ys )
return;
@@ -3059,7 +3125,8 @@ void map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) {
map->list[m].getcellp = map->getcellp;
map->list[m].setcell(m,x,y,cell,flag);
}
-void map_setgatcell(int16 m, int16 x, int16 y, int gat) {
+static void map_setgatcell(int16 m, int16 x, int16 y, int gat)
+{
int j;
struct mapcell cell;
@@ -3075,9 +3142,9 @@ void map_setgatcell(int16 m, int16 x, int16 y, int gat) {
}
/*==========================================
-* Invisible Walls
-*------------------------------------------*/
-void map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1)
+ * Invisible Walls
+ *------------------------------------------*/
+static void map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1)
{
nullpo_retv(x1);
nullpo_retv(y1);
@@ -3097,7 +3164,7 @@ void map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1)
*y1 = y + pos;
}
-bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char* wall_name)
+static bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char *wall_name)
{
struct iwall_data *iwall;
int i;
@@ -3141,7 +3208,7 @@ bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable
return true;
}
-void map_iwall_get(struct map_session_data *sd)
+static void map_iwall_get(struct map_session_data *sd)
{
struct iwall_data *iwall;
struct DBIterator *iter;
@@ -3166,7 +3233,7 @@ void map_iwall_get(struct map_session_data *sd)
dbi_destroy(iter);
}
-bool map_iwall_remove(const char *wall_name)
+static bool map_iwall_remove(const char *wall_name)
{
struct iwall_data *iwall;
int16 i, x1, y1;
@@ -3191,7 +3258,7 @@ bool map_iwall_remove(const char *wall_name)
/**
* @see DBCreateData
*/
-struct DBData create_map_data_other_server(union DBKey key, va_list args)
+static struct DBData create_map_data_other_server(union DBKey key, va_list args)
{
struct map_data_other_server *mdos;
unsigned short map_index = (unsigned short)key.ui;
@@ -3204,7 +3271,7 @@ struct DBData create_map_data_other_server(union DBKey key, va_list args)
/*==========================================
* Add mapindex to db of another map server
*------------------------------------------*/
-int map_setipport(unsigned short map_index, uint32 ip, uint16 port)
+static int map_setipport(unsigned short map_index, uint32 ip, uint16 port)
{
struct map_data_other_server *mdos;
@@ -3226,7 +3293,7 @@ int map_setipport(unsigned short map_index, uint32 ip, uint16 port)
* Delete all the other maps server management
* @see DBApply
*/
-int map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va)
+static int map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va)
{
struct map_data_other_server *mdos = DB->data2ptr(data);
nullpo_ret(mdos);
@@ -3237,7 +3304,8 @@ int map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va)
return 0;
}
-int map_eraseallipport(void) {
+static int map_eraseallipport(void)
+{
map->map_db->foreach(map->map_db,map->eraseallipport_sub);
return 1;
}
@@ -3245,7 +3313,8 @@ int map_eraseallipport(void) {
/*==========================================
* Delete mapindex from db of another map server
*------------------------------------------*/
-int map_eraseipport(unsigned short map_index, uint32 ip, uint16 port) {
+static int map_eraseipport(unsigned short map_index, uint32 ip, uint16 port)
+{
struct map_data_other_server *mdos;
mdos = (struct map_data_other_server*)uidb_get(map->map_db,(unsigned int)map_index);
@@ -3267,7 +3336,7 @@ int map_eraseipport(unsigned short map_index, uint32 ip, uint16 port) {
* @return The loading success state.
* @retval false in case of errors.
*/
-bool map_readfromcache(struct map_data *m)
+static bool map_readfromcache(struct map_data *m)
{
unsigned int file_size;
char file_path[256];
@@ -3319,7 +3388,7 @@ bool map_readfromcache(struct map_data *m)
* @return The loading success state.
* @retval false in case of errors.
*/
-bool map_readfromcache_v1(FILE *fp, struct map_data *m, unsigned int file_size)
+static bool map_readfromcache_v1(FILE *fp, struct map_data *m, unsigned int file_size)
{
struct map_cache_header mheader = { 0 };
uint8 md5buf[16] = { 0 };
@@ -3389,7 +3458,7 @@ bool map_readfromcache_v1(FILE *fp, struct map_data *m, unsigned int file_size)
* @param mapname The new map's name.
* @return success state.
*/
-int map_addmap(const char *mapname)
+static int map_addmap(const char *mapname)
{
map->list[map->count].instance_id = -1;
mapindex->getmapname(mapname, map->list[map->count++].name);
@@ -3401,7 +3470,7 @@ int map_addmap(const char *mapname)
*
* @param id The map ID.
*/
-void map_delmapid(int id)
+static void map_delmapid(int id)
{
Assert_retv(id >= 0 && id < map->count);
ShowNotice("Removing map [ %s ] from maplist"CL_CLL"\n",map->list[id].name);
@@ -3415,7 +3484,7 @@ void map_delmapid(int id)
* @param mapname The name of the map to remove.
* @return the number of removed maps.
*/
-int map_delmap(const char *mapname)
+static int map_delmap(const char *mapname)
{
int i;
char map_name[MAP_NAME_LENGTH];
@@ -3439,7 +3508,8 @@ int map_delmap(const char *mapname)
/**
*
**/
-void map_zone_clear_single(struct map_zone_data *zone) {
+static void map_zone_clear_single(struct map_zone_data *zone)
+{
int i;
nullpo_retv(zone);
@@ -3481,7 +3551,7 @@ void map_zone_clear_single(struct map_zone_data *zone) {
/**
*
**/
-void map_zone_db_clear(void)
+static void map_zone_db_clear(void)
{
struct DBIterator *iter = db_iterator(map->zone_db);
struct map_zone_data *zone = NULL;
@@ -3499,7 +3569,8 @@ void map_zone_db_clear(void)
/* clear the main zone stuff */
map->zone_clear_single(&map->zone_all);
}
-void map_clean(int i) {
+static void map_clean(int i)
+{
int v;
Assert_retv(i >= 0 && i < map->count);
if(map->list[i].cell && map->list[i].cell != (struct mapcell *)0xdeadbeaf) aFree(map->list[i].cell);
@@ -3550,7 +3621,8 @@ void map_clean(int i) {
if( map->list[i].channel )
channel->delete(map->list[i].channel);
}
-void do_final_maps(void) {
+static void do_final_maps(void)
+{
int i, v = 0;
for( i = 0; i < map->count; i++ ) {
@@ -3619,7 +3691,8 @@ void do_final_maps(void) {
}
/// Initializes map flags and adjusts them depending on configuration.
-void map_flags_init(void) {
+static void map_flags_init(void)
+{
int i, v = 0;
for( i = 0; i < map->count; i++ ) {
@@ -3695,7 +3768,7 @@ void map_flags_init(void) {
* Assumed path for file is data/mapname.rsw
* Credits to LittleWolf
*/
-int map_waterheight(char* mapname)
+static int map_waterheight(char *mapname)
{
char fn[256];
char *rsw = NULL;
@@ -3723,7 +3796,7 @@ int map_waterheight(char* mapname)
/*==================================
* .GAT format
*----------------------------------*/
-int map_readgat (struct map_data* m)
+static int map_readgat(struct map_data *m)
{
char filename[256];
uint8* gat;
@@ -3767,12 +3840,14 @@ int map_readgat (struct map_data* m)
/*======================================
* Add/Remove map to the map_db
*--------------------------------------*/
-void map_addmap2db(struct map_data *m) {
+static void map_addmap2db(struct map_data *m)
+{
nullpo_retv(m);
map->index2mapid[m->index] = m->m;
}
-void map_removemapdb(struct map_data *m) {
+static void map_removemapdb(struct map_data *m)
+{
nullpo_retv(m);
map->index2mapid[m->index] = -1;
}
@@ -3780,7 +3855,8 @@ void map_removemapdb(struct map_data *m) {
/*======================================
* Initiate maps loading stage
*--------------------------------------*/
-int map_readallmaps (void) {
+static int map_readallmaps(void)
+{
int i;
int maps_removed = 0;
@@ -3862,7 +3938,7 @@ int map_readallmaps (void) {
*
* @retval false in case of error.
*/
-bool map_config_read_console(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_console(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -3896,7 +3972,7 @@ bool map_config_read_console(const char *filename, struct config_t *config, bool
*
* @retval false in case of error.
*/
-bool map_config_read_connection(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_connection(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -3929,7 +4005,7 @@ bool map_config_read_connection(const char *filename, struct config_t *config, b
*
* @retval false in case of error.
*/
-bool map_config_read_inter(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_inter(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
const char *str = NULL;
@@ -3979,7 +4055,7 @@ bool map_config_read_inter(const char *filename, struct config_t *config, bool i
*
* @retval false in case of error.
*/
-bool map_config_read_database(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_database(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
@@ -4019,7 +4095,7 @@ bool map_config_read_database(const char *filename, struct config_t *config, boo
*
* @retval false in case of error.
*/
-bool map_config_read_map_list(const char *filename, struct config_t *config, bool imported)
+static bool map_config_read_map_list(const char *filename, struct config_t *config, bool imported)
{
struct config_setting_t *setting = NULL;
int i, count = 0;
@@ -4094,7 +4170,7 @@ bool map_config_read_map_list(const char *filename, struct config_t *config, boo
*
* @retval false in case of error.
*/
-bool map_config_read(const char *filename, bool imported)
+static bool map_config_read(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -4154,7 +4230,7 @@ bool map_config_read(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool map_read_npclist(const char *filename, bool imported)
+static bool map_read_npclist(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t *setting = NULL;
@@ -4241,7 +4317,8 @@ bool map_read_npclist(const char *filename, bool imported)
*
* @param clear whether to clear the script list before reloading.
*/
-void map_reloadnpc(bool clear) {
+static void map_reloadnpc(bool clear)
+{
int i;
if (clear)
npc->clearsrcfile();
@@ -4266,7 +4343,7 @@ void map_reloadnpc(bool clear) {
*
* @retval false in case of error.
*/
-bool inter_config_read(const char *filename, bool imported)
+static bool inter_config_read(const char *filename, bool imported)
{
struct config_t config;
const struct config_setting_t *setting = NULL;
@@ -4317,7 +4394,7 @@ bool inter_config_read(const char *filename, bool imported)
*
* @retval false in case of error.
*/
-bool inter_config_read_connection(const char *filename, const struct config_t *config, bool imported)
+static bool inter_config_read_connection(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
@@ -4349,7 +4426,7 @@ bool inter_config_read_connection(const char *filename, const struct config_t *c
*
* @retval false in case of error.
*/
-bool inter_config_read_database_names(const char *filename, const struct config_t *config, bool imported)
+static bool inter_config_read_database_names(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
bool retval = true;
@@ -4383,7 +4460,7 @@ bool inter_config_read_database_names(const char *filename, const struct config_
/*=======================================
* MySQL Init
*---------------------------------------*/
-int map_sql_init(void)
+static int map_sql_init(void)
{
// main db connection
map->mysql_handle = SQL->Malloc();
@@ -4400,7 +4477,7 @@ int map_sql_init(void)
return 0;
}
-int map_sql_close(void)
+static int map_sql_close(void)
{
ShowStatus("Close Map DB Connection....\n");
SQL->Free(map->mysql_handle);
@@ -4418,7 +4495,8 @@ int map_sql_close(void)
*
* @return the newly created zone from merging main and other
**/
-struct map_zone_data *map_merge_zone(struct map_zone_data *main, struct map_zone_data *other) {
+static struct map_zone_data *map_merge_zone(struct map_zone_data *main, struct map_zone_data *other)
+{
char newzone[MAP_ZONE_NAME_LENGTH];
struct map_zone_data *zone = NULL;
int cursor, i, j;
@@ -4515,7 +4593,7 @@ struct map_zone_data *map_merge_zone(struct map_zone_data *main, struct map_zone
return zone;
}
-void map_zone_change2(int m, struct map_zone_data *zone)
+static void map_zone_change2(int m, struct map_zone_data *zone)
{
const char *empty = "";
@@ -4538,7 +4616,8 @@ void map_zone_change2(int m, struct map_zone_data *zone)
map->zone_apply(m,zone,empty,empty,empty);
}
/* when changing from a mapflag to another during runtime */
-void map_zone_change(int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath) {
+static void map_zone_change(int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath)
+{
Assert_retv(m >= 0 && m < map->count);
map->list[m].prev_zone = map->list[m].zone;
@@ -4547,7 +4626,7 @@ void map_zone_change(int m, struct map_zone_data *zone, const char* start, const
map->zone_apply(m,zone,start,buffer,filepath);
}
/* removes previous mapflags from this map */
-void map_zone_remove(int m)
+static void map_zone_remove(int m)
{
char flag[MAP_ZONE_MAPFLAG_LENGTH], params[MAP_ZONE_MAPFLAG_LENGTH];
unsigned short k;
@@ -4574,7 +4653,8 @@ void map_zone_remove(int m)
map->list[m].zone_mf = NULL;
map->list[m].zone_mf_count = 0;
}
-static inline void map_zone_mf_cache_add(int m, char *rflag) {
+static inline void map_zone_mf_cache_add(int m, char *rflag)
+{
Assert_retv(m >= 0 && m < map->count);
RECREATE(map->list[m].zone_mf, char *, ++map->list[m].zone_mf_count);
CREATE(map->list[m].zone_mf[map->list[m].zone_mf_count - 1], char, MAP_ZONE_MAPFLAG_LENGTH);
@@ -4582,7 +4662,8 @@ static inline void map_zone_mf_cache_add(int m, char *rflag) {
}
/* TODO: introduce enumerations to each mapflag so instead of reading the string a number of times we read it only once and use its value wherever we need */
/* cache previous values to revert */
-bool map_zone_mf_cache(int m, char *flag, char *params) {
+static bool map_zone_mf_cache(int m, char *flag, char *params)
+{
char rflag[MAP_ZONE_MAPFLAG_LENGTH];
int state = 1;
@@ -5292,7 +5373,7 @@ bool map_zone_mf_cache(int m, char *flag, char *params) {
return false;
}
-void map_zone_apply(int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath)
+static void map_zone_apply(int m, struct map_zone_data *zone, const char *start, const char *buffer, const char *filepath)
{
int i;
const char *empty = "";
@@ -5320,7 +5401,7 @@ void map_zone_apply(int m, struct map_zone_data *zone, const char* start, const
}
}
/* used on npc load and reload to apply all "Normal" and "PK Mode" zones */
-void map_zone_init(void)
+static void map_zone_init(void)
{
char flag[MAP_ZONE_MAPFLAG_LENGTH], params[MAP_ZONE_MAPFLAG_LENGTH];
struct map_zone_data *zone;
@@ -5374,12 +5455,13 @@ void map_zone_init(void)
}
}
-unsigned short map_zone_str2itemid(const char *name) {
+static int map_zone_str2itemid(const char *name)
+{
struct item_data *data;
if( !name )
return 0;
- if( name[0] == 'I' && name[1] == 'D' && strlen(name) < 8 ) {
+ if (name[0] == 'I' && name[1] == 'D' && strlen(name) <= 12) {
if( !( data = itemdb->exists(atoi(name+2))) ) {
return 0;
}
@@ -5390,13 +5472,14 @@ unsigned short map_zone_str2itemid(const char *name) {
}
return data->nameid;
}
-unsigned short map_zone_str2skillid(const char *name) {
+static unsigned short map_zone_str2skillid(const char *name)
+{
unsigned short nameid = 0;
if( !name )
return 0;
- if( name[0] == 'I' && name[1] == 'D' && strlen(name) < 8 ) {
+ if (name[0] == 'I' && name[1] == 'D' && strlen(name) <= 12) {
if( !skill->get_index((nameid = atoi(name+2))) )
return 0;
} else {
@@ -5406,7 +5489,8 @@ unsigned short map_zone_str2skillid(const char *name) {
}
return nameid;
}
-enum bl_type map_zone_bl_type(const char *entry, enum map_zone_skill_subtype *subtype) {
+static enum bl_type map_zone_bl_type(const char *entry, enum map_zone_skill_subtype *subtype)
+{
char temp[200], *parse;
enum bl_type bl = BL_NUL;
@@ -5452,7 +5536,8 @@ enum bl_type map_zone_bl_type(const char *entry, enum map_zone_skill_subtype *su
return bl;
}
/* [Ind/Hercules] */
-void read_map_zone_db(void) {
+static void read_map_zone_db(void)
+{
struct config_t map_zone_db;
struct config_setting_t *zones = NULL;
/* TODO: #ifndef required for re/pre-re */
@@ -5880,11 +5965,13 @@ void read_map_zone_db(void) {
libconfig->destroy(&map_zone_db);
}
-int map_get_new_bonus_id (void) {
+static int map_get_new_bonus_id(void)
+{
return map->bonus_id++;
}
-void map_add_questinfo(int m, struct questinfo *qi) {
+static void map_add_questinfo(int m, struct questinfo *qi)
+{
unsigned short i;
nullpo_retv(qi);
@@ -5901,7 +5988,8 @@ void map_add_questinfo(int m, struct questinfo *qi) {
memcpy(&map->list[m].qi_data[i], qi, sizeof(struct questinfo));
}
-bool map_remove_questinfo(int m, struct npc_data *nd) {
+static bool map_remove_questinfo(int m, struct npc_data *nd)
+{
unsigned short i;
Assert_retr(false, m >= 0 && m < map->count);
@@ -5921,7 +6009,7 @@ bool map_remove_questinfo(int m, struct npc_data *nd) {
/**
* @see DBApply
*/
-int map_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int map_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct map_data_other_server *mdos = DB->data2ptr(data);
@@ -5934,7 +6022,7 @@ int map_db_final(union DBKey key, struct DBData *data, va_list ap)
/**
* @see DBApply
*/
-int nick_db_final(union DBKey key, struct DBData *data, va_list args)
+static int nick_db_final(union DBKey key, struct DBData *data, va_list args)
{
struct charid2nick* p = DB->data2ptr(data);
struct charid_request* req;
@@ -5951,7 +6039,8 @@ int nick_db_final(union DBKey key, struct DBData *data, va_list args)
return 0;
}
-int cleanup_sub(struct block_list *bl, va_list ap) {
+static int cleanup_sub(struct block_list *bl, va_list ap)
+{
nullpo_ret(bl);
switch(bl->type) {
@@ -5981,7 +6070,7 @@ int cleanup_sub(struct block_list *bl, va_list ap) {
/**
* @see DBApply
*/
-int cleanup_db_sub(union DBKey key, struct DBData *data, va_list va)
+static int cleanup_db_sub(union DBKey key, struct DBData *data, va_list va)
{
return map->cleanup_sub(DB->data2ptr(data), va);
}
@@ -5989,7 +6078,8 @@ int cleanup_db_sub(union DBKey key, struct DBData *data, va_list va)
/*==========================================
* map destructor
*------------------------------------------*/
-int do_final(void) {
+int do_final(void)
+{
int i;
struct map_session_data* sd;
struct s_mapiterator* iter;
@@ -6108,7 +6198,8 @@ int do_final(void) {
return map->retval;
}
-int map_abort_sub(struct map_session_data* sd, va_list ap) {
+static int map_abort_sub(struct map_session_data *sd, va_list ap)
+{
chrif->save(sd,1);
return 1;
}
@@ -6137,12 +6228,13 @@ void do_abort(void)
chrif->flush();
}
-void set_server_type(void) {
+void set_server_type(void)
+{
SERVER_TYPE = SERVER_TYPE_MAP;
}
/// Called when a terminate signal is received.
-void do_shutdown(void)
+static void do_shutdown(void)
{
if( core->runflag != MAPSERVER_ST_SHUTDOWN )
{
@@ -6160,7 +6252,8 @@ void do_shutdown(void)
}
}
-CPCMD(gm_position) {
+static CPCMD(gm_position)
+{
int x = 0, y = 0, m = 0;
char map_name[25];
@@ -6184,7 +6277,8 @@ CPCMD(gm_position) {
map->cpsd->bl.y = y;
map->cpsd->bl.m = m;
}
-CPCMD(gm_use) {
+static CPCMD(gm_use)
+{
if( line == NULL ) {
ShowError("gm:use invalid syntax. use '"CL_WHITE"gm:use @command <optional params>"CL_RESET"'\n");
@@ -6201,7 +6295,8 @@ CPCMD(gm_use) {
map->cpsd_active = false;
}
/* Hercules Console Parser */
-void map_cp_defaults(void) {
+static void map_cp_defaults(void)
+{
#ifdef CONSOLE_INPUT
/* default HCP data */
map->cpsd = pc->get_dummy_sd();
@@ -6215,7 +6310,8 @@ void map_cp_defaults(void) {
#endif
}
-void map_load_defaults(void) {
+static void map_load_defaults(void)
+{
mapindex_defaults();
map_defaults();
/* */
@@ -6624,11 +6720,12 @@ int do_init(int argc, char *argv[])
}
/*=====================================
-* Default Functions : map.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void map_defaults(void) {
+ * Default Functions : map.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void map_defaults(void)
+{
map = &map_s;
/* */
diff --git a/src/map/map.h b/src/map/map.h
index 494f93cfe..e346e72ba 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -714,7 +714,7 @@ enum map_zone_skill_subtype {
};
struct map_zone_disabled_skill_entry {
- unsigned short nameid;
+ int nameid;
enum bl_type type;
enum map_zone_skill_subtype subtype;
};
@@ -724,7 +724,7 @@ struct map_zone_disabled_command_entry {
};
struct map_zone_skill_damage_cap_entry {
- unsigned short nameid;
+ int nameid;
unsigned int cap;
enum bl_type type;
enum map_zone_skill_subtype subtype;
@@ -1342,7 +1342,7 @@ END_ZEROED_BLOCK;
int (*sql_init) (void);
int (*sql_close) (void);
bool (*zone_mf_cache) (int m, char *flag, char *params);
- unsigned short (*zone_str2itemid) (const char *name);
+ int (*zone_str2itemid) (const char *name);
unsigned short (*zone_str2skillid) (const char *name);
enum bl_type (*zone_bl_type) (const char *entry, enum map_zone_skill_subtype *subtype);
void (*read_zone_db) (void);
diff --git a/src/map/mapreg_sql.c b/src/map/mapreg_sql.c
index a69f66354..6e8b8f9b0 100644
--- a/src/map/mapreg_sql.c
+++ b/src/map/mapreg_sql.c
@@ -38,7 +38,7 @@
#include <stdlib.h>
#include <string.h>
-struct mapreg_interface mapreg_s;
+static struct mapreg_interface mapreg_s;
struct mapreg_interface *mapreg;
#define MAPREG_AUTOSAVE_INTERVAL (300*1000)
@@ -49,7 +49,8 @@ struct mapreg_interface *mapreg;
* @param uid variable's unique identifier.
* @return variable's integer value
*/
-int mapreg_readreg(int64 uid) {
+static int mapreg_readreg(int64 uid)
+{
struct mapreg_save *m = i64db_get(mapreg->regs.vars, uid);
return m?m->u.i:0;
}
@@ -60,7 +61,8 @@ int mapreg_readreg(int64 uid) {
* @param uid variable's unique identifier
* @return variable's string value
*/
-char* mapreg_readregstr(int64 uid) {
+static char *mapreg_readregstr(int64 uid)
+{
struct mapreg_save *m = i64db_get(mapreg->regs.vars, uid);
return m?m->u.str:NULL;
}
@@ -72,7 +74,8 @@ char* mapreg_readregstr(int64 uid) {
* @param val new value
* @retval true value was successfully set
*/
-bool mapreg_setreg(int64 uid, int val) {
+static bool mapreg_setreg(int64 uid, int val)
+{
struct mapreg_save *m;
int num = script_getvarid(uid);
unsigned int i = script_getvaridx(uid);
@@ -129,7 +132,8 @@ bool mapreg_setreg(int64 uid, int val) {
* @param str new value
* @retval true value was successfully set
*/
-bool mapreg_setregstr(int64 uid, const char* str) {
+static bool mapreg_setregstr(int64 uid, const char *str)
+{
struct mapreg_save *m;
int num = script_getvarid(uid);
unsigned int i = script_getvaridx(uid);
@@ -188,7 +192,8 @@ bool mapreg_setregstr(int64 uid, const char* str) {
/**
* Loads permanent variables from database.
*/
-void script_load_mapreg(void) {
+static void script_load_mapreg(void)
+{
/*
0 1 2
+-------------------------+
@@ -241,7 +246,7 @@ void script_load_mapreg(void) {
/**
* Saves permanent variables to database.
*/
-void script_save_mapreg(void)
+static void script_save_mapreg(void)
{
if (mapreg->dirty) {
struct DBIterator *iter = db_iterator(mapreg->regs.vars);
@@ -274,7 +279,8 @@ void script_save_mapreg(void)
*
* @see timer->do_timer
*/
-int script_autosave_mapreg(int tid, int64 tick, int id, intptr_t data) {
+static int script_autosave_mapreg(int tid, int64 tick, int id, intptr_t data)
+{
mapreg->save();
return 0;
}
@@ -284,7 +290,7 @@ int script_autosave_mapreg(int tid, int64 tick, int id, intptr_t data) {
*
* @see DBApply
*/
-int mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap)
+static int mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap)
{
struct mapreg_save *m = NULL;
@@ -308,7 +314,8 @@ int mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap)
* This has the effect of clearing the temporary variables, and
* reloading the permanent ones.
*/
-void mapreg_reload(void) {
+static void mapreg_reload(void)
+{
mapreg->save();
mapreg->regs.vars->clear(mapreg->regs.vars, mapreg->destroyreg);
@@ -324,7 +331,8 @@ void mapreg_reload(void) {
/**
* Finalizer.
*/
-void mapreg_final(void) {
+static void mapreg_final(void)
+{
mapreg->save();
mapreg->regs.vars->destroy(mapreg->regs.vars, mapreg->destroyreg);
@@ -338,7 +346,8 @@ void mapreg_final(void) {
/**
* Initializer.
*/
-void mapreg_init(void) {
+static void mapreg_init(void)
+{
mapreg->regs.vars = i64db_alloc(DB_OPT_BASE);
mapreg->ers = ers_new(sizeof(struct mapreg_save), "mapreg_sql.c::mapreg_ers", ERS_OPT_CLEAN);
@@ -357,7 +366,7 @@ void mapreg_init(void) {
*
* @retval false in case of error.
*/
-bool mapreg_config_read(const char *filename, const struct config_setting_t *config, bool imported)
+static bool mapreg_config_read(const char *filename, const struct config_setting_t *config, bool imported)
{
nullpo_retr(false, filename);
nullpo_retr(false, config);
@@ -371,7 +380,8 @@ bool mapreg_config_read(const char *filename, const struct config_setting_t *con
/**
* Interface defaults initializer.
*/
-void mapreg_defaults(void) {
+void mapreg_defaults(void)
+{
mapreg = &mapreg_s;
/* */
diff --git a/src/map/mercenary.c b/src/map/mercenary.c
index 3e52da17a..918701c9d 100644
--- a/src/map/mercenary.c
+++ b/src/map/mercenary.c
@@ -57,12 +57,12 @@
#include <stdlib.h>
#include <string.h>
-struct mercenary_interface mercenary_s;
-struct s_mercenary_db mercdb[MAX_MERCENARY_CLASS];
+static struct mercenary_interface mercenary_s;
+static struct s_mercenary_db mercdb[MAX_MERCENARY_CLASS];
struct mercenary_interface *mercenary;
-int merc_search_index(int class_)
+static int merc_search_index(int class_)
{
int i;
ARR_FIND(0, MAX_MERCENARY_CLASS, i, mercenary->db[i].class_ == class_);
@@ -71,14 +71,14 @@ int merc_search_index(int class_)
return i;
}
-bool merc_class(int class_)
+static bool merc_class(int class_)
{
if (mercenary->search_index(class_) != INDEX_NOT_FOUND)
return true;
return false;
}
-struct view_data * merc_get_viewdata(int class_)
+static struct view_data *merc_get_viewdata(int class_)
{
int i = mercenary->search_index(class_);
if (i == INDEX_NOT_FOUND)
@@ -87,7 +87,7 @@ struct view_data * merc_get_viewdata(int class_)
return &mercenary->db[i].vd;
}
-int merc_create(struct map_session_data *sd, int class_, unsigned int lifetime)
+static int merc_create(struct map_session_data *sd, int class_, unsigned int lifetime)
{
struct s_mercenary merc;
struct s_mercenary_db *db;
@@ -112,7 +112,7 @@ int merc_create(struct map_session_data *sd, int class_, unsigned int lifetime)
return 1;
}
-int mercenary_get_lifetime(struct mercenary_data *md)
+static int mercenary_get_lifetime(struct mercenary_data *md)
{
const struct TimerData * td;
if( md == NULL || md->contract_timer == INVALID_TIMER )
@@ -122,7 +122,7 @@ int mercenary_get_lifetime(struct mercenary_data *md)
return (td != NULL) ? DIFF_TICK32(td->tick, timer->gettick()) : 0;
}
-int mercenary_get_guild(struct mercenary_data *md)
+static int mercenary_get_guild(struct mercenary_data *md)
{
int class_;
@@ -141,7 +141,7 @@ int mercenary_get_guild(struct mercenary_data *md)
return -1;
}
-int mercenary_get_faith(struct mercenary_data *md)
+static int mercenary_get_faith(struct mercenary_data *md)
{
struct map_session_data *sd;
int class_;
@@ -161,7 +161,7 @@ int mercenary_get_faith(struct mercenary_data *md)
return 0;
}
-int mercenary_set_faith(struct mercenary_data *md, int value)
+static int mercenary_set_faith(struct mercenary_data *md, int value)
{
struct map_session_data *sd;
int class_, *faith;
@@ -187,7 +187,7 @@ int mercenary_set_faith(struct mercenary_data *md, int value)
return 0;
}
-int mercenary_get_calls(struct mercenary_data *md)
+static int mercenary_get_calls(struct mercenary_data *md)
{
struct map_session_data *sd;
int class_;
@@ -207,7 +207,7 @@ int mercenary_get_calls(struct mercenary_data *md)
return 0;
}
-int mercenary_set_calls(struct mercenary_data *md, int value)
+static int mercenary_set_calls(struct mercenary_data *md, int value)
{
struct map_session_data *sd;
int class_, *calls;
@@ -232,7 +232,7 @@ int mercenary_set_calls(struct mercenary_data *md, int value)
return 0;
}
-int mercenary_save(struct mercenary_data *md)
+static int mercenary_save(struct mercenary_data *md)
{
nullpo_retr(1, md);
md->mercenary.hp = md->battle_status.hp;
@@ -243,7 +243,8 @@ int mercenary_save(struct mercenary_data *md)
return 1;
}
-int merc_contract_end_timer(int tid, int64 tick, int id, intptr_t data) {
+static int merc_contract_end_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct mercenary_data *md;
@@ -264,7 +265,7 @@ int merc_contract_end_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int merc_delete(struct mercenary_data *md, int reply)
+static int merc_delete(struct mercenary_data *md, int reply)
{
struct map_session_data *sd;
@@ -293,7 +294,7 @@ int merc_delete(struct mercenary_data *md, int reply)
return unit->remove_map(&md->bl, CLR_OUTSIGHT, ALC_MARK);
}
-void merc_contract_stop(struct mercenary_data *md)
+static void merc_contract_stop(struct mercenary_data *md)
{
nullpo_retv(md);
if( md->contract_timer != INVALID_TIMER )
@@ -301,7 +302,7 @@ void merc_contract_stop(struct mercenary_data *md)
md->contract_timer = INVALID_TIMER;
}
-void merc_contract_init(struct mercenary_data *md)
+static void merc_contract_init(struct mercenary_data *md)
{
nullpo_retv(md);
if( md->contract_timer == INVALID_TIMER )
@@ -310,7 +311,7 @@ void merc_contract_init(struct mercenary_data *md)
md->regen.state.block = 0;
}
-int merc_data_received(const struct s_mercenary *merc, bool flag)
+static int merc_data_received(const struct s_mercenary *merc, bool flag)
{
struct map_session_data *sd;
struct mercenary_data *md;
@@ -375,7 +376,7 @@ int merc_data_received(const struct s_mercenary *merc, bool flag)
return 1;
}
-void mercenary_heal(struct mercenary_data *md, int hp, int sp)
+static void mercenary_heal(struct mercenary_data *md, int hp, int sp)
{
nullpo_retv(md);
if( hp )
@@ -384,13 +385,13 @@ void mercenary_heal(struct mercenary_data *md, int hp, int sp)
clif->mercenary_updatestatus(md->master, SP_SP);
}
-int mercenary_dead(struct mercenary_data *md)
+static int mercenary_dead(struct mercenary_data *md)
{
mercenary->delete(md, 1);
return 0;
}
-int mercenary_killbonus(struct mercenary_data *md)
+static int mercenary_killbonus(struct mercenary_data *md)
{
const enum sc_type scs[] = { SC_MER_FLEE, SC_MER_ATK, SC_MER_HP, SC_MER_SP, SC_MER_HIT };
int index = rnd() % ARRAYLENGTH(scs);
@@ -400,7 +401,7 @@ int mercenary_killbonus(struct mercenary_data *md)
return 0;
}
-int mercenary_kills(struct mercenary_data *md)
+static int mercenary_kills(struct mercenary_data *md)
{
nullpo_ret(md);
md->mercenary.kill_count++;
@@ -418,7 +419,7 @@ int mercenary_kills(struct mercenary_data *md)
return 0;
}
-int mercenary_checkskill(struct mercenary_data *md, uint16 skill_id)
+static int mercenary_checkskill(struct mercenary_data *md, uint16 skill_id)
{
int i = skill_id - MC_SKILLBASE;
@@ -430,7 +431,8 @@ int mercenary_checkskill(struct mercenary_data *md, uint16 skill_id)
return 0;
}
-bool read_mercenarydb_sub(char* str[], int columns, int current) {
+static bool read_mercenarydb_sub(char *str[], int columns, int current)
+{
int ele;
struct s_mercenary_db *db;
struct status_data *mstatus;
@@ -485,15 +487,17 @@ bool read_mercenarydb_sub(char* str[], int columns, int current) {
return true;
}
-int read_mercenarydb(void) {
+static int read_mercenarydb(void)
+{
memset(mercenary->db, 0, sizeof(struct s_mercenary_db) * MAX_MERCENARY_CLASS);
sv->readdb(map->db_path, "mercenary_db.txt", ',', 26, 26, MAX_MERCENARY_CLASS, mercenary->read_db_sub);
return 0;
}
-bool read_mercenary_skilldb_sub(char* str[], int columns, int current)
-{// <merc id>,<skill id>,<skill level>
+static bool read_mercenary_skilldb_sub(char *str[], int columns, int current)
+{
+ // <merc id>,<skill id>,<skill level>
struct s_mercenary_db *db;
int i, class_;
uint16 skill_id, skill_lv;
@@ -524,13 +528,15 @@ bool read_mercenary_skilldb_sub(char* str[], int columns, int current)
return true;
}
-int read_mercenary_skilldb(void) {
+static int read_mercenary_skilldb(void)
+{
sv->readdb(map->db_path, "mercenary_skill_db.txt", ',', 3, 3, -1, mercenary->read_skill_db_sub);
return 0;
}
-void do_init_mercenary(bool minimal) {
+static void do_init_mercenary(bool minimal)
+{
if (minimal)
return;
@@ -541,11 +547,12 @@ void do_init_mercenary(bool minimal) {
}
/*=====================================
-* Default Functions : mercenary.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void mercenary_defaults(void) {
+ * Default Functions : mercenary.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void mercenary_defaults(void)
+{
mercenary = &mercenary_s;
/* vars */
diff --git a/src/map/messages_main.h b/src/map/messages_main.h
index e8ee30b2c..1e76dab80 100644
--- a/src/map/messages_main.h
+++ b/src/map/messages_main.h
@@ -24,17 +24,17 @@
/* This file is autogenerated, please do not commit manual changes */
enum clif_messages {
-/*20031028 to 20180621
+/*20031028 to 20180704
ë™ì˜ 하십니까?
Do you agree?
*/
MSG_DO_YOU_AGREE = 0x0,
-/*20031028 to 20180621
+/*20031028 to 20180704
서버 연결 실패
Failed to Connect to Server.
*/
MSG_SERVER_CONNECTION_FAILED = 0x1,
-/*20031028 to 20180621
+/*20031028 to 20180704
서버와 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤.
Disconnected from Server.
*/
@@ -42,1511 +42,1511 @@ Disconnected from Server.
/*20031028 to 20080617
서버와 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤.
Disconnected from Server.
-20080624 to 20180621
+20080624 to 20180704
서버와 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤!
Disconnected from Server!
*/
MSG_BANNED = 0x3,
-/*20031028 to 20180621
+/*20031028 to 20180704
서버 종료ë¨
Server Closed.
*/
MSG_SERVER_OFF = 0x4,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°™ì€ ê³„ì •ìœ¼ë¡œ 다른 사용ìžê°€ ë¡œê·¸ì¸ í•˜ì˜€ìŠµë‹ˆë‹¤.
Someone has Logged in with this ID.
*/
MSG_DOUBLE_LOGIN_PROHIBITED = 0x5,
-/*20031028 to 20180621
+/*20031028 to 20180704
등ë¡ë˜ì§€ ì•Šì€ ê³„ì •ìž…ë‹ˆë‹¤. 다시 í™•ì¸ ë°”ëžë‹ˆë‹¤.
Unregistered ID. Please make sure you have a registered account and you have correctly typed in the user ID.
*/
MSG_INCORRECT_USERID = 0x6,
/*20031028 to 20070704
비밀번호가 틀립니다
-20070710 to 20180621
+20070710 to 20180704
입력하신 비밀번호가 올바르지 않습니다.
Incorrect User ID or Password. Please try again.
*/
MSG_INCORRECT_PASSWORD = 0x7,
-/*20031028 to 20180621
+/*20031028 to 20180704
본 ID 는 ì‚¬ìš©ê¸°ê°„ì´ ë§Œë£Œ ë˜ì—ˆìŠµë‹ˆë‹¤
This ID is expired.
*/
MSG_ID_EXPIRED = 0x8,
-/*20031028 to 20180621
+/*20031028 to 20180704
서버 접근 거부
Rejected from Server.
*/
MSG_ACCESS_DENIED = 0x9,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°™ì€ ìºë¦­í„° ì´ë¦„ì´ ìžˆìŠµë‹ˆë‹¤.
Character Name already exists.
*/
MSG_CHARACTER_NAME_ALREADY_EXISTS = 0xa,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìºë¦­í„° ìƒì„± 거부ë¨
Character Creation is denied.
*/
MSG_CHARACTER_CREATION_DENIED = 0xb,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìºë¦­í„° ì‚­ì œ 거부
Character Deletion is denied.
*/
MSG_CANNOT_DELETE_CHARACTER = 0xc,
-/*20031028 to 20180621
+/*20031028 to 20180704
방제목를 입력하세요.
Please Enter Room Title.
*/
MSG_ENTER_ROOM_TITLE = 0xd,
-/*20031028 to 20180621
+/*20031028 to 20180704
불량단어가 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
Foul Language Detected.
*/
MSG_BAD_SENTANGE = 0xe,
-/*20031028 to 20180621
+/*20031028 to 20180704
암호를 입력하세요.
Please enter Password.
*/
MSG_ENTER_PASSWORD = 0xf,
-/*20031028 to 20180621
+/*20031028 to 20180704
암호를 ì˜ë¬¸ 4ìž ì´ìƒ 입력하세요.
Please enter Password. Passwords must be at least 4 characters long.
*/
MSG_Enter_Password_more_than_4_char = 0x10,
-/*20031028 to 20180621
+/*20031028 to 20180704
종료 하시겠습니까?
Are you sure that you want to quit?
*/
MSG_DO_YOU_REALLY_WANT_TO_QUIT = 0x11,
-/*20031028 to 20180621
+/*20031028 to 20180704
4ìž ì´ìƒ 입력해주세요. ì‚¬ìš©ìž ê³„ì •ì´ ì—†ìœ¼ì‹ ë¶„ë“¤ì€ ì™¼ìª½ í•˜ë‹¨ì˜ [ì‹ ì²­] ë²„íŠ¼ì„ ëˆŒëŸ¬ ê³„ì •ì„ ë§Œë“œì‹œê¸° ë°”ëžë‹ˆë‹¤.
Passwords are at least 4 characters long. Please try again.
*/
MSG_NAME_MUST_EXCEED_4_CHAR = 0x12,
/*20031028 to 20070704
ìºë¦­í„°ë¥¼ 삭제하겠습니까?
-20070618 to 20180621
+20070618 to 20180704
í•œ 번 ì‚­ì œëœ ìºë¦­í„° ë° ê´€ë ¨ 정보는 다시 복구ë˜ì§€ 않습니다. ìºë¦­í„°ë¥¼ 삭제하시겠습니까?
Are you sure that you want to delete this character?
*/
MSG_DELETE_CHARACTER = 0x13,
-/*20031028 to 20180621
+/*20031028 to 20180704
불량단어가 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
Foul Language Detected.
*/
MSG_BAD_NAME = 0x14,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¦„ì„ ìž…ë ¥í•´ 주세요.(한글 2ìž ì˜ë¬¸ 4ìž ì´ìƒ)
Character Name must be at least 4 characters long.
*/
MSG_ENTER_NAME_MORE_THAN_4_CHAR = 0x15,
-/*20031028 to 20180621
+/*20031028 to 20180704
명령어 ì¼ëžŒ: /h
Command List: /h | /help
*/
MSG_LIST_COMMAND = 0x16,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´íŽ™íŠ¸ On
Effects On
*/
MSG_EFFECT_ON = 0x17,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´íŽ™íŠ¸ Off
Effects Off
*/
MSG_EFFECT_OFF = 0x18,
-/*20031028 to 20180621
+/*20031028 to 20180704
사운드 볼륨
Sound Volume
*/
MSG_VOLUME_OF_SOUND = 0x19,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°°ê²½ìŒì•… 볼륨
BGM Volume
*/
MSG_VOLUME_OF_BGM = 0x1a,
-/*20031028 to 20180621
+/*20031028 to 20180704
íš¨ê³¼ìŒ On
Sound Effects On
*/
MSG_SOUND_ON = 0x1b,
-/*20031028 to 20180621
+/*20031028 to 20180704
íš¨ê³¼ìŒ Off
Sound Effects Off
*/
MSG_SOUND_OFF = 0x1c,
-/*20031028 to 20180621
+/*20031028 to 20180704
프레임스킵 On
Frame Skip On
*/
MSG_FRAME_SKIP_ON = 0x1d,
-/*20031028 to 20180621
+/*20031028 to 20180704
프레임스킵 Off
Frame Skip Off
*/
MSG_FRAME_SKIP_OFF = 0x1e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°°ê²½ìŒì•… On
BGM On
*/
MSG_BGM_ON = 0x1f,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°°ê²½ìŒì•… Off
BGM Off
*/
MSG_BGM_OFF = 0x20,
-/*20031028 to 20180621
+/*20031028 to 20180704
/h or /help: 명령어 ì¼ëžŒ
/h or /help: Shows this Command Help List
*/
MSG_EXPLAIN_HELP = 0x21,
-/*20031028 to 20180621
+/*20031028 to 20180704
/w or /who or /ì ‘ì†ìž or /누구: 현재 ì ‘ì†ìžìˆ˜ 보기
/w or /who or /player or /who: wiew current the number of player
*/
MSG_EXPLAIN_WHO = 0x22,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ìŒì•… : ë°°ê²½ìŒì•… On Off
/music: Turns BGM On or Off
*/
MSG_EXPLAIN_MUSIC = 0x23,
-/*20031028 to 20180621
+/*20031028 to 20180704
/íš¨ê³¼ìŒ : íš¨ê³¼ìŒ On Off
/sound: Turns Sound Effects On or Off
*/
MSG_EXPLAIN_SOUND = 0x24,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ì´íŽ™íŠ¸ : ì´íŽ™íŠ¸ On Off
/effect: Effects On or Off
*/
MSG_EXPLAIN_EFFECT = 0x25,
-/*20031028 to 20180621
+/*20031028 to 20180704
/좌표 or /장소: 현재 위치 표시
/where: Shows your present location
*/
MSG_EXPLAIN_POS = 0x26,
-/*20031028 to 20180621
+/*20031028 to 20180704
/skip : 프래임스킵 On Off
/skip: Turns Frame Skip On or Off
*/
MSG_EXPLAIN_FRAMESKIP = 0x27,
-/*20031028 to 20180621
+/*20031028 to 20180704
/v (0~127): íš¨ê³¼ìŒ ë³¼ë¥¨ì¡°ì •
/v (0~127): Controls the volume of the Sound Effects
*/
MSG_EXPLAIN_SOUNDVOLUME = 0x28,
-/*20031028 to 20180621
+/*20031028 to 20180704
/bv (0~127): ë°°ê²½ìŒì•… 볼륨조정
/bv (0~127): Controls the volume of the BGM
*/
MSG_EXPLAIN_BGMVOLUME = 0x29,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ex (ìºë¦­í„°ì´ë¦„) or /차단 (ìºë¦­í„°ì´ë¦„) : 해당ìºë¦­í„°ì— 대해 ê·“ë§ì°¨ë‹¨
/ex (Character Name): Blocks whispering from the Character
*/
MSG_EXPLAIN_SAYISOLATION = 0x2a,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ex or /차단 : ê·“ë§ì°¨ë‹¨ ìºë¦­í„° 리스트
/ex: View a list of Characters you have Blocked
*/
MSG_EXPLAIN_LIST_SAYISOLATION_CHAR = 0x2b,
-/*20031028 to 20180621
+/*20031028 to 20180704
/in (ìºë¦­í„°ì´ë¦„) or /í•´ì œ (ìºë¦­í„°ì´ë¦„) : 해당ìºë¦­í„°ì— 대해 ê·“ë§í—ˆìš©
/in (Character Name): Allows whispering from the Character
*/
MSG_EXPLAIN_SAY_PERMIT = 0x2c,
-/*20031028 to 20180621
+/*20031028 to 20180704
/inall or /해제전부 : 모ë‘ì—게 ê·“ë§í—ˆìš©
/inall: Allows whispers from anyone
*/
MSG_EXPLAIN_SAY_PERMITALL = 0x2d,
-/*20031028 to 20180621
+/*20031028 to 20180704
/exall or /차단전부 : 모ë‘ì—게 ê·“ë§ì°¨ë‹¨
/exall: Blocks whispers from everyone
*/
MSG_EXPLAIN_SAY_ISOLATEALL = 0x2e,
-/*20031028 to 20180621
+/*20031028 to 20180704
다른유저 ìºë¦­í„°ë¥¼ 마우스 ì˜¤ë¥¸ë²„íŠ¼ì„ ëˆ„ë¥´ê³  있는 ìƒíƒœì—ì„œ 왼버튼으로 í´ë¦­í•˜ë©´ ê·¸ìºë¦­í„°ì´ë¦„ì´ ê·“ë§ì½¤ë³´ë°•ìŠ¤ì— 저장ë©ë‹ˆë‹¤.
Right click on a character and select [Register as a Friend] to add a person to your Friend List.
*/
MSG_EXPLAIN_TIP1 = 0x2f,
-/*20031028 to 20180621
+/*20031028 to 20180704
단축아ì´íƒ¬ì°½(F12) 소비장비 ì•„ì´í…œì„ 드래그한후 사용하세요. 사용키(F1F2F3F4F5F6F7F8F9)
F12 Brings up a Hotkey Window which allows you to drag and drop Recovery Items, Equipment and Skills into it for faster access.
*/
MSG_EXPLAIN_TIP2 = 0x30,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°™ì€ë§ì„ 3번ì´ìƒ ì—°ì†í•´ì„œ 전송할 수 없습니다.
You can't type the same word/phrase more than 3 times.
*/
MSG_NO_SAME_SENTANCE = 0x31,
-/*20031028 to 20180621
+/*20031028 to 20180704
불량단어 검출로 ì „ì†¡ì´ ì¤‘ë‹¨ ë˜ì—ˆìŠµë‹ˆë‹¤.
Chat Filter: Yeah, uh, I don't think so buddy...
*/
MSG_NO_SEND_BECAUSE_INSULT = 0x32,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°™ì€ì•„ì´í…œì€ 한번만 올릴수 있습니다.
You cannot overlap items on a window.
*/
MSG_CAN_DRAG_ITEM_OLNY_ONETIME = 0x33,
-/*20031028 to 20180621
+/*20031028 to 20180704
무게가 초과하여 ì•„ì´í…œì„ 가질 수 없습니다.
You cannot carry more items because you are overweight.
*/
MSG_CANT_GET_ITEM_BECAUSE_WEIGHT = 0x34,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œì„ 가질 수 없습니다.
You cannot get the item.
*/
MSG_CANT_GET_ITEM = 0x35,
-/*20031028 to 20180621
+/*20031028 to 20180704
거래가 잘 ì´ë£¨ì–´ì¡ŒìŠµë‹ˆë‹¤.
The deal has successfully completed.
*/
MSG_DEAL_SECCESS = 0x36,
-/*20031028 to 20180621
+/*20031028 to 20180704
ëˆì´ 부족합니다.
You do not have enough zeny.
*/
MSG_INSUFFICIENT_MONEY = 0x37,
-/*20031028 to 20180621
+/*20031028 to 20180704
무게가 초과 ë˜ì—ˆìŠµë‹ˆë‹¤.
You are over your Weight Limit.
*/
MSG_OVER_WEIGHT = 0x38,
-/*20031028 to 20180621
+/*20031028 to 20180704
거래가 실패 했습니다.
The deal has failed.
*/
MSG_DEAL_FAIL = 0x39,
-/*20031028 to 20180621
+/*20031028 to 20180704
모ë‘ì—게 ê·“ë§ê±°ë¶€ìƒíƒœë¡œë¨
You've blocked whispers from everyone.
*/
MSG_REFUSE_HEAR_ALL = 0x3a,
-/*20031028 to 20180621
+/*20031028 to 20180704
모ë‘ì—게 ê·“ë§ê±°ë¶€ìš”ì²­ 실패함
You've failed to block all whispers.
*/
MSG_REQ_REFUSE_HEAR_ALL_FAIL = 0x3b,
-/*20031028 to 20180621
+/*20031028 to 20180704
모ë‘ì—게 ê·“ë§ê°€ëŠ¥ìƒíƒœê°€ë¨
You've allowed whispers from everyone.
*/
MSG_HEAR_ALL = 0x3c,
-/*20031028 to 20180621
+/*20031028 to 20180704
모ë‘ì—게 ê·“ë§ê°€ëŠ¥ìš”ì²­ 실패함
You've failed to allow all whispers.
*/
MSG_REQ_HEAR_ALL_FAIL = 0x3d,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê·“ë§ ê±°ë¶€ 리스트가 없습니다
You have no Block List.
*/
MSG_NO_REFUSE_HEAR_LIST = 0x3e,
-/*20031028 to 20180621
+/*20031028 to 20180704
-ê·“ë§ ê±°ë¶€ 리스트-
[ Character Block List ]
*/
MSG_REFUSE_HEAR_LIST = 0x3f,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°©ì´ ìž˜ 만들어 졌습니다.
Room has been successfully created.
*/
MSG_ROOM_IS_MADE = 0x40,
-/*20031028 to 20180621
+/*20031028 to 20180704
방갯수가 허용갯수를 초과 하였습니다.
Room Limit Exceeded.
*/
MSG_TOO_MANY_ROOM = 0x41,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°™ì€ ë°©ì œëª©ì´ ìžˆìŠµë‹ˆë‹¤.
Same Room exists.
*/
MSG_SAME_ROOM_TITLE = 0x42,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¸ì›ì´ˆê³¼ë¡œ ë°©ì— ë“¤ì–´ê°ˆ 수 없습니다.
The Room is full.
*/
MSG_TOO_MANY_PEOPLE_IN_ROOM = 0x43,
-/*20031028 to 20180621
+/*20031028 to 20180704
강제로 í‡´ìž¥ëœ ë°©ìž…ë‹ˆë‹¤.
You have been kicked out of this room.
*/
MSG_YOU_HAVE_BANNED_FROM_THE_ROOM = 0x44,
-/*20031028 to 20180621
+/*20031028 to 20180704
êµí™˜ìš”ì²­ì„ ê±°ì ˆ 했습니다.
The deal has been rejected.
*/
MSG_REJECT_DEAL = 0x45,
-/*20031028 to 20180621
+/*20031028 to 20180704
êµí™˜ê°€ëŠ¥ê±°ë¦¬ë¥¼ 벗어났습니다.
You are too far away from the person to trade.
*/
MSG_TOO_FAR_TO_DEAL = 0x46,
-/*20031028 to 20180621
+/*20031028 to 20180704
해당 ìºë¦­í„°ê°€ 없습니다.
The Character is not currently online or does not exist.
*/
MSG_CHARACTER_IS_NOT_EXIST = 0x47,
-/*20031028 to 20180621
+/*20031028 to 20180704
다른ìºë¦­í„°ì™€ êµí™˜ì¤‘입니다.
The person is in another deal.
*/
MSG_CHARACTER_IS_DEALING = 0x48,
/*20031028 to 20110627
ìƒíƒœìºë¦­í„° 중량초과로 올려놓ì„수가 없습니다.
-20110705 to 20180621
+20110705 to 20180704
ìƒëŒ€ ìºë¦­í„° 중량초과로 ì˜¬ë ¤ë†“ì„ ìˆ˜ 없습니다.
You cannot trade because this character will exceed his weight limit.
*/
MSG_CHARACTER_IS_OVER_WEIGHT = 0x49,
-/*20031028 to 20180621
+/*20031028 to 20180704
거래가 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
The deal has been canceled.
*/
MSG_DEAL_IS_CANCELED = 0x4a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ êµí™˜ì´ 잘 ë˜ì—ˆìŠµë‹ˆë‹¤.
The deal has successfully completed.
*/
MSG_DEAL_SUCCESS = 0x4b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ êµí™˜ì´ 실패 하였습니다.
The deal has failed.
*/
MSG_DEAL_FAILED = 0x4c,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티가 만들어졌습니다.
Party has successfully been organized.
*/
MSG_PARTY_MAKE_SUCCEED = 0x4d,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°™ì€ íŒŒí‹°ì´ë¦„ì´ ìžˆìŠµë‹ˆë‹¤.
That Party Name already exists.
*/
MSG_SAME_PARTY_NAME = 0x4e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¯¸ íŒŒí‹°ì— ì†í•´ìžˆìŠµë‹ˆë‹¤.
The Character is already in a party.
*/
MSG_YOU_ARE_ALREADY_IN_PARTY = 0x4f,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë‹¤ë¥¸íŒŒí‹°ì— ê°€ìž…ë˜ì–´ 있습니다.
The Character already joined another party.
*/
MSG_CHARACTER_IS_ALREADY_IN_PARTY = 0x50,
-/*20031028 to 20180621
+/*20031028 to 20180704
íŒŒí‹°ê°€ìž…ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.
Request for party rejected.
*/
MSG_CHARACTER_REJECT_JOIN = 0x51,
-/*20031028 to 20180621
+/*20031028 to 20180704
íŒŒí‹°ê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
Request for party accepted.
*/
MSG_CHARACTER_ACCEPT_JOIN = 0x52,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티정ì›ì„ 초과했습니다.
Party Capacity exceeded.
*/
MSG_TOO_MANY_PEOPLE_IN_PARTY = 0x53,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티ì—ì„œ 탈퇴하였습니다.
You left the party.
*/
MSG_YOU_LEAVE_FROM_PARTY = 0x54,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì „ì²´ì—게 보냄
Send to All
*/
MSG_SEND_TO_ALL = 0x55,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티ì—게 보냄
Send to Party
*/
MSG_SEND_TO_PARTY = 0x56,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë‹˜ê³¼ì˜ ê±°ëž˜ìš”ì²­
Request a deal with %s
*/
MSG_REQ_DEAL_WITH = 0x57,
-/*20031028 to 20180621
+/*20031028 to 20180704
님 íŒŒí‹°ì— ê°€ìž…ìš”ì²­
Ask %s to join your party
*/
MSG_REQ_JOIN_PARTY = 0x58,
-/*20031028 to 20180621
+/*20031028 to 20180704
비공개 :
Pri:
*/
MSG_ROOM_PRIVATE = 0x59,
-/*20031028 to 20180621
+/*20031028 to 20180704
공개 :
Pub:
*/
MSG_ROOM_PUBLIC = 0x5a,
-/*20031028 to 20180621
+/*20031028 to 20180704
마지막 ì²´í¬ì§€ì ë¶€í„° 시작하려면 '재시작'ì„ ìºë¦­í„° ì„ íƒìœ¼ë¡œ ëŒì•„가려면 '종료'를 눌러주세요.
Click ''Restart'' to go back to your save point or click ''Exit'' to select another character.
*/
MSG_RESTART_MSG = 0x5b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì›í•˜ëŠ” 거래를 ì„ íƒí•˜ì„¸ìš”.
Please select a Deal Type.
*/
MSG_SELECT_DEAL_TYPE = 0x5c,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë‹˜ì´ ê±°ëž˜ë¥¼ 요청했습니다.
requests a deal.
*/
MSG_SUGGEST_DEAL = 0x5d,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티ì—ì„œ 초청 메시지가 왔습니다. 합류하겠습니까?
Party has sent you an invitation. Would you like to join?
*/
MSG_SUGGEST_JOIN_PARTY = 0x5e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ëª…ë ¹ì´ í‹€ë ¸ìŠµë‹ˆë‹¤.
Invalid Command
*/
MSG_INVALID_COMMAND = 0x5f,
-/*20031028 to 20180621
+/*20031028 to 20180704
탈퇴하기
Leave party
*/
MSG_LEAVE_PARTY = 0x60,
-/*20031028 to 20180621
+/*20031028 to 20180704
제명시키기
Expel
*/
MSG_EXPEL = 0x61,
-/*20031028 to 20180621
+/*20031028 to 20180704
쪽지보내기
Send Message
*/
MSG_MSG = 0x62,
-/*20031028 to 20180621
+/*20031028 to 20180704
1:1 대화
1:1 Chat
*/
MSG_1ON1 = 0x63,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì •ë³´
Information
*/
MSG_CHARACTER_INFO = 0x64,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티설정
Party Setup
*/
MSG_PARTY_SETTING = 0x65,
-/*20031028 to 20180621
+/*20031028 to 20180704
친구
Friend
*/
MSG_FRIEND = 0x66,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티
Party
*/
MSG_PARTY = 0x67,
-/*20031028 to 20180621
+/*20031028 to 20180704
장착아ì´í…œ
Equipment
*/
MSG_EQUIPED_ITEM = 0x68,
-/*20031028 to 20180621
+/*20031028 to 20180704
스테ì´í„°ìŠ¤
Status
*/
MSG_STATUS_ = 0x69,
-/*20031028 to 20180621
+/*20031028 to 20180704
소지아ì´í…œ
Inventory
*/
MSG_ITEM = 0x6a,
-/*20031028 to 20180621
+/*20031028 to 20180704
/결성 [파티ì´ë¦„] : 파티결성 /탈퇴 : 파티탈퇴
/organize ''Party Name'' To organize a party. Type /leave To leave a Party.
*/
MSG_EXPLAIN_PARTY = 0x6b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìžì‹ ì´ 파티리ë”ì¼ë•Œ ìºë¦­í„°ë¥¼ 오른버튼으로 í´ë¦­í•˜ë©´ íŒŒí‹°ì— ê°€ìž…ìš”ì²­í•˜ê¸° 메뉴가 뜹니다.
If you are the party master, you can invite someone into your party by right-clicking on a Character.
*/
MSG_EXPLAIN_TIP3 = 0x6c,
-/*20031028 to 20180621
+/*20031028 to 20180704
회복
Consumables
*/
MSG_RESTORE = 0x6d,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격
Attack
*/
MSG_ATTACK = 0x6e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë³´ì¡°
Support
*/
MSG_SUPPORT = 0x6f,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì „ì²´
All
*/
MSG_ALL = 0x70,
-/*20031028 to 20180621
+/*20031028 to 20180704
무기
Weapons
*/
MSG_WEAPON = 0x71,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°©ì–´
Defense
*/
MSG_DEFENCE = 0x72,
-/*20031028 to 20180621
+/*20031028 to 20180704
수
Water
*/
MSG_WATER = 0x73,
-/*20031028 to 20180621
+/*20031028 to 20180704
지
Earth
*/
MSG_EARTH = 0x74,
-/*20031028 to 20180621
+/*20031028 to 20180704
í™”
Fire
*/
MSG_FIRE = 0x75,
-/*20031028 to 20180621
+/*20031028 to 20180704
í’
Wind
*/
MSG_WIND = 0x76,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°™ì€ì¢…ë¥˜ì˜ ìž¥ë¹„ì•„ì´í…œì€ í•œë²ˆì— í•œê°œë§Œ ì‚´ 수 있습니다.
Please avoid buying 2 of the same items at one time.
*/
MSG_EQUIPITEM_OLNY_ONE = 0x77,
-/*20031028 to 20180621
+/*20031028 to 20180704
창모드ì—ì„œ 실행 할때는 16비트 컬러로 맞춰주세요.
Please change your desktop Color Depth to 16-bit when running Ragnarok in windowed mode.
*/
MSG_ONLY_16BIT_WHEN_WINDOWMODE = 0x78,
-/*20031028 to 20180621
+/*20031028 to 20180704
잠시만 기다려 주세요.
Please wait...
*/
MSG_PLEASE_BE_PATIENT = 0x79,
-/*20031028 to 20180621
+/*20031028 to 20180704
잠시만 기다려 주세요.
Please wait...
*/
MSG_WAITING_RESPONSE_FROM_SERVER = 0x7a,
-/*20031028 to 20180621
+/*20031028 to 20180704
잠시만 기다려 주세요.
Please wait...
*/
MSG_MAKING_CHARACTER = 0x7b,
-/*20031028 to 20180621
+/*20031028 to 20180704
잠시만 기다려 주세요.
Please wait...
*/
MSG_DELETING_CHARACTER = 0x7c,
-/*20031028 to 20180621
+/*20031028 to 20180704
방 만들기
Make a Room
*/
MSG_MAKING_ROOM = 0x7d,
-/*20031028 to 20180621
+/*20031028 to 20180704
방셋팅 바꾸기
Room Setup
*/
MSG_CHANGE_ROOM_SETTING = 0x7e,
-/*20031028 to 20180621
+/*20031028 to 20180704
강퇴시키기
Kick Character Out
*/
MSG_BAN = 0x7f,
-/*20031028 to 20180621
+/*20031028 to 20180704
방장권한 주기
Give Master Authority
*/
MSG_GIVE_GIVE_ROOM_POWER = 0x80,
-/*20031028 to 20180621
+/*20031028 to 20180704
정보보기
View Information
*/
MSG_SEE_INFORMATION_OF_CHARACTER = 0x81,
-/*20031028 to 20180621
+/*20031028 to 20180704
대화방
Chat Room
*/
MSG_CHAT_ROOM = 0x82,
-/*20031028 to 20180621
+/*20031028 to 20180704
명
Ppl
*/
MSG_COUNT_UNIT_OF_PEOPLE = 0x83,
-/*20031028 to 20180621
+/*20031028 to 20180704
/앉기 or /sit : 앉기. 앉아있ì„ë•Œ 서기
/sit: Sit command. If you are sitting, you will stand instead.
*/
MSG_EXPLAIN_SIT = 0x84,
-/*20031028 to 20180621
+/*20031028 to 20180704
/서기 or /stand : 서기. 서있ì„ë•Œ 앉기
/stand: Stand command. If you are standing, you will sit instead.
*/
MSG_EXPLAIN_STAND = 0x85,
-/*20031028 to 20180621
+/*20031028 to 20180704
/채팅방 or /chat : 채팅방 만들기창 ë„우기
/chat: Creates a Chat Room
*/
MSG_EXPLAIN_MAKE_CHAT = 0x86,
-/*20031028 to 20180621
+/*20031028 to 20180704
/q : 채팅방 나가기.
/q: Leaves a Chat Room
*/
MSG_EXPLAIN_EXIT_CHAT_ROOM = 0x87,
-/*20031028 to 20180621
+/*20031028 to 20180704
/거래 [ìºë¦­í„°ì´ë¦„] or /êµí™˜ [ìºë¦­í„°ì´ë¦„] or /deal [ìºë¦­í„°ì´ë¦„] : 해당 ìºë¦­í„°ì™€ 거래요청
/deal ''Character Name'' Requests a deal with a character
*/
MSG_EXPLAIN_DEAL = 0x88,
-/*20031028 to 20180621
+/*20031028 to 20180704
/결성 [파티ì´ë¦„] or /organize [파티ì´ë¦„] : 파티결성
/organize ''Party Name'' Organizes a party
*/
MSG_EXPLAIN_ORGANIZE_PARTY = 0x89,
-/*20031028 to 20180621
+/*20031028 to 20180704
/탈퇴 or /leave : 파티 탈퇴
/leave: Leaves a party
*/
MSG_EXPLAIN_LEAVE_PARTY = 0x8a,
-/*20031028 to 20180621
+/*20031028 to 20180704
/제명 [ìºë¦­í„°ì´ë¦„] or /expel [ìºë¦­í„°ì´ë¦„] : 해당ìºë¦­í„°ë¥¼ 파티ì—ì„œ 제명시킴
/expel ''Character Name'' kicks a Character out of your party
*/
MSG_EXPLAIN_EXPEL_PARTY_MEMBER = 0x8b,
-/*20031028 to 20180621
+/*20031028 to 20180704
[Alt] + [End] : 플레ì´ì–´ hp/sp 게ì´ì§€ On Off
[Alt] + [End]: Turns HP/SP Bar On or Off
*/
MSG_EXPLAIN_TIP4 = 0x8c,
-/*20031028 to 20180621
+/*20031028 to 20180704
[Alt] + [Home] : 지면 커서 표시 On Off
[Alt] + [Home]: Turns Ground Cursor On or Off
*/
MSG_EXPLAIN_TIP5 = 0x8d,
-/*20031028 to 20180621
+/*20031028 to 20180704
[Insert] : 앉기 서기
[Insert]: Makes you sit or stand. (Hotkey to toggle between /sit and /stand)
*/
MSG_EXPLAIN_TIP6 = 0x8e,
-/*20031028 to 20180621
+/*20031028 to 20180704
MVPê°€ ë˜ì…¨ìŠµë‹ˆë‹¤!! MVP ì•„ì´í…œì€
Congratulations! You are the MVP! Your reward item is
*/
MSG_YOU_RECEIVE_MVP_ITEM = 0x8f,
-/*20031028 to 20180621
+/*20031028 to 20180704
!!
!!
*/
MSG_YOU_RECEIVE_MVP_ITEM2 = 0x90,
-/*20031028 to 20180621
+/*20031028 to 20180704
MVPê°€ ë˜ì…¨ìŠµë‹ˆë‹¤!! 특별경험치
Congratulations! You are the MVP! Your reward EXP Points are
*/
MSG_YOU_RECEIVE_MVP_EXP = 0x91,
-/*20031028 to 20180621
+/*20031028 to 20180704
íšë“!!
!!
*/
MSG_YOU_RECEIVE_MVP_EXP2 = 0x92,
-/*20031028 to 20180621
+/*20031028 to 20180704
MVPê°€ ë˜ì…¨ìŠµë‹ˆë‹¤ë§Œ 무게초과로 MVP ì•„ì´í…œì„ 가질 수 없었습니다!!
You are the MVP, but you can't take the reward because you are over your weight limit.
*/
MSG_YOU_THROW_MVPITEM = 0x93,
-/*20031028 to 20180621
+/*20031028 to 20180704
없는 ìºë¦­í„° ì´ë¦„ 입니다.
There is no such character name or the user is offline.
*/
MSG_NOT_EXIST_CHARACTER = 0x94,
-/*20031028 to 20180621
+/*20031028 to 20180704
수신 거부 ìƒíƒœìž…니다.
doesn't want to receive your messages.
*/
MSG_NO_RECEIVE_MODE = 0x95,
-/*20031028 to 20180621
+/*20031028 to 20180704
모든 ìºë¦­í„°ì— 대해 수신 거부 ìƒíƒœ 입니다.
is not in the mood to talk with anyone.
*/
MSG_NO_RECEIVE_MODE_FOR_ALL = 0x96,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìºë¦­í„° ì ‘ì†ëŠê¸° 성공.
Killed/Disconnected User.
*/
MSG_SUCCESS_DISCONNECT_CHARACTER = 0x97,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìºë¦­í„° ì ‘ì†ëŠê¸° 실패.
Kill has failed.
*/
MSG_FAIL_DISCONNECT_CHARACTER = 0x98,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s %d ê°œ íšë“
You got %s (%d).
*/
MSG_GET_ITEM = 0x99,
-/*20031028 to 20180621
+/*20031028 to 20180704
[Alt] + [=] : 알파벳 ê°„ê²©ì´ ë„“ì–´ì¡Œì„ë•Œ ë˜ëŒë¦¬ê¸°.
[Alt] + [=]: Fix the interval error between letters.
*/
MSG_EXPLAIN_TIP7 = 0x9a,
-/*20031028 to 20180621
+/*20031028 to 20180704
[F10] : 채팅창 í¬ê¸°ì¡°ì • [Alt] + [F10] : 채팅창 On Off
[F10]: To toggle Chat Window size; [Alt] + [F10]: Toggle Chat Window On or Off
*/
MSG_EXPLAIN_TIP8 = 0x9b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê·“ì†ë§ 하는법 : 채팅창 왼쪽 ìž…ë ¥ëž€ì— ìºë¦­í„°ì´ë¦„ì„ ìž…ë ¥í•˜ê³  오른쪽 ìž…ë ¥ëž€ì— ë§ì„ 입력하면 ë©ë‹ˆë‹¤. TAB키로 ë‘입력란 사ì´ë¡œ 커서를 ì´ë™í•  수 있습니다.
How to Whisper: Enter a Character's Name on the left side of chat window and type your message on the right side. The Tab key helps you move between these boxes.
*/
MSG_EXPLAIN_TIP9 = 0x9c,
-/*20031028 to 20180621
+/*20031028 to 20180704
/! /? /ê¸°ì¨ /하트 /ë•€ /아하 /ì§œì¦ /í™” /ëˆ /... /가위 /바위 /ë³´ : Alt + (1~9) Ctrl + (-=\) ì— ëŒ€ì‘ë˜ëŠ” 명령어 입니다.
/!,/?,/ho,/lv,/lv2,/swt,/ic,/an,/ag,/$,/….,/thx,/wah,/sry,/heh,/swt2,/hmm,/no1,/??,/omg,/oh,/X,/hp,/go,/sob,/gg,/kis,/kis2,/pif,/ok: Emotion icons corresponding to Alt + (1~9) Ctrl + (-=\\)
*/
MSG_EXPLAIN_TIP10 = 0x9d,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티ì›ì—게 ë§í•˜ëŠ”법 : ë§ì˜ ì œì¼ì•žì— '%'를 붙ì´ë©´ 파티ì›ì—게 ë§ì´ 갑니다. (예: "%안녕")
How to Speak to Party: Add % in front of every message.(Example: \%Hello\)
*/
MSG_EXPLAIN_TIP11 = 0x9e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. êµí™˜ 불능.
You haven't learned enough Basic Skills to Trade.
*/
MSG_NOT_ENOUGH_SKILLLEVE1 = 0x9f,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. ì´ëª¨ì…˜ 불능.
You haven't learned enough Basic Skills to use Emotion icons.
*/
MSG_NOT_ENOUGH_SKILLLEVE2 = 0xa0,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 앉기 불능.
You haven't learned enough Basic Skills to Sit.
*/
MSG_NOT_ENOUGH_SKILLLEVE3 = 0xa1,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 채팅방만들기 불능.
You haven't learned enough Basic Skills to create a chat room.
*/
MSG_NOT_ENOUGH_SKILLLEVE4 = 0xa2,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 파티만들기 불능
You haven't learned enough Basic Skills to Party.
*/
MSG_NOT_ENOUGH_SKILLLEVE5 = 0xa3,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 외치기 불능
You haven't learned enough skills to Shout.
*/
MSG_NOT_ENOUGH_SKILLLEVE6 = 0xa4,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. pk 불능
You haven't learned enough skills for Pking.
*/
MSG_NOT_ENOUGH_SKILLLEVE7 = 0xa5,
-/*20031028 to 20180621
+/*20031028 to 20180704
사고ìží•˜ëŠ” 품목
Buying Items
*/
MSG_ITEMS_FOR_BUY = 0xa6,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ ìƒì 
Item Shop
*/
MSG_ITEM_STORE = 0xa7,
-/*20031028 to 20180621
+/*20031028 to 20180704
팔고ìží•˜ëŠ” 품목
Selling Items
*/
MSG_ITEMS_FOR_SELL = 0xa8,
-/*20031028 to 20180621
+/*20031028 to 20180704
보관아ì´í…œ
Storage
*/
MSG_ITEMS_THAT_IS_STORED = 0xa9,
-/*20031028 to 20180621
+/*20031028 to 20180704
장비가 장착 ë˜ì—ˆìŠµë‹ˆë‹¤.
is put on.
*/
MSG_ITEM_IS_EQUIPED = 0xaa,
-/*20031028 to 20180621
+/*20031028 to 20180704
장비가 í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
is taken off.
*/
MSG_ITEM_IS_REMOVED = 0xab,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê·“ë§ë¦¬ìŠ¤íŠ¸ì— ì´ë¦„넣기
To add names on the Whispering List
*/
MSG_ADD_TO_WHISPER_CHAR_LIST = 0xac,
-/*20031028 to 20180621
+/*20031028 to 20180704
스í¬ë¦°ìƒ· ì°ëŠ”법 : [Print Screen]키나 [Scroll Lock]키를 누르면 ë©ë‹ˆë‹¤.
How to Take Screen Shots: Press [Print Screen] or [Scroll Lock]
*/
MSG_EXPLAIN_TIP12 = 0xad,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì˜¤ëŠ˜ì˜ íŒ
Tip of the Day
*/
MSG_TIPOFTHEDAY = 0xae,
-/*20031028 to 20180621
+/*20031028 to 20180704
^3850a0알고 계셨습니까... ^000000 //^709fed
^3850a0Did you know...?^709fed
*/
MSG_DIDYOUKNOW = 0xaf,
-/*20031028 to 20180621
+/*20031028 to 20180704
시작할때 열기
Display at startup
*/
MSG_SHOWTIPSATSTARTUP = 0xb0,
-/*20031028 to 20180621
+/*20031028 to 20180704
/tip : 오늘ì˜íŒ 열기
/tip: Opens ''Tip of the Day''
*/
MSG_EXPLAIN_OPENTIP = 0xb1,
-/*20031028 to 20180621
+/*20031028 to 20180704
현재 ì ‘ì†ìž %d명
There are %d Players Currently Connected.
*/
MSG_NUMPEOPLE = 0xb2,
-/*20031028 to 20180621
+/*20031028 to 20180704
(%s)ë‹˜ì´ ìž…ìž¥ 하였습니다.
(%s) has entered.
*/
MSG_USERGETINTHEROOM = 0xb3,
-/*20031028 to 20180621
+/*20031028 to 20180704
(%s)ë‹˜ì´ í‡´ìž¥ 하였습니다.
(%s) has left.
*/
MSG_USERGETOUTOFTHEROOM = 0xb4,
-/*20031028 to 20180621
+/*20031028 to 20180704
(%s)ë‹˜ì´ ê°•ì œ 퇴장 ë˜ì—ˆìŠµë‹ˆë‹¤.
(%s) was kicked out.
*/
MSG_USERGETOUTOFTHEROOMBYFORCE = 0xb5,
-/*20031028 to 20180621
+/*20031028 to 20180704
%d 개
%d ea.
*/
MSG_EA = 0xb6,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s : %d 개
%s: %d ea.
*/
MSG_EA2 = 0xb7,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s %s : %d 개
%s %s: %d
*/
MSG_EA3 = 0xb8,
-/*20031028 to 20180621
+/*20031028 to 20180704
팔 수 있는 품목
Available Items to sell
*/
MSG_ITEMSYOUCANSELL = 0xb9,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìƒì ì—ì„œ 파는 품목
Shop Items
*/
MSG_SHOPITEMS = 0xba,
-/*20031028 to 20180621
+/*20031028 to 20180704
알 수 없는곳
Unknown Area
*/
MSG_NOWHERE = 0xbb,
-/*20031028 to 20180621
+/*20031028 to 20180704
서버와 언어가 맞지 않습니다.
Your Client language doesn't match the Server language.
*/
MSG_CLIENTTYPEMISMATCH = 0xbc,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œì„ 버릴려면 ìž¥ë¹„ì°½ì„ ë‹«ìœ¼ì„¸ìš”.
Please move your equipment to the inventory. And close the equipment window.
*/
MSG_CLOSEEQUIPWND = 0xbd,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì˜ì–´ë§Œ ë©ë‹ˆë‹¤.
This server provides English Text Characters Only.
*/
MSG_ENGLISHONLY = 0xbe,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì§€ê¸ˆì€ ì§€ì›ë˜ì§€ 않습니다.
This is not implemented yet.
*/
MSG_NOTSUPPORTEDYET = 0xbf,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê·“ë§ ë¦¬ìŠ¤íŠ¸ê°€ 없습니다.
No Whisper List.
*/
MSG_NOWHISPERLIST = 0xc0,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì—게 ê·“ë§ê±°ë¶€ìƒíƒœë¡œë¨
: Whispering Blocked.
*/
MSG_WHISPERIGNORESUCCESS = 0xc1,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì—게 ê·“ë§ê±°ë¶€ 요청실패함
: Whispering Block has failed.
*/
MSG_WHISPERIGNOREFAILED1 = 0xc2,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì—게 ê·“ë§ê±°ë¶€ 요청실패함 (ì¸ì›ì´ˆê³¼)
: Whispering Block has failed. Block List is full.
*/
MSG_WHISPERIGNOREFAILED2 = 0xc3,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì—게 ê·“ë§ê°€ëŠ¥ìƒíƒœë¡œë¨
: Whispering accepted.
*/
MSG_WHISPERNOIGNORESUCCESS = 0xc4,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì—게 ê·“ë§ê°€ëŠ¥ 요청실패함
: Command has failed.
*/
MSG_WHISPERNOIGNOREFAILED1 = 0xc5,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì—게 ê·“ë§ê°€ëŠ¥ 요청실패함 (ì¸ì›ì´ˆê³¼)
: Command has failed. Block List is full.
*/
MSG_WHISPERNOIGNOREFAILED2 = 0xc6,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¦„ì˜ ì²˜ìŒê³¼ 마지막ì—는 공백문ìžë¥¼ 사용할 수 없습니다.
You cannot put a space at the beginning or end of a name.
*/
MSG_NO_SPACE_IN_NAME = 0xc7,
-/*20031028 to 20180621
+/*20031028 to 20180704
비공개
Private
*/
MSG_ROOM_PRIVATE2 = 0xc8,
-/*20031028 to 20180621
+/*20031028 to 20180704
공개
Public
*/
MSG_ROOM_PUBLIC2 = 0xc9,
-/*20031028 to 20180621
+/*20031028 to 20180704
SP가 부족합니다.
Not Enough SP
*/
MSG_USESKILL_FAIL_SP_INSUFFICIENT = 0xca,
-/*20031028 to 20180621
+/*20031028 to 20180704
HP가 부족합니다.
Not Enough HP
*/
MSG_USESKILL_FAIL_HP_INSUFFICIENT = 0xcb,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬사용 실패.
Skill has failed.
*/
MSG_NOT_ENOUGH_SKILLLEVE8 = 0xcc,
-/*20031028 to 20180621
+/*20031028 to 20180704
훔치기 실패.
Steal has failed.
*/
MSG_FAIL_STEAL = 0xcd,
-/*20031028 to 20180621
+/*20031028 to 20180704
êµí™˜ì°½
Trade
*/
MSG_EXCHANGE = 0xce,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë…걸기 실패.
Envenom skill has failed.
*/
MSG_FAIL_POISON = 0xcf,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ ì•„ì´ë””로는 ì´ ì„œë²„ì— ì ‘ì†í•  수 없습니다.
You cannot use this ID on this server.
*/
MSG_ID_MISMATCH = 0xd0,
-/*20031028 to 20180621
+/*20031028 to 20180704
스피드가 í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Your Speed has increased.
*/
MSG_SPEEDUP = 0xd1,
-/*20031028 to 20180621
+/*20031028 to 20180704
스피드가 ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
Your Speed has decreased.
*/
MSG_SPEEDDOWN = 0xd2,
-/*20031028 to 20180621
+/*20031028 to 20180704
/기억 : 워프할 장소 기억(워프 ìŠ¤í‚¬ì´ ìžˆëŠ”ê²½ìš°)
/memo: To memorize a place as Warp Point (If you are an Acolyte Class character)
*/
MSG_EXPLAIN_TIP13 = 0xd3,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìž„ì˜ì˜ 위치
Random Area
*/
MSG_RANDOM_POS = 0xd4,
-/*20031028 to 20180621
+/*20031028 to 20180704
워프 í•  위치를 ì„ íƒí•˜ì„¸ìš”.
Select an Area to Warp
*/
MSG_SELECTWHERETOWARP = 0xd5,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
Skill Level is not high enough
*/
MSG_NOTENOUGHSKILLLEVEL = 0xd6,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì €ìž¥ëœ ì›Œí”„í•  장소가 없습니다.
There are no memorized locations (Memo Points).
*/
MSG_NO_STORED_PLACE_TO_WARP = 0xd7,
-/*20031028 to 20180621
+/*20031028 to 20180704
워프 관련 ìŠ¤í‚¬ì´ ì—†ìŠµë‹ˆë‹¤.
You haven't learned Warp.
*/
MSG_NOWARPSKILL = 0xd8,
-/*20031028 to 20180621
+/*20031028 to 20180704
워프 장소로 저장ë¨.
Saved location as a Memo Point for Warp Skill.
*/
MSG_WARPPOINTSTORED = 0xd9,
-/*20031028 to 20180621
+/*20031028 to 20180704
취소
Cancel
*/
MSG_CANCEL = 0xda,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬 사용후 ì‹œê°„ì´ ì¶©ë¶„ížˆ 지나지 않았습니다.
There is a Delay after using a Skill.
*/
MSG_SKILLINTERVAL = 0xdb,
-/*20031028 to 20180621
+/*20031028 to 20180704
í•œë²ˆì— ê°€ì§ˆ 수 있는 ì•„ì´í…œ 종류수를 초과하여 ì•„ì´í…œì„ 가질 수 없습니다.
You can't have this item because you will exceed the weight limit.
*/
MSG_CANT_GET_ITEM_BECAUSE_COUNT = 0xdc,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ 최대 종류수를 초과 하였습니다.
Out of the maximum capacity
*/
MSG_INSUFFICIENT_OVER_COUNT = 0xdd,
-/*20031028 to 20180621
+/*20031028 to 20180704
수레아ì´í…œ
Cart Items
*/
MSG_MERCHANTITEM = 0xde,
-/*20031028 to 20180621
+/*20031028 to 20180704
수레 벗기
Take off Cart
*/
MSG_CARTOFF = 0xdf,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë…¸ì  ê°œì„¤
Opening a stall
*/
MSG_MERCHANTSHOPMAKER = 0xe0,
/*20031028 to 20041207
ë…¸ì ì´ë¦„를 입력하세요.
-20041213 to 20180621
+20041213 to 20180704
ë…¸ì ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”.
Please Name your Shop.
*/
MSG_ENTER_SHOP_TITLE = 0xe1,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë‚˜ì˜ ë…¸ì 
My Shop
*/
MSG_ITEM_MY_STORE = 0xe2,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìƒì¸ ì•„ì´í…œ ìƒì 
Merchant Shop
*/
MSG_ITEM_MERCHANT_STORE = 0xe3,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìƒì¸ì—게 사고ìží•˜ëŠ” 품목
Buying Items
*/
MSG_ITEMS_FOR_BUY_FROM_MERCHANT = 0xe4,
/*20031028 to 20130508
%s 사기 실패 %s
-20130515 to 20180621
+20130515 to 20180704
%s 구입 실패 %s
%s Purchase Failed %s
*/
MSG_FAIL_BUY_ITEM_FROM_MERCHANT = 0xe5,
-/*20031028 to 20180621
+/*20031028 to 20180704
재고 부족.
Out of Stock
*/
MSG_INSUFFICIENT_STOCK = 0xe6,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s %d 개 팔림.
%s %d sold.
*/
MSG_ITEM_IS_SOLD = 0xe7,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë…¸ì ì—ì„œ 팔 수 있는 ì•„ì´í…œ
Available Items for Vending
*/
MSG_MERCHANTMIRRORITEM = 0xe8,
/*20031028 to 20111012
ëˆì´ 부족해서 ìŠ¤í‚¬ì„ ì“¸ 수 없습니다.
-20111017 to 20180621
+20111017 to 20180704
제니가 부족해서 ìŠ¤í‚¬ì„ ì‚¬ìš© í•  수 없습니다.
Skill has failed because you do not have enough zeny.
*/
MSG_SKILL_FAIL_MONEY = 0xe9,
-/*20031028 to 20180621
+/*20031028 to 20180704
사용할 대ìƒì„ ì„ íƒí•˜ì„¸ìš”
Select a Target.
*/
MSG_SELECTTARGET = 0xea,
-/*20031028 to 20180621
+/*20031028 to 20180704
/pk on : pk On /pk off : pk Off
/pk on: Turns PK On. /pk off: Turns PK Off.
*/
MSG_EXPLAIN_TIP14 = 0xeb,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë…¸ì 
Shop
*/
MSG_STREETSHOP = 0xec,
-/*20031028 to 20180621
+/*20031028 to 20180704
수레 ì•„ì´í…œ [Alt+W]
Cart Items [Alt+W]
*/
MSG_OPENCARTWINDOW = 0xed,
-/*20031028 to 20180621
+/*20031028 to 20180704
기본정보
Basic Information
*/
MSG_BASICINFOWND = 0xee,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¬´ê¸°ë¡œëŠ” ì´ìŠ¤í‚¬ì„ 사용할수 없습니다.
The skill cannot be used with this weapon.
*/
MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s 사기 실패 재고 부족 현재 재고 %d 개.
Buying %s has been failed. Out of Stock. Current Stock %d.
*/
MSG_FAIL_BUY_ITEM_FROM_MERCHANT_NO_STOCK = 0xf0,
-/*20031028 to 20180621
+/*20031028 to 20180704
서버와 ë™ê¸°í™”ê°€ 틀려 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤.
You've been disconnected due to a time gap between you and the server.
*/
MSG_SPEEDHACK = 0xf1,
-/*20031028 to 20180621
+/*20031028 to 20180704
í™”ì‚´ì„ ìž¥ì°©í•˜ì„¸ìš”
Please equip the proper ammunition first.
*/
MSG_ERR_ATTACK_ARROW = 0xf2,
-/*20031028 to 20180621
+/*20031028 to 20180704
중량과다로 공격ì´ë‚˜ ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't attack or use skills because you've exceeded the Weight Limit.
*/
MSG_ERR_ATTACK_WEIGHT = 0xf3,
-/*20031028 to 20180621
+/*20031028 to 20180704
중량과다로 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use skills because you've exceeded the Weight Limit.
*/
MSG_ERR_SKILL_WEIGHT = 0xf4,
-/*20031028 to 20180621
+/*20031028 to 20180704
í™”ì‚´ì´ ìž¥ì°©ë˜ì—ˆìŠµë‹ˆë‹¤.
Ammunition has been equipped.
*/
MSG_MSG_ARROW_EQUIPMENT_SUCCESS = 0xf5,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë ˆë“œì ¬ìŠ¤í†¤ì´ í•„ìš”í•©ë‹ˆë‹¤.
Red Gemstone required.
*/
MSG_NEED_REDJAMSTONE = 0xf6,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¸”ë£¨ì ¬ìŠ¤í†¤ì´ í•„ìš”í•©ë‹ˆë‹¤.
Blue Gemstone required.
*/
MSG_NEED_BLUEJAMSTONE = 0xf7,
-/*20031028 to 20180621
+/*20031028 to 20180704
힘 파ë¼ë©”í„°
Strength
*/
MSG_DESC_STR = 0xf8,
-/*20031028 to 20180621
+/*20031028 to 20180704
민첩성 파ë¼ë©”í„°
Agility
*/
MSG_DESC_AGI = 0xf9,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì²´ë ¥ 파ë¼ë©”í„°
Vitality
*/
MSG_DESC_VIT = 0xfa,
-/*20031028 to 20180621
+/*20031028 to 20180704
지력 파ë¼ë©”í„°
Intelligence
*/
MSG_DESC_INT = 0xfb,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì†ìž¬ì£¼ 파ë¼ë©”í„°
Dexterity
*/
MSG_DESC_DEX = 0xfc,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìš´ 파ë¼ë©”í„°
Luck
*/
MSG_DESC_LUK = 0xfd,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격력
Hit Point
*/
MSG_DESC_ATK = 0xfe,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°©ì–´ë ¥
Defence Rate
*/
MSG_DESC_DEF = 0xff,
-/*20031028 to 20180621
+/*20031028 to 20180704
명중률
Accuracy
*/
MSG_DESC_HIT = 0x100,
-/*20031028 to 20180621
+/*20031028 to 20180704
필살공격률
Critical Attack
*/
MSG_DESC_CRI = 0x101,
-/*20031028 to 20180621
+/*20031028 to 20180704
소ì†ê¸¸ë“œ
Affiliated Guild
*/
MSG_DESC_GUILD = 0x102,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê° íŒŒë¼ë©”í„° ë ˆë²¨ì—…ì— ì‚¬ìš©ë˜ëŠ” í¬ì¸íŠ¸
Points to level up each Parameter
*/
MSG_DESC_POINT = 0x103,
-/*20031028 to 20180621
+/*20031028 to 20180704
마법공격력
Magic Attack
*/
MSG_DESC_MATK = 0x104,
-/*20031028 to 20180621
+/*20031028 to 20180704
마법방어력
Magic Defense
*/
MSG_DESC_MDEF = 0x105,
-/*20031028 to 20180621
+/*20031028 to 20180704
회피율
Dodge
*/
MSG_DESC_FLEE = 0x106,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격스피드
Attack Speed
*/
MSG_DESC_ASPD = 0x107,
-/*20031028 to 20180621
+/*20031028 to 20180704
지역당 수용ì¸ì› 초과로 ì ‘ì†í•  수 없습니다.
Server is jammed due to over population. Please try again shortly.
*/
MSG_PC_OVERFLOW = 0x108,
-/*20031028 to 20180621
+/*20031028 to 20180704
옵션
Option
*/
MSG_OPTIONWND = 0x109,
-/*20031028 to 20180621
+/*20031028 to 20180704
E-MAIL ì¸ì¦ì´ ë˜ì§€ì•Šì•˜ê±°ë‚˜ ë¸”ëŸ­ëœ ê³„ì •ìž…ë‹ˆë‹¤.
Account ID blocked by the Game Master Team.
*/
MSG_ID_EMAIL_CONFIRM_NEEDED = 0x10a,
-/*20031028 to 20180621
+/*20031028 to 20180704
비밀번호가 틀립니다.
Incorrect User ID or Password. Please try again.
*/
MSG_INCORRECT_LOGIN_PASSWORD = 0x10b,
-/*20031028 to 20180621
+/*20031028 to 20180704
머리모양 ì„ íƒ
Choose Hairstyle
*/
MSG_SELECT_HAIR_STYLE = 0x10c,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격력
Hit Point
*/
MSG_ATK = 0x10d,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°©ì–´ë ¥
Defence Rate
*/
MSG_DEF = 0x10e,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격스냅 On
Attack Snap On
*/
MSG_ATTACK_SNAP_ON = 0x10f,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격스냅 Off
Attack Snap Off
*/
MSG_ATTACK_SNAP_OFF = 0x110,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬스냅 On
Skill Snap On
*/
MSG_SKILL_SNAP_ON = 0x111,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬스냅 Off
Skill Snap Off
*/
MSG_SKILL_SNAP_OFF = 0x112,
-/*20031028 to 20180621
+/*20031028 to 20180704
/스냅 or /snap: 몬스터 공격시 스냅 On Off /스킬스냅 or /skillsnap: 스킬로 몬스터 공격시 스냅 On Off /ì•„ì´í…œìŠ¤ëƒ… or /itemsnap: ì•„ì´í…œ 주울때 스냅 On Off
/snap: Turns snap On | Off for fights, /skillsnap: Turns snap On | Off for skills. /itemsnap: Turns snap On | Off for items on the grounds.
*/
MSG_EXPLAIN_SNAP = 0x113,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œìŠ¤ëƒ… On
Item Snap On
*/
MSG_ITEM_SNAP_ON = 0x114,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œìŠ¤ëƒ… Off
Item Snap Off
*/
MSG_ITEM_SNAP_OFF = 0x115,
-/*20031028 to 20180621
+/*20031028 to 20180704
스냅
Snap
*/
MSG_SNAP = 0x116,
-/*20031028 to 20180621
+/*20031028 to 20180704
한가지 ì•„ì´í…œì„ 3만개 ì´ìƒ 가질수 없습니다.
You cannot carry more than 30,000 of one kind of item.
*/
MSG_CANT_GET_ITEM_OVERCOUNT_ONEITEM = 0x117,
-/*20031028 to 20180621
+/*20031028 to 20180704
레벨 30ì´ìƒì˜ ìºë¦­í„°ëŠ” 삭제할 수 없습니다. 삭제를 ì›í•˜ì‹œë©´ 관계ìžì—게 ë¬¸ì˜ í•˜ì„¸ìš”.
You cannot delete a Character with a level greater than 30. If you want to delete the character please contact a Game Master.
*/
MSG_CANT_DELETE_CHARACTER_OVER_30_LEVEL = 0x118,
/*20031028 to 20091208
ì´ì´í…œ êµí™˜ì¤‘ì—는 ì•„ì´í…œì„ 사고 팔 수 없습니다.
-20091215 to 20180621
+20091215 to 20180704
ì•„ì´í…œ êµí™˜ì¤‘ì—는 ì•„ì´í…œì„ 사고 팔 수 없습니다.
You cannot use an NPC shop while in a trade.
*/
MSG_FAIL_BUY_ITEM_ITEM_EXCHANGING = 0x119,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìƒì ëª…
Shop Name
*/
MSG_STALL_NAME = 0x11a,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬목ë¡
Skill Tree
*/
MSG_SKILLLIST = 0x11b,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬í¬ì¸íŠ¸ : %d
Skill Point: %d
*/
MSG_SKILLPOINT = 0x11c,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬사용 실패
Skill has failed.
*/
MSG_USESKILL_FAIL = 0x11d,
-/*20031028 to 20180621
+/*20031028 to 20180704
패시브
Passive
*/
MSG_PASSIVE = 0x11e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°ìž ì·¨ë“
Individual
*/
MSG_EXPDIV1 = 0x11f,
-/*20031028 to 20180621
+/*20031028 to 20180704
균등하게 분배
Shared
*/
MSG_EXPDIV2 = 0x120,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°ìž ì·¨ë“
Individual
*/
MSG_ITEMCOLLECT1 = 0x121,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티 전체 공유
Party Share
*/
MSG_ITEMCOLLECT2 = 0x122,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티 설정
Party Setup
*/
MSG_PARTYSETTING = 0x123,
-/*20031028 to 20180621
+/*20031028 to 20180704
경험치 분배방ì‹
How to share EXP
*/
MSG_HOWEXPDIV = 0x124,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ 수집방ì‹
How to share Items
*/
MSG_HOWITEMCOLLECT = 0x125,
-/*20031028 to 20180621
+/*20031028 to 20180704
파티 리ë”만 설정할 수 있습니다.
Only the Party Leader can change this setting.
*/
MSG_ONLY_PARTYMASTER = 0x126,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ 갯수 안물어보기
Toggle Item Amount.
*/
MSG_NOQUESTION_ITEMCOUNT = 0x127,
-/*20031028 to 20180621
+/*20031028 to 20180704
^ff0000%d^000000 ì´ˆ í›„ì— ìºë¦­í„°ê°€ 지워집니다. 취소 하려면 취소 ë²„íŠ¼ì„ ëˆ„ë¥´ì„¸ìš”.
Character will be deleted after ^ff0000%d^000000 seconds. Press Cancel to quit.
*/
MSG_CHARARATER_DELETE_COUNT = 0x128,
-/*20031028 to 20180621
+/*20031028 to 20180704
êµí™˜í•  수 있는 최대 ì•„ì´í…œ 갯수는 10가지 입니다.
You cannot trade more than 10 types of items per trade.
*/
MSG_MAXEXCHANGE_IS_10_KIND = 0x129,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ì„œë²„를 ì´ìš©í•  수 없는 나ì´ìž…니다.
You are underaged.
*/
MSG_LIMIT_AGE = 0x12a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë©”ì¼ ì£¼ì†Œë¥¼ 입력하세요.
Please enter the deletion password.
*/
MSG_ENTER_EMAIL = 0x12b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë©”ì¼ ì£¼ì†Œ 입력하기
E-mail Address (Case Sensitive).
*/
MSG_ENTER_EMAIL_TOOLTIP = 0x12c,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë©”ì¼ ì£¼ì†Œê°€ 틀려서 ìºë¦­í„°ê°€ ì‚­ì œ ë˜ì§€ 않았습니다.
Character Deletion has failed because you have entered an incorrect e-mail address.
*/
@@ -1555,7 +1555,7 @@ Character Deletion has failed because you have entered an incorrect e-mail addre
주민등ë¡ë²ˆí˜¸ ë’·ìžë¦¬ë¥¼ 입력하세요.
20070618 to 20070622
비밀번호를 í•œ 번 ë” ìž…ë ¥í•´ 주시기 ë°”ëžë‹ˆë‹¤.
-20070704 to 20180621
+20070704 to 20180704
계정 비밀번호를 입력하세요.
Enter Second Serial Cord of your Social Security number.
*/
@@ -1564,1781 +1564,1781 @@ Enter Second Serial Cord of your Social Security number.
주민등ë¡ë²ˆí˜¸ ë’·ìžë¦¬ê°€ 틀려서 ìºë¦­í„°ê°€ ì‚­ì œ ë˜ì§€ 않았습니다.
20070618 to 20070622
비밀번호가 맞지 ì•Šì•„ ìºë¦­í„°ê°€ ì‚­ì œ ë˜ì§€ 않았습니다.
-20070704 to 20180621
+20070704 to 20180704
비밀번호가 틀려서 ìºë¦­í„°ê°€ ì‚­ì œ ë˜ì§€ 않았습니다.
Character Deletion has failed because you have entered an incorrect SSN.
*/
MSG_CANNOT_DELETE_CHARACTER_PEOPLE_REG_NUMBER = 0x12f,
-/*20031028 to 20180621
+/*20031028 to 20180704
í•œë²ˆì— 15가지 ì´ìƒì˜ ì•„ì´í…œì„ 팔 수 없습니다.
You can't sell more than 15 types of Items at one time.
*/
MSG_CANT_SELL_OVER_15 = 0x130,
-/*20031028 to 20180621
+/*20031028 to 20180704
나ì´ì œí•œ ë•Œë¬¸ì— ì´ê³„정으로 ì´ì„œë²„ì— ì ‘ì†í•  수 없습니다.
The age limit from commandment tables cannot connect to this server.
*/
MSG_UNDER_AGE = 0x131,
-/*20031028 to 20180621
+/*20031028 to 20180704
무게가 50 í¼ì„¼íŠ¸ ì´ìƒì¼ë•ŒëŠ” HP SPê°€ ìžì—°ì ìœ¼ë¡œ íšŒë³µì´ ë˜ì§€ 않습니다.
HP/SP will not be restored when your carried weight is over 50% of the Weight Limit.
*/
MSG_NO_RECOVER_OVERWEIGHT = 0x132,
-/*20031028 to 20180621
+/*20031028 to 20180704
무게가 90 í¼ì„¼íŠ¸ ì´ìƒì¼ë•ŒëŠ” 공격과 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use Skills or Attack while your carried weight is over 90% of your Weight Limit.
*/
MSG_NO_ATTACK_OVERWEIGHT = 0x133,
-/*20031028 to 20180621
+/*20031028 to 20180704
HP SPê°€ ìžì—°ì ìœ¼ë¡œ íšŒë³µì´ ê°€ëŠ¥í•œ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Your HP/SP are now being restored naturally.
*/
MSG_NO_RECOVER_OVERWEIGHT_RELEASED = 0x134,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격과 ìŠ¤í‚¬ì´ ê°€ëŠ¥í•œ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Attack and Skills are now available.
*/
MSG_NO_ATTACK_OVERWEIGHT_RELEASED = 0x135,
-/*20031028 to 20180621
+/*20031028 to 20180704
서버 ì ê²€ì¤‘입니다.
Your Game's Exe File is not the latest version.
*/
MSG_INVALID_VERSION = 0x136,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œì´ ëª¨ë‘ íŒ”ë ¸ìŠµë‹ˆë‹¤.
Items are sold out.
*/
MSG_ITEM_IS_SOLD_OUT = 0x137,
-/*20031028 to 20180621
+/*20031028 to 20180704
채팅내용 파ì¼ë¡œ 저장하기
Save Chat as Text File
*/
MSG_WRITE_CHAT_TO_FILE = 0x138,
-/*20031028 to 20180621
+/*20031028 to 20180704
/갈무리 or /savechat : 채팅 ë‚´ìš© 파ì¼ë¡œ 저장하기.
/savechat: Save a Chat Log
*/
MSG_EXPLAIN_SAVE_CHAT = 0x139,
-/*20031028 to 20180621
+/*20031028 to 20180704
계정 만들기
Register
*/
MSG_MAKEACCOUNT = 0x13a,
-/*20031028 to 20180621
+/*20031028 to 20180704
수신거부하기
Reject Whispering
*/
MSG_REQ_EX_LIST = 0x13b,
-/*20031028 to 20180621
+/*20031028 to 20180704
수신거부해제하기
Allow Whispering
*/
MSG_REQ_IN = 0x13c,
-/*20031028 to 20180621
+/*20031028 to 20180704
미스표시 On
Shows ''Miss''
*/
MSG_MISS_EFFECT_ON = 0x13d,
-/*20031028 to 20180621
+/*20031028 to 20180704
미스표시 Off
Shows ''Miss''
*/
MSG_MISS_EFFECT_OFF = 0x13e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¹´ë©”ë¼ê³ ì • On
Camera Zooming On
*/
MSG_FIXED_CAMERA_ON = 0x13f,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¹´ë©”ë¼ê³ ì • Off
Camera Zooming Off
*/
MSG_FIXED_CAMERA_OFF = 0x140,
-/*20031028 to 20180621
+/*20031028 to 20180704
/camera : 플레ì´ì–´ì—게 ì¹´ë©”ë¼ê³ ì • On Off /miss : 미스ì´íŽ™íŠ¸ On Off
/camera: Camera Zooming On or Off. /miss: Toggle ''Miss'' display
*/
MSG_EXPLAIN_CAMERA_MISS = 0x141,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬정보보기
View Skill Info
*/
MSG_SEE_INFORMATION_OF_SKILL = 0x142,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬ì´ë¦„바꾸기
Change Skill
*/
MSG_CHANGE_SKILL_NAME = 0x143,
-/*20031028 to 20180621
+/*20031028 to 20180704
스프ë¼ì´íŠ¸ í•´ìƒë„
Sprite Resolution
*/
MSG_SPRITE_RESOLUTION = 0x144,
-/*20031028 to 20180621
+/*20031028 to 20180704
í…ìŠ¤ì³ í•´ìƒë„
Texture Resolution
*/
MSG_TEXTURE_RESOLUTION = 0x145,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë””í…Œì¼ ì¡°ì •
Arrange Detail
*/
MSG_DETAILLEVELWND = 0x146,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s Zeny íšë“
You got %s Zeny
*/
MSG_GET_ZENY = 0x147,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드명
Guild Name
*/
MSG_GUILDNAME = 0x148,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드레벨
Guild lvl
*/
MSG_GUILDLEVEL = 0x149,
-/*20031028 to 20180621
+/*20031028 to 20180704
마스터ì´ë¦„
ClanMaster Name
*/
MSG_GUILD_MASTER_NAME = 0x14a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¡°í•©ì›ìˆ˜
Number of Members
*/
MSG_GUILD_NUM_MEMBER = 0x14b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¡°í•©ì› í‰ê· ë ˆë²¨
Avg.lvl of Guildsmen
*/
MSG_GUILD_AVG_MEMBER_LEVEL = 0x14c,
-/*20031028 to 20180621
+/*20031028 to 20180704
관리ì˜ì§€
Castles Owned
*/
MSG_GUILD_MANAGE_LAND = 0x14d,
-/*20031028 to 20180621
+/*20031028 to 20180704
성향
Tendency
*/
MSG_GUILD_FAIR = 0x14e,
-/*20031028 to 20180621
+/*20031028 to 20180704
경험치
EXP
*/
MSG_GUILD_EXP = 0x14f,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드엠블렘
Emblem
*/
MSG_GUILD_EMBLEM = 0x150,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드ìƒë‚©í¬ì¸íŠ¸
Tax Point
*/
MSG_GUILD_POINT = 0x151,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë™ë§¹ê¸¸ë“œ
Alliances
*/
MSG_ALLY_GUILD = 0x152,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì ëŒ€ê¸¸ë“œ
Antagonists
*/
MSG_HOSTILITY_GUILD = 0x153,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드정보
Guild Info
*/
MSG_GUILDINFOMANAGE = 0x154,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¡°í•©ì›ì •ë³´
Guildsmen Info
*/
MSG_GUILDMEMBERMANAGE = 0x155,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì§ìœ„설정
Position
*/
MSG_GUILDPOSITIONMANAGE = 0x156,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드스킬
Guild Skill
*/
MSG_GUILDSKILL = 0x157,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¶”ë°©ìž ë¦¬ìŠ¤íŠ¸
Expel History
*/
MSG_GUILDBANISHEDMEMBER = 0x158,
-/*20031028 to 20180621
+/*20031028 to 20180704
공지사항
Guild Notice
*/
MSG_GUILDNOTICE = 0x159,
-/*20031028 to 20180621
+/*20031028 to 20180704
전체길드 리스트
Entire Guild List
*/
MSG_GUILDTOTALINFO = 0x15a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê·“ë§ ë¦¬ìŠ¤íŠ¸
Whispering List
*/
MSG_WHISPERLISTWND = 0x15b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê·“ë§ì°½ 열기
Open Whispering Window
*/
MSG_OPENWHISPERLISTWND = 0x15c,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê·“ë§ ë¦¬ìŠ¤íŠ¸ ì°½ 여는법 : [Alt] + [H] 를 누르면 ê·“ë§ ë¦¬ìŠ¤íŠ¸ ì°½ì´ ì—´ë¦½ë‹ˆë‹¤.
How to Open Whispering List: Press [Alt] + [H]
*/
MSG_EXPLAIN_WHISPER_LIST_WND = 0x15d,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìžë™ìœ¼ë¡œ ê·“ë§ì°½ 열기
Open Whispering List Automatically
*/
MSG_AUTOOPENWHISPERLISTWND = 0x15e,
-/*20031028 to 20180621
+/*20031028 to 20180704
지우기
Delete
*/
MSG_DELETE = 0x15f,
-/*20031028 to 20180621
+/*20031028 to 20180704
다ìŒë¶€í„° 열리지 ì•ŠìŒ
Close since next
*/
MSG_DONTOPEN = 0x160,
-/*20031028 to 20180621
+/*20031028 to 20180704
마지막으로 ì ‘ì†í•œ 시간
Last Log-in Time
*/
MSG_LAST_LOGIN_TIME = 0x161,
-/*20031028 to 20180621
+/*20031028 to 20180704
마지막으로 ì ‘ì†í•œ IP
Last Log-in IP
*/
MSG_LAST_LOGIN_IP = 0x162,
-/*20031028 to 20180621
+/*20031028 to 20180704
친구 설정
Friend Setup
*/
MSG_FRIEND_SETTING = 0x163,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì •ë§ ì§€ìš°ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure that you want to delete?
*/
MSG_DO_YOU_REALLY_WANT_DELETE = 0x164,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì •ë§ íƒˆí‡´í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure that you want to leave?
*/
MSG_DO_YOU_REALLY_WANT_LEAVE = 0x165,
-/*20031028 to 20180621
+/*20031028 to 20180704
친구로 등ë¡í•˜ê¸°
Register as a Friend
*/
MSG_ADD_TO_FRIEND_CHAR_LIST = 0x166,
-/*20031028 to 20180621
+/*20031028 to 20180704
친구ì¼ë•Œ ìžë™ìœ¼ë¡œ 1:1ì°½ 열기
Open 1:1 Chat between Friends
*/
MSG_AUTOOPENWHISPERLISTWND_FRIEND = 0x167,
-/*20031028 to 20180621
+/*20031028 to 20180704
1:1창 열기
Open 1:1 Chat
*/
MSG_OPEN_1ON1_WINDOW = 0x168,
-/*20031028 to 20180621
+/*20031028 to 20180704
친구가 ì•„ë‹ë•Œ ìžë™ìœ¼ë¡œ 1:1ì°½ 열기
Open 1:1 Chat between Strangers
*/
MSG_AUTOOPEN_1ON1_WINDOW = 0x169,
-/*20031028 to 20180621
+/*20031028 to 20180704
1:1창 열릴때 소리로 알림
Alarm when you recieve a 1:1 Chat
*/
MSG_WHISPER_OPEN_SOUND = 0x16a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì •ë§ ì œëª…ì‹œí‚¤ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure that you want to expel?
*/
MSG_DO_YOU_REALLY_WANT_EXPEL = 0x16b,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s ë‹˜ì´ ê¸¸ë“œë¥¼ 탈퇴했습니다.
%s has withdrawn from the guild.
*/
MSG_USER_LEFT_GUILD = 0x16c,
-/*20031028 to 20180621
+/*20031028 to 20180704
탈퇴사유 : %s
Secession Reason: %s
*/
MSG_REASON_LEAVE_GUILD = 0x16d,
/*20031028 to 20120202
길드 해체 실패
-20120207 to 20180621
+20120207 to 20180704
ê¸¸ë“œëª…ì´ ì¼ì¹˜í•˜ì§€ 않습니다
You have failed to disband the guild.
*/
MSG_DISORGANIZE_GUILD_FAILURE = 0x16e,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드해체사유 : %s
Disband Reason: %s
*/
MSG_DISORGANIZATION_REASON = 0x16f,
-/*20031028 to 20180621
+/*20031028 to 20180704
해당 ê³„ì •ì€ ì‚­ì œëœ ì•„ì´ë”” 입니다.
This ID has been removed.
*/
MSG_DELETED_ACCOUNT = 0x170,
-/*20031028 to 20180621
+/*20031028 to 20180704
íŒë§¤ê°€ :
Price:
*/
MSG_SELLPRICE = 0x171,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s ë‹˜ì´ ê¸¸ë“œì—ì„œ 추방ë˜ì—ˆìŠµë‹ˆë‹¤.
%s has been expelled from our guild.
*/
MSG_BAN_GUILD = 0x172,
-/*20031028 to 20180621
+/*20031028 to 20180704
추방사유 : %s
Expulsion Reason: %s
*/
MSG_REASON_BAN_GUILD = 0x173,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œì„ ì°©ìš©í•  수 없습니다.
You can't put this item on.
*/
MSG_CAN_NOT_EQUIP_ITEM = 0x174,
-/*20031028 to 20180621
+/*20031028 to 20180704
íŒŒí‹°ì„¤ì •ì„ ë³€ê²½í•  수 없습니다.
You can't modify Party Setup.
*/
MSG_PARTYSETTING_CHANGE_IMPOSSIBLE = 0x175,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드가 만들어 졌습니다.
Guild has been Created.
*/
MSG_GUILD_MAKE_SUCCESS = 0x176,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¯¸ ê¸¸ë“œì— ì†í•´ìžˆìŠµë‹ˆë‹¤.
You are already in a Guild.
*/
MSG_GUILD_MAKE_ALREADY_MEMBER = 0x177,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°™ì€ì´ë¦„ì˜ ê¸¸ë“œê°€ 존재합니다.
That Guild Name already exists.
*/
MSG_GUILD_MAKE_GUILD_EXIST = 0x178,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드ì—ì„œ 초청 메시지가 왔습니다. 가입하겠습니까?
Guild has sent you an invitation. Would you like to join this Guild?
*/
MSG_SUGGEST_JOIN_GUILD = 0x179,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë‹¤ë¥¸ê¸¸ë“œì— ê°€ìž…ë˜ì–´ 있습니다.
He/She is already in a Guild.
*/
MSG_CHARACTER_IS_ALREADY_IN_GUILD = 0x17a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê¸¸ë“œê°€ìž…ì„ ê±°ì ˆ 했습니다.
Offer Rejected
*/
MSG_CHARACTER_REJECT_JOIN_GUILD = 0x17b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê¸¸ë“œê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
Offer Accepted
*/
MSG_CHARACTER_ACCEPT_JOIN_GUILD = 0x17c,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드정ì›ì„ 초과했습니다.
Your Guild is Full.
*/
MSG_TOO_MANY_PEOPLE_IN_GUILD = 0x17d,
-/*20031028 to 20180621
+/*20031028 to 20180704
(%s)님 ê¸¸ë“œì— ê°€ìž…ìš”ì²­
Send (%s) a Guild invitation
*/
MSG_REQ_JOIN_GUILD = 0x17e,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬 ë ˆë²¨ì´ ëª¨ìžë¼ì„œ 매너í¬ì¸íŠ¸ë¥¼ 줄 수 없습니다.
You haven't learned enough skills for aligning.
*/
MSG_NOT_ENOUGH_FOR_MANNER_POINT = 0x17f,
-/*20031028 to 20180621
+/*20031028 to 20180704
매너 í¬ì¸íŠ¸ 주기 성공
Aligning completed.
*/
MSG_GIVING_MANNER_POINT_SUCCESS = 0x180,
-/*20031028 to 20180621
+/*20031028 to 20180704
오늘 ì´ë¯¸ 사용했습니다.
You already spent your point for today.
*/
MSG_YOU_USE_TODAY_ALREADY = 0x181,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ìºë¦­í„°ì—게 지급한지 í•œë‹¬ì´ ì§€ë‚˜ì§€ 않았습니다.
Hasn't been a month yet since you aligned this person.
*/
MSG_ONE_MONTH_NOT_PASSED = 0x182,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s 님으로부터 플러스 매너 í¬ì¸íŠ¸ë¥¼ 받았습니다.
Remember, Spamming isn't nice.
*/
MSG_RECEIVE_PLUS_MANNER_POINT = 0x183,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s 님으로부터 마ì´ë„ˆìŠ¤ 매너 í¬ì¸íŠ¸ë¥¼ 받았습니다.
Please refrain from ill-mannered conduct, thank you.
*/
MSG_RECEIVE_MINUS_MANNER_POINT = 0x184,
-/*20031028 to 20180621
+/*20031028 to 20180704
채팅 금지 시간 줄ì´ê¸°(풀기)
Align with a Good Point
*/
MSG_GIVE_PLUS_MANNER_POINT = 0x185,
-/*20031028 to 20180621
+/*20031028 to 20180704
채팅 금지 시간 늘ì´ê¸°(걸기)
Align with a Bad Point
*/
MSG_GIVE_MINUS_MANNER_POINT = 0x186,
-/*20031028 to 20180621
+/*20031028 to 20180704
(%s)ë‹˜ê³¼ì˜ ê±°ëž˜ìš”ì²­
Request a deal with (%s)
*/
MSG_REQ_DEAL_WITH2 = 0x187,
-/*20031028 to 20180621
+/*20031028 to 20180704
(%s)님 íŒŒí‹°ì— ê°€ìž…ìš”ì²­
Ask (%s) to join your party
*/
MSG_REQ_JOIN_PARTY2 = 0x188,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드ì—ì„œ ë™ë§¹ìš”ì²­ 메시지가 왔습니다. ë™ë§¹í•˜ê² ìŠµë‹ˆê¹Œ?
Guild is asking you to agree to an Alliance with them. Do you accept?
*/
MSG_SUGGEST_ALLY_GUILD = 0x189,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¯¸ ë™ë§¹ë˜ì–´ 있습니다.
This Guild is already your Ally.
*/
MSG_REQALLYGUILD_ALREADY_ALLIED = 0x18a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë™ë§¹ì„ ê±°ì ˆ 했습니다.
You reject the offer
*/
MSG_REQALLYGUILD_REJECT = 0x18b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë™ë§¹ì„ ìˆ˜ë½ í–ˆìŠµë‹ˆë‹¤.
You accept the offer
*/
MSG_REQALLYGUILD_ACCEPT = 0x18c,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìƒëŒ€ê¸¸ë“œì˜ ë™ë§¹ê¸¸ë“œì˜ 수가 초과 ë˜ì—ˆìŠµë‹ˆë‹¤.
They have too many Alliances.
*/
MSG_REQALLYGUILD_OVERSIZE = 0x18d,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê¸¸ë“œì˜ ë™ë§¹ê¸¸ë“œì˜ 수가 초과 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have too many Alliances.
*/
MSG_REQALLYMYGUILD_OVERSIZE = 0x18e,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드 ë™ë§¹ 요청
Set this guild as an Alliance
*/
MSG_REQ_ALLY_GUILD = 0x18f,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드가 성공ì ìœ¼ë¡œ í•´ì²´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Guild was successfully disbanded.
*/
MSG_DISORGANIZE_GUILD_SUCCESS = 0x190,
-/*20031028 to 20180621
+/*20031028 to 20180704
주민등ë¡ë²ˆí˜¸ê°€ 틀려서 길드가 í•´ì²´ë˜ì§€ 않았습니다.
You have failed to disband the guild due to your incorrect SSN.
*/
MSG_DISORGANIZE_GUILD_INVALIDKEY = 0x191,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드맴버가 존재해서 길드가 í•´ì²´ë˜ì§€ 않았습니다.
You have failed to disband the guild because there are guildsmen still present.
*/
MSG_DISORGANIZE_GUILD_MEMBEREXIST = 0x192,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드 ì ëŒ€ 요청
Set this guild as an Antagonist
*/
MSG_REQ_HOSTILE_GUILD = 0x193,
-/*20031028 to 20180621
+/*20031028 to 20180704
머리색깔 ì„ íƒ
Choose Hair Color
*/
MSG_SELECT_HAIR_COLOR = 0x194,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드결성시 필요한 ì•„ì´í…œì´ 없습니다.
You don't have necessary item to create a Guild.
*/
MSG_GUILD_MAKE_GUILD_NONE_ITEM = 0x195,
-/*20031028 to 20180621
+/*20031028 to 20180704
몬스터 정보
Monster Info
*/
MSG_MONSTER_INFO_WINDOW = 0x196,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¦„
Name
*/
MSG_NAME = 0x197,
-/*20031028 to 20180621
+/*20031028 to 20180704
레벨
Level
*/
MSG_LEVEL = 0x198,
-/*20031028 to 20180621
+/*20031028 to 20180704
HP
*/
MSG_HP = 0x199,
-/*20031028 to 20180621
+/*20031028 to 20180704
í¬ê¸°
Size
*/
MSG_SIZE = 0x19a,
-/*20031028 to 20180621
+/*20031028 to 20180704
종족
Type
*/
MSG_RACETYPE = 0x19b,
-/*20031028 to 20180621
+/*20031028 to 20180704
MDEF
*/
MSG_MDEFPOWER = 0x19c,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì†ì„±
Attribute
*/
MSG_PROPERTY = 0x19d,
-/*20031028 to 20180621
+/*20031028 to 20180704
ç„¡
Neutral
*/
MSG_PROPERTY_NEUTURAL = 0x19e,
-/*20031028 to 20180621
+/*20031028 to 20180704
æ°´
Water
*/
MSG_PROPERTY_WATER = 0x19f,
-/*20031028 to 20180621
+/*20031028 to 20180704
地
Earth
*/
MSG_PROPERTY_EARTH = 0x1a0,
-/*20031028 to 20180621
+/*20031028 to 20180704
ç«
Fire
*/
MSG_PROPERTY_FIRE = 0x1a1,
-/*20031028 to 20180621
+/*20031028 to 20180704
風
Wind
*/
MSG_PROPERTY_WIND = 0x1a2,
-/*20031028 to 20180621
+/*20031028 to 20180704
毒
Poison
*/
MSG_PROPERTY_POISON = 0x1a3,
-/*20031028 to 20180621
+/*20031028 to 20180704
è–
Holy
*/
MSG_PROPERTY_SAINT = 0x1a4,
-/*20031028 to 20180621
+/*20031028 to 20180704
æš—
Shadow
*/
MSG_PROPERTY_DARK = 0x1a5,
-/*20031028 to 20180621
+/*20031028 to 20180704
念
Ghost
*/
MSG_PROPERTY_MENTAL = 0x1a6,
-/*20031028 to 20180621
+/*20031028 to 20180704
æ­»
Undead
*/
MSG_PROPERTY_UNDEAD = 0x1a7,
-/*20031028 to 20180621
+/*20031028 to 20180704
현재는 ì•„ì´í…œì„ 만들 수 없습니다.
You can't create items yet.
*/
MSG_CANT_MAKE_ITEM = 0x1a8,
-/*20031028 to 20180621
+/*20031028 to 20180704
제조 목ë¡
Item List you can craft
*/
MSG_MAKE_LIST = 0x1a9,
-/*20031028 to 20180621
+/*20031028 to 20180704
만들기
Create
*/
MSG_MAKE_TARGET = 0x1aa,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì— í•„ìš”í•œ 재료:
's materials
*/
MSG_REQUIRE_FOR_MAKE_TARGET = 0x1ab,
-/*20031028 to 20180621
+/*20031028 to 20180704
만들기 실패
item creation failed.
*/
MSG_MAKE_TARGET_FAIL = 0x1ac,
-/*20031028 to 20180621
+/*20031028 to 20180704
만들기 성공
item created successfully.
*/
MSG_MAKE_TARGET_SUCCEESS = 0x1ad,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s 만들기를 실패하였습니다.
item creation failed.
*/
MSG_MAKE_TARGET_FAIL_MSG = 0x1ae,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s 만들기를 성공했습니다.
item created successfully.
*/
MSG_MAKE_TARGET_SUCCEESS_MSG = 0x1af,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
You are not the required lvl.
*/
MSG_NOT_ENOUGH_LEVEL = 0x1b0,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë ˆë²¨ì´ ë„ˆë¬´ 높습니다.
Too high lvl for this job.
*/
MSG_TOO_HIGH_LEVEL = 0x1b1,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì§ì—…ì´ ì í•©í•˜ì§€ 않습니다.
Not the suitable job for this type of work.
*/
MSG_NOT_ACCEPTABLE_JOB = 0x1b2,
-/*20031028 to 20180621
+/*20031028 to 20180704
토키 박스 트랩 메세지
Record a message in the Talkie Box
*/
MSG_TALKBOX_WINDOW = 0x1b3,
-/*20031028 to 20180621
+/*20031028 to 20180704
기ë¡í•  메세지를 입력하시기 ë°”ëžë‹ˆë‹¤.
Please type a message for the Talkie Box
*/
MSG_TALKBOX_WINDOW_MSG = 0x1b4,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드ì—게 보냄
Send to Guild
*/
MSG_SEND_TO_GUILD = 0x1b5,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê²°ì œëœ ê³„ì •ì´ ì•„ë‹™ë‹ˆë‹¤. ê²°ì œ 페ì´ì§€ë¡œ ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You didn't pay for this ID. Would you like to pay for it now?
*/
MSG_NOT_SETTLED = 0x1b6,
-/*20031028 to 20180621
+/*20031028 to 20180704
서버가 혼잡한 관계로 잠시후 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Server is jammed due to overpopulation. Please try again after few minutes.
*/
MSG_ACCOUNT_BUSY = 0x1b7,
-/*20031028 to 20180621
+/*20031028 to 20180704
지난 ì ‘ì† ì •ë³´ê°€ 남아 있습니다. 30ì´ˆì •ë„ ì§€ë‚œë’¤ì— ë‹¤ì‹œ ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Server still recognizes your last log-in. Please try again after a few minutes.
*/
MSG_INFORMATION_REMAINED = 0x1b8,
-/*20031028 to 20180621
+/*20031028 to 20180704
매 풀어주기
Release Falcon
*/
MSG_BIRDOFF = 0x1b9,
-/*20031028 to 20180621
+/*20031028 to 20180704
페코페코 내리기
Dismount
*/
MSG_CHIKENOFF = 0x1ba,
-/*20031028 to 20180621
+/*20031028 to 20180704
å°
Small
*/
MSG_SIZE_SMALL = 0x1bb,
-/*20031028 to 20180621
+/*20031028 to 20180704
中
Med
*/
MSG_SIZE_MIDDLE = 0x1bc,
-/*20031028 to 20180621
+/*20031028 to 20180704
大
Big
*/
MSG_SIZE_BIG = 0x1bd,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë”블
Double
*/
MSG_DOUBLE = 0x1be,
-/*20031028 to 20180621
+/*20031028 to 20180704
트리플
Triple
*/
MSG_TRIPLE = 0x1bf,
-/*20031028 to 20180621
+/*20031028 to 20180704
쿼드로플
Quadruple
*/
MSG_QUADROPLE = 0x1c0,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s 까지 로그ì¸ì„ 금지하고 있습니다.
You are prohibited to log in until %s.
*/
MSG_LOGIN_REFUSE_BLOCKED_UNTIL = 0x1c1,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì˜
's
*/
MSG_MANUFACTURED_NORMAL_ITEM = 0x1c2,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì˜ íŒŒì´ì–´
's Fire
*/
MSG_MANUFACTURED_FIRE_ITEM = 0x1c3,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì˜ ì•„ì´ìŠ¤
's Ice
*/
MSG_MANUFACTURED_ICE_ITEM = 0x1c4,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì˜ ìœˆë“œ
's Wind
*/
MSG_MANUFACTURED_WIND_ITEM = 0x1c5,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì˜ ì–´ìŠ¤
's Earth
*/
MSG_MANUFACTURED_EARTH_ITEM = 0x1c6,
-/*20031028 to 20180621
+/*20031028 to 20180704
211.239.161.246
38.144.194.2
*/
MSG_ACCOUNT_ADDRESS = 0x1c7,
-/*20031028 to 20180621
+/*20031028 to 20180704
6900
*/
MSG_ACCOUNT_PORT = 0x1c8,
/*20031028 to 20171206
http://www.ragnarok.co.kr
-20171213 to 20180621
+20171213 to 20180704
http://roz.gnjoy.com/
http://www.ragnarok.co.kr
*/
MSG_REGISTRATION_WEB_URL = 0x1c9,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s ì‚¬ìš©ìž ê°•ì œ 종료
Kill %s
*/
MSG_BAN_USER = 0x1ca,
-/*20031028 to 20180621
+/*20031028 to 20180704
무지쎈
Very Strong
*/
MSG_ONE_STARPIECE = 0x1cb,
-/*20031028 to 20180621
+/*20031028 to 20180704
무지무지쎈
Very Very Strong
*/
MSG_TWO_STARPIECE = 0x1cc,
/*20031028 to 20031028
무지무지무지쎈
-20031103 to 20180621
+20031103 to 20180704
무무무쎈
Very Very Very Strong
*/
MSG_THREE_STARPIECE = 0x1cd,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드 추방 사유
The Reason of Expulsion
*/
MSG_GUILD_KICK_REASON = 0x1ce,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격 ì†ë„ê°€ ì¦ê°€í–ˆìŠµë‹ˆë‹¤.
Attack Speed is up.
*/
MSG_INCATTACKSPEED = 0x1cf,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격 ì†ë„ê°€ ê°ì†Œí–ˆìŠµë‹ˆë‹¤.
Attack Speed is down.
*/
MSG_DECATTACKSPEED = 0x1d0,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¬´ê¸°ì˜ ê³µê²©ë ¥ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon Damage is improved.
*/
MSG_INCWEAPONATTACK = 0x1d1,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¬´ê¸°ì˜ ê³µê²©ë ¥ì´ ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon Damage is reduced.
*/
MSG_DECWEAPONATTACK = 0x1d2,
-/*20031028 to 20180621
+/*20031028 to 20180704
시전 딜레ì´ê°€ 줄었습니다.
Cast Delay is reduced.
*/
MSG_FASTPREDELAY = 0x1d3,
-/*20031028 to 20180621
+/*20031028 to 20180704
시전 딜레ì´ê°€ ì •ìƒìœ¼ë¡œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Cast Delay has returned to normal.
*/
MSG_NORMALPREDELAY = 0x1d4,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¬´ê¸°ì— ë…ì†ì„±ì´ 부여ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon is temporarily enchanted with Poison.
*/
MSG_WEAPONPROPERTYPOISON = 0x1d5,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¬´ê¸°ì— ì„±ì†ì„±ì´ 부여ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon is temporarily enchanted with an elemental property.
*/
MSG_WEAPONPROPERTYSAINT = 0x1d6,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¬´ê¸°ì˜ ì›ëž˜ì†ì„±ì´ ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon has changed back to normal.
*/
MSG_WEAPONPROPERTYORIGINAL = 0x1d7,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°©ì–´êµ¬ì— ì„±ì†ì„±ì´ 부여ë˜ì—ˆìŠµë‹ˆë‹¤.
Armor has been enchanted with the Holy Ghost.
*/
MSG_ARMORPROPERTYSAINT = 0x1d8,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°©ì–´êµ¬ì˜ ì›ëž˜ì†ì„±ì´ ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
Armor has changed back to normal.
*/
MSG_ARMORPROPERTYORIGINAL = 0x1d9,
-/*20031028 to 20180621
+/*20031028 to 20180704
배리어 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Barrier Formed.
*/
MSG_BARRIOR = 0x1da,
-/*20031028 to 20180621
+/*20031028 to 20180704
배리어 ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Barrier Canceled.
*/
MSG_DISAPPEARBARRIOR = 0x1db,
-/*20031028 to 20180621
+/*20031028 to 20180704
소형, 중형, 대형 몬스터ì—게 100% ê³µê²©ë ¥ì„ ì¤ë‹ˆë‹¤.
Weapon Perfection Initiated.
*/
MSG_PERFECTDAMAGE = 0x1dc,
-/*20031028 to 20180621
+/*20031028 to 20180704
웨í°í¼íŽ™ì…˜ 모드가 í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon perfection Canceled.
*/
MSG_DISAPPEARPERFECTDAMAGE = 0x1dd,
-/*20031028 to 20180621
+/*20031028 to 20180704
무기가 íŒŒê´´ë  ê°€ëŠ¥ì„±ì´ ë†’ì•„ì§„ 대신 ë¬´ê¸°ì˜ ê³µê²©ë ¥ì´ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
Power-Thrust Initiated.
*/
MSG_OVERTHRUSTING = 0x1de,
/*20031028 to 20050118
오버트러스팅 ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
-20050124 to 20180621
+20050124 to 20180704
오버트러스트 ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Power-Thrust Canceled.
*/
MSG_DISAPPEAROVERTHRUSTING = 0x1df,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¬´ê¸°ì˜ ìµœëŒ€ ì„±ëŠ¥ì„ ëŒì–´ëƒ…니다.
Maximize-Power Initiated.
*/
MSG_MAXIMIZE = 0x1e0,
-/*20031028 to 20180621
+/*20031028 to 20180704
맥시마ì´ì¦ˆ ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Maximize-Power Canceled.
*/
MSG_DISAPPEARMAXIMIZE = 0x1e1,
-/*20031028 to 20180621
+/*20031028 to 20180704
[신서버]
[New Server]
*/
MSG_SERVER_PROPERTY_NEW = 0x1e2,
-/*20031028 to 20180621
+/*20031028 to 20180704
(%d 명)
(%d players)
*/
MSG_SERVER_USER_COUNT = 0x1e3,
-/*20031028 to 20180621
+/*20031028 to 20180704
(ì ê²€ì¤‘)
(On the maintenance)
*/
MSG_SERVER_INSPECTING = 0x1e4,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드멤버 %së‹˜ì´ ì ‘ì†í•˜ì…¨ìŠµë‹ˆë‹¤.
Guild member %s has connected.
*/
MSG_GUILD_MEMBER_STATUS_ONLINE = 0x1e5,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드멤버 %së‹˜ì´ ì¢…ë£Œí•˜ì…¨ìŠµë‹ˆë‹¤.
Guild member %s has disconnected.
*/
MSG_GUILD_MEMBER_STATUS_OFFLINE = 0x1e6,
-/*20031028 to 20180621
+/*20031028 to 20180704
경험치 %d ì–»ìŒ
You got %d Base EXP.
*/
MSG_GOT_EXPERIENCE_POINT = 0x1e7,
-/*20031028 to 20180621
+/*20031028 to 20180704
잡경험치 %d ì–»ìŒ
You got %d Job EXP.
*/
MSG_GOT_JOB_EXPERIENCE_POINT = 0x1e8,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드ì—ì„œ 탈퇴 했습니다.
You left the guild.
*/
MSG_LEFT_GUILD = 0x1e9,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드ì—ì„œ 추방 당했습니다.
You have been expelled from the Guild.
*/
MSG_BAN_FROM_GUILD = 0x1ea,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ ê°ì • 성공
Item Appraisal has completed successfully.
*/
MSG_ITEM_IDENTIFY_SUCCEESS = 0x1eb,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ ê°ì • 실패
Item appraisal has failed.
*/
MSG_ITEM_IDENTIFY_FAIL = 0x1ec,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ ì¡°í•© 성공
Compounding has completed successfully.
*/
MSG_ITEM_COMPOUNDING_SUCCEESS = 0x1ed,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ ì¡°í•© 실패
Compounding has failed.
*/
MSG_ITEM_COMPOUNDING_FAIL = 0x1ee,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드 ì ëŒ€ 성공
Antagonist has been set.
*/
MSG_HOSTILE_GUILD_SUCCEESS = 0x1ef,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì ëŒ€ 길드수 초과로 길드 ì ëŒ€ 실패
Guild has too many Antagonists.
*/
MSG_TOO_MANY_HOSTILE_GUILD = 0x1f0,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¯¸ ì ëŒ€ 길드 입니다
Already set as an Antagonist
*/
MSG_ALREADY_REGISTERED_HOSTILE_GUILD = 0x1f1,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì œë ¨ì´ ì„±ê³µì ìœ¼ë¡œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Upgrade has been completed successfully.
*/
MSG_ITEM_REFINING_SUCCEESS = 0x1f2,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì œë ¨ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Upgrade has failed.
*/
MSG_ITEM_REFINING_FAIL = 0x1f3,
/*20031028 to 20040311
텔레í¬íŠ¸ 불가능 지역입니다.
-20040315 to 20180621
+20040315 to 20180704
ì´ê³³ì—서는 순간ì´ë™ì´ 불가능합니다.
Unavailable Area to Teleport
*/
MSG_IMPOSSIBLE_TELEPORT_AREA = 0x1f4,
/*20031028 to 20040311
텔레í¬íŠ¸ 가능 지역입니다.
-20040315 to 20180621
+20040315 to 20180704
ì´ ìž¥ì†ŒëŠ” 기억할 수 없습니다.
Unable to memorize this place as Warp Point
*/
MSG_POSSIBLE_TELEPORT_AREA = 0x1f5,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì§€ê¸ˆì€ ì¢…ë£Œí•  수 없습니다.
Please wait 10 seconds before trying to log out.
*/
MSG_CANT_EXIT_NOW = 0x1f6,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì§ìœ„
Position
*/
MSG_POSITION = 0x1f7,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì§ì—…
Job
*/
MSG_JOB = 0x1f8,
-/*20031028 to 20180621
+/*20031028 to 20180704
메모
Note
*/
MSG_MEMO = 0x1f9,
-/*20031028 to 20180621
+/*20031028 to 20180704
기여
Devotion
*/
MSG_CONTRIBUTION = 0x1fa,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìƒë‚©ê²½í—˜ì¹˜
Tax Point
*/
MSG_EXP_CONTIRIBUTION = 0x1fb,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드탈퇴
Leave Guild
*/
MSG_LEAVE_GUILD = 0x1fc,
-/*20031028 to 20180621
+/*20031028 to 20180704
제명시키기
Expel
*/
MSG_EXPEL_GUILD = 0x1fd,
-/*20031028 to 20180621
+/*20031028 to 20180704
서열
Rank
*/
MSG_GRADE = 0x1fe,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì§ìœ„명
Position Title
*/
MSG_POSITION_NAME = 0x1ff,
-/*20031028 to 20180621
+/*20031028 to 20180704
가입권한
Invitation
*/
MSG_JOIN_AUTHORITY = 0x200,
-/*20031028 to 20180621
+/*20031028 to 20180704
처벌권한
Punish
*/
MSG_PENALTY_AUTORITY = 0x201,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìƒë‚©%
Tax %
*/
MSG_CONTRIBUTION_PERCENT = 0x202,
-/*20031028 to 20180621
+/*20031028 to 20180704
제목
Title
*/
MSG_TITLE = 0x203,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë‚´ìš©
For
*/
MSG_CONTENTS = 0x204,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드ì´ë¦„
Guild Name
*/
MSG_GUILD_NAME = 0x205,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드레벨
Guild lvl
*/
MSG_GUILD_LEVEL = 0x206,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¡°í•©ì›ìˆ˜
Number of Members
*/
MSG_GUILD_PEOPLE_COUNT = 0x207,
-/*20031028 to 20180621
+/*20031028 to 20180704
랭킹
Ranking
*/
MSG_RANKING = 0x208,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ ê°ì •
Item Appraisal
*/
MSG_ITEM_IDENTIFY = 0x209,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ ì¡°í•©
Insert Card
*/
MSG_ITEM_COMPOUNDING = 0x20a,
-/*20031028 to 20180621
+/*20031028 to 20180704
탈퇴 사유를 입력해주세요.
Please enter the reason of Secession.
*/
MSG_PLEASE_INPUT_WHY_LEAVING = 0x20b,
-/*20031028 to 20180621
+/*20031028 to 20180704
추방 사유를 입력해주세요.
Please enter the reason of Expulsion.
*/
MSG_PELASE_INPUT_WHY_EXPEL = 0x20c,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìƒì ì„ 닫으세요.
Please close Shop.
*/
MSG_PLEASE_CLOSE_STORE = 0x20d,
-/*20031028 to 20180621
+/*20031028 to 20180704
스킬 ì´ë¦„
Skill
*/
MSG_SKILL_NAME = 0x20e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ ì´ë¦„
Item Name
*/
MSG_ITEM_NAME = 0x20f,
/*20031028 to 20031118
https://pay.ragnarok.co.kr
-20031119 to 20180621
+20031119 to 20180704
https://payment.ragnarok.co.kr
https://pay.ragnarok.co.kr (Billing Web)
*/
MSG_SETTLE_WEB_URL = 0x210,
-/*20031028 to 20180621
+/*20031028 to 20180704
게임방ì—ì„œ 사용가능한 IP개수가 ëª¨ë‘ ì‚¬ìš©ì¤‘ìž…ë‹ˆë‹¤. ê°œì¸ ê³„ì •ìœ¼ë¡œ ê²°ì œ 하시겠습니까?
IP capacity of this Internet Cafe is full. Would you like to pay the personal base?
*/
MSG_BAN_IP_OVERFLOW = 0x211,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê²°ì œì‹œê°„ì´ ë‹¤ë˜ì–´ ê²Œìž„ì„ ì¢…ë£Œí•©ë‹ˆë‹¤.
You are out of available paid playing time. Game will be shut down automatically.
*/
MSG_BAN_PAY_OUT = 0x212,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. 한글 11ìž ì˜ë¬¸ 23ìž ì´ë‚´ë¡œ ì¨ì£¼ì‹­ì‹œì˜¤.
Name is too long. Please enter a name no greater than 23 english characters.
*/
MSG_NAMELENGTH_TOO_LONG = 0x213,
-/*20031028 to 20180621
+/*20031028 to 20180704
deleted
Character will be deleted in %d seconds.
*/
MSG_DELETE_AFTER_10_SECOND = 0x214,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 ê°œì¸ ì •ì•¡ì œ 사용ìžìž…니다.
You paid with the personal regular base.
*/
MSG_BILLING_100 = 0x215,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 ê°œì¸ì •ëŸ‰ì œ 사용ìžìž…니다.
You paid with the personal regular base. Available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_200 = 0x216,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 ê°œì¸ ë¬´ë£Œ 사용ìžìž…니다.
You are free!
*/
MSG_BILLING_300 = 0x217,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 ê°œì¸ ë¬´ë£Œ 허용기간 사용ìžìž…니다.
You are free for the test, your available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_400 = 0x218,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 게임방 ì •ì•¡ì œ 사용ìžìž…니다.
You paid with the Internet Cafe regular base. Available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_500 = 0x219,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 게임방 정량제 사용ìžìž…니다.
You paid with the Time Limit for Internet Cafe. Available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_501 = 0x21a,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 게임방 무료 허용기간 사용ìžìž…니다.
You are free for the test of Internet Cafe version .
*/
MSG_BILLING_600 = 0x21b,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 게임방 무료 사용ìžìž…니다.
You are free for the Internet Cafe version.
*/
MSG_BILLING_700 = 0x21c,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 종량제 사ì´íŠ¸ ì´ìš©ìžìž…니다.
You paid on the Time Limit Website.
*/
MSG_BILLING_800 = 0x21d,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ëª¨ì…˜ 목ë¡
Emotion icon List
*/
MSG_EMOTION_LIST = 0x21e,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ì´ëª¨ì…˜
/emo
*/
MSG_VIEW_EMOTION = 0x21f,
-/*20031028 to 20180621
+/*20031028 to 20180704
/!
*/
MSG_EMOTION_SURPRISE = 0x220,
-/*20031028 to 20180621
+/*20031028 to 20180704
/?
*/
MSG_EMOTION_QUESTION = 0x221,
-/*20031028 to 20180621
+/*20031028 to 20180704
/기ì¨
/ho
*/
MSG_EMOTION_DELIGHT = 0x222,
-/*20031028 to 20180621
+/*20031028 to 20180704
/하트
/lv
*/
MSG_EMOTION_THROB = 0x223,
-/*20031028 to 20180621
+/*20031028 to 20180704
/왕하트
/lv2
*/
MSG_EMOTION_BIGTHROB = 0x224,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ë•€
/swt
*/
MSG_EMOTION_SWEAT = 0x225,
-/*20031028 to 20180621
+/*20031028 to 20180704
/아하
/ic
*/
MSG_EMOTION_AHA = 0x226,
-/*20031028 to 20180621
+/*20031028 to 20180704
/짜ì¦
/an
*/
MSG_EMOTION_FRET = 0x227,
-/*20031028 to 20180621
+/*20031028 to 20180704
/í™”
/ag
*/
MSG_EMOTION_ANGER = 0x228,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ëˆ
/$
*/
MSG_EMOTION_MONEY = 0x229,
-/*20031028 to 20180621
+/*20031028 to 20180704
/...
*/
MSG_EMOTION_THINK = 0x22a,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ê°ì‚¬
/thx
*/
MSG_EMOTION_THANKS = 0x22b,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ê½¥
/wah
*/
MSG_EMOTION_KEK = 0x22c,
-/*20031028 to 20180621
+/*20031028 to 20180704
/죄송
/sry
*/
MSG_EMOTION_SORRY = 0x22d,
-/*20031028 to 20180621
+/*20031028 to 20180704
/웃ìŒ
/heh
*/
MSG_EMOTION_SMILE = 0x22e,
-/*20031028 to 20180621
+/*20031028 to 20180704
/뻘뻘
/swt2
*/
MSG_EMOTION_PROFUSELY_SWEAT = 0x22f,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ê¸ì 
/hmm
*/
MSG_EMOTION_SCRATCH = 0x230,
-/*20031028 to 20180621
+/*20031028 to 20180704
/최고
/no1
*/
MSG_EMOTION_BEST = 0x231,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ë‘리번
/??
*/
MSG_EMOTION_STARE_ABOUT = 0x232,
-/*20031028 to 20180621
+/*20031028 to 20180704
/í—‰
/omg
*/
MSG_EMOTION_HUK = 0x233,
-/*20031028 to 20180621
+/*20031028 to 20180704
/오
/oh
*/
MSG_EMOTION_O = 0x234,
-/*20031028 to 20180621
+/*20031028 to 20180704
/엑스
/X
*/
MSG_EMOTION_X = 0x235,
-/*20031028 to 20180621
+/*20031028 to 20180704
/헬프
/hlp
*/
MSG_EMOTION_HELP = 0x236,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ê°€
/go
*/
MSG_EMOTION_GO = 0x237,
-/*20031028 to 20180621
+/*20031028 to 20180704
/엉엉
/sob
*/
MSG_EMOTION_CRY = 0x238,
-/*20031028 to 20180621
+/*20031028 to 20180704
/킥킥
/gg
*/
MSG_EMOTION_KIK = 0x239,
-/*20031028 to 20180621
+/*20031028 to 20180704
/쪽
/kis
*/
MSG_EMOTION_CHUP = 0x23a,
-/*20031028 to 20180621
+/*20031028 to 20180704
/쪽쪽
/kis2
*/
MSG_EMOTION_CHUPCHUP = 0x23b,
-/*20031028 to 20180621
+/*20031028 to 20180704
/í¥
/pif
*/
MSG_EMOTION_HNG = 0x23c,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ì‘
/ok
*/
MSG_EMOTION_OK = 0x23d,
-/*20031028 to 20180621
+/*20031028 to 20180704
단축키 목ë¡
Shortcut List
*/
MSG_SHORTCUT_LIST = 0x23e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê·€í•˜ì˜ ê³„ì •ì€ ë³´ë¥˜ë˜ì—ˆìŠµë‹ˆë‹¤.
Your account is suspended.
*/
MSG_BAN_PAY_SUSPEND = 0x23f,
-/*20031028 to 20180621
+/*20031028 to 20180704
과금 ì •ì±… 변경으로 ì¸í•´ ì¼ì‹œ 종료ë©ë‹ˆë‹¤. 다시 ì ‘ì†í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.
Your connection is terminated due to change in the billing policy. Please connect again.
*/
MSG_BAN_PAY_CHANGE = 0x240,
-/*20031028 to 20180621
+/*20031028 to 20180704
어카운트 ì„œë²„ì— ì¸ì¦ëœ IP와 ê·€í•˜ì˜ IPê°€ ë‹¬ë¼ ì—°ê²°ì„ ì¢…ë£Œí•©ë‹ˆë‹¤.
Your connection is terminated because your IP doesn't match the authorized IP from the account server.
*/
MSG_BAN_PAY_WRONGIP = 0x241,
-/*20031028 to 20180621
+/*20031028 to 20180704
게임방 IPì—ì„œ ê°œì¸ ì¢…ëŸ‰ì œ ê³¼ê¸ˆì„ ë§‰ê¸° 위해 ì—°ê²°ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. ê°œì¸ ì¢…ëŸ‰ì œ ê³¼ê¸ˆì„ ì‚¬ìš©í•˜ê¸° 위해서는 게임방IPë¡œ 등ë¡ì´ ë˜ì§€ ì•Šì€ IP를 사용해 주세요.
Your connection is terminated to prevent charging from your account's play time.
*/
MSG_BAN_PAY_PNGAMEROOM = 0x242,
-/*20031028 to 20180621
+/*20031028 to 20180704
귀하는 ìš´ì˜ìžì— ì˜í•´ ê°•ì œ 종료 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been forced to disconnect by the Game Master Team.
*/
MSG_BAN_OP_FORCE = 0x243,
-/*20031028 to 20180621
+/*20031028 to 20180704
무게가 90%를 초과하여 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use this Skill because you are over your Weight Limit.
*/
MSG_USESKILL_FAIL_WEIGHTOVER = 0x244,
-/*20031028 to 20180621
+/*20031028 to 20180704
무명
Nameless
*/
MSG_NAMELESS_USER = 0x245,
-/*20031028 to 20180621
+/*20031028 to 20180704
축하합니다. %së‹˜ì˜ í˜„ìž¬ ëž­í‚¹ì´ %d위로 ìƒìŠ¹í•˜ì˜€ìŠµë‹ˆë‹¤.
Congratulations! %s ranking has gone up to %d.
*/
MSG_RANK_IN_TEN = 0x246,
-/*20031028 to 20180621
+/*20031028 to 20180704
안타ê¹ê²Œë„ %së‹˜ì˜ í˜„ìž¬ ëž­í‚¹ì´ %d위로 하ë½í•˜ì˜€ìŠµë‹ˆë‹¤.
What a pity! %s ranking has gone down to %d.
*/
MSG_RANK_OUT_TEN = 0x247,
-/*20031028 to 20180621
+/*20031028 to 20180704
Pet Info
*/
MSG_PET_INFO = 0x248,
-/*20031028 to 20180621
+/*20031028 to 20180704
만복ë„
Hunger
*/
MSG_PET_HUNGRY = 0x249,
-/*20031028 to 20180621
+/*20031028 to 20180704
친밀ë„
Intimacy
*/
MSG_PET_FRIENDLY = 0x24a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìƒì ê³¼ ì±„íŒ…ë°©ì„ ë™ì‹œì— 열수 없습니다.
Please avoid opening a chatroom while vending.
*/
MSG_CANT_OPEN_STORE_WHILE_CHAT = 0x24b,
-/*20031028 to 20180621
+/*20031028 to 20180704
개
Total
*/
MSG_EA4 = 0x24c,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s 를 전투불능으로 만들었습니다.
You have knocked down %s.
*/
MSG_SLAIN = 0x24d,
-/*20031028 to 20180621
+/*20031028 to 20180704
%s ë‹˜ì— ì˜í•´ 전투불능 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been knocked down by %s.
*/
MSG_SLAINBY = 0x24e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¨¹ì´ - '%s' ì•„ì´í…œì´ 존재하지 않습니다..
Feed - "%s" is not available.
*/
MSG_NOT_EXIST_PET_FOOD = 0x24f,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¨¹ì´ ì£¼ê¸°
Feed Pet
*/
MSG_PET_FEEDING = 0x250,
-/*20031028 to 20180621
+/*20031028 to 20180704
í¼í¬ë¨¼ìŠ¤
Performance
*/
MSG_PET_PERFORMANCE = 0x251,
-/*20031028 to 20180621
+/*20031028 to 20180704
알로 ë˜ëŒë¦¬ê¸°
Return to Egg Shell
*/
MSG_PET_RETURN_EGG = 0x252,
-/*20031028 to 20180621
+/*20031028 to 20180704
악세사리 해제
Unequip Accessory
*/
MSG_PET_ACC_OFF = 0x253,
-/*20031028 to 20180621
+/*20031028 to 20180704
Pet ìƒíƒœ 보기
Check Pet Status
*/
MSG_PET_SHOWINFO = 0x254,
-/*20031028 to 20180621
+/*20031028 to 20180704
악세사리
Accessory
*/
MSG_PET_ACCESSARY = 0x255,
-/*20031028 to 20180621
+/*20031028 to 20180704
장착ë¨
Equipped
*/
MSG_ITEM_EQUIPED = 0x256,
-/*20031028 to 20180621
+/*20031028 to 20180704
펫 리스트
Pet List
*/
MSG_PET_EGG_LIST = 0x257,
-/*20031028 to 20180621
+/*20031028 to 20180704
장착 안ë¨
Unequipped
*/
MSG_ITEM_UNEQUIPED = 0x258,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì •ë§ë¡œ 먹ì´ë¥¼ 주시겠습니까?
Are you sure that you want to feed your pet?
*/
MSG_SURE_TO_FEED_PET = 0x259,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°€ê²©ì„ ì“°ì‹¤ë• ìˆ«ìž(0~9)만 ì¨ì£¼ì‹­ì‹œì˜¤.
Only the numbers (0~9) are available.
*/
MSG_CAN_INPUT_NUMBER_ONLY = 0x25a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°ì •ë˜ì§€ ì•Šì€ ì•„ì´í…œì€ íŒë§¤í•  수 없습니다.
You cannot sell unidentified items.
*/
MSG_CANT_SELL_UNIDENTIFIED_ITEM = 0x25b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°€ê²©ì´ 0 Zenyì¸ ì•„ì´í…œì´ 존재합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Item at 0 Zeny exists. Do you wish to continue?
*/
MSG_YOU_HAVE_FREE_ITEM_ON_SHOP = 0x25c,
-/*20031028 to 20180621
+/*20031028 to 20180704
[새로 ì¶”ê°€ëœ ì´ëª¨ì…˜ 리스트]
[New Emotion List]
*/
MSG_NEW_EMOTION_LIST = 0x25d,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¼ë³¸ìª½ 베타 사용ìžë“¤ì—게 전하는 메세지. -> 겅호ì—ì„œ 재가입 하세요.
N/A
*/
MSG_BAN_JAPAN_REFUSE1 = 0x25e,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¼ë³¸ìª½ ê³¼ê¸ˆì´ ì¢…ë£Œëœ ì‚¬ìš©ìžë“¤ì—게 전하는 메세지. -> ëˆë‚´ë¼. ë‘ ë²ˆë‚´ë¼.
N/A
*/
MSG_BAN_JAPAN_REFUSE2 = 0x25f,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°™ì€ ê³„ì •ì˜ ìºë¦­í„°ê°€ ì´ë¯¸ 가입ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
Character in the same account already joined.
*/
MSG_ALREADY_SAME_AID_JOINED = 0x260,
-/*20031028 to 20180621
+/*20031028 to 20180704
(%d 명) - 만18세ì´ìƒ
(%d ppl) - over the age 18
*/
MSG_SERVER_PROPERTY_ADULT = 0x261,
-/*20031028 to 20180621
+/*20031028 to 20180704
í”„ë¡œë³´í¬ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Provoke initiated.
*/
MSG_ENST_PROVOKE = 0x262,
-/*20031028 to 20180621
+/*20031028 to 20180704
í”„ë¡œë³´í¬ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Provoke canceled.
*/
MSG_DSST_PROVOKE = 0x263,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¸ë“€ì–´ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Endure initiated.
*/
MSG_ENST_ENDURE = 0x264,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¸ë“€ì–´ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Endure canceled.
*/
MSG_DSST_ENDURE = 0x265,
-/*20031028 to 20180621
+/*20031028 to 20180704
집중력 í–¥ìƒ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Improve Concentration initiated.
*/
MSG_ENST_CONCENTRATION = 0x266,
-/*20031028 to 20180621
+/*20031028 to 20180704
집중력 í–¥ìƒ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Improve Concentration canceled.
*/
MSG_DSST_CONCENTRATION = 0x267,
-/*20031028 to 20180621
+/*20031028 to 20180704
하ì´ë”© ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Hiding Initiated.
*/
MSG_ENST_HIDING = 0x268,
-/*20031028 to 20180621
+/*20031028 to 20180704
하ì´ë”© ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Hiding Canceled.
*/
MSG_DSST_HIDING = 0x269,
-/*20031028 to 20180621
+/*20031028 to 20180704
í´ë¡œí‚¹ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Cloaking initiated.
*/
MSG_ENST_CLOAKING = 0x26a,
-/*20031028 to 20180621
+/*20031028 to 20180704
í´ë¡œí‚¹ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Cloaking canceled.
*/
MSG_DSST_CLOAKING = 0x26b,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë…ì„ ë°˜ì‚¬ í•  수 있는 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Poison React initiated.
*/
MSG_ENST_POISONREACT = 0x26c,
-/*20031028 to 20180621
+/*20031028 to 20180704
í¬ì´ì¦Œ 리액트 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Poison React canceled.
*/
MSG_DSST_POISONREACT = 0x26d,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë™ì†ë„ê°€ ê°ì†Œí•˜ì˜€ìŠµë‹ˆë‹¤.
Speed reduced.
*/
MSG_ENST_QUAGMIRE = 0x26e,
-/*20031028 to 20180621
+/*20031028 to 20180704
콰그마ì´ì–´ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Quagmire canceled.
*/
MSG_DSST_QUAGMIRE = 0x26f,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°©ì–´ë ¥ì´ ì¦ê°€ë˜ì—ˆìŠµë‹ˆë‹¤.
Defense increased.
*/
MSG_ENST_ANGELUS = 0x270,
/*20031028 to 20031223
안젤루스 ìƒíƒœê°€ í•´ì œë¼ì—ˆìŠµë‹ˆë‹¤.
-20031229 to 20180621
+20031229 to 20180704
안젤루스 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Angelus canceled.
*/
MSG_DSST_ANGELUS = 0x271,
-/*20031028 to 20180621
+/*20031028 to 20180704
힘과 지능, ë±ìŠ¤ê°€ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
Blessing aligned.
*/
MSG_ENST_BLESSING = 0x272,
-/*20031028 to 20180621
+/*20031028 to 20180704
블레싱 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Blessing canceled.
*/
MSG_DSST_BLESSING = 0x273,
-/*20031028 to 20180621
+/*20031028 to 20180704
시그넘 í¬ë£¨ì‹œìŠ¤ë¥¼ 사용하였습니다.
Signum Crusis initiated.
*/
MSG_ENST_CRUCIS = 0x274,
-/*20031028 to 20180621
+/*20031028 to 20180704
시그넘 í¬ë£¨ì‹œìŠ¤ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Signum Crusis canceled.
*/
MSG_DSST_CRUCIS = 0x275,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë…ì´ í¼ì§€ëŠ” ì†ë„ê°€ ëŠë ¤ì¡ŒìŠµë‹ˆë‹¤.
Slow Poison initiated.
*/
MSG_ENST_SLOWPOISON = 0x276,
-/*20031028 to 20180621
+/*20031028 to 20180704
슬로우 í¬ì´ì¦Œ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Slow Poison Canceled.
*/
MSG_DSST_SLOWPOISON = 0x277,
-/*20031028 to 20180621
+/*20031028 to 20180704
SPì˜ íšŒë³µ ì†ë„ê°€ í–¥ìƒ ë˜ì—ˆìŠµë‹ˆë‹¤.
HP/SP recovery increased.
*/
MSG_ENST_MAGNIFICAT = 0x278,
-/*20031028 to 20180621
+/*20031028 to 20180704
마니피캇 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Magnificat canceled.
*/
MSG_DSST_MAGNIFICAT = 0x279,
-/*20031028 to 20180621
+/*20031028 to 20180704
í–‰ìš´ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Luck increased.
*/
MSG_ENST_GLORIA = 0x27a,
-/*20031028 to 20180621
+/*20031028 to 20180704
글로리아 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Gloria canceled.
*/
MSG_DSST_GLORIA = 0x27b,
-/*20031028 to 20180621
+/*20031028 to 20180704
1회 ê³µê²©ì— ë‘ ë°° ë°ë¯¸ì§€ë¥¼ 받는 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
You will received double damage from all attacking opponents.
*/
MSG_ENST_LEXAETERNA = 0x27c,
-/*20031028 to 20180621
+/*20031028 to 20180704
렉스ì—테르나 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Lex Eterna canceled.
*/
MSG_DSST_LEXAETERNA = 0x27d,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격ì†ë„ê°€ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
Attack Speed increased.
*/
MSG_ENST_ADRENALINE = 0x27e,
-/*20031028 to 20180621
+/*20031028 to 20180704
공격ì†ë„ê°€ ê°ì†Œí•˜ì˜€ìŠµë‹ˆë‹¤.
Attack Speed reduced.
*/
MSG_DSST_ADRENALINE = 0x27f,
-/*20031028 to 20180621
+/*20031028 to 20180704
íŽ˜ì½”ì— ì˜¬ë¼ íƒ”ìŠµë‹ˆë‹¤.
You've just been on a Peco Peco.
*/
MSG_ENST_RIDING = 0x280,
-/*20031028 to 20180621
+/*20031028 to 20180704
페코ì—ì„œ 내렸습니다.
You've just got off of a Peco Peco.
*/
MSG_DSST_RIDING = 0x281,
-/*20031028 to 20180621
+/*20031028 to 20180704
íŒ”ì½˜ì„ ìž¥ì°©í•˜ì˜€ìŠµë‹ˆë‹¤.
You've just carried a Falcon with.
*/
MSG_ENST_FALCON = 0x282,
-/*20031028 to 20180621
+/*20031028 to 20180704
íŒ”ì½˜ì„ í’€ì–´ì£¼ì—ˆìŠµë‹ˆë‹¤.
You've just released a Falcon.
*/
MSG_DSST_FALCON = 0x283,
-/*20031028 to 20180621
+/*20031028 to 20180704
죽ì€ì²™í•˜ê¸° ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Play Dead initiated.
*/
MSG_ENST_TRICKDEAD = 0x284,
-/*20031028 to 20180621
+/*20031028 to 20180704
죽ì€ì²™í•˜ê¸° ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Play Dead canceled.
*/
MSG_DSST_TRICKDEAD = 0x285,
-/*20031028 to 20180621
+/*20031028 to 20180704
íž˜ì´ ê°•í•´ì¡ŒìŠµë‹ˆë‹¤.
STR improved.
*/
MSG_ENST_SHOUT = 0x286,
-/*20031028 to 20180621
+/*20031028 to 20180704
íž˜ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
STR turned back to normal.
*/
MSG_DSST_SHOUT = 0x287,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì—너지코트 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Energy Coat initiated.
*/
MSG_ENST_ENERGYCOAT = 0x288,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì—너지코트 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Energy Coat canceled.
*/
MSG_DSST_ENERGYCOAT = 0x289,
-/*20031028 to 20180621
+/*20031028 to 20180704
방어구가 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
Armor destroyed.
*/
MSG_ENST_BROKENAMOR = 0x28a,
-/*20031028 to 20180621
+/*20031028 to 20180704
...
Weapon has just been released from destroyed status.
*/
MSG_DSST_BROKENAMOR = 0x28b,
-/*20031028 to 20180621
+/*20031028 to 20180704
무기가 파괴ë˜ì—ˆë‹ˆë‹¤.
Weapon destroyed.
*/
MSG_ENST_BROKENWEAPON = 0x28c,
-/*20031028 to 20180621
+/*20031028 to 20180704
...
Weapon has just been released from destroyed status.
*/
MSG_DSST_BROKENWEAPON = 0x28d,
-/*20031028 to 20180621
+/*20031028 to 20180704
환ì˜ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Invisibility initiated.
*/
MSG_ENST_ILLUSION = 0x28e,
-/*20031028 to 20180621
+/*20031028 to 20180704
환ì˜ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Invisibility canceled.
*/
MSG_DSST_ILLUSION = 0x28f,
-/*20031028 to 20180621
+/*20031028 to 20180704
과금 ì •ë³´ 처리가 늦어지고 있어 ì ‘ì†ì´ 지연ë˜ê³  있습니다. ìž ì‹œ í›„ì— ë‹¤ì‹œ ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Sorry. It is delayed due to the process of payment. Please re-connect in a minute.
*/
@@ -3347,37 +3347,37 @@ Sorry. It is delayed due to the process of payment. Please re-connect in a minut
ìž¥ì°©ëœ í™”ì‚´ì„ í•´ì œ 하여야 합니다.
20060410 to 20061009
ìž¥ì°©ëœ í™”ì‚´ ë˜ëŠ” íƒ„í™˜ì„ í•´ì œ 하여야 합니다.
-20061016 to 20180621
+20061016 to 20180704
ìž¥ì°©ëœ í™”ì‚´/탄환/수리검 ì„ í•´ì œí•´ì•¼í•©ë‹ˆë‹¤.
You must unequip ammunition first.
*/
MSG_UNEQUIP_ARROW = 0x291,
-/*20031028 to 20180621
+/*20031028 to 20180704
화살 목ë¡
Arrow List
*/
MSG_ARROW_LIST = 0x292,
-/*20031028 to 20180621
+/*20031028 to 20180704
카트 목ë¡
Cart List
*/
MSG_CART_LIST = 0x293,
-/*20031028 to 20180621
+/*20031028 to 20180704
카트를 장착한 ìƒíƒœì—¬ì•¼ 합니다.
You must have a Pushcart.
*/
MSG_MUST_EQUIP_CART = 0x294,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì±„íŒ…ë°©ì„ ê°œì„¤ í•  수 없습니다.
You cannot open a Chat Window.
*/
MSG_CANT_MAKE_CHAT_ROOM = 0x295,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë¼ê·¸ë‚˜ë¡œí¬ 홈페ì´ì§€ë¡œ ì ‘ì†í•˜ì—¬ ê³„ì •ì„ ë§Œë“­ë‹ˆë‹¤. ì²˜ìŒ ê³„ì •ì„ ë§Œë“œì‹œë©´ 3ì¼ ë™ì•ˆì€ 무료로 ì´ìš©í•˜ì‹¤ 수 있습니다.
Registering an account is the first step to accessing the game. Do you want to visit the registration page now?
*/
MSG_3DAY_FREE = 0x296,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•‰ì€ ìƒíƒœì—서는 ì´ ì•„ì´í…œì„ 사용할 수 없습니다.
You cannot use this item while sitting.
*/
@@ -3386,7 +3386,7 @@ You cannot use this item while sitting.
ìš´ì˜ìžì— ì˜í•œ 채팅 ë° ìŠ¤í‚¬ 금지가 %d 분간 남아 있습니다.
20040419 to 20040714
ìš´ì˜ìžì— ì˜í•œ 채팅, 스킬, ì•„ì´í…œ 사용금지가 %d 분간 남아 있습니다.
-20040726 to 20180621
+20040726 to 20180704
채팅, 스킬, ì•„ì´í…œ 사용금지가 %d 분간 남아 있습니다.
Your use of skills and chat will be blocked for the next %d minutes.
*/
@@ -3395,203 +3395,203 @@ Your use of skills and chat will be blocked for the next %d minutes.
ìš´ì˜ìžì— ì˜í•œ 채팅 ë° ìŠ¤í‚¬ 금지가 해지 ë˜ì—ˆìŠµë‹ˆë‹¤.
20040419 to 20040714
ìš´ì˜ìžì— ì˜í•œ 채팅, 스킬, ì•„ì´í…œ 사용금지가 해지 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20040726 to 20180621
+20040726 to 20180704
채팅, 스킬, ì•„ì´í…œ 사용금지가 해지 ë˜ì—ˆìŠµë‹ˆë‹¤.
Your use of skills and chat have been reinstated.
*/
MSG_BAD_MANNER_END = 0x299,
-/*20031028 to 20180621
+/*20031028 to 20180704
-[장착안ë¨]
- [Not equipped]
*/
MSG_REF_UNEQUIP = 0x29a,
-/*20031028 to 20180621
+/*20031028 to 20180704
ë°°ê³ í””
Very Hungry
*/
MSG_VERY_HUNGRY = 0x29b,
-/*20031028 to 20180621
+/*20031028 to 20180704
출출함
Hungry
*/
MSG_HUNGRY = 0x29c,
-/*20031028 to 20180621
+/*20031028 to 20180704
보통
Normal
*/
MSG_NORMAL = 0x29d,
-/*20031028 to 20180621
+/*20031028 to 20180704
배부름
Satisfied
*/
MSG_REPLETE = 0x29e,
-/*20031028 to 20180621
+/*20031028 to 20180704
아주 배부름
Stuffed
*/
MSG_VERY_REPLETE = 0x29f,
-/*20031028 to 20180621
+/*20031028 to 20180704
서먹서먹함
Awkward
*/
MSG_VERY_AWKWARD = 0x2a0,
-/*20031028 to 20180621
+/*20031028 to 20180704
어색함
Shy
*/
MSG_AWKWARD = 0x2a1,
-/*20031028 to 20180621
+/*20031028 to 20180704
친함
Cordial
*/
MSG_FRIENDLY = 0x2a2,
-/*20031028 to 20180621
+/*20031028 to 20180704
절친함
Loyal
*/
MSG_VERY_FRIENDLY = 0x2a3,
-/*20031028 to 20180621
+/*20031028 to 20180704
알수 ì—†ìŒ
Unknown
*/
MSG_UNKNOWN = 0x2a4,
/*20031028 to 20080513
(태국)귀하는 앞으로 %ì¼ %d시간 %d분 ì‚¬ìš©ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
-20080514 to 20180621
+20080514 to 20180704
귀하는 앞으로 %ì¼ %d시간 %d분 ì‚¬ìš©ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
Your account has play time of %d day %d hour %d minute.
*/
MSG_BILLING_DAY_HOUR_MINUTES = 0x2a5,
/*20031028 to 20080513
(태국)ì´ ê³„ì •ì€ ì´ë¯¸ 다른 어카운트 서버로 ì ‘ì†í•œ ìƒíƒœìž…니다.
-20080514 to 20180621
+20080514 to 20180704
ì´ ê³„ì •ì€ ì´ë¯¸ 다른 어카운트 서버로 ì ‘ì†í•œ ìƒíƒœìž…니다.
Your account is already connected to account server.
*/
MSG_BAN_INFORMATION_REMAINED_ANOTHER_ACCOUNT = 0x2a6,
/*20031028 to 20080513
(태국)귀하는 앞으로 %d시간 %d분 ì‚¬ìš©ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
-20080514 to 20180621
+20080514 to 20180704
귀하는 앞으로 %d시간 %d분 ì‚¬ìš©ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
Your account has play time of %d hour %d minute.
*/
MSG_BILLING_HOUR_MINUTES = 0x2a7,
/*20031028 to 20080513
(태국)귀하는 무료 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤.
-20080514 to 20180621
+20080514 to 20180704
귀하는 무료 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤.
Your account is a free account.
*/
MSG_BILLING_FREE_USER = 0x2a8,
/*20031028 to 20080513
(태국)ì´ ê³„ì •ìœ¼ë¡œ 사í¬ë¼ì´ì— ì ‘ì†í• ìˆ˜ 없습니다.
-20080514 to 20180621
+20080514 to 20180704
ì´ ê³„ì •ìœ¼ë¡œ 사í¬ë¼ì´ì— ì ‘ì†í• ìˆ˜ 없습니다.
This account can't connect the Sakray server.
*/
MSG_REFUSE_NONSAKRAY_ID_BLOCKED = 0x2a9,
-/*20031028 to 20180621
+/*20031028 to 20180704
íŽ«ì˜ ì´ë¦„ì€ ì˜ë¬¸ 23, 한글 11ìž ì´ë‚´ë¡œ ì •í•´ 주세요.
Your pet name must be 23 characters or less.
*/
MSG_PETNAME_IN23 = 0x2aa,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ë¦„ì€ ë‹¨ 한번만 바꿀수 있습니다. 펫 ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You may change your pet's name only once. Your pet's name will be changed to ^0000ff^0000ff %s^000000^000000. Do you wish to continue?
*/
MSG_PETNAME_CHANGE_ONLYONCE = 0x2ab,
-/*20031028 to 20180621
+/*20031028 to 20180704
/í°íŠ¸
/font
*/
MSG_NAMEBALLOON_TYPE = 0x2ac,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê¸¸ë“œì— ë‚¨ì€ ì œë‹ˆê°€ 부족하여 ìž‘ì—…ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Your guild lacks the funds to pay for this venture.
*/
MSG_GUILDZENY_NOT_ENOUGH = 0x2ad,
-/*20031028 to 20180621
+/*20031028 to 20180704
길드가 소유할 수 있는 최대 ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì—¬ ìž‘ì—…ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Your guild zeny limit prevents you from performing this action.
*/
MSG_GUILDZENY_OVER = 0x2ae,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´íŽ™íŠ¸ 간략화 On
Simplified effects have been activated.
*/
MSG_MINEFFECT_ON = 0x2af,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´íŽ™íŠ¸ 간략화 Off
Simplified effects have been deactivated.
*/
MSG_MINEFFECT_OFF = 0x2b0,
-/*20031028 to 20180621
+/*20031028 to 20180704
ìžë³¸ê¸ˆ
Required Fee
*/
MSG_CAPITAL = 0x2b1,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œì„ ë°”ë‹¥ì— ë²„ë¦¬ë ¤ë©´, ì•„ì´í…œ ì°½ì„ ì—´ì–´ 주십시오.
If you wish to drop an item, you must first open your Item Window (alt+e).
*/
MSG_OPEN_ITEMWND_TO_THROW = 0x2b2,
-/*20031028 to 20180621
+/*20031028 to 20180704
PCë°© ìš”ê¸ˆì´ ì¢…ë£Œí•˜ì—¬ ê°œì¸ ìš”ê¸ˆì œë¡œ 전환합니다. ê°œì¸ ìš”ê¸ˆìœ¼ë¡œ ê²Œìž„ì„ ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Internet Cafe Time Plan has been ended. Would you like to continue the game with your personal play time?
*/
MSG_ASK_PNGAMEROOM = 0x2b3,
/*20031028 to 20100928
-20081008 to 20180621
+20081008 to 20180704
Current admission application state.
*/
MSG_REPLY_REMAINTIME = 0x2b4,
/*20031028 to 20100928
-20081008 to 20180621
+20081008 to 20180704
Current admission application state.
*/
MSG_INFO_REMAINTIME = 0x2b5,
-/*20031028 to 20180621
+/*20031028 to 20180704
ëˆì´ 모ìžë¼ê±°ë‚˜, 가질 수 있는 최대 ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
Your lack of zeny or your zeny limit have prevented you from performing this action.
*/
MSG_OVER_OR_LOW_MONEY = 0x2b6,
-/*20031028 to 20180621
+/*20031028 to 20180704
전투불능 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤. esc키를 누르시면 ì„ íƒì°½ì´ 뜹니다.
Your character has fainted. Push the ESC key to restart.
*/
MSG_PRESS_ESC_TO_RESTART = 0x2b7,
-/*20031028 to 20180621
+/*20031028 to 20180704
%d ê°œ íšë“
- %d obtained.
*/
MSG_EA_OBTAIN = 0x2b8,
-/*20031028 to 20180621
+/*20031028 to 20180704
스펠 리스트
Spell List
*/
MSG_SPELL_LIST = 0x2b9,
-/*20031028 to 20180621
+/*20031028 to 20180704
/최소화
/minimize
*/
MSG_MINEFFECT = 0x2ba,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì´ ì•„ì´í…œì€ ì†ìƒë˜ì–´ 있습니다..
This item has been damaged.
*/
MSG_DAMAGED_ITEM = 0x2bb,
-/*20031028 to 20180621
+/*20031028 to 20180704
/noshift : 쉬프트를 누르지않고 ížë¡œ ì ì„ 공격할수있게ë©ë‹ˆë‹¤ On Off
/noshift: You may use your ''force heal'' ability without the Shift key. On | Off
*/
MSG_EXPLAIN_NOSHIFT = 0x2bc,
/*20031028 to 20040223
시프트를 누르지 ì•Šê³ ë„ ížë¡œ 몬스터를 공격할수 있습니다 [ON]
-20040225 to 20180621
+20040225 to 20180704
시프트를 누르지 ì•Šê³ ë„ ížë¡œ ì–¸ë°ë“œë¥¼ 공격할수 있습니다 [/ns ON]
[no shift] option activated. [ON]
*/
@@ -3600,174 +3600,174 @@ This item has been damaged.
시프트를 누르지 ì•Šê³ ë„ ížë¡œ 몬스터를 공격할수 있습니다 [OFF]
20040225 to 20040315
시프트를 누르지 ì•Šê³ ë„ ížë¡œ ì–¸ë°ë“œë¥¼ 공격할수 있습니다 [/ns OFF]
-20040322 to 20180621
+20040322 to 20180704
시프트를 눌러야 ížë¡œ ì–¸ë°ë“œë¥¼ 공격할수 있습니다 [/ns OFF]
[no shift] option deactivated. [OFF]
*/
MSG_NOSHIFT_OFF = 0x2be,
-/*20031028 to 20180621
+/*20031028 to 20180704
MSI_REFUSE_BAN_BY_DBA
*/
MSG_REFUSE_BAN_BY_DBA = 0x2bf,
-/*20031028 to 20180621
+/*20031028 to 20180704
MSI_REFUSE_EMAIL_NOT_CONFIRMED
*/
MSG_REFUSE_EMAIL_NOT_CONFIRMED = 0x2c0,
-/*20031028 to 20180621
+/*20031028 to 20180704
MSI_REFUSE_BAN_BY_GM
*/
MSG_REFUSE_BAN_BY_GM = 0x2c1,
-/*20031028 to 20180621
+/*20031028 to 20180704
MSI_REFUSE_TEMP_BAN_FOR_DBWORK
*/
MSG_REFUSE_TEMP_BAN_FOR_DBWORK = 0x2c2,
-/*20031028 to 20180621
+/*20031028 to 20180704
MSI_REFUSE_SELF_LOCK
*/
MSG_REFUSE_SELF_LOCK = 0x2c3,
-/*20031028 to 20180621
+/*20031028 to 20180704
MSI_REFUSE_NOT_PERMITTED_GROUP
*/
MSG_REFUSE_NOT_PERMITTED_GROUP = 0x2c4,
-/*20031028 to 20180621
+/*20031028 to 20180704
MSI_REFUSE_WAIT_FOR_SAKRAY_ACTIVE
*/
MSG_REFUSE_WAIT_FOR_SAKRAY_ACTIVE = 0x2c5,
-/*20031028 to 20180621
+/*20031028 to 20180704
/aura : 오오ë¼ë¥¼ 간략화 시킬수있습니다 On Off
/aura: Simplify Aura effect On | Off
*/
MSG_EXPLAIN_AURA = 0x2c6,
-/*20031028 to 20180621
+/*20031028 to 20180704
오오ë¼ê°€ ì •ìƒì ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤ [ì˜¤ì˜¤ë¼ ON]
Turn On Aura [Aura ON]
*/
MSG_AURA_ON = 0x2c7,
-/*20031028 to 20180621
+/*20031028 to 20180704
오오ë¼ê°€ 간략화ë˜ì„œ 표시ë©ë‹ˆë‹¤ [ì˜¤ì˜¤ë¼ OFF]
Simplify Aura enabled. [ON]
*/
MSG_AURA_OFF = 0x2c8,
-/*20031028 to 20180621
+/*20031028 to 20180704
채팅금지 ê¸°ë¡ %d 회
Chat block record %d times
*/
MSG_PROHIBIT_LOG = 0x2c9,
-/*20031028 to 20180621
+/*20031028 to 20180704
채팅 금지 리스트
Chat block list
*/
MSG_PROHIBIT_LIST = 0x2ca,
-/*20031028 to 20180621
+/*20031028 to 20180704
/ì´ë¦„표시 or /showname : ìºë¦­í„°ì˜ ì´ë¦„ 표시 ë°©ì‹ì„ 변경합니다.
/showname: Change the name font type.
*/
MSG_EXPLAIN_SHOWNAMETYPE = 0x2cb,
-/*20031028 to 20180621
+/*20031028 to 20180704
/noctrl : ì½˜íŠ¸ë¡¤ì„ ëˆ„ë¥´ì§€ì•Šì•„ë„ ìžë™ê³µê²©ì´ ë©ë‹ˆë‹¤. On Off
/noctrl | /nc: Auto attack without pressing ctrl key. On | Off
*/
MSG_EXPLAIN_NOCTRL = 0x2cc,
/*20031028 to 20040223
ì½˜íŠ¸ë¡¤ì„ ëˆ„ë¥´ì§€ ì•Šì•„ë„ ìžë™ê³µê²©ì„ 합니다 [ìžë™ê³µê²© ON]
-20040225 to 20180621
+20040225 to 20180704
ì½˜íŠ¸ë¡¤ì„ ëˆ„ë¥´ì§€ ì•Šì•„ë„ ìžë™ê³µê²©ì„ 합니다 [/nc ON]
Use auto attack without Ctrl. [Auto attack ON]
*/
MSG_NOCTRL_ON = 0x2cd,
/*20031028 to 20040223
ì½˜íŠ¸ë¡¤ì„ ëˆŒëŸ¬ì•¼ ìžë™ê³µê²©ì„ 합니다 [ìžë™ê³µê²© OFF]
-20040225 to 20180621
+20040225 to 20180704
ì½˜íŠ¸ë¡¤ì„ ëˆŒëŸ¬ì•¼ ìžë™ê³µê²©ì„ 합니다 [/nc OFF]
Use auto attack with Ctrl. [Auto attack OFF]
*/
MSG_NOCTRL_OFF = 0x2ce,
-/*20031028 to 20180621
+/*20031028 to 20180704
채팅 금지 주기
Mute this player.
*/
MSG_APPEND_PROHIBIT = 0x2cf,
-/*20031028 to 20180621
+/*20031028 to 20180704
채팅 금지 완전 풀기 & 로그 삭제
Unmute player & Erase mute time.
*/
MSG_ERASE_PROHIBIT = 0x2d0,
-/*20031028 to 20180621
+/*20031028 to 20180704
채팅 금지 시간 줄ì´ê¸°(로그 ì‚­ì œ 안ë¨)
Decrease Player Mute time.
*/
MSG_REDUCE_PROHIBIT = 0x2d1,
-/*20031028 to 20180621
+/*20031028 to 20180704
í°íŠ¸ê°€ ì •ìƒì ìœ¼ë¡œ 바뀌었습니다 [ì´ë¦„í‘œì‹œë°©ì‹ 1]
Normal Font Displayed. [showname type 1]
*/
MSG_SHOWNAME_ON = 0x2d2,
-/*20031028 to 20180621
+/*20031028 to 20180704
í°íŠ¸ê°€ 가늘게 바뀌면서 íŒŒí‹°ëª…ë„ í‘œì‹œë©ë‹ˆë‹¤ [ì´ë¦„í‘œì‹œë°©ì‹ 2]
Font will be thin and party name will be shown [showname type 2]
*/
MSG_SHOWNAME_OFF = 0x2d3,
-/*20031028 to 20180621
+/*20031028 to 20180704
/doridori : ì—°ì†í•´ì„œ ì´ ëª…ë ¹ì–´ë¥¼ ì³ì£¼ë©´ ìºë¦­í„°ê°€ ë„리ë„리 ^^;;
/doridori: Shake head
*/
MSG_EXPLAIN_DORIDORI = 0x2d4,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì¸í„°ë„· 카페ì—ì„œ ê³¼ê¸ˆì„ í•˜ê³  있습니다.
Internet room is paying now.
*/
MSG_BILLING_INTERNET_CAFE = 0x2d5,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì •ì•¡ì œ ê³¼ê¸ˆì€ %dì¼ %d시간 %dë¶„ì´ ë‚¨ì•˜ìŠµë‹ˆë‹¤.
종량제 ê³¼ê¸ˆì€ %d시간 %dë¶„ì´ ë‚¨ì•˜ìŠµë‹ˆë‹¤.
Prepaid voucher validate until %d days %d hours %d minutes later.
Time limit voucher validate untill %d hours %d minutes later.
*/
MSG_BILLING_BOTH = 0x2d6,
-/*20031028 to 20180621
+/*20031028 to 20180704
/bingbing : ì—°ì†í•´ì„œ ì´ ëª…ë ¹ì–´ë¥¼ ì³ì£¼ë©´ ìºë¦­í„°ê°€ 빙글빙글 ^^;;
/bingbing: Rotates player counter clockwise.
*/
MSG_EXPLAIN_BINGBING = 0x2d7,
-/*20031028 to 20180621
+/*20031028 to 20180704
/bangbang : ì—°ì†í•´ì„œ ì´ ëª…ë ¹ì–´ë¥¼ ì³ì£¼ë©´ ìºë¦­í„°ê°€ 뱅글뱅글 ^^;;
/bangbang: Rotates player clockwise.
*/
MSG_EXPLAIN_BANGBANG = 0x2d8,
-/*20031028 to 20180621
+/*20031028 to 20180704
/skillfail : ë¹¨ê°„ìƒ‰ì˜ ìŠ¤í‚¬ì‚¬ìš© 실패 메세지를 표시하지 않습니다 On Off
/skillfail: Display red font message when skill fails. On | Off
*/
MSG_EXPLAIN_SKILLFAIL = 0x2d9,
/*20031028 to 20040223
스킬사용 실패 메세지를 표시합니다 [표시 ON]
-20040225 to 20180621
+20040225 to 20180704
스킬사용 실패 메세지를 표시합니다 [/sf ON]
Skill fail messages will be displayed. [Display On]
*/
MSG_SKILLFAIL_ON = 0x2da,
/*20031028 to 20040223
스킬사용 실패 메세지를 표시하지 않습니다 [표시 OFF]
-20040225 to 20180621
+20040225 to 20180704
스킬사용 실패 메세지를 표시하지 않습니다 [/sf OFF]
Skill fail messages will not be displayed. [Display OFF]
*/
MSG_SKILLFAIL_OFF = 0x2db,
-/*20031028 to 20180621
+/*20031028 to 20180704
/notalkmsg : ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ 않습니다 On Off
/notalkmsg: Chat will not be displayed in chat window. On | Off
*/
MSG_EXPLAIN_NOTALKMSG = 0x2dc,
/*20031028 to 20040223
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤ [표시 ON]
-20040225 to 20180621
+20040225 to 20180704
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤ [/nm ON]
Chat content will be displayed in the chat window. [Display ON]
*/
MSG_NOTALKMSG_ON = 0x2dd,
/*20031028 to 20040223
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤ [표시 OFF]
-20040225 to 20180621
+20040225 to 20180704
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤ [/nm OFF]
Chat content will not be displayed in the chat window. [Display OFF]
*/
@@ -3776,42 +3776,42 @@ Chat content will not be displayed in the chat window. [Display OFF]
/set1 : /noctrl + /showname + /skillfail
20040426 to 20040707
/set1 : /noctrl + /showname + /skillfail , /set2 : + /q3
-20040707 to 20180621
+20040707 to 20180704
/set1 : /nc + /showname + /sf + /wi, /set2 : + /q3
/set1: /noctrl + /showname + /skillfail
*/
MSG_EXPLAIN_SET1 = 0x2df,
-/*20031028 to 20180621
+/*20031028 to 20180704
/fog : FOGì´íŽ™íŠ¸ë¥¼ 키거나 ëŒìˆ˜ìžˆìŠµë‹ˆë‹¤ On Off
/fog: Fog effect. On | Off
*/
MSG_EXPLAIN_FOG = 0x2e0,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì²­í˜¼ì„ í•´ì™”ìŠµë‹ˆë‹¤. 승낙하시겠습니까?
You have received a marriage proposal. Do you accept?
*/
MSG_SUGGEST_COUPLE = 0x2e1,
-/*20031028 to 20180621
+/*20031028 to 20180704
ì•„ì´í…œ 분배 ë°©ì‹
Item sharing type
*/
MSG_HOWITEMDIV = 0x2e2,
-/*20031028 to 20180621
+/*20031028 to 20180704
ê°ìž ì·¨ë“
Individual
*/
MSG_ITEMDIV1 = 0x2e3,
-/*20031028 to 20180621
+/*20031028 to 20180704
균등하게 분배
Shared
*/
MSG_ITEMDIV2 = 0x2e4,
#if PACKETVER >= 20031103
-/*20031103 to 20180621
+/*20031103 to 20180704
nProtect KeyCrypt
*/
MSG_KEYCRYPT = 0x2e5,
-/*20031103 to 20180621
+/*20031103 to 20180704
Keyboard Driverê°€ 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
키보드 보안 ìž…ë ¥ì„ ìœ„í•´ ì¶”ê°€ê¸°ëŠ¥ì„ ì„¤ì¹˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
@@ -3824,7 +3824,7 @@ Do you want to install a program for keyboard security?
(After installation, System Reboot is required)
*/
MSG_KEYCRYPT_INSTALL_KEYDRIVER = 0x2e6,
-/*20031103 to 20180621
+/*20031103 to 20180704
설치가 완료 ë˜ì—ˆìŠµë‹ˆë‹¤.
ì‹œìŠ¤í…œì„ Reboot 합니다.
@@ -3833,17 +3833,17 @@ Installation has been completed.
System will be rebooted.
*/
MSG_KEYCRYPT_REBOOT = 0x2e7,
-/*20031103 to 20180621
+/*20031103 to 20180704
설치 실패.
Installation has been failed.
*/
MSG_KEYCRYPT_INSTALLFAIL = 0x2e8,
-/*20031103 to 20180621
+/*20031103 to 20180704
키보드 ë³´ì•ˆì„ ì ìš©í•˜ì§€ ì•Šê³  계ì†í•©ë‹ˆë‹¤.
Keyboard Security will be skipped.
*/
MSG_KEYCRYPT_SKIPKEYCRYPT = 0x2e9,
-/*20031103 to 20180621
+/*20031103 to 20180704
키보드 ë³´ì•ˆì— í•„ìš”í•œ 파ì¼ì´ 존재하지 않습니다.
(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
@@ -3852,7 +3852,7 @@ Required file for Keyboard Security is not existing.
(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
*/
MSG_KEYCRYPT_NOKEYCRYPTFILE = 0x2ea,
-/*20031103 to 20180621
+/*20031103 to 20180704
USB Keyboardê°€ 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
키보드 보안 ìž…ë ¥ì„ ìœ„í•´ ì¶”ê°€ê¸°ëŠ¥ì„ ì„¤ì¹˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
@@ -3865,53 +3865,53 @@ Do you want to install a program for keyboard security?
(After installation, System Reboot is required)
*/
MSG_KEYCRYPT_USBKEYBOARD = 0x2eb,
-/*20031103 to 20180621
+/*20031103 to 20180704
ftp://ragnarok.nefficient.co.kr/pub/ragnarok/ragnarok0526.exe
*/
MSG_FINDHACK_PATH = 0x2ec,
-/*20031103 to 20180621
+/*20031103 to 20180704
FindHackì´ ì •ìƒì ìœ¼ë¡œ 설치가 ë˜ì–´ìžˆì§€ 않습니다. ragnarok0226.exe 를 다운로드 하여 ë¼ê·¸ë‚˜ë¡œí¬ê°€ ì„¤ì¹˜ëœ í´ë”ì— ì„¤ì¹˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.(%d).
FindHack is not installed correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.(%d).
*/
MSG_FINDHACK_NOTINSTALLED = 0x2ed,
-/*20031103 to 20180621
+/*20031103 to 20180704
í•´í‚¹íˆ´ì´ ì¡´ìž¬í•˜ì§€ë§Œ 치료가 ì •ìƒì ìœ¼ë¡œ ë˜ì§€ 않았습니다. ë¼ê·¸ë‚˜ë¡œí¬ê°€ 실행ë˜ì§€ 않습니다.
Hacking tool is existing but it hasn't been cleaned. Rangarok Online will not be executed.
*/
MSG_FINDHACK_HACKTOOLEXIST = 0x2ee,
-/*20031103 to 20180621
+/*20031103 to 20180704
해킹툴 진단 í”„ë¡œê·¸ëž¨ì´ ì •ìƒì ìœ¼ë¡œ 다운로드 ë˜ì§€ 않았습니다. ragnarok0226.exe 를 다운로드 하여 ë¼ê·¸ë‚˜ë¡œí¬ê°€ ì„¤ì¹˜ëœ í´ë”ì— ì„¤ì¹˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Hacking tool scan program has not been downloaded correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
*/
MSG_FINDHACK_CANTDOWNLOAD = 0x2ef,
-/*20031103 to 20180621
+/*20031103 to 20180704
NPX.DLL 등ë¡ì—러 ì´ê±°ë‚˜ FindHack 구ë™ì— 필요한 파ì¼ì´ 없습니다. ragnarok0226.exe 를 다운로드 하여 ë¼ê·¸ë‚˜ë¡œí¬ê°€ ì„¤ì¹˜ëœ í´ë”ì— ì„¤ì¹˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.
NPX.DLL register error or there is no necessary file to run FindHack. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
*/
MSG_FINDHACK_NOFILE = 0x2f0,
-/*20031103 to 20180621
+/*20031103 to 20180704
ì˜ˆì™¸ì‚¬í•­ì´ ë°œìƒí–ˆìŠµë‹ˆë‹¤. (02-3281-0361)ë¡œ 문ì˜í•´ì£¼ì„¸ìš”. 리턴값(%d)
Exceptional Error. Please contact the customer support. Return Value: (%d)
*/
MSG_FINDHACK_EXCEPTION = 0x2f1,
-/*20031103 to 20180621
+/*20031103 to 20180704
ì¢…ë£Œë²„íŠ¼ì„ í´ë¦­ 하셨습니다.
Exit button has been clicked.
*/
MSG_FINDHACK_EXITPRESSED = 0x2f2,
-/*20031103 to 20180621
+/*20031103 to 20180704
Findhack ì—…ë°ì´íŠ¸ 서버접근 실패하였습니다. ìž ì‹œ í›„ì— ë‹¤ì‹œ ì‹œë„í•´ 주시거나 ê·¸ë¼ë¹„í‹° ìš´ì˜íŒ€ìœ¼ë¡œ ì—°ë½í•´ì£¼ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Unable to connect Findhack Update Server. Please try again or contact the customer support.
*/
MSG_FINDHACK_UPDATEFAILED = 0x2f3,
-/*20031103 to 20180621
+/*20031103 to 20180704
사랑받고있는
Beloved
*/
MSG_NAMED_PET = 0x2f4,
#endif
#if PACKETVER >= 20031110
-/*20031110 to 20180621
+/*20031110 to 20180704
/report or /ì‹ ê³  : ì‹ ê³ ìš© 갈무리 파ì¼ì„ 저장합니다.
/report: Save a chat log file.
*/
@@ -3921,7 +3921,7 @@ Beloved
ì¦ê±°ìžë£Œë¡œì‚¬ìš©í•˜ê²Œ ë©ë‹ˆë‹¤.
문서를 다른 문서 형ì‹ìœ¼ë¡œ 저장하거나 ë‚´ìš©ì„ ë³€ê²½í•˜ì—¬ ì›ë³¸ê³¼ ì¼ì¹˜í•˜ì§€ 않게
ë  ê²½ìš° ê·¸ 문서는 ì¦ê±° íš¨ë ¥ì„ ìƒì‹¤í•˜ê²Œ ë©ë‹ˆë‹¤.
-20031117 to 20180621
+20031117 to 20180704
ì´ íŒŒì¼ì€ (주)ê·¸ë¼ë¹„í‹°ì˜ ìš´ì˜íŒ€ì—ì„œ ê²Œìž„ë‚´ì˜ ë¶€ì •í–‰ìœ„ë‚˜ 비매너 í–‰ìœ„ì— ëŒ€í•œ
ì¦ê±°ìžë£Œë¡œ 사용하게 ë©ë‹ˆë‹¤.
문서를 다른 문서 형ì‹ìœ¼ë¡œ 저장하거나 ë‚´ìš©ì„ ë³€ê²½í•˜ì—¬ ì›ë³¸ê³¼ ì¼ì¹˜í•˜ì§€ 않게
@@ -3929,38 +3929,38 @@ Beloved
Chat logs are not accepted as evidence for any ill-mannered violation on account of possible file modifications. However this feature is provided for players' personal reference.
*/
MSG_REPORTTEXT_HEADER = 0x2f6,
-/*20031110 to 20180621
+/*20031110 to 20180704
ë‹¹ì‹ ì„ ì‚¬ëž‘í•´ìš” ♡
I love you.
*/
MSG_LOVE_SKILL = 0x2f7,
#endif
#if PACKETVER >= 20031124
-/*20031124 to 20180621
+/*20031124 to 20180704
화면 ë˜ëŠ” ì´íŽ™íŠ¸ê°€ ë°ì•„ì„œ ëˆˆì— ë¶€ë‹´ì´ ë˜ì‹œëŠ”ë¶„ë“¤ì€ ëª¨ë‹ˆí„°ì˜ ë°ê¸°ë¥¼ 조정해주시기바ëžë‹ˆë‹¤.
Please adjust your monitor/video brightness if effects appear too bright.
*/
MSG_EXPLAIN_BRIGHT = 0x2f8,
#endif
#if PACKETVER >= 20031218
-/*20031218 to 20180621
+/*20031218 to 20180704
전체화면모드가 잘안ë˜ëŠ” ê²½ìš°ì— ê²Œìž„ì‹¤í–‰í›„ ALT+TAB으로 í™”ë©´ì„ ì „í™˜í•˜ë©´ 잘ë˜ëŠ” ê¸°ì¢…ë„ ìžˆìŠµë‹ˆë‹¤
If full screen mode fails to work, it is suggested you alt+tab [or ctrl+esc] to inactivate and reactivate the Ragnarok Client.
*/
MSG_EXPLAIN_ALTTAB = 0x2f9,
#endif
#if PACKETVER >= 20031223
-/*20031223 to 20180621
+/*20031223 to 20180704
(%d 명) - 유료서버
(%d players) - Pay to Play Server
*/
MSG_SERVER_PROPERTY_PAY = 0x2fa,
-/*20031223 to 20180621
+/*20031223 to 20180704
(%d 명) - 무료서버
(%d players) - Free Server
*/
MSG_SERVER_PROPERTY_FREE = 0x2fb,
-/*20031223 to 20180621
+/*20031223 to 20180704
무료 회ì›ì€ 유료 서버로 ì ‘ì†í•  수 없습니다.
Trial players can't connect Pay to Play Server.
*/
@@ -3969,112 +3969,112 @@ Trial players can't connect Pay to Play Server.
#if PACKETVER >= 20031230
/*20031230 to 20040108
마우스 ìš°í´ë¦­ìœ¼ë¡œ F9ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì“¸ìˆ˜ìžˆìŠµë‹ˆë‹¤ [QUICK ON]
-20040112 to 20180621
+20040112 to 20180704
마우스 ìš°í´ë¦­ìœ¼ë¡œ F9ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì“¸ìˆ˜ìžˆìŠµë‹ˆë‹¤ [/q1 ON]
Right click menu skills for F9 are Enabled.[/q1 ON]
*/
MSG_QUICKSPELL_ON = 0x2fd,
/*20031230 to 20040108
마우스 ìš°í´ë¦­ìœ¼ë¡œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ì§€ 못합니다 [QUICK OFF]
-20040112 to 20180621
+20040112 to 20180704
마우스 ìš°í´ë¦­ìœ¼ë¡œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ì§€ 못합니다 [/q1 OFF]
Right click menu skills for F9 are Disabled.[/q1 OFF]
*/
MSG_QUICKSPELL_OFF = 0x2fe,
/*20031230 to 20040119
/quickspell : 마우스 ìš°í´ë¦­ìœ¼ë¡œ F9ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ On Off
-20040126 to 20180621
+20040126 to 20180704
/quickspell : 마우스 ìš°í´ë¦­ìœ¼ë¡œ F9ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ On Off
/quickspell: Right-click menu enables you to use skills assigned to the F9 hotkey. On | Off
*/
MSG_EXPLAIN_QUICKSPELL = 0x2ff,
#endif
#if PACKETVER >= 20040112
-/*20040112 to 20180621
+/*20040112 to 20180704
ë§ˆìš°ìŠ¤ì˜ WHEELì„ ì‚¬ìš©í•´ì„œ F7 ê³¼ F8ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ [/q2 ON]
Mouse wheel skills for F7 and F8 are Enabled.[/q2 ON]
*/
MSG_QUICKSPELL2_ON = 0x300,
-/*20040112 to 20180621
+/*20040112 to 20180704
마우스 WHEELë¡œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ì§€ 못합니다 [/q2 OFF]
Mouse wheel skills for F7 and F8 are Disabled.[/q2 OFF]
*/
MSG_QUICKSPELL2_OFF = 0x301,
/*20040112 to 20040119
/quickspell2 : 마우스 WHEELë¡œ F7 ê³¼ F8ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ On Off
-20040126 to 20180621
+20040126 to 20180704
/quickspell2 : 마우스 WHEELì„ ìœ„,아래로 굴려서 F7ê³¼F8ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ On Off
/quickspell2: By rolling the mouse wheel up and down, you are able to use skills registered on F7 and F8 hotkeys. On | Off
*/
MSG_EXPLAIN_QUICKSPELL2 = 0x302,
-/*20040112 to 20180621
+/*20040112 to 20180704
/q3 : /quickspell (/q1) + /quickspell2 (/q2)
/q3: /quickspell (/q1) + /quickspell2 (/q2)
*/
MSG_EXPLAIN_QUICKSPELL3 = 0x303,
#endif
#if PACKETVER >= 20040202
-/*20040202 to 20180621
+/*20040202 to 20180704
/찌릿
/bzz
*/
MSG_EMOTION_STARE = 0x304,
-/*20040202 to 20180621
+/*20040202 to 20180704
/ë°¥
/rice
*/
MSG_EMOTION_HUNGRY = 0x305,
-/*20040202 to 20180621
+/*20040202 to 20180704
/ë©‹ì ¸
/awsm
*/
MSG_EMOTION_COOL = 0x306,
-/*20040202 to 20180621
+/*20040202 to 20180704
/메롱
/meh
*/
MSG_EMOTION_MERONG = 0x307,
-/*20040202 to 20180621
+/*20040202 to 20180704
/부ë„
/shy
*/
MSG_EMOTION_SHY = 0x308,
-/*20040202 to 20180621
+/*20040202 to 20180704
/쓱쓱
/pat
*/
MSG_EMOTION_GOODBOY = 0x309,
-/*20040202 to 20180621
+/*20040202 to 20180704
/ì— íƒ
/mp
*/
MSG_EMOTION_SPTIME = 0x30a,
-/*20040202 to 20180621
+/*20040202 to 20180704
/질질
/slur
*/
MSG_EMOTION_SEXY = 0x30b,
-/*20040202 to 20180621
+/*20040202 to 20180704
/컴온
/com
*/
MSG_EMOTION_COMEON = 0x30c,
-/*20040202 to 20180621
+/*20040202 to 20180704
/하품
/yawn
*/
MSG_EMOTION_SLEEPY = 0x30d,
-/*20040202 to 20180621
+/*20040202 to 20180704
/축하
/grat
*/
MSG_EMOTION_CONGRATULATION = 0x30e,
-/*20040202 to 20180621
+/*20040202 to 20180704
/피íƒ
/hp
*/
MSG_EMOTION_HPTIME = 0x30f,
-/*20040202 to 20180621
+/*20040202 to 20180704
/ì´ëª¨ì…˜ : 현재 사용가능한 ì´ëª¨ì…˜ì˜ 리스트를 ë³´ì—¬ì¤ë‹ˆë‹¤.
/emotion: views the emoticon list.
*/
@@ -4083,31 +4083,31 @@ Mouse wheel skills for F7 and F8 are Disabled.[/q2 OFF]
#if PACKETVER >= 20040223
/*20040223 to 20040302
키보드를 ì´ìš©í•´ì„œ 스킬단축창2 와 3ì˜ ìŠ¤í‚¬ë“¤ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. [/bm ON]
-20040308 to 20180621
+20040308 to 20180704
키보드를 ì´ìš©í•´ì„œ 스킬단축창 1,2,3ì˜ ìŠ¤í‚¬ë“¤ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. [/bm ON]
Skills assigned to shortcut windows 1, 2, 3 are Enabled. [/bm ON]
*/
MSG_BATTLE_ON = 0x311,
/*20040223 to 20040302
키보드를 ì´ìš©í•´ì„œ 스킬단축창2 와 3ì˜ ìŠ¤í‚¬ë“¤ì„ ì‚¬ìš©í•˜ì§€ëª»í•©ë‹ˆë‹¤. [/bm OFF]
-20040308 to 20180621
+20040308 to 20180704
키보드를 ì´ìš©í•´ì„œ 스킬단축창 1,2,3ì˜ ìŠ¤í‚¬ë“¤ì„ ì‚¬ìš©í•˜ì§€ëª»í•©ë‹ˆë‹¤. [/bm OFF]
Skills assigned to shortcut windows 1, 2, 3 are Disabled. [/bm OFF]
*/
MSG_BATTLE_OFF = 0x312,
-/*20040223 to 20180621
+/*20040223 to 20180704
/battlemode : Q ~ O 를 누르면 스킬단축창2ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤.
/battlemode: allows you to use skills assigned to Shortcut Window 2 by pressing Q ~ O keys.
*/
MSG_EXPLAIN_BATTLE = 0x313,
/*20040223 to 20040302
A ~ L ì„ ëˆ„ë¥´ë©´ 스킬단축창3ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤. On Off
-20040308 to 20180621
+20040308 to 20180704
A ~ L ì„ ëˆ„ë¥´ë©´ 스킬단축창3ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤.
A ~ L keys allow you to use skills assigned to Shortcut Window 3.
*/
MSG_EXPLAIN_BATTLE2 = 0x314,
-/*20040223 to 20180621
+/*20040223 to 20180704
ë¼ê·¸ë‚˜ë¡œí¬ë¥¼ 실행하실때 다른 í”„ë¡œê·¸ëž¨ì„ ë„우시면 ê²Œìž„ì´ ëŠë ¤ì§ˆìˆ˜ë„있습니다.
Please remember, programs running in the background while playing may affect the game's performance.
*/
@@ -4116,26 +4116,26 @@ Please remember, programs running in the background while playing may affect the
#if PACKETVER >= 20040302
/*20040302 to 20041130
천사님 제 목소리 들리세여? ^^;
-20041206 to 20180621
+20041206 to 20180704
천사님 제 목소리 들리세요? ^^;
Dear angel, can you hear my voice?
*/
MSG_SUPERNOVICE1 = 0x316,
-/*20040302 to 20180621
+/*20040302 to 20180704
슈í¼ë…¸ë¹„스
Super Novice
*/
MSG_SUPERNOVICE2 = 0x317,
/*20040302 to 20041130
예여~
-20041206 to 20180621
+20041206 to 20180704
예요~
Super Novice~
*/
MSG_SUPERNOVICE3 = 0x318,
/*20040302 to 20041130
ì € 좀 ë„와주세여~ ã… _ã… 
-20041206 to 20180621
+20041206 to 20180704
ì € 좀 ë„와주세요~ ã… _ã… 
Help me out~ Please~ T_T
*/
@@ -4144,92 +4144,92 @@ Help me out~ Please~ T_T
#if PACKETVER >= 20040308
/*20040308 to 20041011
ìž…ì–‘ì„ ìš”ì²­í•´ì™”ìŠµë‹ˆë‹¤. 승낙하시겠습니까?
-20041018 to 20180621
+20041018 to 20180704
님께서 ë‹¹ì‹ ì„ ìž…ì–‘ì‹œí‚¤ê³  싶어하십니다. 승낙하시겠습니까?
wishes to adopt you. Do you accept?
*/
MSG_SUGGEST_BABY = 0x31a,
-/*20040308 to 20180621
+/*20040308 to 20180704
Z ~ > ì„ ëˆ„ë¥´ë©´ 스킬단축창1ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤. On Off
Z ~ > keys allow you to use skills assigned on shortcut window 1. On | Off
*/
MSG_EXPLAIN_BATTLE3 = 0x31b,
-/*20040308 to 20180621
+/*20040308 to 20180704
Space를 한번 ëˆ„ë¥¸ë’¤ì— ê¸€ìžë¥¼ 입력하면 ì±„íŒ…ì„ í• ìˆ˜ìžˆìŠµë‹ˆë‹¤.
Press the space bar to Chat when in Battle mode [/battlemode | /bm].
*/
MSG_EXPLAIN_BATTLE4 = 0x31c,
-/*20040308 to 20180621
+/*20040308 to 20180704
게임가드 파ì¼ì´ 없거나 변조ë˜ì—ˆìŠµë‹ˆë‹¤. 게임가드 ì…‹ì—… 파ì¼ì„ 설치해보시기 ë°”ëžë‹ˆë‹¤.
"Either there's no Game Guard installed on the program or Game Guard is cracked. Please, try to reinstall Game Guard from its setup file."
*/
MSG_NPGAMEMON_ERROR_AUTH_GAMEGUARD = 0x31d,
-/*20040308 to 20180621
+/*20040308 to 20180704
윈ë„ìš°ì˜ ì¼ë¶€ 시스템 파ì¼ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤. ì¸í„°ë„· ìµìŠ¤í”Œë¡œëŸ¬(IE)를 다시 설치해보시기 ë°”ëžë‹ˆë‹¤.
Some of Windows system files have been damaged. Please re-install your Internet Explorer.
*/
MSG_NPGAMEMON_ERROR_CRYPTOAPI = 0x31e,
-/*20040308 to 20180621
+/*20040308 to 20180704
게임가드 ì‹¤í–‰ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. 게임가드 ì…‹ì—… 파ì¼ì„ 다시 설치해보시기 ë°”ëžë‹ˆë‹¤.
"Failed to run Game Guard. Please, try to reinstall Game Guard from its setup file."
*/
MSG_NPGAMEMON_ERROR_EXECUTE = 0x31f,
-/*20040308 to 20180621
+/*20040308 to 20180704
불법 í”„ë¡œê·¸ëž¨ì´ ë°œê²¬ë˜ì—ˆìŠµë‹ˆë‹¤. 불필요한 í”„ë¡œê·¸ëž¨ì„ ì¢…ë£Œí•œ 후 다시 실행해보시기 ë°”ëžë‹ˆë‹¤.
"At least one hazardous program has been detected. Please, terminate all the unnecessary programs before executing Game Guard."
*/
MSG_NPGAMEMON_ERROR_ILLEGAL_PRG = 0x320,
-/*20040308 to 20180621
+/*20040308 to 20180704
게임가드 ì—…ë°ì´íŠ¸ë¥¼ 취소하셨습니다. ì ‘ì†ì´ ê³„ì† ë˜ì§€ ì•Šì„ ê²½ìš° ì¸í„°ë„· ë° ë°©í™”ë²½ ìƒíƒœë¥¼ ì ê²€í•´ë³´ì‹œê¸° ë°”ëžë‹ˆë‹¤.
"Game Guard update is canceled. If the disconnection continues, please, check your internet or firewall settings."
*/
MSG_NPGMUP_ERROR_ABORT = 0x321,
-/*20040308 to 20180621
+/*20040308 to 20180704
게임가드 ì—…ë°ì´íŠ¸ 서버 ì ‘ì†ì— 실패하였습니다. ìž ì‹œ 후 ìž¬ì‹œë„ í•´ë³´ê±°ë‚˜, ì¸í„°ë„· ë° ë°©í™”ë²½ ìƒíƒœë¥¼ ì ê²€í•´ 보시기 ë°”ëžë‹ˆë‹¤.
"Failed to connect to Game Guard update server. Try to connect again later, or try to check the internet or firewall settings."
*/
MSG_NPGMUP_ERROR_CONNECT = 0x322,
-/*20040308 to 20180621
+/*20040308 to 20180704
게임가드 ì—…ë°ì´íŠ¸ë¥¼ 완료하지 못 했습니다. ë°”ì´ëŸ¬ìŠ¤ 검사를 해보시거나, PC 관리 í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•˜ì‹œë©´ ì„¤ì •ì„ ì¡°ì •í•œ 후 ê²Œìž„ì„ ì‹¤í–‰í•´ 보시기 ë°”ëžë‹ˆë‹¤.
"Can't complete Game Guard update process. Please, try to execute a vaccine program to remove viruses. Or, please try to modify the settings of your PC managing tool if you are using any."
*/
MSG_NPGMUP_ERROR_AUTH = 0x323,
#endif
#if PACKETVER >= 20040311
-/*20040311 to 20180621
+/*20040311 to 20180704
/notrade : ê±°ëž˜ì‹ ì²­ì„ ìžë™ìœ¼ë¡œ 거절합니다 On Off
/notrade: Declines trade offers automatically. On | Off
*/
MSG_EXPLAIN_NOTRADE = 0x324,
/*20040311 to 20040804
ê±°ëž˜ì‹ ì²­ì„ ìžë™ìœ¼ë¡œ 거절합니다 [/nt ON]
-20040809 to 20180621
+20040809 to 20180704
거래신청과 친구등ë¡ìš”ì²­ì„ ìžë™ìœ¼ë¡œ 거절합니다 [/nt ON]
Auto decline trade offers has been Enabled. [/nt ON]
*/
MSG_NOTRADE_ON = 0x325,
/*20040311 to 20040804
ê±°ëž˜ì‹ ì²­ì„ ì •ìƒì ìœ¼ë¡œ 받습니다 [/nt OFF]
-20040809 to 20180621
+20040809 to 20180704
거래신청과 친구등ë¡ìš”ì²­ì„ ì •ìƒì ìœ¼ë¡œ 받습니다 [/nt OFF]
Auto decline trade offers has been Disabled. [/nt OFF]
*/
MSG_NOTRADE_OFF = 0x326,
#endif
#if PACKETVER >= 20040329
-/*20040329 to 20180621
+/*20040329 to 20180704
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— 30000ê°œ ì´ìƒì€ 살수 없습니다.
You cannot buy more than 30,000ea items at once.
*/
MSG_LIMIT_BUY_ITEM = 0x327,
-/*20040329 to 20180621
+/*20040329 to 20180704
재료가 충분하지 않습니다.
You do not have enough ingredients.
*/
MSG_NOT_ENOUGH_SOURCE = 0x328,
#endif
#if PACKETVER >= 20040419
-/*20040419 to 20180621
+/*20040419 to 20180704
%sì— ê³„ì •ì •ë³´ê°€ 남아있습니다.
Login information remains at %s.
*/
@@ -4240,155 +4240,155 @@ Login information remains at %s.
í•´í‚¹ì¡°ì‚¬ì— ê´€ë ¨ë˜ì–´ %s 까지 로그ì¸ì„ 금지하고 있습니다.
20040503 to 20040906
해킹 관련 조사를 위해 로그ì¸ì´ ê¸ˆì§€ë˜ ì—ˆìŠµë‹ˆë‹¤. ìžì„¸í•œ 문ì˜ëŠ” 해킹관련 ë©”ì¼ë¡œ 하여주시기 ë°”ëžë‹ˆë‹¤.
-20040913 to 20180621
+20040913 to 20180704
계정ë„ìš© 조사를 위해 로그ì¸ì´ 금지ë˜ì—ˆìŠµë‹ˆë‹¤. ìžì„¸í•œ 문ì˜ëŠ” 계정ë„ìš© 관련 ë¬¸ì˜ ë©”ì¼ë¡œ 해주시기 ë°”ëžë‹ˆë‹¤.
Account has been locked for a hacking investigation. Please contact the GM Team for more information.
*/
MSG_HACKING_INVESTIGATION = 0x32a,
/*20040423 to 20040429
ë²„ê·¸ì¡°ì‚¬ì— ê´€ë ¨ë˜ì–´ %s 까지 로그ì¸ì„ 금지하고 있습니다.
-20040503 to 20180621
+20040503 to 20180704
귀하는 버그관련 조사중ì´ë¯€ë¡œ ì¼ì‹œì ìœ¼ë¡œ ì ‘ì†ì„ 금합니다
This account has been temporarily prohibited from login due to a bug-related investigation.
*/
MSG_BUG_INVESTIGATION = 0x32b,
-/*20040423 to 20180621
+/*20040423 to 20180704
수리가능한 ì•„ì´í…œ
Repairable items
*/
MSG_REPAIRITEMLIST = 0x32c,
#endif
#if PACKETVER >= 20040426
-/*20040426 to 20180621
+/*20040426 to 20180704
ì•„ì´í…œ 수리 성공
Item has been successfully repaired.
*/
MSG_ITEM_REPAIR_SUCCEESS = 0x32d,
-/*20040426 to 20180621
+/*20040426 to 20180704
ì•„ì´í…œ 수리 실패 (재료 ë˜ëŠ” ìƒëŒ€ì™€ì˜ ê±°ë¦¬ë“±ì„ í™•ì¸í•´ì£¼ì‹­ì‹œìš”)
You have failed to repair this item. Please check the distance between you and opponent.
*/
MSG_ITEM_REPAIR_FAIL = 0x32e,
#endif
#if PACKETVER >= 20040531
-/*20040531 to 20180621
+/*20040531 to 20180704
시스템 ìƒí™©ì„ 지ì†ì ìœ¼ë¡œ ì²´í¬ í•©ë‹ˆë‹¤.[ìš´ì˜ìžëª¨ë“œ] [/sc ON]
System process enabled [GM mode] [/sc ON]
*/
MSG_SYSTEM_CHECK_ON = 0x32f,
-/*20040531 to 20180621
+/*20040531 to 20180704
시스템 ìƒí™©ì„ 지ì†ì ìœ¼ë¡œ ì²´í¬ í•˜ì§€ 않습니다.[ìš´ì˜ìžëª¨ë“œ] [/sc OFF]
System process disabled [GM mode] [/sc OFF]
*/
MSG_SYSTEM_CHECK_OFF = 0x330,
-/*20040531 to 20180621
+/*20040531 to 20180704
/systemcheck : 시스템 ìƒí™©ì„ 지ì†ì ìœ¼ë¡œ ì²´í¬ í•©ë‹ˆë‹¤.[ìš´ì˜ìžëª¨ë“œ]
/systemcheck: Check the system process [GM mode] On | Off
*/
MSG_EXPLAIN_SYSTEM_CHECK = 0x331,
#endif
#if PACKETVER >= 20040614
-/*20040614 to 20180621
+/*20040614 to 20180704
(%s)ë‹˜ì´ ì¹œêµ¬ ì‹ ì²­ì„ í•˜ì…¨ìŠµë‹ˆë‹¤. 친구가 ë˜ì‹œê² ìŠµë‹ˆê¹Œ?
(%s) wishes to be friends with you. Would you like to accept?
*/
MSG_SUGGEST_JOIN_FRIEND = 0x332,
#endif
#if PACKETVER >= 20040621
-/*20040621 to 20180621
+/*20040621 to 20180704
ë” ì´ìƒ 친구 등ë¡ì„ 하실수 없습니다.
Your Friend List is full.
*/
MSG_FRIEND_ADD_ME_OVERSIZE = 0x333,
-/*20040621 to 20180621
+/*20040621 to 20180704
(%s)ë‹˜ì´ ë” ì´ìƒ 친구 등ë¡ì„ 하실수 없습니다.
(%s)'s Friend List is full.
*/
MSG_FRIEND_ADD_OTHER_OVERSIZE = 0x334,
-/*20040621 to 20180621
+/*20040621 to 20180704
(%s)님과 친구가 ë˜ì…¨ìŠµë‹ˆë‹¤.
You have become friends with (%s).
*/
MSG_FRIEND_ADD_SUCCEED = 0x335,
-/*20040621 to 20180621
+/*20040621 to 20180704
(%s)ë‹˜ì´ ì¹œêµ¬ ë˜ê¸°ë¥¼ ì›í•˜ì§€ 않습니다.
(%s) does not want to be friends with you.
*/
MSG_FRIEND_ADD_FALSE = 0x336,
-/*20040621 to 20180621
+/*20040621 to 20180704
ì´ ìºë¦­í„°ëŠ” %s 까지 블럭ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
This character will be blocked to use until %s.
*/
MSG_BLOCKED = 0x337,
/*20040621 to 20040621
천만제니ì´ìƒì„ 입력하신 ì•„ì´í…œì€ 천만제니로 íŒë§¤ë©ë‹ˆë‹¤.
-20040628 to 20180621
+20040628 to 20180704
천만제니 ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ ì²œë§Œì œë‹ˆë¡œ íŒë§¤ë©ë‹ˆë‹¤.
Price will be fixed at 10,000,000 zeny, even if you enter higher price.
*/
MSG_OVERPRICE = 0x338,
#endif
#if PACKETVER >= 20040628
-/*20040628 to 20180621
+/*20040628 to 20180704
(ì ìŒ)
(Very low)
*/
MSG_LITTLEUSER = 0x339,
-/*20040628 to 20180621
+/*20040628 to 20180704
(약간 ì ìŒ)
(Low)
*/
MSG_ALITTLEUSER = 0x33a,
-/*20040628 to 20180621
+/*20040628 to 20180704
(보통)
(Normal)
*/
MSG_NORMLEUSER = 0x33b,
-/*20040628 to 20180621
+/*20040628 to 20180704
(많ìŒ)
(High)
*/
MSG_MANYUSER = 0x33c,
-/*20040628 to 20180621
+/*20040628 to 20180704
(매우 많ìŒ)
(Very high)
*/
MSG_VERYMANYUSER = 0x33d,
/*20040628 to 20040714
ë¹„ë§¤ë„ˆì— ì˜í•´ GM으로부터 채팅금지가 %d 분간 ì ìš©ë©ë‹ˆë‹¤.
-20040726 to 20180621
+20040726 to 20180704
ë¹„ë§¤ë„ˆì— ì˜í•´ ìš´ì˜ìžë¡œë¶€í„° 채팅금지가 ì ìš©ë©ë‹ˆë‹¤.
You have been blocked from using chat and skills for %d minutes by the GM Team.
*/
MSG_GM_BAD_MANNER_START = 0x33e,
-/*20040628 to 20180621
+/*20040628 to 20180704
GMì— ì˜í•œ 채팅금지가 %d 분 남아 있습니다.
%d minutes remain until release from the GM penalty.
*/
MSG_GM_BAD_MANNER_REMAIN = 0x33f,
-/*20040628 to 20180621
+/*20040628 to 20180704
GMì— ì˜í•œ 채팅금지가 해지 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been released from the GM penalty.
*/
MSG_GM_BAD_MANNER_END = 0x340,
/*20040628 to 20040714
ë„ë°° 방지 시스템으로 ì¸í•œ 채팅금지가 %d 분간 ì ìš©ë©ë‹ˆë‹¤.
-20040726 to 20180621
+20040726 to 20180704
ë„ë°° 방지 시스템으로 ì¸í•œ ìžë™ 채팅금지가 ì ìš©ë©ë‹ˆë‹¤.
You have been blocked from using chat and skills for %d as an automatic penalty.
*/
MSG_AUTO_BAD_MANNER_START = 0x341,
-/*20040628 to 20180621
+/*20040628 to 20180704
ë„ë°° 방지 시스템으로 ì¸í•œ 채팅금지가 %d 분 남아 있습니다.
%d minutes remain until release from auto penalty.
*/
MSG_AUTO_BAD_MANNER_REMAIN = 0x342,
-/*20040628 to 20180621
+/*20040628 to 20180704
ë„ë°° 방지 시스템으로 ì¸í•œ 채팅금지가 해지ë˜ì—ˆìŠµë‹ˆë‹¤. 게임진행 ì‹œì—는 ë„ë°°ì— ëŒ€í•´ì„œ 주ì˜í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.
You have been released from the auto penalty. Please refrain from spamming in-game.
*/
MSG_AUTO_BAD_MANNER_END = 0x343,
-/*20040628 to 20180621
+/*20040628 to 20180704
%s님과 %së‹˜ì´ ì´í˜¼í•˜ì…¨ìŠµë‹ˆë‹¤.
%s and %s have divorced from each other.
*/
@@ -4397,7 +4397,7 @@ You have been released from the auto penalty. Please refrain from spamming in-ga
#if PACKETVER >= 20040705
/*20040705 to 20041108
星鬪士 %sì˜ íƒœì–‘ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ íƒœì–‘ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Solar Space.
20041220 to 20050816
@@ -4406,7 +4406,7 @@ You have been released from the auto penalty. Please refrain from spamming in-ga
MSG_STARPLACE1 = 0x345,
/*20040705 to 20041108
星鬪士 %sì˜ ë‹¬ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ ë‹¬ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Luna Space.
20041220 to 20050816
@@ -4415,7 +4415,7 @@ You have been released from the auto penalty. Please refrain from spamming in-ga
MSG_STARPLACE2 = 0x346,
/*20040705 to 20041108
星鬪士 %sì˜ ë³„ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ ë³„ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Stellar Space.
20041220 to 20050816
@@ -4426,7 +4426,7 @@ You have been released from the auto penalty. Please refrain from spamming in-ga
星鬪士 %sì˜ íƒœì–‘ì˜ ìž¥ì†Œ : %s
20040804 to 20041108
星鬪士 %sì˜ íƒœì–‘ì˜ ìž¥ì†ŒëŠ” %s 입니다
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ íƒœì–‘ì˜ ìž¥ì†ŒëŠ” %s 입니다
Gravity %s's Solar Space: %s
20041220 to 20050816
@@ -4437,7 +4437,7 @@ Gravity %s's Solar Space: %s
星鬪士 %sì˜ ë‹¬ì˜ ìž¥ì†Œ : %s
20040804 to 20041108
星鬪士 %sì˜ ë‹¬ì˜ ìž¥ì†ŒëŠ” %s 입니다
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ ë‹¬ì˜ ìž¥ì†ŒëŠ” %s 입니다
Gravity %s's Luna Space: %s
20041220 to 20050816
@@ -4448,7 +4448,7 @@ Gravity %s's Luna Space: %s
星鬪士 %sì˜ ë³„ì˜ ìž¥ì†Œ : %s
20040804 to 20041108
星鬪士 %sì˜ ë³„ì˜ ìž¥ì†ŒëŠ” %s 입니다
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ ë³„ì˜ ìž¥ì†ŒëŠ” %s 입니다
Gravity %s's Stellar Space: %s
20041220 to 20050816
@@ -4459,7 +4459,7 @@ Gravity %s's Stellar Space: %s
#if PACKETVER >= 20040706
/*20040706 to 20041108
星鬪士 %sì˜ íƒœì–‘ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ íƒœì–‘ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Solar Monster.
20041220 to 20050816
@@ -4468,7 +4468,7 @@ Gravity %s's Stellar Space: %s
MSG_STARMONSTER1 = 0x34b,
/*20040706 to 20041108
星鬪士 %sì˜ ë‹¬ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ ë‹¬ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Luna Monster.
20041220 to 20050816
@@ -4477,7 +4477,7 @@ Gravity %s's Stellar Space: %s
MSG_STARMONSTER2 = 0x34c,
/*20040706 to 20041108
星鬪士 %sì˜ ë³„ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ ë³„ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Stellar Monster.
20041220 to 20050816
@@ -4488,7 +4488,7 @@ Gravity %s's Stellar Space: %s
星鬪士 %sì˜ íƒœì–‘ì˜ ëª¬ìŠ¤í„° : %s
20040804 to 20041108
星鬪士 %sì˜ íƒœì–‘ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ íƒœì–‘ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
Gravity %s's Solar Monster: %s
20041220 to 20050816
@@ -4499,7 +4499,7 @@ Gravity %s's Solar Monster: %s
星鬪士 %sì˜ ë‹¬ì˜ ëª¬ìŠ¤í„° : %s
20040804 to 20041108
星鬪士 %sì˜ ë‹¬ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ ë‹¬ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
Gravity %s's Luna Monster: %s
20041220 to 20050816
@@ -4510,7 +4510,7 @@ Gravity %s's Luna Monster: %s
星鬪士 %sì˜ ë³„ì˜ ëª¬ìŠ¤í„° : %s
20040804 to 20041108
星鬪士 %sì˜ ë³„ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
-20041115 to 20180621
+20041115 to 20180704
æ‹³è– %sì˜ ë³„ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
Gravity %s's Stellar Monster: %s
20041220 to 20050816
@@ -4519,278 +4519,278 @@ Gravity %s's Stellar Monster: %s
MSG_STARMONSTER6 = 0x350,
#endif
#if PACKETVER >= 20040707
-/*20040707 to 20180621
+/*20040707 to 20180704
/window : ì°½ 위치 ì´ë™ì‹œ 다른 창과 달ë¼ë¶™ëŠ” ì†ì„±ì´ 들어갑니다 On Off
/window: Display windows will snap/dock together. On | Off
*/
MSG_EXPLAIN_WINDOW = 0x351,
-/*20040707 to 20180621
+/*20040707 to 20180704
ì°½ 위치 ì´ë™ì‹œ 다른 창과 잘 붙습니다 [/wi ON]
Display window docking enabled. [/wi ON]
*/
MSG_WINDOW_ON = 0x352,
-/*20040707 to 20180621
+/*20040707 to 20180704
ì°½ 위치 ì´ë™ì‹œ 다른 창과 붙으려는 ì†ì„±ì„ 가지지 않습니다 [/wi OFF]
Display window docking disabled. [/wi OFF]
*/
MSG_WINDOW_OFF = 0x353,
#endif
#if PACKETVER >= 20040712
-/*20040712 to 20180621
+/*20040712 to 20180704
/pvpinfo : ìžì‹ ì˜ PVP 승패와 PVP í¬ì¸íŠ¸ë¥¼ ì•Œ 수 있습니다.
/pvpinfo: shows your PVP result and PVP points.
*/
MSG_EXPLAIN_PVP_INFO = 0x354,
-/*20040712 to 20180621
+/*20040712 to 20180704
현재 %d승, %d패, PVPí¬ì¸íŠ¸ëŠ” %d입니다.
You have won %d times and have lost %d times in PVP. Current points %d.
*/
MSG_PVP_INFO = 0x355,
#endif
#if PACKETVER >= 20040726
-/*20040726 to 20180621
+/*20040726 to 20180704
매너 í¬ì¸íŠ¸ë¥¼ 성공ì ìœ¼ë¡œ 보냈습니다.
A manner point has been successfully aligned.
*/
MSG_SEND_MANNER_POINT = 0x356,
#endif
#if PACKETVER >= 20040809
-/*20040809 to 20180621
+/*20040809 to 20180704
현재 ì´ê³³ì€ PK 가능 지역입니다. 불ì˜ì˜ ê³µê²©ì— ìœ ì˜ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
You are in a PK area. Please beware of sudden attack.
*/
MSG_PKZONE = 0x357,
#endif
#if PACKETVER >= 20040817
-/*20040817 to 20180621
+/*20040817 to 20180704
게임가드 ì—…ë°ì´íŠ¸ê°€ ë°”ì´ëŸ¬ìŠ¤ë‚˜ 스파ì´ì›¨ì–´ì™€ì˜ 충ëŒë¡œ 실패했습니다. 백신 프로그램/스파ì´ì›¨ì–´ 제거 í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•œ 후 ì ‘ì†í•´ 주십시기 ë°”ëžë‹ˆë‹¤
Game Guard update has been failed when either Virus or Spyware conflicted with. Please, Uninstall Spyware and Virus protection program before you log in.
*/
MSG_NPGAMEMON_ERROR_100ERROR = 0x358,
#endif
#if PACKETVER >= 20040823
-/*20040823 to 20180621
+/*20040823 to 20180704
윈ë„ìš° 호환성 문제로 í”„ë¡œê·¸ëž¨ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. ê²Œìž„ì„ ë‹¤ì‹œ 실행해 주시기 ë°”ëžë‹ˆë‹¤
Program has encountered an error related to Windows compatibility. Please start the game again.
*/
MSG_NPGAMEMON_XP_COMPATIBILITY = 0x359,
#endif
#if PACKETVER >= 20040906
-/*20040906 to 20180621
+/*20040906 to 20180704
채팅, 스킬, ì•„ì´í…œì„ 사용할수없게 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been blocked from chatting, using skills and items.
*/
MSG_PK_HONOR = 0x35a,
-/*20040906 to 20180621
+/*20040906 to 20180704
ìºë¦­í„° ì‚­ì œ 작업중ì´ë¯€ë¡œ ì ‘ì†ì´ ì¼ì‹œì ìœ¼ë¡œ 제한ë©ë‹ˆë‹¤.
Login is temporarily unavailable while this character is being deleted.
*/
MSG_DELETING_CHAR = 0x35b,
-/*20040906 to 20180621
+/*20040906 to 20180704
결혼 ìƒëŒ€ìžì˜ ìºë¦­í„° ì‚­ì œ 작업중ì´ë¯€ë¡œ ì ‘ì†ì´ ì¼ì‹œì ìœ¼ë¡œ 제한ë©ë‹ˆë‹¤.
Login is temporarily unavailable while your spouse character is being deleted.
*/
MSG_DELETING_SPOUSE_CHAR = 0x35c,
#endif
#if PACKETVER >= 20040913
-/*20040913 to 20180621
+/*20040913 to 20180704
Novice
*/
MSG_NOVICE = 0x35d,
-/*20040913 to 20180621
+/*20040913 to 20180704
Swordman
*/
MSG_SWORDMAN = 0x35e,
-/*20040913 to 20180621
+/*20040913 to 20180704
Magician
Mage
*/
MSG_MAGICIAN = 0x35f,
-/*20040913 to 20180621
+/*20040913 to 20180704
Archer
*/
MSG_ARCHER = 0x360,
-/*20040913 to 20180621
+/*20040913 to 20180704
Acolyte
*/
MSG_ACOLYTE = 0x361,
-/*20040913 to 20180621
+/*20040913 to 20180704
Merchant
*/
MSG_MERCHANT = 0x362,
-/*20040913 to 20180621
+/*20040913 to 20180704
Thief
*/
MSG_THIEF = 0x363,
-/*20040913 to 20180621
+/*20040913 to 20180704
Knight
*/
MSG_KNIGHT = 0x364,
-/*20040913 to 20180621
+/*20040913 to 20180704
Prieset
Priest
*/
MSG_PRIEST = 0x365,
-/*20040913 to 20180621
+/*20040913 to 20180704
Wizerd
Wizard
*/
MSG_WIZARD = 0x366,
-/*20040913 to 20180621
+/*20040913 to 20180704
Blacksmith
*/
MSG_BLACKSMITH = 0x367,
-/*20040913 to 20180621
+/*20040913 to 20180704
Hunter
*/
MSG_HUNTER = 0x368,
-/*20040913 to 20180621
+/*20040913 to 20180704
Assassin
*/
MSG_ASSASSIN = 0x369,
-/*20040913 to 20180621
+/*20040913 to 20180704
Novice
*/
MSG_NOVICE_W = 0x36a,
-/*20040913 to 20180621
+/*20040913 to 20180704
Swordman
*/
MSG_SWORDMAN_W = 0x36b,
-/*20040913 to 20180621
+/*20040913 to 20180704
Magician
Mage
*/
MSG_MAGICIAN_W = 0x36c,
-/*20040913 to 20180621
+/*20040913 to 20180704
Archer
*/
MSG_ARCHER_W = 0x36d,
-/*20040913 to 20180621
+/*20040913 to 20180704
Acolyte
*/
MSG_ACOLYTE_W = 0x36e,
-/*20040913 to 20180621
+/*20040913 to 20180704
Merchant
*/
MSG_MERCHANT_W = 0x36f,
-/*20040913 to 20180621
+/*20040913 to 20180704
Thief
*/
MSG_THIEF_W = 0x370,
-/*20040913 to 20180621
+/*20040913 to 20180704
Knight
*/
MSG_KNIGHT_W = 0x371,
-/*20040913 to 20180621
+/*20040913 to 20180704
Prieset
Priest
*/
MSG_PRIEST_W = 0x372,
-/*20040913 to 20180621
+/*20040913 to 20180704
Wizerd
Wizard
*/
MSG_WIZARD_W = 0x373,
-/*20040913 to 20180621
+/*20040913 to 20180704
Blacksmith
*/
MSG_BLACKSMITH_W = 0x374,
-/*20040913 to 20180621
+/*20040913 to 20180704
Hunter
*/
MSG_HUNTER_W = 0x375,
-/*20040913 to 20180621
+/*20040913 to 20180704
Assassin
*/
MSG_ASSASSIN_W = 0x376,
#endif
#if PACKETVER >= 20041018
-/*20041018 to 20180621
+/*20041018 to 20180704
(%s)ë‹˜ì„ ì•„ì´ë¡œ ìž…ì–‘ì‹ ì²­
Send an adoption request to %s
*/
MSG_REQ_JOIN_BABY = 0x377,
/*20041018 to 20041025
ì•„ì´ê°€ ë˜ì‹œë©´ ì „ìŠ¹ì„ í•˜ì‹¤ìˆ˜ 없게 ë©ë‹ˆë‹¤. ê·¸ëž˜ë„ ê´œì°®ìŠµë‹ˆê¹Œ?
-20041101 to 20180621
+20041101 to 20180704
ì•„ì´ê°€ ë˜ë©´ ì „ìŠ¹ì„ í• ìˆ˜ì—†ê³  ìŠ¤í…Ÿì€ 80ì´ìƒ 올릴수없게ë˜ë©° HP와 SPê°€ 줄어듭니다. ê·¸ëž˜ë„ ê´œì°®ìŠµë‹ˆê¹Œ?
When you become a child, you will be unable to become a Transcendent Class character, all stats will be limited to a maximum of 80, and Max HP/SP will be reduced. Are you sure that you want to be adopted?
*/
MSG_SUGGEST_BABY2 = 0x378,
#endif
#if PACKETVER >= 20041101
-/*20041101 to 20180621
+/*20041101 to 20180704
모든 ë‚˜ìœ ìƒíƒœì´ìƒì´ 제거 ë˜ì—ˆìŠµë‹ˆë‹¤.
All abnormal status effects have been removed.
*/
MSG_GOSPEL1 = 0x379,
-/*20041101 to 20180621
+/*20041101 to 20180704
1분간 모든 ìƒíƒœì´ìƒì— 대해 ë©´ì—­ì´ ë©ë‹ˆë‹¤.
You will be immune to abnormal status effects for the next minute.
*/
MSG_GOSPEL2 = 0x37a,
-/*20041101 to 20180621
+/*20041101 to 20180704
1분간 최대 ìƒëª…ë ¥ì´ í¬ê²Œ 늘어납니다.
Your Max HP will stay increased for the next minute.
*/
MSG_GOSPEL3 = 0x37b,
-/*20041101 to 20180621
+/*20041101 to 20180704
1분간 최대 ë§ˆë²•ë ¥ì´ í¬ê²Œ 늘어납니다.
Your Max SP will stay increased for the next minute.
*/
MSG_GOSPEL4 = 0x37c,
-/*20041101 to 20180621
+/*20041101 to 20180704
1분간 모든 ëŠ¥ë ¥ì´ í¬ê²Œ ìƒìŠ¹í•©ë‹ˆë‹¤.
All of your Stats will stay increased for the next minute.
*/
MSG_GOSPEL5 = 0x37d,
-/*20041101 to 20180621
+/*20041101 to 20180704
1분간 사용하는 ë¬´ê¸°ì— ì„±ìŠ¤ëŸ¬ìš´ ì†ì„±ì´ 부여ë©ë‹ˆë‹¤.
Your weapon will remain blessed with Holy power for the next minute.
*/
MSG_GOSPEL6 = 0x37e,
-/*20041101 to 20180621
+/*20041101 to 20180704
1분간 사용하는 ê°‘ì˜·ì— ì„±ìŠ¤ëŸ¬ìš´ ì†ì„±ì´ 부여ë©ë‹ˆë‹¤.
Your armor will remain blessed with Holy power for the next minute.
*/
MSG_GOSPEL7 = 0x37f,
-/*20041101 to 20180621
+/*20041101 to 20180704
10초간 ë°©ì–´ë ¥ì´ í¬ê²Œ ìƒìŠ¹í•©ë‹ˆë‹¤.
Your Defense will stay increased for the next 10 seconds.
*/
MSG_GOSPEL8 = 0x380,
-/*20041101 to 20180621
+/*20041101 to 20180704
1분간 ê³µê²©ë ¥ì´ í¬ê²Œ ì¦ê°€í•©ë‹ˆë‹¤.
Your Attack strength will be increased for the next minute.
*/
MSG_GOSPEL9 = 0x381,
-/*20041101 to 20180621
+/*20041101 to 20180704
1분간 명중률과 íšŒí”¼ìœ¨ì´ í¬ê²Œ ìƒìŠ¹í•©ë‹ˆë‹¤.
Your Accuracy and Flee Rate will be increased for the next minute.
*/
MSG_GOSPEL10 = 0x382,
#endif
#if PACKETVER >= 20041108
-/*20041108 to 20180621
+/*20041108 to 20180704
ì•„ì´ë¥¼ 한번 ìž…ì–‘í–ˆë˜ ë¶€ë¶€ëŠ” 추가 ìž…ì–‘ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
You cannot adopt more than 1 child.
*/
MSG_BABY1 = 0x383,
-/*20041108 to 20180621
+/*20041108 to 20180704
부부가 둘다 레벨70ì´ ë„˜ì–´ì•¼ ì•„ì´ë¥¼ 입양할수있습니다.
You must be at least character level 70 in order to adopt someone.
*/
MSG_BABY2 = 0x384,
/*20041108 to 20041108
블랙스미스 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
-20041115 to 20180621
+20041115 to 20180704
[POINT] 블랙스미스 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You have been rewarded with %d Blacksmith rank points. Your point total is %d.
*/
MSG_BLACKSMITH_POINT = 0x385,
/*20041108 to 20041108
알케미스트 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
-20041115 to 20180621
+20041115 to 20180704
[POINT] 알케미스트 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You have been rewarded with %d Alchemist rank points. Your point total is %d.
*/
@@ -4800,7 +4800,7 @@ You must be at least character level 70 in order to adopt someone.
/*20041115 to 20041130
천사님 제 목소리 들리세요? ^^;
Dear angel, can you hear my voice?
-20041206 to 20180621
+20041206 to 20180704
X
Help me out~ Please~ T_T
*/
@@ -4808,7 +4808,7 @@ Help me out~ Please~ T_T
/*20041115 to 20041130
슈í¼ë…¸ë¹„스
Super Novice
-20041206 to 20180621
+20041206 to 20180704
X
Help me out~ Please~ T_T
*/
@@ -4816,7 +4816,7 @@ Help me out~ Please~ T_T
/*20041115 to 20041130
예요~
Super Novice~
-20041206 to 20180621
+20041206 to 20180704
X
Help me out~ Please~ T_T
*/
@@ -4824,101 +4824,101 @@ Help me out~ Please~ T_T
/*20041115 to 20041130
ì € 좀 ë„와주세요~ ã… _ã… 
Help me out~ Please~ T_T
-20041206 to 20180621
+20041206 to 20180704
X
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE14 = 0x38a,
-/*20041115 to 20180621
+/*20041115 to 20180704
/notalkmsg2 : ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ 않습니다 (ê¸¸ë“œë§ í¬í•¨) On Off
/notalkmsg2: Hides chat messages(including guild chat). On Off
*/
MSG_EXPLAIN_NOTALKMSG2 = 0x38b,
-/*20041115 to 20180621
+/*20041115 to 20180704
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤ [/nm2 ON]
Show chat messages. [/nm2 ON]
*/
MSG_NOTALKMSG2_ON = 0x38c,
-/*20041115 to 20180621
+/*20041115 to 20180704
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤ (ê¸¸ë“œë§ í¬í•¨) [/nm2 OFF]
Hide chat messages(including guild chat) [/nm2 OFF]
*/
MSG_NOTALKMSG2_OFF = 0x38d,
#endif
#if PACKETVER >= 20041129
-/*20041129 to 20180621
+/*20041129 to 20180704
제련가능한 ì•„ì´í…œ
Upgradable Weapons
*/
MSG_REFINEITEMLIST = 0x38e,
-/*20041129 to 20180621
+/*20041129 to 20180704
제련한 무기 : %s
Weapons upgraded: %s
*/
MSG_ITEM_REFINE_SUCCEESS = 0x38f,
-/*20041129 to 20180621
+/*20041129 to 20180704
제련한 무기 : %s
Weapons upgraded: %s
*/
MSG_ITEM_REFINE_FAIL = 0x390,
-/*20041129 to 20180621
+/*20041129 to 20180704
ë¬´ê¸°ì œë ¨ìŠ¤í‚¬ì˜ ë ˆë²¨ì´ ë¶€ì¡±í•´ì„œ %s ì œë ¨ì„ í• ìˆ˜ì—†ìŠµë‹ˆë‹¤.
You cannot upgrade %s until you level up your Upgrade Weapon skill.
*/
MSG_ITEM_REFINE_FAIL_LEVEL = 0x391,
-/*20041129 to 20180621
+/*20041129 to 20180704
ì œë ¨ì— í•„ìš”í•œ ì•„ì´í…œ (%s) ì´ ì—†ìœ¼ë¯€ë¡œ 제련할수없습니다.
You lack a necessary item %s to upgrade this weapon.
*/
MSG_ITEM_REFINE_FAIL_MATERIAL = 0x392,
#endif
#if PACKETVER >= 20041206
-/*20041206 to 20180621
+/*20041206 to 20180704
완벽하게 코팅ë˜ì–´ìžˆì–´ì„œ í’€ìŠ¤íŠ¸ë¦½ì´ í†µí•˜ì§€ 않습니다.
Full Divestment cannot pierce the target. The target is fully shielded.
*/
MSG_FULLSTRIP = 0x393,
#endif
#if PACKETVER >= 20041213
-/*20041213 to 20180621
+/*20041213 to 20180704
결혼한 ìºë¦­í„°ëŠ” 입양시킬수 없습니다.
You cannot adopt a married person.
*/
MSG_BABY3 = 0x394,
#endif
#if PACKETVER >= 20041220
-/*20041220 to 20180621
+/*20041220 to 20180704
친구로 등ë¡ëœ ì´ë¦„ê³¼ 비슷하지만 등ë¡ëœ ì´ë¦„ì´ ì•„ë‹™ë‹ˆë‹¤. 아는사람ì¸ì§€ 확ì¸í•˜ì‹­ì‹œìš”.
This name is not registered in your Friend List. Please check the name again.
*/
MSG_ID_WARNING = 0x395,
-/*20041220 to 20180621
+/*20041220 to 20180704
/hi ë˜ëŠ” /hi 문장 : 친구로 등ë¡ëœ ìºë¦­í„°ë“¤ì—게 ì¸ì‚¬ë¥¼ 합니다.
/hi or /hi message: Send greetings to people who are online and registered on your Friend List.
*/
MSG_EXPLAIN_HI = 0x396,
#endif
#if PACKETVER >= 20041227
-/*20041227 to 20180621
+/*20041227 to 20180704
길드ì›ì˜ ì´ë¦„ê³¼ 비슷하지만 길드ì›ì´ 아닙니다. 길드ì›ì¸ì§€ 확ì¸í•˜ì‹­ì‹œìš”.
This character is not your guildsman. Please check the name again.
*/
MSG_ID_WARNING_GUILD = 0x397,
#endif
#if PACKETVER >= 20050117
-/*20050117 to 20180621
+/*20050117 to 20180704
9999만제니 ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 9999만제니로 íŒë§¤ë©ë‹ˆë‹¤.
Please be aware that the maximum selling price is fixed as 2 Billion. You cannot sell an item higher than that.
*/
MSG_OVERPRICE9999 = 0x398,
#endif
#if PACKETVER >= 20050131
-/*20050131 to 20180621
+/*20050131 to 20180704
ì¹œêµ¬ì˜ ê·“ì†ë§ì€ [ Friend ] , 길드ì›ì€ [ Member ] ë¡œ 표시ë©ë‹ˆë‹¤.
Whispers from friends are displayed as [ Friend ], and ones from guildsmen are displayed as [ Member ].
*/
MSG_EXPLAIN_SACHING1 = 0x399,
-/*20050131 to 20180621
+/*20050131 to 20180704
( From ìºë¦­í„°ì´ë¦„ : ) ì´ë¼ê³  표시 ë˜ëŠ” ê·“ì†ë§ì€ 친구나 길드ì›ì´ 아닙니다.
( From character name: ) is from an anonymous character who is neither your friend nor guildsman.
*/
@@ -4927,481 +4927,481 @@ Whispers from friends are displayed as [ Friend ], and ones from guildsmen are d
#if PACKETVER >= 20050214
/*20050214 to 20050310
ë¸”ëž™ìŠ¤ë¯¸ìŠ¤ì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
-20050314 to 20180621
+20050314 to 20180704
/blacksmith : ë¸”ëž™ìŠ¤ë¯¸ìŠ¤ì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/blacksmith: Shows top 10 Blacksmiths in the server.
*/
MSG_EXPLAIN_BLACKSMITH = 0x39b,
/*20050214 to 20050310
ì•Œì¼€ë¯¸ìŠ¤íŠ¸ì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
-20050314 to 20180621
+20050314 to 20180704
/alchemist : ì•Œì¼€ë¯¸ìŠ¤íŠ¸ì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/alchemist: Shows top 10 Alchemists in the server.
*/
MSG_EXPLAIN_ALCHEMIST = 0x39c,
-/*20050214 to 20180621
+/*20050214 to 20180704
ALT+Y : 여러가지 명령어를 쉽게 쓸수있는 윈ë„ìš°ê°€ 열립니다.
ALT+Y: Opens a window which allows you to use various commands with ease.
*/
MSG_EXPLAIN_ALTY = 0x39d,
#endif
#if PACKETVER >= 20050328
-/*20050328 to 20180621
+/*20050328 to 20180704
[POINT] 태권미션 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[POINT] You have been rewarded with %d Tae-Kwon Mission rank points. Your point total is %d.
*/
MSG_TAEKWON_POINT = 0x39e,
#endif
#if PACKETVER >= 20050404
-/*20050404 to 20180621
+/*20050404 to 20180704
[태권미션] Target Monster : %s (%d%%)
[Taekwon Mission] Target Monster: %s (%d%%)
*/
MSG_TAEKWON_MISSION = 0x39f,
#endif
#if PACKETVER >= 20050502
-/*20050502 to 20180621
+/*20050502 to 20180704
게임가드 초기화 ì—러 : %lu
Error - Failed to initialize GameGuard: %lu
*/
MSG_INIT_ERROR = 0x3a0,
-/*20050502 to 20180621
+/*20050502 to 20180704
ìŠ¤í”¼ë“œí•µì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Speed Hack has been detected.
*/
MSG_SPEEDHACK_DETECT = 0x3a1,
-/*20050502 to 20180621
+/*20050502 to 20180704
불법 프로그램 (%s) ê°€ 발견ë˜ì—ˆìŠµë‹ˆë‹¤
The illegal program, (%s) has been detected.
*/
MSG_GAMEHACK_DETECT = 0x3a2,
-/*20050502 to 20180621
+/*20050502 to 20180704
게임ì´ë‚˜ 게임가드가 변조ë˜ì—ˆìŠµë‹ˆë‹¤.
The Game or Gameguard has been cracked.
*/
MSG_GAMEHACK_DOUBT = 0x3a3,
-/*20050502 to 20180621
+/*20050502 to 20180704
게임가드가 실행 중 입니다. ìž ì‹œ í›„ì— ë‹¤ì‹œ 실행해보시기 ë°”ëžë‹ˆë‹¤.
GameGuard is currently running. Please wait for sometime and restart the game.
*/
MSG_ERROR_EXIST = 0x3a4,
-/*20050502 to 20180621
+/*20050502 to 20180704
ê²Œìž„ì´ ì¤‘ë³µ 실행ë˜ì—ˆê±°ë‚˜ 게임가드가 ì´ë¯¸ 실행 중 입니다. 게임 종료 후 다시 실행해보시기 ë°”ëžë‹ˆë‹¤.
The Game or GameGuard is already running. Please close the game and restart the game.
*/
MSG_GAME_EXIST = 0x3a5,
-/*20050502 to 20180621
+/*20050502 to 20180704
게임가드 초기화 ì—러입니다. 재부팅 후 다시 실행해보거나 충ëŒí•  수 있는 다른 í”„ë¡œê·¸ëž¨ë“¤ì„ ì¢…ë£Œí•œ 후 실행해 보시기 ë°”ëžë‹ˆë‹¤.
Failed to intialize GameGuard. Please try again after rebooting the system or closing other programs.
*/
MSG_ERROR_INIT = 0x3a6,
-/*20050502 to 20180621
+/*20050502 to 20180704
ë°”ì´ëŸ¬ìŠ¤ ë° í•´í‚¹íˆ´ 검사 모듈 ë¡œë”©ì— ì‹¤íŒ¨ 했습니다. 메모리 부족ì´ê±°ë‚˜ ë°”ì´ëŸ¬ìŠ¤ì— ì˜í•œ ê°ì—¼ì¼ 수 있습니다.
Failed to load the scan module of virus and hacking tool. It's caused by lack of memory or PC virus infection.
*/
MSG_ERROR_NPSCAN = 0x3a7,
#endif
#if PACKETVER >= 20050509
-/*20050509 to 20180621
+/*20050509 to 20180704
호문í´ë£¨ìŠ¤ ì •ë³´
Homunculus Info
*/
MSG_HOMUN_INFO = 0x3a8,
#endif
#if PACKETVER >= 20050523
-/*20050523 to 20180621
+/*20050523 to 20180704
호문í´ë£¨ìŠ¤ 스킬목ë¡
Homunculus Skill List
*/
MSG_HOMUN_SKILLLIST = 0x3a9,
-/*20050523 to 20180621
+/*20050523 to 20180704
호문í´ë£¨ìŠ¤ì˜ ì´ë¦„ì€ ì˜ë¬¸ 23, 한글 11ìž ì´ë‚´ë¡œ ì •í•´ 주세요.
Please give your Homunculus a name no longer than 23 letters.
*/
MSG_HOMUN_NAME_IN23 = 0x3aa,
-/*20050523 to 20180621
+/*20050523 to 20180704
ì´ë¦„ì€ ë‹¨ 한번만 바꿀수 있습니다. 호문í´ë£¨ìŠ¤ì˜ ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You can name a Homunculus only once. You have entered the name, ^0000ff%s^000000. Would you like to continue?
*/
MSG_HOMUN_NAME_CHANGE_ONLYONCE = 0x3ab,
-/*20050523 to 20180621
+/*20050523 to 20180704
ì§€ê¸ˆì€ ë¶€ìž¬ì¤‘~
(Away)
*/
MSG_AUTO_MSG = 0x3ac,
-/*20050523 to 20180621
+/*20050523 to 20180704
[ìžë™ì‘답]
[Automated Message]
*/
MSG_AUTO_MSG2 = 0x3ad,
-/*20050523 to 20180621
+/*20050523 to 20180704
부재시 타ì¸ì˜ ê·“ë§ì— ìžë™ì‘답합니다.
Send an automated message while you are away.
*/
MSG_AUTO_MSG_ON = 0x3ae,
-/*20050523 to 20180621
+/*20050523 to 20180704
부재시 타ì¸ì˜ ê·“ë§ì— ìžë™ì‘답하지 않습니다.
Cancel automated away message.
*/
MSG_AUTO_MSG_OFF = 0x3af,
-/*20050523 to 20180621
+/*20050523 to 20180704
ìžë™ ì‘답 메시지를 입력하세요.
Please enter Away Message.
*/
MSG_ENTER_AUTO_MSG = 0x3b0,
#endif
#if PACKETVER >= 20050530
-/*20050530 to 20180621
+/*20050530 to 20180704
/번ì©
/fsh
*/
MSG_EMOTION_SPARK = 0x3b1,
-/*20050530 to 20180621
+/*20050530 to 20180704
/빙빙
/spin
*/
MSG_EMOTION_CONFUSE = 0x3b2,
-/*20050530 to 20180621
+/*20050530 to 20180704
/하아
/sigh
*/
MSG_EMOTION_OHNO = 0x3b3,
-/*20050530 to 20180621
+/*20050530 to 20180704
/ë¤ë¤
/dum
*/
MSG_EMOTION_HUM = 0x3b4,
-/*20050530 to 20180621
+/*20050530 to 20180704
/ì‹œëŒ
/crwd
*/
MSG_EMOTION_BLABLA = 0x3b5,
-/*20050530 to 20180621
+/*20050530 to 20180704
/좌절
/desp
*/
MSG_EMOTION_OTL = 0x3b6,
-/*20050530 to 20180621
+/*20050530 to 20180704
/주사위
/dice
*/
MSG_EMOTION_DICE = 0x3b7,
-/*20050530 to 20180621
+/*20050530 to 20180704
/pk : 학살ìžì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/pk: Shows top 10 Slayers in the server.
*/
MSG_EXPLAIN_KILLER_RANK = 0x3b8,
-/*20050530 to 20180621
+/*20050530 to 20180704
[POINT] í•™ì‚´ìž ëž­í‚¹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[POINT] You have been rewarded with %d Slayer rank points. Your point total is %d.
*/
MSG_KILLER_POINT = 0x3b9,
#endif
#if PACKETVER >= 20050608
-/*20050608 to 20180621
+/*20050608 to 20180704
진화 가능
Evolution Available
*/
MSG_HOMUN_EVOLVE = 0x3ba,
-/*20050608 to 20180621
+/*20050608 to 20180704
^ff0000^ff0000호문í´ë£¨ìŠ¤ë¥¼ 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 ë‚´ì—­ì´ ëª¨ë‘ ì‚­ì œë©ë‹ˆë‹¤. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You have decided to delete this Homunculus ^ff0000^ff0000. When deleted, the homunculus and its history will be deleted and they cannot be restored in the future. Would you like to continue?
*/
MSG_DELETE_HOMUN = 0x3bb,
#endif
#if PACKETVER >= 20050613
-/*20050613 to 20180621
+/*20050613 to 20180704
í˜¸ë¬¸ì˜ ìƒíƒœë¥¼ 파ì¼ì— 저장합니다.
Save Homunculus status as a file.
*/
MSG_TRACE_AI_ON = 0x3bc,
-/*20050613 to 20180621
+/*20050613 to 20180704
í˜¸ë¬¸ì˜ ìƒíƒœë¥¼ 파ì¼ì— 저장하지 않습니다.
Do not save Homunculus status as a file.
*/
MSG_TRACE_AI_OFF = 0x3bd,
-/*20050613 to 20180621
+/*20050613 to 20180704
Crusader
*/
MSG_CRUSADER = 0x3be,
-/*20050613 to 20180621
+/*20050613 to 20180704
Monk
*/
MSG_MONK = 0x3bf,
-/*20050613 to 20180621
+/*20050613 to 20180704
Sage
*/
MSG_SAGE = 0x3c0,
-/*20050613 to 20180621
+/*20050613 to 20180704
Rouge
Rogue
*/
MSG_ROGUE = 0x3c1,
-/*20050613 to 20180621
+/*20050613 to 20180704
Alchemist
*/
MSG_ALCHEMIST = 0x3c2,
-/*20050613 to 20180621
+/*20050613 to 20180704
Bard
*/
MSG_BARD = 0x3c3,
-/*20050613 to 20180621
+/*20050613 to 20180704
Crusader_W
Crusader
*/
MSG_CRUSADER_W = 0x3c4,
-/*20050613 to 20180621
+/*20050613 to 20180704
Monk_W
Monk
*/
MSG_MONK_W = 0x3c5,
-/*20050613 to 20180621
+/*20050613 to 20180704
Sage_W
Sage
*/
MSG_SAGE_W = 0x3c6,
-/*20050613 to 20180621
+/*20050613 to 20180704
Rouge_W
Rogue
*/
MSG_ROGUE_W = 0x3c7,
-/*20050613 to 20180621
+/*20050613 to 20180704
Alchemist_W
Alchemist
*/
MSG_ALCHEMIST_W = 0x3c8,
-/*20050613 to 20180621
+/*20050613 to 20180704
Dancer
*/
MSG_DANCER = 0x3c9,
-/*20050613 to 20180621
+/*20050613 to 20180704
Novice High
High Novice
*/
MSG_NOVICE_H = 0x3ca,
-/*20050613 to 20180621
+/*20050613 to 20180704
Swordman High
High Swordman
*/
MSG_SWORDMAN_H = 0x3cb,
-/*20050613 to 20180621
+/*20050613 to 20180704
Magician High
High Mage
*/
MSG_MAGICIAN_H = 0x3cc,
-/*20050613 to 20180621
+/*20050613 to 20180704
Archer High
High Archer
*/
MSG_ARCHER_H = 0x3cd,
-/*20050613 to 20180621
+/*20050613 to 20180704
Acolyte High
High Acolyte
*/
MSG_ACOLYTE_H = 0x3ce,
-/*20050613 to 20180621
+/*20050613 to 20180704
Merchant High
High Merchant
*/
MSG_MERCHANT_H = 0x3cf,
-/*20050613 to 20180621
+/*20050613 to 20180704
Thief High
High Thief
*/
MSG_THIEF_H = 0x3d0,
-/*20050613 to 20180621
+/*20050613 to 20180704
Novice High_W
High Novice
*/
MSG_NOVICE_H_W = 0x3d1,
-/*20050613 to 20180621
+/*20050613 to 20180704
Swordman High_W
High Swordman
*/
MSG_SWORDMAN_H_W = 0x3d2,
-/*20050613 to 20180621
+/*20050613 to 20180704
Magician High_W
High Mage
*/
MSG_MAGICIAN_H_W = 0x3d3,
-/*20050613 to 20180621
+/*20050613 to 20180704
Archer High_W
High Archer
*/
MSG_ARCHER_H_W = 0x3d4,
-/*20050613 to 20180621
+/*20050613 to 20180704
Acolyte High_W
High Acolyte
*/
MSG_ACOLYTE_H_W = 0x3d5,
-/*20050613 to 20180621
+/*20050613 to 20180704
Merchant High_W
High Merchant
*/
MSG_MERCHANT_H_W = 0x3d6,
-/*20050613 to 20180621
+/*20050613 to 20180704
Thief High_W
High Thief
*/
MSG_THIEF_H_W = 0x3d7,
-/*20050613 to 20180621
+/*20050613 to 20180704
Lord Knight
*/
MSG_KNIGHT_H = 0x3d8,
-/*20050613 to 20180621
+/*20050613 to 20180704
High Priest
*/
MSG_PRIEST_H = 0x3d9,
-/*20050613 to 20180621
+/*20050613 to 20180704
High Wizard
*/
MSG_WIZARD_H = 0x3da,
-/*20050613 to 20180621
+/*20050613 to 20180704
White Smith
WhiteSmith
*/
MSG_BLACKSMITH_H = 0x3db,
-/*20050613 to 20180621
+/*20050613 to 20180704
Sniper
*/
MSG_HUNTER_H = 0x3dc,
-/*20050613 to 20180621
+/*20050613 to 20180704
Saaassin Cross
Assassin Cross
*/
MSG_ASSASSIN_H = 0x3dd,
-/*20050613 to 20180621
+/*20050613 to 20180704
Lord Knight_W
Lord Knight
*/
MSG_KNIGHT_H_W = 0x3de,
-/*20050613 to 20180621
+/*20050613 to 20180704
High Priest_W
High Priest
*/
MSG_PRIEST_H_W = 0x3df,
-/*20050613 to 20180621
+/*20050613 to 20180704
High Wizard_W
High Wizard
*/
MSG_WIZARD_H_W = 0x3e0,
-/*20050613 to 20180621
+/*20050613 to 20180704
White Smith_W
WhiteSmith
*/
MSG_BLACKSMITH_H_W = 0x3e1,
-/*20050613 to 20180621
+/*20050613 to 20180704
Sniper_W
Sniper
*/
MSG_HUNTER_H_W = 0x3e2,
-/*20050613 to 20180621
+/*20050613 to 20180704
Saaassin Cross_W
Assassin Cross
*/
MSG_ASSASSIN_H_W = 0x3e3,
-/*20050613 to 20180621
+/*20050613 to 20180704
Paladin
*/
MSG_CRUSADER_H = 0x3e4,
-/*20050613 to 20180621
+/*20050613 to 20180704
Champion
*/
MSG_MONK_H = 0x3e5,
-/*20050613 to 20180621
+/*20050613 to 20180704
Professor
Scholar
*/
MSG_SAGE_H = 0x3e6,
-/*20050613 to 20180621
+/*20050613 to 20180704
Stalker
*/
MSG_ROGUE_H = 0x3e7,
-/*20050613 to 20180621
+/*20050613 to 20180704
Creator
Biochemist
*/
MSG_ALCHEMIST_H = 0x3e8,
-/*20050613 to 20180621
+/*20050613 to 20180704
Clown
Minstrel
*/
MSG_BARD_H = 0x3e9,
-/*20050613 to 20180621
+/*20050613 to 20180704
Paladin_W
Paladin
*/
MSG_CRUSADER_H_W = 0x3ea,
-/*20050613 to 20180621
+/*20050613 to 20180704
Champion_W
Champion
*/
MSG_MONK_H_W = 0x3eb,
-/*20050613 to 20180621
+/*20050613 to 20180704
Professor_W
Professor
*/
MSG_SAGE_H_W = 0x3ec,
-/*20050613 to 20180621
+/*20050613 to 20180704
Stalker_W
Stalker
*/
MSG_ROGUE_H_W = 0x3ed,
-/*20050613 to 20180621
+/*20050613 to 20180704
Creator_W
Creator
*/
MSG_ALCHEMIST_H_W = 0x3ee,
-/*20050613 to 20180621
+/*20050613 to 20180704
Gypsy
*/
MSG_DANCER_H = 0x3ef,
-/*20050613 to 20180621
+/*20050613 to 20180704
비밀번호가 지정ë˜ì–´ 있지 않습니다. 새로운 비밀번호를 지정하시겠습니까?
You have not set a password yet. Would you like to create one now?
*/
MSG_STORE_PASSWORD_REQ = 0x3f0,
-/*20050613 to 20180621
+/*20050613 to 20180704
비밀번호를 3회 틀려셨습니다. ë‚˜ì¤‘ì— ë‹¤ì‹œ ì‹œë„í•´ 주세요.
You have incorrectly entered the password 3 times. Please try again later.
*/
MSG_STORE_PASSWORD_PENALTY = 0x3f1,
-/*20050613 to 20180621
+/*20050613 to 20180704
비밀번호 ë³€ê²½ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Password creation has failed.
*/
MSG_STORE_PASSWORD_CHANGE_NG = 0x3f2,
-/*20050613 to 20180621
+/*20050613 to 20180704
비밀번호는 4ìžë¦¬ ì´ìƒ 8ìžë¦¬ì´í•˜ì—¬ì•¼ë§Œ 합니다.
Password must be 4~8 letters long.
*/
MSG_STORE_PASSWORD_4_8 = 0x3f3,
-/*20050613 to 20180621
+/*20050613 to 20180704
비밀번호
Password
*/
MSG_STORE_PASSWORD = 0x3f4,
-/*20050613 to 20180621
+/*20050613 to 20180704
신규 비밀번호
New Password
*/
MSG_STORE_NEW_PASSWORD = 0x3f5,
-/*20050613 to 20180621
+/*20050613 to 20180704
í™•ì¸ ë¹„ë°€ë²ˆí˜¸
Confirm Password
*/
MSG_STORE_RENEW_PASSWORD = 0x3f6,
-/*20050613 to 20180621
+/*20050613 to 20180704
비밀번호 ë³€ê²½ì´ ì™„ë£Œë˜ì—ˆìŠµë‹ˆë‹¤.
Password has been changed.
*/
MSG_STORE_PASSWORD_CHANGE_OK = 0x3f7,
-/*20050613 to 20180621
+/*20050613 to 20180704
비밀번호가 서로 다릅니다.
Password does not match.
*/
MSG_STORE_PASSWORD_MISMATCH = 0x3f8,
-/*20050613 to 20180621
+/*20050613 to 20180704
비밀번호 입력
Enter Password
*/
@@ -5410,12 +5410,12 @@ Enter Password
#if PACKETVER >= 20050624
/*20050624 to 20050624
í˜¸ë¬¸ì´ ì•„ì‚¬ ì§ì „입니다!!! 밥좀 주셈~!!
-20050628 to 20180621
+20050628 to 20180704
í˜¸ë¬¸ì´ ì•„ì‚¬ ì§ì „입니다! 먹ì´ë¥¼ 주지 않으면 가출하게ë©ë‹ˆë‹¤.
Your Homunculus is starving. Please feed it, otherwise it will leave you.
*/
MSG_HOMUN_HUNGRY = 0x3fa,
-/*20050624 to 20180621
+/*20050624 to 20180704
경험치
EXP
*/
@@ -5424,57 +5424,57 @@ EXP
#if PACKETVER >= 20050628
/*20050628 to 20110526
[EVENT] ì´ë²¤íŠ¸ì— 당첨ë˜ì…¨ìŠµë‹ˆë‹¤. 게임내ì—ì„œ ì•„ì´í…œì„ 지급받으십시요.
-20110531 to 20180621
+20110531 to 20180704
수령하지 ì•Šì€ ì•„ì´í…œì´ 존재합니다. ì•Œë² ë¥´íƒ€ì˜ ì¡´ë‹¤ 기íšì‚¬ ì§ì›ì„ 찾아주세요. ^ff0000※ ì•„ì´í…œ 수령 ê¸°ê°„ì´ ì§€ë‚˜ë©´ ì•„ì´í…œì´ 소실 ë©ë‹ˆë‹¤!^000000
[EVENT] You have won an event prize. Please claim your prize in game.
*/
MSG_EVENT_RESULT = 0x3fc,
#endif
#if PACKETVER >= 20050704
-/*20050704 to 20180621
+/*20050704 to 20180704
싫어함
Hate
*/
MSG_HATE = 0x3fd,
/*20050704 to 20050704
매우 싫어함
-20050711 to 20180621
+20050711 to 20180704
매우싫어함
Hate with a Passion
*/
MSG_VERYHATE = 0x3fe,
#endif
#if PACKETVER >= 20050718
-/*20050718 to 20180621
+/*20050718 to 20180704
호문í´ë£¨ìŠ¤ê°€ ì‚¬ìš©ìž ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Homunculus has been customized.
*/
MSG_HOMUN_USERAI_ON = 0x3ff,
-/*20050718 to 20180621
+/*20050718 to 20180704
호문í´ë£¨ìŠ¤ê°€ 기본 ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Homunculus has been activated with the basic AI.
*/
MSG_HOMUN_USERAI_OFF = 0x400,
#endif
#if PACKETVER >= 20050808
-/*20050808 to 20180621
+/*20050808 to 20180704
편지목ë¡
Mail List
*/
MSG_MAIL_LIST = 0x401,
-/*20050808 to 20180621
+/*20050808 to 20180704
편지쓰기
Write Mail
*/
MSG_MAIL_WRITE = 0x402,
-/*20050808 to 20180621
+/*20050808 to 20180704
편지ì½ê¸°
Read Mail
*/
MSG_MAIL_READ = 0x403,
#endif
#if PACKETVER >= 20050822
-/*20050822 to 20180621
+/*20050822 to 20180704
한번 지정하시면 ë³€ê²½ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤! ì´ ë§µìœ¼ë¡œ 지정하시겠습니까?
You cannot change a map's designation once it is designated. Are you sure that you want to designate this map?
*/
@@ -5483,7 +5483,7 @@ You cannot change a map's designation once it is designated. Are you sure that y
보내실 ì•„ì´í…œì´ 추가 ë˜ì—ˆìŠµë‹ˆë‹¤.
20050829 to 20051018
ì•„ì´í…œì°½ì— ì•„ì´í…œì´ 추가 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20051024 to 20180621
+20051024 to 20180704
ë©”ì¼ ì•„ì´í…œì„ 수령했습니다.
Item has been added in the Item Window.
*/
@@ -5492,745 +5492,745 @@ Item has been added in the Item Window.
보내실 ì•„ì´í…œì´ 추가 ë˜ì§€ 않았습니다.
20050829 to 20051018
ì•„ì´í…œì°½ì— ì•„ì´í…œì´ 추가 ë˜ì§€ 않았습니다.
-20051024 to 20180621
+20051024 to 20180704
ë©”ì¼ ì•„ì´í…œì„ 수령하지 못했습니다.
You have failed to add the item in the Item Window.
*/
MSG_MAIL_ADD_ITEM_FAILURE = 0x406,
-/*20050822 to 20180621
+/*20050822 to 20180704
ë©”ì¼ ë³´ë‚´ê¸°ê°€ 성공하였습니다.
You have successfully mailed a message.
*/
MSG_MAIL_SEND_SUCCESS = 0x407,
-/*20050822 to 20180621
+/*20050822 to 20180704
ë©”ì¼ ë³´ë‚´ê¸°ê°€ 실패하였습니다. 받는 ì‚¬ëžŒì´ ì¡´ìž¬í•˜ì§€ 않습니다.
You have failed to mail a message. Recipient does not exist.
*/
MSG_MAIL_USER_NOT_FOUND = 0x408,
#endif
#if PACKETVER >= 20050829
-/*20050829 to 20180621
+/*20050829 to 20180704
[태양과 달과 ë³„ì˜ ì²œì‚¬] ì§€ì •í–ˆë˜ ìž¥ì†Œë“¤ê³¼ ëª¬ìŠ¤í„°ë“¤ì´ ì´ˆê¸°í™”ë습니다!
[Solar, Lunar and Stellar Angel] Designated places and monsters have been reset.
*/
MSG_STAR_ANGEL = 0x409,
-/*20050829 to 20180621
+/*20050829 to 20180704
경매 등ë¡ì´ 실패했습니다.
The minimum starting bid for auctions is 10,000,000 zeny.
*/
MSG_AUCTION_ADD_FALSE = 0x40a,
-/*20050829 to 20180621
+/*20050829 to 20180704
경매 등ë¡ì´ 성공했습니다.
You have successfully started a new auction.
*/
MSG_AUCTION_ADD_TRUE = 0x40b,
-/*20050829 to 20180621
+/*20050829 to 20180704
해당 경매가 취소ë˜ì—ˆìŠµë‹ˆë‹¤.
The auction has been canceled.
*/
MSG_AUCTION_ADD_CANCEL = 0x40c,
-/*20050829 to 20180621
+/*20050829 to 20180704
ìž…ì°°ìžê°€ 있는 경매는 취소할 수 없습니다.
An auction with at least one bidder cannot be canceled.
*/
MSG_AUCTION_ADD_CANCEL_FALSE = 0x40d,
#endif
#if PACKETVER >= 20050905
-/*20050905 to 20180621
+/*20050905 to 20180704
ë©”ì¼ ì‚­ì œê°€ 성공하였습니다.
Mail has been successfully deleted.
*/
MSG_MAIL_DELETE_SUCCESS = 0x40e,
-/*20050905 to 20180621
+/*20050905 to 20180704
ë©”ì¼ ì‚­ì œê°€ 실패하였습니다.
You have failed to delete the mail.
*/
MSG_MAIL_DELETE_FAILURE = 0x40f,
#endif
#if PACKETVER >= 20050912
-/*20050912 to 20180621
+/*20050912 to 20180704
ë˜ì§€ëŠ” ë‹¨ê²€ì´ ìž¥ì°©ë˜ì—ˆìŠµë‹ˆë‹¤.
You have equipped throwing daggers.
*/
MSG_MSG_KNIFE_EQUIPMENT_SUCCESS = 0x410,
#endif
#if PACKETVER >= 20050926
-/*20050926 to 20180621
+/*20050926 to 20180704
%s ë‹˜ì´ ë¡œê·¸ì¸í–ˆìŠµë‹ˆë‹¤.
%s has logged in.
*/
MSG_LOGIN_FRIEND = 0x411,
-/*20050926 to 20180621
+/*20050926 to 20180704
%s ë‹˜ì´ ë¡œê·¸ì•„ì›ƒí–ˆìŠµë‹ˆë‹¤.
%s has logged out.
*/
MSG_LOGOUT_FRIEND = 0x412,
#endif
#if PACKETVER >= 20051004
-/*20051004 to 20180621
+/*20051004 to 20180704
/loginout : 길드ì›ê³¼ ì¹œêµ¬ë“¤ì˜ ì ‘ì†ê´€ë ¨ 메세지를 ë³´ì—¬ì¤ë‹ˆë‹¤. On Off
/loginout: Shows guildsmen and friends online status. On Off
*/
MSG_EXPLAIN_LOGINOUT = 0x413,
-/*20051004 to 20180621
+/*20051004 to 20180704
ì¹œêµ¬ë“¤ì˜ ì ‘ì†ê´€ë ¨ 메세지를 ëŒ€í™”ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤. [/li ON]
Display online status of friends in Chat Window. [/li ON]
*/
MSG_LOGINOUT_ON = 0x414,
-/*20051004 to 20180621
+/*20051004 to 20180704
ì¹œêµ¬ë“¤ì˜ ì ‘ì†ê´€ë ¨ 메세지를 ëŒ€í™”ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤. [/li OFF]
Do not display online status of friends in Chat Window. [/li OFF]
*/
MSG_LOGINOUT_OFF = 0x415,
-/*20051004 to 20180621
+/*20051004 to 20180704
ì´ë¯¸ 실행중입니다.
It is already running.
*/
MSG_SGP_CODE_ALREADY_RUNNING = 0x416,
-/*20051004 to 20180621
+/*20051004 to 20180704
매í¬ë¡œ ì‚¬ìš©ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Use of Macro program has been detected.
*/
MSG_SGP_CODE_DETECTED_MACRO = 0x417,
-/*20051004 to 20180621
+/*20051004 to 20180704
ìŠ¤í”¼ë“œí•´í‚¹ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Use of Speed hack has been detected.
*/
MSG_SGP_CODE_DETECTED_SPEEDHACK = 0x418,
-/*20051004 to 20180621
+/*20051004 to 20180704
API í›„í‚¹ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
API Hooking has been detected.
*/
MSG_SGP_CODE_DETECTED_APIHOOK = 0x419,
-/*20051004 to 20180621
+/*20051004 to 20180704
메시지 í›„í‚¹ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Message Hooking has been detected.
*/
MSG_SGP_CODE_DETECTED_MSGHOOK = 0x41a,
-/*20051004 to 20180621
+/*20051004 to 20180704
ëª¨ë“ˆì´ ë³€ì¡° ë˜ëŠ” ì†ìƒë˜ì—ˆê±°ë‚˜ ë²„ì „ì´ ì¼ì¹˜í•˜ì§€ 않습니다.
Module has been modified or damaged or its version does not match.
*/
MSG_SGP_CODE_NOT_EQUALENCRYPTEDDATA = 0x41b,
#endif
#if PACKETVER >= 20051010
-/*20051010 to 20180621
+/*20051010 to 20180704
(태국)귀하는 게임방 과금으로 ë¡œê·¸ì¸ í•˜ì…¨ìŠµë‹ˆë‹¤.
(Thailand) You have logged in game with PC cafe payment.
*/
MSG_BILLING_PCB = 0x41c,
#endif
#if PACKETVER >= 20051017
-/*20051017 to 20180621
+/*20051017 to 20180704
ì´ì „
Prev
*/
MSG_PREV_PAGE = 0x41d,
-/*20051017 to 20180621
+/*20051017 to 20180704
다ìŒ
Next
*/
MSG_NEXT_PAGE = 0x41e,
-/*20051017 to 20180621
+/*20051017 to 20180704
경매
Auction
*/
MSG_AUCTION = 0x41f,
-/*20051017 to 20180621
+/*20051017 to 20180704
물품보기
Product List
*/
MSG_AUCTION_VIEW = 0x420,
-/*20051017 to 20180621
+/*20051017 to 20180704
등ë¡í•˜ê¸°
Register
*/
MSG_AUCTION_ADD = 0x421,
-/*20051017 to 20180621
+/*20051017 to 20180704
íŒë§¤ 진행ìƒíƒœ
Sale Status
*/
MSG_AUCTION_SELL = 0x422,
-/*20051017 to 20180621
+/*20051017 to 20180704
구매 진행ìƒíƒœ
Purchase Status
*/
MSG_AUCTION_BUY = 0x423,
-/*20051017 to 20180621
+/*20051017 to 20180704
ì•„ì´í…œ
Item
*/
MSG_ITEM2 = 0x424,
-/*20051017 to 20180621
+/*20051017 to 20180704
ì•„ì´í…œëª…
Name
*/
MSG_ITEM_NAME2 = 0x425,
-/*20051017 to 20180621
+/*20051017 to 20180704
가격 / 즉시구입가격
Current Bid / Max Bid
*/
MSG_ITEM_PRICE = 0x426,
-/*20051017 to 20180621
+/*20051017 to 20180704
íŒë§¤ìž
Seller
*/
MSG_SELLER = 0x427,
-/*20051017 to 20180621
+/*20051017 to 20180704
구매ìž
Buyer
*/
MSG_BUYER = 0x428,
-/*20051017 to 20180621
+/*20051017 to 20180704
종료시간
End Time
*/
MSG_FINISH_TIME = 0x429,
-/*20051017 to 20180621
+/*20051017 to 20180704
%mì›” %dì¼ %Hì‹œ
%m %d %H
*/
MSG_TIME_TYPE = 0x42a,
-/*20051017 to 20180621
+/*20051017 to 20180704
시간설정
Time (Hr)
*/
MSG_SET_TIME = 0x42b,
-/*20051017 to 20180621
+/*20051017 to 20180704
수수료
Fee
*/
MSG_CHARGE = 0x42c,
/*20051017 to 20170906
검색 ëœ ì•„ì´í…œì´ 없습니다.
-20170913 to 20180621
+20170913 to 20180704
ê²€ìƒ‰ëœ ì•„ì´í…œì´ 없습니다.
No items found in search.
*/
MSG_NOTHING_SEARCH_ITEM = 0x42d,
-/*20051017 to 20180621
+/*20051017 to 20180704
현재 íŒë§¤ì¤‘ì¸ ì•„ì´í…œì´ 없습니다.
Your Sale List is empty.
*/
MSG_NOTHING_SEARCH_SELL_ITEM = 0x42e,
-/*20051017 to 20180621
+/*20051017 to 20180704
현재 êµ¬ë§¤ì¤‘ì¸ ì•„ì´í…œì´ 없습니다.
Your Purchase List is empty.
*/
MSG_NOTHING_SEARCH_BUY_ITEM = 0x42f,
-/*20051017 to 20180621
+/*20051017 to 20180704
경매정보가 정확하지 않습니다.
Auction Information is incorrect or incomplete.
*/
MSG_ERROR_AUCTION_ITEM_INFO = 0x430,
-/*20051017 to 20180621
+/*20051017 to 20180704
ê²½ë§¤ì— ë“±ë¡í•  ì•„ì´í…œ ì •ë³´ê°€ 없습니다.
You must drag and drop an item from your Inventory into the Register Window to begin a new auction.
*/
MSG_NOTHING_AUCTION_ITEM_INFO = 0x431,
-/*20051017 to 20180621
+/*20051017 to 20180704
ì´ë¯¸ 등ë¡ëœ 경매입니다.
The auction has already been registered.
*/
MSG_ERROR_ADD_AUCTION = 0x432,
-/*20051017 to 20180621
+/*20051017 to 20180704
제시가격
Starting Bid
*/
MSG_PRICE = 0x433,
-/*20051017 to 20180621
+/*20051017 to 20180704
구입í¬ë§ê°€ê²©
Current Bid
*/
MSG_PRICE2 = 0x434,
-/*20051017 to 20180621
+/*20051017 to 20180704
즉시구입가격
Buy Now Price
*/
MSG_PRICE3 = 0x435,
-/*20051017 to 20180621
+/*20051017 to 20180704
현재소지제니
Your Current Zeny
*/
MSG_PRICE4 = 0x436,
-/*20051017 to 20180621
+/*20051017 to 20180704
현재최고가격
Highest Bid
*/
MSG_PRICE5 = 0x437,
-/*20051017 to 20180621
+/*20051017 to 20180704
ì´ì „입찰가격
Previous Bid
*/
MSG_PRICE6 = 0x438,
-/*20051017 to 20180621
+/*20051017 to 20180704
추가입찰가격
Next Bid
*/
MSG_PRICE7 = 0x439,
-/*20051017 to 20180621
+/*20051017 to 20180704
구입하시겠습니까?
Press buy to confirm.
*/
MSG_BUY_ACTION_ITEM = 0x43a,
-/*20051017 to 20180621
+/*20051017 to 20180704
ì´ ê°€ê²©ì— íŒë§¤í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Would you like to sell this item?
*/
MSG_SELL_ACTION_ITEM = 0x43b,
-/*20051017 to 20180621
+/*20051017 to 20180704
입찰하기
Place Bid
*/
MSG_BUY_AUCTION = 0x43c,
-/*20051017 to 20180621
+/*20051017 to 20180704
즉시구매하기
Buy Now
*/
MSG_BUY_AUCTION2 = 0x43d,
-/*20051017 to 20180621
+/*20051017 to 20180704
경매종료하기
End the Auction
*/
MSG_BUY_AUCTION3 = 0x43e,
-/*20051017 to 20180621
+/*20051017 to 20180704
재입찰하기
Place another Bid
*/
MSG_FINISH_AUCTION = 0x43f,
-/*20051017 to 20180621
+/*20051017 to 20180704
해당 ê²½ë§¤ì— ëŒ€í•œ ìž…ì°°ì´ ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
You have placed a bid.
*/
MSG_RESULT_BUY_TRUE = 0x440,
-/*20051017 to 20180621
+/*20051017 to 20180704
해당 ê²½ë§¤ì— ëŒ€í•œ ìž…ì°°ì´ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
You have failed to place a bid.
*/
MSG_RESULT_BUY_FALSE = 0x441,
-/*20051017 to 20180621
+/*20051017 to 20180704
제니가 충분하지 않습니다.
You do not have enough zeny.
*/
MSG_RESULT_BUY_FALSE_MONEY = 0x442,
#endif
#if PACKETVER >= 20051024
-/*20051024 to 20180621
+/*20051024 to 20180704
방어구
Armors
*/
MSG_EQUIP = 0x443,
-/*20051024 to 20180621
+/*20051024 to 20180704
카드
Card
*/
MSG_CARD = 0x444,
-/*20051024 to 20180621
+/*20051024 to 20180704
기타
Other
*/
MSG_ETC = 0x445,
-/*20051024 to 20180621
+/*20051024 to 20180704
경매번호
Bid
*/
MSG_AUCTION_NUM = 0x446,
-/*20051024 to 20180621
+/*20051024 to 20180704
검색
Search
*/
MSG_AUCTION_SEARCH = 0x447,
-/*20051024 to 20180621
+/*20051024 to 20180704
해당 경매를 종료했습니다.
You have ended the auction.
*/
MSG_RESULT_MY_SELL_STOP_TRUE = 0x448,
-/*20051024 to 20180621
+/*20051024 to 20180704
해당 경매를 종료 할 수 없습니다.
You cannot end the auction.
*/
MSG_RESULT_MY_SELL_STOP_FALSE = 0x449,
-/*20051024 to 20180621
+/*20051024 to 20180704
경매 번호가 정확하지 않습니다.
Bid Number is incorrect.
*/
MSG_RESULT_AUCTION_ID_FALSE = 0x44a,
-/*20051024 to 20180621
+/*20051024 to 20180704
받는ì´
To
*/
MSG_SENDER = 0x44b,
#endif
#if PACKETVER >= 20051205
-/*20051205 to 20180621
+/*20051205 to 20180704
제 목
Title
*/
MSG_TITLE2 = 0x44c,
-/*20051205 to 20180621
+/*20051205 to 20180704
새 ë©”ì¼ì´ ë„착하였습니다.
You have received a message in the mail.
*/
MSG_NEW_MAIL = 0x44d,
-/*20051205 to 20180621
+/*20051205 to 20180704
검색중입니다.
Searching...
*/
MSG_SEARCHING_ITEM = 0x44e,
-/*20051205 to 20180621
+/*20051205 to 20180704
ë” ì´ìƒ 경매 등ë¡í•  수 없습니다. 경매 등ë¡ì€ 최대 5개까지 가능합니다.
You cannot register more than 5 items in an auction at a time.
*/
MSG_AUCTION_ADD_OVER = 0x44f,
-/*20051205 to 20180621
+/*20051205 to 20180704
ë” ì´ìƒ 경매 ë¬¼í’ˆì— ìž…ì°°í•  수 없습니다. 경매 물품 ìž…ì°°ì€ ìµœëŒ€ 5개까지 가능합니다.
You cannot place more than 5 bids at a time.
*/
MSG_RESULT_BUY_OVER = 0x450,
-/*20051205 to 20180621
+/*20051205 to 20180704
삭제하려는 ë©”ì¼ì— 수령하지 ì•Šì€ ì•„ì´í…œì´ 있습니다.
Please accept all items from your mail before deleting.
*/
MSG_MAIL_DELETE_ERROR = 0x451,
-/*20051205 to 20180621
+/*20051205 to 20180704
ë©”ì¼ ì œëª©ì„ ìž…ë ¥í•˜ì—¬ 주십시오.
Please enter a title.
*/
MSG_MAIL_SEND_ERROR = 0x452,
-/*20051205 to 20180621
+/*20051205 to 20180704
/shopping : í´ë¦­ 한번으로 ìƒì ì„ ì—´ê³  ìƒì ì´ë¦„ 오른쪽 í´ë¦­ìœ¼ë¡œ ìƒì ì„ 닫습니다 On Off
/shopping: Enables you to open a shop with a single left-click and close your shop with a single right-click. On Off
*/
MSG_EXPLAIN_SHOPPING = 0x453,
-/*20051205 to 20180621
+/*20051205 to 20180704
í´ë¦­ 한번으로 ìƒì ì„ ì—´ê³  ìƒì ì´ë¦„ì„ ì˜¤ë¥¸ìª½ í´ë¦­í•´ì„œ ìƒì ì„ ë‹«ì„수있습니다. [/sh ON]
You can now open a shop with a single left-click and close your shop with a single right-click. [sh ON].
*/
MSG_SHOPPING_ON = 0x454,
-/*20051205 to 20180621
+/*20051205 to 20180704
ë”블í´ë¦­ 으로 ìƒì ì„ 열게ë©ë‹ˆë‹¤. [/sh OFF]
You can open a shop by double-clicking. [/sh OFF]
*/
MSG_SHOPPING_OFF = 0x455,
-/*20051205 to 20180621
+/*20051205 to 20180704
ë©”ì¼ì„ 보내려면, 제니 ìž…ë ¥ì„ ì™„ë£Œí•´ì•¼ 합니다.
Please enter zeny amount before sending mail.
*/
MSG_MAIL_SEND_ERROR2 = 0x456,
-/*20051205 to 20180621
+/*20051205 to 20180704
경매 수수료가 부족합니다.
You do not have enough zeny to pay the Auction Fee.
*/
MSG_ADD_MONEY_FALSE = 0x457,
-/*20051205 to 20180621
+/*20051205 to 20180704
ìƒíƒœë³´ê¸°
View Status
*/
MSG_HOMUN_SHOWINFO = 0x458,
-/*20051205 to 20180621
+/*20051205 to 20180704
먹ì´ì£¼ê¸°
Feed
*/
MSG_HOMUN_FEEDING = 0x459,
-/*20051205 to 20180621
+/*20051205 to 20180704
대기
Stand By
*/
MSG_HOMUN_WAITING = 0x45a,
-/*20051205 to 20180621
+/*20051205 to 20180704
슈í¼ë…¸ë¹„스(남)
Super Novice (Male)
*/
MSG_JOB_SUPERNOVICE_M = 0x45b,
-/*20051205 to 20180621
+/*20051205 to 20180704
슈í¼ë…¸ë¹„스(ì—¬)
Super Novice (Female)
*/
MSG_JOB_SUPERNOVICE_F = 0x45c,
-/*20051205 to 20180621
+/*20051205 to 20180704
태권소년
Taekwon Boy
*/
MSG_JOB_TAEKWON_M = 0x45d,
-/*20051205 to 20180621
+/*20051205 to 20180704
태권소녀
Taekwon Girl
*/
MSG_JOB_TAEKWON_F = 0x45e,
-/*20051205 to 20180621
+/*20051205 to 20180704
권성(남)
Taekwon Master (Male)
*/
MSG_KWONSUNG_M = 0x45f,
-/*20051205 to 20180621
+/*20051205 to 20180704
권성(여)
Taekwon Master (Female)
*/
MSG_KWONSUNG_F = 0x460,
-/*20051205 to 20180621
+/*20051205 to 20180704
소울ë§ì»¤(남)
Soul Linker (Male)
*/
MSG_SOULLINGKER_M = 0x461,
-/*20051205 to 20180621
+/*20051205 to 20180704
소울ë§ì»¤(ì—¬)
Soul Linker (Female)
*/
MSG_SOULLINGKER_F = 0x462,
-/*20051205 to 20180621
+/*20051205 to 20180704
PC방요금제로 2ê°œì´ìƒì˜ ê³„ì •ì´ ì ‘ì†ë˜ê³ ìžˆìŠµë‹ˆë‹¤. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
Please check the connection, more than 2 accounts are connected with Internet Cafe Time Plan.
*/
MSG_BAN_PC_IP_UNFAIR = 0x463,
-/*20051205 to 20180621
+/*20051205 to 20180704
귀하는 월정액 요금제 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤. (남ì€ê¸°ê°„ : %dì¼)
Your account is using monthly payment. (Remaining day: %d day)
*/
MSG_BILLING_1 = 0x464,
-/*20051205 to 20180621
+/*20051205 to 20180704
귀하는 정량 요금제 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤. (남ì€ì‹œê°„ : %d시간 %분 %ì´ˆ)
Your account is using time limited. (Remaining time: %d hour %d minute %d second)
*/
MSG_BILLING_2 = 0x465,
#endif
#if PACKETVER >= 20051212
-/*20051212 to 20180621
+/*20051212 to 20180704
해당 ì•„ì´í…œì€ ë©”ì¼ì— 첨부 할수 없는 ì•„ì´í…œìž…니다.
This item cannot be mailed.
*/
MSG_MAIL_ITEM_ADD_FAILED = 0x466,
-/*20051212 to 20180621
+/*20051212 to 20180704
ë”ì´ìƒ ì•„ì´í…œì„ 가질수 없습니다. ì•„ì´í…œì€ ë©”ì¼ë¡œ 보관하겠습니다.
You cannot accept any more items. Please try again later.
*/
MSG_MAIL_ADD_ITEM_OVER_FAILURE = 0x467,
#endif
#if PACKETVER >= 20060109
-/*20060109 to 20180621
+/*20060109 to 20180704
남성
Male
*/
MSG_PTSEX1 = 0x468,
-/*20060109 to 20180621
+/*20060109 to 20180704
여성
Female
*/
MSG_PTSEX2 = 0x469,
-/*20060109 to 20180621
+/*20060109 to 20180704
새로운 유저입니다
New User.
*/
MSG_PT_NEWUSER = 0x46a,
-/*20060109 to 20180621
+/*20060109 to 20180704
E-mailì€ ìºë¦­í„°ë¥¼ 지울때 필요합니다.
E-mail address is required to delete a character.
*/
MSG_PT_ACINFO = 0x46b,
-/*20060109 to 20180621
+/*20060109 to 20180704
정확한 형ì‹ìœ¼ë¡œ 입력해 주세요.
Please enter the correct information.
*/
MSG_PT_ACINFO2 = 0x46c,
-/*20060109 to 20180621
+/*20060109 to 20180704
ì´ í‚¤ë¥¼ 사용하세요
Please use this key.
*/
MSG_PT_NEWKEYINFO = 0x46d,
-/*20060109 to 20180621
+/*20060109 to 20180704
정확한 카드 패스워드를 다시 입력해주세요
Please enter the correct card password.
*/
MSG_PT_FAIL_CARDPASS = 0x46e,
-/*20060109 to 20180621
+/*20060109 to 20180704
PTì •ë³´
PT Info
*/
MSG_PTID1 = 0x46f,
-/*20060109 to 20180621
+/*20060109 to 20180704
PT_ID는 %s
PT_ID is %s
*/
MSG_PTID2 = 0x470,
-/*20060109 to 20180621
+/*20060109 to 20180704
NUM_ID는 %s
NUM_ID is %s
*/
MSG_PTID3 = 0x471,
-/*20060109 to 20180621
+/*20060109 to 20180704
잊지않게 주ì˜í•˜ì„¸ìš”
Please don't forget this information.
*/
MSG_PTID4 = 0x472,
-/*20060109 to 20180621
+/*20060109 to 20180704
1001
*/
MSG_PT_ERROR_1001 = 0x473,
-/*20060109 to 20180621
+/*20060109 to 20180704
1002
*/
MSG_PT_ERROR_1002 = 0x474,
-/*20060109 to 20180621
+/*20060109 to 20180704
1003
*/
MSG_PT_ERROR_1003 = 0x475,
-/*20060109 to 20180621
+/*20060109 to 20180704
1004
*/
MSG_PT_ERROR_1004 = 0x476,
-/*20060109 to 20180621
+/*20060109 to 20180704
1006
*/
MSG_PT_ERROR_1006 = 0x477,
-/*20060109 to 20180621
+/*20060109 to 20180704
1007
*/
MSG_PT_ERROR_1007 = 0x478,
-/*20060109 to 20180621
+/*20060109 to 20180704
1008
*/
MSG_PT_ERROR_1008 = 0x479,
-/*20060109 to 20180621
+/*20060109 to 20180704
1009
*/
MSG_PT_ERROR_1009 = 0x47a,
-/*20060109 to 20180621
+/*20060109 to 20180704
1012
*/
MSG_PT_ERROR_1012 = 0x47b,
-/*20060109 to 20180621
+/*20060109 to 20180704
1013
*/
MSG_PT_ERROR_1013 = 0x47c,
-/*20060109 to 20180621
+/*20060109 to 20180704
1014
*/
MSG_PT_ERROR_1014 = 0x47d,
-/*20060109 to 20180621
+/*20060109 to 20180704
1015
*/
MSG_PT_ERROR_1015 = 0x47e,
-/*20060109 to 20180621
+/*20060109 to 20180704
1019
*/
MSG_PT_ERROR_1019 = 0x47f,
-/*20060109 to 20180621
+/*20060109 to 20180704
1020
Navigation
*/
MSG_PT_ERROR_1020 = 0x480,
-/*20060109 to 20180621
+/*20060109 to 20180704
1021
*/
MSG_PT_ERROR_1021 = 0x481,
-/*20060109 to 20180621
+/*20060109 to 20180704
1023
*/
MSG_PT_ERROR_1023 = 0x482,
-/*20060109 to 20180621
+/*20060109 to 20180704
1024
*/
MSG_PT_ERROR_1024 = 0x483,
-/*20060109 to 20180621
+/*20060109 to 20180704
1025
*/
MSG_PT_ERROR_1025 = 0x484,
-/*20060109 to 20180621
+/*20060109 to 20180704
1027
*/
MSG_PT_ERROR_1027 = 0x485,
-/*20060109 to 20180621
+/*20060109 to 20180704
1028
*/
MSG_PT_ERROR_1028 = 0x486,
-/*20060109 to 20180621
+/*20060109 to 20180704
10
*/
MSG_PT_ERROR_10 = 0x487,
-/*20060109 to 20180621
+/*20060109 to 20180704
20
*/
MSG_PT_ERROR_20 = 0x488,
-/*20060109 to 20180621
+/*20060109 to 20180704
40
*/
MSG_PT_ERROR_40 = 0x489,
-/*20060109 to 20180621
+/*20060109 to 20180704
50
*/
MSG_PT_ERROR_50 = 0x48a,
-/*20060109 to 20180621
+/*20060109 to 20180704
60
*/
MSG_PT_ERROR_60 = 0x48b,
-/*20060109 to 20180621
+/*20060109 to 20180704
70
*/
MSG_PT_ERROR_70 = 0x48c,
-/*20060109 to 20180621
+/*20060109 to 20180704
80
*/
MSG_PT_ERROR_80 = 0x48d,
-/*20060109 to 20180621
+/*20060109 to 20180704
90
*/
MSG_PT_ERROR_90 = 0x48e,
-/*20060109 to 20180621
+/*20060109 to 20180704
100
*/
MSG_PT_ERROR_100 = 0x48f,
-/*20060109 to 20180621
+/*20060109 to 20180704
110
*/
MSG_PT_ERROR_110 = 0x490,
#endif
#if PACKETVER >= 20060126
-/*20060126 to 20180621
+/*20060126 to 20180704
30í¬ì¸íŠ¸ë¥¼ 받으시겠습니까?
Do you want to receive 30 points?
*/
MSG_PT_POINT1 = 0x491,
-/*20060126 to 20180621
+/*20060126 to 20180704
30í¬ì¸íŠ¸(5시간)ì´ ì¶©ì „ë˜ì—ˆìŠµë‹ˆë‹¤
30 points (5 hours) have been added.
*/
MSG_PT_POINT2 = 0x492,
#endif
#if PACKETVER >= 20060213
-/*20060213 to 20180621
+/*20060213 to 20180704
ê°ì •ë˜ì§€ ì•Šì€ ì•„ì´í…œì€ ê²½ë§¤ì— ë“±ë¡í•  수 없습니다.
You cannot register Unidentified Items in auctions.
*/
MSG_AUCTION_ADD_ITEM_FAILURE = 0x493,
-/*20060213 to 20180621
+/*20060213 to 20180704
소비 ì•„ì´í…œì€ ê²½ë§¤ì— ë“±ë¡í•  수 없습니다.
You cannot register this Consumable Item in an auction.
*/
MSG_AUCTION_ADD_ITEM_FAILURE2 = 0x494,
#endif
#if PACKETVER >= 20060306
-/*20060306 to 20180621
+/*20060306 to 20180704
ë©”ì¼ì°½ì„ 열려면 ì¹´íŠ¸ì°½ì„ ë‹«ì•„ 주십시요.
Please close the Cart Window to open the Mail Window.
*/
MSG_CLOSE_MERCHANTITEMWND = 0x495,
-/*20060306 to 20180621
+/*20060306 to 20180704
ì¹´íŠ¸ì°½ì„ ì—´ë ¤ë©´ ë©”ì¼ì°½ì„ ë‹«ì•„ 주십시요.
Please close the Mail Window to open the Cart Window.
*/
MSG_CLOSE_MAILWND = 0x496,
#endif
#if PACKETVER >= 20060313
-/*20060313 to 20180621
+/*20060313 to 20180704
íƒ„í™˜ì´ ìž¥ì°©ë˜ì—ˆìŠµë‹ˆë‹¤.
Bullets have been equipped.
*/
MSG_MSG_BULLET_EQUIPMENT_SUCCESS = 0x497,
-/*20060313 to 20180621
+/*20060313 to 20180704
ë©”ì¼ì´ 반송ë˜ì—ˆìŠµë‹ˆë‹¤.
The mail has been returned to sender.
*/
MSG_MAIL_RETURN_SUCCESS = 0x498,
-/*20060313 to 20180621
+/*20060313 to 20180704
ë©”ì¼ì´ 존재하지 않습니다.
The mail no longer exists.
*/
@@ -6239,171 +6239,171 @@ The mail no longer exists.
#if PACKETVER >= 20060522
/*20060522 to 20060522
한시간 ë™ì•ˆ, ë™ì¼í•œ IPë¡œ ì ‘ì†í•œ 유저가 60ê±´ ì´ìƒìž…니다. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
-20060523 to 20180621
+20060523 to 20180704
한시간 ë™ì•ˆ, ë™ì¼í•œ IPë¡œ ì ‘ì†í•œ 유저가 30ê±´ ì´ìƒìž…니다. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
More than 30 players sharing the same IP have logged into the game for an hour. Please check this matter.
*/
MSG_BAN_PC_IP_COUNT_ALL = 0x49a,
-/*20060522 to 20180621
+/*20060522 to 20180704
한시간 ë™ì•ˆ, ë™ì¼í•œ IPë¡œ 10번 ì´ìƒ ì ‘ì†ë˜ì—ˆìŠµë‹ˆë‹¤. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
More than 10 connections sharing the same IP have logged into the game for an hour. Please check this matter.
*/
MSG_BAN_PC_IP_COUNT = 0x49b,
-/*20060522 to 20180621
+/*20060522 to 20180704
ê²Œìž„ì„ ìž¬ì‹œìž‘ 하십시오
Please restart the game.
*/
MSG_GAMEGUARD_RESTART = 0x49c,
#endif
#if PACKETVER >= 20060703
-/*20060703 to 20180621
+/*20060703 to 20180704
용병정보 - ì•„ì³íƒ€ìž…
Mercenary: Archer
*/
MSG_MER_INFO_TYPE_ARCHER = 0x49d,
-/*20060703 to 20180621
+/*20060703 to 20180704
용병정보 - 검사타입
Mercenary: Swordman
*/
MSG_MER_INFO_TYPE_SWORDMAN = 0x49e,
-/*20060703 to 20180621
+/*20060703 to 20180704
용병정보 - 창병타입
Mercenary: Spearman
*/
MSG_MER_INFO_TYPE_LANCER = 0x49f,
/*20060703 to 20070109
남ì€ì‹œê°„
-20070115 to 20180621
+20070115 to 20180704
삭제시간
Expiration
*/
MSG_LEFT_TIME = 0x4a0,
-/*20060703 to 20180621
+/*20060703 to 20180704
신뢰ë„
Loyalty
*/
MSG_MER_FRIENDLY = 0x4a1,
-/*20060703 to 20180621
+/*20060703 to 20180704
소환횟수
Summons
*/
MSG_MER_CALLCOUNT = 0x4a2,
-/*20060703 to 20180621
+/*20060703 to 20180704
Kill
*/
MSG_MER_KILL = 0x4a3,
#endif
#if PACKETVER >= 20060904
-/*20060904 to 20180621
+/*20060904 to 20180704
íŽ«ì´ ë°°ê°€ 고파서 ë‹¹ì‹ ì„ ì›ë§í•˜ê³  있다는 ëŠë‚Œì´ 든다.
You can feel hatred from your pet for neglecting to feed it.
*/
MSG_PET_STARVING = 0x4a4,
-/*20060904 to 20180621
+/*20060904 to 20180704
[POINT] í…Œì´ë°ë¯¸ì…˜ 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[POINT] You earned %d Taming Mission Ranking Points, giving you a total of %d points.
*/
MSG_GANGSI_POINT = 0x4a5,
-/*20060904 to 20180621
+/*20060904 to 20180704
[í…Œì´ë°ë¯¸ì…˜] Target Monster : %s
[Taming Mission] Target Monster: %s
*/
MSG_GANGSI_MISSION = 0x4a6,
#endif
#if PACKETVER >= 20060918
-/*20060918 to 20180621
+/*20060918 to 20180704
/hunting : 사냥 목ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/hunting: You can check the your hunting list.
*/
MSG_EXPLAIN_HUNTING = 0x4a7,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. %s는 몇 스킬 ì°ìœ¼ì…¨ë‚˜ìš”?
[Angel's Question] Please tell me, how many %s skills do you have?
*/
MSG_DEATH_Q01 = 0x4a8,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. 소지하시고있는 제니를 십만으로 나누면 얼마가 ë˜ì‹œë‚˜ìš”?
[Angel's Question] Please tell me, how much zeny you'll have if you divide it by 100,000?
*/
MSG_DEATH_Q02 = 0x4a9,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. ì˜¤ëŠ˜ì´ ëª‡ì¼ì´ì‹ ì§€ 아시나요?
[Angel's Question] Please tell me, what is today's date?
*/
MSG_DEATH_Q03 = 0x4aa,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. %sì€ ì§€ê¸ˆ 몇ì´ì‹ ê°€ìš”?
[Angel's Question] Please tell me, how many %s do you have?
*/
MSG_DEATH_Q04 = 0x4ab,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 슈노, 태권계열, ë¬´ë‚™ê³„ì—´ì„ ë‹´ë‹¹í•˜ê³ ìžˆëŠ” SiYeonì”¨ì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in SiYeon's name?
*/
MSG_DEATH_Q05 = 0x4ac,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 귀엽고 ì–´ì—¬ìœ ë¼ê·¸ë‚˜ë¡œí¬ì˜ ížˆë¡œì¸ Munakì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Munak's name?
*/
MSG_DEATH_Q06 = 0x4ad,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 제가 ì–´ì—¬ë»í•˜ëŠ” Bongunì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Bongun's name?
*/
MSG_DEATH_Q07 = 0x4ae,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ì €í¬ê°€ 존재하는 온ë¼ì¸ì„¸ê³„ Ragnarokì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, Ragnarok?
*/
MSG_DEATH_Q08 = 0x4af,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 언제나 Onlineìƒíƒœì¸ 천사ë™ë£Œë“¤ì€ í°íž˜ì´ ë˜ì–´ì£¼ì£ . Onlineì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, online?
*/
MSG_DEATH_Q09 = 0x4b0,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 죽ìŒë„ ë‘려워하지않는 ê¸°ì‚¬ë“¤ì„ ìƒì§•í•˜ëŠ” ë‹¨ì–´ì¸ Deathì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, death?
*/
MSG_DEATH_Q10 = 0x4b1,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ê¸°ì‚¬ë“¤ì€ ë„ˆë¬´ 멋진다고 ìƒê°í•´ìš”. Knightì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, knight?
*/
MSG_DEATH_Q11 = 0x4b2,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ì¤‘ë ¥ì„ ëœ»í•˜ëŠ” ë‹¨ì–´ì¸ Gravityì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, gravity?
*/
MSG_DEATH_Q12 = 0x4b3,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ì–´ë‘ ì†ì—ì„œë„ ë°ê²Œ 사는게 중요하지요. Darkì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, dark?
*/
MSG_DEATH_Q13 = 0x4b4,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ë­ë“ ì§€ 수집하는 Collectorì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, collecter?
*/
MSG_DEATH_Q14 = 0x4b5,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ëŒ€ë‹µ] 소녀ì—게 정확한 ì‚¬ì‹¤ì„ ê°€ë¥´ì³ì£¼ì…”ì„œ ê°ì‚¬í•˜ì˜µë‹ˆë‹¤.
[Angel's Answer] Thank you for letting me know~
*/
MSG_DEATH_R01 = 0x4b6,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ëŒ€ë‹µ] 사랑스러우신 분ì´ì‹œêµ°ìš”. 소녀 ê°íƒ„했사옵니다.
[Angel's Answer] I'm very pleased with your answer. You are a splendid adventurer.
*/
MSG_DEATH_R02 = 0x4b7,
-/*20060918 to 20180621
+/*20060918 to 20180704
[천사ì˜ëŒ€ë‹µ] 소녀 실ë§í–ˆì‚¬ì˜µë‹ˆë‹¤.
[Angel's Answer] You've disappointed me...
*/
MSG_DEATH_R05 = 0x4b8,
#endif
#if PACKETVER >= 20060925
-/*20060925 to 20180621
+/*20060925 to 20180704
[POINT] 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You earned %d Ranking Points, giving you a total of %d Ranking Points.
*/
@@ -6412,41 +6412,41 @@ You can feel hatred from your pet for neglecting to feed it.
#if PACKETVER >= 20060927
/*20060927 to 20070417
[%s]ì˜ ì†Œì§€ Point : %d Point
-20070423 to 20180621
+20070423 to 20180704
[%s]ì˜ ì†Œì§€ ìºì‹œ : %d ìºì‹œ
[%s]'s Points: %d Points
*/
MSG_POINT_SHOP = 0x4ba,
#endif
#if PACKETVER >= 20061009
-/*20061009 to 20180621
+/*20061009 to 20180704
ì„ íƒí•˜ì§€ ì•Šì€ ìºë¦­í„°ëŠ” ì‚­ì œ ë©ë‹ˆë‹¤. 완료하시겠습니까?
Unselected Characters will be deleted. Continue?
*/
MSG_CONFIRM_SELECT_CHARACTERS = 0x4bb,
-/*20061009 to 20180621
+/*20061009 to 20180704
9ê°œ ì´ìƒ ì„ íƒí•˜ì‹¤ 수 없습니다.
You cannot select more than 8.
*/
MSG_ERROR_SELECT_CHARACTERS = 0x4bc,
#endif
#if PACKETVER >= 20061016
-/*20061016 to 20180621
+/*20061016 to 20180704
ìºë¦­í„°ëª…ì„ '%s' (으)ë¡œ 변경하시겠습니까?
Do you want to change your name to '%s'?
*/
MSG_CONFIRM_TO_CHANGE_NAME = 0x4bd,
-/*20061016 to 20180621
+/*20061016 to 20180704
ìºë¦­í„°ëª…ì´ ì„±ê³µì ìœ¼ë¡œ 변경ë˜ì—ˆìŠµë‹ˆë‹¤.
Character Name has been changed successfully.
*/
MSG_CHANGE_NAME_SUCCESS = 0x4be,
-/*20061016 to 20180621
+/*20061016 to 20180704
ìºë¦­í„°ëª… ë³€ê²½ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
You have failed to change this character's name.
*/
MSG_CHANGE_NAME_FAILURE = 0x4bf,
-/*20061016 to 20180621
+/*20061016 to 20180704
í•œ ë²ˆì— í•œ ì¢…ë¥˜ì˜ ì•„ì´í…œë§Œ 구매할 수 있습니다.
You can purchase only one kind of item at a time.
*/
@@ -6455,41 +6455,41 @@ You can purchase only one kind of item at a time.
#if PACKETVER >= 20061017
/*20061017 to 20061017
ìºë¦­í„°ê°€ í•˜ë‚˜ë„ ì„ íƒë˜ì§€ 않았습니다. 반드시 하나 ì´ìƒì˜ ìºë¦­í„°ë¥¼ ì„ íƒí•˜ì—¬ì•¼ 합니다.
-20061023 to 20180621
+20061023 to 20180704
ìºë¦­í„°ê°€ í•œê°œë„ ì„ íƒë˜ì§€ 않았습니다. 반드시 한개 ì´ìƒì˜ ìºë¦­í„°ë¥¼ ì„ íƒí•˜ì—¬ì•¼ 합니다.
No characters were selected. You must select at least one character.
*/
MSG_NO_SELECT_CHARACTERS = 0x4c1,
#endif
#if PACKETVER >= 20061023
-/*20061023 to 20180621
+/*20061023 to 20180704
ì´ë¯¸ ìºë¦­í„°ëª…ì„ ë³€ê²½í•œ ì ì´ 있습니다. ë” ì´ìƒ 변경 í•  수 없습니다.
This character's name has already been changed. You cannot change a character's name more than once.
*/
MSG_ALREADY_CHANGED_NAME = 0x4c2,
-/*20061023 to 20180621
+/*20061023 to 20180704
ì‚¬ìš©ìž ì •ë³´ê°€ 정확하지 않습니다.
User Information is not correct.
*/
MSG_NOTREGISTED_USER = 0x4c3,
-/*20061023 to 20180621
+/*20061023 to 20180704
다른 사용ìžê°€ ê°™ì€ ìºë¦­í„° ëª…ì„ ë¨¼ì € 사용하였습니다. 다른 ìºë¦­í„°ëª…ì„ ì‚¬ìš©í•˜ì—¬ 주십시요.
Another user is using this character name, so please select another one.
*/
MSG_DUPLICATED_CHAR_NAME = 0x4c4,
#endif
#if PACKETVER >= 20061030
-/*20061030 to 20180621
+/*20061030 to 20180704
파티장 ê¶Œí•œì´ ì—†ì–´ 파티ì›ì„ 소환하지 못했습니다.
The party member was not summoned because you are not the party leader.
*/
MSG_CANNOT_PARTYCALL = 0x4c5,
-/*20061030 to 20180621
+/*20061030 to 20180704
현재 맵ì—는 ì†Œí™˜ë  íŒŒí‹°ì›ì´ 존재하지 않습니다.
There is no party member to summon in the current map.
*/
MSG_NO_PARTYMEM_ON_THISMAP = 0x4c6,
-/*20061030 to 20180621
+/*20061030 to 20180704
ì´ ì§€ì—­ì—ì„  ë³´ìŠ¤ëª¬ìŠ¤í„°ì˜ í”ì ì„ ì°¾ì„ ìˆ˜ê°€ 없습니다.
You cannot find any trace of a Boss Monster in this area.
*/
@@ -6498,12 +6498,12 @@ You cannot find any trace of a Boss Monster in this area.
보스 몬스터 '%s'ì˜ ë“±ìž¥ 예정시간 %02dì‹œ:%02d분
20070129 to 20071205
보스 몬스터 '%s'(ì´)ê°€ %dì‹œ %d분 í›„ì— ë“±ìž¥í•©ë‹ˆë‹¤.
-20071211 to 20180621
+20071211 to 20180704
보스 몬스터 '%s'(ì´)ê°€ %d시간 %d분 í›„ì— ë“±ìž¥í•©ë‹ˆë‹¤.
Boss Monster, '%s' will appear in %02d hour(s) and %02d minute(s).
*/
MSG_APPEARANCE_TIME_OF_BOSSMON = 0x4c8,
-/*20061030 to 20180621
+/*20061030 to 20180704
보스 몬스터 '%s'ì˜ ìœ„ì¹˜ê°€ ë¯¸ë‹ˆë§µì— í‘œì‹œë©ë‹ˆë‹¤.
The location of Boss Monster, '%s', will be displayed on your Mini-Map.
*/
@@ -6520,119 +6520,119 @@ The location of Boss Monster, '%s', will be displayed on your Mini-Map.
'%s'를 개봉 하시겠습니까? 한번 ê°œë´‰ëœ ì•„ì´í…œì€ 창고 저장 ì™¸ì˜ ë‹¤ë¥¸ ì´ë™ì€ 불가하며 임대 ì•„ì´í…œì€ 창고 ì €ìž¥ë„ ë¶ˆê°€í•©ë‹ˆë‹¤. 한정 ì•„ì´í…œì€ 거래 ë° ì´ë™ì´ 가능 합니다. ë™ì¼í•œ ì•„ì´í…œì„ 중복 사용하ë”ë¼ë„ 효과가 중첩ë˜ì§€ 않습니다.
20101102 to 20110330
'%s'를 개봉 하시겠습니까? ^ff0000ìƒìžë¥¼ 개봉하시면 청약 철회 ë° í™˜ë¶ˆ 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 한번 개봉 ëœ ì•„ì´í…œì€ 창고 저장 ì™¸ì˜ ë‹¤ë¥¸ ì´ë™ì€ 불가하며 임대 ì•„ì´í…œì€ 창고 ì €ìž¥ë„ ë¶ˆê°€í•©ë‹ˆë‹¤. 한정 ì•„ì´í…œì€ 거래 ë° ì´ë™ì´ 가능 합니다. ë™ì¼í•œ ì•„ì´í…œì„ 중복 사용하ë”ë¼ë„ 효과가 중첩ë˜ì§€ 않습니다.
-20110405 to 20180621
+20110405 to 20180704
'%s'를 개봉 하시겠습니까? ^ff0000ìƒìžë¥¼ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 한번 개봉 ëœ ì•„ì´í…œì€ 창고 저장 ì™¸ì˜ ë‹¤ë¥¸ ì´ë™ì€ 불가하며 임대 ì•„ì´í…œì€ 창고 ì €ìž¥ë„ ë¶ˆê°€í•©ë‹ˆë‹¤. 한정 ì•„ì´í…œì€ 거래 ë° ì´ë™ì´ 가능 합니다. ë™ì¼í•œ ì•„ì´í…œì„ 중복 사용하ë”ë¼ë„ 효과가 중첩ë˜ì§€ 않습니다.
Do you want to open '%s'? Once opened, the contents cannot be moved to other locations aside from the Kafra Storage. The item effect isn't doubled, even if the same items are used more than once.
*/
MSG_CONFIRM_TO_OPEN_CASH_ITEM = 0x4ca,
-/*20061106 to 20180621
+/*20061106 to 20180704
NPC가 존재하지 않아 구매가 실패하였습니다.
The Purchase has failed because the NPC does not exist.
*/
MSG_BUY_CASH_FAIL_NPC = 0x4cb,
-/*20061106 to 20180621
+/*20061106 to 20180704
부분 유료화 ì‹œìŠ¤í…œì´ ì •ìƒ ìž‘ë™í•˜ì§€ ì•Šì•„ 구매가 실패하였습니다.
The Purchase has failed because the Kafra Shop System is not working correctly.
*/
MSG_BUY_CASH_FAIL_SYSTEM = 0x4cc,
-/*20061106 to 20180621
+/*20061106 to 20180704
êµí™˜ì¤‘ì—는 ì•„ì´í…œì„ 구매 í•  수 없습니다.
You cannot purchase items while you are in a trade.
*/
MSG_BUY_CASH_FAIL_EXCHANGE = 0x4cd,
-/*20061106 to 20180621
+/*20061106 to 20180704
ì•„ì´í…œ ì •ë³´ê°€ 정확하지 ì•Šì•„ 구매가 실패하였습니다.
The Purchase has failed because the Item Information was incorrect.
*/
MSG_BUY_CASH_FAIL_ITEM_ID = 0x4ce,
#endif
#if PACKETVER >= 20061204
-/*20061204 to 20180621
+/*20061204 to 20180704
STRì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
STR has increased.
*/
MSG_ENST_STR = 0x4cf,
-/*20061204 to 20180621
+/*20061204 to 20180704
STRì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
STR has returned to normal.
*/
MSG_DSST_STR = 0x4d0,
-/*20061204 to 20180621
+/*20061204 to 20180704
AGIì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
AGI has increased.
*/
MSG_ENST_AGI = 0x4d1,
-/*20061204 to 20180621
+/*20061204 to 20180704
AGIì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
AGI has returned to normal.
*/
MSG_DSST_AGI = 0x4d2,
-/*20061204 to 20180621
+/*20061204 to 20180704
VITì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
VIT has increased.
*/
MSG_ENST_VIT = 0x4d3,
-/*20061204 to 20180621
+/*20061204 to 20180704
VITì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
VIT has returned to normal.
*/
MSG_DSST_VIT = 0x4d4,
-/*20061204 to 20180621
+/*20061204 to 20180704
INTì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
INT has increased.
*/
MSG_ENST_INT = 0x4d5,
-/*20061204 to 20180621
+/*20061204 to 20180704
INTì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
INT has returned to normal.
*/
MSG_DSST_INT = 0x4d6,
-/*20061204 to 20180621
+/*20061204 to 20180704
DEXì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
DEX has increased.
*/
MSG_ENST_DEX = 0x4d7,
-/*20061204 to 20180621
+/*20061204 to 20180704
DEXì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
DEX has returned to normal.
*/
MSG_DSST_DEX = 0x4d8,
-/*20061204 to 20180621
+/*20061204 to 20180704
LUKì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
LUK has increased.
*/
MSG_ENST_LUK = 0x4d9,
-/*20061204 to 20180621
+/*20061204 to 20180704
LUKì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
LUK has returned to normal.
*/
MSG_DSST_LUK = 0x4da,
-/*20061204 to 20180621
+/*20061204 to 20180704
íšŒí”¼ìœ¨ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Flee Rate (Flee) has increased.
*/
MSG_ENST_AVOIDANCE = 0x4db,
-/*20061204 to 20180621
+/*20061204 to 20180704
íšŒí”¼ìœ¨ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
Flee Rate has returned to normal.
*/
MSG_DSST_AVOIDANCE = 0x4dc,
-/*20061204 to 20180621
+/*20061204 to 20180704
ëª…ì¤‘ë¥ ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Accuracy Rate (Hit) has increased.
*/
MSG_ENST_HIT = 0x4dd,
-/*20061204 to 20180621
+/*20061204 to 20180704
ëª…ì¤‘ë¥ ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
Accuracy Rate has returned to normal.
*/
MSG_DSST_HIT = 0x4de,
-/*20061204 to 20180621
+/*20061204 to 20180704
í¬ë¦¬í‹°ì»¬ í™•ë¥ ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Critical Attack (Critical) has increased.
*/
MSG_ENST_CRITICALSUCCESSVALUE = 0x4df,
-/*20061204 to 20180621
+/*20061204 to 20180704
í¬ë¦¬í‹°ì»¬ í™•ë¥ ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
Critical Attack has returned to normal.
*/
@@ -6641,22 +6641,22 @@ Critical Attack has returned to normal.
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 1.5ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
20111025 to 20111101
30분간 ì–»ì„ ìˆ˜ 있는 경험치가 75%% ì¦ê°€í•©ë‹ˆë‹¤.
-20111102 to 20180621
+20111102 to 20180704
30분간 ì–»ì„ ìˆ˜ 있는 경험치가 50%% ì¦ê°€í•©ë‹ˆë‹¤.
You will receive 1.5 times more EXP from hunting monsters for the next 30 minutes.
*/
MSG_PLUSEXP = 0x4e1,
-/*20061204 to 20180621
+/*20061204 to 20180704
30분내 사ë§ì‹œ 1íšŒì— í•œí•´ 경험치 ê°ì†Œê°€ ì¼ì–´ë‚˜ì§€ 않습니다.
This character will not receive any EXP penalty if killed within the next 30 minutes.
*/
MSG_DDEATHPENALTY = 0x4e2,
-/*20061204 to 20180621
+/*20061204 to 20180704
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ 30분간 2ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Regular item drops from monsters will be doubled for the next 30 minutes.
*/
MSG_RECEIVEITEM = 0x4e3,
-/*20061204 to 20180621
+/*20061204 to 20180704
10분간 맵 ë‚´ì— ì¶œí˜„ 가능한 보스 ëª¬ìŠ¤í„°ì— ëŒ€í•œ 정보를 안내해 드립니다.
Boss Monster Map Information for the next 10 minutes.
*/
@@ -6677,7 +6677,7 @@ Boss Monster Map Information for the next 10 minutes.
^ff0000본 ì•„ì´í…œì„ 구매 후 개봉하시면 청약 철회 ë° í™˜ë¶ˆ 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
20110405 to 20120618
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
-20120626 to 20180621
+20120626 to 20180704
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.ë˜í•œ 구매시 ì‚¬ìš©ëœ ë¬´ë£Œìºì‹œëŠ” 청약철회시 반환ë˜ì§€ 않습니다.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
Do you really want to purchase this item? %d points will be deducted from your total Kafra Credit Points.
*/
@@ -6688,21 +6688,21 @@ Do you really want to purchase this item? %d points will be deducted from your t
'%s'ì•„ì´í…œì˜ ì‚¬ìš©ì‹œê°„ì´ %d분 남았습니다.
20061218 to 20070423
í¬ì¸íŠ¸ê°€ 부족합니다.
-20070423 to 20180621
+20070423 to 20180704
ìºì‹œê°€ 부족합니다.
You do not have enough Kafra Credit Points.
*/
MSG_BUY_CASH_FAIL_MONEY = 0x4e6,
/*20061211 to 20061211
1분 후, '%s'ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ì—ì„œ ì‚­ì œë©ë‹ˆë‹¤.
-20061218 to 20180621
+20061218 to 20180704
^ff0000파기ì¼ì‹œ: %s^000000
^ff0000Expiration Date: %s^000000
*/
MSG_NOTICE_TO_DELETE_TIME = 0x4e7,
/*20061211 to 20061211
'%s'ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ì—ì„œ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.
-20061218 to 20180621
+20061218 to 20180704
'%s'ì•„ì´í…œì˜ ì‚¬ìš©ì‹œê°„ì´ %d분 남았습니다.
The '%s' item will disappear in %d minutes.
20070102 to 20070312
@@ -6711,23 +6711,23 @@ Do you really want to purchase this item? %d points will be deducted from your t
MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e8,
#endif
#if PACKETVER >= 20061218
-/*20061218 to 20180621
+/*20061218 to 20180704
1분 후, '%s'ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ì—ì„œ ì‚­ì œë©ë‹ˆë‹¤.
'%s' item will be deleted from the Inventory in 1 minute.
*/
MSG_LAST_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e9,
-/*20061218 to 20180621
+/*20061218 to 20180704
'%s'ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ì—ì„œ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.
'%s' item has been deleted from the Inventory.
*/
MSG_NOTICE_TO_DELETE_ITEM = 0x4ea,
#endif
#if PACKETVER >= 20070102
-/*20070102 to 20180621
+/*20070102 to 20180704
Input Number
*/
MSG_INPUT_NUMBER = 0x4eb,
-/*20070102 to 20180621
+/*20070102 to 20180704
%mì›” %dì¼ %Hì‹œ %M분
%m/%d %H:%M
*/
@@ -6736,58 +6736,58 @@ Input Number
#if PACKETVER >= 20070129
/*20070129 to 20071120
보스 몬스터 '%s'(ì´)ê°€ 1분 ì´ë‚´ì— 등장합니다.
-20071127 to 20180621
+20071127 to 20180704
보스 몬스터 '%s'(ì´)ê°€ ìž ì‹œ í›„ì— ë“±ìž¥í•©ë‹ˆë‹¤.
Boss Monster '%s' will appear within 1 minute.
*/
MSG_APPEARANCE_TIME_OF_BOSSMON2 = 0x4ed,
-/*20070129 to 20180621
+/*20070129 to 20180704
용병 스킬목ë¡
Mercenary Soldier Skill List
*/
MSG_MER_SKILLLIST = 0x4ee,
-/*20070129 to 20180621
+/*20070129 to 20180704
블랙젬스톤 1개와 백만제니를 소모하는 ë§ˆë²•ì˜ ì‹¤í–‰ì— ë™ì˜í•©ë‹ˆê¹Œ?
Do you agree to cast the magic spell that consumes 1 Black Gemstone and 1,000,000 Zeny?
*/
MSG_DA_EXP_ACCEPT = 0x4ef,
#endif
#if PACKETVER >= 20070220
-/*20070220 to 20180621
+/*20070220 to 20180704
[POINT] 콜렉터랭킹 í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You have gained %d Collector Rank Points; you now have a total of %d Collector Rank Points.
*/
MSG_COLLECTOR_POINT = 0x4f0,
-/*20070220 to 20180621
+/*20070220 to 20180704
[콜렉터랭킹] Target Item : %s
[Collector Rank] Target Item: %s
*/
MSG_COLLECTOR_MISSION = 0x4f1,
#endif
#if PACKETVER >= 20070227
-/*20070227 to 20180621
+/*20070227 to 20180704
용병 ì‚¬ìš©ì‹œê°„ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤.
The mercenary contract has expired.
*/
MSG_MER_FINISH = 0x4f2,
-/*20070227 to 20180621
+/*20070227 to 20180704
ìš©ë³‘ì´ ì‚¬ë§í•˜ì˜€ìŠµë‹ˆë‹¤.
The mercenary has died.
*/
MSG_MER_DIE = 0x4f3,
-/*20070227 to 20180621
+/*20070227 to 20180704
ìš©ë³‘ì´ í•´ê³ ë˜ì—ˆìŠµë‹ˆë‹¤.
You have released the mercenary.
*/
MSG_MER_RETIRE = 0x4f4,
-/*20070227 to 20180621
+/*20070227 to 20180704
ìš©ë³‘ì´ ë„ë§ê°”습니다.
The mercenary has run away.
*/
MSG_MER_RUNAWAY = 0x4f5,
#endif
#if PACKETVER >= 20070319
-/*20070319 to 20180621
+/*20070319 to 20180704
'%s'ì•„ì´í…œì˜ ì‚¬ìš©ì‹œê°„ì´ %dì´ˆ 남았습니다.
The '%s' item will disappear in %d seconds.
*/
@@ -6796,226 +6796,226 @@ The mercenary has run away.
#if PACKETVER >= 20070326
/*20070326 to 20070821
PCë°© ì´ë²¤íŠ¸ : 경험치 ì¦ê°€ %d%%, 죽ì„ë•Œ 경험치 %d%%, 드롭율 ì¦ê°€ %d%%
-20070828 to 20180621
+20070828 to 20180704
PCë°© 프리미엄 서비스 : 경험치 %d%% ì¦ê°€, ì‚¬ë§ íŽ˜ë„í‹° %d%% ê°ì†Œ, 드롭율 %d%% ì¦ê°€
IP Bonus: EXP/JEXP %d%%, Death Penalty %d%%, Item Drop %d%%
*/
MSG_PCBANG_EVENT = 0x4f7,
#endif
#if PACKETVER >= 20070402
-/*20070402 to 20180621
+/*20070402 to 20180704
24시간 ì´í›„ì— ì‹œë„하세요
Symbols in Character Names are forbidden.
*/
MSG_LIMIT_CHAR_DELETE = 0x4f8,
#endif
#if PACKETVER >= 20070416
-/*20070416 to 20180621
+/*20070416 to 20180704
ìš©ë³‘ì´ ì‚¬ìš©ìž ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Mercenary will follow custom AI.
*/
MSG_MER_USERAI_ON = 0x4f9,
-/*20070416 to 20180621
+/*20070416 to 20180704
ìš©ë³‘ì´ ê¸°ë³¸ ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Mercenary will follow basic AI.
*/
MSG_MER_USERAI_OFF = 0x4fa,
#endif
#if PACKETVER >= 20070611
-/*20070611 to 20180621
+/*20070611 to 20180704
%s님ì˜
%s's
*/
MSG_CHARACTER_NAME = 0x4fb,
/*20070611 to 20070801
%së‹˜ì´ %s를 íšë“하셨습니다.
-20070807 to 20180621
+20070807 to 20180704
%së‹˜ì´ %s ì•„ì´í…œì„ íšë“하셨습니다.
%s has acquired %s.
*/
MSG_ITEM_PICKUP_PARTY = 0x4fc,
-/*20070611 to 20180621
+/*20070611 to 20180704
공개 채팅 메시지 표시
Public Chat Display
*/
MSG_VIEW_CHAT_MSG = 0x4fd,
-/*20070611 to 20180621
+/*20070611 to 20180704
ê·“ì†ë§ 채팅 메시지 표시
Whisper Display
*/
MSG_VIEW_WHISPER_MSG = 0x4fe,
-/*20070611 to 20180621
+/*20070611 to 20180704
파티 채팅 메시지 표시
Party Chat Display
*/
MSG_VIEW_PARTY_MSG = 0x4ff,
-/*20070611 to 20180621
+/*20070611 to 20180704
길드 채팅 메시지 표시
Guild Chat Display
*/
MSG_VIEW_GUILD_MSG = 0x500,
-/*20070611 to 20180621
+/*20070611 to 20180704
ì•„ì´í…œ íšë“/드롭 메시지 표시
Item Get/Drop Message Display
*/
MSG_VIEW_GET_ITEM_MSG = 0x501,
-/*20070611 to 20180621
+/*20070611 to 20180704
장비 장착/해제 메시지 표시
Equipment On/Off Message Display
*/
MSG_VIEW_EQUIP_MSG = 0x502,
-/*20070611 to 20180621
+/*20070611 to 20180704
ìƒíƒœì´ìƒ 메시지 표시
Abnormal Status Message Display
*/
MSG_VIEW_CHANGE_STATUS_MSG = 0x503,
-/*20070611 to 20180621
+/*20070611 to 20180704
파티ì›ì˜ 주요 ì•„ì´í…œ íšë“ 메시지 표시
Party Member's Obtained Item Message Display
*/
MSG_VIEW_GET_ITEM_PARTY_MSG = 0x504,
-/*20070611 to 20180621
+/*20070611 to 20180704
파티ì›ì˜ ìƒíƒœì´ìƒ 메시지 표시
Party Member's Abnormal Status Message Display
*/
MSG_VIEW_CHANGE_STATUS_PARTY_MSG = 0x505,
-/*20070611 to 20180621
+/*20070611 to 20180704
스킬 사용 실패 메시지 표시
Skill Failure Message Display
*/
MSG_VIEW_FAIL_SKILL_MSG = 0x506,
-/*20070611 to 20180621
+/*20070611 to 20180704
파티 설정 메시지 표시
Party Configuration Message Display
*/
MSG_VIEW_PARTY_SETUP_MSG = 0x507,
-/*20070611 to 20180621
+/*20070611 to 20180704
장비 ì†ìƒ 메시지 표시
Damaged Equipment Message Display
*/
MSG_VIEW_DAMAGED_EQUIP_MSG = 0x508,
-/*20070611 to 20180621
+/*20070611 to 20180704
배틀 메시지 창 표시 정보
Battle Message Window Display
*/
MSG_BATTLE_CHAT_WND_OPTION = 0x509,
-/*20070611 to 20180621
+/*20070611 to 20180704
[%s]ì˜ ì†Œì§€ í•œì½”ì¸ : %d 한코ì¸
[%s]'s Han Coin: %d Han Coin
*/
MSG_POINT_SHOP_NHN = 0x50a,
#endif
#if PACKETVER >= 20070618
-/*20070618 to 20180621
+/*20070618 to 20180704
ì¼ë°˜ 메시지
Public Log
*/
MSG_ST_CHAT = 0x50b,
-/*20070618 to 20180621
+/*20070618 to 20180704
배틀 메시지
Battle Log
*/
MSG_BT_CHAT = 0x50c,
-/*20070618 to 20180621
+/*20070618 to 20180704
íœ´ëŒ€í° ì¸ì¦.
Mobile Authentication
*/
MSG_PHONE_CONFIRM = 0x50d,
-/*20070618 to 20180621
+/*20070618 to 20180704
ì½ê¸°
Read
*/
MSG_BOOK_READ = 0x50e,
-/*20070618 to 20180621
+/*20070618 to 20180704
ìžë™ë‚­ë…
Auto Read
*/
MSG_BOOK_AUTOREAD = 0x50f,
-/*20070618 to 20180621
+/*20070618 to 20180704
책갈피
Bookmark
*/
MSG_BOOK_KEEP = 0x510,
-/*20070618 to 20180621
+/*20070618 to 20180704
ì´ì „페ì´ì§€
Previous
*/
MSG_BOOK_PREV = 0x511,
-/*20070618 to 20180621
+/*20070618 to 20180704
다ìŒíŽ˜ì´ì§€
Next
*/
MSG_BOOK_NEXT = 0x512,
-/*20070618 to 20180621
+/*20070618 to 20180704
닫기
Close
*/
MSG_BOOK_CLOSE = 0x513,
#endif
#if PACKETVER >= 20070622
-/*20070622 to 20180621
+/*20070622 to 20180704
%s 장비가 ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
%s's Equipment has been damaged.
*/
MSG_DAMAGED_EQUIP = 0x514,
-/*20070622 to 20180621
+/*20070622 to 20180704
%së‹˜ì˜ %s ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
%s's %s was damaged.
*/
MSG_DAMAGED_EQUIP_PARTY = 0x515,
-/*20070622 to 20180621
+/*20070622 to 20180704
무기가
Weapon
*/
MSG_DAMAGED_WEAPON = 0x516,
-/*20070622 to 20180621
+/*20070622 to 20180704
갑옷ì´
Armor
*/
MSG_DAMAGED_BODY = 0x517,
-/*20070622 to 20180621
+/*20070622 to 20180704
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 파티가입 불능
Insufficient Skill Level for joining a Party
*/
MSG_NOT_ENOUGH_SKILLLEVE5_2 = 0x518,
#endif
#if PACKETVER >= 20070703
-/*20070703 to 20180621
+/*20070703 to 20180704
[%s]ì˜ ë¬´ë£Œ ìºì‹œ : %d ìºì‹œ
[%s]'s Free Cash: %d Cash
*/
MSG_POINT_SHOP2 = 0x519,
-/*20070703 to 20180621
+/*20070703 to 20180704
무료 ìºì‹œ 사용 :
Use Free Cash:
*/
MSG_USE_FREE_POINT = 0x51a,
-/*20070703 to 20180621
+/*20070703 to 20180704
ìºì‹œ
Cash
*/
MSG_CASH = 0x51b,
#endif
#if PACKETVER >= 20070710
-/*20070710 to 20180621
+/*20070710 to 20180704
http://payment.ro.hangame.com/index.asp
*/
MSG_SETTLE_WEB_URL_HANGAME = 0x51c,
/*20070710 to 20090603
ê·¸ë¼ë¹„í‹° íšŒì› ì •ë³´ë™ì˜ë¥¼ 하셔야 사용할수있습니다.
-20090610 to 20180621
+20090610 to 20180704
ê·¸ë¼ë¹„í‹° íšŒì› ì •ë³´ë™ì˜ë¥¼ 하셔야 사용할 수 있습니다.
You need to accept the Privacy Policy from Gravity in order to use the service.
*/
MSG_BAN_GRAVITY_MEM_AGREE = 0x51d,
-/*20070710 to 20180621
+/*20070710 to 20180704
ì´ìš©ì•½ê´€ì— ë™ì˜ë¥¼ 하셔야 본 서비스를 ì´ìš©í•˜ì‹¤ 수 있습니다.
You need to accept the User Agreement in order to use the service.
*/
MSG_BAN_GAME_MEM_AGREE = 0x51e,
/*20070710 to 20080514
존재하지 않는 한게임 IDì´ê±°ë‚˜ ìž˜ëª»ëœ ID입니다.
-20080520 to 20180621
+20080520 to 20180704
입력하신 ì•„ì´ë””와 비밀번호가 등ë¡ëœ 정보와 ì¼ì¹˜í•˜ì§€ 않습니다.
Incorrect or nonexistent ID.
*/
@@ -7034,43 +7034,43 @@ Incorrect or nonexistent ID.
^ff0000본 ì•„ì´í…œì„ 구매 후 개봉하시면 청약 철회 ë° í™˜ë¶ˆ 대ìƒì—ì„œ 제외ë©ë‹ˆë‹¤.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 ì¼ë°˜ %dìºì‹œ, 무료 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
20110405 to 20120618
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 ì¼ë°˜ %dìºì‹œ, 무료 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
-20120626 to 20180621
+20120626 to 20180704
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.ë˜í•œ 구매시 ì‚¬ìš©ëœ ë¬´ë£Œìºì‹œëŠ” 청약철회시 반환ë˜ì§€ 않습니다.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 ì¼ë°˜ %dìºì‹œ, 무료 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
Do you really want to purchase these items? You will spend %d Regular Cash Points and %d Free Cash Points.
*/
MSG_BUY_RECONFIRM2 = 0x520,
#endif
#if PACKETVER >= 20070718
-/*20070718 to 20180621
+/*20070718 to 20180704
%dì‹œê°„ì´ ê²½ê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
%d hour(s) has passed.
*/
MSG_NOTIFY_PLAYTIME1 = 0x521,
-/*20070718 to 20180621
+/*20070718 to 20180704
%d시간 %dë¶„ì´ ê²½ê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
%d hour(s) %d minute(s) has passed.
*/
MSG_NOTIFY_PLAYTIME2 = 0x522,
-/*20070718 to 20180621
+/*20070718 to 20180704
ê²Œìž„ì„ ì¢…ë£Œí•˜ì„¸ìš”, 경험치 ë° ëª¨ë“ ê²Œ 50%ë¡œ ì¡°ì •ë©ë‹ˆë‹¤
Please stop playing the game, and take a break. Exp and other features will be reduced to 50%.
*/
MSG_WARNING_MSG1 = 0x523,
-/*20070718 to 20180621
+/*20070718 to 20180704
불건전 ì‹œê°„ëŒ€ì— ì ‘ì–´ë“¤ì—ˆìŠµë‹ˆë‹¤. ê²Œìž„ì„ ì¢…ë£Œí•˜ì„¸ìš”, 경험치 ë° ëª¨ë“ ê²Œ 0%ë¡œ ì¡°ì •ë©ë‹ˆë‹¤
Please stop playing the game since you'll need to rest. Exp and other features will be fixed to 0%.
*/
MSG_WARNING_MSG2 = 0x524,
#endif
#if PACKETVER >= 20070724
-/*20070724 to 20180621
+/*20070724 to 20180704
퀘스트 목ë¡
Quest List
*/
MSG_QUESTWIN = 0x525,
#endif
#if PACKETVER >= 20070807
-/*20070807 to 20180621
+/*20070807 to 20180704
RO SHOP
RO Shop
*/
@@ -7079,21 +7079,21 @@ RO Shop
#if PACKETVER >= 20070821
/*20070821 to 20070904
메모리얼ë˜ì ¼ '%s'ì´ ì˜ˆì•½ë˜ì—ˆìŠµë‹ˆë‹¤.
-20070911 to 20180621
+20070911 to 20180704
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì•Œìˆ˜ì—†ëŠ” ì´ìœ ë¡œ 실패 하였습니다.
Memorial Dungeon, '%s' is booked.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN = 0x527,
/*20070821 to 20070904
메모리얼ë˜ì ¼ '%s' ì˜ˆì•½ì´ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20070911 to 20180621
+20070911 to 20180704
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì˜ˆì•½ì¤‘ë³µìœ¼ë¡œ 실패 하였습니다.
Failed to book Memorial Dungeon, '%s'.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE = 0x528,
/*20070821 to 20070904
메모리얼ë˜ì ¼ '%s' ì´ë¯¸ 예약중입니다.
-20070911 to 20180621
+20070911 to 20180704
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ê¶Œí•œë¬¸ì œë¡œ 실패 하였습니다.
Memorial Dungeon, '%s' is already booked.
*/
@@ -7101,7 +7101,7 @@ Memorial Dungeon, '%s' is already booked.
/*20070821 to 20070904
메모리얼ë˜ì ¼ '%s'ê°€ ìƒì„± ë˜ì—ˆìŠµë‹ˆë‹¤
5ë¶„ë‚´ì— ìž…ìž¥í•˜ì„¸ìš”.
-20070911 to 20180621
+20070911 to 20180704
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì¤‘ë³µìƒì„±ìš”청으로 실패하였습니다.
Memorial Dungeon, '%s' is created.
Please enter in 5 minutes.
@@ -7110,377 +7110,377 @@ Memorial Dungeon, '%s' is created.
/*20070821 to 20070904
메모리얼ë˜ì ¼ '%s' ìƒì„±ì— 실패했습니다.
ë‚˜ì¤‘ì— ë‹¤ì‹œ ì‹œë„하세요.
-20070911 to 20180621
+20070911 to 20180704
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì·¨ì†Œê°€ 실패 하였습니다.
Failed to create Memorial Dungeon, '%s'.
Please try again.
*/
MSG_MDUNGEON_SUBSCRIPTION_CANCEL_FAIL = 0x52b,
-/*20070821 to 20180621
+/*20070821 to 20180704
ìƒëŒ€ë°©ì´ 파티 초대 거부 ìƒíƒœìž…니다.
The character blocked the party invitation.
*/
MSG_JOINMSG_REFUSE = 0x52c,
#endif
#if PACKETVER >= 20070828
-/*20070828 to 20180621
+/*20070828 to 20180704
모든 파티 초대를 거부합니다.
Block all party invitations.
*/
MSG_INVITE_PARTY_REFUSE = 0x52d,
-/*20070828 to 20180621
+/*20070828 to 20180704
모든 파티 초대를 수ë½í•©ë‹ˆë‹¤.
Allow all party invitations.
*/
MSG_INVITE_PARTY_ACCEPT = 0x52e,
#endif
#if PACKETVER >= 20070904
-/*20070904 to 20180621
+/*20070904 to 20180704
착용하시면 ì´ ì•„ì´í…œì€ ì˜êµ¬ ê·€ì†ë©ë‹ˆë‹¤. 착용하시겠습니까?
This item will be permanently bound to this character once it is equipped. Do you really want to equip this item?
*/
MSG_YOURITEM_EQUIP = 0x52f,
-/*20070904 to 20180621
+/*20070904 to 20180704
%s ì•„ì´í…œì´ ê·€ì†ë˜ì—ˆìŠµë‹ˆë‹¤.
%s is now permanently bound to this character.
*/
MSG_YOURITEM_EQUIPED = 0x530,
-/*20070904 to 20180621
+/*20070904 to 20180704
ìºì‹œê°€ 부족합니다. 무료 ìºì‹œ í¬ì¸íŠ¸ë¥¼ 입력해 주시기 ë°”ëžë‹ˆë‹¤.
You do not have enough Kafra Credit Points. Please enter whether you have free credit points.
*/
MSG_BUY_TO_FREE_POINT = 0x531,
-/*20070904 to 20180621
+/*20070904 to 20180704
파티 가입요청
Request to Join Party
*/
MSG_REQ_JOIN_PARTY3 = 0x532,
#endif
#if PACKETVER >= 20070912
-/*20070912 to 20180621
+/*20070912 to 20180704
공성 정보 메시지 표시
Display WOE Info
*/
MSG_VIEW_SIEGE_INFO_MSG = 0x533,
-/*20070912 to 20180621
+/*20070912 to 20180704
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì·¨ì†Œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Memorial Dungeon %s's reservation has been canceled.
*/
MSG_MDUNGEON_SUBSCRIPTION_CANCEL_SUCCESS = 0x534,
-/*20070912 to 20180621
+/*20070912 to 20180704
메모리얼ë˜ì ¼ '%s' ìƒì„±ì— 실패하였습니다. 다시 ì‹œë„ í•˜ì„¸ìš”.
Failed to create Memorial Dungeon %s. Please try again.
*/
MSG_MDUNGEON_CREATE_FAIL = 0x535,
-/*20070912 to 20180621
+/*20070912 to 20180704
ì´ ìž¥ì†Œì—서는 사용할 수 없는 스킬입니다.
This skill cannot be used within this area.
*/
MSG_IMPOSSIBLE_SKILL_AREA = 0x536,
-/*20070912 to 20180621
+/*20070912 to 20180704
ì´ ìž¥ì†Œì—서는 사용할 수 없는 ì•„ì´í…œìž…니다.
This item cannot be used within this area.
*/
MSG_IMPOSSIBLE_USEITEM_AREA = 0x537,
#endif
#if PACKETVER >= 20070918
-/*20070918 to 20180621
+/*20070918 to 20180704
메모리얼 ë˜ì „
Memorial Dungeon
*/
MSG_MEMORIAL_DUN = 0x538,
-/*20070918 to 20180621
+/*20070918 to 20180704
%s 대기중
%s in Standby
*/
MSG_MEMORIAL_DUN_WAITING = 0x539,
-/*20070918 to 20180621
+/*20070918 to 20180704
%s 입장 가능
%s Available
*/
MSG_MEMORIAL_DUN_READY = 0x53a,
/*20070918 to 20071120
%s 내부
-20071127 to 20180621
+20071127 to 20180704
%s 진행중
%s in Progress
*/
MSG_MEMORIAL_DUN_IN = 0x53b,
-/*20070918 to 20180621
+/*20070918 to 20180704
시간 ì•ˆì— ìž…ìž¥í•˜ì§€ ì•Šì•„ 메모리얼 ë˜ì „ì´ ì‚¬ë¼ì¡ŒìŠµë‹ˆë‹¤.
No one entered the Memorial Dungeon within its duration; the dungeon has disappeared.
*/
MSG_MEMORIAL_DUN_OUT1 = 0x53c,
-/*20070918 to 20180621
+/*20070918 to 20180704
ì´ìš©í•˜ì‹œë ¤ë©´ ì´ìš© ì‹ ì²­ì„ ì²˜ìŒë¶€í„° 다시 해주시기 ë°”ëžë‹ˆë‹¤.
Please apply for dungeon entry again to play in this dungeon.
*/
MSG_MEMORIAL_DUN_OUT2 = 0x53d,
-/*20070918 to 20180621
+/*20070918 to 20180704
대기 순위 : ^ff0000%d^000000
Your Standby Priority: ^ff0000%d^000000
*/
MSG_MEMORIAL_DUN_PRIORITY = 0x53e,
-/*20070918 to 20180621
+/*20070918 to 20180704
^ff0000%s^000000 ë‚´ì— ìž…ìž¥í•˜ì§€ ì•Šì„ ê²½ìš° 신청하신 ë˜ì „ì´ ì‚­ì œ ë©ë‹ˆë‹¤.
The requested dungeon will be removed if you do not enter within ^ff0000%s^000000.
*/
MSG_MEMORIAL_DUN_NOTIFY = 0x53f,
-/*20070918 to 20180621
+/*20070918 to 20180704
ë˜ì „ 미션 제한 시간 :
Dungeon Mission Time Limit:
*/
MSG_MEMORIAL_DUN_NOTIFY2 = 0x540,
-/*20070918 to 20180621
+/*20070918 to 20180704
메모리얼 ë˜ì „ ì˜ˆì•½ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon reservation has been canceled.
*/
MSG_MEMORIAL_DUN_CANCEL = 0x541,
-/*20070918 to 20180621
+/*20070918 to 20180704
메모리얼 ë˜ì „ì´ ìœ ì§€ 시간 ì œí•œì— ì˜í•´ 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon duration expired; it has been destroyed.
*/
MSG_MEMORIAL_DUN_LIVE_TIME_OUT = 0x542,
-/*20070918 to 20180621
+/*20070918 to 20180704
메모리얼 ë˜ì „ì´ ìž…ìž¥ 시간 ì œí•œì— ì˜í•´ 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon's entry time limit expired; it has been destroyed.
*/
MSG_MEMORIAL_DUN_ENTER_TIME_OUT = 0x543,
-/*20070918 to 20180621
+/*20070918 to 20180704
메모리얼 ë˜ì „ì´ ì‚­ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon has been removed.
*/
MSG_MEMORIAL_DUN_DESTROY_REQUEST = 0x544,
-/*20070918 to 20180621
+/*20070918 to 20180704
메모리얼 ë˜ì „ì— ì‹œìŠ¤í…œ 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤. ì •ìƒì ì¸ 게임 ì§„í–‰ì„ ìœ„í•´ 재접ì†ì„ 해주십시오.
A system error has occurred in the Memorial Dungeon. Please relog in to the game to continue playing.
*/
MSG_MEMORIAL_DUN_ERROR = 0x545,
-/*20070918 to 20180621
+/*20070918 to 20180704
사용할 수 없는 슬롯입니다.
This slot is not usable.
*/
MSG_FR_INVALID_SLOT = 0x546,
-/*20070918 to 20180621
+/*20070918 to 20180704
Base Levelì´ 15를 넘었습니다.
Your Base Level is over 15.
*/
MSG_FR_BASELVL = 0x547,
-/*20070918 to 20180621
+/*20070918 to 20180704
Job Levelì´ 15를 넘었습니다.
Your Job Level is over 15.
*/
MSG_FR_INVALID_JOBLV = 0x548,
-/*20070918 to 20180621
+/*20070918 to 20180704
해당슬롯 ìºë¦­í„°ì— ì§ì—…êµ°ì˜ ìƒì¸ì´ë¯€ë¡œ ê²Œìž„ì„ í•  수 없습니다.
You cannot play the Merchant class character in this slot.
*/
MSG_FR_JOB = 0x549,
-/*20070918 to 20180621
+/*20070918 to 20180704
추후 사용예정
Not Yet Implemented
*/
MSG_FR_MAP = 0x54a,
-/*20070918 to 20180621
+/*20070918 to 20180704
만들수 있는 케릭터 ìŠ¬ë¡¯ì´ ì•„ë‹™ë‹ˆë‹¤.
You are not eligible to open the Character Slot.
*/
MSG_FR_ERR_MKCHAR_INVALID_SLOT = 0x54b,
-/*20070918 to 20180621
+/*20070918 to 20180704
삭제할 수 없는 케릭터 입니다.
This character cannot be deleted.
*/
MSG_FR_ERR_DELCHAR_INVALID_SLOT = 0x54c,
-/*20070918 to 20180621
+/*20070918 to 20180704
ìƒëŒ€ë°©ì˜ ìž¥ë¹„ì°½ì´ ê³µê°œë˜ì–´ 있지 않습니다.
This character's equipment information is not open to the public.
*/
MSG_OPEN_EQUIPEDITEM_REFUSED = 0x54d,
-/*20070918 to 20180621
+/*20070918 to 20180704
ìž¥ë¹„ì°½ì„ ê³µê°œí•˜ì§€ 않습니다.
Equipment information not open to the public.
*/
MSG_OPEN_EQUIPEDITEM_REFUSE = 0x54e,
-/*20070918 to 20180621
+/*20070918 to 20180704
ìž¥ë¹„ì°½ì„ ê³µê°œí•©ë‹ˆë‹¤.
Equipment information open to the public.
*/
MSG_OPEN_EQUIPEDITEM_ACCEPT = 0x54f,
-/*20070918 to 20180621
+/*20070918 to 20180704
(%s)님 장비창 보기
Check %s's Equipment Info
*/
MSG_REQ_VIEW_OTHERUSER = 0x550,
-/*20070918 to 20180621
+/*20070918 to 20180704
%sì˜ ìž¥ì°©ì•„ì´í…œ
'%s's Equipment
*/
MSG_OTHERUSER_EQUIPED_ITEM = 0x551,
-/*20070918 to 20180621
+/*20070918 to 20180704
장비창 공개
Show Equip
*/
MSG_OPEN_EQUIPED_ITEM = 0x552,
#endif
#if PACKETVER >= 20071002
-/*20071002 to 20180621
+/*20071002 to 20180704
프리미엄 서비스를 ì´ìš©í•´ 주시기 ë°”ëžë‹ˆë‹¤.
This service is only available for premium users.
*/
MSG_NEED_PREMIUM_SERVICE = 0x553,
-/*20071002 to 20180621
+/*20071002 to 20180704
무료 사용ìžëŠ” 최대 50000제니까지 소유할 수 있습니다.
Free Trial users can only hold up to 50,000 zeny.
*/
MSG_FR_INVALID_MONEY = 0x554,
#endif
#if PACKETVER >= 20071009
-/*20071009 to 20180621
+/*20071009 to 20180704
전장채팅 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Battlefield Chat has been activated.
*/
MSG_BATTLECHAT_ON = 0x555,
-/*20071009 to 20180621
+/*20071009 to 20180704
전장채팅 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Battlefield Chat has been deactivated.
*/
MSG_BATTLECHAT_OFF = 0x556,
#endif
#if PACKETVER >= 20071017
-/*20071017 to 20180621
+/*20071017 to 20180704
용병정보 - 몬스터타입
Mercenary Info - Monster Type
*/
MSG_MER_INFO_TYPE_MONSTER = 0x557,
#endif
#if PACKETVER >= 20071106
-/*20071106 to 20180621
+/*20071106 to 20180704
전체 맵 보기
World Map
*/
MSG_RO_MAP = 0x558,
#endif
#if PACKETVER >= 20071127
-/*20071127 to 20180621
+/*20071127 to 20180704
메모리얼ë˜ì ¼ì´ CLOSE ìƒíƒœìž…니다.
The Memorial Dungeon is now closed.
*/
MSG_MEMORIAL_DUN_CLOSE = 0x559,
#endif
#if PACKETVER >= 20071204
-/*20071204 to 20180621
+/*20071204 to 20180704
^ff0000^ff0000ìš©ë³‘ì„ ì‚­ì œí•©ë‹ˆë‹¤.^000000^000000 삭제하실 경우 지금까지 키운 ë‚´ì—­ì´ ëª¨ë‘ ì‚­ì œë©ë‹ˆë‹¤. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
^ff0000Deleting a Mercenary Soldier^000000 will also delete his growth history. Do you really want to proceed with the deletion?
*/
MSG_DELETE_MER = 0x55a,
#endif
#if PACKETVER >= 20071211
-/*20071211 to 20180621
+/*20071211 to 20180704
메모리얼ë˜ì ¼ì´ OPEN ìƒíƒœìž…니다.
The Memorial Dungeon is now open.
*/
MSG_MEMORIAL_DUN_OPEN = 0x55b,
#endif
#if PACKETVER >= 20080108
-/*20080108 to 20180621
+/*20080108 to 20180704
ìœ„ì˜ ê³„ì •ì€ ì•„ì§ í†µì‹  안전 í‚¤ì— ì—°ê²°ë˜ì§€ 않았습니다. 먼저 안전 키를 해제하신 ë’¤ ê²Œìž„ì— ì ‘ì†í•´ 주십시오.
This account has not been confirmed by connecting to the safe communication key. Please connect to the key first, and then log into the game.
*/
MSG_PHONE_BLOCK = 0x55c,
-/*20080108 to 20180621
+/*20080108 to 20180704
í•œ ì•„ì´í”¼ë¡œ ì ‘ì† ê°€ëŠ¥í•œ 유저수를 초과하였습니다.
The number of accounts connected to this IP has exceeded the limit.
*/
MSG_BAN_PC_IP_LIMIT_ACCESS = 0x55d,
#endif
#if PACKETVER >= 20080219
-/*20080219 to 20180621
+/*20080219 to 20180704
새로운 퀘스트를 받았습니다
You have received a new quest.
*/
MSG_QUESTGET = 0x55e,
#endif
#if PACKETVER >= 20080401
-/*20080401 to 20180621
+/*20080401 to 20180704
^777777습ë“ì¡°ê±´ :
^CC3399Requirement:
*/
MSG_FINDTEXT_TO_SKILLDES = 0x55f,
-/*20080401 to 20180621
+/*20080401 to 20180704
스킬 설명 보기
View Skill Info
*/
MSG_VIEW_SKILL_DESCRIPT = 0x560,
#endif
#if PACKETVER >= 20080408
-/*20080408 to 20180621
+/*20080408 to 20180704
ì‚¬ìš©ëœ ìŠ¤í‚¬ í¬ì¸íŠ¸ëŠ” 다시 ë˜ëŒë¦´ 수 없습니다. ì ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Once used, skill points cannot be re-allocated. Would you like to use the skill points?
*/
MSG_APPLY_SKILL_UP = 0x561,
-/*20080408 to 20180621
+/*20080408 to 20180704
노비스·1ì°¨ì§ì—…
1st
*/
MSG_1TABNAME_SKILLWND = 0x562,
-/*20080408 to 20180621
+/*20080408 to 20180704
2차·전승ì§ì—…
2nd
*/
MSG_2TABNAME_SKILLWND = 0x563,
/*20080408 to 20080514
ë¶ˆë²•í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•˜ì˜€ê±°ë‚˜ í˜¹ì€ í•´í‚¹ì„ ì‹œë„í•œ 계정입니다. 블럭시간 : %s
-20080520 to 20180621
+20080520 to 20180704
ë¶ˆë²•í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•˜ì˜€ê±°ë‚˜ í˜¹ì€ í•´í‚¹ì„ ì‹œë„í•œ 계정입니다. 블럭종료시간 : %s
This account has been used for illegal program or hacking program. Block Time: %s
20081210 to 20081218
ë¶ˆë²•í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•˜ì˜€ê±°ë‚˜ í•´í‚¹ì„ ì‹œë„í•œ 계정ì´ê±°ë‚˜ ê·¸ë¼ë¹„í‹° ì´ì „ì„ ì‹ ì²­í•œ 한게임 계정입니다. 블럭종료시간 : %s
*/
MSG_RE17 = 0x564,
-/*20080408 to 20180621
+/*20080408 to 20180704
ë¶ˆë²•í”„ë¡œê·¸ëž¨ì´ ì‹¤í–‰, ë°”ì´ëŸ¬ìŠ¤ ê°ì—¼, ë˜ëŠ” í•´í‚¹íˆ´ì´ ì„¤ì¹˜ë˜ì–´ ìžˆì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤. ì •ìƒ í´ë¼ì´ì–¸íŠ¸ë¥¼ 실행하여 주시기 ë°”ëžë‹ˆë‹¤. 함께 만드는 ë°ì€ ë¼ê·¸ë‚˜ë¡œí¬ê°€ ë  ìˆ˜ 있ë„ë¡ ë…¸ë ¥í•˜ê³  있습니다.
The possibility of exposure to illegal program, PC virus infection or Hacking Tool has been detected. Please execute licensed client. Our team is trying to make a best environment for Ro players.
*/
MSG_RE18 = 0x565,
#endif
#if PACKETVER >= 20080415
-/*20080415 to 20180621
+/*20080415 to 20180704
ë‹¹ì‹ ì€ ì§€ê¸ˆ ê±´ê°•í•œ 게임 시간 ëŒ€ì— ìžˆìŠµë‹ˆë‹¤, ì¦ê±°ìš´ ê²Œìž„ì´ ë˜ì‹œê¸¸ ë°”ëžë‹ˆë‹¤
You are currently playing in the best game environment. Please enjoy the Ragnarok.
*/
MSG_WARNING_MSG3 = 0x566,
/*20080415 to 20100720
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Job경험치가 30분간 1.5ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
-20100727 to 20180621
+20100727 to 20180704
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Job경험치가 30분간 1.25ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Job Exp points from hunting monsters are increased by 50% for 30 minutes.
*/
MSG_PLUSONLYJOBEXP = 0x567,
/*20080415 to 20091110
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 1.25ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
-20091117 to 20180621
+20091117 to 20180704
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 1.2ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Exp points from hunting monsters are increased by 25% for 30 minutes.
*/
MSG_PLUSEXP14532 = 0x568,
-/*20080415 to 20180621
+/*20080415 to 20180704
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 2ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
EXP points from hunting monsters are increased by 100%% for 30 minutes.
*/
MSG_PLUSEXP14533 = 0x569,
-/*20080415 to 20180621
+/*20080415 to 20180704
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 60분간 1.5ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
EXP points from hunting monsters are increased by 50% for 60 minutes.
*/
MSG_PLUSEXP12312 = 0x56a,
#endif
#if PACKETVER >= 20080520
-/*20080520 to 20180621
+/*20080520 to 20180704
ì´ ë§µì—서는 파티를 결성할 수 없습니다.
Unable to organize a party in this map.
*/
MSG_NOPARTY = 0x56b,
-/*20080520 to 20180621
+/*20080520 to 20180704
(%s)ë‹˜ì€ íŒŒí‹°ì— ì°¸ì—¬í•  수 없는 ë§µì— ìžˆìŠµë‹ˆë‹¤.
(%s) are currently in restricted map to join a party.
*/
@@ -7489,228 +7489,228 @@ Unable to organize a party in this map.
#if PACKETVER >= 20080528
/*20080528 to 20080603
간편아ì´í…œìƒµ.
-20080610 to 20180621
+20080610 to 20180704
간편아ì´í…œìƒµ
Simple Item Shop
*/
MSG_SIMPLE_CASH_SHOP = 0x56d,
-/*20080528 to 20180621
+/*20080528 to 20180704
소지 í•œì½”ì¸ : %d 한코ì¸
Han Coin: %d Han Coin
*/
MSG_SIMPLE_POINT_SHOP_NHN = 0x56e,
-/*20080528 to 20180621
+/*20080528 to 20180704
소지 ìºì‹œ : %d ìºì‹œ
RoK Point: %d RoK Point
*/
MSG_SIMPLE_POINT_SHOP = 0x56f,
-/*20080528 to 20180621
+/*20080528 to 20180704
무료 ìºì‹œ : %d ìºì‹œ
Free Cash: %d Cash
*/
MSG_SIMPLE_POINT_SHOP2 = 0x570,
#endif
#if PACKETVER >= 20080715
-/*20080715 to 20180621
+/*20080715 to 20180704
본서버 유저는 í”„ë¦¬ì„œë²„ì— ì ‘ì†í• ìˆ˜ 없습니다.
An user of this server cannot connect to free server
*/
MSG_MAIN_USER_CANONT_LOGIN_FREE_SERVER = 0x571,
-/*20080715 to 20180621
+/*20080715 to 20180704
ìœ íš¨ê¸°ê°„ì´ ì§€ë‚œ 비밀번호 입니다. 다시 로그ì¸í•˜ì—¬ì£¼ì‹­ì‹œì˜¤.
Your password has expired. Please log in again
*/
MSG_INVALID_ONETIMELIMIT = 0x572,
#endif
#if PACKETVER >= 20080903
-/*20080903 to 20180621
+/*20080903 to 20180704
3ì°¨ì§ì—…
3rd
*/
MSG_3TABNAME_SKILLWND = 0x573,
#endif
#if PACKETVER >= 20080917
-/*20080917 to 20180621
+/*20080917 to 20180704
ì´ ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없는 대ìƒìž…니다.
This skill can't be used on that target.
*/
MSG_USESKILL_FAIL_TOTARGET = 0x574,
-/*20080917 to 20180621
+/*20080917 to 20180704
ì•ˆì‹¤ë¼ ì†Œìœ  개수가 초과하여 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use skill because you have exceeded the number Ancilla possession limit
*/
MSG_USESKILL_FAIL_ANCILLA_NUMOVER = 0x575,
-/*20080917 to 20180621
+/*20080917 to 20180704
성수가 필요합니다.
Unable to use the skill to exceed the number of Ancilla.
*/
MSG_USESKILL_FAIL_HOLYWATER = 0x576,
-/*20080917 to 20180621
+/*20080917 to 20180704
안실ë¼ê°€ 필요합니다.
Holy water is required.
*/
MSG_USESKILL_FAIL_ANCILLA = 0x577,
-/*20080917 to 20180621
+/*20080917 to 20180704
ì¼ì •ê±°ë¦¬ ë‚´ì— ì¤‘ë³µë  ìˆ˜ 없습니다.
Ancilla is required.
*/
MSG_USESKILL_FAIL_DUPLICATE_RANGEIN = 0x578,
-/*20080917 to 20180621
+/*20080917 to 20180704
ì´ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ê¸° 위해서는 다른 ìŠ¤í‚¬ì´ í•„ìš”í•©ë‹ˆë‹¤.
Cannot be duplicated within a certain distance.
*/
MSG_USESKILL_FAIL_NEED_OTHER_SKILL = 0x579,
#endif
#if PACKETVER >= 20080924
-/*20080924 to 20180621
+/*20080924 to 20180704
ì´ ë§µì—서는 ì±„íŒ…ì„ í•  수 없습니다.
This skill requires other skills to be used.
*/
MSG_NO_CHATTING = 0x57a,
#endif
#if PACKETVER >= 20081001
-/*20081001 to 20180621
+/*20081001 to 20180704
3ì‹œê°„ì´ ì§€ë‚¬ìŠµë‹ˆë‹¤.
Chat is not allowed in this map
*/
MSG_VET_3HOUR = 0x57b,
-/*20081001 to 20180621
+/*20081001 to 20180704
5ì‹œê°„ì´ ì§€ë‚¬ìŠµë‹ˆë‹¤.
3 hours have passed.
*/
MSG_VET_5HOUR = 0x57c,
#endif
#if PACKETVER >= 20081008
-/*20081008 to 20180621
+/*20081008 to 20180704
게임가드 초기화 ì—러 ë˜ëŠ” êµ¬ë²„ì „ì˜ ê²Œìž„ê°€ë“œ 파ì¼ìž…니다. 게임가드 셋업파ì¼ì„ 다시 설치하고 ê²Œìž„ì„ ì‹¤í–‰í•´ 보시기 ë°”ëžë‹ˆë‹¤.
5 hours have passed.
*/
MSG_NPGAMEMON_ERROR_GAMEGUARD = 0x57d,
-/*20081008 to 20180621
+/*20081008 to 20180704
ini 파ì¼ì´ 없거나 변조ë˜ì—ˆìŠµë‹ˆë‹¤. 게임가드 셋업파ì¼ì„ 설치하면 í•´ê²° í•  수 있습니다.
Game guard initialization error or previous version game guard file is installed. Please re-install the setup file and try again
*/
MSG_NPGMUP_ERROR_PARAM = 0x57e,
-/*20081008 to 20180621
+/*20081008 to 20180704
게임가드와 ì¶©ëŒ í”„ë¡œê·¸ëž¨ì´ ë°œê²¬ë˜ì—ˆìŠµë‹ˆë‹¤.
Either ini file is missing or altered. Install game guard setup file to fix the problem
*/
MSG_NPGG_ERROR_COLLISION = 0x57f,
#endif
#if PACKETVER >= 20081112
-/*20081112 to 20180621
+/*20081112 to 20180704
ìž˜ëª»ëœ í´ë¼ì´ì–¸íŠ¸ìž…니다. ì •ìƒì ì¸ í´ë¼ì´ì–¸íŠ¸ë¥¼ 실행하여 주십시요.
There is a program found that conflicts with game guard
*/
MSG_PROOF_ERROR = 0x580,
#endif
#if PACKETVER >= 20081203
-/*20081203 to 20180621
+/*20081203 to 20180704
ëª¨ë°”ì¼ ì¸ì¦ì„ 받아주시기 ë°”ëžë‹ˆë‹¤.
Incorrect client. Please run a normal client
*/
MSG_MOBILE_LOCKSERVER = 0x581,
#endif
#if PACKETVER >= 20081210
-/*20081210 to 20180621
+/*20081210 to 20180704
ëª¨ë°”ì¼ ì¸ì¦ì— 실패하였습니다.
Thank you to accept mobile authentication.
*/
MSG_FAILED_MOBILE_LOCKSERVER = 0x582,
#endif
#if PACKETVER >= 20081217
-/*20081217 to 20180621
+/*20081217 to 20180704
ì´ìŠ¤í‚¬ì€ 혼ìžì„œ 사용할수 없습니다.
This skill can't be used alone
*/
MSG_USESKILL_FAIL_NEED_HELPER = 0x583,
-/*20081217 to 20180621
+/*20081217 to 20180704
ì´ìŠ¤í‚¬ì€ 특정방향으로만 사용할수 있습니다.
This skill can be used to certain direction only
*/
MSG_USESKILL_FAIL_INVALID_DIR = 0x584,
-/*20081217 to 20180621
+/*20081217 to 20180704
ë”ì´ìƒ 소환할수 없습니다.
Cannot summon spheres anymore.
*/
MSG_USESKILL_FAIL_SUMMON = 0x585,
/*20081217 to 20130710
ì†Œí™˜ëœ êµ¬ì²´ê°€ 존재하지 않습니다.
-20130717 to 20180621
+20130717 to 20180704
ì†Œí™˜ëœ êµ¬ì²´ê°€ 존재하지 않거나 부족합니다.
There is no summoned sphere or you do not have enough sphere.
*/
MSG_USESKILL_FAIL_SUMMON_NONE = 0x586,
-/*20081217 to 20180621
+/*20081217 to 20180704
사용가능한 ëª¨ë°©ìŠ¤í‚¬ì´ ì¡´ìž¬í•˜ì§€ 않습니다.
There is no imitation skills available.
*/
MSG_USESKILL_FAIL_IMITATION_SKILL_NONE = 0x587,
-/*20081217 to 20180621
+/*20081217 to 20180704
ì´ ìŠ¤í‚¬ì€ ì¤‘ë³µí•´ì„œ 사용할수 없습니다.
You can't reuse this skill
*/
MSG_USESKILL_FAIL_DUPLICATE = 0x588,
-/*20081217 to 20180621
+/*20081217 to 20180704
ìŠ¤í‚¬ì„ ì‚¬ìš©í• ìˆ˜ 없는 ìƒíƒœìž…니다.
Skill can't be used in this state
*/
MSG_USESKILL_FAIL_CONDITION = 0x589,
-/*20081217 to 20180621
+/*20081217 to 20180704
ì•„ì´í…œë³„ 최대 ì†Œì§€ëŸ‰ì„ ì´ˆê³¼í•˜ì—¬ 가질 수 없습니다.
You have exceeded the maximum amount of possession of another item.
*/
MSG_PICKUP_MAXCOUNT_LIMIT = 0x58a,
#endif
#if PACKETVER >= 20090204
-/*20090204 to 20180621
+/*20090204 to 20180704
ê´€ë¦¬ìž ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. 프로그램 최초 ì‹¤í–‰ì€ ê´€ë¦¬ìž ê¶Œí•œìœ¼ë¡œ 실행하셔야 합니다.
No administrative privileges. Must first run the program with administrator privileges.
*/
MSG_NPK_ERROR_NOTADMIN = 0x58b,
-/*20090204 to 20180621
+/*20090204 to 20180704
nProtect KeyCrypt ë“œë¼ì´ë²„ ë²„ì „ì´ ë§žì§€ 않습니다. 시스템 재 부팅 í›„ì— ìƒˆë¡œ 실행 시켜 주십시오.
nProtect KeyCrypt not the same. Please restart the program and the computer first.
*/
MSG_NPK_ERROR_DRIVERVERSION = 0x58c,
-/*20090204 to 20180621
+/*20090204 to 20180704
WindowXP 호환성 모드를 사용하고 계십니다. 현재 프로그램ì—ì„œ 호환성 모드를 제거하였습니다. í”„ë¡œê·¸ëž¨ì„ ìƒˆë¡œ 시작해 주십시오.
Currently wearing WindowXP Compatibility Mode. The program now removes Compatibility Mode. Please restart the program.
*/
MSG_NPK_ERROR_VERIFYVERSION = 0x58d,
-/*20090204 to 20180621
+/*20090204 to 20180704
PS/2 키로거가 존재합니다.
PS/2 keyloggers exist.
*/
MSG_DETECT_PS2KEYLOGGER = 0x58e,
-/*20090204 to 20180621
+/*20090204 to 20180704
USB 키보드 ë“œë¼ì´ë²„ 해킹 ì‹œë„ê°€ íƒì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
USB Keylogging attempt was detected.
*/
MSG_DETECT_USBKEYLOGGER = 0x58f,
-/*20090204 to 20180621
+/*20090204 to 20180704
HHD ëª¨ë‹ˆí„°ë§ íˆ´ì´ íƒì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
HHD monitoring tool has been detected.
*/
MSG_DETECT_HHDUSBH = 0x590,
-/*20090204 to 20180621
+/*20090204 to 20180704
페ì¸íŠ¸ë¶“ì´ í•„ìš”í•©ë‹ˆë‹¤.
Paintbrush is required.
*/
MSG_USESKILL_FAIL_PAINTBRUSH = 0x591,
/*20090204 to 20090401
그림물ê°ì´ 필요합니다.
-20090406 to 20180621
+20090406 to 20180704
서페ì´ìŠ¤íŽ˜ì¸íŠ¸ê°€ 필요합니다.
Paint is required.
*/
MSG_USESKILL_FAIL_II_SURFACE_PAINTS = 0x592,
-/*20090204 to 20180621
+/*20090204 to 20180704
지정한 ìœ„ì¹˜ì— ìŠ¤í‚¬ì„ ì‚¬ìš©í• ìˆ˜ 없습니다.
Use the skills that are not at the specified location.
*/
MSG_USESKILL_FAIL_POS = 0x593,
-/*20090204 to 20180621
+/*20090204 to 20180704
ë„ìš°ë¯¸ì˜ SPê°€ 부족합니다.
Not enough SP.
*/
@@ -7719,163 +7719,163 @@ Not enough SP.
#if PACKETVER >= 20090211
/*20090211 to 20090218
ìƒì„± 가능 ìºë¦­í„° 수는 9개입니다!!(ìž„ì‹œ)
-20090225 to 20180621
+20090225 to 20180704
ìºë¦­í„° ì„ íƒì°½ì˜ ìºë¦­í„°ê°€ %d개를 초과하면 ê²Œìž„ì— ì ‘ì†í•  수 없습니다. 불필요한 ìºë¦­í„°ë¥¼ 삭제해주십시오.
Character %d is character selection window cannot connect to the game that exceeds the total. Please remove unwanted characters.
*/
MSG_BAN_OVER_CHARACTER_LIST = 0x595,
#endif
#if PACKETVER >= 20090225
-/*20090225 to 20180621
+/*20090225 to 20180704
목캔디가 필요합니다.
Throat Lozenge is required.
*/
MSG_USESKILL_FAIL_II_NECK_CANDY = 0x596,
-/*20090225 to 20180621
+/*20090225 to 20180704
ì•ˆíƒ€ê¹Œìš´ëˆˆë¬¼ì´ í•„ìš”í•©ë‹ˆë‹¤.
Painful Tears is required.
*/
MSG_USESKILL_FAIL_II_MISERABLE_TEAR = 0x597,
-/*20090225 to 20180621
+/*20090225 to 20180704
목 보호 캔디가 필요합니다.
Throat Lozenge is required.
*/
MSG_USESKILL_FAIL_II_PROTECT_NECK_CANDY = 0x598,
-/*20090225 to 20180621
+/*20090225 to 20180704
ì›¨í° ë¸”ë¡œí‚¹ì˜ ì—°ê³„ë¡œë§Œ 사용가능합니다.
Cooperation is only available with Weapon Blocking.
*/
MSG_USESKILL_FAIL_GC_WEAPONBLOCKING = 0x599,
-/*20090225 to 20180621
+/*20090225 to 20180704
길로틴í¬ë¡œìŠ¤ì˜ ë…ì„ ë°”ë¥¸ 무기가 필요합니다.
Poisoned weapons is required.
*/
MSG_USESKILL_FAIL_GC_POISONINGWEAPON = 0x59a,
#endif
#if PACKETVER >= 20090304
-/*20090304 to 20180621
+/*20090304 to 20180704
마ë„기어 탑승시ì—만 사용가능합니다.
Item can only be used when Mado Gear is mounted.
*/
MSG_USESKILL_FAIL_MADOGEAR = 0x59b,
-/*20090304 to 20180621
+/*20090304 to 20180704
ë°œì¹¸ë¸”ë¦¿ì´ í•„ìš”í•©ë‹ˆë‹¤.
Vulcan Bullet is required.
*/
MSG_USESKILL_FAIL_II_VULCANBULLET = 0x59c,
-/*20090304 to 20180621
+/*20090304 to 20180704
마ë„기어 연료가 필요합니다.
Mado Gear Fuel is required.
*/
MSG_USESKILL_FAIL_II_FUELGAS = 0x59d,
-/*20090304 to 20180621
+/*20090304 to 20180704
액체냉ê°íƒ„ì´ í•„ìš”í•©ë‹ˆë‹¤.
Liquid Cold Bullet is required.
*/
MSG_USESKILL_FAIL_II_COLDSLOWERBULLET = 0x59e,
-/*20090304 to 20180621
+/*20090304 to 20180704
ìºë…¼ë³¼ì„ 장전 하세요.
Please load a Cannon Ball.
*/
MSG_USESKILL_FAIL_CANONBALL = 0x59f,
-/*20090304 to 20180621
+/*20090304 to 20180704
미ë„기어 ê°€ì†ìž¥ì¹˜ë¥¼ 착용하세요.
Please equipped with a Mado Gear Accelerator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_ACCELERATION = 0x5a0,
-/*20090304 to 20180621
+/*20090304 to 20180704
호버ë§ë¶€ìŠ¤í„°ë¥¼ 착용하세요.
Please equipped with a Hovering Booster.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_HOVERING_BOOSTER = 0x5a1,
-/*20090304 to 20180621
+/*20090304 to 20180704
[톡신] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Toxin] Poison effect was applied to the weapon.
*/
MSG_TOXIN = 0x5a2,
-/*20090304 to 20180621
+/*20090304 to 20180704
[패럴ë¼ì´ì¦ˆ] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Paralysis] Poison effect was applied to the weapon.
*/
MSG_PARALYZE = 0x5a3,
-/*20090304 to 20180621
+/*20090304 to 20180704
[베놈블리드] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Fatigue] Poison effect was applied to the weapon.
*/
MSG_VENOMBLEED = 0x5a4,
-/*20090304 to 20180621
+/*20090304 to 20180704
[ë§¤ì§ ë¨¸ì‰¬ë£¸] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Laughing] Poison effect was applied to the weapon.
*/
MSG_MAGICMUSHROOM = 0x5a5,
-/*20090304 to 20180621
+/*20090304 to 20180704
[ë°ìŠ¤ 허트] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Disheart] Poison effect was applied to the weapon.
*/
MSG_DEATHHURT = 0x5a6,
-/*20090304 to 20180621
+/*20090304 to 20180704
[파ì´ë ‰ì‹œì•„] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Pyrexia] Poison effect was applied to the weapon.
*/
MSG_PHYREXIA = 0x5a7,
-/*20090304 to 20180621
+/*20090304 to 20180704
[오블리비언 커즈] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Oblivion] Poison effect was applied to the weapon.
*/
MSG_OBLIANCURSE = 0x5a8,
-/*20090304 to 20180621
+/*20090304 to 20180704
[리치 엔드] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Leech] Poison effect was applied to the weapon.
*/
MSG_RICHEND = 0x5a9,
#endif
#if PACKETVER >= 20090311
-/*20090311 to 20180621
+/*20090311 to 20180704
호버ë§ìƒíƒœì—서만 사용가능합니다.
Can only be used in Hovering state.
*/
MSG_USESKILL_FAIL_MADOGEAR_HOVERING = 0x5aa,
-/*20090311 to 20180621
+/*20090311 to 20180704
ìží­ìž¥ì¹˜ë¥¼ 장착하세요.
Please equip a Self-Destruct Mechanism.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_SELFDESTRUCTION_DEVICE = 0x5ab,
-/*20090311 to 20180621
+/*20090311 to 20180704
ì…°ì´í”„쉬프터를 장착하세요.
Please equip a Shape Shift.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_SHAPESHIFTER = 0x5ac,
-/*20090311 to 20180621
+/*20090311 to 20180704
길로틴ë…ì´ í•„ìš”í•©ë‹ˆë‹¤.
Guillotine Cross Poison is required.
*/
MSG_USESKILL_FAIL_GUILLONTINE_POISON = 0x5ad,
-/*20090311 to 20180621
+/*20090311 to 20180704
냉ê°ìž¥ì¹˜ë¥¼ 장착하세요.
Please equipped with a Cooling System.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_COOLING_DEVICE = 0x5ae,
-/*20090311 to 20180621
+/*20090311 to 20180704
ìžê¸°ìž¥í•„ë“œìƒì„±ê¸°ë¥¼ 착용하세요.
Please equipped with a Magnetic Field Generator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_MAGNETICFIELD_GENERATOR = 0x5af,
-/*20090311 to 20180621
+/*20090311 to 20180704
베리어ìƒì„±ê¸°ë¥¼ 착용하세요.
Please equipped with a Barrier Generator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_BARRIER_GENERATOR = 0x5b0,
-/*20090311 to 20180621
+/*20090311 to 20180704
광학미채발ìƒê¸°ë¥¼ 착용하세요.
Please equipped with a Optical Camouflage Generator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_OPTICALCAMOUFLAGE_GENERATOR = 0x5b1,
-/*20090311 to 20180621
+/*20090311 to 20180704
리페어키트를 착용하세요.
Please equipped with a Repair Kit.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_REPAIRKIT = 0x5b2,
-/*20090311 to 20180621
+/*20090311 to 20180704
몽키 스패너가 필요합니다.
Monkey Wrench is required.
*/
@@ -7884,408 +7884,408 @@ Monkey Wrench is required.
#if PACKETVER >= 20090312
/*20090312 to 20090312
'%s' 시전 시간까지 약 %d 분 남았습니다.
-20090318 to 20180621
+20090318 to 20180704
[%s] ìŠ¤í‚¬ì„ ì‹œì „ í•  수 없습니다.
[%s] Cannot use the skills due to cooldown delay.
*/
MSG_SKILLINTERVAL2 = 0x5b4,
#endif
#if PACKETVER >= 20090318
-/*20090318 to 20180621
+/*20090318 to 20180704
%d레벨 ì´ìƒì€ 삭제가 불가능합니다.
Deletion is impossible for over level %d
*/
MSG_LEMIT_DELETE_LEVEL = 0x5b5,
/*20090318 to 20110614
마ë„기어 탑승시ì—는 사용할수 없습니다.
-20110620 to 20180621
+20110620 to 20180704
마ë„기어 탑승시ì—는 사용 í•  수 없습니다.
Can't be used while on Magic Gear.
*/
MSG_USESKILL_FAIL_MADOGEAR_RIDE = 0x5b6,
#endif
#if PACKETVER >= 20090325
-/*20090325 to 20180621
+/*20090325 to 20180704
드래곤 내리기
Dismount Dragon
*/
MSG_DRAGONOFF = 0x5b7,
-/*20090325 to 20180621
+/*20090325 to 20180704
마ë„기어 내리기
Dismount Magic Gear
*/
MSG_MADOOFF = 0x5b8,
#endif
#if PACKETVER >= 20090401
-/*20090401 to 20180621
+/*20090401 to 20180704
소비
I
*/
MSG_STORE_TABNAME_0 = 0x5b9,
-/*20090401 to 20180621
+/*20090401 to 20180704
ìºì‰¬
Cash
*/
MSG_STORE_TABNAME_1 = 0x5ba,
-/*20090401 to 20180621
+/*20090401 to 20180704
방어구
Armors
*/
MSG_STORE_TABNAME_2 = 0x5bb,
-/*20090401 to 20180621
+/*20090401 to 20180704
무기
Weapons
*/
MSG_STORE_TABNAME_3 = 0x5bc,
-/*20090401 to 20180621
+/*20090401 to 20180704
투사체
Ammo
*/
MSG_STORE_TABNAME_4 = 0x5bd,
-/*20090401 to 20180621
+/*20090401 to 20180704
카드
Card
*/
MSG_STORE_TABNAME_5 = 0x5be,
-/*20090401 to 20180621
+/*20090401 to 20180704
기타
Other
*/
MSG_STORE_TABNAME_6 = 0x5bf,
-/*20090401 to 20180621
+/*20090401 to 20180704
í´ë¼ì´ì–¸íŠ¸ ì‘ë‹µì‹œê°„ì´ ì´ˆê³¼ë˜ì–´ ì—°ê²°ì´ ëŠì–´ì§‘니다.
Client response time has passed so connection is terminated
*/
MSG_ERROR_HS_TIMEOUT = 0x5c0,
-/*20090401 to 20180621
+/*20090401 to 20180704
핵쉴드 파ì¼ì˜ ë²„ì „ì´ ë§žì§€ 않습니다. í´ë¼ì´ì–¸íŠ¸ë¥¼ 재설치 해주십시오.
Incorrect version of hack shield file. Please reinstall the client
*/
MSG_ERROR_DIFF_CLIENT = 0x5c1,
#endif
#if PACKETVER >= 20090406
-/*20090406 to 20180621
+/*20090406 to 20180704
마법서가 필요합니다.
[Magic Book] is required.
*/
MSG_USESKILL_FAIL_SPELLBOOK = 0x5c2,
-/*20090406 to 20180621
+/*20090406 to 20180704
마법서가 너무 어려워서 졸ìŒì´ 몰려온다.
Feel sleepy since Magic Book is too difficult to understand.
*/
MSG_USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP = 0x5c3,
-/*20090406 to 20180621
+/*20090406 to 20180704
ë³´ì¡´í¬ì¸íŠ¸ê°€ 부족합니다.
Not enough saved point.
*/
MSG_USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT = 0x5c4,
-/*20090406 to 20180621
+/*20090406 to 20180704
ë”ì´ìƒ 마법서를 ì½ì„수 없습니다.
Can't read a Magic Book anymore.
*/
MSG_USESKILL_FAIL_SPELLBOOK_READING = 0x5c5,
-/*20090406 to 20180621
+/*20090406 to 20180704
페ì´ìŠ¤íŽ˜ì¸íŠ¸ê°€ 필요합니다.
Face Paint is required.
*/
MSG_USESKILL_FAIL_II_FACE_PAINTS = 0x5c6,
-/*20090406 to 20180621
+/*20090406 to 20180704
ë¶„ìž¥ìš©ë¶“ì´ í•„ìš”í•©ë‹ˆë‹¤.
Brush is required.
*/
MSG_USESKILL_FAIL_II_MAKEUP_BRUSH = 0x5c7,
#endif
#if PACKETVER >= 20090408
-/*20090408 to 20180621
+/*20090408 to 20180704
대기 ì‹œê°„ì´ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤. 다시 ë¡œê·¸ì¸ í•´ì£¼ì‹­ì‹œì˜¤.
Waiting time has passed. Please log in again
*/
MSG_MOBILE_TIMEOVER = 0x5c8,
-/*20090408 to 20180621
+/*20090408 to 20180704
위험! ì´ë¯¸ ë™ì¼í•œ ê³„ì •ì´ ë¡œê·¸ì¸ ì¤‘ì— ìžˆìŠµë‹ˆë‹¤. ìž ì‹œ ëª¨ë°”ì¼ ì¸ì¦ ì§„í–‰ì„ ë©ˆì¶”ì‹œê³  ë¹„ë²ˆì„ ìˆ˜ì •í•œ ë’¤ 재 ë¡œê·¸ì¸ í•´ì£¼ì‹­ì‹œì˜¤.
Watch out! Same account is already logged in. Stop mobile verification and log in again after changing your password
*/
MSG_MOBILE_ANOTHER_LOGIN = 0x5c9,
-/*20090408 to 20180621
+/*20090408 to 20180704
위험! 현재 ë™ì¼í•œ ê³„ì •ì´ ëª¨ë°”ì¼ ì¸ì¦ 대기 ì¤‘ì— ìžˆìŠµë‹ˆë‹¤. ìž ì‹œ ëª¨ë°”ì¼ ì¸ì¦ ì§„í–‰ì„ ë©ˆì¶”ì‹œê³  ë¹„ë²ˆì„ ìˆ˜ì •í•œ ë’¤ 재 ë¡œê·¸ì¸ í•´ì£¼ì‹­ì‹œì˜¤.
Watch out! Same account is waiting for mobile verification. Stop mobile verification and log in again after changing your password
*/
MSG_MOBILE_WAITING_STATE = 0x5ca,
#endif
#if PACKETVER >= 20090506
-/*20090506 to 20180621
+/*20090506 to 20180704
게임 옵션창
Game setting window
*/
MSG_ESC_OPTIONWND = 0x5cb,
-/*20090506 to 20180621
+/*20090506 to 20180704
그래픽 설정
Graphics Settings
*/
MSG_GRAPHIC_OPTIONWND = 0x5cc,
-/*20090506 to 20180621
+/*20090506 to 20180704
사운드 설정
Sound Settings
*/
MSG_SOUND_OPTIONWND = 0x5cd,
#endif
#if PACKETVER >= 20090514
-/*20090514 to 20180621
+/*20090514 to 20180704
변경 할 단축키를 누르거나, 'ESC'키를 눌러 삭제 해 주세요.
Press a key to assign. Pressing 'ESC' will remove the assigned key.
*/
MSG_HOTKEYWND_NOTICE1 = 0x5ce,
-/*20090514 to 20180621
+/*20090514 to 20180704
ë‹¨ì¼ í‚¤ë¡œ 지정 í•  수 없는 키입니다.
Unable to specify a single key.
*/
MSG_HOTKEYWND_NOTICE2 = 0x5cf,
-/*20090514 to 20180621
+/*20090514 to 20180704
지정 할 수 없는 키입니다.
Unable to specify the key assigned.
*/
MSG_HOTKEYWND_NOTICE3 = 0x5d0,
-/*20090514 to 20180621
+/*20090514 to 20180704
'%s'ì— ì‚¬ìš©ëœ ë‹¨ì¶•í‚¤ì™€ 중복ë©ë‹ˆë‹¤. 바꾸시겠습니까?
Duplicated with ['%s']. Do you still want to change?
*/
MSG_HOTKEYWND_NOTICE4 = 0x5d1,
-/*20090514 to 20180621
+/*20090514 to 20180704
ì €ìž¥ëœ ë‹¨ì¶•í‚¤ ì¡°í•©ì´ ì´ˆê¸°í™” ë©ë‹ˆë‹¤. 초기화 하시겠습니까?
Initialization is stored in the shortcut key settings. Do you want to initialized?
*/
MSG_HOTKEYWND_NOTICE5 = 0x5d2,
-/*20090514 to 20180621
+/*20090514 to 20180704
스킬바
Skill Bar
*/
MSG_HOTKEYWND_TAB1 = 0x5d3,
-/*20090514 to 20180621
+/*20090514 to 20180704
ì¸í„°íŽ˜ì´ìŠ¤
Interface
*/
MSG_HOTKEYWND_TAB2 = 0x5d4,
-/*20090514 to 20180621
+/*20090514 to 20180704
ì´ëª¨ì…˜
Macros
*/
MSG_HOTKEYWND_TAB3 = 0x5d5,
-/*20090514 to 20180621
+/*20090514 to 20180704
단축키 설정 창
Shortcut Settings
*/
MSG_HOTKEYWND_TITLE = 0x5d6,
#endif
#if PACKETVER >= 20090520
-/*20090520 to 20180621
+/*20090520 to 20180704
ë°°ê²½ìŒ
BGM
*/
MSG_BGM = 0x5d7,
-/*20090520 to 20180621
+/*20090520 to 20180704
효과ìŒ
Effect
*/
MSG_SOUND = 0x5d8,
-/*20090520 to 20180621
+/*20090520 to 20180704
스킨
Skin
*/
MSG_SKIN = 0x5d9,
-/*20090520 to 20180621
+/*20090520 to 20180704
채팅방 입장ìŒë§Œ 소리남 On
Chat room entrance sound on
*/
MSG_TINGONLY_ON = 0x5da,
-/*20090520 to 20180621
+/*20090520 to 20180704
채팅방 입장ìŒë§Œ 소리남 Off
Chat room entrance sound off
*/
MSG_TINGONLY_OFF = 0x5db,
-/*20090520 to 20180621
+/*20090520 to 20180704
/tingonly : 채팅방 입장ìŒë§Œ 들ì„수있게ë©ë‹ˆë‹¤
/tingonly: you can hear only sound like a chat room entry.
*/
MSG_EXPLAIN_TINGONLY = 0x5dc,
-/*20090520 to 20180621
+/*20090520 to 20180704
/주먹
/rock
*/
MSG_EMOTION_ROCK = 0x5dd,
-/*20090520 to 20180621
+/*20090520 to 20180704
/가위
/scissors
*/
MSG_EMOTION_SCISSOR = 0x5de,
-/*20090520 to 20180621
+/*20090520 to 20180704
/ë³´
/paper
*/
MSG_EMOTION_WRAP = 0x5df,
-/*20090520 to 20180621
+/*20090520 to 20180704
/러브
/love
*/
MSG_EMOTION_LUV = 0x5e0,
-/*20090520 to 20180621
+/*20090520 to 20180704
/mobile
*/
MSG_EMOTION_MOBILE = 0x5e1,
-/*20090520 to 20180621
+/*20090520 to 20180704
/mail
*/
MSG_EMOTION_MAIL = 0x5e2,
-/*20090520 to 20180621
+/*20090520 to 20180704
/antenna0
*/
MSG_EMOTION_ANTENNA0 = 0x5e3,
-/*20090520 to 20180621
+/*20090520 to 20180704
/antenna1
*/
MSG_EMOTION_ANTENNA1 = 0x5e4,
-/*20090520 to 20180621
+/*20090520 to 20180704
/antenna2
*/
MSG_EMOTION_ANTENNA2 = 0x5e5,
-/*20090520 to 20180621
+/*20090520 to 20180704
/antenna3
*/
MSG_EMOTION_ANTENNA3 = 0x5e6,
-/*20090520 to 20180621
+/*20090520 to 20180704
/hum
*/
MSG_EMOTION_HUM2 = 0x5e7,
-/*20090520 to 20180621
+/*20090520 to 20180704
/abs
*/
MSG_EMOTION_ABS = 0x5e8,
-/*20090520 to 20180621
+/*20090520 to 20180704
/oops
*/
MSG_EMOTION_OOPS = 0x5e9,
-/*20090520 to 20180621
+/*20090520 to 20180704
/spit
*/
MSG_EMOTION_SPIT = 0x5ea,
-/*20090520 to 20180621
+/*20090520 to 20180704
/ene
*/
MSG_EMOTION_ENE = 0x5eb,
-/*20090520 to 20180621
+/*20090520 to 20180704
/panic
*/
MSG_EMOTION_PANIC = 0x5ec,
-/*20090520 to 20180621
+/*20090520 to 20180704
/whisp
*/
MSG_EMOTION_WHISP = 0x5ed,
#endif
#if PACKETVER >= 20090527
-/*20090527 to 20180621
+/*20090527 to 20180704
지정안함
Not Assigned
*/
MSG_HOTKEY_NOTHING = 0x5ee,
#endif
#if PACKETVER >= 20090603
-/*20090603 to 20180621
+/*20090603 to 20180704
카트장착시ì—만 사용가능합니다.
Only available when cart is mounted.
*/
MSG_USESKILL_FAIL_CART = 0x5ef,
-/*20090603 to 20180621
+/*20090603 to 20180704
[가시나무 씨앗]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Thorny Seed] is required.
*/
MSG_USESKILL_FAIL_II_THORNS_SEED = 0x5f0,
-/*20090603 to 20180621
+/*20090603 to 20180704
[í¡í˜ˆ ì‹ë¬¼ 씨앗]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Bloodsucker Seed] is required.
*/
MSG_USESKILL_FAIL_II_BLOOD_SUCKER_SEED = 0x5f1,
-/*20090603 to 20180621
+/*20090603 to 20180704
ë”ì´ìƒ 시전할수 없습니다.
Cannot be used anymore.
*/
MSG_USESKILL_FAIL_NO_MORE_SPELL = 0x5f2,
-/*20090603 to 20180621
+/*20090603 to 20180704
[í­íƒ„버섯í¬ìž]ê°€ 필요합니다.
[Bomb Mushroom Spore] is required.
*/
MSG_USESKILL_FAIL_II_BOMB_MUSHROOM_SPORE = 0x5f3,
-/*20090603 to 20180621
+/*20090603 to 20180704
[화염병]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Fire Bottle] is required.
*/
MSG_USESKILL_FAIL_II_GASOLINE_BOOMB = 0x5f4,
-/*20090603 to 20180621
+/*20090603 to 20180704
[기름병]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Oil Bottle] is required.
*/
MSG_USESKILL_FAIL_II_OIL_BOTTLE = 0x5f5,
-/*20090603 to 20180621
+/*20090603 to 20180704
[í­ë°œê°€ë£¨]ê°€ 필요합니다.
[Explosive Powder] is required.
*/
MSG_USESKILL_FAIL_II_EXPLOSION_POWDER = 0x5f6,
-/*20090603 to 20180621
+/*20090603 to 20180704
[연막가루]가 필요합니다.
[Smokescreen Powder] is required.
*/
MSG_USESKILL_FAIL_II_SMOKE_POWDER = 0x5f7,
-/*20090603 to 20180621
+/*20090603 to 20180704
[최루가스]가 필요합니다.
[Tear Gas] is required.
*/
MSG_USESKILL_FAIL_II_TEAR_GAS = 0x5f8,
-/*20090603 to 20180621
+/*20090603 to 20180704
[염산병]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Acid Bottle] is required.
*/
MSG_USESKILL_FAIL_II_HYDROCHLORIC_ACID_BOTTLE = 0x5f9,
-/*20090603 to 20180621
+/*20090603 to 20180704
[ì‹ì¸ì‹ë¬¼ë³‘]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Bottom Man-Eating Plant] is required.
*/
MSG_USESKILL_FAIL_II_HELLS_PLANT_BOTTLE = 0x5fa,
-/*20090603 to 20180621
+/*20090603 to 20180704
[만드ë¼ê³ ë¼ì˜ 화분]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Pot of Mandragora] is required.
*/
MSG_USESKILL_FAIL_II_MANDRAGORA_FLOWERPOT = 0x5fb,
-/*20090603 to 20180621
+/*20090603 to 20180704
파티장 위임
Party delegation
*/
MSG_YIELD_PARTYMASTER = 0x5fc,
-/*20090603 to 20180621
+/*20090603 to 20180704
ì •ë§ íŒŒí‹°ìž¥ì„ ìœ„ìž„í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you want to delegate the real party?
*/
MSG_DO_YOU_REALLY_WANT_YIELD_PARTYMASTER = 0x5fd,
-/*20090603 to 20180621
+/*20090603 to 20180704
íŒŒí‹°ìž¥ì„ ìœ„ìž„ í•  수 없습니다.
Party cannot be delegated.
*/
MSG_CANNOT_YIELD_PARTYMASTER = 0x5fe,
-/*20090603 to 20180621
+/*20090603 to 20180704
변경불가
Immutable
*/
MSG_FAILED_CHANGE = 0x5ff,
#endif
#if PACKETVER >= 20090610
-/*20090610 to 20180621
+/*20090610 to 20180704
[%s]가 %d개 필요합니다.
[%s] required '%d' amount.
*/
MSG_USESKILL_FAIL_NEED_ITEM = 0x600,
-/*20090610 to 20180621
+/*20090610 to 20180704
제련 수치가 하향 ì¡°ì • ë˜ì—ˆìŠµë‹ˆë‹¤.
Is now refining the value lowered.
*/
MSG_ITEM_REFINING_DOWNGRADE = 0x601,
-/*20090610 to 20180621
+/*20090610 to 20180704
[%s]를 장비하고 있어야 사용할 수 있습니다
Need to put on [%s] in order to use.
*/
@@ -8294,14 +8294,14 @@ Need to put on [%s] in order to use.
#if PACKETVER >= 20090617
/*20090617 to 20090922
전장 리스트
-20090929 to 20180621
+20090929 to 20180704
전장 입장 설정
Battle field entrance setting
*/
MSG_BATTLEFIELD_LIST = 0x603,
/*20090617 to 20090929
전장 - [%s] 신청 하시겠습니까?
-20091006 to 20180621
+20091006 to 20180704
% 전장으로 ì´ë™ í•  수 없는 ìƒíƒœê°€ ë˜ì–´ 전장 ì‹ ì²­ì´ ì·¨ì†Œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Battlefield - [%s] you sign up?
*/
@@ -8312,7 +8312,7 @@ Battlefield - [%s] you sign up?
입장 ì‹ ì²­ì´ ì™„ë£Œë˜ì—ˆìŠµë‹ˆë‹¤.
20091006 to 20100928
-20101005 to 20180621
+20101005 to 20180704
Current admission application state.
*/
@@ -8323,7 +8323,7 @@ Current admission application state.
전장 - [%s] ì— ìž…ìž¥ í•  수 없는 ìƒíƒœì´ë¯€ë¡œ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
20090722 to 20090929
ì— ìž…ìž¥ í•  수 없는 ìƒíƒœì´ë¯€ë¡œ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20091006 to 20180621
+20091006 to 20180704
% 전장 ìž…ìž¥ì´ ë³´ë¥˜ ë˜ì—ˆìŠµë‹ˆë‹¤. 다른 플레ì´ì–´ë¥¼ 기다립니다.
It was unregistered and not be able to enter the state.
*/
@@ -8332,7 +8332,7 @@ It was unregistered and not be able to enter the state.
현재 입장 ì‹ ì²­ ìƒíƒœìž…니다.
20091006 to 20100928
-20101005 to 20180621
+20101005 to 20180704
Current admission application state.
*/
@@ -8341,7 +8341,7 @@ Current admission application state.
입장 ì‹ ì²­ì„ ì·¨ì†Œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?
20091006 to 20100616
%s 전장 ì‹ ì²­ì„ ì •ë§ë¡œ 취소하시겠습니까?
-20100622 to 20180621
+20100622 to 20180704
í™•ì¸ ë‹¨ì¶”ë¥¼ 누르면 전장 ì‹ ì²­ì´ ì·¨ì†Œë©ë‹ˆë‹¤. 아래 단추를 í´ë¦­í•´ 주세요.
Do you want to cancel the admission application?
*/
@@ -8350,109 +8350,109 @@ Do you want to cancel the admission application?
전장 - [%s] 입장 ì‹ ì²­ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
20090722 to 20090929
입장 ì‹ ì²­ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
-20091006 to 20180621
+20091006 to 20180704
%s 전장 입장 ì‹ ì²­ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
Admission request has been cancelled.
*/
MSG_CANCEL_JOINTO_BATTLEFIELD = 0x609,
/*20090617 to 20090929
곧 전장으로 ì´ë™ 합니다.
-20091006 to 20180621
+20091006 to 20180704
잠시후 %s 전장으로 ì´ë™ 합니다. 공간 ì´ë™ì„ 위한 안정ì ì¸ ìƒíƒœë¥¼ 확보해 주시길 ë°”ëžë‹ˆë‹¤. (거래 ë° ê³µê°„ ì´ë™ 기능 ì¼ì‹œ 중지ë¨)
Go to the battlefield quickly.
*/
MSG_MOVETO_BATTLEFIELD = 0x60a,
/*20090617 to 20091028
전장 - [%s]
-20091103 to 20180621
+20091103 to 20180704
전장 명칭
Battlefield - [%s]
*/
MSG_BATTLEFIELD_NAME = 0x60b,
#endif
#if PACKETVER >= 20090624
-/*20090624 to 20180621
+/*20090624 to 20180704
ì •ë§ ì´ë™ 하시겠습니까?
Do you really want to go back to your savepoint?
*/
MSG_MOVETO_SAVEPOINT = 0x60c,
-/*20090624 to 20180621
+/*20090624 to 20180704
íŒŒí‹°ì› ì°¾ê¸° 메세지
Search Message for Party Members
*/
MSG_VIEW_SEEK_PARTY = 0x60d,
-/*20090624 to 20180621
+/*20090624 to 20180704
íŒŒí‹°ì› ì°¾ê¸° 메세지 ì˜µì…˜ì´ êº¼ì ¸ìžˆìŠµë‹ˆë‹¤.
Message option is off the search party members.
*/
MSG_UNVIEW_SEEK_PARTY = 0x60e,
-/*20090624 to 20180621
+/*20090624 to 20180704
10초간 파티 ì§€ì› ë”œë ˆì´ê°€ 걸려있습니다.
10 seconds delay of party support is in effect
*/
MSG_SEEK_PARTY_DEALY = 0x60f,
#endif
#if PACKETVER >= 20090701
-/*20090701 to 20180621
+/*20090701 to 20180704
íŒŒí‹°ìž¥ì€ '%s' 님 입니다.
Party leader is '%s'.
*/
MSG_NOTIFY_PARTY_ROLE_MASTER = 0x610,
/*20090701 to 20090715
전장 - [%s] : 시스템 오류로 입장 할 수 없습니다.
-20090722 to 20180621
+20090722 to 20180704
시스템 오류로 입장 할 수 없습니다.
Unable to enter due to system error.
*/
MSG_ERROR_SYSTEM_ERROR_BATTLEFIELD = 0x611,
/*20090701 to 20090715
전장 - [%s] : 대기 ì¸ì› 수 초과로 입장 í•  수 없습니다.
-20090722 to 20180621
+20090722 to 20180704
대기 ì¸ì› 수 초과로 입장 í•  수 없습니다.
Cannot wait to enter the number of excess.
*/
MSG_ERROR_FULL_ESROOM_BATTLEFIELD = 0x612,
/*20090701 to 20090715
전장 - [%s] : ì´ë¯¸ ì‹ ì²­ ë˜ì—ˆìŠµë‹ˆë‹¤.
-20090722 to 20180621
+20090722 to 20180704
ì´ë¯¸ ì‹ ì²­ ë˜ì—ˆìŠµë‹ˆë‹¤.
Has already been applied.
*/
MSG_ERROR_DOUBLE_OFFER_BATTLEFIELD = 0x613,
/*20090701 to 20090715
전장 - [%s] : 대기 ì‹œê°„ì´ ì´ˆê³¼ë˜ì–´ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20090722 to 20180621
+20090722 to 20180704
대기 ì‹œê°„ì´ ì´ˆê³¼ë˜ì–´ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
Registration has been cancelled because of the excessive waiting time.
*/
MSG_ERROR_WAIT_TIMEOUT_BATTLEFIELD = 0x614,
/*20090701 to 20090715
전장 - [%s] : 입장 ì¡°ê±´ì´ ë§žì§€ ì•Šì•„, 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20090722 to 20180621
+20090722 to 20180704
입장 ì¡°ê±´ì´ ë§žì§€ ì•Šì•„, 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
Unregistered because admission requirements are not matching.
*/
MSG_ERROR_BATTLEFILD_ENTER_BATTLEFIELD = 0x615,
/*20090701 to 20090715
전장 - [%s] : 오류가 ë°œìƒí•˜ì—¬ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20090722 to 20180621
+20090722 to 20180704
오류가 ë°œìƒí•˜ì—¬ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
Was unregistered and error.
*/
MSG_ERROR_DROP_ENTRANCESTATION_BATTLEFIELD = 0x616,
#endif
#if PACKETVER >= 20090708
-/*20090708 to 20180621
+/*20090708 to 20180704
[%s]ì˜ ì—°ê³„ 스킬입니다.
The skill need [%s].
*/
MSG_USESKILL_FAIL_COMBOSKILL = 0x617,
-/*20090708 to 20180621
+/*20090708 to 20180704
특정스킬 ì˜ ì—°ê³„ 스킬입니다.
The skill need a particular skill.
*/
MSG_USESKILL_FAIL_COMBOSKILL2 = 0x618,
-/*20090708 to 20180621
+/*20090708 to 20180704
기구체 %d 개가 필요합니다
Requires %d mind bullets
*/
@@ -8460,98 +8460,98 @@ Requires %d mind bullets
/*20090708 to 20090708
기구체 %d 개가 필요합니다
Requires %d mind bullets
-20090715 to 20180621
+20090715 to 20180704
기구체가 필요합니다
Mind Bullet is required.
*/
MSG_USESKILL_FAIL_SPIRITS2 = 0x61a,
#endif
#if PACKETVER >= 20090729
-/*20090729 to 20180621
+/*20090729 to 20180704
최대 소지량 보다 ë§Žì€ ë£¬ìŠ¤í†¤ì„ ì œìž‘í•  수 없습니다.
Cannot create rune stone more than the maximum amount.
*/
MSG_RUNESTONE_MAKEERROR_OVERCOUNT = 0x61b,
-/*20090729 to 20180621
+/*20090729 to 20180704
전장 리스트를 ë°›ì„ ìˆ˜ 없는 ìƒíƒœìž…니다. í™•ì¸ í›„ 다시 ì‹œë„ í•´ 주세요.
Not able to receive battle field list. Please check and try again
*/
MSG_ERROR_LIST_OPEN_BATTLEFIELD = 0x61c,
-/*20090729 to 20180621
+/*20090729 to 20180704
ë ˆë²¨ì´ ë¶€ì¡±í•˜ì—¬ 입장 í•  수 없습니다.
Level is not high enough to enter
*/
MSG_ERROR_LEVEL_LIMIT_BATTLEFIELD = 0x61d,
#endif
#if PACKETVER >= 20090805
-/*20090805 to 20180621
+/*20090805 to 20180704
1ì°¨ ì§ì—… 스킬 %d개를 ë” ì˜¬ë ¤ 주십시오.
You must consume all '%d' points in your 1st Tab.
*/
MSG_UPGRADESKILLERROR_MORE_FIRSTJOBSKILL = 0x61e,
#endif
#if PACKETVER >= 20091013
-/*20091013 to 20180621
+/*20091013 to 20180704
1ì°¨ í˜¹ì€ 2ì°¨ ì§ì—… 스킬 %d개를 ë” ì˜¬ë ¤ 주십시오.
You must consume all '%d' remaining points in your 2nd Tab. 1st Tab is already done.
*/
MSG_UPGRADESKILLERROR_MORE_SECONDJOBSKILL = 0x61f,
-/*20091013 to 20180621
+/*20091013 to 20180704
변환 가능한 ì•„ì´í…œ
Items available for conversion
*/
MSG_ITEMSYOUCANCHANGE = 0x620,
-/*20091013 to 20180621
+/*20091013 to 20180704
변환할 ì•„ì´í…œ
Insert items to convert
*/
MSG_ITEMS_FOR_CHANGE = 0x621,
-/*20091013 to 20180621
+/*20091013 to 20180704
ë³€í™˜ì´ ë¶ˆê°€ëŠ¥í•œ ì¡°í•© 입니다.
Inconvertible combination
*/
MSG_SKILL_RECIPE_NOTEXIST = 0x622,
-/*20091013 to 20180621
+/*20091013 to 20180704
ì¸ë²¤í† ë¦¬ì˜ 무게가 너무 무ê²ìŠµë‹ˆë‹¤.
Inventory weight is too much
*/
MSG_SKILL_INVENTORY_WEIGHT_OVER = 0x623,
-/*20091013 to 20180621
+/*20091013 to 20180704
ì¸ë²¤í† ë¦¬ë¥¼ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
Please secure some room in the inventory
*/
MSG_SKILL_INVENTORY_KINDCNT_OVER = 0x624,
-/*20091013 to 20180621
+/*20091013 to 20180704
재료가 존재하지 않습니다.
Material doesn't exist
*/
MSG_SKILL_MATERIAL_FAIL = 0x625,
-/*20091013 to 20180621
+/*20091013 to 20180704
성공하였습니다.
Successful.
*/
MSG_SKILL_SUCCESS = 0x626,
-/*20091013 to 20180621
+/*20091013 to 20180704
실패 하였습니다.
Failed.
*/
MSG_SKILL_FAIL = 0x627,
-/*20091013 to 20180621
+/*20091013 to 20180704
실패하여 모든 재료가 사ë¼ì¡ŒìŠµë‹ˆë‹¤.
all materials are gone due to failure
*/
MSG_SKILL_FAIL_MATERIAL_DESTROY = 0x628,
-/*20091013 to 20180621
+/*20091013 to 20180704
지정하신 탭 ì´ë¦„ì´ ë„ˆë¬´ 길어 변경 í•  수 없습니다.
unable to change the name of the specified tab, because it's too long.
*/
MSG_FAILED_CHANGE_TABNAME = 0x629,
-/*20091013 to 20180621
+/*20091013 to 20180704
ë” ì´ìƒ 추가 í•  수 없습니다.
Cannot add more.
*/
MSG_FAILED_ADD_TAB = 0x62a,
-/*20091013 to 20180621
+/*20091013 to 20180704
ì¸ì¦ì— 실패 했습니다.
Authentication failed.
*/
@@ -8560,472 +8560,472 @@ Authentication failed.
ë´‡ ì²´í¬
20101019 to 20101019
ìžë™ ë¡œê·¸ì¸ ë°©ì§€
-20101026 to 20180621
+20101026 to 20180704
ìžë™ ìž…ë ¥ 방지
Bot checks
*/
MSG_BOT_CHECK = 0x62c,
-/*20091013 to 20180621
+/*20091013 to 20180704
ê°ì •ì´ ì•Šëœ ì•„ì´í…œì€ 재료로 사용할 수 없습니다.
Items cannot be used in materials cannot be emotional.
*/
MSG_SKILL_FAIL_MATERIAL_IDENTITY = 0x62d,
-/*20091013 to 20180621
+/*20091013 to 20180704
ì ‘ì†í•˜ì‹  IP는 ë¼ê·¸ë‚˜ë¡œí¬ 온ë¼ì¸ ì´ìš©ì´ 불가능 합니다. ê³ ê° ì§€ì› ì„¼í„° ë˜ëŠ” 홈페ì´ì§€ë¡œ ë¬¸ì˜ í•´ 주십시오.
It is impossible to connect using this IP in Ragnarok Online. Please contact the customer support center or home.
*/
MSG_BAN_IP_BLOCK = 0x62e,
-/*20091013 to 20180621
+/*20091013 to 20180704
비밀번호가 6회 ì´ìƒ 잘못 ìž…ë ¥ë˜ì–´ ìž ì‹œ ë™ì•ˆ ì ‘ì†ì´ 제한ë©ë‹ˆë‹¤. ê³ ê°ë‹˜ì˜ ê°œì¸ì •ë³´ë¥¼ 다시 í•œ 번 확ì¸í•´ 주시길 ë°”ëžë‹ˆë‹¤.
You have entered a wrong password for more than six times, please check your personal information again.
*/
MSG_BAN_INVALID_PWD_CNT = 0x62f,
-/*20091013 to 20180621
+/*20091013 to 20180704
í•©ì„±ì— ì‚¬ìš©í•œ ì•„ì´í…œì€ 소모ë©ë‹ˆë‹¤. 괜찮겠습니까?
Consumption items are used in the synthesis. Are you sure?
*/
MSG_MIX_ACCEPT = 0x630,
-/*20091013 to 20180621
+/*20091013 to 20180704
ì™¼ìª½ì— ë³´ì´ëŠ” ê¸€ìž ë° ìˆ«ìžì¡°í•©ì„ 입력해주세요.
Please input the captcha code found at your left side.
*/
MSG_BOT_CHECK_NOTIC = 0x631,
-/*20091013 to 20180621
+/*20091013 to 20180704
전장 설명 -
Describes the battlefield --
*/
MSG_DESCRIBE_BATTLEFIELD = 0x632,
-/*20091013 to 20180621
+/*20091013 to 20180704
입장 대기 ìƒíƒœ -
Waiting for admission --
*/
MSG_BATTLEFIELD_STATUS = 0x633,
-/*20091013 to 20180621
+/*20091013 to 20180704
전장 입장 ì‹ ì²­ ë„움ë§
Request help battle position
*/
MSG_BATTLEFIELD_HELP = 0x634,
#endif
#if PACKETVER >= 20091015
-/*20091015 to 20180621
+/*20091015 to 20180704
죄송합니다. 해당 ì§ì—…ì˜ ìºë¦­í„°ëŠ” 현재 테스트를 위해서 ì ‘ì†ì´ 금지ë©ë‹ˆë‹¤.
Sorry the character you are trying to use is banned for testing connection.
*/
MSG_BAN_NOT_ALLOWED_JOBCLASS = 0x635,
#endif
#if PACKETVER >= 20091027
-/*20091027 to 20180621
+/*20091027 to 20180704
모든 장비 해제
Remove all equipment
*/
MSG_REMOVE_EQUIPEDITEM = 0x636,
#endif
#if PACKETVER >= 20091103
-/*20091103 to 20180621
+/*20091103 to 20180704
미니 ì•„ì´ì½˜
Mini Icon
*/
MSG_MINI_ICON = 0x637,
-/*20091103 to 20180621
+/*20091103 to 20180704
ì§„ì˜ A : ì§„ì˜ B
Camp A: Camp B
*/
MSG_BATTLEFIELD_TEAM = 0x638,
/*20091103 to 20100616
대기 ìƒíƒœ
-20100622 to 20180621
+20100622 to 20180704
대기열
Wait
*/
MSG_WAIT_STATUS = 0x639,
-/*20091103 to 20180621
+/*20091103 to 20180704
전장 신청 취소 알림
cancellation notice of Battlefield registration.
*/
MSG_NOTIFY_BATTLEFIELD_CANCEL = 0x63a,
-/*20091103 to 20180621
+/*20091103 to 20180704
전장 í•„ìš” ì¸ì›
Required field for staff
*/
MSG_BATTLEFIELD_COUNT = 0x63b,
-/*20091103 to 20180621
+/*20091103 to 20180704
전장 A 대기 ì¸ì›
Battlefield staff A is waiting.
*/
MSG_BATTLEFIELD_ATEAM_COUNT = 0x63c,
-/*20091103 to 20180621
+/*20091103 to 20180704
전장 B 대기 ì¸ì›
Battlefield staff B is waiting.
*/
MSG_BATTLEFIELD_BTEAM_COUNT = 0x63d,
-/*20091103 to 20180621
+/*20091103 to 20180704
ë‚´ 대기 ìƒí™© : %d(ì§„ì˜ A)
Waiting for my situation: %d (Camp A)
*/
MSG_BATTLEFIELD_ATEAM_WAIT = 0x63e,
-/*20091103 to 20180621
+/*20091103 to 20180704
ë‚´ 대기 ìƒí™© : %d(ì§„ì˜ B)
Waiting for my situation: %d (Camp B)
*/
MSG_BATTLEFIELD_BTEAM_WAIT = 0x63f,
-/*20091103 to 20180621
+/*20091103 to 20180704
전장 ì•„ì´ì½˜ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
Battlefield display icon.
*/
MSG_SHOW_BATTLEFIELD_ICON = 0x640,
-/*20091103 to 20180621
+/*20091103 to 20180704
전장 ì•„ì´ì½˜ì„ 보여주지 않습니다.
Does not display the icon field.
*/
MSG_DONT_SHOW_BATTLEFIELD_ICON = 0x641,
-/*20091103 to 20180621
+/*20091103 to 20180704
전장 ì´ë™ 알림
Field notification was moved.
*/
MSG_NOTIFY_BATTLEFIELD_MOVE = 0x642,
-/*20091103 to 20180621
+/*20091103 to 20180704
전장 입장 보류 알림
Admission pending notification of the battlefield
*/
MSG_NOTIFY_BATTLEFIELD_DEFER = 0x643,
-/*20091103 to 20180621
+/*20091103 to 20180704
누군가
Anyone
*/
MSG_WHO_IS = 0x644,
-/*20091103 to 20180621
+/*20091103 to 20180704
[%s](으)로부터 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 받았습니다.
[%s] deal '%d' damage on you.
*/
MSG_I_RECEIVED_DAMAGE = 0x645,
/*20091103 to 20091104
[%s]ê°€ [%s](으)로부터 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 받았습니다.
-20091110 to 20180621
+20091110 to 20180704
[%s]ë‹˜ì´ [%s](으)로부터 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 받았습니다.
[%s] received damage from [%s] with '%d' damage.
*/
MSG_PARTY_RECEIVED_DAMAGE = 0x646,
-/*20091103 to 20180621
+/*20091103 to 20180704
[%s]ì—게 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 주었습니다.
[%s] received '%d' damage.
*/
MSG_I_GAVE_DAMAGE = 0x647,
/*20091103 to 20091104
[%s님]ê°€ [%s]ì—게 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 주었습니다.
-20091110 to 20180621
+20091110 to 20180704
[%s]ë‹˜ì´ [%s]ì—게 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 주었습니다.
[%s] deal damage to [%s] with '%d' damage.
*/
MSG_PARTY_GAVE_DAMAGE = 0x648,
-/*20091103 to 20180621
+/*20091103 to 20180704
%s %d 개 드롭
You dropped '%s' (%d).
*/
MSG_DROP_ITEM = 0x649,
-/*20091103 to 20180621
+/*20091103 to 20180704
[%s]í€˜ìŠ¤íŠ¸ì˜ [%s]몬스터를 처치하였습니다. (%d/%d)
[%s] Quest - defeated [%s] progress (%d/%d)
*/
MSG_CLEAR_QUEST_MONSTER = 0x64a,
-/*20091103 to 20180621
+/*20091103 to 20180704
%s 퀘스트가 ì‚­ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
The Quest '%s' has been removed.
*/
MSG_DELETE_QUEST = 0x64b,
-/*20091103 to 20180621
+/*20091103 to 20180704
[%s]님ì´
[%s] has
*/
MSG_NOTIFY_WHO = 0x64c,
-/*20091103 to 20180621
+/*20091103 to 20180704
'%d'ì˜ ê²½í—˜ì¹˜ë¥¼
You acquired '%d' Experience Points
*/
MSG_NOTIFY_EXP = 0x64d,
-/*20091103 to 20180621
+/*20091103 to 20180704
'%d'ì˜ ìž¡ê²½í—˜ì¹˜ë¥¼
You acquired '%d' Job Experience Points
*/
MSG_NOTIFY_JOBEXP = 0x64e,
-/*20091103 to 20180621
+/*20091103 to 20180704
íšë“했습니다.
gained.
*/
MSG_GET = 0x64f,
-/*20091103 to 20180621
+/*20091103 to 20180704
ìƒì‹¤í–ˆìŠµë‹ˆë‹¤.
has lost.
*/
MSG_LOSS = 0x650,
-/*20091103 to 20180621
+/*20091103 to 20180704
[%s](으)로부터 '%d'ì˜ ì½”ì¸ì„ 스틸했습니다.
From [%s], '%d' coins were stolen.
*/
MSG_NOTIFY_STEAL_COIN = 0x651,
-/*20091103 to 20180621
+/*20091103 to 20180704
전투 메시지
Battle Message
*/
MSG_VIEW_COMBAT_MSG = 0x652,
-/*20091103 to 20180621
+/*20091103 to 20180704
íŒŒí‹°ì› ì „íˆ¬ 메시지
Display Party Battle Message
*/
MSG_VIEW_PARTY_COMBAT_MSG = 0x653,
-/*20091103 to 20180621
+/*20091103 to 20180704
íšë“ 경험치
Display Experience Message
*/
MSG_VIEW_GETTING_EXP_MSG = 0x654,
-/*20091103 to 20180621
+/*20091103 to 20180704
파티ì›ì˜ íšë“ 경험치
Display Party Experience Message
*/
MSG_VIEW_PARTY_GETTING_EXP_MSG = 0x655,
-/*20091103 to 20180621
+/*20091103 to 20180704
퀘스트 정보 표시
Display Quest Info Message
*/
MSG_VIEW_QUEST_INFO_MSG = 0x656,
-/*20091103 to 20180621
+/*20091103 to 20180704
전장 정보 표시
Display Battlefield Message
*/
MSG_VIEW_BATTLEFIELD_INFO_MSG = 0x657,
#endif
#if PACKETVER >= 20091104
-/*20091104 to 20180621
+/*20091104 to 20180704
[%s]ì—게
[%s]
*/
MSG_NOTIFY_TARGET_WHO = 0x658,
/*20091104 to 20091104
[%s] ìŠ¤í‚¬ì„ ìºìŠ¤íŒ…합니다.
-20091110 to 20180621
+20091110 to 20180704
[%s] ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
Casts [%s] skill.
*/
MSG_NOTIFY_SKILL_TO_TARGET = 0x659,
#endif
#if PACKETVER >= 20091110
-/*20091110 to 20180621
+/*20091110 to 20180704
기능제한ìƒíƒœ
Activate lock function
*/
MSG_LOCK_MOUSE = 0x65a,
-/*20091110 to 20180621
+/*20091110 to 20180704
기능제한해제ìƒíƒœ
Deactivate lock function
*/
MSG_UNLOCK_MOUSE = 0x65b,
#endif
#if PACKETVER >= 20091201
-/*20091201 to 20180621
+/*20091201 to 20180704
[%s]ë‹˜ì´ [%s](으)로부터 '%s' 를 íšë“ 했습니다.
Citizens of Midgard, Lady Luck shines upon [%s] !! [%s] has awarded the player with '%s' !!
*/
MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN = 0x65c,
#endif
#if PACKETVER >= 20091208
-/*20091208 to 20180621
+/*20091208 to 20180704
소드맨
Swordman
*/
MSG_JOB_SWORDMAN = 0x65d,
-/*20091208 to 20180621
+/*20091208 to 20180704
매지션
Magician
*/
MSG_JOB_MAGICIAN = 0x65e,
-/*20091208 to 20180621
+/*20091208 to 20180704
아처
Archer
*/
MSG_JOB_ARCHER = 0x65f,
-/*20091208 to 20180621
+/*20091208 to 20180704
어콜ë¼ì´íŠ¸
Acolyte
*/
MSG_JOB_ACOLYTE = 0x660,
-/*20091208 to 20180621
+/*20091208 to 20180704
머첸트
Merchant
*/
MSG_JOB_MERCHANT = 0x661,
-/*20091208 to 20180621
+/*20091208 to 20180704
씨프
Thief
*/
MSG_JOB_THIEF = 0x662,
-/*20091208 to 20180621
+/*20091208 to 20180704
나ì´íŠ¸
Knight
*/
MSG_JOB_KNIGHT = 0x663,
-/*20091208 to 20180621
+/*20091208 to 20180704
프리스트
Priest
*/
MSG_JOB_PRIEST = 0x664,
-/*20091208 to 20180621
+/*20091208 to 20180704
위저드
Wizard
*/
MSG_JOB_WIZARD = 0x665,
-/*20091208 to 20180621
+/*20091208 to 20180704
블랙스미스
Black Smith
*/
MSG_JOB_BLACKSMITH = 0x666,
-/*20091208 to 20180621
+/*20091208 to 20180704
헌터
Hunter
*/
MSG_JOB_HUNTER = 0x667,
-/*20091208 to 20180621
+/*20091208 to 20180704
어새신
Assasin
*/
MSG_JOB_ASSASSIN = 0x668,
-/*20091208 to 20180621
+/*20091208 to 20180704
í¬ë£¨ì„¸ì´ë”
Crusader
*/
MSG_JOB_CRUSADER = 0x669,
-/*20091208 to 20180621
+/*20091208 to 20180704
몽í¬
Monk
*/
MSG_JOB_MONK = 0x66a,
-/*20091208 to 20180621
+/*20091208 to 20180704
세ì´ì§€
Sage
*/
MSG_JOB_SAGE = 0x66b,
-/*20091208 to 20180621
+/*20091208 to 20180704
로그
Rogue
*/
MSG_JOB_ROGUE = 0x66c,
-/*20091208 to 20180621
+/*20091208 to 20180704
알케미스트
Alchemist
*/
MSG_JOB_ALCHEMIST = 0x66d,
-/*20091208 to 20180621
+/*20091208 to 20180704
바드
Bard
*/
MSG_JOB_BARD = 0x66e,
-/*20091208 to 20180621
+/*20091208 to 20180704
댄서
Dancer
*/
MSG_JOB_DANCER = 0x66f,
/*20091208 to 20100310
룬나ì´íŠ¸
-20100316 to 20180621
+20100316 to 20180704
룬 나ì´íŠ¸
Rune Knight
*/
MSG_JOB_RUNE_KNIGHT = 0x670,
-/*20091208 to 20180621
+/*20091208 to 20180704
워ë¡
Warlock
*/
MSG_JOB_WARLOCK = 0x671,
-/*20091208 to 20180621
+/*20091208 to 20180704
ë ˆì¸ì ¸
Ranger
*/
MSG_JOB_RANGER = 0x672,
/*20091208 to 20100310
ì•„í¬ë¹„ìˆ
-20100316 to 20180621
+20100316 to 20180704
ì•„í¬ ë¹„ìˆ
Arc Bishop
*/
MSG_JOB_ARCHBISHOP = 0x673,
-/*20091208 to 20180621
+/*20091208 to 20180704
미케닉
Mechanic
*/
MSG_JOB_MECHANIC = 0x674,
/*20091208 to 20100310
길로틴í¬ë¡œìŠ¤
-20100316 to 20180621
+20100316 to 20180704
길로틴 í¬ë¡œìŠ¤
Guillotine Cross
*/
MSG_JOB_GUILLOTINE_CROSS = 0x675,
-/*20091208 to 20180621
+/*20091208 to 20180704
로얄가드
Royal Guard
*/
MSG_JOB_ROYAL_GUARD = 0x676,
-/*20091208 to 20180621
+/*20091208 to 20180704
소서러
Sorcerer
*/
MSG_JOB_SORCERER = 0x677,
-/*20091208 to 20180621
+/*20091208 to 20180704
민스트럴
Minstrel
*/
MSG_JOB_MINSTREL = 0x678,
-/*20091208 to 20180621
+/*20091208 to 20180704
ì›ë”러
Wanderer
*/
MSG_JOB_WANDERER = 0x679,
-/*20091208 to 20180621
+/*20091208 to 20180704
수ë¼
Sura
*/
MSG_JOB_SURA = 0x67a,
-/*20091208 to 20180621
+/*20091208 to 20180704
제네릭
Genetic
*/
MSG_JOB_GENETIC = 0x67b,
/*20091208 to 20100310
ì‰ë„ìš°ì²´ì´ì„œ
-20100316 to 20180621
+20100316 to 20180704
ì‰ë„ìš° ì²´ì´ì„œ
Shadow Chaser
*/
MSG_JOB_SHADOW_CHASER = 0x67c,
/*20091208 to 20100113
소드맨_하ì´
-20100119 to 20180621
+20100119 to 20180704
소드맨 하ì´
High Swordman
*/
MSG_JOB_SWORDMAN_H = 0x67d,
/*20091208 to 20100113
매지션_하ì´
-20100119 to 20180621
+20100119 to 20180704
매지션 하ì´
High Magician
*/
MSG_JOB_MAGICIAN_H = 0x67e,
/*20091208 to 20100113
아처_하ì´
-20100119 to 20180621
+20100119 to 20180704
아처 하ì´
High Archer
*/
MSG_JOB_ARCHER_H = 0x67f,
/*20091208 to 20100113
어콜ë¼ì´íŠ¸_하ì´
-20100119 to 20180621
+20100119 to 20180704
어콜ë¼ì´íŠ¸ 하ì´
High Acolyte
*/
MSG_JOB_ACOLYTE_H = 0x680,
/*20091208 to 20100113
머첸트_하ì´
-20100119 to 20180621
+20100119 to 20180704
머첸트 하ì´
High Merchant
*/
@@ -9034,97 +9034,97 @@ High Merchant
시프_하ì´
20100119 to 20100223
시프 하ì´
-20100302 to 20180621
+20100302 to 20180704
씨프 하ì´
High Thief
*/
MSG_JOB_THIEF_H = 0x682,
-/*20091208 to 20180621
+/*20091208 to 20180704
로드나ì´íŠ¸
Lord Knight
*/
MSG_JOB_KNIGHT_H = 0x683,
-/*20091208 to 20180621
+/*20091208 to 20180704
하ì´í”„리스트
High Priest
*/
MSG_JOB_PRIEST_H = 0x684,
-/*20091208 to 20180621
+/*20091208 to 20180704
하ì´ìœ„저드
High Wizard
*/
MSG_JOB_WIZARD_H = 0x685,
-/*20091208 to 20180621
+/*20091208 to 20180704
í™”ì´íŠ¸ìŠ¤ë¯¸ìŠ¤
White Smith
*/
MSG_JOB_BLACKSMITH_H = 0x686,
-/*20091208 to 20180621
+/*20091208 to 20180704
스나ì´í¼
Sniper
*/
MSG_JOB_HUNTER_H = 0x687,
-/*20091208 to 20180621
+/*20091208 to 20180704
어새신í¬ë¡œìŠ¤
Assasin Cross
*/
MSG_JOB_ASSASSIN_H = 0x688,
-/*20091208 to 20180621
+/*20091208 to 20180704
팔ë¼ë”˜
Paladin
*/
MSG_JOB_CRUSADER_H = 0x689,
-/*20091208 to 20180621
+/*20091208 to 20180704
챔피온
Champion
*/
MSG_JOB_MONK_H = 0x68a,
-/*20091208 to 20180621
+/*20091208 to 20180704
프로페서
Professor
*/
MSG_JOB_SAGE_H = 0x68b,
-/*20091208 to 20180621
+/*20091208 to 20180704
스토커
Stalker
*/
MSG_JOB_ROGUE_H = 0x68c,
-/*20091208 to 20180621
+/*20091208 to 20180704
í¬ë¦¬ì—ì´í„°
Creator
*/
MSG_JOB_ALCHEMIST_H = 0x68d,
-/*20091208 to 20180621
+/*20091208 to 20180704
í´ë¡œìš´
Clown
*/
MSG_JOB_BARD_H = 0x68e,
-/*20091208 to 20180621
+/*20091208 to 20180704
집시
Gypsy
*/
MSG_JOB_DANCER_H = 0x68f,
-/*20091208 to 20180621
+/*20091208 to 20180704
노비스
Wedding
*/
MSG_JOB_NOVICE = 0x690,
-/*20091208 to 20180621
+/*20091208 to 20180704
하ì´ë…¸ë¹„스
High Novice
*/
MSG_JOB_NOVICE_H = 0x691,
-/*20091208 to 20180621
+/*20091208 to 20180704
슈í¼ë…¸ë¹„스
Super Novice
*/
MSG_JOB_SUPERNOVICE = 0x692,
-/*20091208 to 20180621
+/*20091208 to 20180704
건슬ë§ê±°
Gunslinger
*/
MSG_JOB_GUNSLINGER = 0x693,
-/*20091208 to 20180621
+/*20091208 to 20180704
ë‹Œìž
Ninja
*/
@@ -9133,227 +9133,227 @@ Ninja
태권소녀,태권소년
20100112 to 20100310
태권소년소녀
-20100316 to 20180621
+20100316 to 20180704
태권소년/소녀
Taekwon F/M
*/
MSG_JOB_TAEKWON = 0x695,
-/*20091208 to 20180621
+/*20091208 to 20180704
권성
Star Gladiator
*/
MSG_JOB_STAR = 0x696,
-/*20091208 to 20180621
+/*20091208 to 20180704
소울ë§ì»¤
Soul Linker
*/
MSG_JOB_LINKER = 0x697,
-/*20091208 to 20180621
+/*20091208 to 20180704
파티모집
Party Recruitment
*/
MSG_SEEK_PARTY_MEMBER = 0x698,
/*20091208 to 20100310
파티 부킹 리스트
-20100316 to 20180621
+20100316 to 20180704
파티 모집 리스트
Party Booking List
*/
MSG_SEEK_PARTY_LIST = 0x699,
-/*20091208 to 20180621
+/*20091208 to 20180704
파티 모집 중
Recruiting Party
*/
MSG_SEEK_PARTY_CHECK = 0x69a,
#endif
#if PACKETVER >= 20091215
-/*20091215 to 20180621
+/*20091215 to 20180704
[활]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Bow] must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_BOW = 0x69b,
-/*20091215 to 20180621
+/*20091215 to 20180704
[악기/채ì°]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Musical Instrument/Whip] must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_INSTRUMENT_WHIP = 0x69c,
-/*20091215 to 20180621
+/*20091215 to 20180704
ì˜ë¬¸ê³¼ 숫ìžë§Œ 사용가능합니다.
Only alphanumeric characters are allowed.
*/
MSG_BAD_CHAR = 0x69d,
-/*20091215 to 20180621
+/*20091215 to 20180704
알림
Notice
*/
MSG_ALRAM = 0x69e,
-/*20091215 to 20180621
+/*20091215 to 20180704
ìƒì  ì •ë³´ê°€ 정확하지 ì•Šì•„ ì•„ì´í…œ 구매가 실패하였습니다.
Item purchase failed due to incorrect shop information.
*/
MSG_FAIL_BUY_ITEM_INVALID_MCSTORE = 0x69f,
#endif
#if PACKETVER >= 20100105
-/*20100105 to 20180621
+/*20100105 to 20180704
소지 ì•„ì´í…œ ì°½ì—ì„œ 버릴 수 있습니다.
Item cannot be discarded from the window.
*/
MSG_CAN_DROP_ITEM_TO_ITEMWND = 0x6a0,
#endif
#if PACKETVER >= 20100112
-/*20100112 to 20180621
+/*20100112 to 20180704
시간
Time
*/
MSG_TIME = 0x6a1,
-/*20100112 to 20180621
+/*20100112 to 20180704
맵
Map
*/
MSG_MAP = 0x6a2,
-/*20100112 to 20180621
+/*20100112 to 20180704
거래 ìƒíƒœì—서는 ì•„ì´í…œ 사용 ë° ìž¥ë¹„ ì°©ìš©/해제를 í•  수 없습니다.
You can't use, equip or disarm items when you're trading.
*/
MSG_CANT_USE_WHEN_OPENED_EXCHANGEWND = 0x6a3,
-/*20100112 to 20180621
+/*20100112 to 20180704
미지정값
Unspecified value
*/
MSG_HOTKEY_UNKOWN = 0x6a4,
#endif
#if PACKETVER >= 20100126
-/*20100126 to 20180621
+/*20100126 to 20180704
/stateinfo : ìƒíƒœ ì•„ì´ì½˜ì— 대한 ì„¤ëª…ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. On Off
/stateinfo: Shows the description of status icons. On Off
*/
MSG_EXPLAIN_STATEINFO = 0x6a5,
-/*20100126 to 20180621
+/*20100126 to 20180704
ìƒíƒœ ì •ë³´ On : ìƒíƒœ ì•„ì´ì½˜ì— 대한 ì„¤ëª…ì´ í‘œì‹œë©ë‹ˆë‹¤.
Status Information On: Status icon description is enabled.
*/
MSG_SHOW_STATEINFO_ON = 0x6a6,
-/*20100126 to 20180621
+/*20100126 to 20180704
ìƒíƒœ ì •ë³´ Off: ìƒíƒœ ì•„ì´ì½˜ì— 대한 ì„¤ëª…ì´ í‘œì‹œë˜ì§€ 않습니다.
Status Information Off: Status icon description is disabled.
*/
MSG_SHOW_STATEINFO_OFF = 0x6a7,
/*20100126 to 20100126
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— %dê°œ ì´ìƒì€ 살수 없습니다.
-20100202 to 20180621
+20100202 to 20180704
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— %dê°œ ì´ìƒì€ ì‚´ 수 없습니다.
It is not possible to purchase the same item more than %d pieces at a time
*/
MSG_LIMIT_BUY_ITEM2 = 0x6a8,
#endif
#if PACKETVER >= 20100202
-/*20100202 to 20180621
+/*20100202 to 20180704
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— %dê°œ ì´ìƒì€ 팔 수 없습니다.
It is not possible to purchase the same item more than %d pieces at a time
*/
MSG_LIMIT_SELL_ITEM = 0x6a9,
/*20100202 to 20100203
ì´ êµ¬ë§¤ 가능 개수는 %dê°œ 입니다.
-20100209 to 20180621
+20100209 to 20180704
해당 ì•„ì´í…œì˜ ì´ êµ¬ë§¤ 가능 개수는 %dê°œ 입니다.
Can purchase upto %d pieces of the same item at a time.
*/
MSG_CAN_BUY_ITEM_NUM = 0x6aa,
#endif
#if PACKETVER >= 20100209
-/*20100209 to 20180621
+/*20100209 to 20180704
설정한 ë‚´ìš©ì€ ì •ìƒ ì¢…ë£Œ ì‹œ [%s\%s]ì— ì €ìž¥ë©ë‹ˆë‹¤.
User customized key is saved to [%s\%s]
*/
MSG_SAVE_HOTKEY_TO_FILE = 0x6ab,
#endif
#if PACKETVER >= 20100216
-/*20100216 to 20180621
+/*20100216 to 20180704
[%s] ë‹˜ì€ í˜„ìž¬ êµí™˜ ì‹ ì²­ì„ ë°›ì„ ìˆ˜ 없는 ìƒíƒœìž…니다.
[%s] is currently on trade and cannot accept the request.
*/
MSG_CHARACTER_IS_BUSY = 0x6ac,
#endif
#if PACKETVER >= 20100309
-/*20100309 to 20180621
+/*20100309 to 20180704
RO_HELP
RO_HELP.
*/
MSG_RO_HELP = 0x6ad,
#endif
#if PACKETVER >= 20100316
-/*20100316 to 20180621
+/*20100316 to 20180704
모루가 존재 하지 않습니다.
Anvil does not exist.
*/
MSG_HAVENOT_ANVIL = 0x6ae,
-/*20100316 to 20180621
+/*20100316 to 20180704
노비스 레벨 10 ì´í•˜ëŠ” ê·“ì†ë§ì´ 금지ë©ë‹ˆë‹¤
Novice below level 10 is not allowed to whisper.
*/
MSG_WHISPER_BLOCK_NOVICE_LEVEL10 = 0x6af,
#endif
#if PACKETVER >= 20100323
-/*20100323 to 20180621
+/*20100323 to 20180704
공격
Attack
*/
MSG_JOB_ATTACKER = 0x6b0,
-/*20100323 to 20180621
+/*20100323 to 20180704
ë°©ì–´
Defense
*/
MSG_JOB_TANKER = 0x6b1,
-/*20100323 to 20180621
+/*20100323 to 20180704
회복
Consumables
*/
MSG_JOB_HEALER = 0x6b2,
-/*20100323 to 20180621
+/*20100323 to 20180704
ë³´ì¡°
Support
*/
MSG_JOB_ASSISTANCE = 0x6b3,
-/*20100323 to 20180621
+/*20100323 to 20180704
파티 모집 관련 명령어
Party recruitment related command
*/
MSG_DESCRIBE_PARTY_BOOKING = 0x6b4,
#endif
#if PACKETVER >= 20100330
-/*20100330 to 20180621
+/*20100330 to 20180704
길드 ë™ë§¹ì‹ ì²­ì´ 불가능합니다
Guild alliance application is not possible.
*/
MSG_GUILD_ALLY_REQUEST_DISABLE = 0x6b5,
-/*20100330 to 20180621
+/*20100330 to 20180704
길드 ì ëŒ€ì‹ ì²­ì´ 불가능합니다
Guild hostility application is not possible.
*/
MSG_GUILD_HOSTILE_REQUEST_DISABLE = 0x6b6,
-/*20100330 to 20180621
+/*20100330 to 20180704
아지트맵ì—서는 친구추가가 불가능합니다
Adding friends is not possible in this map.
*/
MSG_FRIEND_ADD_FALSE_AGIT = 0x6b7,
#endif
#if PACKETVER >= 20100406
-/*20100406 to 20180621
+/*20100406 to 20180704
êµ¬ë§¤ë…¸ì  ê°œì„¤
Buying Store Window
*/
MSG_BUYINGSTORE_MAKEWND_TITLE = 0x6b8,
-/*20100406 to 20180621
+/*20100406 to 20180704
구매가 :
Price:
*/
MSG_BUYINGSTORE_MAKEWND_PRICE = 0x6b9,
-/*20100406 to 20180621
+/*20100406 to 20180704
소지액 :
Money:
*/
MSG_BUYINGSTORE_MAKEWND_MYZENY = 0x6ba,
-/*20100406 to 20180621
+/*20100406 to 20180704
구매 í•œë„ì•¡
Purchase Zeny Limit
*/
@@ -9361,7 +9361,7 @@ Purchase Zeny Limit
/*20100406 to 20100414
íŒë§¤ 가능한 ì•„ì´í…œ 목ë¡
Available items:
-20100420 to 20180621
+20100420 to 20180704
구매할 ì•„ì´í…œì„ 등ë¡í•˜ì§€ 않았습니다. 구매하실 ì•„ì´í…œì„ 등ë¡í•´ 주세요
Please register the item first that has to be purchased.
*/
@@ -9369,7 +9369,7 @@ Please register the item first that has to be purchased.
/*20100406 to 20100414
ë‚˜ì˜ êµ¬ë§¤ë…¸ì 
Purchase list:
-20100420 to 20180621
+20100420 to 20180704
%s ì•„ì´í…œì˜ ê°€ê²©ì„ ìž…ë ¥í•´ 주세요.
Enter the price for item %s.
*/
@@ -9377,14 +9377,14 @@ Enter the price for item %s.
/*20100406 to 20100414
구매 ë…¸ì 
Wanted items
-20100420 to 20180621
+20100420 to 20180704
%s ì•„ì´í…œì˜ ê°€ê²©ì„ 9999만 Zenyì´í•˜ë¡œ 입력해 주세요.
Enter the price for item %s. It has to be below 99990000 Zeny.
*/
MSG_BUYINGSTORE_MAKEWND_REINPUTPRICE = 0x6be,
/*20100406 to 20100414
제한금액 : %d Zeny
-20100420 to 20180621
+20100420 to 20180704
%s ì•„ì´í…œì˜ êµ¬ë§¤ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
Enter the item number for %s.
*/
@@ -9392,7 +9392,7 @@ Enter the item number for %s.
/*20100406 to 20100414
%s %s Zeny %d 개
Buying %s for %s Zeny. Amount: %d.
-20100420 to 20180621
+20100420 to 20180704
%s ì•„ì´í…œì˜ 소지수량과 êµ¬ë§¤ìˆ˜ëŸ‰ì˜ í•©ì´ 9999ê°œ ì´ìƒìž…니다. 9999ê°œ ì´í•˜ì˜ ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
The sum of purchasing and belonging items is over 9999. The sum has to be bellow 9999.
*/
@@ -9400,14 +9400,14 @@ The sum of purchasing and belonging items is over 9999. The sum has to be bellow
/*20100406 to 20100414
%s : %s Zeny => %s EA
%s: %s Zeny => %s ea.
-20100420 to 20180621
+20100420 to 20180704
ì¤‘ë³µëœ ì•„ì´í…œì´ 존재합니다.
You have duplicate items in your purchase list.
*/
MSG_BUYINGSTORE_MAKEWND_DUPLICATEITEM = 0x6c1,
/*20100406 to 20100414
%s %d 개 구매.
-20100420 to 20180621
+20100420 to 20180704
제한 ê¸ˆì•¡ì„ ìž…ë ¥í•´ 주세요
Enter the limited price.
*/
@@ -9415,7 +9415,7 @@ Enter the limited price.
/*20100406 to 20100414
ì•„ì´í…œì„ ëª¨ë‘ êµ¬ë§¤í–ˆìŠµë‹ˆë‹¤.
You purchased all items.
-20100420 to 20180621
+20100420 to 20180704
입력한 ì œí•œê¸ˆì•¡ì´ ì†Œì§€ê¸ˆì•¡ì„ ì´ˆê³¼í•©ë‹ˆë‹¤. 다시 설정해 주세요
You have entered a greater amount of zeny than you have. Please check your zeny.
*/
@@ -9423,21 +9423,21 @@ You have entered a greater amount of zeny than you have. Please check your zeny.
/*20100406 to 20100414
해당 ì•„ì´í…œì˜ ì´ íŒë§¤ 가능 개수는 %dê°œ 입니다.
The max. number of items you can sell is %d.
-20100420 to 20180621
+20100420 to 20180704
%s : %s Zeny => %s EA
%s: %s Zeny => %s ea.
*/
MSG_BUYINGSTORE_MAKEWND_ITEMLIST = 0x6c4,
/*20100406 to 20100414
ê°€ê²©ì´ 0 Zenyì¸ ì•„ì´í…œì´ 존재합니다. ê°€ê²©ì„ ìž…ë ¥í•´ 주세요.
-20100420 to 20180621
+20100420 to 20180704
구매 가능한 ì•„ì´í…œ 목ë¡
Available items:
*/
MSG_BUYINGSTORE_MIRRORBUYITEMLIST = 0x6c5,
/*20100406 to 20100414
ê°€ê²©ì´ 9999만 Zenyì´ìƒì¸ ì•„ì´í…œì´ 존재합니다. 9999만 Zeny ì´í•˜ì˜ ê°€ê²©ì„ ìž…ë ¥í•´ 주세요.
-20100420 to 20180621
+20100420 to 20180704
ë‚˜ì˜ êµ¬ë§¤ë…¸ì 
Purchase list:
*/
@@ -9446,14 +9446,14 @@ Purchase list:
êµ¬ë§¤ìˆ˜ëŸ‰ì´ 0 ê°œì¸ ì•„ì´í…œì´ 존재합니다. ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
20100420 to 20110208
제한금액 : %d Zeny
-20110210 to 20180621
+20110210 to 20180704
제한금액 : %s Zeny
Price limit: %s Zeny
*/
MSG_BUYINGSTORE_MYSHOPWND_LIMITZENY = 0x6c7,
/*20100406 to 20100414
êµ¬ë§¤ìˆ˜ëŸ‰ì´ 9999ê°œ ì´ìƒì¸ ì•„ì´í…œì´ 존재합니다. 9999ê°œ ì´í•˜ì˜ ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
-20100420 to 20180621
+20100420 to 20180704
%s %s Zeny %d 개
Buying %s for %s Zeny. Amount: %d.
*/
@@ -9461,21 +9461,21 @@ Buying %s for %s Zeny. Amount: %d.
/*20100406 to 20100414
ì¤‘ë³µëœ ì•„ì´í…œì´ 존재합니다.
You have duplicate items in your purchase list.
-20100420 to 20180621
+20100420 to 20180704
구매 ë…¸ì 
Wanted items
*/
MSG_BUYINGSTORE_SHOPWND_TITLE = 0x6c9,
/*20100406 to 20100414
구매ìƒì  ì—´ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20100420 to 20180621
+20100420 to 20180704
íŒë§¤ 가능한 ì•„ì´í…œ 목ë¡
Available items:
*/
MSG_BUYINGSTORE_MIRRORSELLWND_TITLE = 0x6ca,
/*20100406 to 20100414
구매ìƒì  ì—´ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20100420 to 20180621
+20100420 to 20180704
해당 ì•„ì´í…œì˜ ì´ íŒë§¤ 가능 개수는 %dê°œ 입니다.
The max. number of items you can sell is %d.
*/
@@ -9484,14 +9484,14 @@ The max. number of items you can sell is %d.
구매가능한 최대 갯수를 초과하였습니다.
20100420 to 20110208
구매ìžì˜ ìž”ì•¡ì´ ë¶€ì¡±í•˜ë‹ˆ 다시 설정해 주세요
-20110210 to 20180621
+20110210 to 20180704
구매노ì ì˜ ì œí•œê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì—¬ íŒë§¤í•  수 없습니다.
Buyer has insufficient money, lower the amount of items you're selling.
*/
MSG_BUYINGSTORE_SELLWND_LACKBUYERZENY = 0x6cc,
/*20100406 to 20100414
ë‚¨ì€ ìž”ì•¡ìœ¼ë¡œ ì•„ì´í…œ 구매가 불가능 합니다.
-20100420 to 20180621
+20100420 to 20180704
구매ìƒì  ê°œì„¤ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to open purchase shop.
*/
@@ -9501,7 +9501,7 @@ Failed to open purchase shop.
/*20100413 to 20100414
ì†Œí™˜ëœ ì •ë ¹ì´ ì—†ìŠµë‹ˆë‹¤.
You don't have any summoned spirits.
-20100420 to 20180621
+20100420 to 20180704
ì•„ì´í…œì˜ ì´ ë¬´ê²Œê°€ %d ë§Œí¼ ì†Œì§€ í•œê³„ëŸ‰ì„ ì´ˆê³¼í•©ë‹ˆë‹¤. 다시 설정해 주세요.
You exceed the total amount of items.
*/
@@ -9509,34 +9509,34 @@ You exceed the total amount of items.
/*20100413 to 20100414
서버연합대전 제약사항 입니다.
This is a restricted server.
-20100420 to 20180621
+20100420 to 20180704
제한금액만í¼ì˜ ì•„ì´í…œì„ ëª¨ë‘ êµ¬ë§¤í•˜ì˜€ìŠµë‹ˆë‹¤.
You have purchased all items within the limited price.
*/
MSG_BUYINGSTORE_TRADE_OVERLIMITZENY = 0x6cf,
#endif
#if PACKETVER >= 20100420
-/*20100420 to 20180621
+/*20100420 to 20180704
ì•„ì´í…œì„ ëª¨ë‘ êµ¬ë§¤í–ˆìŠµë‹ˆë‹¤.
You purchased all items.
*/
MSG_BUYINGSTORE_TRADE_BUYCOMPLETE = 0x6d0,
-/*20100420 to 20180621
+/*20100420 to 20180704
구매ìžì˜ ìž”ì•¡ì´ ë¶€ì¡±í•˜ì—¬ 거래가 실패하였습니다.
Failed to deal because you have not enough Zeny.
*/
MSG_BUYINGSTORE_TRADE_LACKBUYERZENY = 0x6d1,
-/*20100420 to 20180621
+/*20100420 to 20180704
%s %d개를 %dzì— íŒë§¤í•˜ì˜€ìŠµë‹ˆë‹¤.
You have sold %s. Amount: %d. Total Zeny: %dz
*/
MSG_BUYINGSTORE_TRADE_SELLCOMPLETE = 0x6d2,
-/*20100420 to 20180621
+/*20100420 to 20180704
%s ì•„ì´í…œì€ í¬ë§ 구매갯수보다 ìˆ˜ëŸ‰ì´ ë§Žì•„ íŒë§¤í•˜ì§€ 못하였습니다
%s item could not be sold because you do not have the wanted amount of items.
*/
MSG_BUYINGSTORE_TRADE_OVERCOUNT = 0x6d3,
-/*20100420 to 20180621
+/*20100420 to 20180704
ì†Œí™˜ëœ ì •ë ¹ì´ ì—†ìŠµë‹ˆë‹¤.
You don't have any summoned spirits.
20130807 to 20130814
@@ -9544,7 +9544,7 @@ You don't have any summoned spirits.
Has not registered to sell the item. Please register to sell the item
*/
MSG_USESKILL_FAIL_EL_SUMMON = 0x6d4,
-/*20100420 to 20180621
+/*20100420 to 20180704
서버연합대전 제약사항 입니다.
This is a restricted server.
20130807 to 20130814
@@ -9552,7 +9552,7 @@ This is a restricted server.
You don't have any summoned spirits.
*/
MSG_AGAINSTSERVERSIEGEWARFARE_RESTRICTION = 0x6d5,
-/*20100420 to 20180621
+/*20100420 to 20180704
OTP 비밀번호는 6ìžë¦¬ 입니다.
OTP password is 6 digits long.
20130807 to 20130814
@@ -9560,7 +9560,7 @@ OTP password is 6 digits long.
This is a restricted server.
*/
MSG_OTP_MUST_6_CHAR = 0x6d6,
-/*20100420 to 20180621
+/*20100420 to 20180704
OTP ì •ë³´ê°€ 없습니다. 관리ìžì—게 문ì˜í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
OTP information is unavailable. Please contact your administrator.
20130807 to 20130814
@@ -9568,7 +9568,7 @@ OTP 비밀번호는 6ìžë¦¬ 입니다.
OTP password is 6 digits long.
*/
MSG_DB_ERROR = 0x6d7,
-/*20100420 to 20180621
+/*20100420 to 20180704
OTP ì¸ì¦ì— 실패 했습니다.
OTP authentication failed.
20130807 to 20130814
@@ -9576,7 +9576,7 @@ OTP ì •ë³´ê°€ 없습니다. 관리ìžì—게 문ì˜í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
OTP information is unavailable. Please contact your administrator.
*/
MSG_OTP_FAILED = 0x6d8,
-/*20100420 to 20180621
+/*20100420 to 20180704
파티광고가 추가ë˜ì—ˆìŠµë‹ˆë‹¤
Party ad has been added.
20130807 to 20130814
@@ -9586,7 +9586,7 @@ OTP authentication failed.
MSG_PARTY_BOOKING_NOTIFY = 0x6d9,
/*20100420 to 20110718
íŒŒí‹°ì› ëª¨ì§‘ 중
-20110726 to 20180621
+20110726 to 20180704
모집 중
Recruit party members
20130807 to 20130814
@@ -9594,7 +9594,7 @@ Recruit party members
Party ad has been added.
*/
MSG_PARTY_BOOKING_REQURT = 0x6da,
-/*20100420 to 20180621
+/*20100420 to 20180704
ì—­í• 
Roles
20130807 to 20130814
@@ -9602,7 +9602,7 @@ Roles
Recruit party members
*/
MSG_PARTY_BOOKING_TYPE = 0x6db,
-/*20100420 to 20180621
+/*20100420 to 20180704
1ì°¨ ì§ì—…
1st Jobs
20130807 to 20130814
@@ -9610,7 +9610,7 @@ Recruit party members
Roles
*/
MSG_PARTY_BOOKING_TYPE_1 = 0x6dc,
-/*20100420 to 20180621
+/*20100420 to 20180704
2ì°¨ ì§ì—…
2nd Jobs
20130807 to 20130814
@@ -9618,7 +9618,7 @@ Roles
1st Jobs
*/
MSG_PARTY_BOOKING_TYPE_2 = 0x6dd,
-/*20100420 to 20180621
+/*20100420 to 20180704
3-1ì°¨ ì§ì—…
3-1 Classes
20130807 to 20130814
@@ -9626,7 +9626,7 @@ Roles
2nd Jobs
*/
MSG_PARTY_BOOKING_TYPE_3_1 = 0x6de,
-/*20100420 to 20180621
+/*20100420 to 20180704
3-2ì°¨ ì§ì—…
3-2 Classes
20130807 to 20130814
@@ -9634,7 +9634,7 @@ Roles
3-1 Classes
*/
MSG_PARTY_BOOKING_TYPE_3_2 = 0x6df,
-/*20100420 to 20180621
+/*20100420 to 20180704
전승 1ì°¨ ì§ì—…
1st Job High
20130807 to 20130814
@@ -9642,7 +9642,7 @@ Roles
3-2 Classes
*/
MSG_PARTY_BOOKING_TYPE_1PLUS = 0x6e0,
-/*20100420 to 20180621
+/*20100420 to 20180704
전승 2ì°¨ ì§ì—…
2nd Jobs High
20130807 to 20130814
@@ -9650,7 +9650,7 @@ Roles
1st Job High
*/
MSG_PARTY_BOOKING_TYPE_2PLUS = 0x6e1,
-/*20100420 to 20180621
+/*20100420 to 20180704
기타 ì§ì—…êµ°
Other Jobs
20130807 to 20130814
@@ -9658,7 +9658,7 @@ Other Jobs
2nd Jobs High
*/
MSG_PARTY_BOOKING_TYPE_ETC = 0x6e2,
-/*20100420 to 20180621
+/*20100420 to 20180704
모집 하기
Recruit
20130807 to 20130814
@@ -9666,7 +9666,7 @@ Recruit
Other Jobs
*/
MSG_PARTY_BOOKING_REQURTING = 0x6e3,
-/*20100420 to 20180621
+/*20100420 to 20180704
파티ì›ì„ 모집합니다.
Open party recruitment window.
20130807 to 20130814
@@ -9676,7 +9676,7 @@ Recruit
MSG_PARTY_BOOKING_REQURT_TIP = 0x6e4,
/*20100420 to 20110718
검색중 -
-20110726 to 20180621
+20110726 to 20180704
검색 중 -
Searching -
20130807 to 20130814
@@ -9684,7 +9684,7 @@ Searching -
Open party recruitment window.
*/
MSG_PARTY_BOOKING_SEARCH = 0x6e5,
-/*20100420 to 20180621
+/*20100420 to 20180704
ëª¨ë‘ ì„ íƒ
Select All
20130807 to 20130814
@@ -9692,7 +9692,7 @@ Select All
Searching -
*/
MSG_PARTY_BOOKING_ALL_SELECT = 0x6e6,
-/*20100420 to 20180621
+/*20100420 to 20180704
최소한 í•˜ë‚˜ì˜ ì§ì—…ì´ ëª¨ì§‘ 중ì´ì–´ì•¼ 합니다.
Recruitment of at least one job must be running.
20130807 to 20130814
@@ -9700,7 +9700,7 @@ Recruitment of at least one job must be running.
Select All
*/
MSG_PARTY_BOOKING_ERR1 = 0x6e7,
-/*20100420 to 20180621
+/*20100420 to 20180704
최소 1ê°œì´ìƒì˜ ì§ì—…ì„ ì„ íƒí•´ 주셔야 합니다.
You have to select atleast 1 or more jobs.
20130807 to 20130814
@@ -9708,7 +9708,7 @@ You have to select atleast 1 or more jobs.
Recruitment of at least one job must be running.
*/
MSG_PARTY_BOOKING_ERR2 = 0x6e8,
-/*20100420 to 20180621
+/*20100420 to 20180704
ì„ íƒëœ ì§ì—…ì€ %d개입니다. 최대 6개까지만 ì§ì—…ì„ ì„ íƒí•  수 있습니다.
You have selected %d Jobs. You can only select up to 6 different jobs.
20130807 to 20130814
@@ -9716,7 +9716,7 @@ You have selected %d Jobs. You can only select up to 6 different jobs.
You have to select atleast 1 or more jobs.
*/
MSG_PARTY_BOOKING_ERR3 = 0x6e9,
-/*20100420 to 20180621
+/*20100420 to 20180704
ë ˆë²¨ì— ìˆ«ìž ì´ì™¸ì˜ 문ìžëŠ” 들어갈 수 없습니다.
Only numeric characters are allowed.
20130807 to 20130814
@@ -9724,7 +9724,7 @@ Only numeric characters are allowed.
You have selected %d Jobs. You can only select up to 6 different jobs.
*/
MSG_PARTY_BOOKING_ERR4 = 0x6ea,
-/*20100420 to 20180621
+/*20100420 to 20180704
ë ˆë²¨ì€ 1~150 사ì´ì˜ 숫ìžë¥¼ 입력해 주세요.
Please enter levels between 1~150.
20130807 to 20130814
@@ -9734,7 +9734,7 @@ Only numeric characters are allowed.
MSG_PARTY_BOOKING_ERR5 = 0x6eb,
#endif
#if PACKETVER >= 20100511
-/*20100511 to 20180621
+/*20100511 to 20180704
해당 맵ì—서는 ì˜ìƒ 장비가 ë³´ì´ì§€ 않습니다.
Nothing found in the selected map.
20130807 to 20130814
@@ -9744,7 +9744,7 @@ Please enter levels between 1~150.
MSG_DISABLE_COSTUMEITEM_MAP = 0x6ec,
#endif
#if PACKETVER >= 20100525
-/*20100525 to 20180621
+/*20100525 to 20180704
ì•„ì´í…œì„ ì°©ìš©í•  수 있는 ë ˆë²¨ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot equip this item with your current level.
20130807 to 20130814
@@ -9752,7 +9752,7 @@ You cannot equip this item with your current level.
Nothing found in the selected map.
*/
MSG_CANNOT_EQUIP_ITEM_LEVEL = 0x6ed,
-/*20100525 to 20180621
+/*20100525 to 20180704
ì•„ì´í…œì„ 사용할 수 있는 ë ˆë²¨ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot use this item with your current level.
20130807 to 20130814
@@ -9762,7 +9762,7 @@ You cannot equip this item with your current level.
MSG_CANNOT_USE_ITEM_LEVEL = 0x6ee,
#endif
#if PACKETVER >= 20100601
-/*20100601 to 20180621
+/*20100601 to 20180704
채팅모드 OnOff 활성화
Enable Battlemode
20130807 to 20130814
@@ -9770,7 +9770,7 @@ Enable Battlemode
You cannot use this item with your current level.
*/
MSG_CHATMODE_ONOFF = 0x6ef,
-/*20100601 to 20180621
+/*20100601 to 20180704
탭사ì´ì¦ˆ í¬ê¸°ê°€ 초과ë˜ì–´ 추가할 수 없습니다.
Failed to add because you have reached the limit.
20130807 to 20130814
@@ -9780,7 +9780,7 @@ Enable Battlemode
MSG_OVER_TABSIZE = 0x6f0,
/*20100601 to 20100601
창 표시 정보.
-20100608 to 20180621
+20100608 to 20180704
창 표시 정보
Window Sign Information
20130807 to 20130814
@@ -9790,7 +9790,7 @@ Failed to add because you have reached the limit.
MSG_SET_CHATINFO = 0x6f1,
#endif
#if PACKETVER >= 20100608
-/*20100608 to 20180621
+/*20100608 to 20180704
íŒë§¤
Sell
20130807 to 20130814
@@ -9798,7 +9798,7 @@ Sell
Window Sign Information
*/
MSG_SELL = 0x6f2,
-/*20100608 to 20180621
+/*20100608 to 20180704
구매
Purchase
20130807 to 20130814
@@ -9806,7 +9806,7 @@ Purchase
Sell
*/
MSG_BUY = 0x6f3,
-/*20100608 to 20180621
+/*20100608 to 20180704
ë…¸ì  ê²€ìƒ‰
Search for Vends
20130807 to 20130814
@@ -9814,7 +9814,7 @@ Search for Vends
Purchase
*/
MSG_SEARCH_STOREINFO = 0x6f4,
-/*20100608 to 20180621
+/*20100608 to 20180704
ë…¸ì  ì´ë¦„
Shop Name
20130807 to 20130814
@@ -9822,7 +9822,7 @@ Shop Name
Search for Vends
*/
MSG_STORE_NAME = 0x6f5,
-/*20100608 to 20180621
+/*20100608 to 20180704
수량
Quantity
20130807 to 20130814
@@ -9830,7 +9830,7 @@ Quantity
Shop Name
*/
MSG_SEARCH_ITEM_COUNT = 0x6f6,
-/*20100608 to 20180621
+/*20100608 to 20180704
가격
Cost
20130807 to 20130814
@@ -9838,7 +9838,7 @@ Cost
Quantity
*/
MSG_SEARCH_ITEM_PRICE = 0x6f7,
-/*20100608 to 20180621
+/*20100608 to 20180704
검색 결과가 너무 많습니다. 검색어를 ìžì„¸ížˆ ìž…ë ¥ í•´ 주세요.
Too much results have been found. Please do a more precisely search.
20130807 to 20130814
@@ -9846,7 +9846,7 @@ Too much results have been found. Please do a more precisely search.
Cost
*/
MSG_SSI_FAILED_OVER_MAXCOUNT = 0x6f8,
-/*20100608 to 20180621
+/*20100608 to 20180704
해당 ë…¸ì ì„ 여시겠습니까?
Do you want to open a street stall?
20130807 to 20130814
@@ -9854,7 +9854,7 @@ Do you want to open a street stall?
Too much results have been found. Please do a more precisely search.
*/
MSG_OPEN_SEARCH_STORE = 0x6f9,
-/*20100608 to 20180621
+/*20100608 to 20180704
SSO ì¸ì¦ì— 실패하였습니다.
Failed to recognize SSO.
20130807 to 20130814
@@ -9864,7 +9864,7 @@ Do you want to open a street stall?
MSG_SSO_FAILED = 0x6fa,
#endif
#if PACKETVER >= 20100615
-/*20100615 to 20180621
+/*20100615 to 20180704
현재 해당지역으로 ì´ë™ í•  수 없습니다
Cannot move to the applied area.
20130807 to 20130814
@@ -9874,7 +9874,7 @@ Failed to recognize SSO.
MSG_ZONE_MOVE_FAIL = 0x6fb,
/*20100615 to 20100622
í¬í•¨ 검색
-20100629 to 20180621
+20100629 to 20180704
단어가 í¬í•¨ëœ ì•„ì´í…œ 검색
searching item including the word
20130807 to 20130814
@@ -9882,7 +9882,7 @@ searching item including the word
Cannot move to the applied area.
*/
MSG_SEARCH_INCLUDED = 0x6fc,
-/*20100615 to 20180621
+/*20100615 to 20180704
탈퇴한 유저입니다.
User has been expelled.
20130807 to 20130814
@@ -9890,7 +9890,7 @@ User has been expelled.
searching item including the word
*/
MSG_WITHDREW_USERS = 0x6fd,
-/*20100615 to 20180621
+/*20100615 to 20180704
게임 ì´ìš©ì— ë™ì˜í•˜ì§€ 않았습니다.
You have not accepted the user agreements yet.
20130807 to 20130814
@@ -9898,7 +9898,7 @@ You have not accepted the user agreements yet.
User has been expelled.
*/
MSG_DIDNOT_AGREE = 0x6fe,
-/*20100615 to 20180621
+/*20100615 to 20180704
존재 하지 않는 계정입니다.
You will not be disconnect from the game.
20130807 to 20130814
@@ -9906,7 +9906,7 @@ You will not be disconnect from the game.
You have not accepted the user agreements yet.
*/
MSG_ACCOUNT_DOESNOT_EXIST = 0x6ff,
-/*20100615 to 20180621
+/*20100615 to 20180704
본 ê²Œìž„ì€ 12세 ì´ìš©ê°€ìž…니다.
It is available only for 12 hours.
20130807 to 20130814
@@ -9916,7 +9916,7 @@ You will not be disconnect from the game.
MSG_AGE_RESTRICTIONS = 0x700,
#endif
#if PACKETVER >= 20100616
-/*20100616 to 20180621
+/*20100616 to 20180704
계정ë„ìš© 조사를 위한 블럭ìƒíƒœìž…니다.
Your account is blocked due to illegal use of the game account.
20130807 to 20130814
@@ -9924,7 +9924,7 @@ Your account is blocked due to illegal use of the game account.
It is available only for 12 hours.
*/
MSG_ACCOUNT_BLOCK = 0x701,
-/*20100616 to 20180621
+/*20100616 to 20180704
버그조사를 위한 블럭ìƒíƒœìž…니다.
Your account is blocked because there may exist a bug with your account.
20130807 to 20130814
@@ -9934,7 +9934,7 @@ Your account is blocked due to illegal use of the game account.
MSG_BUG_BLOCK = 0x702,
#endif
#if PACKETVER >= 20100622
-/*20100622 to 20180621
+/*20100622 to 20180704
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Base, Job 경험치가 30분간 75% ì¦ê°€í•©ë‹ˆë‹¤.
Increases base exp and job exp gained by killing monsters up to 75% for 30 minutes.
20130807 to 20130814
@@ -9942,7 +9942,7 @@ Increases base exp and job exp gained by killing monsters up to 75% for 30 minut
Your account is blocked because there may exist a bug with your account.
*/
MSG_PLUSEXP75 = 0x703,
-/*20100622 to 20180621
+/*20100622 to 20180704
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Base, Job 경험치가 30분간 50% ì¦ê°€í•©ë‹ˆë‹¤.
Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
20130807 to 20130814
@@ -9952,7 +9952,7 @@ Increases base exp and job exp gained by killing monsters up to 75% for 30 minut
MSG_PLUSEXP50 = 0x704,
/*20100622 to 20100622
ìƒì  ì •ë³´ê°€ 정확하지 ì•Šì•„ ìƒì ì„ ì—´ 수 없습니다.
-20100629 to 20180621
+20100629 to 20180704
íŒë§¤(구매) ì •ë³´ê°€ 없습니다.
No sales information.
20130807 to 20130814
@@ -9960,7 +9960,7 @@ No sales information.
Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
*/
MSG_FAIL_OPEN_STORE = 0x705,
-/*20100622 to 20180621
+/*20100622 to 20180704
ë” ì´ìƒ 검색 í•  수 없습니다.
Failed to search any further.
20130807 to 20130814
@@ -9970,7 +9970,7 @@ No sales information.
MSG_SSI_FAILED_SEARCH_CNT = 0x706,
/*20100622 to 20100622
ê²€ìƒ‰ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
-20100629 to 20180621
+20100629 to 20180704
해당 ì•„ì´í…œ ëª…ì€ ì¡´ìž¬í•˜ì§€ 않습니다.
The item you have entered does not exist.
20130807 to 20130814
@@ -9978,7 +9978,7 @@ The item you have entered does not exist.
Failed to search any further.
*/
MSG_SSI_FAILED_ITEM_DOES_NOT_EXIST = 0x707,
-/*20100622 to 20180621
+/*20100622 to 20180704
ì•„ì§ ê²€ìƒ‰ í•  수 없습니다.
Cannot search yet.
20130807 to 20130814
@@ -9990,7 +9990,7 @@ The item you have entered does not exist.
#if PACKETVER >= 20100629
/*20100629 to 20100707
ì¹´ë“œ ì´ë¦„, ì ‘ë‘사, 접미사
-20100713 to 20180621
+20100713 to 20180704
ì¹´ë“œ ì´ë¦„ ë˜ëŠ” ì ‘ë‘사(접미사)를 입력하세요
Enter the card name or prefix/suffix.
20130807 to 20130814
@@ -9998,7 +9998,7 @@ Enter the card name or prefix/suffix.
Cannot search yet.
*/
MSG_SSI_TOOLTIP_OF_SERACHING_THE_CARD = 0x709,
-/*20100629 to 20180621
+/*20100629 to 20180704
ë‚¨ì€ ê²€ìƒ‰ 횟수 : %d
Searches left: %d
20130807 to 20130814
@@ -10006,7 +10006,7 @@ Searches left: %d
Enter the card name or prefix/suffix.
*/
MSG_SSI_REST_OF_NUMBER_OF_SEARCHES = 0x70a,
-/*20100629 to 20180621
+/*20100629 to 20180704
검색 ëœ ë…¸ì ì´ 없습니다.
No result has been found.
20130807 to 20130814
@@ -10014,7 +10014,7 @@ No result has been found.
Searches left: %d
*/
MSG_SSI_FAILED_SEARCH_STORE = 0x70b,
-/*20100629 to 20180621
+/*20100629 to 20180704
ì•„ì´í…œ 가격 범위가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤.
The item price is too high.
20130807 to 20130814
@@ -10022,7 +10022,7 @@ The item price is too high.
No result has been found.
*/
MSG_SSI_FAILED_PRICE_ISNOT_VALID = 0x70c,
-/*20100629 to 20180621
+/*20100629 to 20180704
ì¼ë°˜ 장비
Normal Gear
20130807 to 20130814
@@ -10030,7 +10030,7 @@ Normal Gear
The item price is too high.
*/
MSG_GENERAL_EQUIPMENT = 0x70d,
-/*20100629 to 20180621
+/*20100629 to 20180704
ì˜ìƒ 장비
Costume
20130807 to 20130814
@@ -10040,7 +10040,7 @@ Normal Gear
MSG_COSTUME_EQUIPMENT = 0x70e,
#endif
#if PACKETVER >= 20100713
-/*20100713 to 20180621
+/*20100713 to 20180704
분
minute
20130807 to 20130814
@@ -10048,7 +10048,7 @@ minute
Costume
*/
MSG_MINUTE = 0x70f,
-/*20100713 to 20180621
+/*20100713 to 20180704
ì´ˆ
second
20130807 to 20130814
@@ -10056,7 +10056,7 @@ second
minute
*/
MSG_SECOND = 0x710,
-/*20100713 to 20180621
+/*20100713 to 20180704
ì•„ì´í…œ ëª…ì„ ìž…ë ¥í•´ 주세요.
Please enter the name of the item.
20130807 to 20130814
@@ -10064,7 +10064,7 @@ Please enter the name of the item.
second
*/
MSG_SSI_FAILED_ENTER_THE_NAME_OF_ITEM = 0x711,
-/*20100713 to 20180621
+/*20100713 to 20180704
해당 ì•„ì´í…œ ëª…ì€ ì¡´ìž¬í•˜ì§€ 않습니다.
The item you have entered does not exist.
20130807 to 20130814
@@ -10074,7 +10074,7 @@ Please enter the name of the item.
MSG_SSI_FAILED_NAME_OF_ITEM_DOES_NOT_EXIST = 0x712,
#endif
#if PACKETVER >= 20100720
-/*20100720 to 20180621
+/*20100720 to 20180704
진입가능한 ë§µì´ ì¡´ìž¬í•˜ì§€ 않습니다.
The map is not available.
20130807 to 20130814
@@ -10082,7 +10082,7 @@ The map is not available.
The item you have entered does not exist.
*/
MSG_NOT_EXIST_ENTRYMAP = 0x713,
-/*20100720 to 20180621
+/*20100720 to 20180704
해당 ì¹´ë“œ ì´ë¦„ì´ë‚˜ ì ‘ë‘사(접미사)는 존재하지 않습니다.
The selected name or prefix/suffix does not exist.
20130807 to 20130814
@@ -10092,7 +10092,7 @@ The map is not available.
MSG_SSI_FAILED_NAME_OF_CARD_DOES_NOT_EXIST = 0x714,
#endif
#if PACKETVER >= 20100727
-/*20100727 to 20180621
+/*20100727 to 20180704
í•œë²ˆì— êµ¬ë§¤ 가능 종류는 10개입니다.
You can purchase up to 10 items.
20130807 to 20130814
@@ -10100,7 +10100,7 @@ You can purchase up to 10 items.
The selected name or prefix/suffix does not exist.
*/
MSG_CASH_FAILED_TOTAL_CNT = 0x715,
-/*20100727 to 20180621
+/*20100727 to 20180704
ì¼ë¶€ ì•„ì´í…œì˜ 구매가 실패하였습니다.
Some items could not be purchased.
20130807 to 20130814
@@ -10110,7 +10110,7 @@ You can purchase up to 10 items.
MSG_CASH_FAILED_BUY_SOME = 0x716,
#endif
#if PACKETVER >= 20100730
-/*20100730 to 20180621
+/*20100730 to 20180704
ìƒë…„ì›”ì¼ 6ìžë¦¬ë¥¼ 입력하세요.(예시:801122)
Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
20130807 to 20130814
@@ -10118,7 +10118,7 @@ Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
Some items could not be purchased.
*/
MSG_ENTER_PEOPLE_BIRTH = 0x717,
-/*20100730 to 20180621
+/*20100730 to 20180704
ì•Œ 수 없는 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.
Now Logging Out.
20130807 to 20130814
@@ -10126,7 +10126,7 @@ Now Logging Out.
Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
*/
MSG_RESULT_FAIL_UNKNOWN = 0x718,
-/*20100730 to 20180621
+/*20100730 to 20180704
ë°ì´íƒ€ ë² ì´ìŠ¤ 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.
A database error has occurred.
20130807 to 20130814
@@ -10134,7 +10134,7 @@ A database error has occurred.
Now Logging Out.
*/
MSG_RESULT_FAIL_DATABASE = 0x719,
-/*20100730 to 20180621
+/*20100730 to 20180704
ìºë¦­í„°ë¥¼ 삭제하기 위해서는 길드ì—ì„œ 탈퇴 해야 합니다.
Please leave your guild first in order to remove your character.
20130807 to 20130814
@@ -10142,7 +10142,7 @@ Please leave your guild first in order to remove your character.
A database error has occurred.
*/
MSG_RESULT_FAIL_GUILD = 0x71a,
-/*20100730 to 20180621
+/*20100730 to 20180704
ìºë¦­í„°ë¥¼ 삭제하기 위해서는 파티ì—ì„œ 탈퇴 해야 합니다.
Please leave your party first in order to remove your character.
20130807 to 20130814
@@ -10150,7 +10150,7 @@ Please leave your party first in order to remove your character.
Please leave your guild first in order to remove your character.
*/
MSG_RESULT_FAIL_PARTY = 0x71b,
-/*20100730 to 20180621
+/*20100730 to 20180704
시스템 설정으로 ì¸í•´ 삭제할 수 없습니다.
You cannot delete this character because the delete time has not expired yet.
20130807 to 20130814
@@ -10158,7 +10158,7 @@ You cannot delete this character because the delete time has not expired yet.
Please leave your party first in order to remove your character.
*/
MSG_RESULT_FAIL_CONFIGURATION = 0x71c,
-/*20100730 to 20180621
+/*20100730 to 20180704
ì•„ì§ ì‚­ì œ 가능 ì‹œê°„ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot delete this character at the moment.
20130807 to 20130814
@@ -10166,7 +10166,7 @@ You cannot delete this character at the moment.
You cannot delete this character because the delete time has not expired yet.
*/
MSG_RESULT_FAIL_DATE = 0x71d,
-/*20100730 to 20180621
+/*20100730 to 20180704
ìƒë…„ì›”ì¼ì´ ì¼ì¹˜í•˜ì§€ 않습니다.
Your entered birthday does not match.
20130807 to 20130814
@@ -10174,7 +10174,7 @@ Your entered birthday does not match.
You cannot delete this character at the moment.
*/
MSG_RESULT_FAIL_BIRTH = 0x71e,
-/*20100730 to 20180621
+/*20100730 to 20180704
친밀ë„ê°€ 부족합니다.
You lack of familiarity.
20130807 to 20130814
@@ -10182,7 +10182,7 @@ You lack of familiarity.
Your entered birthday does not match.
*/
MSG_USESKILL_FAIL_RELATIONGRADE = 0x71f,
-/*20100730 to 20180621
+/*20100730 to 20180704
스타ì¼ì²´ì¸ì§€ 파ì´í„° ìƒíƒœì—서만 사용가능합니다.
This is only available on style change for fighting classes.
20130807 to 20130814
@@ -10190,7 +10190,7 @@ This is only available on style change for fighting classes.
You lack of familiarity.
*/
MSG_USESKILL_FAIL_STYLE_CHANGE_FIGHTER = 0x720,
-/*20100730 to 20180621
+/*20100730 to 20180704
스타ì¼ì²´ì¸ì§€ 그래플러 ìƒíƒœì—서만 사용가능합니다.
This is only available on style change for novice.
20130807 to 20130814
@@ -10200,7 +10200,7 @@ This is only available on style change for fighting classes.
MSG_USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 0x721,
#endif
#if PACKETVER >= 20100817
-/*20100817 to 20180621
+/*20100817 to 20180704
파티등ë¡ì‹¤íŒ¨
Party Registration failed.
20130807 to 20130814
@@ -10208,7 +10208,7 @@ Party Registration failed.
This is only available on style change for novice.
*/
MSG_PARTY_REGISTRATION_FAILED = 0x722,
-/*20100817 to 20180621
+/*20100817 to 20180704
ê²€ìƒ‰ëœ ì¡°ê±´ì˜ ë¦¬ìŠ¤íŠ¸ê°€ 없습니다.
results have been found.
20130807 to 20130814
@@ -10216,7 +10216,7 @@ results have been found.
Party Registration failed.
*/
MSG_PARTY_SEARCH_FAILED = 0x723,
-/*20100817 to 20180621
+/*20100817 to 20180704
ê´‘ê³ ì‚­ì œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to remove result.
20130807 to 20130814
@@ -10224,7 +10224,7 @@ Failed to remove result.
results have been found.
*/
MSG_PARTY_AD_DELETE_FAILED = 0x724,
-/*20100817 to 20180621
+/*20100817 to 20180704
ì¡°ê±´ì— ë§žëŠ” ê´‘ê³ ê°€ 없어 실패했습니다.
No results have been found.
20130807 to 20130814
@@ -10234,7 +10234,7 @@ Failed to remove result.
MSG_PARTY_NOT_EXIST_AD = 0x725,
#endif
#if PACKETVER >= 20100824
-/*20100824 to 20180621
+/*20100824 to 20180704
결제 정보가 없습니다.
No payment information has been found.
20130807 to 20130814
@@ -10242,7 +10242,7 @@ No payment information has been found.
No results have been found.
*/
MSG_REFUSE_SSO_NOT_PAY_USER = 0x726,
-/*20100824 to 20180621
+/*20100824 to 20180704
êµí™˜ ì‹œ 스í¬ë¦°ìƒ· ì°ê¸°
Screenshot Trade
20130807 to 20130814
@@ -10250,7 +10250,7 @@ Screenshot Trade
No payment information has been found.
*/
MSG_SCREENSHOT_FOR_EXCHANGE = 0x727,
-/*20100824 to 20180621
+/*20100824 to 20180704
[거래_%s]
[Trade_%s]
20130807 to 20130814
@@ -10265,12 +10265,12 @@ Screenshot Trade
20130807 to 20130814
[거래_%s]
[Trade_%s]
-20180207 to 20180621
+20180207 to 20180704
ì‚¬ë§ ì‹œ 소지한 ì•„ì´í…œìœ¼ë¡œ 경험치 ì†ì‹¤ì„ 막았습니다.
Death due to the auto insurance young people are spending.
*/
MSG_NOTIFY_NEO_INSURANCE_ITEM_USE = 0x729,
-/*20100914 to 20180621
+/*20100914 to 20180704
대화
Chat Dialog
20130807 to 20130814
@@ -10279,7 +10279,7 @@ Chat Dialog
MSG_TALK = 0x72a,
#endif
#if PACKETVER >= 20101019
-/*20101019 to 20180621
+/*20101019 to 20180704
ì¤‘ë³µì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Redundant is not available.
20130807 to 20130814
@@ -10287,7 +10287,7 @@ Redundant is not available.
Chat Dialog
*/
MSG_MACRO_DUPLICATE = 0x72b,
-/*20101019 to 20180621
+/*20101019 to 20180704
ì‚¬ìš©ì œí•œì´ ê±¸ë ¤ìžˆìŠµë‹ˆë‹¤.
Use the limit that has been set.
20130807 to 20130814
@@ -10295,7 +10295,7 @@ Use the limit that has been set.
Redundant is not available.
*/
MSG_MACRO_POSTDELAY = 0x72c,
-/*20101019 to 20180621
+/*20101019 to 20180704
현재 ì‚¬ìš©ì œí•œì´ ê±¸ë ¤ 있지 않습니다.
No user restrictions are set.
20130807 to 20130814
@@ -10303,7 +10303,7 @@ No user restrictions are set.
Use the limit that has been set.
*/
MSG_MACRO_NOT_POSTDELAY = 0x72d,
-/*20101019 to 20180621
+/*20101019 to 20180704
예기치 못한 사유로 ì¸í•´ ì ‘ì†ì´ 실패하였습니다. 관리ìžì—게 문ì˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Connection has failed. Please contact your administrator.
20130807 to 20130814
@@ -10311,7 +10311,7 @@ Connection has failed. Please contact your administrator.
No user restrictions are set.
*/
MSG_SSO_ERROR_MSG = 0x72e,
-/*20101019 to 20180621
+/*20101019 to 20180704
ì ‘ì† ì •ë³´ ì¸ì¦ 실패하였습니다.
Failed to authenticate.
20130807 to 20130814
@@ -10319,7 +10319,7 @@ Failed to authenticate.
Connection has failed. Please contact your administrator.
*/
MSG_REFUSE_SSO_AUTH_INVALID_TOKEN = 0x72f,
-/*20101019 to 20180621
+/*20101019 to 20180704
가입하지 ì•Šì€ ì‚¬ìš©ìžìž…니다.
User is offline.
20130807 to 20130814
@@ -10327,7 +10327,7 @@ User is offline.
Failed to authenticate.
*/
MSG_REFUSE_SSO_AUTH_INVALID_USER = 0x730,
-/*20101019 to 20180621
+/*20101019 to 20180704
나ì´ì œí•œ ë•Œë¬¸ì— ì´ê³„정으로 ì´ì„œë²„ì— ì ‘ì†í•  수 없습니다.
The age limit from commandment tables cannot connect to this server.
20130807 to 20130814
@@ -10335,7 +10335,7 @@ The age limit from commandment tables cannot connect to this server.
User is offline.
*/
MSG_REFUSE_SSO_AUTH_INVALID_AGE = 0x731,
-/*20101019 to 20180621
+/*20101019 to 20180704
구매하기
Buy
20130807 to 20130814
@@ -10343,7 +10343,7 @@ Buy
The age limit from commandment tables cannot connect to this server.
*/
MSG_NC_BUY = 0x732,
-/*20101019 to 20180621
+/*20101019 to 20180704
장바구니 비우기
Cancel.
20130807 to 20130814
@@ -10351,7 +10351,7 @@ Cancel.
Buy
*/
MSG_NC_BLANK = 0x733,
-/*20101019 to 20180621
+/*20101019 to 20180704
첫 페ì´ì§€
First page
20130807 to 20130814
@@ -10359,7 +10359,7 @@ First page
Cancel.
*/
MSG_NC_FIRSTPAGE = 0x734,
-/*20101019 to 20180621
+/*20101019 to 20180704
마지막 페ì´ì§€
Last page
20130807 to 20130814
@@ -10367,7 +10367,7 @@ Last page
First page
*/
MSG_NC_LASTPAGE = 0x735,
-/*20101019 to 20180621
+/*20101019 to 20180704
신규
New
20130807 to 20130814
@@ -10375,7 +10375,7 @@ New
Last page
*/
MSG_NC_CAT1 = 0x736,
-/*20101019 to 20180621
+/*20101019 to 20180704
ì¸ê¸°
Headgears
20130807 to 20130814
@@ -10383,7 +10383,7 @@ Headgears
New
*/
MSG_NC_CAT2 = 0x737,
-/*20101019 to 20180621
+/*20101019 to 20180704
한정
Limited
20130807 to 20130814
@@ -10391,7 +10391,7 @@ Limited
Headgears
*/
MSG_NC_CAT3 = 0x738,
-/*20101019 to 20180621
+/*20101019 to 20180704
임대장비
Rental Items
20130807 to 20130814
@@ -10399,7 +10399,7 @@ Rental Items
Limited
*/
MSG_NC_CAT4 = 0x739,
-/*20101019 to 20180621
+/*20101019 to 20180704
ì˜êµ¬ìž¥ë¹„
Equipments
20130807 to 20130814
@@ -10407,7 +10407,7 @@ Equipments
Rental Items
*/
MSG_NC_CAT5 = 0x73a,
-/*20101019 to 20180621
+/*20101019 to 20180704
버프
Scrolls
20130807 to 20130814
@@ -10415,7 +10415,7 @@ Scrolls
Equipments
*/
MSG_NC_CAT6 = 0x73b,
-/*20101019 to 20180621
+/*20101019 to 20180704
회복
Consumables
20130807 to 20130814
@@ -10423,7 +10423,7 @@ Consumables
Scrolls
*/
MSG_NC_CAT7 = 0x73c,
-/*20101019 to 20180621
+/*20101019 to 20180704
기타
Other
20130807 to 20130814
@@ -10431,7 +10431,7 @@ Other
Consumables
*/
MSG_NC_CAT8 = 0x73d,
-/*20101019 to 20180621
+/*20101019 to 20180704
가격
Cost
20130807 to 20130814
@@ -10439,7 +10439,7 @@ Cost
Other
*/
MSG_NC_COST = 0x73e,
-/*20101019 to 20180621
+/*20101019 to 20180704
수량
Quantity
20130807 to 20130814
@@ -10447,7 +10447,7 @@ Quantity
Cost
*/
MSG_NC_NUM = 0x73f,
-/*20101019 to 20180621
+/*20101019 to 20180704
개
Total
20130807 to 20130814
@@ -10455,7 +10455,7 @@ Total
Quantity
*/
MSG_NC_COUNT = 0x740,
-/*20101019 to 20180621
+/*20101019 to 20180704
무료 ìºì‹œ : %s C
Free Cash: %s C
20130807 to 20130814
@@ -10463,7 +10463,7 @@ Free Cash: %s C
Total
*/
MSG_NC_FREECASH = 0x741,
-/*20101019 to 20180621
+/*20101019 to 20180704
소지 ìºì‹œ : %s C
CashPoints: %s C
20130807 to 20130814
@@ -10471,7 +10471,7 @@ CashPoints: %s C
Free Cash: %s C
*/
MSG_NC_CASH = 0x742,
-/*20101019 to 20180621
+/*20101019 to 20180704
ì´ ì§€ì—­ì—서는 몬스터 ì†Œí™˜ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
You cannot summon a monster in this area.
20130807 to 20130814
@@ -10481,7 +10481,7 @@ CashPoints: %s C
MSG_CALLMONSTER_FAIL_AREA = 0x743,
#endif
#if PACKETVER >= 20101109
-/*20101109 to 20180621
+/*20101109 to 20180704
무료ìºì‹œ ì‚¬ìš©ëŸ‰ì´ ì „ì²´ ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ê³ ìžˆìŠµë‹ˆë‹¤
Exceeded total free cash
20130807 to 20130814
@@ -10489,7 +10489,7 @@ Exceeded total free cash
You cannot summon a monster in this area.
*/
MSG_BUY_CASH_FAIL2 = 0x744,
-/*20101109 to 20180621
+/*20101109 to 20180704
설정한 ë‚´ìš©ì´ [SaveData_ExMacro%d]ì— ì €ìž¥ë©ë‹ˆë‹¤.
%d seconds left until you can use
20130807 to 20130814
@@ -10499,7 +10499,7 @@ Exceeded total free cash
MSG_MACRO_SAVE_DATA = 0x745,
#endif
#if PACKETVER >= 20101123
-/*20101123 to 20180621
+/*20101123 to 20180704
약 %d ì´ˆ í›„ì— ì‚¬ìš©í•  수 있습니다
Content has been saved in [SaveData_ExMacro%d]
20130807 to 20130814
@@ -10509,7 +10509,7 @@ Content has been saved in [SaveData_ExMacro%d]
MSG_ITEM_REUSE_LIMIT_SECOND = 0x746,
#endif
#if PACKETVER >= 20101207
-/*20101207 to 20180621
+/*20101207 to 20180704
[ì°½]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
~ [Windows] must be equipped with.
20130807 to 20130814
@@ -10519,7 +10519,7 @@ Content has been saved in [SaveData_ExMacro%d]
MSG_FAIL_NEED_EQUIPPED_SPEAR = 0x747,
#endif
#if PACKETVER >= 20101214
-/*20101214 to 20180621
+/*20101214 to 20180704
드래곤 탑승시ì—만 사용가능합니다.
Available only on the dragon.
20130807 to 20130814
@@ -10527,7 +10527,7 @@ Available only on the dragon.
~ [Windows] must be equipped with.
*/
MSG_USESKILL_FAIL_DRAGON = 0x748,
-/*20101214 to 20180621
+/*20101214 to 20180704
본 ì„œë²„ì— ì ‘ì†í•  수 있는 ì •ì›ì´ 초과ë˜ì–´ ì§„ìž…ì´ ë¶ˆê°€ëŠ¥ 합니다.
Unable to proceed due to exceeding capacity.
20130807 to 20130814
@@ -10537,7 +10537,7 @@ Available only on the dragon.
MSG_OVER_CONNECT_USER = 0x749,
#endif
#if PACKETVER >= 20101228
-/*20101228 to 20180621
+/*20101228 to 20180704
실명 ì¸ì¦ì´ ë˜ì§€ 않았습니다. 실명ì¸ì¦ 사ì´íŠ¸ë¡œ ì´ë™í•©ë‹ˆë‹¤
Real name has not been verified. Go to name verification site.
20130807 to 20130814
@@ -10547,7 +10547,7 @@ Unable to proceed due to exceeding capacity.
MSG_AUTHENTICATE = 0x74a,
#endif
#if PACKETVER >= 20110104
-/*20110104 to 20180621
+/*20110104 to 20180704
저장 í•  ìŠ¬ë¡¯ì„ ì„ íƒ í•´ 주세요
Please select slot you are going to save.
20130807 to 20130814
@@ -10557,7 +10557,7 @@ Real name has not been verified. Go to name verification site.
MSG_SELECT_SAVESLOT = 0x74b,
#endif
#if PACKETVER >= 20110111
-/*20110111 to 20180621
+/*20110111 to 20180704
%s, 축하드립니다. '%s' 를 얻으셨습니다!
Congratulation %s, Acquired '%s' !
20130807 to 20130814
@@ -10567,7 +10567,7 @@ Please select slot you are going to save.
MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN2 = 0x74c,
#endif
#if PACKETVER >= 20110118
-/*20110118 to 20180621
+/*20110118 to 20180704
그루미ìƒíƒœì—서는 사용할 수 없습니다
Unable to use in gloomy state
20130807 to 20130814
@@ -10577,7 +10577,7 @@ Congratulation %s, Acquired '%s' !
MSG_NOTUSE_GROOMY = 0x74d,
#endif
#if PACKETVER >= 20110210
-/*20110210 to 20180621
+/*20110210 to 20180704
êµ¬ë§¤ë¬¼í’ˆì˜ í•©ê³„ê¸ˆì•¡ì´ ì¼€ë¦­í„°ê°€ 소지할 수 있는 최대 ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤
Purchased products has exceeded the total price.
20130807 to 20130814
@@ -10587,7 +10587,7 @@ Unable to use in gloomy state
MSG_BUYINGSTORE_OVERFLOW_MONEY = 0x74e,
#endif
#if PACKETVER >= 20110215
-/*20110215 to 20180621
+/*20110215 to 20180704
현재 맵ì—서는 파티 ê°€ìž…ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Cannot join a party in this map.
20130807 to 20130814
@@ -10595,7 +10595,7 @@ Cannot join a party in this map.
Purchased products has exceeded the total price.
*/
MSG_PREVENT_PARTY_JOIN = 0x74f,
-/*20110215 to 20180621
+/*20110215 to 20180704
현재 맵ì—서는 파티 탈퇴가 불가능합니다.
Cannot leave a party in this map.
20130807 to 20130814
@@ -10603,7 +10603,7 @@ Cannot leave a party in this map.
Cannot join a party in this map.
*/
MSG_PREVENT_PARTY_LEAVE = 0x750,
-/*20110215 to 20180621
+/*20110215 to 20180704
현재 맵ì—서는 파티 ì¶”ë°©ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Cannot withdraw/break the party in this map.
20130807 to 20130814
@@ -10611,7 +10611,7 @@ Cannot withdraw/break the party in this map.
Cannot leave a party in this map.
*/
MSG_PREVENT_PARTY_EXPEL = 0x751,
-/*20110215 to 20180621
+/*20110215 to 20180704
실제 성명
Real Name
20130807 to 20130814
@@ -10619,7 +10619,7 @@ Real Name
Cannot withdraw/break the party in this map.
*/
MSG_SDO_REALNAME = 0x752,
-/*20110215 to 20180621
+/*20110215 to 20180704
ì‹ ë¶„ì¦ ë²ˆí˜¸
ID Number
20130807 to 20130814
@@ -10627,7 +10627,7 @@ ID Number
Real Name
*/
MSG_SDO_ID_NUMBER = 0x753,
-/*20110215 to 20180621
+/*20110215 to 20180704
ì´ë©”ì¼
E-mail
20130807 to 20130814
@@ -10635,7 +10635,7 @@ E-mail
ID Number
*/
MSG_SDO_EMAIL = 0x754,
-/*20110215 to 20180621
+/*20110215 to 20180704
ìž…ë ¥ì´ ì˜¬ë°”ë¥´ì§€ 않습니다
Invalid input
20130807 to 20130814
@@ -10647,7 +10647,7 @@ E-mail
#if PACKETVER >= 20110222
/*20110222 to 20130508
ìƒëŒ€ë°©ì—게 제니 ì§€ê¸‰ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20130515 to 20180621
+20130515 to 20180704
ìƒëŒ€ ìºë¦­í„°ê°€ 최대 ë³´ìœ ì œë‹ˆëŸ‰ì„ ì´ˆê³¼í•˜ì—¬ 거래가 불가능합니다.
Failed to send the zeny
20130807 to 20130814
@@ -10655,7 +10655,7 @@ Failed to send the zeny
Invalid input
*/
MSG_MCSTORE_FAIL_SELLER_MONEY_GIVE = 0x756,
-/*20110222 to 20180621
+/*20110222 to 20180704
해당 ì§ì—…ì´ ì•„ë‹™ë‹ˆë‹¤.
This is not a relevant job
20130807 to 20130814
@@ -10663,7 +10663,7 @@ This is not a relevant job
Failed to send the zeny
*/
MSG_INVALID_CLASS = 0x757,
-/*20110222 to 20180621
+/*20110222 to 20180704
해당 ì„±ë³„ì´ ì•„ë‹™ë‹ˆë‹¤.
This is not a relevant gender
20130807 to 20130814
@@ -10671,7 +10671,7 @@ This is not a relevant gender
This is not a relevant job
*/
MSG_INVALID_GENDER = 0x758,
-/*20110222 to 20180621
+/*20110222 to 20180704
ìœ ì €ë‹˜ì˜ ì •ë³´ê°€ ì¸ì¦ì— 성공했습니다.
User information identification was successful.
20130807 to 20130814
@@ -10679,7 +10679,7 @@ User information identification was successful.
This is not a relevant gender
*/
MSG_SUCCESS_AUTHENTICATE = 0x759,
-/*20110222 to 20180621
+/*20110222 to 20180704
ì´ë¦„ì´ ì¼ì¹˜í•˜ì§€ 않습니다. 재작성 해주세요.
Name does not match. Please retry.
20130807 to 20130814
@@ -10687,7 +10687,7 @@ Name does not match. Please retry.
User information identification was successful.
*/
MSG_INVALID_REALNAME = 0x75a,
-/*20110222 to 20180621
+/*20110222 to 20180704
ì‹ ë¶„ì¦ ë²ˆí˜¸ê°€ ì¼ì¹˜í•˜ì§€ 않습니다. 재작성 해주세요.
ID number does not match. Please retry.
20130807 to 20130814
@@ -10695,7 +10695,7 @@ ID number does not match. Please retry.
Name does not match. Please retry.
*/
MSG_INVALID_IDNUMBER = 0x75b,
-/*20110222 to 20180621
+/*20110222 to 20180704
현재 ì„œë¹„ìŠ¤ì— ì´ìƒì´ 있으니 ìž ì‹œ 후 ìž¬ì‹œë„ í•´ì£¼ì„¸ìš”.
Service is currently unavailable. Please try again later.
20130807 to 20130814
@@ -10705,7 +10705,7 @@ ID number does not match. Please retry.
MSG_INVALID_AUTHENTICATE = 0x75c,
#endif
#if PACKETVER >= 20110224
-/*20110224 to 20180621
+/*20110224 to 20180704
탑승 ìƒíƒœì—서는 ê³µê²©ì„ í•  수 없습니다.
Unable to attack while riding.
20130807 to 20130814
@@ -10713,7 +10713,7 @@ Unable to attack while riding.
Service is currently unavailable. Please try again later.
*/
MSG_CANNOT_ATTACK_IN_RIDING_STATE = 0x75d,
-/*20110224 to 20180621
+/*20110224 to 20180704
탑승 ìƒíƒœì—서는 스킬 ì‹œì „ì„ í•  수 없습니다.
Unable to cast the skill while riding.
20130807 to 20130814
@@ -10725,7 +10725,7 @@ Unable to attack while riding.
#if PACKETVER >= 20110228
/*20110228 to 20110228
비밀번호는 4ìžë¦¬ ì´ìƒ 6ìžë¦¬ì´í•˜ì—¬ì•¼ë§Œ 합니다.
-20110308 to 20180621
+20110308 to 20180704
비밀번호는 4ìžë¦¬ì´í•˜ì—¬ì•¼ë§Œ 합니다.
Pin number should be 4~6 characters.
20130807 to 20130814
@@ -10735,7 +10735,7 @@ Unable to cast the skill while riding.
MSG_STORE_PASSWORD_4_6 = 0x75f,
/*20110228 to 20110228
로그ì¸ì— 성공했습니다.
-20110308 to 20180621
+20110308 to 20180704
보안 ì¸ì¦ì— 성공했습니다.
Secured authentication is successful.
20130807 to 20130814
@@ -10745,7 +10745,7 @@ Pin number should be 4~6 characters.
MSG_SECOND_PASSWORD_LOGIN_SUCCESS = 0x760,
/*20110228 to 20110228
세컨드 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 성공했습니다.
-20110308 to 20180621
+20110308 to 20180704
보안 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 성공했습니다.
Succeeded in creating 2nd password.
20130807 to 20130814
@@ -10755,7 +10755,7 @@ Secured authentication is successful.
MSG_SECOND_PASSWORD_MAKE_SUCCESS = 0x761,
/*20110228 to 20110228
세컨드 패스워드를 삭제했습니다.
-20110308 to 20180621
+20110308 to 20180704
보안 패스워드를 삭제했습니다.
2nd password has been deleted.
20130807 to 20130814
@@ -10765,7 +10765,7 @@ Succeeded in creating 2nd password.
MSG_SECOND_PASSWORD_DEL_SUCCESS = 0x762,
/*20110228 to 20110228
세컨드 패스워드를 수정했습니다.
-20110308 to 20180621
+20110308 to 20180704
보안 패스워드를 수정했습니다.
2nd password has been corrected.
20130807 to 20130814
@@ -10775,7 +10775,7 @@ Succeeded in creating 2nd password.
MSG_SECOND_PASSWORD_EDIT_SUCCESS = 0x763,
/*20110228 to 20110228
로그ì¸ì— 실패했습니다.
-20110308 to 20180621
+20110308 to 20180704
ìž˜ëª»ëœ íŒ¨ìŠ¤ì›Œë“œìž…ë‹ˆë‹¤.(%d회남ìŒ)
Password is incorrect.
20130807 to 20130814
@@ -10785,7 +10785,7 @@ Password is incorrect.
MSG_SECOND_PASSWORD_LOGIN_FAILED = 0x764,
/*20110228 to 20110228
세컨드 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 실패했습니다.
-20110308 to 20180621
+20110308 to 20180704
보안 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 실패했습니다.
Failed to create 2nd password.
20130807 to 20130814
@@ -10795,7 +10795,7 @@ Password is incorrect.
MSG_SECOND_PASSWORD_MAKE_FAILED = 0x765,
/*20110228 to 20110228
세컨드 패스워드 ì‚­ì œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20110308 to 20180621
+20110308 to 20180704
보안 패스워드 ì‚­ì œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to delete 2nd password.
20130807 to 20130814
@@ -10805,7 +10805,7 @@ Failed to create 2nd password.
MSG_SECOND_PASSWORD_DEL_FAILED = 0x766,
/*20110228 to 20110228
세컨드 íŒ¨ìŠ¤ì›Œë“œì˜ ìˆ˜ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20110308 to 20180621
+20110308 to 20180704
보안 íŒ¨ìŠ¤ì›Œë“œì˜ ìˆ˜ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to correct 2nd password.
20130807 to 20130814
@@ -10815,7 +10815,7 @@ Failed to delete 2nd password.
MSG_SECOND_PASSWORD_EDIT_FAILED = 0x767,
/*20110228 to 20110228
세컨드 비밀번호ì—는 ì œí•œëœ ë²ˆí˜¸ë¥¼ 사용할수 없습니다.
-20110308 to 20180621
+20110308 to 20180704
입력하신패스워드는 사용하실수없습니다.
Unable to use restricted number in 2nd password.
20130807 to 20130814
@@ -10823,7 +10823,7 @@ Unable to use restricted number in 2nd password.
Failed to correct 2nd password.
*/
MSG_SECOND_PASSWORD_EDIT_RESTRICT_PW = 0x768,
-/*20110228 to 20180621
+/*20110228 to 20180704
주민등ë¡ë²ˆí˜¸ëŠ” 사용할수없습니다.
Unable to use your KSSN number.
20130807 to 20130814
@@ -10833,7 +10833,7 @@ Unable to use restricted number in 2nd password.
MSG_SECOND_PASSWORD_EDIT_PERSONALNUM_PW = 0x769,
/*20110228 to 20110228
보안번호
-20110308 to 20180621
+20110308 to 20180704
ì´ë¯¸ 패스워드가 존재합니다.
~There is already a password.
20130807 to 20130814
@@ -10843,7 +10843,7 @@ Unable to use your KSSN number.
MSG_SECOND_PASSWORD_MAKE_DUPLICATED_PW = 0x76a,
/*20110228 to 20110228
비밀번호 ìž…ë ¥ (4~6ìžë¦¬)
-20110308 to 20180621
+20110308 to 20180704
보안 패스워드
Security Code
20130807 to 20130814
@@ -10853,7 +10853,7 @@ Security Code
MSG_SECOND_PASSWORD = 0x76b,
/*20110228 to 20110228
ITEM
-20110308 to 20180621
+20110308 to 20180704
ê³„ì •ë³´ì•ˆì„ ìœ„í•˜ì—¬ 추가ì ì¸ 패스워드 ì„¤ì •ì„ ê¶Œìž¥í•©ë‹ˆë‹¤.
Account for the additional password security settings are recommended.
20130807 to 20130814
@@ -10863,7 +10863,7 @@ Security Code
MSG_SECOND_PASSWORD_INPUT = 0x76c,
/*20110228 to 20110228
SKILL
-20110308 to 20180621
+20110308 to 20180704
보안 패스워드 ì‚¬ìš©ì„ í•˜ì§€ 않습니다.
Do not use secure password.
20130807 to 20130814
@@ -10873,7 +10873,7 @@ Account for the additional password security settings are recommended.
MSG_SECOND_PASSWDRD_NOT_AVAILABLE_SUCCESS = 0x76d,
/*20110228 to 20110228
TACTIC
-20110308 to 20180621
+20110308 to 20180704
보안 패스워드 ì‚¬ìš©ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Use the set security password failed.
20130807 to 20130814
@@ -10883,7 +10883,7 @@ Do not use secure password.
MSG_SECOND_PASSWDRD_NOT_AVAILABLE_FAILED = 0x76e,
/*20110228 to 20110228
ETC
-20110308 to 20180621
+20110308 to 20180704
보안 패스워드를 사용합니다. 다ìŒë¡œê·¸ì¸ë¶€í„° ì ìš©ë©ë‹ˆë‹¤.
Use secure passwords. Will be applied to your next login.
20130807 to 20130814
@@ -10893,7 +10893,7 @@ Use the set security password failed.
MSG_SECOND_PASSWDRD_AVAILABLE_SUCCESS = 0x76f,
/*20110228 to 20110228
COMBAT
-20110308 to 20180621
+20110308 to 20180704
보안 패스워드 사용 ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Use the set security password failed.
20130807 to 20130814
@@ -10903,7 +10903,7 @@ Use secure passwords. Will be applied to your next login.
MSG_SECOND_PASSWDRD_AVAILABLE_FAILED = 0x770,
/*20110228 to 20110228
NON-COMBAT
-20110308 to 20180621
+20110308 to 20180704
ê³„ì •ë³´ì•ˆì„ ìœ„í•˜ì—¬ 추가ì ì¸ 패스워드를 설정합니다.
Added to the security of your account password is set.
20130807 to 20130814
@@ -10913,7 +10913,7 @@ Use the set security password failed.
MSG_SECOND_PASSWORD_INFO_1 = 0x771,
/*20110228 to 20110228
BUFF
-20110308 to 20180621
+20110308 to 20180704
ì•„ëž˜ì˜ ìˆ«ìžë²„íŠ¼ì„ ë§ˆìš°ìŠ¤ë¥¼ ì´ìš©í•˜ì—¬ 4ìžë¦¬ë¥¼ í´ë¦­í•˜ì„¸ìš”.
Use the mouse to enter the 4-digit password below.
20130807 to 20130814
@@ -10923,7 +10923,7 @@ Added to the security of your account password is set.
MSG_SECOND_PASSWORD_INFO_2 = 0x772,
/*20110228 to 20110228
AUTO EQUIPED
-20110308 to 20180621
+20110308 to 20180704
3회ì´ìƒ 잘못ëœíŒ¨ìŠ¤ì›Œë“œ 입력으로, 종료ë©ë‹ˆë‹¤.
Typing an incorrect password 3 times will shut down the client.
20130807 to 20130814
@@ -10933,7 +10933,7 @@ Use the mouse to enter the 4-digit password below.
MSG_SECOND_PASSWORD_INFO_3 = 0x773,
/*20110228 to 20110228
1st. ATTACK
-20110308 to 20180621
+20110308 to 20180704
ITEM
20130807 to 20130814
3회ì´ìƒ 잘못ëœíŒ¨ìŠ¤ì›Œë“œ 입력으로, 종료ë©ë‹ˆë‹¤.
@@ -10942,7 +10942,7 @@ Typing an incorrect password 3 times will shut down the client.
MSG_MACRO_ITEM = 0x774,
/*20110228 to 20110228
ATTACK
-20110308 to 20180621
+20110308 to 20180704
SKILL
20130807 to 20130814
ITEM
@@ -10951,7 +10951,7 @@ ITEM
/*20110228 to 20110228
Next attack time :
Next attack time:
-20110308 to 20180621
+20110308 to 20180704
TACTIC
20130807 to 20130814
SKILL
@@ -10959,7 +10959,7 @@ SKILL
MSG_MACRO_TACTIC = 0x776,
/*20110228 to 20110228
When died
-20110308 to 20180621
+20110308 to 20180704
ETC
20130807 to 20130814
TACTIC
@@ -10967,7 +10967,7 @@ TACTIC
MSG_MACRO_ETC = 0x777,
/*20110228 to 20110228
When invited to a party
-20110308 to 20180621
+20110308 to 20180704
COMBAT
20130807 to 20130814
ETC
@@ -10975,7 +10975,7 @@ ETC
MSG_MACRO_COMBAT = 0x778,
/*20110228 to 20110228
Pickup Item
-20110308 to 20180621
+20110308 to 20180704
NON-COMBAT
20130807 to 20130814
COMBAT
@@ -10983,7 +10983,7 @@ COMBAT
MSG_MACRO_NON_COMBAT = 0x779,
/*20110228 to 20110228
Over 85% Weight
-20110308 to 20180621
+20110308 to 20180704
BUFF
20130807 to 20130814
NON-COMBAT
@@ -10991,64 +10991,64 @@ NON-COMBAT
MSG_MACRO_BUFF = 0x77a,
#endif
#if PACKETVER >= 20110308
-/*20110308 to 20180621
+/*20110308 to 20180704
AUTO EQUIPED
20130807 to 20130814
BUFF
*/
MSG_MACRO_AUTO_EQUIPED = 0x77b,
-/*20110308 to 20180621
+/*20110308 to 20180704
1st. ATTACK
20130807 to 20130814
AUTO EQUIPED
*/
MSG_MACRO_1ST_ATTACK = 0x77c,
-/*20110308 to 20180621
+/*20110308 to 20180704
ATTACK
20130807 to 20130814
1st. ATTACK
*/
MSG_MACRO_ATTACK = 0x77d,
-/*20110308 to 20180621
+/*20110308 to 20180704
Next attack time :
Next attack time:
20130807 to 20130814
ATTACK
*/
MSG_MACRO_NEXT_ATK_TIME = 0x77e,
-/*20110308 to 20180621
+/*20110308 to 20180704
When died
20130807 to 20130814
Next attack time :
Next attack time:
*/
MSG_MACRO_WHEN_DIED = 0x77f,
-/*20110308 to 20180621
+/*20110308 to 20180704
When invited to a party
20130807 to 20130814
When died
*/
MSG_MACRO_WHEN_INVITED_PARTY = 0x780,
-/*20110308 to 20180621
+/*20110308 to 20180704
Pickup Item
20130807 to 20130814
When invited to a party
*/
MSG_MACRO_PICKUP_ITEM = 0x781,
-/*20110308 to 20180621
+/*20110308 to 20180704
Over 85% Weight
20130807 to 20130814
Pickup Item
*/
MSG_MACRO_OVERWEIGHT = 0x782,
-/*20110308 to 20180621
+/*20110308 to 20180704
진행중ì´ë˜ ìž‘ì—…(NPC대화,제조...)ì„ ì¢…ë£Œí›„ì— ë‹¤ì‹œ ì‹œë„하세요.
Any work in progress (NPC dialog, manufacturing ...) quit and try again.
20130807 to 20130814
Over 85% Weight
*/
MSG_BUSY = 0x783,
-/*20110308 to 20180621
+/*20110308 to 20180704
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Job경험치가 %d분간 %.2fë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
20130807 to 20130814
@@ -11060,7 +11060,7 @@ Any work in progress (NPC dialog, manufacturing ...) quit and try again.
#if PACKETVER >= 20110315
/*20110315 to 20110405
ExMacro_SaveData%d
-20110412 to 20180621
+20110412 to 20180704
SaveData_ExMacro%d
SaveData_ExMacro %d
20130807 to 20130814
@@ -11068,7 +11068,7 @@ SaveData_ExMacro %d
Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
*/
MSG_MACRO_SAVE = 0x785,
-/*20110315 to 20180621
+/*20110315 to 20180704
설정한 ë‚´ìš©ì´ [%s]ì— ì €ìž¥ë©ë‹ˆë‹¤.
Settings for [%s] are stored in.
20130807 to 20130814
@@ -11078,7 +11078,7 @@ SaveData_ExMacro %d
MSG_MACRO_SAVE_DATA2 = 0x786,
#endif
#if PACKETVER >= 20110322
-/*20110322 to 20180621
+/*20110322 to 20180704
보안레벨
Security level
20130807 to 20130814
@@ -11088,7 +11088,7 @@ Settings for [%s] are stored in.
MSG_SECOND_PASSWORD_LEVEL = 0x787,
#endif
#if PACKETVER >= 20110412
-/*20110412 to 20180621
+/*20110412 to 20180704
현재 ìºë¦­í„°ëŠ” 파티 ë˜ëŠ” ê¸¸ë“œì— ê°€ìž…ë˜ì–´ 있어서 삭제가 불가능합니다.
The current character is a party or join the guild can not be deleted.
20130807 to 20130814
@@ -11098,7 +11098,7 @@ Security level
MSG_RESULT_FAIL_CHAR_DELETE = 0x788,
#endif
#if PACKETVER >= 20110523
-/*20110523 to 20180621
+/*20110523 to 20180704
ë²½ì´ë‚˜ 물체 근처ì—서만 사용 í•  수 있습니다.
Objects can be used only near the wall.
20130807 to 20130814
@@ -11108,7 +11108,7 @@ The current character is a party or join the guild can not be deleted.
MSG_USESKILL_FAIL_NEER_WALL = 0x789,
#endif
#if PACKETVER >= 20110531
-/*20110531 to 20180621
+/*20110531 to 20180704
%s : 레벨 %d %s 파티구합니다.
%s: Level %d %s party to obtain level.
20130807 to 20130814
@@ -11116,7 +11116,7 @@ The current character is a party or join the guild can not be deleted.
Objects can be used only near the wall.
*/
MSG_SEEK_PARTY_SET = 0x78a,
-/*20110531 to 20180621
+/*20110531 to 20180704
탑승 ì¤‘ì¸ ìƒíƒœì—서는 ê³ ì‚ ì•„ì´í…œì„ 사용할 수 없습니다.
While boarding reins is not available for items.
20130807 to 20130814
@@ -11126,7 +11126,7 @@ While boarding reins is not available for items.
MSG_FAIELD_RIDING_OVERLAPPED = 0x78b,
#endif
#if PACKETVER >= 20110620
-/*20110620 to 20180621
+/*20110620 to 20180704
ì´ ìŠ¤í‚¬ì€ 1%ì˜ ê²½í—˜ì¹˜ê°€ 필요합니다.
This skill requires 1% experience.
20130807 to 20130814
@@ -11136,7 +11136,7 @@ While boarding reins is not available for items.
MSG_USESKILL_FAIL_NEED_EXP_1PERCENT = 0x78c,
#endif
#if PACKETVER >= 20110627
-/*20110627 to 20180621
+/*20110627 to 20180704
경 험 치 :
Experience value:
20130807 to 20130814
@@ -11144,7 +11144,7 @@ Experience value:
This skill requires 1% experience.
*/
MSG_EXP_MSG = 0x78d,
-/*20110627 to 20180621
+/*20110627 to 20180704
드 롭 율 :
Drop rate:
20130807 to 20130814
@@ -11152,7 +11152,7 @@ Drop rate:
Experience value:
*/
MSG_DROP_MSG = 0x78e,
-/*20110627 to 20180621
+/*20110627 to 20180704
사ë§íŽ˜ë„í‹° :
Death Penalty:
20130807 to 20130814
@@ -11162,7 +11162,7 @@ Drop rate:
MSG_DEATH_MSG = 0x78f,
/*20110627 to 20110711
%d%% (PC방 %d%% + 프리미엄 %d%% + %s서버 %d%%)
-20110713 to 20180621
+20110713 to 20180704
%d%% (PC방 %d%% + TPLUS %d%% + 프리미엄 %d%% + %s서버 %d%%)
%d%% (PCroom %d%% + TPLUS %d%% + Premium %d%% + %s Server %d%%)
20130807 to 20130814
@@ -11170,7 +11170,7 @@ Drop rate:
Death Penalty:
*/
MSG_BASIC_EXP_MSG = 0x790,
-/*20110627 to 20180621
+/*20110627 to 20180704
í•©ì°½ìŠ¤í‚¬ì„ ì‹œì „í•  파티ì›ì˜ SPëŸ‰ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
Amount of party members to cast the skill Chorus SP is low.
20130807 to 20130814
@@ -11180,7 +11180,7 @@ Amount of party members to cast the skill Chorus SP is low.
MSG_USESKILL_FAIL_CHORUS_SP_INSUFFICIENT = 0x791,
#endif
#if PACKETVER >= 20110705
-/*20110705 to 20180621
+/*20110705 to 20180704
ìƒëŒ€ ìºë¦­í„°ì˜ 소지 ì•„ì´í…œ ì¢…ë¥˜ì˜ í•œê³„ëŸ‰ 초과로 거래가 불가능합니다.
Relative character that has possession of the items can not trade because amount is exceeded.
20130807 to 20130814
@@ -11188,7 +11188,7 @@ Relative character that has possession of the items can not trade because amount
Amount of party members to cast the skill Chorus SP is low.
*/
MSG_CHARACTER_IS_OVER_COUNT = 0x792,
-/*20110705 to 20180621
+/*20110705 to 20180704
ìƒëŒ€ ìºë¦­í„°ì˜ 해당 ì•„ì´í…œì˜ 소지 한계량 초과로 거래가 불가능합니다.
Relative character that has possession of the item amount which exceeds makes it impossible to trade.
20130807 to 20130814
@@ -11196,7 +11196,7 @@ Relative character that has possession of the item amount which exceeds makes it
Relative character that has possession of the items can not trade because amount is exceeded.
*/
MSG_CHARACTER_IS_EACHITEM_OVER_COUNT = 0x793,
-/*20110705 to 20180621
+/*20110705 to 20180704
해당 ì•„ì´í…œì˜ 소지 한계량 초과로 êµ¬ìž…ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Amounts are exceeded the possession of the item is not available for purchase.
20130807 to 20130814
@@ -11206,7 +11206,7 @@ Relative character that has possession of the item amount which exceeds makes it
MSG_PURCHASE_FAIL_EACHITEM_COUNT = 0x794,
/*20110705 to 20110705
ìž ì‹œí›„ì— ë‹¤ì‹œ ì‹œë„해주세요.
-20110711 to 20180621
+20110711 to 20180704
ê´‘ê³  ë“±ë¡ ëŒ€ê¸°ì¤‘ìž…ë‹ˆë‹¤.
Advertising is pending registration.
20130807 to 20130814
@@ -11214,7 +11214,7 @@ Advertising is pending registration.
Amounts are exceeded the possession of the item is not available for purchase.
*/
MSG_PARTY_FAILED_TIMEOUT = 0x795,
-/*20110705 to 20180621
+/*20110705 to 20180704
ì•„ëž˜ì˜ íŒŒì¼ê³¼ í…ìŠ¤íŠ¸ë‚´ìš©ì„ í•¨ê»˜
ë¼ê·¸ë‚˜ë¡œí¬ ê³µì‹í™ˆíŽ˜ì´ì§€ -> ê³ ê°ì„¼í„° -> 문ì˜í•˜ê¸°ë¥¼
ì´ìš©í•˜ì—¬ 보내주시기 ë°”ëžë‹ˆë‹¤.
@@ -11226,7 +11226,7 @@ Advertising is pending registration.
MSG_UNEXCEPTION_MSG1ST = 0x796,
#endif
#if PACKETVER >= 20110718
-/*20110718 to 20180621
+/*20110718 to 20180704
빌ë§ì‹œìŠ¤í…œì— 오류가 ë°œìƒí–‡ìŠµë‹ˆë‹¤(%d)
Has caused an error in billing system(%d)
20130807 to 20130814
@@ -11236,7 +11236,7 @@ Has caused an error in billing system(%d)
With the following files and text content Ragnarok Official Website -> Support -> Contact Us to submit your comments by:
*/
MSG_INGAMBA_BILLING_ZSVR_ERROR = 0x797,
-/*20110718 to 20180621
+/*20110718 to 20180704
룬 ì•„ì´í…œ 소유 개수가 초과 ë˜ì–´ 구매가 실패 하였습니다.
Failed purchase of runes, items exceed the maximum number that can be held.
20130807 to 20130814
@@ -11244,7 +11244,7 @@ Failed purchase of runes, items exceed the maximum number that can be held.
Has caused an error in billing system(%d)
*/
MSG_CASH_FAILED_RUNE_OVERCOUNT = 0x798,
-/*20110718 to 20180621
+/*20110718 to 20180704
개별 ì•„ì´í…œ 개수가 초과 ë˜ì–´ 구매가 실패 하였습니다.
Exceeded the number of individual items, purchase failed.
20130807 to 20130814
@@ -11252,7 +11252,7 @@ Exceeded the number of individual items, purchase failed.
Failed purchase of runes, items exceed the maximum number that can be held.
*/
MSG_CASH_FAILED_EACHITEM_OVERCOUNT = 0x799,
-/*20110718 to 20180621
+/*20110718 to 20180704
ì•Œ 수 없는 오류가 ë°œìƒí•˜ì—¬ 구매가 실패 하였습니다.
Purchase failed due to an unknown error.
20130807 to 20130814
@@ -11260,7 +11260,7 @@ Purchase failed due to an unknown error.
Exceeded the number of individual items, purchase failed.
*/
MSG_CASH_FAILED_UNKOWN = 0x79a,
-/*20110718 to 20180621
+/*20110718 to 20180704
ìž ì‹œ 후 다시 ì‹œë„í•´ 주십시오.
Please try again later.
20130807 to 20130814
@@ -11268,7 +11268,7 @@ Please try again later.
Purchase failed due to an unknown error.
*/
MSG_CASH_FAILED_BUSY = 0x79b,
-/*20110718 to 20180621
+/*20110718 to 20180704
ì¿ ë‚˜ì´ ì•„ì´í…œì„ 장착 í•œ ìƒíƒœì—서만 사용 가능합니다.
Kunai must be equipped to use this skill.
20130807 to 20130814
@@ -11278,7 +11278,7 @@ Please try again later.
MSG_USESKILL_FAIL_NEED_EQUIPMENT_KUNAI = 0x79c,
#endif
#if PACKETVER >= 20110726
-/*20110726 to 20180621
+/*20110726 to 20180704
모집할 ìµœì†Œë ˆë²¨ê°’ì„ ìž…ë ¥í•´ì£¼ì„¸ìš”.
Please enter the value of the minimum level to be recruited.
20130807 to 20130814
@@ -11288,7 +11288,7 @@ Kunai must be equipped to use this skill.
MSG_SEEK_PARTY_LEVEL_HELP = 0x79d,
#endif
#if PACKETVER >= 20110802
-/*20110802 to 20180621
+/*20110802 to 20180704
존다기íšì‚¬NPC ì—게 ì•„ì´í…œì´ ìˆ˜ë ¹ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤. ì†Œì§€ì°½ì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
20130807 to 20130814
@@ -11298,7 +11298,7 @@ Please enter the value of the minimum level to be recruited.
MSG_FAILED_GET_ITEM_FROM_ZONEDA = 0x79e,
#endif
#if PACKETVER >= 20110809
-/*20110809 to 20180621
+/*20110809 to 20180704
ì´ ìŠ¤í‚¬ì€ ê³µì„±ì „ì—서만 사용 가능합니다.
This skill is only available in the siege.
20130807 to 20130814
@@ -11306,7 +11306,7 @@ This skill is only available in the siege.
Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
*/
MSG_USESKILL_FAIL_SIZE = 0x79f,
-/*20110809 to 20180621
+/*20110809 to 20180704
ì´ ìŠ¤í‚¬ì€ í”Œë ˆì´ì–´ì—게만 사용 가능합니다.
This skill is available only to the player.
20130807 to 20130814
@@ -11314,7 +11314,7 @@ This skill is available only to the player.
This skill is only available in the siege.
*/
MSG_USESKILL_FAIL_TOTARGET_PLAYER = 0x7a0,
-/*20110809 to 20180621
+/*20110809 to 20180704
ì°©ìš©ì´ ê¸ˆì§€ ëœ ìƒíƒœë¡œ ì°©ìš© í•  수 없습니다.
Forbidden to wear the state can not be worn.
20130807 to 20130814
@@ -11322,7 +11322,7 @@ Forbidden to wear the state can not be worn.
This skill is available only to the player.
*/
MSG_CAN_NOT_EQUIP_ITEM_FORBID = 0x7a1,
-/*20110809 to 20180621
+/*20110809 to 20180704
현재 위치ì—서는 ìƒì  ë° ì±„íŒ…ë°©ì˜ ìƒì„±ì´ 불가능합니다.
Current location of the shop and chat room creation is disabled.
20130807 to 20130814
@@ -11332,21 +11332,21 @@ Forbidden to wear the state can not be worn.
MSG_USESKILL_FAIL_THERE_ARE_NPC_AROUND = 0x7a2,
#endif
#if PACKETVER >= 20110816
-/*20110816 to 20180621
+/*20110816 to 20180704
Elapsed time: %d:%d:%d / %d:%d:%d
20130807 to 20130814
현재 위치ì—서는 ìƒì  ë° ì±„íŒ…ë°©ì˜ ìƒì„±ì´ 불가능합니다.
Current location of the shop and chat room creation is disabled.
*/
MSG_REPLAY_ELAPSEDTIME = 0x7a3,
-/*20110816 to 20180621
+/*20110816 to 20180704
Speed : X 1/4
Speed: X 1/4
20130807 to 20130814
Elapsed time: %d:%d:%d / %d:%d:%d
*/
MSG_REPLAY_SPEED1_4 = 0x7a4,
-/*20110816 to 20180621
+/*20110816 to 20180704
Speed : X 1/2
Speed: X 1/2
20130807 to 20130814
@@ -11354,7 +11354,7 @@ Speed : X 1/4
Speed: X 1/4
*/
MSG_REPLAY_SPEED1_2 = 0x7a5,
-/*20110816 to 20180621
+/*20110816 to 20180704
Speed : X 1
Speed: X 1
20130807 to 20130814
@@ -11362,7 +11362,7 @@ Speed : X 1/2
Speed: X 1/2
*/
MSG_REPLAY_SPEED1 = 0x7a6,
-/*20110816 to 20180621
+/*20110816 to 20180704
Speed : X 2
Speed: X 2
20130807 to 20130814
@@ -11370,7 +11370,7 @@ Speed : X 1
Speed: X 1
*/
MSG_REPLAY_SPEED2 = 0x7a7,
-/*20110816 to 20180621
+/*20110816 to 20180704
Speed : X 4
Speed: X 4
20130807 to 20130814
@@ -11378,7 +11378,7 @@ Speed : X 2
Speed: X 2
*/
MSG_REPLAY_SPEED4 = 0x7a8,
-/*20110816 to 20180621
+/*20110816 to 20180704
Speed : X 8
Speed: X 8
20130807 to 20130814
@@ -11386,7 +11386,7 @@ Speed : X 4
Speed: X 4
*/
MSG_REPLAY_SPEED8 = 0x7a9,
-/*20110816 to 20180621
+/*20110816 to 20180704
Speed : X 16
Speed: X 16
20130807 to 20130814
@@ -11394,7 +11394,7 @@ Speed : X 8
Speed: X 8
*/
MSG_REPLAY_SPEED16 = 0x7aa,
-/*20110816 to 20180621
+/*20110816 to 20180704
Speed : 알수없ìŒ
Speed: Unknown
20130807 to 20130814
@@ -11402,7 +11402,7 @@ Speed : X 16
Speed: X 16
*/
MSG_REPLAY_SPEEDUNKNOWN = 0x7ab,
-/*20110816 to 20180621
+/*20110816 to 20180704
Service Info : %s
Service Info: %s
20130807 to 20130814
@@ -11410,7 +11410,7 @@ Speed : 알수없ìŒ
Speed: Unknown
*/
MSG_REPLAY_CHRVICEINFO = 0x7ac,
-/*20110816 to 20180621
+/*20110816 to 20180704
Character Name : %s
Character Name: %s
20130807 to 20130814
@@ -11418,7 +11418,7 @@ Service Info : %s
Service Info: %s
*/
MSG_REPLAY_CHARACTERNAME = 0x7ad,
-/*20110816 to 20180621
+/*20110816 to 20180704
Map Name : %s
Map Name: %s
20130807 to 20130814
@@ -11426,65 +11426,65 @@ Character Name : %s
Character Name: %s
*/
MSG_REPLAY_MAPNAME = 0x7ae,
-/*20110816 to 20180621
+/*20110816 to 20180704
Record Time: %d-%01d-%01d %d: %02d: %02d
20130807 to 20130814
Map Name : %s
Map Name: %s
*/
MSG_REPLAY_RECORDTIME = 0x7af,
-/*20110816 to 20180621
+/*20110816 to 20180704
Play Time: %02d: %02d: %02d
20130807 to 20130814
Record Time: %d-%01d-%01d %d: %02d: %02d
*/
MSG_REPLAY_PLAYTIME = 0x7b0,
-/*20110816 to 20180621
+/*20110816 to 20180704
No Replay File.
20130807 to 20130814
Play Time: %02d: %02d: %02d
*/
MSG_REPLAY_NOREPLAYFILE = 0x7b1,
-/*20110816 to 20180621
+/*20110816 to 20180704
Server No Matching
20130807 to 20130814
No Replay File.
*/
MSG_REPLAY_SERVERNOMATCH = 0x7b2,
-/*20110816 to 20180621
+/*20110816 to 20180704
Replay Option Setting
20130807 to 20130814
Server No Matching
*/
MSG_REPLAY_REPLAYOPTIONSETTING = 0x7b3,
-/*20110816 to 20180621
+/*20110816 to 20180704
íŒŒì¼ ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”.
Enter File Name
20130807 to 20130814
Replay Option Setting
*/
MSG_REPLAY_ENTERTHEFILENAME = 0x7b4,
-/*20110816 to 20180621
+/*20110816 to 20180704
Set Replay Save Data
20130807 to 20130814
íŒŒì¼ ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”.
Enter File Name
*/
MSG_REPLAY_SETREPLAYSAVEDATA = 0x7b5,
-/*20110816 to 20180621
+/*20110816 to 20180704
Set Rec Option
20130807 to 20130814
Set Replay Save Data
*/
MSG_REPLAY_SETRECOPTION = 0x7b6,
-/*20110816 to 20180621
+/*20110816 to 20180704
%.1f %% Pos☞:%d:%d:%d
%.1f % Pos->:%d:%d:%d
20130807 to 20130814
Set Rec Option
*/
MSG_REPLAY_GAGEPOS1 = 0x7b7,
-/*20110816 to 20180621
+/*20110816 to 20180704
%.1f %% Pos☞:ì´ë™ë¶ˆê°€
%.1f % Pos->:cannot move
20130807 to 20130814
@@ -11492,57 +11492,57 @@ Set Rec Option
%.1f % Pos->:%d:%d:%d
*/
MSG_REPLAY_GAGEPOS2 = 0x7b8,
-/*20110816 to 20180621
+/*20110816 to 20180704
Start
20130807 to 20130814
%.1f %% Pos☞:ì´ë™ë¶ˆê°€
%.1f % Pos->:cannot move
*/
MSG_REPLAY_START = 0x7b9,
-/*20110816 to 20180621
+/*20110816 to 20180704
Stop
20130807 to 20130814
Start
*/
MSG_REPLAY_STOP = 0x7ba,
-/*20110816 to 20180621
+/*20110816 to 20180704
Input FileName -> Start
20130807 to 20130814
Stop
*/
MSG_REPLAY_START2 = 0x7bb,
-/*20110816 to 20180621
+/*20110816 to 20180704
Open Option
20130807 to 20130814
Input FileName -> Start
*/
MSG_REPLAY_OPENOPTION = 0x7bc,
-/*20110816 to 20180621
+/*20110816 to 20180704
Close Option
20130807 to 20130814
Open Option
*/
MSG_REPLAY_CLOSEOPION = 0x7bd,
-/*20110816 to 20180621
+/*20110816 to 20180704
End
20130807 to 20130814
Close Option
*/
MSG_REPLAY_END = 0x7be,
-/*20110816 to 20180621
+/*20110816 to 20180704
Time
20130807 to 20130814
End
*/
MSG_REPLAY_TIME = 0x7bf,
-/*20110816 to 20180621
+/*20110816 to 20180704
파티&친구
Party & Friends
20130807 to 20130814
Time
*/
MSG_REPLAY_PARTYFRIEND = 0x7c0,
-/*20110816 to 20180621
+/*20110816 to 20180704
채팅
Chat
20130807 to 20130814
@@ -11550,7 +11550,7 @@ Chat
Party & Friends
*/
MSG_REPLAY_CHAT = 0x7c1,
-/*20110816 to 20180621
+/*20110816 to 20180704
단축키
Shortcuts
20130807 to 20130814
@@ -11558,7 +11558,7 @@ Shortcuts
Chat
*/
MSG_REPLAY_SHORTCUTS = 0x7c2,
-/*20110816 to 20180621
+/*20110816 to 20180704
ìžë™ 파ì¼ëª… ìƒì„±
Automatic filename generation
20130807 to 20130814
@@ -11566,7 +11566,7 @@ Automatic filename generation
Shortcuts
*/
MSG_REPLAY_AUTOMATICFILENAME = 0x7c3,
-/*20110816 to 20180621
+/*20110816 to 20180704
íŒŒì¼ ì¤‘ë³µ 채í¬
Checking for duplicate files
20130807 to 20130814
@@ -11574,7 +11574,7 @@ Checking for duplicate files
Automatic filename generation
*/
MSG_REPLAY_CHECKINGFILE = 0x7c4,
-/*20110816 to 20180621
+/*20110816 to 20180704
ë™ì¼í•œ 파ì¼ì´ 존재 합니다.
The same file exists already.
20130807 to 20130814
@@ -11582,14 +11582,14 @@ The same file exists already.
Checking for duplicate files
*/
MSG_REPLAY_THESAMEFILEEXISTS = 0x7c5,
-/*20110816 to 20180621
+/*20110816 to 20180704
Record Start
20130807 to 20130814
ë™ì¼í•œ 파ì¼ì´ 존재 합니다.
The same file exists already.
*/
MSG_REPLAY_RECORDSTART = 0x7c6,
-/*20110816 to 20180621
+/*20110816 to 20180704
is Saved.
20130807 to 20130814
Record Start
@@ -11597,14 +11597,14 @@ Record Start
MSG_REPLAY_RECORDEND = 0x7c7,
#endif
#if PACKETVER >= 20110823
-/*20110823 to 20180621
+/*20110823 to 20180704
Weight : %3d / %3d
Weight: %3d / %3d
20130807 to 20130814
is Saved.
*/
MSG_WEIGHT = 0x7c8,
-/*20110823 to 20180621
+/*20110823 to 20180704
Total : %s C
Total: %s C
20130807 to 20130814
@@ -11612,7 +11612,7 @@ Weight : %3d / %3d
Weight: %3d / %3d
*/
MSG_TOTAL = 0x7c9,
-/*20110823 to 20180621
+/*20110823 to 20180704
[수리검]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Shuriken] must be equipped.
20130807 to 20130814
@@ -11622,79 +11622,79 @@ Total: %s C
MSG_FAIL_NEED_EQUIPPED_SYURIKEN = 0x7ca,
#endif
#if PACKETVER >= 20110831
-/*20110831 to 20180621
+/*20110831 to 20180704
Base Lv. %d
20130807 to 20130814
[수리검]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Shuriken] must be equipped.
*/
MSG__BASIC_MSG_BASE = 0x7cb,
-/*20110831 to 20180621
+/*20110831 to 20180704
Job Lv. %d
20130807 to 20130814
Base Lv. %d
*/
MSG__BASIC_MSG_JOB = 0x7cc,
-/*20110831 to 20180621
+/*20110831 to 20180704
Zeny : %s
Zeny: %s
20130807 to 20130814
Job Lv. %d
*/
MSG_BASIC_MSG_ZENY = 0x7cd,
-/*20110831 to 20180621
+/*20110831 to 20180704
Trilinear
20130807 to 20130814
Zeny : %s
Zeny: %s
*/
MSG_GRAPHIC_MSG_TRILINEAR = 0x7ce,
-/*20110831 to 20180621
+/*20110831 to 20180704
attack
20130807 to 20130814
Trilinear
*/
MSG_GRAPHIC_MSG_ATTACK = 0x7cf,
-/*20110831 to 20180621
+/*20110831 to 20180704
skill
20130807 to 20130814
attack
*/
MSG_GRAPHIC_MSG_SKILL = 0x7d0,
-/*20110831 to 20180621
+/*20110831 to 20180704
item
20130807 to 20130814
skill
*/
MSG_GRAPHIC_MSG_ITEM = 0x7d1,
-/*20110831 to 20180621
+/*20110831 to 20180704
NoCtrl
20130807 to 20130814
item
*/
MSG_GRAPHIC_MSG_NOCTRL = 0x7d2,
-/*20110831 to 20180621
+/*20110831 to 20180704
전장
More
20130807 to 20130814
NoCtrl
*/
MSG_GRAPHIC_MSG_BATTLE = 0x7d3,
-/*20110831 to 20180621
+/*20110831 to 20180704
(Character/Total Slot)
20130807 to 20130814
전장
More
*/
MSG_CHARACTER_MSG_CHARACTERTOTALSLOT = 0x7d4,
-/*20110831 to 20180621
+/*20110831 to 20180704
Premium Service
VIP Service
20130807 to 20130814
(Character/Total Slot)
*/
MSG_CHARACTER_MSG_PREMIUMSERVICE = 0x7d5,
-/*20110831 to 20180621
+/*20110831 to 20180704
Premium
VIP
20130807 to 20130814
@@ -11702,21 +11702,21 @@ Premium Service
VIP Service
*/
MSG_CHARACTER_MSG_PREMIUM = 0x7d6,
-/*20110831 to 20180621
+/*20110831 to 20180704
Service
20130807 to 20130814
Premium
VIP
*/
MSG_CHARACTER_MSG_SERVICE = 0x7d7,
-/*20110831 to 20180621
+/*20110831 to 20180704
Billing Service
VIP
20130807 to 20130814
Service
*/
MSG_CHARACTER_MSG_BILLINGSERVICE = 0x7d8,
-/*20110831 to 20180621
+/*20110831 to 20180704
Billing
VIP
20130807 to 20130814
@@ -11724,26 +11724,26 @@ Billing Service
VIP
*/
MSG_CHARACTER_MSG_BILLING = 0x7d9,
-/*20110831 to 20180621
+/*20110831 to 20180704
Command List
20130807 to 20130814
Billing
VIP
*/
MSG_MSG_COMMANDLIST = 0x7da,
-/*20110831 to 20180621
+/*20110831 to 20180704
LEVEL
20130807 to 20130814
Command List
*/
MSG_SEEK_PARTY_LEVEL = 0x7db,
-/*20110831 to 20180621
+/*20110831 to 20180704
MAP
20130807 to 20130814
LEVEL
*/
MSG_SEEK_PARTY_MAP = 0x7dc,
-/*20110831 to 20180621
+/*20110831 to 20180704
JOB
20130807 to 20130814
MAP
@@ -11751,7 +11751,7 @@ MAP
MSG_SEEK_PARTY_JOB = 0x7dd,
#endif
#if PACKETVER >= 20110906
-/*20110906 to 20180621
+/*20110906 to 20180704
Not Available
20130807 to 20130814
JOB
@@ -11761,7 +11761,7 @@ JOB
#if PACKETVER >= 20110920
/*20110920 to 20110929
[수호 ì²œì‚¬ì˜ ë³´í˜¸] ìŠ¤í‚¬ì€ ë§Œë ™ì¼ ê²½ìš°, 경험치 100% ì´ìƒì¼ 때는 사용할 수 없습니다.
-20111004 to 20180621
+20111004 to 20180704
[수호 ì²œì‚¬ì˜ ë³´í˜¸] ë§Œë ™ì¼ ê²½ìš° 사용할 수 없습니다.
[Protection of Guardian Angel] You can't use it when you reach the highest level.
20130807 to 20130814
@@ -11770,7 +11770,7 @@ Not Available
MSG_MSG_SUPERNOVICE_CHOPOKGI_CAPPEDLEVEL = 0x7df,
#endif
#if PACKETVER >= 20110928
-/*20110928 to 20180621
+/*20110928 to 20180704
ì •ë§ ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you really want to move?
20130807 to 20130814
@@ -11778,7 +11778,7 @@ Do you really want to move?
[Protection of Guardian Angel] You can't use it when you reach the highest level.
*/
MSG_CHANGE_CHARACTER_SLOT = 0x7e0,
-/*20110928 to 20180621
+/*20110928 to 20180704
ìºë¦­í„° 슬롯 ì´ë™ì— 실패했습니다.
Failed to move Char slot.
20130807 to 20130814
@@ -11788,7 +11788,7 @@ Do you really want to move?
MSG_CHANGE_CHARACTER_SLOT_FAILED = 0x7e1,
#endif
#if PACKETVER >= 20111004
-/*20111004 to 20180621
+/*20111004 to 20180704
ìºë¦­í„° ì´ë¦„ì´ ìž˜ëª» ë˜ì—ˆìŠµë‹ˆë‹¤.
Character name is invalid.
20130807 to 20130814
@@ -11796,7 +11796,7 @@ Character name is invalid.
Failed to move Char slot.
*/
MSG_CHARACTERNAME_ERROR = 0x7e2,
-/*20111004 to 20180621
+/*20111004 to 20180704
퀘스트보기창
Show Quest
20130807 to 20130814
@@ -11810,7 +11810,7 @@ Character name is invalid.
ì •ë§ íƒ­ì„ ì œê±°í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
20111025 to 20111116
청소년 ë³´í˜¸ë²•ì— ë”°ë¼, ìž ì‹œ 후 0ì‹œ 부터 6ì‹œ 까지 ^ff0000만 16세 미만 ê³ ê°ë‹˜ë“¤ì˜ 게임 ì´ìš©ì´ 제한^000000ë©ë‹ˆë‹¤.
-20111122 to 20180621
+20111122 to 20180704
청소년 ë³´í˜¸ë²•ì— ë”°ë¼, ìž ì‹œ 후 0ì‹œ 부터 6ì‹œ 까지 만 16세 미만 ê³ ê°ë‹˜ë“¤ì˜ 게임 ì´ìš©ì´ 제한ë©ë‹ˆë‹¤.
Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16 of your game use is limited.
20130807 to 20130814
@@ -11820,7 +11820,7 @@ Show Quest
MSG_SHUTDOWN_ALERT_MSG = 0x7e4,
/*20111017 to 20111021
ë”ì´ìƒ íƒ­ì„ ì œê±°í•  수 없습니다.
-20111025 to 20180621
+20111025 to 20180704
청소년 ë³´í˜¸ë²•ì— ë”°ë¼, 0ì‹œ 부터 6ì‹œ 까지 ^ff0000만 16세 미만 ê³ ê°ë‹˜ë“¤ì˜ 게임 ì´ìš©ì´ 제한^000000ë˜ë©°, ê²Œìž„ì„ ì¢…ë£Œí•©ë‹ˆë‹¤.
Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^000000 limit your use of the game and the game ends.
20130807 to 20130814
@@ -11830,7 +11830,7 @@ Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16
MSG_BAN_SHUTDOWN_TEENAGER = 0x7e5,
/*20111017 to 20111021
ë”ì´ìƒ íƒ­ì„ ì¶”ê°€í•  수 없습니다.
-20111025 to 20180621
+20111025 to 20180704
ìºë¦­í„° ì´ë¦„ì„ ë³€ê²½í•˜ê¸° 위해서는 길드ì—ì„œ 탈퇴 해야 합니다.
In order to change the character name, you must leave the guild.
20130807 to 20130814
@@ -11840,7 +11840,7 @@ Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^
MSG_FAILED_RENAME_BELONGS_TO_GUILD = 0x7e6,
#endif
#if PACKETVER >= 20111025
-/*20111025 to 20180621
+/*20111025 to 20180704
ìºë¦­í„° ì´ë¦„ì„ ë³€ê²½í•˜ê¸° 위해서는 파티ì—ì„œ 탈퇴 해야 합니다.
In order to change the character name, you must leave the party.
20130807 to 20130814
@@ -11848,7 +11848,7 @@ In order to change the character name, you must leave the party.
In order to change the character name, you must leave the guild.
*/
MSG_FAILED_RENAME_BELONGS_TO_PARTY = 0x7e7,
-/*20111025 to 20180621
+/*20111025 to 20180704
ì•Œ 수 없는 오류로 ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
Character name change failed, due an unknown error.
20130807 to 20130814
@@ -11858,7 +11858,7 @@ In order to change the character name, you must leave the party.
MSG_FAILED_RENAME_UNKOWN = 0x7e8,
#endif
#if PACKETVER >= 20111101
-/*20111101 to 20180621
+/*20111101 to 20180704
ì´ë¯¸ ìºë¦­í„° ìŠ¬ë¡¯ë³€ê²½ì´ ê°€ëŠ¥í•œ ìƒíƒœìž…니다.(%d)
Ready to change character slot in.(%d)
20130807 to 20130814
@@ -11866,7 +11866,7 @@ Ready to change character slot in.(%d)
Character name change failed, due an unknown error.
*/
MSG_CHARSLOT_CHANGE_DUPLICATE = 0x7e9,
-/*20111101 to 20180621
+/*20111101 to 20180704
ì´ë¯¸ ìºë¦­í„° ì´ë¦„ë³€ê²½ì´ ê°€ëŠ¥í•œ ìƒíƒœìž…니다.(%d)
Ready to change character name in.(%d)
20130807 to 20130814
@@ -11874,7 +11874,7 @@ Ready to change character name in.(%d)
Ready to change character slot in.(%d)
*/
MSG_CHARNAME_CHANGE_DUPLICATE = 0x7ea,
-/*20111101 to 20180621
+/*20111101 to 20180704
변경하려는 ì´ë¦„ì˜ ê¸¸ì´ê°€ 최대í¬ê¸°ë¥¼ 초과하여 ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
Length exceeds the maximum size of the character name you want to change.
20130807 to 20130814
@@ -11882,7 +11882,7 @@ Length exceeds the maximum size of the character name you want to change.
Ready to change character name in.(%d)
*/
MSG_FAILED_RENAME_OVER_LENGTH = 0x7eb,
-/*20111101 to 20180621
+/*20111101 to 20180704
사용할 수 없는 단어가 í¬í•¨ë˜ì–´ ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
Name contains invalid characters. Character name change failed.
20130807 to 20130814
@@ -11890,7 +11890,7 @@ Name contains invalid characters. Character name change failed.
Length exceeds the maximum size of the character name you want to change.
*/
MSG_FAILED_RENAME_PREVENTNAM = 0x7ec,
-/*20111101 to 20180621
+/*20111101 to 20180704
ì´ë¦„ ë³€ê²½ì´ ê¸ˆì§€ëœ ìƒíƒœì´ë¯€ë¡œ ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
The name change is prohibited. Character name change failed.
20130807 to 20130814
@@ -11900,7 +11900,7 @@ Name contains invalid characters. Character name change failed.
MSG_FAILED_RENAME_FORBIDDEN = 0x7ed,
#endif
#if PACKETVER >= 20111108
-/*20111108 to 20180621
+/*20111108 to 20180704
완료
Complete
20130807 to 20130814
@@ -11912,7 +11912,7 @@ The name change is prohibited. Character name change failed.
#if PACKETVER >= 20111114
/*20111114 to 20111116
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 %d분간 %d%% ì¦ê°€í•©ë‹ˆë‹¤.
-20111122 to 20180621
+20111122 to 20180704
%d분간 ì–»ì„ ìˆ˜ 있는 경험치가 %d%% ì¦ê°€í•©ë‹ˆë‹¤.
During %d minutes your Exp will increase by %d%%.
20130807 to 20130814
@@ -11920,7 +11920,7 @@ During %d minutes your Exp will increase by %d%%.
Complete
*/
MSG_PLUSEXP_VALUE = 0x7ef,
-/*20111114 to 20180621
+/*20111114 to 20180704
소환까지 %02d초남았습니다.
%02d seconds left until summon.
20130807 to 20130814
@@ -11928,7 +11928,7 @@ Complete
During %d minutes your Exp will increase by %d%%.
*/
MSG_PARTY_RECALL_TIME = 0x7f0,
-/*20111114 to 20180621
+/*20111114 to 20180704
íŒŒí‹°ìž¥ì´ ë‹¹ì‹ ì„ %s (%s) ë¡œ 소환합니다.소환시 %d zenyê°€ 소모ë©ë‹ˆë‹¤.
Your party leader summons you to %s (%s). Warp costs %d Zeny.
20130807 to 20130814
@@ -11936,7 +11936,7 @@ Your party leader summons you to %s (%s). Warp costs %d Zeny.
%02d seconds left until summon.
*/
MSG_PARTY_RECALL_INFO = 0x7f1,
-/*20111114 to 20180621
+/*20111114 to 20180704
소환대ìƒ
Summon target
20130807 to 20130814
@@ -11944,7 +11944,7 @@ Summon target
Your party leader summons you to %s (%s). Warp costs %d Zeny.
*/
MSG_RECALL_TARGET = 0x7f2,
-/*20111114 to 20180621
+/*20111114 to 20180704
차단목ë¡
Block List
20130807 to 20130814
@@ -11954,7 +11954,7 @@ Summon target
MSG_PARTY_BLACKLIST = 0x7f3,
/*20111114 to 20120209
파티 광고를 등ë¡í•˜ê¸° 위해 1000제니가 소모ë©ë‹ˆë‹¤.
-20120214 to 20180621
+20120214 to 20180704
파티 광고를 등ë¡í•˜ê¸° 위해 %d제니가 소모ë©ë‹ˆë‹¤.
%d Zeny will be spent for making party ad.
20130807 to 20130814
@@ -11962,7 +11962,7 @@ Summon target
Block List
*/
MSG_PARTY_CF_PAY = 0x7f4,
-/*20111114 to 20180621
+/*20111114 to 20180704
파티 광고를 하기 위한 제니가 부족합니다.
Insufficient Zeny for making party ad.
20130807 to 20130814
@@ -11970,7 +11970,7 @@ Insufficient Zeny for making party ad.
%d Zeny will be spent for making party ad.
*/
MSG_PARTY_CF_PAY_SHORTAGE_COST = 0x7f5,
-/*20111114 to 20180621
+/*20111114 to 20180704
)님 파티 가입승ì¸
) party: accept invitation
20130807 to 20130814
@@ -11978,7 +11978,7 @@ Insufficient Zeny for making party ad.
Insufficient Zeny for making party ad.
*/
MSG_PARTY_ADD_OK = 0x7f6,
-/*20111114 to 20180621
+/*20111114 to 20180704
)님 파티 가입거부
) party: decline invitation
20130807 to 20130814
@@ -11986,7 +11986,7 @@ Insufficient Zeny for making party ad.
) party: accept invitation
*/
MSG_PARTY_ADD_REFUSES = 0x7f7,
-/*20111114 to 20180621
+/*20111114 to 20180704
)님 장비창보기
) party: show equipment window
20130807 to 20130814
@@ -11994,7 +11994,7 @@ Insufficient Zeny for making party ad.
) party: decline invitation
*/
MSG_PARTY_ITEM_VIEW = 0x7f8,
-/*20111114 to 20180621
+/*20111114 to 20180704
한글18글ìž,ì˜ë¬¸36ê¸€ìž ìž…ë ¥ê°€ëŠ¥
Up to 36 english letters can be entered
20130807 to 20130814
@@ -12002,7 +12002,7 @@ Up to 36 english letters can be entered
) party: show equipment window
*/
MSG_SEEK_PARTY_MEMO_HELP = 0x7f9,
-/*20111114 to 20180621
+/*20111114 to 20180704
지ì›í•˜ê¸°
Enter
20130807 to 20130814
@@ -12010,7 +12010,7 @@ Enter
Up to 36 english letters can be entered
*/
MSG_PARTY_REQUEST = 0x7fa,
-/*20111114 to 20180621
+/*20111114 to 20180704
1:1대화하기
1:1 Chat
20130807 to 20130814
@@ -12018,7 +12018,7 @@ Up to 36 english letters can be entered
Enter
*/
MSG_DIRECT_CHAT = 0x7fb,
-/*20111114 to 20180621
+/*20111114 to 20180704
차단하기
Block
20130807 to 20130814
@@ -12028,7 +12028,7 @@ Block
MSG_ADD_BLACKLIST = 0x7fc,
#endif
#if PACKETVER >= 20111122
-/*20111122 to 20180621
+/*20111122 to 20180704
파티장ì—게 소환ë˜ê¸° 위한 제니가 부족합니다.
Insufficient Zeny for recall.
20130807 to 20130814
@@ -12036,7 +12036,7 @@ Insufficient Zeny for recall.
Block
*/
MSG_PARTY_RECRUIT_NOT_RECALL_PAY = 0x7fd,
-/*20111122 to 20180621
+/*20111122 to 20180704
ë©”ëª¨ëž€ì— íŒŒí‹°ê´‘ê³ ë¥¼ ì¨ì£¼ì„¸ìš”.
Input your party ad.
20130807 to 20130814
@@ -12044,7 +12044,7 @@ Input your party ad.
Insufficient Zeny for recall.
*/
MSG_PARTY_RECRUIT_MEMO_ERROR = 0x7fe,
-/*20111122 to 20180621
+/*20111122 to 20180704
íŒŒí‹°ìž¥ë§Œì´ íŒŒí‹°ê´‘ê³ ë¥¼ 등ë¡í• ìˆ˜ìžˆìŠµë‹ˆë‹¤.
Only party leader can register party ad.
20130807 to 20130814
@@ -12052,7 +12052,7 @@ Only party leader can register party ad.
Input your party ad.
*/
MSG_PARTY_RECRUIT_ERROR = 0x7ff,
-/*20111122 to 20180621
+/*20111122 to 20180704
ì´ë¯¸ 지ì›í•œ 파티광고입니다.
You have already accepted this ad.
20130807 to 20130814
@@ -12060,7 +12060,7 @@ You have already accepted this ad.
Only party leader can register party ad.
*/
MSG_PARTY_REFUSE_ERROR = 0x800,
-/*20111122 to 20180621
+/*20111122 to 20180704
ë‚´ìš©
For
20130807 to 20130814
@@ -12068,7 +12068,7 @@ For
You have already accepted this ad.
*/
MSG_PARTY_RECRUIT_INFO = 0x801,
-/*20111122 to 20180621
+/*20111122 to 20180704
장비
E
20130807 to 20130814
@@ -12076,7 +12076,7 @@ E
For
*/
MSG_INVENTORY_TABNAME_1 = 0x802,
-/*20111122 to 20180621
+/*20111122 to 20180704
ê°œì¸
F
20130807 to 20130814
@@ -12084,7 +12084,7 @@ F
E
*/
MSG_INVENTORY_TABNAME_3 = 0x803,
-/*20111122 to 20180621
+/*20111122 to 20180704
ì•„ì´í…œ 버리기 잠금
Drop Lock: On/Off
20130807 to 20130814
@@ -12092,7 +12092,7 @@ E
F
*/
MSG_ITEM_DROP_LOCK = 0x804,
-/*20111122 to 20180621
+/*20111122 to 20180704
íŒŒí‹°ì› ì°¾ê¸° 알람
Party Alarm
20130807 to 20130814
@@ -12102,7 +12102,7 @@ Party Alarm
MSG_PARTY_RECRUIT_ALRAM = 0x805,
#endif
#if PACKETVER >= 20111207
-/*20111207 to 20180621
+/*20111207 to 20180704
파티결성
Create Party
20130807 to 20130814
@@ -12110,7 +12110,7 @@ Create Party
Party Alarm
*/
MSG_CREATE_PARTY = 0x806,
-/*20111207 to 20180621
+/*20111207 to 20180704
파티탈퇴
Leave Party
20130807 to 20130814
@@ -12118,7 +12118,7 @@ Leave Party
Create Party
*/
MSG_WITHDRAW_PARTY = 0x807,
-/*20111207 to 20180621
+/*20111207 to 20180704
파티초대
Party Invitation
20130807 to 20130814
@@ -12126,7 +12126,7 @@ Party Invitation
Leave Party
*/
MSG_INVITE_PARTY = 0x808,
-/*20111207 to 20180621
+/*20111207 to 20180704
파티 ì´ë¦„ 등ë¡
Party Name:
20130807 to 20130814
@@ -12134,7 +12134,7 @@ Party Name:
Party Invitation
*/
MSG_PUT_PARTY_NAME_IN = 0x809,
-/*20111207 to 20180621
+/*20111207 to 20180704
초대할 ìºë¦­í„° ì´ë¦„
Player Name:
20130807 to 20130814
@@ -12142,7 +12142,7 @@ Player Name:
Party Name:
*/
MSG_PUT_PLAYER_NAME_IN = 0x80a,
-/*20111207 to 20180621
+/*20111207 to 20180704
님께 파티가입 ìš”ì²­ì„ ë³´ëƒˆìŠµë‹ˆë‹¤.
has recieved an invitation to join your party.
20130807 to 20130814
@@ -12150,7 +12150,7 @@ Party Name:
Player Name:
*/
MSG_CHARACTER_PARTY_INVITATION_TO_JOIN = 0x80b,
-/*20111207 to 20180621
+/*20111207 to 20180704
님께서 íŒŒí‹°ê°€ìž…ì„ ê±°ì ˆí–ˆìŠµë‹ˆë‹¤.
rejected your party invitation.
20130807 to 20130814
@@ -12158,7 +12158,7 @@ Player Name:
has recieved an invitation to join your party.
*/
MSG_CHARACTER_REJECT_PARTY_INVITATION = 0x80c,
-/*20111207 to 20180621
+/*20111207 to 20180704
님께서 íŒŒí‹°ê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
accepted your party invitation.
20130807 to 20130814
@@ -12166,7 +12166,7 @@ Player Name:
rejected your party invitation.
*/
MSG_CHARACTER_ACCEPT_PARTY_INVITATION = 0x80d,
-/*20111207 to 20180621
+/*20111207 to 20180704
ì´ë¯¸ 파티모집중입니다.
Recruitment is already a party.
20130807 to 20130814
@@ -12174,7 +12174,7 @@ Recruitment is already a party.
accepted your party invitation.
*/
MSG_PARTY_RECRUIT_ERROR1 = 0x80e,
-/*20111207 to 20180621
+/*20111207 to 20180704
ì´ì „ 검색과 ê°™ì€ ì¡°ê±´ìž…ë‹ˆë‹¤.
Same conditions such as the previous search.
20130807 to 20130814
@@ -12182,7 +12182,7 @@ Same conditions such as the previous search.
Recruitment is already a party.
*/
MSG_PARTY_RECRUIT_ERROR2 = 0x80f,
-/*20111207 to 20180621
+/*20111207 to 20180704
길드 탈퇴 후 사용 가능합니다.
Guild after withdrwal.
20130807 to 20130814
@@ -12190,7 +12190,7 @@ Guild after withdrwal.
Same conditions such as the previous search.
*/
MSG_CHARNAME_CHANGE_FILED_GUILDMEMBER = 0x810,
-/*20111207 to 20180621
+/*20111207 to 20180704
파티 탈퇴 후 사용 가능합니다.
Party after secession.
20130807 to 20130814
@@ -12198,7 +12198,7 @@ Party after secession.
Guild after withdrwal.
*/
MSG_CHARNAME_CHANGE_FILED_PARTYMEMBER = 0x811,
-/*20111207 to 20180621
+/*20111207 to 20180704
소환 유저가 ì†Œí™˜ì´ ì•ˆë˜ëŠ” ë§µì— ìžˆìŠµë‹ˆë‹¤.
The player can not be summoned to this map.
20130807 to 20130814
@@ -12208,7 +12208,7 @@ Party after secession.
MSG_PARTY_RECRUIT_RECALL_ERR1 = 0x812,
/*20111207 to 20120229
íŒŒí‹°ìž¥ì´ ìžˆëŠ” 맵ì—서는 ì†Œí™˜ì´ ì•ˆë©ë‹ˆë‹¤.
-20120307 to 20180621
+20120307 to 20180704
현재 íŒŒí‹°ìž¥ì´ ìžˆëŠ” 맵ì—서는 ì†Œí™˜ì´ ì•ˆë©ë‹ˆë‹¤.
Party Leader is on a map that is restricted to summon players.
20130807 to 20130814
@@ -12216,7 +12216,7 @@ Party Leader is on a map that is restricted to summon players.
The player can not be summoned to this map.
*/
MSG_PARTY_RECRUIT_RECALL_ERR2 = 0x813,
-/*20111207 to 20180621
+/*20111207 to 20180704
소환거부ë˜ì—ˆìŠµë‹ˆë‹¤.
Summon has been denied.
20130807 to 20130814
@@ -12224,7 +12224,7 @@ Summon has been denied.
Party Leader is on a map that is restricted to summon players.
*/
MSG_PARTY_RECRUIT_RECALL_ERR3 = 0x814,
-/*20111207 to 20180621
+/*20111207 to 20180704
ì†Œí™˜ì„ í•  수 없습니다.
Can not be summoned.
20130807 to 20130814
@@ -12232,7 +12232,7 @@ Can not be summoned.
Summon has been denied.
*/
MSG_PARTY_RECRUIT_RECALL_ERR4 = 0x815,
-/*20111207 to 20180621
+/*20111207 to 20180704
파티초대는 파티장만 가능합니다.
Only the leader can invite.
20130807 to 20130814
@@ -12242,7 +12242,7 @@ Can not be summoned.
MSG_YOU_ARE_NOT_PARTYMASTER = 0x816,
#endif
#if PACKETVER >= 20111213
-/*20111213 to 20180621
+/*20111213 to 20180704
검색할 ì•„ì´í…œëª… ìž…ë ¥ :
Search item:
20130807 to 20130814
@@ -12250,7 +12250,7 @@ Search item:
Only the leader can invite.
*/
MSG_NC_ITEM_SEARCH = 0x817,
-/*20111213 to 20180621
+/*20111213 to 20180704
ìºë¦­í„°ëª…ì„ ìž…ë ¥í•˜ì…”ì•¼ 합니다.
You must enter a character name.
20130807 to 20130814
@@ -12258,7 +12258,7 @@ You must enter a character name.
Search item:
*/
MSG_PLEASE_PUT_CHARACTER_NAME_IN = 0x818,
-/*20111213 to 20180621
+/*20111213 to 20180704
파티ì´ë¦„ì„ ìž…ë ¥í•˜ì…”ì•¼ 합니다.
You must enter the name of the party.
20130807 to 20130814
@@ -12268,7 +12268,7 @@ You must enter a character name.
MSG_PLEASE_PUT_PARTY_NAME_IN = 0x819,
#endif
#if PACKETVER >= 20111220
-/*20111220 to 20180621
+/*20111220 to 20180704
길드 ë„우미
Guild Creation Window
20130807 to 20130814
@@ -12276,7 +12276,7 @@ Guild Creation Window
You must enter the name of the party.
*/
MSG_GUILD_HELPER = 0x81a,
-/*20111220 to 20180621
+/*20111220 to 20180704
가입ë˜ì–´ 있는 길드가 없습니다.
Join a guild or start your own!
20130807 to 20130814
@@ -12284,7 +12284,7 @@ Join a guild or start your own!
Guild Creation Window
*/
MSG_NO_GUILD_CURRENTLY_PARTICIPATED_IN = 0x81b,
-/*20111220 to 20180621
+/*20111220 to 20180704
길드 결성
Create Guild
20130807 to 20130814
@@ -12292,7 +12292,7 @@ Create Guild
Join a guild or start your own!
*/
MSG_CREATE_GUILD = 0x81c,
-/*20111220 to 20180621
+/*20111220 to 20180704
ìƒì„±í•  길드 ì´ë¦„
Guild Name
20130807 to 20130814
@@ -12300,7 +12300,7 @@ Guild Name
Create Guild
*/
MIS_PUT_GUILD_NAME_IN = 0x81d,
-/*20111220 to 20180621
+/*20111220 to 20180704
길드 결성 ë„움ë§
Guild System
20130807 to 20130814
@@ -12308,7 +12308,7 @@ Guild System
Guild Name
*/
MIS_GUILD_TIP = 0x81e,
-/*20111220 to 20180621
+/*20111220 to 20180704
길드 시스템ì´ëž€
What is the guild system
20130807 to 20130814
@@ -12316,7 +12316,7 @@ What is the guild system
Guild System
*/
MIS_GUILD_SYSTEM = 0x81f,
-/*20111220 to 20180621
+/*20111220 to 20180704
길드ì´ë¦„ì„ ìž…ë ¥í•˜ì…”ì•¼ 합니다.
You must enter the name of your guild.
20130807 to 20130814
@@ -12326,7 +12326,7 @@ What is the guild system
MSG_PLEASE_PUT_GUILD_NAME_IN = 0x820,
#endif
#if PACKETVER >= 20111227
-/*20111227 to 20180621
+/*20111227 to 20180704
지ì›í•œ 파티ì—ì„œ 거부당했습니다.
Supported at the party was rejected.
20130807 to 20130814
@@ -12336,7 +12336,7 @@ You must enter the name of your guild.
MSG_PARTY_RECRUIT_REFUSE_VOLUNTEER = 0x821,
#endif
#if PACKETVER >= 20120103
-/*20120103 to 20180621
+/*20120103 to 20180704
서비스 ì„ íƒ.
Select Service:
20130807 to 20130814
@@ -12344,7 +12344,7 @@ Select Service:
Supported at the party was rejected.
*/
MSG_SERVICESELECT = 0x822,
-/*20120103 to 20180621
+/*20120103 to 20180704
탈출 가능한 지역.
Possible escape area.
20130807 to 20130814
@@ -12352,20 +12352,20 @@ Possible escape area.
Select Service:
*/
MSG_SHOW_MAPNAMETITLE = 0x823,
-/*20120103 to 20180621
+/*20120103 to 20180704
Replay File List
20130807 to 20130814
탈출 가능한 지역.
Possible escape area.
*/
MSG_REPLAY_STR_REPLAYFILELIST = 0x824,
-/*20120103 to 20180621
+/*20120103 to 20180704
File info
20130807 to 20130814
Replay File List
*/
MSG_REPLAY_STR_FILEINFO = 0x825,
-/*20120103 to 20180621
+/*20120103 to 20180704
File List
20130807 to 20130814
File info
@@ -12373,7 +12373,7 @@ File info
MSG_REPLAY_STR_FILELIST = 0x826,
#endif
#if PACKETVER >= 20120117
-/*20120117 to 20180621
+/*20120117 to 20180704
%s ì•„ì´í…œì€ 거래가 불가능 합니다.
%s Item deal not possible.
20130807 to 20130814
@@ -12382,7 +12382,7 @@ File List
MSG_NOT_MOVEABLE_TRADE = 0x827,
#endif
#if PACKETVER >= 20120207
-/*20120207 to 20180621
+/*20120207 to 20180704
길드해체
Disband the Guild
20130807 to 20130814
@@ -12390,7 +12390,7 @@ Disband the Guild
%s Item deal not possible.
*/
MSG_GUILD_DISBAND = 0x828,
-/*20120207 to 20180621
+/*20120207 to 20180704
í•´ì²´í•  길드 ì´ë¦„
Enter Guild Name
20130807 to 20130814
@@ -12400,7 +12400,7 @@ Disband the Guild
MSG_PUT_DISBAND_GUILDNAME = 0x829,
#endif
#if PACKETVER >= 20120214
-/*20120214 to 20180621
+/*20120214 to 20180704
ì ‘ì†í•˜ì§€ 않았거나 존재하지 않는 ìºë¦­í„°ìž…니다.
The character is not online or does not exist.
20130807 to 20130814
@@ -12410,7 +12410,7 @@ Enter Guild Name
MSG_JOINGUILD_NOTEXIST_USER = 0x82a,
#endif
#if PACKETVER >= 20120228
-/*20120228 to 20180621
+/*20120228 to 20180704
팔콘 í˜¸ì¶œì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Failed to call Falcon.
20130807 to 20130814
@@ -12422,7 +12422,7 @@ The character is not online or does not exist.
#if PACKETVER >= 20120307
/*20120307 to 20120320
%d%% ( 프리미엄 %d%% + %s서버 %d%% )
-20120328 to 20180621
+20120328 to 20180704
%d%% ( 기본 100%% + 프리미엄 %d%% + %s서버 %d%% )
%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
20130807 to 20130814
@@ -12430,7 +12430,7 @@ The character is not online or does not exist.
Failed to call Falcon.
*/
MSG_BASIC_EXP_MSG_BRZ = 0x82c,
-/*20120307 to 20180621
+/*20120307 to 20180704
해당 유저는 현재 ê³µì„±ì „ì— ì°¸ê°€í•˜ê³  있습니다.
This user is currently participating in the siege.
20130807 to 20130814
@@ -12438,7 +12438,7 @@ This user is currently participating in the siege.
%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
*/
MSG_JOINGUILD_TARGET_USER_IN_SIEGEMAP = 0x82d,
-/*20120307 to 20180621
+/*20120307 to 20180704
ë™ì¼í•œ 맵ì—서만 파티장 ë³€ê²½ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
It is only possible to change the party leader while on the same map.
20130807 to 20130814
@@ -12446,7 +12446,7 @@ It is only possible to change the party leader while on the same map.
This user is currently participating in the siege.
*/
MSG_PARTY_MASTER_CHANGE_SAME_MAP = 0x82e,
-/*20120307 to 20180621
+/*20120307 to 20180704
현재 지역ì—서는 파티장 ë³€ê²½ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
In the current region it is not possible to change the party.
20130807 to 20130814
@@ -12454,7 +12454,7 @@ In the current region it is not possible to change the party.
It is only possible to change the party leader while on the same map.
*/
MSG_CANNOT_PARTY_MASTER_CHANGE_IN_MAP = 0x82f,
-/*20120307 to 20180621
+/*20120307 to 20180704
ê·¸ë¦¬í° ë‚´ë¦¬ê¸°
Gryphon making
20130807 to 20130814
@@ -12465,7 +12465,7 @@ In the current region it is not possible to change the party.
/*20120307 to 20120307
현재 ê³µì„±ì „ì— ì°¸ì—¬ 중ì´ë¯€ë¡œ 길드초대를 하실 수 없습니다.
You can't invite characters in WoE maps.
-20120314 to 20180621
+20120314 to 20180704
%dì›” %dì¼ %dì‹œ %d분 %dì´ˆ
Delete: %d/%d - %d:%d:%d
20130807 to 20130814
@@ -12475,7 +12475,7 @@ Gryphon making
MSG_TIME_TYPE3 = 0x831,
#endif
#if PACKETVER >= 20120314
-/*20120314 to 20180621
+/*20120314 to 20180704
현재 ê³µì„±ì „ì— ì°¸ì—¬ 중ì´ë¯€ë¡œ 길드초대를 하실 수 없습니다.
You can't invite characters in WoE maps.
20130807 to 20130814
@@ -12483,7 +12483,7 @@ You can't invite characters in WoE maps.
Delete: %d/%d - %d:%d:%d
*/
MSG_JOINGUILD_REQ_USER_IN_SIEGEMAP = 0x832,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì „ìž¥ì— ìž…ìž¥ 대기를 신청하셨습니다.
You are now in the battlefield queue.
20130807 to 20130814
@@ -12491,7 +12491,7 @@ You are now in the battlefield queue.
You can't invite characters in WoE maps.
*/
MSG_BATTLEFIELD_MSG_REQUEST_JOINWAIT = 0x833,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì¸ì›ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤.
Queuing has finished.
20130807 to 20130814
@@ -12499,7 +12499,7 @@ Queuing has finished.
You are now in the battlefield queue.
*/
MSG_BATTLEFIELD_MSG_FULL = 0x834,
-/*20120314 to 20180621
+/*20120314 to 20180704
확ì¸ë˜ì§€ ì•Šì€ ì „ìž¥ëª…ìž…ë‹ˆë‹¤.
Invalid name of the battlefield.
20130807 to 20130814
@@ -12507,7 +12507,7 @@ Invalid name of the battlefield.
Queuing has finished.
*/
MSG_BATTLEFIELD_MSG_UNKNOWN_NAME = 0x835,
-/*20120314 to 20180621
+/*20120314 to 20180704
확ì¸ë˜ì§€ ì•Šì€ ì‹ ì²­íƒ€ìž…ìž…ë‹ˆë‹¤.
Invalid type of application.
20130807 to 20130814
@@ -12515,7 +12515,7 @@ Invalid type of application.
Invalid name of the battlefield.
*/
MSG_BATTLEFIELD_MSG_UNKNOWN_TYPE = 0x836,
-/*20120314 to 20180621
+/*20120314 to 20180704
최대 ì¸ì›ì„ 초과하였습니다.
People count exceeded.
20130807 to 20130814
@@ -12523,7 +12523,7 @@ People count exceeded.
Invalid type of application.
*/
MSG_BATTLEFIELD_MSG_MAXOVER = 0x837,
-/*20120314 to 20180621
+/*20120314 to 20180704
입장 ë ˆë²¨ì´ ë§žì§€ 않습니다.
Your level doesn't fit this battlefield rules.
20130807 to 20130814
@@ -12531,7 +12531,7 @@ Your level doesn't fit this battlefield rules.
People count exceeded.
*/
MSG_BATTLEFIELD_MSG_JOIN_NOTLEVEL = 0x838,
-/*20120314 to 20180621
+/*20120314 to 20180704
중복 신청하셨습니다.
Duplicate application.
20130807 to 20130814
@@ -12539,7 +12539,7 @@ Duplicate application.
Your level doesn't fit this battlefield rules.
*/
MSG_BATTLEFIELD_MSG_JOIN_OVERLAP = 0x839,
-/*20120314 to 20180621
+/*20120314 to 20180704
재접ì†í›„ 다시 신청하여 주시기 ë°”ëžë‹ˆë‹¤.
After reconnecting, please re-apply.
20130807 to 20130814
@@ -12547,7 +12547,7 @@ After reconnecting, please re-apply.
Duplicate application.
*/
MSG_BATTLEFIELD_MSG_RESTART = 0x83a,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì§ì—…ì´ ë§žì§€ 않습니다.
Your class can't participate in this battlefield.
20130807 to 20130814
@@ -12555,7 +12555,7 @@ Your class can't participate in this battlefield.
After reconnecting, please re-apply.
*/
MSG_BATTLEFIELD_MSG_NOTJOB = 0x83b,
-/*20120314 to 20180621
+/*20120314 to 20180704
파티장ì´ë‚˜ ê¸¸ë“œìž¥ë§Œì´ ì‹ ì²­í•  수 있습니다.
Only party leader / guild master can apply.
20130807 to 20130814
@@ -12563,7 +12563,7 @@ Only party leader / guild master can apply.
Your class can't participate in this battlefield.
*/
MSG_BATTLEFIELD_MSG_JOIN_ONLYBOSS = 0x83c,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì „ìž¥ì„ ì´ìš© ì¤‘ì¸ íŒ€ì›ì´ 있어 ì‹ ì²­ì´ ë¶ˆê°€ëŠ¥ 합니다.
You can't apply while your team member is already on a battlefield.
20130807 to 20130814
@@ -12571,7 +12571,7 @@ You can't apply while your team member is already on a battlefield.
Only party leader / guild master can apply.
*/
MSG_BATTLEFIELD_MSG_BUSY_PARTYMEMBER = 0x83d,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장 입장 대기가 취소ë˜ì—ˆìŠµë‹ˆë‹¤.
You have left the battlefield queue.
20130807 to 20130814
@@ -12579,7 +12579,7 @@ You have left the battlefield queue.
You can't apply while your team member is already on a battlefield.
*/
MSG_BATTLEFIELD_MSG_CANCEL_JOINWAIT = 0x83e,
-/*20120314 to 20180621
+/*20120314 to 20180704
ìž˜ëª»ëœ ì „ìž¥ëª… 입니다.
Wrong battlefield name.
20130807 to 20130814
@@ -12587,7 +12587,7 @@ Wrong battlefield name.
You have left the battlefield queue.
*/
MSG_BATTLEFIELD_MSG_WRONG_NAME = 0x83f,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장 입장 대기 ìˆœìœ„ì— ì—†ìŠµë‹ˆë‹¤.
You are not in the battlefield queue list
20130807 to 20130814
@@ -12595,7 +12595,7 @@ You are not in the battlefield queue list
Wrong battlefield name.
*/
MSG_BATTLEFIELD_MSG_NOTRANK = 0x840,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì„ íƒí•˜ì‹  ì „ìž¥ì€ í˜„ìž¬ ì´ìš©í•˜ì‹¤ 수 없으므로 대기가 취소ë©ë‹ˆë‹¤.
The selected arena is unavailable; your application has been cancelled
20130807 to 20130814
@@ -12603,7 +12603,7 @@ The selected arena is unavailable; your application has been cancelled
You are not in the battlefield queue list
*/
MSG_BATTLEFIELD_MSG_FAIL_CHOICE = 0x841,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장 ìž…ìž¥ì„ ì·¨ì†Œí•˜ì˜€ìŠµë‹ˆë‹¤.
You have left the queue
20130807 to 20130814
@@ -12611,7 +12611,7 @@ You have left the queue
The selected arena is unavailable; your application has been cancelled
*/
MSG_BATTLEFIELD_MSG_CANCEL_JOIN = 0x842,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì „ìž¥ì— ìž…ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure you want to join a battleground?
20130807 to 20130814
@@ -12619,7 +12619,7 @@ Are you sure you want to join a battleground?
You have left the queue
*/
MSG_BATTLEFIELD_MSG_DOYOU_JOIN = 0x843,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장 입장 신청 시스템
[Battlefield application rules]
20130807 to 20130814
@@ -12627,7 +12627,7 @@ You have left the queue
Are you sure you want to join a battleground?
*/
MSG_BATTLEFIELD_HELP1 = 0x844,
-/*20120314 to 20180621
+/*20120314 to 20180704
입장 ì‹ ì²­ ë° ì „ìž¥ìœ¼ë¡œì˜ ê³µê°„ì´ë™ 불가 ìƒí™©
Application and position into the battlefield cannot be applied under this circumtances
20130807 to 20130814
@@ -12635,7 +12635,7 @@ Application and position into the battlefield cannot be applied under this circu
[Battlefield application rules]
*/
MSG_BATTLEFIELD_HELP2 = 0x845,
-/*20120314 to 20180621
+/*20120314 to 20180704
1. 여러 ì¢…ë¥˜ì˜ ì „ìž¥ì„ ë™ì‹œì— ì‹ ì²­í•  수 없습니다.
1. Different types of battle can not be applied simultaneously.
20130807 to 20130814
@@ -12643,7 +12643,7 @@ Application and position into the battlefield cannot be applied under this circu
Application and position into the battlefield cannot be applied under this circumtances
*/
MSG_BATTLEFIELD_HELP3 = 0x846,
-/*20120314 to 20180621
+/*20120314 to 20180704
2. ê°œì¸ / 파티 / 길드 ì „ìž¥ì„ ë™ì‹œì— ì‹ ì²­í•  수 없습니다.
2. Personal / party / guild battle can not be applied simultaneously.
20130807 to 20130814
@@ -12651,7 +12651,7 @@ Application and position into the battlefield cannot be applied under this circu
1. Different types of battle can not be applied simultaneously.
*/
MSG_BATTLEFIELD_HELP4 = 0x847,
-/*20120314 to 20180621
+/*20120314 to 20180704
3. 파티 전장 ì‹ ì²­ì€ íŒŒí‹°ìž¥ë§Œ ì‹ ì²­í•  수 있으며,
3. Parties can only be applied by their party leaders.
20130807 to 20130814
@@ -12659,7 +12659,7 @@ Application and position into the battlefield cannot be applied under this circu
2. Personal / party / guild battle can not be applied simultaneously.
*/
MSG_BATTLEFIELD_HELP5 = 0x848,
-/*20120314 to 20180621
+/*20120314 to 20180704
오프ë¼ì¸ì¤‘ì´ê±°ë‚˜ 오프ë¼ì¸ ëœ íŒŒí‹°ì›ì€ 대기열ì—ì„œ 누ë½ë©ë‹ˆë‹¤.
Offline party members won't proceed to the queue.
20130807 to 20130814
@@ -12667,7 +12667,7 @@ Offline party members won't proceed to the queue.
3. Parties can only be applied by their party leaders.
*/
MSG_BATTLEFIELD_HELP6 = 0x849,
-/*20120314 to 20180621
+/*20120314 to 20180704
4. 전장 ì‹ ì²­ì€ ì „ìž¥ ë§µì„ ì œì™¸í•œ 모든 ê³³ì—ì„œ ì‹ ì²­ 가능하나,
4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
20130807 to 20130814
@@ -12675,7 +12675,7 @@ Offline party members won't proceed to the queue.
Offline party members won't proceed to the queue.
*/
MSG_BATTLEFIELD_HELP7 = 0x84a,
-/*20120314 to 20180621
+/*20120314 to 20180704
입장한 위치가 마ì„, í•„ë“œ, ì¼ë°˜ ë˜ì „ì´ ì•„ë‹ ê²½ìš° 복귀 ì‹œ ìºë¦­í„° 저장 좌표로 ì´ë™ ë©ë‹ˆë‹¤.
When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
20130807 to 20130814
@@ -12683,7 +12683,7 @@ When the battle is finished your character will be returned to the current spot
4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
*/
MSG_BATTLEFIELD_HELP8 = 0x84b,
-/*20120314 to 20180621
+/*20120314 to 20180704
5. ì „ìž¥ì˜ ë³´ìƒ ë° ê¸°íƒ€ 서비스는 ê° ë§ˆì„ì— ìœ„ì¹˜í•œ 전장 ëª¨ë³‘ê´€ì„ í†µí•´ 전장 대기실ì—ì„œ ì´ìš©í•´ 주십시오.
5. You can view and choose rewards in the arena waiting room.
20130807 to 20130814
@@ -12691,7 +12691,7 @@ When the battle is finished your character will be returned to the current spot
When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
*/
MSG_BATTLEFIELD_HELP9 = 0x84c,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장 입장 ì‹ ì²­ ë„움ë§
Request help battle position
20130807 to 20130814
@@ -12699,7 +12699,7 @@ Request help battle position
5. You can view and choose rewards in the arena waiting room.
*/
MSG_BATTLEFIELD_HELP10 = 0x84d,
-/*20120314 to 20180621
+/*20120314 to 20180704
%s ì „ìž¥ì´ ì‹œìž‘ë©ë‹ˆë‹¤.
%s battle begins.
20130807 to 20130814
@@ -12707,7 +12707,7 @@ Request help battle position
Request help battle position
*/
MSG_BATTLEFIELD_START = 0x84e,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장으로 ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you want to enter the arena?
20130807 to 20130814
@@ -12715,7 +12715,7 @@ Do you want to enter the arena?
%s battle begins.
*/
MSG_BATTLEFIELD_DOYOU_MOVE = 0x84f,
-/*20120314 to 20180621
+/*20120314 to 20180704
[주ì˜]
[Note]
20130807 to 20130814
@@ -12723,7 +12723,7 @@ Do you want to enter the arena?
Do you want to enter the arena?
*/
MSG_BATTLEFIELD_WARNINGMSG1 = 0x850,
-/*20120314 to 20180621
+/*20120314 to 20180704
현재 위치가 마ì„, í•„ë“œ í˜¹ì€ ì¼ë°˜ë˜ì „ì´
When the battle is finished your character will
20130807 to 20130814
@@ -12731,7 +12731,7 @@ When the battle is finished your character will
[Note]
*/
MSG_BATTLEFIELD_WARNINGMSG2 = 0x851,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì•„ë‹ ê²½ìš° 전장 종료 후 ì €ìž¥ëœ ìœ„ì¹˜ë¡œ
be returned to the current spot or (if it's not
20130807 to 20130814
@@ -12739,7 +12739,7 @@ be returned to the current spot or (if it's not
When the battle is finished your character will
*/
MSG_BATTLEFIELD_WARNINGMSG3 = 0x852,
-/*20120314 to 20180621
+/*20120314 to 20180704
ë˜ëŒì•„가게 ë©ë‹ˆë‹¤.
possible) to the save point.
20130807 to 20130814
@@ -12747,7 +12747,7 @@ possible) to the save point.
be returned to the current spot or (if it's not
*/
MSG_BATTLEFIELD_WARNINGMSG4 = 0x853,
-/*20120314 to 20180621
+/*20120314 to 20180704
다른 ì´ì˜ 요청 결과를 기다리고 있습니다.
Waiting for the opponents.
20130807 to 20130814
@@ -12755,7 +12755,7 @@ Waiting for the opponents.
possible) to the save point.
*/
MSG_BATTLEFIELD_WAIT_PLAYER = 0x854,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장 입장 요청
Battlefield position request
20130807 to 20130814
@@ -12763,7 +12763,7 @@ Battlefield position request
Waiting for the opponents.
*/
MSG_BATTLEFIELD_REQUEST_JOIN = 0x855,
-/*20120314 to 20180621
+/*20120314 to 20180704
수ë½ëŒ€ê¸°ì‹œê°„:%dì´ˆ
Accept standby time:%d seconds
20130807 to 20130814
@@ -12771,7 +12771,7 @@ Accept standby time:%d seconds
Battlefield position request
*/
MSG_BATTLEFIELD_WAITTIME_D = 0x856,
-/*20120314 to 20180621
+/*20120314 to 20180704
입장 대기 ìƒíƒœ
Standby position
20130807 to 20130814
@@ -12779,7 +12779,7 @@ Standby position
Accept standby time:%d seconds
*/
MSG_BATTLEFIELD_STATE_JOINWAIT = 0x857,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장 명칭: %s
Battlefield name:%s
20130807 to 20130814
@@ -12787,7 +12787,7 @@ Battlefield name:%s
Standby position
*/
MSG_BATTLEFIELD_NAME_S = 0x858,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장 í•„ìš” ì¸ì›: %d
Persons required:%d
20130807 to 20130814
@@ -12795,7 +12795,7 @@ Persons required:%d
Battlefield name:%s
*/
MSG_BATTLEFIELD_MEMBER_D = 0x859,
-/*20120314 to 20180621
+/*20120314 to 20180704
내 대기순번: %d
Your position:%d
20130807 to 20130814
@@ -12803,7 +12803,7 @@ Your position:%d
Persons required:%d
*/
MSG_BATTLEFIELD_MYRANK_D = 0x85a,
-/*20120314 to 20180621
+/*20120314 to 20180704
명칭 :
Name:
20130807 to 20130814
@@ -12811,7 +12811,7 @@ Name:
Your position:%d
*/
MSG_BATTLEFIELD_DP_TITLE = 0x85b,
-/*20120314 to 20180621
+/*20120314 to 20180704
목표 :
Goal:
20130807 to 20130814
@@ -12819,7 +12819,7 @@ Goal:
Name:
*/
MSG_BATTLEFIELD_DP_AIM = 0x85c,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì „ìž¥ì˜ ì¸ì› 구성 :
Format:
20130807 to 20130814
@@ -12827,7 +12827,7 @@ Format:
Goal:
*/
MSG_BATTLEFIELD_DP_MEMBER = 0x85d,
-/*20120314 to 20180621
+/*20120314 to 20180704
참여조건 :
Level:
20130807 to 20130814
@@ -12835,7 +12835,7 @@ Level:
Format:
*/
MSG_BATTLEFIELD_DP_REQUIRED = 0x85e,
-/*20120314 to 20180621
+/*20120314 to 20180704
ë³´ìƒ(승) :
Win:
20130807 to 20130814
@@ -12843,7 +12843,7 @@ Win:
Level:
*/
MSG_BATTLEFIELD_DP_WIN = 0x85f,
-/*20120314 to 20180621
+/*20120314 to 20180704
ë³´ìƒ(무) :
Draw:
20130807 to 20130814
@@ -12851,7 +12851,7 @@ Draw:
Win:
*/
MSG_BATTLEFIELD_DP_DRAW = 0x860,
-/*20120314 to 20180621
+/*20120314 to 20180704
ë³´ìƒ(패) :
Loss:
20130807 to 20130814
@@ -12859,7 +12859,7 @@ Loss:
Draw:
*/
MSG_BATTLEFIELD_DP_LOSS = 0x861,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì „ìž¥ì„ ê°œì¸ìœ¼ë¡œ ì‹ ì²­ 하셨습니다. 맞습니까?
Do you want to participate in the individuals battle?
20130807 to 20130814
@@ -12867,7 +12867,7 @@ Do you want to participate in the individuals battle?
Loss:
*/
MSG_BATTLEFIELD_DOYOU_SINGLE = 0x862,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì „ìž¥ì„ íŒŒí‹°ë¡œ ì‹ ì²­ 하셨습니다. 맞습니까?
Do you want to participate in the parties battle?
20130807 to 20130814
@@ -12875,7 +12875,7 @@ Do you want to participate in the parties battle?
Do you want to participate in the individuals battle?
*/
MSG_BATTLEFIELD_DOYOU_PALTY = 0x863,
-/*20120314 to 20180621
+/*20120314 to 20180704
ì „ìž¥ì„ ê¸¸ë“œë¡œ ì‹ ì²­ 하셨습니다. 맞습니까?
Do you want to participate in the guilds battle?
20130807 to 20130814
@@ -12883,7 +12883,7 @@ Do you want to participate in the guilds battle?
Do you want to participate in the parties battle?
*/
MSG_BATTLEFIELD_DOYOU_GUILD = 0x864,
-/*20120314 to 20180621
+/*20120314 to 20180704
전장 목ë¡
Battleground List
20130807 to 20130814
@@ -12891,21 +12891,21 @@ Battleground List
Do you want to participate in the guilds battle?
*/
MSG_BATTLEFIELD_LIST2 = 0x865,
-/*20120314 to 20180621
+/*20120314 to 20180704
%d VS %d
20130807 to 20130814
전장 목ë¡
Battleground List
*/
MSG_BATTLEFIELD_D_VS_D = 0x866,
-/*20120314 to 20180621
+/*20120314 to 20180704
Base LV %d ì´í•˜
LV %d and lower
20130807 to 20130814
%d VS %d
*/
MSG_BATTLEFIELD_LEVELDOWN_D = 0x867,
-/*20120314 to 20180621
+/*20120314 to 20180704
Base LV %d ì´ìƒ
LV %d and higher
20130807 to 20130814
@@ -12913,7 +12913,7 @@ Base LV %d ì´í•˜
LV %d and lower
*/
MSG_BATTLEFIELD_LEVELUP_D = 0x868,
-/*20120314 to 20180621
+/*20120314 to 20180704
Base LV %d ~ %d
LV %d ~ %d
20130807 to 20130814
@@ -12921,7 +12921,7 @@ Base LV %d ì´ìƒ
LV %d and higher
*/
MSG_BATTLEFIELD_LEVEL_D_D = 0x869,
-/*20120314 to 20180621
+/*20120314 to 20180704
제한 ì—†ìŒ
No restrictions
20130807 to 20130814
@@ -12929,7 +12929,7 @@ Base LV %d ~ %d
LV %d ~ %d
*/
MSG_BATTLEFIELD_LIMITLESS = 0x86a,
-/*20120314 to 20180621
+/*20120314 to 20180704
[해당 맵ì—서는 신청하실 수 없습니다.]
[You can't apply on this map.]
20130807 to 20130814
@@ -12937,7 +12937,7 @@ LV %d ~ %d
No restrictions
*/
MSG_BATTLEFIELD_MSG_NOT_JOINMAP = 0x86b,
-/*20120314 to 20180621
+/*20120314 to 20180704
[전장 재신청까지 약 1ë¶„ì˜ ëŒ€ê¸°ì‹œê°„ì„ í•„ìš”ë¡œ 합니다.]
[You must wait about 1 minute to apply.]
20130807 to 20130814
@@ -12945,7 +12945,7 @@ No restrictions
[You can't apply on this map.]
*/
MSG_BATTLEFIELD_MSG_WAIT_1MM = 0x86c,
-/*20120314 to 20180621
+/*20120314 to 20180704
[íŒŒí‹°ì— ë¨¼ì € 가입하셔야 합니다.]
[You must be in a party.]
20130807 to 20130814
@@ -12953,7 +12953,7 @@ No restrictions
[You must wait about 1 minute to apply.]
*/
MSG_BATTLEFIELD_MSG_PLZ_PALTYJOIN = 0x86d,
-/*20120314 to 20180621
+/*20120314 to 20180704
[파티장만 신청 가능합니다.]
[Only party leader can apply.]
20130807 to 20130814
@@ -12961,7 +12961,7 @@ No restrictions
[You must be in a party.]
*/
MSG_BATTLEFIELD_MSG_NOT_PALTYBOSS = 0x86e,
-/*20120314 to 20180621
+/*20120314 to 20180704
[ì ‘ì†ë˜ì–´ìžˆëŠ” 파티ì¸ì›ìˆ˜ê°€ 많습니다.]
[Too many party members online.]
20130807 to 20130814
@@ -12969,7 +12969,7 @@ No restrictions
[Only party leader can apply.]
*/
MSG_BATTLEFIELD_MSG_OVER_PARTYMEMBER = 0x86f,
-/*20120314 to 20180621
+/*20120314 to 20180704
[ê¸¸ë“œì— ë¨¼ì € 가입하셔야 합니다.]
[You must be in a guild.]
20130807 to 20130814
@@ -12977,7 +12977,7 @@ No restrictions
[Too many party members online.]
*/
MSG_BATTLEFIELD_MSG_PLZ_GUILDJOIN = 0x870,
-/*20120314 to 20180621
+/*20120314 to 20180704
[길드장만 신청 가능합니다.]
[Only guild master can apply.]
20130807 to 20130814
@@ -12985,7 +12985,7 @@ No restrictions
[You must be in a guild.]
*/
MSG_BATTLEFIELD_MSG_NOT_GUILDBOSS = 0x871,
-/*20120314 to 20180621
+/*20120314 to 20180704
[ì ‘ì†ë˜ì–´ìžˆëŠ” 길드ì¸ì›ìˆ˜ê°€ 많습니다.]
[Too many guild members online.]
20130807 to 20130814
@@ -12995,7 +12995,7 @@ No restrictions
MSG_BATTLEFIELD_MSG_OVER_GUILDMEMBER = 0x872,
/*20120314 to 20120314
ì•„ì´í…œ 합치기
-20120320 to 20180621
+20120320 to 20180704
ì´ë™ì˜ˆì•½
Moving Book
20130807 to 20130814
@@ -13006,7 +13006,7 @@ Moving Book
/*20120314 to 20120314
ê°™ì€ ì¢…ë¥˜ì˜ ì•„ì´í…œì„ 2ê°œ ì´ìƒ ì„ íƒí•´ì£¼ì„¸ìš”.
Two or more of the same type. Please select an item.
-20120320 to 20180621
+20120320 to 20180704
ì´ë™
Move
20130807 to 20130814
@@ -13017,7 +13017,7 @@ Moving Book
/*20120314 to 20120314
ì•„ì´í…œ í•©ì¹˜ê¸°ì— ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
Item merge is successful.
-20120320 to 20180621
+20120320 to 20180704
ì´ë¦„변경
Rename
20130807 to 20130814
@@ -13028,7 +13028,7 @@ Move
/*20120314 to 20120314
ì•„ì´í…œ 합치기는 í•œë²ˆì— 1종류씩만 가능합니다.
Combining items will be only one kind at a time.
-20120320 to 20180621
+20120320 to 20180704
Make Character
20130807 to 20130814
ì´ë¦„변경
@@ -13038,7 +13038,7 @@ Rename
/*20120314 to 20120314
ì•„ì´í…œì˜ 개수가 30000ê°œ 초과 했습니다.
You cannot have more than 30,000 stacked items.
-20120320 to 20180621
+20120320 to 20180704
http://ro.game.gnjoy.com/
20130807 to 20130814
Make Character
@@ -13046,7 +13046,7 @@ Make Character
MSG_UAE_URL = 0x877,
#endif
#if PACKETVER >= 20120320
-/*20120320 to 20180621
+/*20120320 to 20180704
(%s) Server
20130807 to 20130814
http://ro.game.gnjoy.com/
@@ -13054,14 +13054,14 @@ http://ro.game.gnjoy.com/
MSG_UAE_SERVERSTR = 0x878,
/*20120320 to 20120328
ì•„ì´í…œ 합치기
-20120404 to 20180621
+20120404 to 20180704
ì•„ì´í…œ 병합(모ë‘ì„ íƒ Ctrl+í´ë¦­)
Item Merge
20130807 to 20130814
(%s) Server
*/
MSG_MERGE_ITEM = 0x879,
-/*20120320 to 20180621
+/*20120320 to 20180704
ê°™ì€ ì¢…ë¥˜ì˜ ì•„ì´í…œì„ 2ê°œ ì´ìƒ ì„ íƒí•´ì£¼ì„¸ìš”.
Two or more of the same type. Please select an item.
20130807 to 20130814
@@ -13069,7 +13069,7 @@ Two or more of the same type. Please select an item.
Item Merge
*/
MSG_SELECT_ITEM_TO_MERGE = 0x87a,
-/*20120320 to 20180621
+/*20120320 to 20180704
ì•„ì´í…œ í•©ì¹˜ê¸°ì— ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
Item merge is successful.
20130807 to 20130814
@@ -13077,7 +13077,7 @@ Item merge is successful.
Two or more of the same type. Please select an item.
*/
MSG_MERGE_ITEM_SUCCESS = 0x87b,
-/*20120320 to 20180621
+/*20120320 to 20180704
ì•„ì´í…œ 합치기는 í•œë²ˆì— 1종류씩만 가능합니다.
Combining items will be only one kind at a time.
20130807 to 20130814
@@ -13085,7 +13085,7 @@ Combining items will be only one kind at a time.
Item merge is successful.
*/
MSG_MERGE_ITEM_FAILED_NOT_MERGE = 0x87c,
-/*20120320 to 20180621
+/*20120320 to 20180704
ì•„ì´í…œì˜ 개수가 30000ê°œ 초과 했습니다.
You cannot have more than 30,000 stacked items.
20130807 to 20130814
@@ -13095,7 +13095,7 @@ Combining items will be only one kind at a time.
MSG_MERGE_ITEM_FAILED_MAX_COUNT = 0x87d,
#endif
#if PACKETVER >= 20120328
-/*20120328 to 20180621
+/*20120328 to 20180704
좌로 회전
Rotate left
20130807 to 20130814
@@ -13103,7 +13103,7 @@ Rotate left
You cannot have more than 30,000 stacked items.
*/
MSG_CHARACTER_LEFT_ROLL = 0x87e,
-/*20120328 to 20180621
+/*20120328 to 20180704
우로 회전
Rotate right
20130807 to 20130814
@@ -13111,7 +13111,7 @@ Rotate right
Rotate left
*/
MSG_CHARACTER_RIGHT_ROLL = 0x87f,
-/*20120328 to 20180621
+/*20120328 to 20180704
(%s)ë‹˜ì˜ ì´ì „서버 정보보기
(%s) to view the old server information
20130807 to 20130814
@@ -13119,7 +13119,7 @@ Rotate left
Rotate right
*/
MSG_VIEW_BEFORE_WORLDINFO = 0x880,
-/*20120328 to 20180621
+/*20120328 to 20180704
기존 서버 정보
Existing server information
20130807 to 20130814
@@ -13127,7 +13127,7 @@ Existing server information
(%s) to view the old server information
*/
MSG_VIEW_BEFORE_WORLDINFO_TITLE = 0x881,
-/*20120328 to 20180621
+/*20120328 to 20180704
^ff0000기존 서버 : ^0000ff
^ff0000Existing server: ^0000ff
20130807 to 20130814
@@ -13135,7 +13135,7 @@ Existing server information
Existing server information
*/
MSG_VIEW_BEFORE_SERVERINFO = 0x882,
-/*20120328 to 20180621
+/*20120328 to 20180704
^ff0000기존 ìºë¦­ëª… : ^0000ff
^ff0000Existing character: ^0000ff
20130807 to 20130814
@@ -13143,7 +13143,7 @@ Existing server information
^ff0000Existing server: ^0000ff
*/
MSG_VIEW_BEFORE_CHARNAME = 0x883,
-/*20120328 to 20180621
+/*20120328 to 20180704
공격한 ëª¬ìŠ¤í„°ì˜ HPê°€ 표시ë©ë‹ˆë‹¤.
Show monster HP bar when attacking.
20130807 to 20130814
@@ -13153,7 +13153,7 @@ Show monster HP bar when attacking.
MSG_MONSTER_HP_ON = 0x884,
/*20120328 to 20120328
공격한 ëª¬ìŠ¤í„°ì˜ HPê°€ 표시ë˜ì§€ 않습니다..
-20120404 to 20180621
+20120404 to 20180704
공격한 ëª¬ìŠ¤í„°ì˜ HPê°€ 표시ë˜ì§€ 않습니다.
Hide monster HP bar when attacking.
20130807 to 20130814
@@ -13163,7 +13163,7 @@ Show monster HP bar when attacking.
MSG_MONSTER_HP_OFF = 0x885,
#endif
#if PACKETVER >= 20120404
-/*20120404 to 20180621
+/*20120404 to 20180704
병합 가능한 ì•„ì´í…œì´ 존재하지 않습니다
Merge does not exist as an item
20130807 to 20130814
@@ -13171,7 +13171,7 @@ Merge does not exist as an item
Hide monster HP bar when attacking.
*/
MSG_MERGE_ITEM_FAILED_NOT_EXIST = 0x886,
-/*20120404 to 20180621
+/*20120404 to 20180704
병합 가능한 ì•„ì´í…œì´ 존재하지 않습니다.
Merge items available does not exist.
20130807 to 20130814
@@ -13179,7 +13179,7 @@ Merge items available does not exist.
Merge does not exist as an item
*/
MSG_NOT_EXIST_MERGE_ITEM = 0x887,
-/*20120404 to 20180621
+/*20120404 to 20180704
진행중
Act
20130807 to 20130814
@@ -13187,7 +13187,7 @@ Act
Merge items available does not exist.
*/
MSG_QUESTUI_TAB_PROCESS = 0x888,
-/*20120404 to 20180621
+/*20120404 to 20180704
보류중
Pen
20130807 to 20130814
@@ -13195,7 +13195,7 @@ Pen
Act
*/
MSG_QUESTUI_TAB_HOLD = 0x889,
-/*20120404 to 20180621
+/*20120404 to 20180704
추천
Rec
20130807 to 20130814
@@ -13203,7 +13203,7 @@ Rec
Pen
*/
MSG_QUESTUI_TAB_BEST = 0x88a,
-/*20120404 to 20180621
+/*20120404 to 20180704
ì—피소드
Episode
20130807 to 20130814
@@ -13211,7 +13211,7 @@ Episode
Rec
*/
MSG_QUESTUI_TAB_EPISODE = 0x88b,
-/*20120404 to 20180621
+/*20120404 to 20180704
로컬
Loc
20130807 to 20130814
@@ -13219,7 +13219,7 @@ Loc
Episode
*/
MSG_QUESTUI_TAB_LOCAL = 0x88c,
-/*20120404 to 20180621
+/*20120404 to 20180704
ì´ë²¤íŠ¸
Evt
20130807 to 20130814
@@ -13227,7 +13227,7 @@ Evt
Loc
*/
MSG_QUESTUI_TAB_EVENT = 0x88d,
-/*20120404 to 20180621
+/*20120404 to 20180704
신규
New
20130807 to 20130814
@@ -13235,7 +13235,7 @@ New
Evt
*/
MSG_QUESTUI_TAB_NEW = 0x88e,
-/*20120404 to 20180621
+/*20120404 to 20180704
사냥몬스터
Monsters to kill
20130807 to 20130814
@@ -13243,7 +13243,7 @@ Monsters to kill
New
*/
MSG_QUESTUI_HUNTMONSTER = 0x88f,
-/*20120404 to 20180621
+/*20120404 to 20180704
ë³´ìƒì•„ì´í…œ
Rewards
20130807 to 20130814
@@ -13251,7 +13251,7 @@ Rewards
Monsters to kill
*/
MSG_QUESTUI_REWARDITEM = 0x890,
-/*20120404 to 20180621
+/*20120404 to 20180704
필요아ì´í…œ
Required Items
20130807 to 20130814
@@ -13259,7 +13259,7 @@ Required Items
Rewards
*/
MSG_QUESTUI_NEEDITEM = 0x891,
-/*20120404 to 20180621
+/*20120404 to 20180704
제한시간
Time Limit
20130807 to 20130814
@@ -13267,7 +13267,7 @@ Time Limit
Required Items
*/
MSG_QUESTUI_TIMELIMIT = 0x892,
-/*20120404 to 20180621
+/*20120404 to 20180704
마ê°ì‹œê°„
Deadline
20130807 to 20130814
@@ -13277,7 +13277,7 @@ Time Limit
MSG_QUESTUI_CLOSINGTIME = 0x893,
#endif
#if PACKETVER >= 20120417
-/*20120417 to 20180621
+/*20120417 to 20180704
검색
Search
20130807 to 20130814
@@ -13285,7 +13285,7 @@ Search
Deadline
*/
MSG_NAVIGATION_SEARCH = 0x894,
-/*20120417 to 20180621
+/*20120417 to 20180704
목표로 안내
Navigation
20130807 to 20130814
@@ -13293,7 +13293,7 @@ Navigation
Search
*/
MSG_NAVIGATION_TARGETGO = 0x895,
-/*20120417 to 20180621
+/*20120417 to 20180704
길 정보
Back to Navigation
20130807 to 20130814
@@ -13301,7 +13301,7 @@ Back to Navigation
Navigation
*/
MSG_NAVIGATION_ROUTEINFO = 0x896,
-/*20120417 to 20180621
+/*20120417 to 20180704
검색 정보
Find Information
20130807 to 20130814
@@ -13309,7 +13309,7 @@ Find Information
Back to Navigation
*/
MSG_NAVIGATION_SEARCHINFO = 0x897,
-/*20120417 to 20180621
+/*20120417 to 20180704
보기 모드 변경
Toggle Minimap
20130807 to 20130814
@@ -13319,7 +13319,7 @@ Find Information
MSG_NAVIGATION_VIEWCHANGE = 0x898,
/*20120417 to 20130109
안내 지시 ìƒ‰ìƒ ë³€ê²½
-20130115 to 20180621
+20130115 to 20180704
외부 길정보 íŒŒì¼ ì½ê¸°
Read Information from External File
20130807 to 20130814
@@ -13327,7 +13327,7 @@ Read Information from External File
Toggle Minimap
*/
MSG_NAVIGATION_LIGHTCHANGE = 0x899,
-/*20120417 to 20180621
+/*20120417 to 20180704
종료
Exit
20130807 to 20130814
@@ -13335,7 +13335,7 @@ Exit
Read Information from External File
*/
MSG_NAVIGATION_END = 0x89a,
-/*20120417 to 20180621
+/*20120417 to 20180704
기본 UI로 변경
Change the Default UI
20130807 to 20130814
@@ -13343,7 +13343,7 @@ Change the Default UI
Exit
*/
MSG_NAVIGATION_BASE = 0x89b,
-/*20120417 to 20180621
+/*20120417 to 20180704
간편 UI로 변경
Change to Default UI
20130807 to 20130814
@@ -13351,7 +13351,7 @@ Change to Default UI
Change the Default UI
*/
MSG_NAVIGATION_MINI = 0x89c,
-/*20120417 to 20180621
+/*20120417 to 20180704
ë„움ë§
Help
20130807 to 20130814
@@ -13359,7 +13359,7 @@ Help
Change to Default UI
*/
MSG_NAVIGATION_HELP = 0x89d,
-/*20120417 to 20180621
+/*20120417 to 20180704
ALL
All
20130807 to 20130814
@@ -13367,75 +13367,75 @@ All
Help
*/
MSG_NAVIGATION_ALL = 0x89e,
-/*20120417 to 20180621
+/*20120417 to 20180704
Map
20130807 to 20130814
ALL
All
*/
MSG_NAVIGATION_MAP = 0x89f,
-/*20120417 to 20180621
+/*20120417 to 20180704
Npc
20130807 to 20130814
Map
*/
MSG_NAVIGATION_NPC = 0x8a0,
-/*20120417 to 20180621
+/*20120417 to 20180704
Mob
20130807 to 20130814
Npc
*/
MSG_NAVIGATION_MOB = 0x8a1,
-/*20120417 to 20180621
+/*20120417 to 20180704
검색 단어 설정 (Ex: 단어 단어 ...
Enter search string... (Ex: word word ...)
20130807 to 20130814
Mob
*/
MSG_NAVIGATION_SETSTRING = 0x8a2,
-/*20120417 to 20180621
+/*20120417 to 20180704
Scroll
20130807 to 20130814
검색 단어 설정 (Ex: 단어 단어 ...
Enter search string... (Ex: word word ...)
*/
MSG_NAVIGATION_SCROLL = 0x8a3,
-/*20120417 to 20180621
+/*20120417 to 20180704
ë˜ì „ì´ë™ 스í¬ë¡¤ 사용 ì ìš©
Use Scroll?
20130807 to 20130814
Scroll
*/
MSG_NAVIGATION_USESCROLL = 0x8a4,
-/*20120417 to 20180621
+/*20120417 to 20180704
Service
20130807 to 20130814
ë˜ì „ì´ë™ 스í¬ë¡¤ 사용 ì ìš©
Use Scroll?
*/
MSG_NAVIGATION_SERVICE = 0x8a5,
-/*20120417 to 20180621
+/*20120417 to 20180704
위치 ì´ë™ 서비스 허용
Use Kafra Warp?
20130807 to 20130814
Service
*/
MSG_NAVIGATION_USESERVICE = 0x8a6,
-/*20120417 to 20180621
+/*20120417 to 20180704
Plane
20130807 to 20130814
위치 ì´ë™ 서비스 허용
Use Kafra Warp?
*/
MSG_NAVIGATION_PLANE = 0x8a7,
-/*20120417 to 20180621
+/*20120417 to 20180704
비공정 ì´ë™ ì ìš©
Use Airship?
20130807 to 20130814
Plane
*/
MSG_NAVIGATION_USEPLANE = 0x8a8,
-/*20120417 to 20180621
+/*20120417 to 20180704
>> 목표 정보를 ì½ì§€ 못함!
>> Failed to read the target information.
20130807 to 20130814
@@ -13443,7 +13443,7 @@ Plane
Use Airship?
*/
MSG_NAVIGATION_TARGETUNKNOWN = 0x8a9,
-/*20120417 to 20180621
+/*20120417 to 20180704
<< 안내중 >>
>> Destination <<
20130807 to 20130814
@@ -13451,7 +13451,7 @@ Use Airship?
>> Failed to read the target information.
*/
MSG_NAVIGATION_GOING = 0x8aa,
-/*20120417 to 20180621
+/*20120417 to 20180704
<< 검색중... >>
<< Goal >>
20130807 to 20130814
@@ -13459,53 +13459,53 @@ Use Airship?
>> Destination <<
*/
MSG_NAVIGATION_SEARCHING = 0x8ab,
-/*20120417 to 20180621
+/*20120417 to 20180704
-----------
20130807 to 20130814
<< 검색중... >>
<< Goal >>
*/
MSG_NAVIGATION_UN = 0x8ac,
-/*20120417 to 20180621
+/*20120417 to 20180704
Navigation
20130807 to 20130814
-----------
*/
MSG_NAVIGATION_NAVI = 0x8ad,
-/*20120417 to 20180621
+/*20120417 to 20180704
== 검색 결과(%d)==
= Found (%d) ==
20130807 to 20130814
Navigation
*/
MSG_NAVIGATION_SEARCHRESULT_D = 0x8ae,
-/*20120417 to 20180621
+/*20120417 to 20180704
Npc)%s:%s
20130807 to 20130814
== 검색 결과(%d)==
= Found (%d) ==
*/
MSG_NAVIGATION_NPC_S_S = 0x8af,
-/*20120417 to 20180621
+/*20120417 to 20180704
Mob)%s:%s
20130807 to 20130814
Npc)%s:%s
*/
MSG_NAVIGATION_MOB_S_S = 0x8b0,
-/*20120417 to 20180621
+/*20120417 to 20180704
Map)%s
20130807 to 20130814
Mob)%s:%s
*/
MSG_NAVIGATION_MAP_S = 0x8b1,
-/*20120417 to 20180621
+/*20120417 to 20180704
======== ê²°ê³¼ ì •ë³´ ==========
======== Results ==========
20130807 to 20130814
Map)%s
*/
MSG_NAVIGATION_RESULTINFO = 0x8b2,
-/*20120417 to 20180621
+/*20120417 to 20180704
거리 : %d Sell %d WarpMove
Dist %d Cell %d WarpMove
20130807 to 20130814
@@ -13513,7 +13513,7 @@ Dist %d Cell %d WarpMove
======== Results ==========
*/
MSG_NAVIGATION_LENGTH = 0x8b3,
-/*20120417 to 20180621
+/*20120417 to 20180704
목표맵: %s(%s)
Coords %s(%s)
20130807 to 20130814
@@ -13521,7 +13521,7 @@ Coords %s(%s)
Dist %d Cell %d WarpMove
*/
MSG_NAVIGATION_TARGETMAP_S_S = 0x8b4,
-/*20120417 to 20180621
+/*20120417 to 20180704
목표 : %s(%d, %d)
Goal:%s (%d,%d)
20130807 to 20130814
@@ -13529,7 +13529,7 @@ Goal:%s (%d,%d)
Coords %s(%s)
*/
MSG_NAVIGATION_TARGET_S_D_D = 0x8b5,
-/*20120417 to 20180621
+/*20120417 to 20180704
보스
Boss
20130807 to 20130814
@@ -13537,7 +13537,7 @@ Boss
Goal:%s (%d,%d)
*/
MSG_NAVIGATION_BOSS = 0x8b6,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì¼ë°˜
General
20130807 to 20130814
@@ -13545,7 +13545,7 @@ General
Boss
*/
MSG_NAVIGATION_NORMAL = 0x8b7,
-/*20120417 to 20180621
+/*20120417 to 20180704
목표 : %s(%s)
Goal:
20130807 to 20130814
@@ -13553,7 +13553,7 @@ Goal:
General
*/
MSG_NAVIGATION_TARGET_S_S = 0x8b8,
-/*20120417 to 20180621
+/*20120417 to 20180704
목표: (%d, %d)
Goal: (%d, %d)
20130807 to 20130814
@@ -13561,7 +13561,7 @@ Goal: (%d, %d)
Goal:
*/
MSG_NAVIGATION_TARGET_D_D = 0x8b9,
-/*20120417 to 20180621
+/*20120417 to 20180704
======= 길 안내 정보 =======
======= Guidance =======
20130807 to 20130814
@@ -13569,7 +13569,7 @@ Goal:
Goal: (%d, %d)
*/
MSG_NAVIGATION_GOINFO = 0x8ba,
-/*20120417 to 20180621
+/*20120417 to 20180704
%2d) Item:%s => %s 사용!
%2d) Item:%s => %s Use!
20130807 to 20130814
@@ -13577,33 +13577,33 @@ Goal: (%d, %d)
======= Guidance =======
*/
MSG_NAVIGATION_ITEM_S_S = 0x8bb,
-/*20120417 to 20180621
+/*20120417 to 20180704
%2d) %s(%d,%d)=>(%d,%d)
20130807 to 20130814
%2d) Item:%s => %s 사용!
%2d) Item:%s => %s Use!
*/
MSG_NAVIGATION_D_S_D_D_D_D = 0x8bc,
-/*20120417 to 20180621
+/*20120417 to 20180704
E%2d) %s(%d,%d)=>(%d,%d)
20130807 to 20130814
%2d) %s(%d,%d)=>(%d,%d)
*/
MSG_NAVIGATION_E_D_S_D_D_D_D = 0x8bd,
-/*20120417 to 20180621
+/*20120417 to 20180704
E%2d) %s
20130807 to 20130814
E%2d) %s(%d,%d)=>(%d,%d)
*/
MSG_NAVIGATION_E_D_S = 0x8be,
-/*20120417 to 20180621
+/*20120417 to 20180704
안내중 입니다! 종료 하시겠습니까?
Do you want to cancel navigation?
20130807 to 20130814
E%2d) %s
*/
MSG_NAVIGATION_GOEXIT = 0x8bf,
-/*20120417 to 20180621
+/*20120417 to 20180704
내비게ì´ì…˜ ë„움ë§
How to Use Navigation
20130807 to 20130814
@@ -13611,7 +13611,7 @@ How to Use Navigation
Do you want to cancel navigation?
*/
MSG_NAVIGATION_HELPTITLE = 0x8c0,
-/*20120417 to 20180621
+/*20120417 to 20180704
------------------- 명령어 --------------------
------------------- Instruction --------------------
20130807 to 20130814
@@ -13619,7 +13619,7 @@ Do you want to cancel navigation?
How to Use Navigation
*/
MSG_NAVIGATION_HELP1 = 0x8c1,
-/*20120417 to 20180621
+/*20120417 to 20180704
1. /navigation /navi
1) /Navigation or /navi
20130807 to 20130814
@@ -13629,7 +13629,7 @@ How to Use Navigation
MSG_NAVIGATION_HELP2 = 0x8c2,
/*20120417 to 20120417
ex)/navi prontera 100 100 -> 맵ì´ë¦„, 100, 100
-20120424 to 20180621
+20120424 to 20180704
ex)/navi prontera 100/100 -> 맵ì´ë¦„, 100/100
ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
20130807 to 20130814
@@ -13640,7 +13640,7 @@ ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
/*20120417 to 20120417
2. /navigation2 /navi2
ex) /navi2 prontera 100 111
-20120424 to 20180621
+20120424 to 20180704
기본 명령어는 제니, 비공정 ê²€ìƒ‰ì„ ê¸°ë³¸ìœ¼ë¡œ 합니다.
2) /Navigation2 or /navi2
20130807 to 20130814
@@ -13650,7 +13650,7 @@ ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
MSG_NAVIGATION_HELP4 = 0x8c4,
/*20120417 to 20120417
ex) /navi2 prontera 100090 111
-20120424 to 20180621
+20120424 to 20180704
2. /navigation2 /navi2
ex) /navi2 prontera 100 111
20130807 to 20130814
@@ -13660,7 +13660,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP5 = 0x8c5,
/*20120417 to 20120417
-> 맵ì´ë¦„, 위치(100 90), scrool/ zeny/ plane (1:사용함 0: 사용안함)
-20120424 to 20180621
+20120424 to 20180704
ex) /navi2 prontera 100/100 1/1/1
-> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
20130807 to 20130814
@@ -13670,7 +13670,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP6 = 0x8c6,
/*20120417 to 20120417
※ /navi2 ì˜ ê²½ìš° 반드시 위치 좌표를 붙여서 3 ìžë¦¬ë¡œ ì ì–´ì•¼ 한다
-20120424 to 20180621
+20120424 to 20180704
-> 맵ì´ë¦„, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
20130807 to 20130814
@@ -13680,7 +13680,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP7 = 0x8c7,
/*20120417 to 20120417
3. /$$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
-20120424 to 20180621
+20120424 to 20180704
3. $$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
3) /$$ Output all the items (Can take a while...)
20130807 to 20130814
@@ -13690,7 +13690,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP8 = 0x8c8,
/*20120417 to 20120417
4. /$$lv30 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력
-20120424 to 20180621
+20120424 to 20180704
4. $$lv30 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력
4) /$$ Lv30 monsters are placed in the output
20130807 to 20130814
@@ -13700,7 +13700,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP9 = 0x8c9,
/*20120417 to 20120417
5. /$$lv20~30 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력
-20120424 to 20180621
+20120424 to 20180704
5. $$lv20~30 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력
5) /$$ Lv20~30 monsters in that level range are placed in the output
20130807 to 20130814
@@ -13708,7 +13708,7 @@ ex) /navi2 prontera 100 111
4) /$$ Lv30 monsters are placed in the output
*/
MSG_NAVIGATION_HELP10 = 0x8ca,
-/*20120417 to 20180621
+/*20120417 to 20180704
------------------- 설명 --------------------
------------------- Description --------------------
20130807 to 20130814
@@ -13716,7 +13716,7 @@ ex) /navi2 prontera 100 111
5) /$$ Lv20~30 monsters in that level range are placed in the output
*/
MSG_NAVIGATION_HELP11 = 0x8cb,
-/*20120417 to 20180621
+/*20120417 to 20180704
1.검색 종류는 ì „ì²´, 맵, Npc, 몬스터 으로 분류 ëœë‹¤.
1) One can search for monsters, npcs, maps, or all at once
20130807 to 20130814
@@ -13724,7 +13724,7 @@ ex) /navi2 prontera 100 111
------------------- Description --------------------
*/
MSG_NAVIGATION_HELP12 = 0x8cc,
-/*20120417 to 20180621
+/*20120417 to 20180704
2.명령어로 검색한다. ê·œì¹™ì€ ê²€ìƒ‰ 하려는 문ìžì—´ì´ ëª¨ë‘ í¬í•¨ëœ 정보를 출력 한다.
2) You can press the search button to get results. It will out put the results depending on what rule you choose
20130807 to 20130814
@@ -13732,7 +13732,7 @@ ex) /navi2 prontera 100 111
1) One can search for monsters, npcs, maps, or all at once
*/
MSG_NAVIGATION_HELP13 = 0x8cd,
-/*20120417 to 20180621
+/*20120417 to 20180704
ex) 프론 카프 -> 검색 ê²°ê³¼ 프론테ë¼ì˜ 카프ë¼ë¥¼ ëª¨ë‘ ì¶œë ¥ 한다.
ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
20130807 to 20130814
@@ -13740,7 +13740,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
2) You can press the search button to get results. It will out put the results depending on what rule you choose
*/
MSG_NAVIGATION_HELP14 = 0x8ce,
-/*20120417 to 20180621
+/*20120417 to 20180704
3.리스트ì—ì„œ í•­ëª©ì„ ì„ íƒí•˜ë©´ ì •ë³´ê°€ 출력ëœë‹¤.
3) When you select an item from a list, information about it are displayed.
20130807 to 20130814
@@ -13748,7 +13748,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
*/
MSG_NAVIGATION_HELP15 = 0x8cf,
-/*20120417 to 20180621
+/*20120417 to 20180704
출력 ë˜ê³  있는 목표가 있ì„ë•Œ 안내 ë²„íŠ¼ì„ í´ë¦­í•˜ë©´ 해당 목표로 ê¸¸ì„ ì•ˆë‚´ 한다.
-> When button is clicked, it will point you towards your destination if available
20130807 to 20130814
@@ -13756,7 +13756,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
3) When you select an item from a list, information about it are displayed.
*/
MSG_NAVIGATION_HELP16 = 0x8d0,
-/*20120417 to 20180621
+/*20120417 to 20180704
4.scrool/ zeny/ plane ìƒìžë¥¼ ì›í•˜ëŠ” ë§Œí¼ ì²´í¬í•˜ì—¬ ë” ë¹ ë¥¸ 경로를 안내 ë°›ì„ ìˆ˜ 있다.
4) Scroll | Zeny | Plane options can be checked to find a faster route
20130807 to 20130814
@@ -13764,7 +13764,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
-> When button is clicked, it will point you towards your destination if available
*/
MSG_NAVIGATION_HELP17 = 0x8d1,
-/*20120417 to 20180621
+/*20120417 to 20180704
5.안내 ë²„íŠ¼ì´ ëˆŒëŸ¬ì§€ë©´ ê²°ê³¼ ë¦¬ìŠ¤íŠ¸ì°½ì€ ê¸¸ì•ˆë‚´ 리스트 장으로 변경 ëœë‹¤.
5) Guide button is pressed, the result list window displays where routes can change direction
20130807 to 20130814
@@ -13772,7 +13772,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
4) Scroll | Zeny | Plane options can be checked to find a faster route
*/
MSG_NAVIGATION_HELP18 = 0x8d2,
-/*20120417 to 20180621
+/*20120417 to 20180704
6.검색 리스트창 하단 ë²„íŠ¼ì„ ì´ìš©í•˜ì—¬
6) Using the button below, search results can be found
20130807 to 20130814
@@ -13780,7 +13780,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
5) Guide button is pressed, the result list window displays where routes can change direction
*/
MSG_NAVIGATION_HELP19 = 0x8d3,
-/*20120417 to 20180621
+/*20120417 to 20180704
[결과 리스트 창] <-> [길 안내 정보 창] 으로 보기 모드 변경 가능하다.
-> [Results List Window] <-> [View Modes can be switched]
20130807 to 20130814
@@ -13788,7 +13788,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
6) Using the button below, search results can be found
*/
MSG_NAVIGATION_HELP20 = 0x8d4,
-/*20120417 to 20180621
+/*20120417 to 20180704
Level:%d (보스)
Level:%d (Boss)
20130807 to 20130814
@@ -13796,7 +13796,7 @@ Level:%d (Boss)
-> [Results List Window] <-> [View Modes can be switched]
*/
MSG_NAVIGATION_LEVEL_D_BOSS = 0x8d5,
-/*20120417 to 20180621
+/*20120417 to 20180704
Level:%d (ì¼ë°˜)
Level:%d (Mob)
20130807 to 20130814
@@ -13804,7 +13804,7 @@ Level:%d (보스)
Level:%d (Boss)
*/
MSG_NAVIGATION_LEVEL_D_NORMAL = 0x8d6,
-/*20120417 to 20180621
+/*20120417 to 20180704
수ì†ì„±%d
Water %d
20130807 to 20130814
@@ -13812,7 +13812,7 @@ Level:%d (ì¼ë°˜)
Level:%d (Mob)
*/
MSG_NAVIGATION_PROPERTY1 = 0x8d7,
-/*20120417 to 20180621
+/*20120417 to 20180704
지ì†ì„±%d
Earth %d
20130807 to 20130814
@@ -13820,7 +13820,7 @@ Earth %d
Water %d
*/
MSG_NAVIGATION_PROPERTY2 = 0x8d8,
-/*20120417 to 20180621
+/*20120417 to 20180704
í™”ì†ì„±%d
Fire %d
20130807 to 20130814
@@ -13828,7 +13828,7 @@ Fire %d
Earth %d
*/
MSG_NAVIGATION_PROPERTY3 = 0x8d9,
-/*20120417 to 20180621
+/*20120417 to 20180704
í’ì†ì„±%d
Wind %d
20130807 to 20130814
@@ -13836,7 +13836,7 @@ Wind %d
Fire %d
*/
MSG_NAVIGATION_PROPERTY4 = 0x8da,
-/*20120417 to 20180621
+/*20120417 to 20180704
ë…ì†ì„±%d
Poison %d
20130807 to 20130814
@@ -13844,7 +13844,7 @@ Poison %d
Wind %d
*/
MSG_NAVIGATION_PROPERTY5 = 0x8db,
-/*20120417 to 20180621
+/*20120417 to 20180704
성ì†ì„±%d
Holy %d
20130807 to 20130814
@@ -13852,7 +13852,7 @@ Holy %d
Poison %d
*/
MSG_NAVIGATION_PROPERTY6 = 0x8dc,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì•”ì†ì„±%d
Shadow %d
20130807 to 20130814
@@ -13860,7 +13860,7 @@ Shadow %d
Holy %d
*/
MSG_NAVIGATION_PROPERTY7 = 0x8dd,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì—¼ì†ì„±%d
Ghost %d
20130807 to 20130814
@@ -13868,7 +13868,7 @@ Ghost %d
Shadow %d
*/
MSG_NAVIGATION_PROPERTY8 = 0x8de,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì–¸ë°ë“œ%d
Undead %d
20130807 to 20130814
@@ -13876,7 +13876,7 @@ Undead %d
Ghost %d
*/
MSG_NAVIGATION_PROPERTY9 = 0x8df,
-/*20120417 to 20180621
+/*20120417 to 20180704
무ì†ì„±%d
Neutral %d
20130807 to 20130814
@@ -13884,7 +13884,7 @@ Neutral %d
Undead %d
*/
MSG_NAVIGATION_PROPERTY0 = 0x8e0,
-/*20120417 to 20180621
+/*20120417 to 20180704
중형
Medium
20130807 to 20130814
@@ -13892,7 +13892,7 @@ Medium
Neutral %d
*/
MSG_NAVIGATION_SCALE1 = 0x8e1,
-/*20120417 to 20180621
+/*20120417 to 20180704
대형
Large
20130807 to 20130814
@@ -13900,7 +13900,7 @@ Large
Medium
*/
MSG_NAVIGATION_SCALE2 = 0x8e2,
-/*20120417 to 20180621
+/*20120417 to 20180704
소형
Small
20130807 to 20130814
@@ -13908,7 +13908,7 @@ Small
Large
*/
MSG_NAVIGATION_SCALE0 = 0x8e3,
-/*20120417 to 20180621
+/*20120417 to 20180704
불사형
Undead
20130807 to 20130814
@@ -13916,7 +13916,7 @@ Undead
Small
*/
MSG_NAVIGATION_RACE1 = 0x8e4,
-/*20120417 to 20180621
+/*20120417 to 20180704
ë™ë¬¼í˜•
Brute
20130807 to 20130814
@@ -13924,7 +13924,7 @@ Brute
Undead
*/
MSG_NAVIGATION_RACE2 = 0x8e5,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì‹ë¬¼í˜•
Plant
20130807 to 20130814
@@ -13932,7 +13932,7 @@ Plant
Brute
*/
MSG_NAVIGATION_RACE3 = 0x8e6,
-/*20120417 to 20180621
+/*20120417 to 20180704
곤충형
Insect
20130807 to 20130814
@@ -13940,7 +13940,7 @@ Insect
Plant
*/
MSG_NAVIGATION_RACE4 = 0x8e7,
-/*20120417 to 20180621
+/*20120417 to 20180704
어패형
Fish
20130807 to 20130814
@@ -13948,7 +13948,7 @@ Fish
Insect
*/
MSG_NAVIGATION_RACE5 = 0x8e8,
-/*20120417 to 20180621
+/*20120417 to 20180704
악마형
Demon
20130807 to 20130814
@@ -13956,7 +13956,7 @@ Demon
Fish
*/
MSG_NAVIGATION_RACE6 = 0x8e9,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì¸ê°„형
Demi-Human
20130807 to 20130814
@@ -13964,7 +13964,7 @@ Demi-Human
Demon
*/
MSG_NAVIGATION_RACE7 = 0x8ea,
-/*20120417 to 20180621
+/*20120417 to 20180704
천사형
Angel
20130807 to 20130814
@@ -13972,7 +13972,7 @@ Angel
Demi-Human
*/
MSG_NAVIGATION_RACE8 = 0x8eb,
-/*20120417 to 20180621
+/*20120417 to 20180704
용족
Dragon
20130807 to 20130814
@@ -13980,7 +13980,7 @@ Dragon
Angel
*/
MSG_NAVIGATION_RACE9 = 0x8ec,
-/*20120417 to 20180621
+/*20120417 to 20180704
무형
Formless
20130807 to 20130814
@@ -13988,7 +13988,7 @@ Formless
Dragon
*/
MSG_NAVIGATION_RACE0 = 0x8ed,
-/*20120417 to 20180621
+/*20120417 to 20180704
%s ì´ë™ í´ë¦­
Click to move %s
20130807 to 20130814
@@ -13996,7 +13996,7 @@ Click to move %s
Formless
*/
MSG_NAVIGATION_MOVECLICK = 0x8ee,
-/*20120417 to 20180621
+/*20120417 to 20180704
Npc ì´ë™ 서비스 ì´ìš©
Move to the Kafra Service Npc
20130807 to 20130814
@@ -14004,7 +14004,7 @@ Move to the Kafra Service Npc
Click to move %s
*/
MSG_NAVIGATION_NPCMOVE = 0x8ef,
-/*20120417 to 20180621
+/*20120417 to 20180704
NPC í´ë¦­
Click the NPC
20130807 to 20130814
@@ -14012,7 +14012,7 @@ Npc ì´ë™ 서비스 ì´ìš©
Move to the Kafra Service Npc
*/
MSG_NAVIGATION_NPCCLICK = 0x8f0,
-/*20120417 to 20180621
+/*20120417 to 20180704
%s ì´ë™
Move %s
20130807 to 20130814
@@ -14020,7 +14020,7 @@ NPC í´ë¦­
Click the NPC
*/
MSG_NAVIGATION_S_MOVE = 0x8f1,
-/*20120417 to 20180621
+/*20120417 to 20180704
비공정 ì´ë™
Move to the Airship Service
20130807 to 20130814
@@ -14028,7 +14028,7 @@ Move to the Airship Service
Move %s
*/
MSG_NAVIGATION_PLANEMOVE = 0x8f2,
-/*20120417 to 20180621
+/*20120417 to 20180704
워프 ì´ìš©
By Warp
20130807 to 20130814
@@ -14036,7 +14036,7 @@ By Warp
Move to the Airship Service
*/
MSG_NAVIGATION_WARPUSE = 0x8f3,
-/*20120417 to 20180621
+/*20120417 to 20180704
ë„ì°©ì  : ( %d %d )
End Points: (%d %d)
20130807 to 20130814
@@ -14049,19 +14049,19 @@ By Warp
20130807 to 20130814
ë„ì°©ì  : ( %d %d )
End Points: (%d %d)
-20170524 to 20180621
+20170524 to 20180704
내비게ì´ì…˜ì´ ì§€ì› ë˜ì§€ 않는 지역 입니다.
That does not support the navigation area
*/
MSG_NAVIGATION_UNKNOWNMAP = 0x8f5,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì°¾ê³ ìž í•˜ëŠ” 목ì ì´ 불분명 합니다.
The purpose is unclear
20130807 to 20130814
네비게ì´ì…˜ì´ ì§€ì› ë˜ì§€ 않는 지역 입니다.
*/
MSG_NAVIGATION_RS_UNKNOWN = 0x8f6,
-/*20120417 to 20180621
+/*20120417 to 20180704
ë§¤ì¹­ì´ ë§žì§€ 않는 맵ì´ë‹¤.
Does not meet the map requirement
20130807 to 20130814
@@ -14069,7 +14069,7 @@ Does not meet the map requirement
The purpose is unclear
*/
MSG_NAVIGATION_RS_NOTSAMEMAP = 0x8f7,
-/*20120417 to 20180621
+/*20120417 to 20180704
출발 ì§€ì—­ì— ëŒ€í•œ ì •ë³´ 설정 실패!
Information Failure | Change settings
20130807 to 20130814
@@ -14077,7 +14077,7 @@ Information Failure | Change settings
Does not meet the map requirement
*/
MSG_NAVIGATION_RS_FAILSTARTDATA = 0x8f8,
-/*20120417 to 20180621
+/*20120417 to 20180704
ë„ì°© 지ì ì— 대한 ì •ë³´ 설정 실패!
Failed to set info for location!
20130807 to 20130814
@@ -14085,7 +14085,7 @@ Failed to set info for location!
Information Failure | Change settings
*/
MSG_NAVIGATION_RS_FAILTARGET = 0x8f9,
-/*20120417 to 20180621
+/*20120417 to 20180704
길 찾기 실패
Failed to find a path
20130807 to 20130814
@@ -14093,7 +14093,7 @@ Failed to find a path
Failed to set info for location!
*/
MSG_NAVIGATION_RS_FAILROUTE = 0x8fa,
-/*20120417 to 20180621
+/*20120417 to 20180704
플레ì´ì–´ 위치 찾기 실패
Failed to find players
20130807 to 20130814
@@ -14101,7 +14101,7 @@ Failed to find players
Failed to find a path
*/
MSG_NAVIGATION_RS_FAILPLAYER = 0x8fb,
-/*20120417 to 20180621
+/*20120417 to 20180704
내비게ì´ì…˜ì— ì •ë³´ê°€ 없습니다.
No Information
20130807 to 20130814
@@ -14109,7 +14109,7 @@ No Information
Failed to find players
*/
MSG_NAVIGATION_RS_NODATA = 0x8fc,
-/*20120417 to 20180621
+/*20120417 to 20180704
해당 ë§µì€ ê¸¸ì°¾ê¸°ê°€ ì§€ì› ë˜ì§€ 않는 맵입니다.
Map doesn't support directions
20130807 to 20130814
@@ -14117,7 +14117,7 @@ Map doesn't support directions
No Information
*/
MSG_NAVIGATION_RS_MAPNOTNAVIGATION = 0x8fd,
-/*20120417 to 20180621
+/*20120417 to 20180704
목표를 지정 하시기 ë°”ëžë‹ˆë‹¤.
Please specify target goals.
20130807 to 20130814
@@ -14125,7 +14125,7 @@ Please specify target goals.
Map doesn't support directions
*/
MSG_NAVIGATION_RS_FAILTARGETROUTE = 0x8fe,
-/*20120417 to 20180621
+/*20120417 to 20180704
ë„ì°©.
Found
20130807 to 20130814
@@ -14133,7 +14133,7 @@ Found
Please specify target goals.
*/
MSG_NAVIGATION_RS_SUCCESS = 0x8ff,
-/*20120417 to 20180621
+/*20120417 to 20180704
길 안내가 시작 ë˜ì—ˆìŠµë‹ˆë‹¤.
Directions were started
20130807 to 20130814
@@ -14141,7 +14141,7 @@ Directions were started
Found
*/
MSG_NAVIGATION_RS_START = 0x900,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì°¾ê³ ìž í•˜ëŠ” 몬스터가 있는 맵 입니다.
Is the map that your looking for mob
20130807 to 20130814
@@ -14149,7 +14149,7 @@ Is the map that your looking for mob
Directions were started
*/
MSG_NAVIGATION_RS_MOBTARGETMAP = 0x901,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì°¾ê³ ìž í•˜ëŠ” ë§µì´ í•´ë‹¹ 맵 입니다.
Map appears on the guide you are looking for
20130807 to 20130814
@@ -14157,7 +14157,7 @@ Map appears on the guide you are looking for
Is the map that your looking for mob
*/
MSG_NAVIGATION_RS_TARGETMAP = 0x902,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì•„ì´í…œì„ 사용하여 ì´ë™í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.
Please navigate using the item
20130807 to 20130814
@@ -14165,7 +14165,7 @@ Please navigate using the item
Map appears on the guide you are looking for
*/
MSG_NAVIGATION_RS_SCROLL = 0x903,
-/*20120417 to 20180621
+/*20120417 to 20180704
안내하는 위치로 ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Please follow the instruction to reach your destination.
20130807 to 20130814
@@ -14173,7 +14173,7 @@ Please follow the instruction to reach your destination.
Please navigate using the item
*/
MSG_NAVIGATION_RS_ROUTE_SUCCESS = 0x904,
-/*20120417 to 20180621
+/*20120417 to 20180704
목표 ë§µì— ë„착하였습니다.
Arrived at the target map
20130807 to 20130814
@@ -14181,7 +14181,7 @@ Arrived at the target map
Please follow the instruction to reach your destination.
*/
MSG_NAVIGATION_RS_MAPTMAP_SUCCESS = 0x905,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì°¾ê³ ìž í•˜ëŠ” Npcê°€ 있는 ë§µì— ë„ì°© 하였습니다. Npcë¡œ ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Arrived on the map that has the Npc your looking for. Go to that NPC
20130807 to 20130814
@@ -14189,7 +14189,7 @@ Arrived on the map that has the Npc your looking for. Go to that NPC
Arrived at the target map
*/
MSG_NAVIGATION_RS_NPCTMAP_SUCCESS = 0x906,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì°¾ê³ ìž í•˜ëŠ” Mobì´ ì„œì‹í•˜ëŠ” ë§µì— ë„ì°© 하였습니다.
You have arrived at the mob you were looking for
20130807 to 20130814
@@ -14197,7 +14197,7 @@ You have arrived at the mob you were looking for
Arrived on the map that has the Npc your looking for. Go to that NPC
*/
MSG_NAVIGATION_RS_MOBTMAP_SUCCESS = 0x907,
-/*20120417 to 20180621
+/*20120417 to 20180704
ì´ì „ê³¼ ë™ì¼í•œ 목표 입니다.
You have reached your goal
20130807 to 20130814
@@ -14205,7 +14205,7 @@ You have reached your goal
You have arrived at the mob you were looking for
*/
MSG_NAVIGATION_RS_POSTMAP_SUCCESS = 0x908,
-/*20120417 to 20180621
+/*20120417 to 20180704
가리키는 방향으로 가시기 ë°”ëžë‹ˆë‹¤.
Please go to indicated direction.
20130807 to 20130814
@@ -14213,7 +14213,7 @@ Please go to indicated direction.
You have reached your goal
*/
MSG_NAVIGATION_RS_SAMETARGET = 0x909,
-/*20120417 to 20180621
+/*20120417 to 20180704
목표가 여기 입니다.
The goal has been reached
20130807 to 20130814
@@ -14221,21 +14221,21 @@ The goal has been reached
Please go to indicated direction.
*/
MSG_NAVIGATION_RS_HERE = 0x90a,
-/*20120417 to 20180621
+/*20120417 to 20180704
Navigation >: %s
20130807 to 20130814
목표가 여기 입니다.
The goal has been reached
*/
MSG_NAVIGATION_PRINT_S = 0x90b,
-/*20120417 to 20180621
+/*20120417 to 20180704
Navigation >: 안내하는 %s(ì„)를 ì´ìš©í•˜ì—¬
Navigation >: Talk to Guide "%s" (A)
20130807 to 20130814
Navigation >: %s
*/
MSG_NAVIGATION_PRINT_GO_S = 0x90c,
-/*20120417 to 20180621
+/*20120417 to 20180704
Navigation >: 맵(%s)으로 ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤
Navigation >: Move to (%s) map
20130807 to 20130814
@@ -14243,7 +14243,7 @@ Navigation >: 안내하는 %s(ì„)를 ì´ìš©í•˜ì—¬
Navigation >: Talk to Guide "%s" (A)
*/
MSG_NAVIGATION_PRINT_MAP_S = 0x90d,
-/*20120417 to 20180621
+/*20120417 to 20180704
Navigation >: 맵(%s)ì„ ì„ íƒí•˜ì—¬ ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Choose (%s) Map from Kafra
20130807 to 20130814
@@ -14251,7 +14251,7 @@ Navigation >: 맵(%s)으로 ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤
Navigation >: Move to (%s) map
*/
MSG_NAVIGATION_PRINT_SELECTMAP_S = 0x90e,
-/*20120417 to 20180621
+/*20120417 to 20180704
Navigation >: 비공정으로 ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Please go to the AirShip
20130807 to 20130814
@@ -14259,7 +14259,7 @@ Navigation >: 맵(%s)ì„ ì„ íƒí•˜ì—¬ ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Choose (%s) Map from Kafra
*/
MSG_NAVIGATION_PRINT_PLANE = 0x90f,
-/*20120417 to 20180621
+/*20120417 to 20180704
Navigation >: 워프를 ì´ìš©í•˜ì—¬ ë‹¤ìŒ ì§€ì—­ìœ¼ë¡œ ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Navigation >: Get to your destination by using WarpPortal
20130807 to 20130814
@@ -14267,32 +14267,32 @@ Navigation >: 비공정으로 ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Please go to the AirShip
*/
MSG_NAVIGATION_PRINT_WARP = 0x910,
-/*20120417 to 20180621
+/*20120417 to 20180704
Item:
20130807 to 20130814
Navigation >: 워프를 ì´ìš©í•˜ì—¬ ë‹¤ìŒ ì§€ì—­ìœ¼ë¡œ ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Navigation >: Get to your destination by using WarpPortal
*/
MSG_NAVIGATION_PRINT_ITEM = 0x911,
-/*20120417 to 20180621
+/*20120417 to 20180704
$$
20130807 to 20130814
Item:
*/
MSG_NAVIGATION_ZZ = 0x912,
-/*20120417 to 20180621
+/*20120417 to 20180704
$$lv
20130807 to 20130814
$$
*/
MSG_NAVIGATION_ZZLV = 0x913,
-/*20120417 to 20180621
+/*20120417 to 20180704
~
20130807 to 20130814
$$lv
*/
MSG_NAVIGATION_ZZLIMIT = 0x914,
-/*20120417 to 20180621
+/*20120417 to 20180704
$$all
20130807 to 20130814
~
@@ -14300,14 +14300,14 @@ $$all
MSG_NAVIGATION_ZZALL = 0x915,
#endif
#if PACKETVER >= 20120424
-/*20120424 to 20180621
+/*20120424 to 20180704
구매 확ì¸ì„œ
Confirm Deal
20130807 to 20130814
$$all
*/
MSG_SHOP_ITEM_BAY_TITLE = 0x916,
-/*20120424 to 20180621
+/*20120424 to 20180704
구입하려는 ì•„ì´í…œë“¤ì˜ ì´ê°€ê²©ì€
Below is the total cost:
20130807 to 20130814
@@ -14315,7 +14315,7 @@ Below is the total cost:
Confirm Deal
*/
MSG_SHOP_ITEM_BAY_MAG1 = 0x917,
-/*20120424 to 20180621
+/*20120424 to 20180704
Zeny 입니다.
Zeny to complete the transaction.
20130807 to 20130814
@@ -14323,7 +14323,7 @@ Zeny 입니다.
Below is the total cost:
*/
MSG_SHOP_ITEM_BAY_MAG2 = 0x918,
-/*20120424 to 20180621
+/*20120424 to 20180704
구입하시겠습니까?
Press buy to confirm.
20130807 to 20130814
@@ -14335,7 +14335,7 @@ Zeny 입니다.
#if PACKETVER >= 20120503
/*20120503 to 20120529
%.3f%% (PC방 %.3f%% + TPLUS %.3f%% + 프리미엄 %.3f%% + %s서버 %.3f%%)
-20120604 to 20180621
+20120604 to 20180704
%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + 프리미엄 %.1f%% + %s서버 %.1f%%)
%.1f% (PCRoom %.1f% + TPLUS %.1f% + Premium %.1f% + %sServer %.1f%)
20130807 to 20130814
@@ -14345,7 +14345,7 @@ Press buy to confirm.
MSG_BASIC_EXP_MSG2 = 0x91a,
#endif
#if PACKETVER >= 20120508
-/*20120508 to 20180621
+/*20120508 to 20180704
ì¹´ë“œ ë¶
Card Book
20130807 to 20130814
@@ -14355,7 +14355,7 @@ Card Book
MSG_CARDWIN = 0x91b,
#endif
#if PACKETVER >= 20120515
-/*20120515 to 20180621
+/*20120515 to 20180704
%d%% [ ( 기본 100%% + %s서버 %d%% ) * 활성 %.1f ]
%d%% [ ( Basic 100%% + %sServer %d%% ) * Active %.1f ]
20130807 to 20130814
@@ -14363,7 +14363,7 @@ Card Book
Card Book
*/
MSG_PERSONAL_INFORMATION_MSG_CHN = 0x91c,
-/*20120515 to 20180621
+/*20120515 to 20180704
%d%% [ 기본 100%% + %s서버 %d%% ]
%d%% [ Basic 100%% + %sServer %d%% ]
20130807 to 20130814
@@ -14373,7 +14373,7 @@ Card Book
MSG_PERSONAL_INFORMATION_MSG_CHN_DEATH = 0x91d,
#endif
#if PACKETVER >= 20120522
-/*20120522 to 20180621
+/*20120522 to 20180704
ì´ê³³ì€ PK 지역입니다. 미성년ìžëŠ” ìžë°œì ìœ¼ë¡œ 떠나주시기 ë°”ëžë‹ˆë‹¤.
This is PK region. Minors,Please leave immediately.
20130807 to 20130814
@@ -14381,7 +14381,7 @@ This is PK region. Minors,Please leave immediately.
%d%% [ Basic 100%% + %sServer %d%% ]
*/
MSG_CAUTION_PKZONE = 0x91e,
-/*20120522 to 20180621
+/*20120522 to 20180704
피로ë„
Fatigue
20130807 to 20130814
@@ -14391,7 +14391,7 @@ This is PK region. Minors,Please leave immediately.
MSG_FATIGUE = 0x91f,
/*20120522 to 20120529
ê±´ê°•ìƒíƒœ ì´ë©° 게임수ìµì€ 100%%입니다.
-20120604 to 20180621
+20120604 to 20180704
ê±´ê°•ìƒíƒœ ì´ë©° 게임수ìµì€ 100%입니다.
Health and gaming revenue is 100%%.
20130807 to 20130814
@@ -14401,7 +14401,7 @@ Fatigue
MSG_FATIGUE_LEVEL_ZERO = 0x920,
/*20120522 to 20120529
ì§€ê¸ˆì€ í”¼ë¡œìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ 게임수ìµì€ 50%% 떨어집니다. ê±´ê°•ì„ ìœ„í•˜ì—¬ ì ë‹¹í•œ íœ´ì‹ ë°”ëžë‹ˆë‹¤.
-20120604 to 20180621
+20120604 to 20180704
ì§€ê¸ˆì€ í”¼ë¡œìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ 게임수ìµì€ 50% 떨어집니다. ê±´ê°•ì„ ìœ„í•˜ì—¬ ì ë‹¹í•œ íœ´ì‹ ë°”ëžë‹ˆë‹¤.
Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
20130807 to 20130814
@@ -14411,7 +14411,7 @@ Health and gaming revenue is 100%%.
MSG_FATIGUE_LEVEL_HALF = 0x921,
/*20120522 to 20120529
ì§€ê¸ˆì€ ë¹„ê±´ê°•ìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ ê±´ê°•ì„ ìœ„í•˜ì—¬ 게임오프ë¼ì¸ì„ ì›í•©ë‹ˆë‹¤. ê³„ì† ì˜¨ë¼ì¸ìƒíƒœì— 있으면 ê±´ê°•ì— ì†ìƒì„ 주므로 게임 수ìµì€ 0%%으로 떨어지며 게임 오프ë¼ì¸ 5ì‹œê°„í›„ì— ë‹¤ì‹œ 회복ë©ë‹ˆë‹¤.
-20120604 to 20180621
+20120604 to 20180704
ì§€ê¸ˆì€ ë¹„ê±´ê°•ìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ ê±´ê°•ì„ ìœ„í•˜ì—¬ 게임오프ë¼ì¸ì„ ì›í•©ë‹ˆë‹¤. ê³„ì† ì˜¨ë¼ì¸ìƒíƒœì— 있으면 ê±´ê°•ì— ì†ìƒì„ 주므로 게임 수ìµì€ 0%으로 떨어지며 게임 오프ë¼ì¸ 5ì‹œê°„í›„ì— ë‹¤ì‹œ 회복ë©ë‹ˆë‹¤.
Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
20130807 to 20130814
@@ -14419,7 +14419,7 @@ Now because it is a non-health to the health of the guests want to offline games
Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
*/
MSG_FATIGUE_LEVEL_FULL = 0x922,
-/*20120522 to 20180621
+/*20120522 to 20180704
ì ‘ì†ì‹œê°„ %d ë¶„ì´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Online since %d minutes
20130807 to 20130814
@@ -14427,7 +14427,7 @@ Online since %d minutes
Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
*/
MSG_FATIGUE_MESSAGE0 = 0x923,
-/*20120522 to 20180621
+/*20120522 to 20180704
ì ‘ì†ì‹œê°„ %d ì‹œê°„ì´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Online Time: %d
20130807 to 20130814
@@ -14435,7 +14435,7 @@ Online Time: %d
Online since %d minutes
*/
MSG_FATIGUE_MESSAGE1 = 0x924,
-/*20120522 to 20180621
+/*20120522 to 20180704
ì ‘ì†ì‹œê°„ %d 시간 %d ë¶„ì´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Online since %d hours and %d minutes
20130807 to 20130814
@@ -14443,7 +14443,7 @@ Online since %d hours and %d minutes
Online Time: %d
*/
MSG_FATIGUE_MESSAGE2 = 0x925,
-/*20120522 to 20180621
+/*20120522 to 20180704
/monsterhp : 공격한 ëª¬ìŠ¤í„°ì˜ HP정보를 표시합니다. On Off
/monsterhp: Show the hp of attacked monster. On off
20130807 to 20130814
@@ -14453,7 +14453,7 @@ Online since %d hours and %d minutes
MSG_EXPLAIN_MONSTERHP = 0x926,
#endif
#if PACKETVER >= 20120529
-/*20120529 to 20180621
+/*20120529 to 20180704
스킬í¬ì¸íŠ¸ :
Skill Points:
20130807 to 20130814
@@ -14463,7 +14463,7 @@ Skill Points:
MSG_SKILLPOINT2 = 0x927,
#endif
#if PACKETVER >= 20120604
-/*20120604 to 20180621
+/*20120604 to 20180704
ì¸ì¦ì„œë²„ë¡œ ë¶€í„°ì˜ ì‘ë‹µì´ ì—†ìŠµë‹ˆë‹¤. 다시 ì‹œë„í•´ 주세요
There is no response from the authentification server. Please try again
20130807 to 20130814
@@ -14473,7 +14473,7 @@ Skill Points:
MSG_BAN_BILLING_SERVER_ERROR = 0x928,
#endif
#if PACKETVER >= 20120612
-/*20120612 to 20180621
+/*20120612 to 20180704
암호를 변경하여 주시기 ë°”ëžë‹ˆë‹¤.
Please change your password
20130807 to 20130814
@@ -14481,21 +14481,21 @@ Please change your password
There is no response from the authentification server. Please try again
*/
MSG_REFUSE_CHANGE_PASSWD_FORCE = 0x929,
-/*20120612 to 20180621
+/*20120612 to 20180704
http://www.ragnarok.co.kr
20130807 to 20130814
암호를 변경하여 주시기 ë°”ëžë‹ˆë‹¤.
Please change your password
*/
MSG_REFUSE_CHANGE_PASSWD_SITE = 0x92a,
-/*20120612 to 20180621
+/*20120612 to 20180704
ê³ ê°ë‹˜ê»˜ì„œëŠ” 현재 ì ‘ì†ê¸ˆì§€ 시간입니다.
Guest access is prohibited
20130807 to 20130814
http://www.ragnarok.co.kr
*/
MSG_PLANNED_TIME_SHUTDOWN = 0x92b,
-/*20120612 to 20180621
+/*20120612 to 20180704
셧다운제ë„ì— ì˜í•´ ê³ ê°ë‹˜ì˜ 게임제한 ì‹œê°„ì€ %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2dì— ê²Œìž„ì´ ì¢…ë£Œë  ì˜ˆì •ìž…ë‹ˆë‹¤.
Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end time.
20130807 to 20130814
@@ -14505,7 +14505,7 @@ Guest access is prohibited
MSG_SHOUTDOWN_TIME = 0x92c,
#endif
#if PACKETVER >= 20120626
-/*20120626 to 20180621
+/*20120626 to 20180704
ê³ ê°ë‹˜ì˜ ê³„ì •ì€ ì„ íƒì  ì…§ë‹¤ìš´ì´ ì ìš©ëœ 계정ì´ë©°, ìž”ì—¬ì‹œê°„ì€ %1.2d시간 %1.2d분입니다. 게임 ì´ìš©ì— 참고해주시기 ë°”ëžë‹ˆë‹¤.
Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
20130807 to 20130814
@@ -14515,7 +14515,7 @@ Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end tim
MSG_PARTIAL_SHOUTDOWN_TIME = 0x92d,
#endif
#if PACKETVER >= 20120702
-/*20120702 to 20180621
+/*20120702 to 20180704
리플레ì´
Replay
20130807 to 20130814
@@ -14523,7 +14523,7 @@ Replay
Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
*/
MSG_MENU_REPLAYWND = 0x92e,
-/*20120702 to 20180621
+/*20120702 to 20180704
매í¬ë¡œ
Macro
20130807 to 20130814
@@ -14531,7 +14531,7 @@ Macro
Replay
*/
MSG_MENU_MACROWND = 0x92f,
-/*20120702 to 20180621
+/*20120702 to 20180704
Webbrowser
20130807 to 20130814
매í¬ë¡œ
@@ -14542,25 +14542,25 @@ Macro
네비게ì´ì…˜
20130807 to 20130814
Webbrowser
-20170524 to 20180621
+20170524 to 20180704
내비게ì´ì…˜
Navigation
*/
MSG_MENU_NAVIGATIONWND = 0x931,
-/*20120702 to 20180621
+/*20120702 to 20180704
UAEURL
20130807 to 20130814
네비게ì´ì…˜
*/
MSG_MENU_UAEURLWND = 0x932,
-/*20120702 to 20180621
+/*20120702 to 20180704
í´ëžœì •ë³´
Clan Information
20130807 to 20130814
UAEURL
*/
MSG_CLAN_INFOMANAGE = 0x933,
-/*20120702 to 20180621
+/*20120702 to 20180704
í´ëžœë ˆë²¨
Clan Level
20130807 to 20130814
@@ -14568,7 +14568,7 @@ Clan Level
Clan Information
*/
MSG_CLAN_LEVEL = 0x934,
-/*20120702 to 20180621
+/*20120702 to 20180704
í´ëžœëª…
Clan Name
20130807 to 20130814
@@ -14576,7 +14576,7 @@ Clan Name
Clan Level
*/
MSG_CLAN_NAME = 0x935,
-/*20120702 to 20180621
+/*20120702 to 20180704
í´ëžœë§ˆí¬
Clan Mark
20130807 to 20130814
@@ -14584,7 +14584,7 @@ Clan Mark
Clan Name
*/
MSG_CLAN_MARK = 0x936,
-/*20120702 to 20180621
+/*20120702 to 20180704
ë™ë§¹í´ëžœ
Ally Clan
20130807 to 20130814
@@ -14595,7 +14595,7 @@ Clan Mark
/*20120702 to 20130529
ì ëŒ€ê¸¸ë“œ
Antagonists
-20130605 to 20180621
+20130605 to 20180704
ì ëŒ€í´ëžœ
Antagonist Clan
20130807 to 20130814
@@ -14603,7 +14603,7 @@ Antagonist Clan
Ally Clan
*/
MSG_HOSTILITY_CLAN = 0x938,
-/*20120702 to 20180621
+/*20120702 to 20180704
í´ëžœì—게 보냄
Send to Clan
20130807 to 20130814
@@ -14611,7 +14611,7 @@ Send to Clan
Antagonist Clan
*/
MSG_SEND_TO_CLAN = 0x939,
-/*20120702 to 20180621
+/*20120702 to 20180704
마스터ì´ë¦„
ClanMaster Name
20130807 to 20130814
@@ -14619,7 +14619,7 @@ ClanMaster Name
Send to Clan
*/
MSG_CLAN_MASTER_NAME = 0x93a,
-/*20120702 to 20180621
+/*20120702 to 20180704
ì¡°í•©ì›ìˆ˜
Number of Members
20130807 to 20130814
@@ -14630,7 +14630,7 @@ ClanMaster Name
/*20120702 to 20120702
ì¡°í•©ì› í‰ê· ë ˆë²¨
Avg.lvl of Guildsmen
-20120710 to 20180621
+20120710 to 20180704
관리ì˜ì§€
Castles Owned
20130807 to 20130814
@@ -14641,14 +14641,14 @@ Number of Members
/*20120702 to 20130814
관리ì˜ì§€
Castles Owned
-20120716 to 20180621
+20120716 to 20180704
í´ëžœ 채팅 메시지 표시
Clan Chat Messages
*/
MSG_VIEW_CLAN_MSG = 0x93d,
#endif
#if PACKETVER >= 20120716
-/*20120716 to 20180621
+/*20120716 to 20180704
충전 페ì´ì§€ë¡œ ì´ë™í•©ë‹ˆë‹¤.
Go to Page Charged.
20130807 to 20130814
@@ -14658,7 +14658,7 @@ Clan Chat Messages
MSG_TWWAB_WARRING = 0x93e,
/*20120716 to 20120716
http://ro.game.gnjoy.com/
-20120724 to 20180621
+20120724 to 20180704
https://gfb.gameflier.com/Billing/ingame/index_new.asp?
20130807 to 20130814
충전 페ì´ì§€ë¡œ ì´ë™í•©ë‹ˆë‹¤.
@@ -14667,14 +14667,14 @@ Go to Page Charged.
MSG_TWWAB_URL = 0x93f,
#endif
#if PACKETVER >= 20120724
-/*20120724 to 20180621
+/*20120724 to 20180704
ìºë¦­í„° 만들기
Create char
20130807 to 20130814
https://gfb.gameflier.com/Billing/ingame/index_new.asp?
*/
MSG_STR_MAKECHARACTER = 0x940,
-/*20120724 to 20180621
+/*20120724 to 20180704
ìºë¦­ëª…ì´ ì¼ì¹˜í•˜ì§€ 않습니다.
Name does not match
20130807 to 20130814
@@ -14682,7 +14682,7 @@ Name does not match
Create char
*/
MSG_CHR_DELETE_RESERVED_FAIL_CHARNAME = 0x941,
-/*20120724 to 20180621
+/*20120724 to 20180704
ìºë¦­í„°ëª…ì„ ìž…ë ¥í•˜ì„¸ìš”
Enter the name of character
20130807 to 20130814
@@ -14692,7 +14692,7 @@ Name does not match
MSG_CHR_DELETE_RESERVED_INPUTCONFIRMSTR_WND_TITLE = 0x942,
/*20120724 to 20120822
/bufftimer : ë²„í”„ì— ì¿¨íƒ€ì´ë¨¸ë¥¼ 표시합니다. On Off
-20120830 to 20180621
+20120830 to 20180704
성별 ì„ íƒ ì°½
Sex Selection Window
20130807 to 20130814
@@ -14702,7 +14702,7 @@ Enter the name of character
MSG_SELECT_SEX = 0x943,
/*20120724 to 20120822
ë²„í”„ì— ì¿¨íƒ€ì´ë¨¸ê°€ 표시ë©ë‹ˆë‹¤.
-20120830 to 20180621
+20120830 to 20180704
파ì¼ì˜ 위변조가 ê°ì§€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Editing of the File Detected
20130807 to 20130814
@@ -14712,7 +14712,7 @@ Sex Selection Window
MSG_SPRITE_ALTER = 0x944,
/*20120724 to 20120822
ë²„í”„ì— ì¿¨íƒ€ì´ë¨¸ê°€ 표시ë˜ì§€ 않습니다.
-20120830 to 20180621
+20120830 to 20180704
해당 ì•„ì´í…œì„ 개봉하여 íšë“ë˜ëŠ” ì•„ì´í…œë“¤ì€ ìºë¦­í„° ê·€ì† ì•„ì´í…œ (창고ì´ë™ 불가능) 입니다. 본 ìºë¦­í„°ì— 사용하시는 ê²ƒì´ ë§žìœ¼ì‹ ì§€ 확ì¸í•´ì£¼ì‹œê¸° ë°”ëžë‹ˆë‹¤. ìƒìžë¥¼ 개봉하시겠습니까?
Items obtained by opening the item is character bounded (can not move to storage). Do you want to open the box?
20130807 to 20130814
@@ -14725,7 +14725,7 @@ Editing of the File Detected
/*20120808 to 20120822
성별 ì„ íƒ ì°½
Sex Selection Window
-20120925 to 20180621
+20120925 to 20180704
게임 설정
Game Settings
20130807 to 20130814
@@ -14738,7 +14738,7 @@ Items obtained by opening the item is character bounded (can not move to storage
/*20120822 to 20120822
파ì¼ì˜ 위변조가 ê°ì§€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Editing of the File Detected
-20120925 to 20180621
+20120925 to 20180704
게임 시스템
Game System
20130807 to 20130814
@@ -14748,7 +14748,7 @@ Game Settings
MSG_SYSTEM_SETTING = 0x947,
#endif
#if PACKETVER >= 20120925
-/*20120925 to 20180621
+/*20120925 to 20180704
게임 커맨드
Game Commands
20130807 to 20130814
@@ -14758,7 +14758,7 @@ Game System
MSG_COMMAND_SETTING = 0x948,
/*20120925 to 20120926
게임 커맨드 리스트
-20121010 to 20180621
+20121010 to 20180704
게임 커맨드 ON/OFF
Game Command ON/OFF
20130807 to 20130814
@@ -14766,7 +14766,7 @@ Game Command ON/OFF
Game Commands
*/
MSG_COMMAND_LIST = 0x949,
-/*20120925 to 20180621
+/*20120925 to 20180704
매í¬ë¡œ
Macro
20130807 to 20130814
@@ -14774,7 +14774,7 @@ Macro
Game Command ON/OFF
*/
MSG_MACRO_LIST = 0x94a,
-/*20120925 to 20180621
+/*20120925 to 20180704
ì´ì§€ì—­ì€ ì•„ì´í…œêµí™˜ì´ 금지 ë˜ì–´ 있습니다
Trading is prohibited in this Map
20130807 to 20130814
@@ -14782,7 +14782,7 @@ Trading is prohibited in this Map
Macro
*/
MSG_EXCHANGEITEM_DENY_MAP = 0x94b,
-/*20120925 to 20180621
+/*20120925 to 20180704
ì´ì§€ì—­ì€ 카트ì´ìš©ì´ 금지 ë˜ì–´ 있습니다
Vending is prohibited in this Map
20130807 to 20130814
@@ -14792,7 +14792,7 @@ Trading is prohibited in this Map
MSG_CART_USE_DENY_MAP = 0x94c,
#endif
#if PACKETVER >= 20121010
-/*20121010 to 20180621
+/*20121010 to 20180704
ì´ì§€ì—­ì€ íƒœì–‘ê³¼ë‹¬ê³¼ë³„ì˜ ê¸°ì  íš¨ê³¼ê°€ ë°œìƒí•˜ì§€ 않습니다.
In this Map,Effect of Mirace of Sun and Moon is nullified.
20130807 to 20130814
@@ -14800,7 +14800,7 @@ In this Map,Effect of Mirace of Sun and Moon is nullified.
Vending is prohibited in this Map
*/
MSG_BLOCK_SUNMOONSTAR_MIRACLE = 0x94d,
-/*20121010 to 20180621
+/*20121010 to 20180704
랭킹 보드
Ranking Board
20130807 to 20130814
@@ -14808,7 +14808,7 @@ Ranking Board
In this Map,Effect of Mirace of Sun and Moon is nullified.
*/
MSG_RANKING_BOARD = 0x94e,
-/*20121010 to 20180621
+/*20121010 to 20180704
순위
Rank
20130807 to 20130814
@@ -14816,7 +14816,7 @@ Rank
Ranking Board
*/
MSG_RANKING_NUMBER = 0x94f,
-/*20121010 to 20180621
+/*20121010 to 20180704
ì´ë¦„
Name
20130807 to 20130814
@@ -14824,7 +14824,7 @@ Name
Rank
*/
MSG_RANKING_NAME = 0x950,
-/*20121010 to 20180621
+/*20121010 to 20180704
í¬ì¸íŠ¸
Points
20130807 to 20130814
@@ -14832,26 +14832,26 @@ Points
Name
*/
MSG_RANKING_POINT = 0x951,
-/*20121010 to 20180621
+/*20121010 to 20180704
BlackSmith
20130807 to 20130814
í¬ì¸íŠ¸
Points
*/
MSG_RANKING_BLACKSMITH = 0x952,
-/*20121010 to 20180621
+/*20121010 to 20180704
Alchemist
20130807 to 20130814
BlackSmith
*/
MSG_RANKING_ALCHEMIST = 0x953,
-/*20121010 to 20180621
+/*20121010 to 20180704
Taekwon
20130807 to 20130814
Alchemist
*/
MSG_RANKING_TAEKWON = 0x954,
-/*20121010 to 20180621
+/*20121010 to 20180704
Killer
20130807 to 20130814
Taekwon
@@ -14861,7 +14861,7 @@ Taekwon
Munak
20121017 to 20121107
1 vs 1
-20121114 to 20180621
+20121114 to 20180704
7 vs 7
20130807 to 20130814
Killer
@@ -14871,7 +14871,7 @@ Killer
DeathKnight
20121017 to 20130814
7 vs 7
-20121114 to 20180621
+20121114 to 20180704
RuneKnight
*/
MSG_RANKING_RUNE_KNIGHT = 0x957,
@@ -14879,7 +14879,7 @@ RuneKnight
Collector
20121017 to 20121107
Select Ranking Type
-20121114 to 20180621
+20121114 to 20180704
Warlock
20130807 to 20130814
RuneKnight
@@ -14889,7 +14889,7 @@ RuneKnight
Select Ranking Type
20121017 to 20121107
Ranking Type
-20121114 to 20180621
+20121114 to 20180704
Ranger
20130807 to 20130814
Warlock
@@ -14897,7 +14897,7 @@ Warlock
MSG_RANKING_RANGER = 0x959,
/*20121010 to 20121010
Ranking Type
-20121114 to 20180621
+20121114 to 20180704
Mechanic
20130807 to 20130814
Ranger
@@ -14905,92 +14905,92 @@ Ranger
MSG_RANKING_MECHANIC = 0x95a,
#endif
#if PACKETVER >= 20121114
-/*20121114 to 20180621
+/*20121114 to 20180704
GuillotineCross
20130807 to 20130814
Mechanic
*/
MSG_RANKING_GUILLOTINE_CROSS = 0x95b,
-/*20121114 to 20180621
+/*20121114 to 20180704
Archbishop
20130807 to 20130814
GuillotineCross
*/
MSG_RANKING_ARCHBISHOP = 0x95c,
-/*20121114 to 20180621
+/*20121114 to 20180704
RoyalGuard
20130807 to 20130814
Archbishop
*/
MSG_RANKING_ROYAL_GUARD = 0x95d,
-/*20121114 to 20180621
+/*20121114 to 20180704
Sorcerer
20130807 to 20130814
RoyalGuard
*/
MSG_RANKING_SORCERER = 0x95e,
-/*20121114 to 20180621
+/*20121114 to 20180704
Minstrel
20130807 to 20130814
Sorcerer
*/
MSG_RANKING_MINSTREL = 0x95f,
-/*20121114 to 20180621
+/*20121114 to 20180704
Wanderer
20130807 to 20130814
Minstrel
*/
MSG_RANKING_WANDERER = 0x960,
-/*20121114 to 20180621
+/*20121114 to 20180704
Genetic
20130807 to 20130814
Wanderer
*/
MSG_RANKING_GENETIC = 0x961,
-/*20121114 to 20180621
+/*20121114 to 20180704
ShadowChaser
20130807 to 20130814
Genetic
*/
MSG_RANKING_SHADOW_CHASER = 0x962,
-/*20121114 to 20180621
+/*20121114 to 20180704
Sura
20130807 to 20130814
ShadowChaser
*/
MSG_RANKING_SURA = 0x963,
-/*20121114 to 20180621
+/*20121114 to 20180704
Kagerou
20130807 to 20130814
Sura
*/
MSG_RANKING_KAGEROU = 0x964,
-/*20121114 to 20180621
+/*20121114 to 20180704
Oboro
20130807 to 20130814
Kagerou
*/
MSG_RANKING_OBORO = 0x965,
-/*20121114 to 20180621
+/*20121114 to 20180704
Select Ranking Type
20130807 to 20130814
Oboro
*/
MSG_RANKING_SELECT = 0x966,
-/*20121114 to 20180621
+/*20121114 to 20180704
Ranking Type
20130807 to 20130814
Select Ranking Type
*/
MSG_RANKING_TYPE = 0x967,
-/*20121114 to 20180621
+/*20121114 to 20180704
현재 ì ‘ì† ì¸ì›ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤. ^0000ff현재 대기순위 : %d ì˜ˆìƒ ëŒ€ê¸°ì‹œê°„ : %dì´ˆ
Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
20130807 to 20130814
Ranking Type
*/
MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_SEC = 0x968,
-/*20121114 to 20180621
+/*20121114 to 20180704
현재 ì ‘ì† ì¸ì›ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤. ^0000ff현재 대기순위 : %d ì˜ˆìƒ ëŒ€ê¸°ì‹œê°„ : %d분 %dì´ˆ
Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dMinutes %d Seconds
20130807 to 20130814
@@ -14998,7 +14998,7 @@ Currently,Server is full. ^0000ffPeople Currently Waiting: %d
Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
*/
MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_MIN = 0x969,
-/*20121114 to 20180621
+/*20121114 to 20180704
CBT 초청 유저가 아닙니다
CBT is not an invited user
20130807 to 20130814
@@ -15008,7 +15008,7 @@ Currently,Server is full. ^0000ffPeople Currently Waiting: %d
MSG_CBT_ACTIVE_USER_CHECK = 0x96a,
#endif
#if PACKETVER >= 20121128
-/*20121128 to 20180621
+/*20121128 to 20180704
-------------- Navigation 명령어 --------------
------------------- Instruction --------------------
20130807 to 20130814
@@ -15016,7 +15016,7 @@ CBT 초청 유저가 아닙니다
CBT is not an invited user
*/
MSG_NAVIGATION_HELP_1 = 0x96b,
-/*20121128 to 20180621
+/*20121128 to 20180704
/navigation /navi : /navi yuno 100/100 ->> 맵ì´ë¦„, 위치(100/100)
1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
20130807 to 20130814
@@ -15024,7 +15024,7 @@ CBT is not an invited user
------------------- Instruction --------------------
*/
MSG_NAVIGATION_HELP_2 = 0x96c,
-/*20121128 to 20180621
+/*20121128 to 20180704
/navigation2 /navi2 : /navi2 yuno 100/100 1/1/1 ->> 맵ì´ë¦„, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
20130807 to 20130814
@@ -15032,7 +15032,7 @@ CBT is not an invited user
1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
*/
MSG_NAVIGATION_HELP_3 = 0x96d,
-/*20121128 to 20180621
+/*20121128 to 20180704
-------------- Navigation 검색창 명령어 -------
-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
20130807 to 20130814
@@ -15040,7 +15040,7 @@ CBT is not an invited user
2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
*/
MSG_NAVIGATION_HELP_4 = 0x96e,
-/*20121128 to 20180621
+/*20121128 to 20180704
$$all : 모든 항목 출력 (Type 구분ìžì—ì„œ 출력 종류를 나눌수 있다.)
3) $$all Output all the items (Can take a while...)
20130807 to 20130814
@@ -15048,7 +15048,7 @@ $$all : 모든 항목 출력 (Type 구분ìžì—ì„œ 출력 종류를 나ë
-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
*/
MSG_NAVIGATION_HELP_5 = 0x96f,
-/*20121128 to 20180621
+/*20121128 to 20180704
$$lv30 : 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
4) $$lv30 monsters are placed in the output
20130807 to 20130814
@@ -15056,7 +15056,7 @@ $$all : 모든 항목 출력 (Type 구분ìžì—ì„œ 출력 종류를 나ë
3) $$all Output all the items (Can take a while...)
*/
MSG_NAVIGATION_HELP_6 = 0x970,
-/*20121128 to 20180621
+/*20121128 to 20180704
$$lv20~30 : 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
5) $$lv20~30 monsters in that level range are placed in the output
20130807 to 20130814
@@ -15064,7 +15064,7 @@ $$lv30 : 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
4) $$lv30 monsters are placed in the output
*/
MSG_NAVIGATION_HELP_7 = 0x971,
-/*20121128 to 20180621
+/*20121128 to 20180704
1 vs 1
20130807 to 20130814
$$lv20~30 : 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
@@ -15073,7 +15073,7 @@ $$lv20~30 : 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
MSG_RANKING_BATTLE_1VS1_ALL = 0x972,
#endif
#if PACKETVER >= 20121205
-/*20121205 to 20180621
+/*20121205 to 20180704
특수 장비
Special Gear
20130807 to 20130814
@@ -15082,7 +15082,7 @@ Special Gear
MSG_SHADOW_EQUIPMENT = 0x973,
#endif
#if PACKETVER >= 20130109
-/*20130109 to 20180621
+/*20130109 to 20180704
%d 번째 ìºë¦­í„°ì˜ ì§ì—… ì •ë³´ê°€ ì´ìƒí•©ë‹ˆë‹¤. ê³ ê°ì„¼í„°ë¡œ ë¬¸ì˜ ë¶€íƒ ë“œë¦½ë‹ˆë‹¤. ErrorCode(%d)
%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
20130807 to 20130814
@@ -15092,14 +15092,14 @@ Special Gear
MSG_CHARACTERERROR_JOB = 0x974,
#endif
#if PACKETVER >= 20130115
-/*20130115 to 20180621
+/*20130115 to 20180704
(%s) %d / %d
20130807 to 20130814
%d 번째 ìºë¦­í„°ì˜ ì§ì—… ì •ë³´ê°€ ì´ìƒí•©ë‹ˆë‹¤. ê³ ê°ì„¼í„°ë¡œ ë¬¸ì˜ ë¶€íƒ ë“œë¦½ë‹ˆë‹¤. ErrorCode(%d)
%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
*/
MSG_NAVIGATION_ALL_S = 0x975,
-/*20130115 to 20180621
+/*20130115 to 20180704
%s-%s(%d/%d)
20130807 to 20130814
(%s) %d / %d
@@ -15107,14 +15107,14 @@ Special Gear
MSG_NAVIGATION_ALL_SD = 0x976,
#endif
#if PACKETVER >= 20130121
-/*20130121 to 20180621
+/*20130121 to 20180704
ì ‘ì†ìž 수 초과로 ì„œë²„ì— ë”ì´ìƒ ì ‘ì†í•  수 없습니다.
Server Exceeded the maximum number of users,Cannot Connect anymore users.
20130807 to 20130814
%s-%s(%d/%d)
*/
MSG_REFUSE_OVER_USERLIMIT = 0x977,
-/*20130121 to 20180621
+/*20130121 to 20180704
ì„œë²„ì ‘ì† ì‹¤íŒ¨ (%d)
Server Connection Failed (%d)
20130807 to 20130814
@@ -15122,7 +15122,7 @@ Server Connection Failed (%d)
Server Exceeded the maximum number of users,Cannot Connect anymore users.
*/
MSG_REFUSE_ERRORCODE = 0x978,
-/*20130121 to 20180621
+/*20130121 to 20180704
ë¡œê·¸ì¸ í—ˆìš©ì‹œê°„ 초과
Login Timeout Permitted
20130807 to 20130814
@@ -15130,7 +15130,7 @@ Login Timeout Permitted
Server Connection Failed (%d)
*/
MSG_REFUSE_DISCONNECT_KEEP_TIME = 0x979,
-/*20130121 to 20180621
+/*20130121 to 20180704
ë¡œê·¸ì¸ ì¤‘ ì¸ì¦ì„œë²„로부터 ì¸ì¦ì´ 실패하였습니다.
Login Authentication Failed from Authentication Server.
20130807 to 20130814
@@ -15140,7 +15140,7 @@ Login Timeout Permitted
MSG_REFUSE_WEB_AUTH_FAILED = 0x97a,
#endif
#if PACKETVER >= 20130206
-/*20130206 to 20180621
+/*20130206 to 20180704
길드ì´ë¦„ì— ê³µë°±ë¬¸ìžë¥¼ 사용할 수 없습니다.
Guild Cannot use Space in the name.
20130807 to 20130814
@@ -15150,7 +15150,7 @@ Login Authentication Failed from Authentication Server.
MSG_GUILDNAME_CHECK = 0x97b,
#endif
#if PACKETVER >= 20130215
-/*20130215 to 20180621
+/*20130215 to 20180704
ê³ ê°ë‹˜ 안녕하세요!
Hey,Hello There
20130807 to 20130814
@@ -15158,7 +15158,7 @@ Hey,Hello There
Guild Cannot use Space in the name.
*/
MSG_BILLING_CHN_1 = 0x97c,
-/*20130215 to 20180621
+/*20130215 to 20180704
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %dë…„ %d ì›” %dì¼ %d:%d ì— ì¢…ë£Œë©ë‹ˆë‹¤.
Available Time will End on %d month %d hour %d:%d
20130807 to 20130814
@@ -15166,7 +15166,7 @@ Available Time will End on %d month %d hour %d:%d
Hey,Hello There
*/
MSG_BILLING_CHN_2 = 0x97d,
-/*20130215 to 20180621
+/*20130215 to 20180704
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ ì•„ì§ ë§Žì´ ë‚¨ì•˜ìœ¼ë‹ˆ 안심하고 플레ì´í•˜ì„¸ìš”!
You've lot of time,Play in Peace.
20130807 to 20130814
@@ -15174,7 +15174,7 @@ You've lot of time,Play in Peace.
Available Time will End on %d month %d hour %d:%d
*/
MSG_BILLING_CHN_3 = 0x97e,
-/*20130215 to 20180621
+/*20130215 to 20180704
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ ì´ë²ˆ 주 ë‚´ë¡œ 종료 ë©ë‹ˆë‹¤. 종료 ì „ì— ì¶©ì „ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Your hours will be terminated within this week. Please Charge before termination.
20130807 to 20130814
@@ -15182,7 +15182,7 @@ Your hours will be terminated within this week. Please Charge before termination
You've lot of time,Play in Peace.
*/
MSG_BILLING_CHN_4 = 0x97f,
-/*20130215 to 20180621
+/*20130215 to 20180704
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ 24시간 ë‚´ì— ì¢…ë£Œë©ë‹ˆë‹¤. 빨리 충전하시기 ë°”ëžë‹ˆë‹¤.
Your hours will be terminated within 24 hours.Please Charge Quickly.
20130807 to 20130814
@@ -15190,7 +15190,7 @@ Your hours will be terminated within 24 hours.Please Charge Quickly.
Your hours will be terminated within this week. Please Charge before termination.
*/
MSG_BILLING_CHN_5 = 0x980,
-/*20130215 to 20180621
+/*20130215 to 20180704
현재 ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d시간 남았습니다. ì •ìƒì ì¸ 게임 ì´ìš©ì„ 위해 ì¶©ì „ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Current Time Left:%d hours.Charge the game for uninterrupted play.
20130807 to 20130814
@@ -15198,7 +15198,7 @@ Current Time Left:%d hours.Charge the game for uninterrupted play.
Your hours will be terminated within 24 hours.Please Charge Quickly.
*/
MSG_BILLING_CHN_6 = 0x981,
-/*20130215 to 20180621
+/*20130215 to 20180704
현재 ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d분 남았습니다. ì´ìš©ì‹œê°„ì´ ëë‚œ 후 ê°•ì œì ìœ¼ë¡œ 종료ë©ë‹ˆë‹¤. ì •ìƒì ì¸ 게임 ì´ìš©ì„ 위해 ì¶©ì „ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Current Time Left:%d minutes.Charge the game for uninterrupted play.
20130807 to 20130814
@@ -15206,7 +15206,7 @@ Current Time Left:%d minutes.Charge the game for uninterrupted play.
Current Time Left:%d hours.Charge the game for uninterrupted play.
*/
MSG_BILLING_CHN_7 = 0x982,
-/*20130215 to 20180621
+/*20130215 to 20180704
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d시간 %d분 남았습니다.
Time Left: %d hours %d minutes
20130807 to 20130814
@@ -15214,7 +15214,7 @@ Time Left: %d hours %d minutes
Current Time Left:%d minutes.Charge the game for uninterrupted play.
*/
MSG_BILLING_CHN_8 = 0x983,
-/*20130215 to 20180621
+/*20130215 to 20180704
%d%% ( 기본 100%% + PC방 %d%% + 프리미엄 %d%% + %s서버 %d%% )
%d%% ( Basic 100%% + PCRoom %d%% + Premium %d%% + %sServer %d%% )
20130807 to 20130814
@@ -15222,7 +15222,7 @@ Current Time Left:%d minutes.Charge the game for uninterrupted play.
Time Left: %d hours %d minutes
*/
MSG_BASIC_EXP_MSG_THAI = 0x984,
-/*20130215 to 20180621
+/*20130215 to 20180704
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d시간 %d분 í›„ì— ì¢…ë£Œë©ë‹ˆë‹¤.
After %d hours %d minutes, your game will be terminated.
20130807 to 20130814
@@ -15232,7 +15232,7 @@ After %d hours %d minutes, your game will be terminated.
MSG_CHN_BILLING_EXPIRE_TIME = 0x985,
#endif
#if PACKETVER >= 20130220
-/*20130220 to 20180621
+/*20130220 to 20180704
ìœ ì €ë‹˜ì˜ ê³„ì •ì€ ì˜êµ¬ ì ‘ì†ê¸ˆì§€ ë˜ì˜€ìŠµë‹ˆë‹¤
This Account is permanently Banned.
20130807 to 20130814
@@ -15240,7 +15240,7 @@ This Account is permanently Banned.
After %d hours %d minutes, your game will be terminated.
*/
MSG_CHN_BLOCK_FOREVER = 0x986,
-/*20130220 to 20180621
+/*20130220 to 20180704
ìœ ì €ë‹˜ì˜ ê³„ì •ì€ ì ‘ì†ê¸ˆì§€ ë˜ì˜€ìŠµë‹ˆë‹¤
해지 시간 : %04d-%02d-%02d %02d:%02d
This Account is banned.
@@ -15252,7 +15252,7 @@ This Account is permanently Banned.
MSG_CHN_BLOCK = 0x987,
#endif
#if PACKETVER >= 20130227
-/*20130227 to 20180621
+/*20130227 to 20180704
몬스터(Tab)
Monster(Tab)
20130807 to 20130814
@@ -15262,7 +15262,7 @@ This Account is banned.
Termination Time:%04d-%02d-%02d %02d:%02d
*/
MSG_WORLDMAP_MSG1 = 0x988,
-/*20130227 to 20180621
+/*20130227 to 20180704
맵(Alt)
Map(Alt)
20130807 to 20130814
@@ -15270,7 +15270,7 @@ Map(Alt)
Monster(Tab)
*/
MSG_WORLDMAP_MSG2 = 0x989,
-/*20130227 to 20180621
+/*20130227 to 20180704
안내 정보
Product Information
20130807 to 20130814
@@ -15278,7 +15278,7 @@ Product Information
Map(Alt)
*/
MSG_WORLDMAP_MSG3 = 0x98a,
-/*20130227 to 20180621
+/*20130227 to 20180704
검색 정보
Find Information
20130807 to 20130814
@@ -15286,7 +15286,7 @@ Find Information
Product Information
*/
MSG_WORLDMAP_MSG4 = 0x98b,
-/*20130227 to 20180621
+/*20130227 to 20180704
비공정
AirShip
20130807 to 20130814
@@ -15294,7 +15294,7 @@ AirShip
Find Information
*/
MSG_WORLDMAP_MSG5 = 0x98c,
-/*20130227 to 20180621
+/*20130227 to 20180704
카프ë¼
Kafra
20130807 to 20130814
@@ -15302,7 +15302,7 @@ Kafra
AirShip
*/
MSG_WORLDMAP_MSG6 = 0x98d,
-/*20130227 to 20180621
+/*20130227 to 20180704
(ë„ì°©)
(Arrival)
20130807 to 20130814
@@ -15312,21 +15312,21 @@ Kafra
MSG_WORLDMAP_MSG7 = 0x98e,
#endif
#if PACKETVER >= 20130313
-/*20130313 to 20180621
+/*20130313 to 20180704
Mob)%s:%s(%s)
20130807 to 20130814
(ë„ì°©)
(Arrival)
*/
MSG_NAVIGATION_MOB_S_S_S = 0x98f,
-/*20130313 to 20180621
+/*20130313 to 20180704
분í¬ë„:%s
Distribution:%s
20130807 to 20130814
Mob)%s:%s(%s)
*/
MSG_NAVIGATION_NUM = 0x990,
-/*20130313 to 20180621
+/*20130313 to 20180704
매우많ìŒ
Very Plenty
20130807 to 20130814
@@ -15334,7 +15334,7 @@ Very Plenty
Distribution:%s
*/
MSG_NAVIGATION_NUM1 = 0x991,
-/*20130313 to 20180621
+/*20130313 to 20180704
많ìŒ
Plenty
20130807 to 20130814
@@ -15342,7 +15342,7 @@ Plenty
Very Plenty
*/
MSG_NAVIGATION_NUM2 = 0x992,
-/*20130313 to 20180621
+/*20130313 to 20180704
보통
Normal
20130807 to 20130814
@@ -15350,7 +15350,7 @@ Normal
Plenty
*/
MSG_NAVIGATION_NUM3 = 0x993,
-/*20130313 to 20180621
+/*20130313 to 20180704
ì ìŒ
Low
20130807 to 20130814
@@ -15358,7 +15358,7 @@ Low
Normal
*/
MSG_NAVIGATION_NUM4 = 0x994,
-/*20130313 to 20180621
+/*20130313 to 20180704
매우ì ìŒ
Very Low
20130807 to 20130814
@@ -15368,7 +15368,7 @@ Low
MSG_NAVIGATION_NUM5 = 0x995,
#endif
#if PACKETVER >= 20130320
-/*20130320 to 20180621
+/*20130320 to 20180704
ì€í–‰ì„ ì´ìš©í•  수 없습니다. ìž ì‹œ 후 다시 ì‹œë„하세요.
The bank is not available. Please try again in a few minutes.
20130807 to 20130814
@@ -15376,7 +15376,7 @@ The bank is not available. Please try again in a few minutes.
Very Low
*/
MSG_BANK_SYSTEM_ERROR = 0x996,
-/*20130320 to 20180621
+/*20130320 to 20180704
ì€í–‰ 잔고가 부족합니다.
Bank balance is low.
20130807 to 20130814
@@ -15386,7 +15386,7 @@ The bank is not available. Please try again in a few minutes.
MSG_BANK_WITHDRAW_NO_MONEY = 0x997,
#endif
#if PACKETVER >= 20130327
-/*20130327 to 20180621
+/*20130327 to 20180704
보유한 Zeny 가 부족해서 입금할 수 없습니다.
You don't have enough zeny
20130807 to 20130814
@@ -15394,7 +15394,7 @@ You don't have enough zeny
Bank balance is low.
*/
MSG_BANK_DEPOSIT_NO_MONEY = 0x998,
-/*20130327 to 20180621
+/*20130327 to 20180704
1 Zeny ì´ìƒ 입금 가능합니다.
Minimum Deposit Amount: 1 zeny
20130807 to 20130814
@@ -15402,7 +15402,7 @@ Minimum Deposit Amount: 1 zeny
You don't have enough zeny
*/
MSG_BANK_DEPOSIT_ZERO = 0x999,
-/*20130327 to 20180621
+/*20130327 to 20180704
1 Zeny ì´ìƒ 출금 가능합니다.
Minimum Withdrawal Amount: 1 zeny
20130807 to 20130814
@@ -15412,7 +15412,7 @@ Minimum Deposit Amount: 1 zeny
MSG_BANK_WITHDRAW_ZERO = 0x99a,
/*20130327 to 20130605
보유 Zeny 는 21 ì–µì„ ë„˜ì„ ìˆ˜ 없습니다.
-20130605 to 20180621
+20130605 to 20180704
보유 Zeny 는 2,147,483,647 Zeny를 ë„˜ì„ ìˆ˜ 없습니다.
You cannot hold more than 2,147,483,647 Zeny
20130807 to 20130814
@@ -15420,7 +15420,7 @@ You cannot hold more than 2,147,483,647 Zeny
Minimum Withdrawal Amount: 1 zeny
*/
MSG_BANK_OVER_INT_MAX = 0x99b,
-/*20130327 to 20180621
+/*20130327 to 20180704
your account is lock by mobil otp
your account is lock by mobile otp
20130807 to 20130814
@@ -15428,14 +15428,14 @@ your account is lock by mobile otp
You cannot hold more than 2,147,483,647 Zeny
*/
MSG_REFUSE_MOTP_LOCK = 0x99c,
-/*20130327 to 20180621
+/*20130327 to 20180704
MOTP auth fail
20130807 to 20130814
your account is lock by mobil otp
your account is lock by mobile otp
*/
MSG_REFUSE_MOTP_AUTH_FAIL = 0x99d,
-/*20130327 to 20180621
+/*20130327 to 20180704
%d분간 몬스터ì—게 ì–»ì„ ìˆ˜ 있는 Job경험치가 %d%% ì¦ê°€í•©ë‹ˆë‹¤.
For %d minutes,Job Experience obtained from monster is increased by %d%%
20130807 to 20130814
@@ -15446,7 +15446,7 @@ MOTP auth fail
#if PACKETVER >= 20130410
/*20130410 to 20130410
소지 Zeny : %d Zeny
-20130417 to 20180621
+20130417 to 20180704
소지 Zeny : %s Zeny
Current Zeny: %s Zeny
20130807 to 20130814
@@ -15454,7 +15454,7 @@ Current Zeny: %s Zeny
For %d minutes,Job Experience obtained from monster is increased by %d%%
*/
MSG_BANK_MY_ZENY = 0x99f,
-/*20130410 to 20180621
+/*20130410 to 20180704
Zeny
20130807 to 20130814
소지 Zeny : %s Zeny
@@ -15467,7 +15467,7 @@ Current Zeny: %s Zeny
최대 2,147,483,647ì–µ Zeny까지만 ë³´ê´€ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
20130605 to 20130605
최대 2,147,483,647 Zeny까지만 ë³´ê´€ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
-20130612 to 20180621
+20130612 to 20180704
최대 2,147,483,647 Zeny 까지만 ë³´ê´€ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
The Maximum amount is 2,147,483,647 Zeny
20130807 to 20130814
@@ -15476,7 +15476,7 @@ Zeny
MSG_BANK_WARNING = 0x9a1,
#endif
#if PACKETVER >= 20130515
-/*20130515 to 20180621
+/*20130515 to 20180704
ì´ì•Œì´ 부족합니다.
Insufficient bullet
20130807 to 20130814
@@ -15484,7 +15484,7 @@ Insufficient bullet
The Maximum amount is 2,147,483,647 Zeny
*/
MSG_NEED_MORE_BULLET = 0x9a2,
-/*20130515 to 20180621
+/*20130515 to 20180704
10억제니 ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 10ì–µ 제니로 íŒë§¤ë©ë‹ˆë‹¤.
You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
20130807 to 20130814
@@ -15494,7 +15494,7 @@ Insufficient bullet
MSG_OVERPRICE_MAX = 0x9a3,
#endif
#if PACKETVER >= 20130605
-/*20130605 to 20180621
+/*20130605 to 20180704
AuthTicket is Not Vaild
AuthTicket is Not Valid
20130807 to 20130814
@@ -15504,7 +15504,7 @@ You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
MSG_NOT_VALID_AUTH_TICKET = 0x9a4,
/*20130605 to 20130605
ErrorCode : %d, ErrorValue : %d
-20130612 to 20180621
+20130612 to 20180704
ErrorCategory : %d, ErrorCode : %d (%d,%d,%d,%d)
ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
20130807 to 20130814
@@ -15516,7 +15516,7 @@ AuthTicket is Not Valid
#if PACKETVER >= 20130618
/*20130618 to 20130618
%d%% ( Primary 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
-20130626 to 20180621
+20130626 to 20180704
%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
20130807 to 20130814
@@ -15529,7 +15529,7 @@ ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
20130807 to 20130814
%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
-20130925 to 20180621
+20130925 to 20180704
%d분간 몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %d%%ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Basic item drop rate from monster hunting is increased for %dmins by %dtimes.
*/
@@ -15538,21 +15538,21 @@ Basic item drop rate from monster hunting is increased for %dmins by %dtimes.
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %dì‹œ %.2d분간 %dë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
20130807 to 20130814
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %d분간 %dë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
-20130925 to 20180621
+20130925 to 20180704
%dì‹œ %.2d분간 몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %d%%ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Basic item drop rate from monster hunting is increased for %dhour %.2dmins by %dtimes.
*/
MSG_RECEIVEITEM_VALUE_1 = 0x9a8,
#endif
#if PACKETVER >= 20130626
-/*20130626 to 20180621
+/*20130626 to 20180704
%s ì˜ ê°€ê²©ì´
The price of^0000FF %s^000000
20130807 to 20130814
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %dì‹œ %.2d분간 %dë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
*/
MSG_WARNING_PRICE1 = 0x9a9,
-/*20130626 to 20180621
+/*20130626 to 20180704
100000000
1000000000
20130807 to 20130814
@@ -15560,7 +15560,7 @@ The price of^0000FF %s^000000
The price of^0000FF %s^000000
*/
MSG_WARNING_PRICE2 = 0x9aa,
-/*20130626 to 20180621
+/*20130626 to 20180704
^ff0000%d^0000ffì–µ
is over ^FF0000%d^0000FF Billion^000000 Zeny and
20130807 to 20130814
@@ -15568,21 +15568,21 @@ The price of^0000FF %s^000000
1000000000
*/
MSG_WARNING_PRICE3 = 0x9ab,
-/*20130626 to 20180621
+/*20130626 to 20180704
10000000
20130807 to 20130814
^ff0000%d^0000ffì–µ
is over ^FF0000%d^0000FF Billion^000000 Zeny and
*/
MSG_WARNING_PRICE4 = 0x9ac,
-/*20130626 to 20180621
+/*20130626 to 20180704
^ff0000%d^0000ff천만
more than^FF0000 %d0^0000FF Million^000000 Zeny
20130807 to 20130814
10000000
*/
MSG_WARNING_PRICE5 = 0x9ad,
-/*20130626 to 20180621
+/*20130626 to 20180704
^0000ffZeny ì´ìƒ^000000입니다.
ìž…ë ¥ê¸ˆì•¡ì´ ë§žìŠµë‹ˆê¹Œ?
. Is this correct?
@@ -15591,7 +15591,7 @@ The price of^0000FF %s^000000
more than^FF0000 %d0^0000FF Million^000000 Zeny
*/
MSG_WARNING_PRICE6 = 0x9ae,
-/*20130626 to 20180621
+/*20130626 to 20180704
천만Zenyì´ìƒ 안전확ì¸
Safety check for more than 10m Zeny
20130807 to 20130814
@@ -15600,7 +15600,7 @@ Safety check for more than 10m Zeny
. Is this correct?
*/
MSG_WARNING_PRICE7 = 0x9af,
-/*20130626 to 20180621
+/*20130626 to 20180704
https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
20130807 to 20130814
천만Zenyì´ìƒ 안전확ì¸
@@ -15611,19 +15611,19 @@ Safety check for more than 10m Zeny
https://kepler.warpportal.com/steam/purchase/?step=1&steamid=76561198071003044&game=rose&accountname=khanhtest111&lang=en
20130807 to 20130814
https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
-20131030 to 20180621
+20131030 to 20180704
https://kepler.warpportal.com/ro1/purchase/?step=1&steamid=%lld&accountname=
https://kepler.warpportal.com/ror/purchase/?step=1&steamid=%lld&accountname=
*/
MSG_AMERICA_CASHSHOP_URL_STEAM = 0x9b1,
-/*20130626 to 20180621
+/*20130626 to 20180704
지ìƒì˜ ë, 스플랑디드와 부유대륙 ì•Œí”„í—¤ìž„ì„ ìž‡ëŠ” 다리, ë¹„í”„ë¡œìŠ¤íŠ¸ì— ìƒê²¨ë‚œ 거대한 ê· ì—´, 그리고 ê·¼ì›ì„ ì•Œ 수 없는 미ê¶ìˆ².
A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
20130807 to 20130814
https://kepler.warpportal.com/steam/purchase/?step=1&steamid=76561198071003044&game=rose&accountname=khanhtest111&lang=en
*/
MSG_QUEST_INFO_01 = 0x9b2,
-/*20130626 to 20180621
+/*20130626 to 20180704
ì´ê²ƒì€ ì—¬í–‰ì˜ ëì„ ì•Œë¦¬ëŠ” í‘œì‹ì¸ê°€, 새로운 세계를 여는 지표ì¸ê°€! 수호ìžëŠ” ë…¸ëž«ë§ ê°™ì€ ìœ í˜¹ì— ì ì°¨ ë„‹ì„ ìžƒì–´ê°€ê³  있었다.
This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
20130807 to 20130814
@@ -15631,7 +15631,7 @@ This is a marker indicating the end of the trip, a new world is opening indicato
A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
*/
MSG_QUEST_INFO_02 = 0x9b3,
-/*20130626 to 20180621
+/*20130626 to 20180704
수천 ë…„ì˜ ì„¸ì›”ì´ í르는 ë™ì•ˆ, ê·¸ 스스로가 홀로 ì•ˆê°„íž˜ì„ ì“°ë©° 지켜낸 ê²ƒì´ ë¬´ì—‡ì´ì—ˆëŠ”지, ë´‰ì¸ ë˜ì–´ 긴 ì‹œê°„ì„ ê°‡í˜€ë²„ë¦° ê²ƒì€ ì˜¤ížˆë ¤ ìžì‹ ì´ 아니었는지 í˜¼ëž€ì„ ëŠë¼ê³  있었다.
For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
20130807 to 20130814
@@ -15639,7 +15639,7 @@ For thousands of years, a mysterious melody has mesmerized the guardian. After a
This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
*/
MSG_QUEST_INFO_03 = 0x9b4,
-/*20130626 to 20180621
+/*20130626 to 20180704
ìœ í˜¹ì˜ ë…¸ëž«ë§ì´ ìµœê³ ì¡°ì— ì´ë¥´ë €ì„ ë•Œ, 지ìƒì˜ ë 스플랑디드와 부유대륙 ì•Œí”„í—¤ìž„ì„ ìž‡ëŠ” 다리, ë¹„í”„ë¡œìŠ¤íŠ¸ì— ê±°ëŒ€í•œ ê· ì—´ì´ ìƒê²¨ë‚¬ê³ , 그로 ì¸í•´ ë‘ ì„¸ê³„ê°„ì˜ ì™•ëž˜ê°€ ëŠê¸°ë©´ì„œ ì‚¬ëžŒë“¤ì€ í° ë¶ˆíŽ¸ì„ ê²ªê²Œ ë˜ì—ˆë‹¤.
When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
20130807 to 20130814
@@ -15647,7 +15647,7 @@ When the melody reached its peak, a giant crevice appeared in Bifrost, the bridg
For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
*/
MSG_QUEST_INFO_04 = 0x9b5,
-/*20130626 to 20180621
+/*20130626 to 20180704
ë¹„í”„ë¡œìŠ¤íŠ¸ì˜ í†µë¡œëŠ” ì´ì œ 미ê¶ìˆ² ë¿. ê·¼ì›ì¡°ì°¨ ì•Œ 수 없는 ê·¸ê³³ì„ ë¬´ì‚¬ížˆ 통과 í•œ ì‚¬ëžŒì€ ì§€ê¸ˆê¹Œì§€ ì•„ë¬´ë„ ì—†ì—ˆë‹¤.
Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody knows how the forest came to exist, and nobody has ever come out of it alive...
20130807 to 20130814
@@ -15655,7 +15655,7 @@ Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody know
When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
*/
MSG_QUEST_INFO_05 = 0x9b6,
-/*20130626 to 20180621
+/*20130626 to 20180704
숱한 ëª¨í—˜ê°€ë“¤ì„ ì§‘ì–´ 삼킨 혼ëˆì˜ 지옥, 미ê¶ìˆ²ì€ ê·¸ ì†ì„ 방황하는 ì´ë¦„ 모를 ì—¬ì¸ì˜ 마ìŒì²˜ëŸ¼ ë”ìš± 깊고 혼란스럽게 확장ë˜ê³  있었다.
Swallowed countless adventurers to put a hell of confusion, wandering in the forest labyrinth of nowhere, like the heart of a woman was being extend deeper confusion.
20130807 to 20130814
@@ -15665,7 +15665,7 @@ Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody know
MSG_QUEST_INFO_06 = 0x9b7,
#endif
#if PACKETVER >= 20130717
-/*20130717 to 20180621
+/*20130717 to 20180704
숫ìžë§Œ ìž…ë ¥ 가능합니다.
You can enter only numbers.
20130807 to 20130814
@@ -15675,7 +15675,7 @@ Swallowed countless adventurers to put a hell of confusion, wandering in the for
MSG_BANK_CHECK_NUM = 0x9b8,
#endif
#if PACKETVER >= 20130724
-/*20130724 to 20180621
+/*20130724 to 20180704
êµí™˜ì°½ ë˜ëŠ” ìƒì ì´ 활성화 ëœ ìƒíƒœì—서는 ìž…ì¶œê¸ˆì„ í•˜ì‹¤ìˆ˜ 없습니다.
Exchange or store window is active and can not register the withdrawal.
20130807 to 20130814
@@ -15685,7 +15685,7 @@ You can enter only numbers.
MSG_BANK_PROHIBIT = 0x9b9,
#endif
#if PACKETVER >= 20130731
-/*20130731 to 20180621
+/*20130731 to 20180704
바로가기
Go to
20130807 to 20130814
@@ -15693,7 +15693,7 @@ Go to
Exchange or store window is active and can not register the withdrawal.
*/
MSG_QUEST_INFO_00 = 0x9ba,
-/*20130731 to 20180621
+/*20130731 to 20180704
ì•„ì´í…œ 비êµ
Item Compare
20130807 to 20130814
@@ -15706,7 +15706,7 @@ Go to
/*20130807 to 20130814
ì•„ì´í…œ 비êµ
Item Compare
-20130821 to 20180621
+20130821 to 20180704
현재 장착하려고 하는 ì´ê¸°ê°€ 장착하고 있는 íƒ„í™˜ì— ë§žì§€ 않습니다
Now you are trying to mount the gun equipped with bullet does not meet
*/
@@ -15714,7 +15714,7 @@ Now you are trying to mount the gun equipped with bullet does not meet
/*20130807 to 20130814
현재 장착하려고 하는 ì´ê¸°ê°€ 장착하고 있는 íƒ„í™˜ì— ë§žì§€ 않습니다
Now you are trying to mount the gun equipped with bullet does not meet
-20130821 to 20180621
+20130821 to 20180704
현재 장착하려고 하는 íƒ„í™˜ì´ ìž¥ì°©í•˜ê³  있는 ì´ê¸°ì™€ 맞지 않습니다
Now you are trying to mount the guns and bullets will not fit mounted
*/
@@ -15722,14 +15722,14 @@ Now you are trying to mount the guns and bullets will not fit mounted
/*20130807 to 20130814
현재 장착하려고 하는 íƒ„í™˜ì´ ìž¥ì°©í•˜ê³  있는 ì´ê¸°ì™€ 맞지 않습니다
Now you are trying to mount the guns and bullets will not fit mounted
-20130821 to 20180621
+20130821 to 20180704
íŒë§¤í•  ì•„ì´í…œì„ 등ë¡í•˜ì§€ 않았습니다. íŒë§¤í•˜ì‹¤ ì•„ì´í…œì„ 등ë¡í•´ 주세요
Has not registered to sell the item. Please register to sell the item
*/
MSG_BUYINGSTORE_MAKEWND_ADD_GOODS = 0x9be,
#endif
#if PACKETVER >= 20130821
-/*20130821 to 20180621
+/*20130821 to 20180704
ITEM
*/
MSG_ITEM_IN_MAIL_SYSTEM = 0x9bf,
@@ -15737,276 +15737,276 @@ ITEM
#if PACKETVER >= 20130828
/*20130828 to 20130911
길드 창고를 ì´ìš©í•  수 없습니다. ìž ì‹œ 후 ì´ìš©í•´ì£¼ì„¸ìš”.
-20130917 to 20180621
+20130917 to 20180704
길드 창고를 ì´ìš©í•  수 없습니다.
Guild storage is not available.
*/
MSG_GUILD_STORAGE_OPEN_ERROR = 0x9c0,
-/*20130828 to 20180621
+/*20130828 to 20180704
ê¸¸ë“œì— ê°€ìž…ë˜ì–´ 있지 않습니다. 가입 후 ì´ìš©í•´ì£¼ì„¸ìš”.
Guild is not subscribed to. After signing up, please use
*/
MSG_GUILD_STORAGE_OPEN_NO_JOIN_GUILD = 0x9c1,
-/*20130828 to 20180621
+/*20130828 to 20180704
다른 길드ì›ì´ 사용중입니다. ìž ì‹œ 후 ì´ìš©í•´ì£¼ì„¸ìš”.
Two other guild members are in use. Please use it after a while.
*/
MSG_GUILD_STORAGE_WARNING_USING_ANOTHER_MEMBER = 0x9c2,
-/*20130828 to 20180621
+/*20130828 to 20180704
창고권한
Storage Permission
*/
MSG_GUILD_STORAGE_PERMISSON = 0x9c3,
-/*20130828 to 20180621
+/*20130828 to 20180704
길드창고
Guild Storage
*/
MSG_GUILD_STORAGE_TITLE = 0x9c4,
/*20130828 to 20130828
ê¸¸ë“œì°½ê³ ì˜ ì‚¬ìš© ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. 길드 마스터ì—게 요청하세요.
-20130904 to 20180621
+20130904 to 20180704
ê¸¸ë“œì°½ê³ ì˜ ì‚¬ìš© ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.
You do not have permission to use guild storage.
*/
MSG_GUILD_STORAGE_PERMISSON_WARNING_MSG = 0x9c5,
#endif
#if PACKETVER >= 20130917
-/*20130917 to 20180621
+/*20130917 to 20180704
한정íŒë§¤ 등ë¡ì°½
Limited Sale Registration Window
*/
MSG_BARGAINSALE_TOOLWND_TITLE = 0x9c6,
-/*20130917 to 20180621
+/*20130917 to 20180704
ì•„ì´í…œ DB명
Item DB Name
*/
MSG_BARGAINSALE_TOOLWND_DB_NAME = 0x9c7,
-/*20130917 to 20180621
+/*20130917 to 20180704
ì•„ì´í…œ DB번호
Item DB Number
*/
MSG_BARGAINSALE_TOOLWND_DB_NUMBER = 0x9c8,
-/*20130917 to 20180621
+/*20130917 to 20180704
íŒë§¤ 갯수
Number of Sale
*/
MSG_BARGAINSALE_TOOLWND_SELL_COUNT = 0x9c9,
-/*20130917 to 20180621
+/*20130917 to 20180704
íŒë§¤ 시작시간
Sale Start Time
*/
MSG_BARGAINSALE_TOOLWND_SELL_STARTTIME = 0x9ca,
-/*20130917 to 20180621
+/*20130917 to 20180704
íŒë§¤í•  시간
Time to sell
*/
MSG_BARGAINSALE_TOOLWND_SELL_PERIODTIME = 0x9cb,
-/*20130917 to 20180621
+/*20130917 to 20180704
íŒë§¤í•  갯수를 입력해 주세요
Please enter number you want to sell
*/
MSG_BARGAINSALE_TOOLWND_INPUT_COUNT_MSG = 0x9cc,
-/*20130917 to 20180621
+/*20130917 to 20180704
íŒë§¤ ì‹œìž‘ì‹œê°„ì„ ìž…ë ¥í•´ 주세요
Enter start time of sale
*/
MSG_BARGAINSALE_TOOLWND_INPUT_STARTTIME_MSG = 0x9cd,
-/*20130917 to 20180621
+/*20130917 to 20180704
íŒë§¤ ì‹œìž‘ì‹œê°„ì˜ ë²”ìœ„ê°€ 맞지 않습니다
Start time does not match the scope of sales.
*/
MSG_BARGAINSALE_TOOLWND_WRONG_RANGE_MSG = 0x9ce,
-/*20130917 to 20180621
+/*20130917 to 20180704
íŒë§¤í•  ì‹œê°„ì„ ìž…ë ¥í•´ 주세요
Please enter the time
*/
MSG_BARGAINSALE_TOOLWND_INPUT_PERIODTIME_MSG = 0x9cf,
-/*20130917 to 20180621
+/*20130917 to 20180704
Item DB Nameì„ ìž…ë ¥í•´ 주세요
Please enter the Item DB Name
*/
MSG_BARGAINSALE_TOOLWND_INPUT_ITEMDBNAME_MSG = 0x9d0,
-/*20130917 to 20180621
+/*20130917 to 20180704
Item ID ì¡°íšŒì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤. í™•ì¸ í›„ 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤
Item ID lookup failed. Please try again later
*/
MSG_BARGAINSALE_TOOLWND_ITEMID_CHECK_FAILED_MSG = 0x9d1,
-/*20130917 to 20180621
+/*20130917 to 20180704
>> ItemName : %s / Price : %dc / 수량 : %d / íŒë§¤ê¸°ê°„ : %dì›”:%dì¼:%dì‹œ:%d분 ~ %dì›”:%dì¼:%dì‹œ:%d분
>> ItemName: %s / Price: %dc / Quantity: %d / TimeOfSale: %dMonth:%dDay:%dMinute:%dSecond ~ %dMonth:%dDay:%dMinute:%dSecond
*/
MSG_BARGAINSALE_TOOLWND_RESULT_FORMAT = 0x9d2,
-/*20130917 to 20180621
+/*20130917 to 20180704
등ë¡ì— 성공하였습니다
Registration successful
*/
MSG_BARGAINSALE_TOOLWND_APPLY_SUCCESS_MSG = 0x9d3,
-/*20130917 to 20180621
+/*20130917 to 20180704
등ë¡ì— 실패하였습니다. 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Registration failure. Please try again later.
*/
MSG_BARGAINSALE_TOOLWND_APPLY_FAILED_MSG = 0x9d4,
-/*20130917 to 20180621
+/*20130917 to 20180704
ì´ë¯¸ 등ë¡ëœ ì•„ì´í…œì´ 있습니다. 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Item has already been registered. Please try again later.
*/
MSG_BARGAINSALE_TOOLWND_ALREADY_REGISTERED_MSG = 0x9d5,
-/*20130917 to 20180621
+/*20130917 to 20180704
ì•„ì´í…œ ì‚­ì œì— ì‹¤íŒ¨ 하였습니다. 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Failed to delete the item. Please try again later.
*/
MSG_BARGAINSALE_TOOLWND_DELETE_FAILED_MSG = 0x9d6,
-/*20130917 to 20180621
+/*20130917 to 20180704
%s ì•„ì´í…œì´ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.
%s item has been deleted.
*/
MSG_BARGAINSALE_TOOLWND_DELETE_SUCCESS_MSG = 0x9d7,
-/*20130917 to 20180621
+/*20130917 to 20180704
특가
Special
*/
MSG_BARGAINSALE_CASHSHOP_TAB_NAME = 0x9d8,
-/*20130917 to 20180621
+/*20130917 to 20180704
한정íŒë§¤ ì•„ì´í…œ íŒë§¤ìˆ˜ëŸ‰ 갱신
Sales limited sale item update
*/
MSG_BARGAINSALE_CASHSHOP_REFRESH_BTN_TOOLTIP = 0x9d9,
-/*20130917 to 20180621
+/*20130917 to 20180704
íŒë§¤ì¢…료
Discontinued
*/
MSG_BARGAINSALE_CASHSHOP_TIMER = 0x9da,
-/*20130917 to 20180621
+/*20130917 to 20180704
ìˆ˜ëŸ‰ê°±ì‹ ì´ í•„ìš”í•©ë‹ˆë‹¤
Quantity update is required
*/
MSG_BARGAINSALE_CASHSHOP_REFRESH_MSG = 0x9db,
-/*20130917 to 20180621
+/*20130917 to 20180704
재고가 부족하여 %d ê°œ 만í¼ë§Œ 구입합니다
The %d is out of stock or to buy as much as
*/
MSG_BARGAINSALE_CASHSHOP_CHECK_COUNT_MSG = 0x9dc,
-/*20130917 to 20180621
+/*20130917 to 20180704
%s ì•„ì´í…œì˜ 특가íŒë§¤ê°€ 시작ë˜ì—ˆìŠµë‹ˆë‹¤
%s Items are on sale
*/
MSG_BARGAINSALE_START_MSG = 0x9dd,
-/*20130917 to 20180621
+/*20130917 to 20180704
%s ì•„ì´í…œì˜ 매진 ë˜ëŠ” íŒë§¤ì‹œê°„만료로 ì¸í•´ 한정íŒë§¤ê°€ 종료ë˜ì—ˆìŠµë‹ˆë‹¤
%s time-out or sale of the items sold has been shut down due to the limited sales
*/
MSG_BARGAINSALE_CLOSE_MSG = 0x9de,
-/*20130917 to 20180621
+/*20130917 to 20180704
/한정íŒë§¤
/limitedsale
*/
MSG_BARGAINSALE_TOOLWND_CALL = 0x9df,
#endif
#if PACKETVER >= 20131002
-/*20131002 to 20180621
+/*20131002 to 20180704
http://www.ragnarokeurope.com/news/home-r70.html
*/
MSG_FRANCE_CASHSHOP_URL = 0x9e0,
-/*20131002 to 20180621
+/*20131002 to 20180704
http://www.ragnarokeurope.com/index.php?rubrique=70&Steam
*/
MSG_FRANCE_CASHSHOP_URL_STEAM = 0x9e1,
#endif
#if PACKETVER >= 20131016
-/*20131016 to 20180621
+/*20131016 to 20180704
êµ¬ìž…ì— ì„±ê³µí•œ 품목
Item purchase successful
*/
MSG_PARA_RESULT_TITLE = 0x9e2,
-/*20131016 to 20180621
+/*20131016 to 20180704
ì£¼ë¬¸ëŸ‰ì´ ìž¬ê³ ëŸ‰ì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
You do not have enough items.
*/
MSG_PARA_WRONG_PURCHASE_COUNT_MSG = 0x9e3,
-/*20131016 to 20180621
+/*20131016 to 20180704
초대할수 없는 케릭터 ì´ë¦„입니다.
Name of the character that cannot be invited.
*/
MSG_PARTY_INVITE = 0x9e4,
-/*20131016 to 20180621
+/*20131016 to 20180704
길드초대할수 없는 케릭터 ì´ë¦„입니다.
You cannot invite the character to the guild.
*/
MSG_GUILD_INVITE = 0x9e5,
-/*20131016 to 20180621
+/*20131016 to 20180704
ì¼ë¶€ í’ˆëª©ì€ ì´ë¯¸ íŒë§¤ë˜ì–´ êµ¬ìž…ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Item already Sold,Purchase Failed.
*/
MSG_PARA_PURCHASE_ITEM_FAIL = 0x9e6,
#endif
#if PACKETVER >= 20131030
-/*20131030 to 20180621
+/*20131030 to 20180704
현재 위치ì—ì„œ 워프 장소를 기억 í•  수 없습니다.
The warp spot cannot be memorized in current position.
*/
MSG_NOWARPSKILL2 = 0x9e7,
-/*20131030 to 20180621
+/*20131030 to 20180704
무게가 초과ë˜ì–´ ì•„ì´í…œì„ 구매할 수 없습니다.
Cannot purchase item, You exceeded the weight.
*/
MSG_PARA_PURCHASE_ITEM_WEIGHT = 0x9e8,
-/*20131030 to 20180621
+/*20131030 to 20180704
No.
*/
MSG_GUILD_STORAGE_NUMBER = 0x9e9,
-/*20131030 to 20180621
+/*20131030 to 20180704
ì•„ì´í…œ
Item
*/
MSG_GUILD_STORAGE_ITEM = 0x9ea,
-/*20131030 to 20180621
+/*20131030 to 20180704
개수
Number
*/
MSG_GUILD_STORAGE_ITEM_COUNT = 0x9eb,
-/*20131030 to 20180621
+/*20131030 to 20180704
ì´ë¦„
Name
*/
MSG_GUILD_STORAGE_USER_NAME = 0x9ec,
-/*20131030 to 20180621
+/*20131030 to 20180704
시간
Time
*/
MSG_GUILD_STORAGE_LOG_TIME = 0x9ed,
-/*20131030 to 20180621
+/*20131030 to 20180704
입/출
Input/Output
*/
MSG_GUILD_STORAGE_ITEM_IN_OUT = 0x9ee,
-/*20131030 to 20180621
+/*20131030 to 20180704
로그가 존재하지 않습니다.
Log does not exist.
*/
MSG_GUILD_STORAGE_LOG_FINISH = 0x9ef,
-/*20131030 to 20180621
+/*20131030 to 20180704
ì „ ì²´
Entire
*/
MSG_GUILD_STORAGE_LOG_ALL = 0x9f0,
-/*20131030 to 20180621
+/*20131030 to 20180704
넣 기
Insert Symbol
*/
MSG_GUILD_STORAGE_LOG_IN = 0x9f1,
-/*20131030 to 20180621
+/*20131030 to 20180704
빼 기
Remaining Time
*/
MSG_GUILD_STORAGE_LOG_OUT = 0x9f2,
#endif
#if PACKETVER >= 20131106
-/*20131106 to 20180621
+/*20131106 to 20180704
길드 창고 내역
Guild Storage Logs
*/
MSG_GUILD_STORAGE_LOG_WND_NAME = 0x9f3,
-/*20131106 to 20180621
+/*20131106 to 20180704
ë‚´ì—­ì€ ìµœê·¼ 100개만 표시ë©ë‹ˆë‹¤.
100 entries are displayed.
*/
@@ -16015,157 +16015,157 @@ Guild Storage Logs
#if PACKETVER >= 20131120
/*20131120 to 20131120
%s : +%d
-20131127 to 20180621
+20131127 to 20180704
ê¸¸ë“œì°½ê³ ì˜ ì‚¬ìš© 시간 2ë¶„ì´ ê²½ê³¼ë˜ì–´ ìžë™ìœ¼ë¡œ 종료ë©ë‹ˆë‹¤.
Guild Storage is open only for 2 minutes, and will close automatically.
*/
MSG_GUILD_STORAGE_CLOSE_TIMEOUT = 0x9f5,
#endif
#if PACKETVER >= 20131204
-/*20131204 to 20180621
+/*20131204 to 20180704
Incorrect GameSamba ID. Please Try Again.
*/
MSG_INCORRECT_GAMESAMBEID = 0x9f6,
-/*20131204 to 20180621
+/*20131204 to 20180704
%s [%d옵션] : %d 개
%s [%d Option]: %d Quantity
*/
MSG_EA5 = 0x9f7,
#endif
#if PACKETVER >= 20131211
-/*20131211 to 20180621
+/*20131211 to 20180704
ì½”ì¸ì´ 필요합니다.
Requires a Coin.
*/
MSG_USESKILL_FAIL_COINTS = 0x9f8,
-/*20131211 to 20180621
+/*20131211 to 20180704
ì½”ì¸ì´ %d 개가 필요합니다.
%d Coins are required.
*/
MSG_USESKILL_FAIL_COINTS_NUM = 0x9f9,
-/*20131211 to 20180621
+/*20131211 to 20180704
개틀ë§ê±´ ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Gatling Gun should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_GATLING = 0x9fa,
-/*20131211 to 20180621
+/*20131211 to 20180704
샷건 ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Shotguns should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_SHOTGUN = 0x9fb,
-/*20131211 to 20180621
+/*20131211 to 20180704
ë¼ì´í”Œ ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Rifle should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_RIFLE = 0x9fc,
-/*20131211 to 20180621
+/*20131211 to 20180704
리볼버 ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Pair of Revolver should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_HANDGUN = 0x9fd,
-/*20131211 to 20180621
+/*20131211 to 20180704
성ì†ì„± ë¸”ë¦¿ì„ ìž¥ì°©í•´ì•¼ 합니다
[Silver Bullet] weapon class must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_PROPERTY_SAINT_BULLET = 0x9fe,
-/*20131211 to 20180621
+/*20131211 to 20180704
ì•„ì´í…œ íŒë§¤ ë‚´ì—­
Item Sell History
*/
MSG_MERCHANT_SOLD_ITEM_LOG = 0x9ff,
-/*20131211 to 20180621
+/*20131211 to 20180704
ì•„ì´í…œ 구매 ë‚´ì—­
Item Purchase History
*/
MSG_MERCHANT_ITEM_BUY_LOG = 0xa00,
#endif
#if PACKETVER >= 20131218
-/*20131218 to 20180621
+/*20131218 to 20180704
그레네ì´ë“œëŸ°ì³ ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Grenade Launcher should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_GRANADE = 0xa01,
-/*20131218 to 20180621
+/*20131218 to 20180704
[히트배럴],[매드니스 캔슬러],[플래티넘 알터] ì˜ íš¨ê³¼ë“¤ì€ ì¤‘ì²©í•˜ì—¬ 사용할 수 없습니다.
[Heat barrel],[Last Stand],[Platinum Alter] cannot be used while sitting.
*/
MSG_FAIL_DUPLICATE_HEAT_BARREL_GS_MADNESSCANCEL_P_ALTER = 0xa02,
#endif
#if PACKETVER >= 20131223
-/*20131223 to 20180621
+/*20131223 to 20180704
현재 맵ì—서는 사용할 수 없는 스킬입니다.
Cannot use skill in this map.
*/
MSG_USESKILL_FAIL_MAP = 0xa03,
#endif
#if PACKETVER >= 20140108
-/*20140108 to 20180621
+/*20140108 to 20180704
길드 창고를 ì´ìš©ì¤‘ì¸ ê²½ìš° ì°½ê³ ì˜ ëª¨ë“  ì•„ì´í…œì´ 사ë¼ì§€ê²Œ ë©ë‹ˆë‹¤.
If you are using a guild storage, all items inside it will disappear.
*/
MSG_GUILD_STORAGE_WARNING = 0xa04,
#endif
#if PACKETVER >= 20140115
-/*20140115 to 20180621
+/*20140115 to 20180704
http://ragnarok.gamesamba.com/paytest.html
http://ragnarok.gamesamba.com/
*/
MSG_AMERICA_CASHSHOP_URL_GAMESAMBA = 0xa05,
-/*20140115 to 20180621
+/*20140115 to 20180704
로그ì¸ì„ 위해 패스워드를 입력해주세요.
Please enter a password to login.
*/
MSG_SECOND_PASSWORD_INFO_4 = 0xa06,
#endif
#if PACKETVER >= 20140129
-/*20140129 to 20180621
+/*20140129 to 20180704
펫 진화
Pet Evolution
*/
MSG_PET_EVOLUTION = 0xa07,
-/*20140129 to 20180621
+/*20140129 to 20180704
진화 - %s
Evolution - %s
*/
MSG_PET_EVOLUTION_WITH_PET_NAME = 0xa08,
-/*20140129 to 20180621
+/*20140129 to 20180704
진화ì—는 다ìŒì˜ 재료가 필요합니다.
Evolution requires the following ingredients:
*/
MSG_PET_EVOLUTION_NEED_ITEM = 0xa09,
-/*20140129 to 20180621
+/*20140129 to 20180704
진화 하시겠습니까?
Are you sure you want to evolve your pet?
*/
MSG_DO_YOU_WANT_TO_EVOLVE_PET = 0xa0a,
-/*20140129 to 20180621
+/*20140129 to 20180704
알 수 없는 오류
Unknown Error
*/
MSG_PET_EVOLUTION_FAIL_UNKNOWN = 0xa0b,
-/*20140129 to 20180621
+/*20140129 to 20180704
소환ëœíŽ«ì„ ê°–ê³  있지 않습니다.
Pet Cannot be hatched.
*/
MSG_PET_EVOLUTION_FAIL_NOTEXIST_CALLPET = 0xa0c,
-/*20140129 to 20180621
+/*20140129 to 20180704
요청한 ê²ƒì´ íŽ«ì•Œì´ ì•„ë‹™ë‹ˆë‹¤.
It is not requested petal.
*/
MSG_PET_EVOLUTION_FAIL_NOT_PETEGG = 0xa0d,
/*20140129 to 20140205
진화가 불가능한 요청입니다.
-20140212 to 20180621
+20140212 to 20180704
진화 재료가 부족합니다.
Evolution material is low.
*/
MSG_PET_EVOLUTION_FAIL_RECIPE = 0xa0e,
-/*20140129 to 20180621
+/*20140129 to 20180704
ì§„í™”ì— í•„ìš”í•œ 재료가 부족합니다.
Insufficient materials for evolution.
*/
MSG_PET_EVOLUTION_FAIL_MATERIAL = 0xa0f,
-/*20140129 to 20180621
+/*20140129 to 20180704
친밀ë„ê°€ ì ˆì¹œì¸ ìƒíƒœì—서만 진화가 가능합니다.
Loyal Intimacy is required to evolve.
*/
@@ -16174,111 +16174,111 @@ Loyal Intimacy is required to evolve.
#if PACKETVER >= 20140212
/*20140212 to 20170830
ìžë™ ë¨¹ì´ ì£¼ê¸°
-20170906 to 20180621
+20170906 to 20180704
펫 ìžë™ ë¨¹ì´ ì£¼ê¸°
Automatic feeding
*/
MSG_PET_AUTO_FEEDING = 0xa11,
-/*20140212 to 20180621
+/*20140212 to 20180704
펫ì—게 먹ì´ë¥¼ 주었습니다. '%s' 잔여량 %dê°œ
Feeding the pet. %d '%d' remaining
*/
MSG_PET_AUTO_FEEDING_REST = 0xa12,
/*20140212 to 20170830
ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 On
-20170906 to 20180621
+20170906 to 20180704
펫 ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 On
Automatic feeding turned On
*/
MSG_PET_AUTO_FEEDING_ON = 0xa13,
/*20140212 to 20170830
ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 Off
-20170906 to 20180621
+20170906 to 20180704
펫 ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 Off
Automatic feeding turned Off
*/
MSG_PET_AUTO_FEEDING_OFF = 0xa14,
-/*20140212 to 20180621
+/*20140212 to 20180704
갱신
Update
*/
MSG_REFRESH = 0xa15,
/*20140212 to 20140702
%d 분전
-20140709 to 20180621
+20140709 to 20180704
%d 분 전
%d minutes ago
*/
MSG_TIME_LINE_MINUTE = 0xa16,
/*20140212 to 20140702
%d 시간전
-20140709 to 20180621
+20140709 to 20180704
%d 시간 전
%d hours ago
*/
MSG_TIME_LINE_HOUR = 0xa17,
/*20140212 to 20140702
%d ì¼ì „
-20140709 to 20180621
+20140709 to 20180704
%d ì¼ ì „
%d days ago
*/
MSG_TIME_LINE_DAY = 0xa18,
#endif
#if PACKETVER >= 20140319
-/*20140319 to 20180621
+/*20140319 to 20180704
%d%% ( Premium %d%% + %s Server )
%d%%% ( Premium %d%%% + %s Server )
*/
MSG_BASIC_EXP_MSG_PH = 0xa19,
#endif
#if PACKETVER >= 20140326
-/*20140326 to 20180621
+/*20140326 to 20180704
우편 발송
Mailed
*/
MSG_SEND_MAIL = 0xa1a,
-/*20140326 to 20180621
+/*20140326 to 20180704
ë©”ì¼ì´ 전송ë˜ì—ˆìŠµë‹ˆë‹¤.
Your mail has been sent.
*/
MSG_MAIL_SENT = 0xa1b,
-/*20140326 to 20180621
+/*20140326 to 20180704
ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ë¡œ ì´ë™ë˜ì—ˆìŠµë‹ˆë‹¤.
This item has been moved to the inventory.
*/
MSG_GET_ITEMS_FROM_MAIL_SUCCEED = 0xa1c,
-/*20140326 to 20180621
+/*20140326 to 20180704
ì•„ì´í…œ 받기가 실패하였습니다.
Failed to get items.
*/
MSG_GET_ITEMS_FROM_MAIL_FAILED = 0xa1d,
-/*20140326 to 20180621
+/*20140326 to 20180704
ì¸ë²¤í† ë¦¬ë¥¼ 비워주세요
Please empty your inventory.
*/
MSG_GET_ITEMS_FROM_MAIL_OVERWEIGHT = 0xa1e,
-/*20140326 to 20180621
+/*20140326 to 20180704
제니를 받았습니다.
Zeny received.
*/
MSG_GET_ZENY_FROM_MAIL_SUCCEED = 0xa1f,
-/*20140326 to 20180621
+/*20140326 to 20180704
제니 받기가 실패하였습니다.
Failed to get zeny.
*/
MSG_GET_ZENY_FROM_MAIL_FAILED = 0xa20,
-/*20140326 to 20180621
+/*20140326 to 20180704
ì œë‹ˆì˜ í•œê³„ì¹˜ë¥¼ 넘었습니다.
Exceeded the limits of zenny.
*/
MSG_GET_ZENY_FROM_MAIL_OVERAMOUNT = 0xa21,
-/*20140326 to 20180621
+/*20140326 to 20180704
ì•„ì´í…œ 첨부 성공
Items attached success
*/
MSG_SET_ITEMS_TO_MAIL_SUCCEED = 0xa22,
-/*20140326 to 20180621
+/*20140326 to 20180704
받는 ì‚¬ëžŒì˜ ì´ë¦„ì´ ë°˜ë“œì‹œ 들어가야 합니다.
The name of the recipient must be included.
*/
@@ -16287,72 +16287,72 @@ The name of the recipient must be included.
ì œëª©ì˜ ê¸¸ì´ëŠ” 4ìžì´ìƒ ì´ì–´ì•¼ 합니다.
20140423 to 20141001
ì œëª©ì˜ ê¸¸ì´ëŠ” 4ìžì´ìƒ 16ìž ì´í•˜ì—¬ì•¼ 합니다.
-20141008 to 20180621
+20141008 to 20180704
ì œëª©ì˜ ê¸¸ì´ëŠ” 한글 2ìž~25ìž, ì˜ë¬¸ 4ìž~50ìž ì´ì–´ì•¼ 합니다.
The length of the title must be 4 to 50 characters long.
*/
MSG_INVALID_MAIL_TITLE_INFO = 0xa24,
-/*20140326 to 20180621
+/*20140326 to 20180704
ë©”ì¼ ì „ì†¡ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Mail delivery failed.
*/
MSG_FAILED_SEND_MAIL = 0xa25,
-/*20140326 to 20180621
+/*20140326 to 20180704
ì ì ˆí•˜ì§€ 못한 ì•„ì´í…œìœ¼ë¡œ 전송 실패하였습니다.
Transmission has failed to inappropriate items.
*/
MSG_FAILED_SEND_MAIL_ITEM = 0xa26,
-/*20140326 to 20180621
+/*20140326 to 20180704
받는 ì‚¬ëžŒì˜ ì •ë³´ê°€ 존재하지 않습니다.
Information of the recipient does not exist.
*/
MSG_FAIELD_SEND_MAIL_TO = 0xa27,
#endif
#if PACKETVER >= 20140402
-/*20140402 to 20180621
+/*20140402 to 20180704
%s [%d옵션]
%s [%d Option]
*/
MSG_EA6 = 0xa28,
-/*20140402 to 20180621
+/*20140402 to 20180704
ë ˆë²¨ì€ 1~%d 사ì´ì˜ 숫ìžë¥¼ 입력해 주세요.
Level, enter a number between 1 and %d.
*/
MSG_PARTY_BOOKING_ERR5R2 = 0xa29,
#endif
#if PACKETVER >= 20140409
-/*20140409 to 20180621
+/*20140409 to 20180704
ì†Œì§€ì°½ì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
Please free the window possessing space.
*/
MSG_ITEM_WND_OVERFULL = 0xa2a,
/*20140409 to 20140416
수신ìžì˜ ë©”ì¼ ë³´ê´€ ìš©ëŸ‰ì´ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤.
-20140423 to 20180621
+20140423 to 20180704
ë©”ì¼ ë³´ë‚´ê¸° 횟수가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
Sending mail count exceeded.
*/
MSG_FAILED_MAIL_LIMIT_CNT = 0xa2b,
#endif
#if PACKETVER >= 20140416
-/*20140416 to 20180621
+/*20140416 to 20180704
ë©”ì¼ì„ ì—´ 수 없습니다.
You can not open the mail.
*/
MSG_FAILED_TO_WRITE_MAIL = 0xa2c,
-/*20140416 to 20180621
+/*20140416 to 20180704
You are currently joined in CLan !!
You are currently joined in Clan !!
*/
MSG_JOINED_IN_CLAN = 0xa2d,
-/*20140416 to 20180621
+/*20140416 to 20180704
골드 PCë°© 마ì¼ë¦¬ì§€ ì •ë³´
Gold PC rooms mileage information
*/
MSG_GOLDPCCAFE_MILEAGE = 0xa2e,
#endif
#if PACKETVER >= 20140423
-/*20140423 to 20180621
+/*20140423 to 20180704
펫 액세서리를 해제해야 진화가 가능합니다.
Unequip pet accessories first to start evolution
*/
@@ -16361,7 +16361,7 @@ Unequip pet accessories first to start evolution
/ %d 분후
20140508 to 20140702
%d 분후
-20140709 to 20180621
+20140709 to 20180704
%d 분 후
%d minutes later
*/
@@ -16370,7 +16370,7 @@ Unequip pet accessories first to start evolution
/ %d 시간후
20140508 to 20140702
%d 시간후
-20140709 to 20180621
+20140709 to 20180704
%d 시간 후
%d hours later
*/
@@ -16379,49 +16379,49 @@ Unequip pet accessories first to start evolution
/ %d ì¼í›„
20140508 to 20140702
%d ì¼í›„
-20140709 to 20180621
+20140709 to 20180704
%d ì¼ í›„
%d days later
*/
MSG_TIME_LINE_DAY2 = 0xa32,
-/*20140423 to 20180621
+/*20140423 to 20180704
í™•ì¸ ë²„íŠ¼ì„ ëˆŒëŸ¬ C-CODE를 확ì¸í•˜ì„¸ìš”.
Press the OK button to confirm the C-CODE.
*/
MSG_INVALID_CCODE_INFO = 0xa33,
-/*20140423 to 20180621
+/*20140423 to 20180704
ì²¨ë¶€ëœ ë¬¼í’ˆì„ íšë“ 후 삭제가 가능합니다.
After obtaining the attached article can be deleted.
*/
MSG_FAILED_DELETE_MAIL = 0xa34,
-/*20140423 to 20180621
+/*20140423 to 20180704
현재 보유 제니 보다 ë§Žì€ ì œë‹ˆë¥¼ 보낼 수 없습니다.
You can not send any more zeny.
*/
MSG_FAILED_SEND_MAIL_ZENY = 0xa35,
-/*20140423 to 20180621
+/*20140423 to 20180704
수수료 : %s Zeny
Fee: %s Zeny
*/
MSG_SEND_MAIL_COMMISSION = 0xa36,
-/*20140423 to 20180621
+/*20140423 to 20180704
받는 ì‚¬ëžŒì˜ ì´ë¦„ì´ ì¡´ìž¬í•˜ì§€ 않습니다.
The recipient's name does not exist.
*/
MSG_FAILE_MAIL_RECIEVER_INFO = 0xa37,
#endif
#if PACKETVER >= 20140430
-/*20140430 to 20180621
+/*20140430 to 20180704
E X P : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
EXP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
*/
MSG_TAIWAN_PERSONALINFO_EXPMSG = 0xa38,
-/*20140430 to 20180621
+/*20140430 to 20180704
DROP : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
DROP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
*/
MSG_TAIWAN_PERSONALINFO_DROPMSG = 0xa39,
-/*20140430 to 20180621
+/*20140430 to 20180704
DEATH : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
DEATH: %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
*/
@@ -16430,7 +16430,7 @@ DEATH: %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
#if PACKETVER >= 20140514
/*20140514 to 20140528
보유 가능한 최대 마ì¼ë¦¬ì§€ : %d
-20140605 to 20180621
+20140605 to 20180704
골드 PCë°© 마ì¼ë¦¬ì§€ëŠ” 최대 %dì ê¹Œì§€ ëª¨ì„ ìˆ˜ 있습니다.
You can accumulate points of PC Gold-club up to %d points maximum.
*/
@@ -16440,39 +16440,39 @@ You can accumulate points of PC Gold-club up to %d points maximum.
/*20140521 to 20140521
ì•„ì´í…œ 버리기가 불 가능한 서버 입니다.
Items discard is imposible in server.
-20140528 to 20180621
+20140528 to 20180704
해당 서버ì—ì„œ 사용 í•  수 없는 기능 입니다
This function can not be used on the server.
*/
MSG_RESTRAINT_OF_TRADE_1 = 0xa3c,
-/*20140521 to 20180621
+/*20140521 to 20180704
수래 ì´ìš©ì´ 불 가능한 서버 입니다.
Imposible to use in server.
*/
MSG_RESTRAINT_OF_TRADE_2 = 0xa3d,
-/*20140521 to 20180621
+/*20140521 to 20180704
옥션 ì´ìš©ì´ 불 가능한 서버 입니다.
The auction is not available in server.
*/
MSG_RESTRAINT_OF_TRADE_3 = 0xa3e,
-/*20140521 to 20180621
+/*20140521 to 20180704
거래가 불 가능한 서버 입니다.
The deal is imposible in server.
*/
MSG_RESTRAINT_OF_TRADE_4 = 0xa3f,
/*20140521 to 20140521
ì•„ì´í…œ 편지 보내기가 불 가능한 서버 입니다.
-20140528 to 20180621
+20140528 to 20180704
ì•„ì´í…œ 버리기가 불 가능한 서버 입니다.
Items discard is imposible in server.
*/
MSG_RESTRAINT_OF_TRADE_5 = 0xa40,
-/*20140521 to 20180621
+/*20140521 to 20180704
ìƒì  íŒë§¤ ê¸°ëŠ¥ì„ ì‚¬ìš©í• ìˆ˜ 없습니다.
Stores selling features are not available.
*/
MSG_RESTRAINT_OF_TRADE_6 = 0xa41,
-/*20140521 to 20180621
+/*20140521 to 20180704
ì†Œí™˜ë¬¼ì˜ SPê°€ 부족합니다.
The SP's summoned enough.
*/
@@ -16481,28 +16481,28 @@ The SP's summoned enough.
#if PACKETVER >= 20140528
/*20140528 to 20140702
Weight : %s/%s
-20140709 to 20180621
+20140709 to 20180704
%s/%s
*/
MSG_SEND_MAIL_WEIGHT = 0xa43,
-/*20140528 to 20180621
+/*20140528 to 20180704
ë©”ì¼ ë‚´ìš©ì˜ ìµœëŒ€ 길ì´ëŠ” 1K ì´í•˜ 입니다.
The maximum length of the message content is 1K.
*/
MSG_INVALID_MAIL_CONTENTS_INFO = 0xa44,
-/*20140528 to 20180621
+/*20140528 to 20180704
ì•„ì´í…œ 첨부 실패
Failed to attach an item.
*/
MSG_SET_ITEMS_TO_MAIL_FAILED = 0xa45,
-/*20140528 to 20180621
+/*20140528 to 20180704
ë©”ì¼ì— 첨부할수 있는 ì•„ì´í…œì˜ 무게가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
The weight of the items that can be attached to mail has been exceeded.
*/
MSG_SET_ITEMS_TO_MAIL_OVER_WEIGHT = 0xa46,
#endif
#if PACKETVER >= 20140611
-/*20140611 to 20180621
+/*20140611 to 20180704
ì´ë¯¸ 서비스 중입니다. ìž ì‹œ 후 다시 ì‹œë„í•´ 주세요.
Is already in service. Please try again in a few minutes.
*/
@@ -16511,55 +16511,55 @@ Is already in service. Please try again in a few minutes.
#if PACKETVER >= 20140618
/*20140618 to 20140924
환ìƒì˜ ë£°ë ›ì°½ì„ ì—´ 수 없습니다.
-20141001 to 20180621
+20141001 to 20180704
í–‰ìš´ì˜ ë£°ë ›ì°½ì„ ì—´ 수 없습니다.
Unable to open the window of Lucky Roulette.
*/
MSG_FAILED_OPEN_ROULLETTE = 0xa48,
/*20140618 to 20140924
환ìƒì˜ ë£°ë ›ì°½ì„ ë‹«ì„ ìˆ˜ 없습니다.
-20141001 to 20180621
+20141001 to 20180704
í–‰ìš´ì˜ ë£°ë ›ì°½ì„ ë‹«ì„ ìˆ˜ 없습니다.
Unable to close the window of the Lucky Roulette.
*/
MSG_FAILED_CLOSE_ROULLETTE = 0xa49,
/*20140618 to 20140924
환ìƒì˜ ë£°ë ›ì„ ì‹œìž‘ í•  수 없습니다.
-20141001 to 20180621
+20141001 to 20180704
í–‰ìš´ì˜ ë£°ë ›ì„ ì‹œìž‘ í•  수 없습니다.
You can not start a roulette wheel of fortune.
*/
MSG_FAILED_GENERATE_ROULLETTE = 0xa4a,
/*20140618 to 20140924
환ìƒì˜ ë£°ë ›ì„ ì‹œìž‘í•˜ê¸° 위해서는 í¬ì¸íŠ¸ê°€ 필요합니다.
-20141001 to 20180621
+20141001 to 20180704
í–‰ìš´ì˜ ë£°ë ›ì„ ì‹œìž‘í•˜ê¸° 위해서는 í¬ì¸íŠ¸ê°€ 필요합니다.
Points is required to play Lucky Roulette.
*/
MSG_NOT_ENOUGH_ROULLETTE_POINT = 0xa4b,
-/*20140618 to 20180621
+/*20140618 to 20180704
ë‹¹ì²¨ëœ ì•„ì´í…œì„ 수령할 수 없습니다.
You can not receive a winning items.
*/
MSG_FAILED_RECV_ITEM = 0xa4c,
#endif
#if PACKETVER >= 20140625
-/*20140625 to 20180621
+/*20140625 to 20180704
ì¸ë²¤í† ë¦¬ì— ì•„ì´í…œ 개수가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
The number of items in the inventory has been exceeded.
*/
MSG_FAILED_RECV_ITEM_OVERCOUNT = 0xa4d,
-/*20140625 to 20180621
+/*20140625 to 20180704
무게가 초과하였습니다. ì†Œì§€ì°½ì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
The weight has been exceeded. Please free up the possesion window.
*/
MSG_FAILED_RECV_ITEM_OVERWEIGHT = 0xa4e,
-/*20140625 to 20180621
+/*20140625 to 20180704
ë…¸ì  ê°œì„¤ 실패.
Failed to open stalls.
*/
MSG_MERCHANTSHOP_MAKING_FAIL = 0xa4f,
-/*20140625 to 20180621
+/*20140625 to 20180704
ë£°ë ›ì´ ëŒê³  있습니다. ê²½í’ˆì„ í™•ì¸ í›„ì— ë‹¤ì‹œ ì‹œë„해주세요.
The roulette wheel is spinning. Please try again after checking with prizes.
*/
@@ -16568,55 +16568,55 @@ The roulette wheel is spinning. Please try again after checking with prizes.
#if PACKETVER >= 20140702
/*20140702 to 20140917
환ìƒì˜ 룰렛
-20140924 to 20180621
+20140924 to 20180704
í–‰ìš´ì˜ ë£°ë ›
Lucky Roulette
*/
MSG_ROULLETTE_WND = 0xa51,
-/*20140702 to 20180621
+/*20140702 to 20180704
ì•„ì´í…œ íŒë§¤ ì‹œ 소리로 알림
Notify when item sell out
*/
MSG_SOUNDEFFECT_ITEMSELLWND = 0xa52,
#endif
#if PACKETVER >= 20140709
-/*20140709 to 20180621
+/*20140709 to 20180704
수수료를 확ì¸í•´ì£¼ì„¸ìš”.
Please check the fees.
*/
MSG_FAILED_SEND_MAIL_ITEMS = 0xa53,
/*20140709 to 20140716
유저ì´ë¦„확ì¸
-20140723 to 20180621
+20140723 to 20180704
유저ì´ë¦„ 확ì¸
Verify user name
*/
MSG_CHECK_USER_NAME = 0xa54,
-/*20140709 to 20180621
+/*20140709 to 20180704
삭제 예정
Schedule deletion
*/
MSG_DELETE_DUE_DATE = 0xa55,
#endif
#if PACKETVER >= 20140723
-/*20140723 to 20180621
+/*20140723 to 20180704
달성과제
Achievable challenge
*/
MSG_ACHIEVEMENT_SYSTEM = 0xa56,
-/*20140723 to 20180621
+/*20140723 to 20180704
달성ì´ì 
Achieve overall
*/
MSG_ACHIEVEMENT_TOTAL_SCORE = 0xa57,
-/*20140723 to 20180621
+/*20140723 to 20180704
달성등급
Achieve rank
*/
MSG_ACHIEVEMENT_GRADE = 0xa58,
/*20140723 to 20150217
ë‹¤ìŒ ë³´ìƒë°•ìŠ¤ê¹Œì§€ [%5d]ì 
-20150225 to 20180621
+20150225 to 20180704
ë‹¤ìŒ ë‹¬ì„±ë“±ê¸‰ê¹Œì§€ [%5d]ì 
The following compensation box until [% 5d] point
*/
@@ -16624,7 +16624,7 @@ The following compensation box until [% 5d] point
/*20140723 to 20140723
개요
Overview
-20140730 to 20180621
+20140730 to 20180704
진척ìƒí™©
Progress
*/
@@ -16632,7 +16632,7 @@ Progress
/*20140723 to 20140723
ì¼ë°˜
General
-20140730 to 20180621
+20140730 to 20180704
최근 달성 ì—…ì 
Recent Achievements
*/
@@ -16642,7 +16642,7 @@ Recent Achievements
Role
20140730 to 20140924
개다래 열매 품목
-20141001 to 20180621
+20141001 to 20180704
ä»™è² í’ˆëª©
Cracker Item
*/
@@ -16652,7 +16652,7 @@ Cracker Item
Action
20140730 to 20140924
개다래 열매 : %d / %d GD
-20141001 to 20180621
+20141001 to 20180704
ä»™è² : %d / %d
Cracker : %d / %d
*/
@@ -16662,7 +16662,7 @@ Cracker : %d / %d
Battle
20140730 to 20140924
개다래 열매가 부족합니다.
-20141001 to 20180621
+20141001 to 20180704
ä»™è²ê°€ 부족합니다.
Cracker is low.
*/
@@ -16672,7 +16672,7 @@ Cracker is low.
Adventure
20140730 to 20140924
%s GD
-20141001 to 20180621
+20141001 to 20180704
%s
%s
*/
@@ -16680,7 +16680,7 @@ Adventure
/*20140723 to 20140723
결투
Duel
-20140813 to 20180621
+20140813 to 20180704
개요
Overview
*/
@@ -16688,7 +16688,7 @@ Overview
/*20140723 to 20140723
수련
Lily
-20140813 to 20180621
+20140813 to 20180704
ì¼ë°˜
General
*/
@@ -16696,7 +16696,7 @@ General
/*20140723 to 20140723
퀘스트
Quest
-20140813 to 20180621
+20140813 to 20180704
ìºë¦­í„°
Role
*/
@@ -16704,7 +16704,7 @@ Role
/*20140723 to 20140723
ì—피소드
Episode
-20140813 to 20180621
+20140813 to 20180704
í–‰ë™
Action
*/
@@ -16712,21 +16712,21 @@ Action
/*20140723 to 20140723
ì´ë²¤íŠ¸
Evt
-20140813 to 20180621
+20140813 to 20180704
기타
Other
*/
MSG_ACHIEVEMENT_TAB_GENERAL_REST = 0xa64,
/*20140723 to 20140723
활ë™
-20140813 to 20180621
+20140813 to 20180704
모험
Adventure
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE = 0xa65,
/*20140723 to 20140723
커뮤니티
-20140813 to 20180621
+20140813 to 20180704
룬미드가츠
Rune Midgarts
*/
@@ -16734,28 +16734,28 @@ Rune Midgarts
/*20140723 to 20140723
제련
Refining
-20140813 to 20180621
+20140813 to 20180704
슈발츠발드
Schwartzvald
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_SCHWARZWALD = 0xa67,
/*20140723 to 20140723
경제
-20140813 to 20180621
+20140813 to 20180704
아루나펠츠
Arunafeltz
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_ARUNAFELTZ = 0xa68,
/*20140723 to 20140723
ìƒí™œ
-20140813 to 20180621
+20140813 to 20180704
ì´ê³„
Commandment
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_ANOTHERWORLD = 0xa69,
/*20140723 to 20140723
축제
-20140813 to 20180621
+20140813 to 20180704
로컬ë¼ì´ì§•
Localizing
*/
@@ -16763,7 +16763,7 @@ Localizing
/*20140723 to 20140723
위업
Feat
-20140813 to 20180621
+20140813 to 20180704
ë˜ì „
Dungeon
*/
@@ -16771,7 +16771,7 @@ Dungeon
/*20140723 to 20140723
달성한 과제
Achieved challenge
-20140813 to 20180621
+20140813 to 20180704
전투
Battle
*/
@@ -16779,7 +16779,7 @@ Battle
/*20140723 to 20140723
진척ìƒí™©
Progress
-20140813 to 20180621
+20140813 to 20180704
결투
Duel
*/
@@ -16787,369 +16787,369 @@ Duel
/*20140723 to 20140723
최근 달성 ì—…ì 
Recent Achievements
-20140813 to 20180621
+20140813 to 20180704
수련
Lily
*/
MSG_ACHIEVEMENT_TAB_BATTLE_TRAINING = 0xa6e,
#endif
#if PACKETVER >= 20140813
-/*20140813 to 20180621
+/*20140813 to 20180704
퀘스트
Quest
*/
MSG_ACHIEVEMENT_TAB_QUEST = 0xa6f,
-/*20140813 to 20180621
+/*20140813 to 20180704
ì—피소드
Episode
*/
MSG_ACHIEVEMENT_TAB_QUEST_EPISODE = 0xa70,
-/*20140813 to 20180621
+/*20140813 to 20180704
ì¼ë°˜
General
*/
MSG_ACHIEVEMENT_TAB_QUEST_GENERAL = 0xa71,
-/*20140813 to 20180621
+/*20140813 to 20180704
메모리얼
Memorial
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL = 0xa72,
-/*20140813 to 20180621
+/*20140813 to 20180704
미드가르드
Midgard
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL_MIDGARD = 0xa73,
-/*20140813 to 20180621
+/*20140813 to 20180704
ì´ê³„
Commandment
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL_ANOTHERWORLD = 0xa74,
-/*20140813 to 20180621
+/*20140813 to 20180704
기타
Other
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL_REST = 0xa75,
-/*20140813 to 20180621
+/*20140813 to 20180704
위업
Feat
*/
MSG_ACHIEVEMENT_TAB_ACHIEVEMENT = 0xa76,
-/*20140813 to 20180621
+/*20140813 to 20180704
달성한 과제
Achieved challenge
*/
MSG_ACHIEVEMENT_TAB_TOTAL = 0xa77,
-/*20140813 to 20180621
+/*20140813 to 20180704
ë” ì´ìƒ 추가할 수 없습니다.
You cannot add anymore.
*/
MSG_FAIL_ADD_ACHIEVEMENT_TRACING = 0xa78,
-/*20140813 to 20180621
+/*20140813 to 20180704
< %s > 달성하였습니다.
< %S > achieved.
*/
MSG_NOTICE_COMPLETE_ACHIEVEMENT = 0xa79,
#endif
#if PACKETVER >= 20140827
-/*20140827 to 20180621
+/*20140827 to 20180704
only otp user login allow
Only OTP users are allowed
*/
MSG_OTPUSER_ONLY = 0xa7a,
#endif
#if PACKETVER >= 20140917
-/*20140917 to 20180621
+/*20140917 to 20180704
ì´ ë²„íŠ¼ì„ ëˆ„ë¥¼ ì‹œ, ì§€ì •ëœ ìƒí’ˆì„ 받게ë˜ë©° ë£°ë ›ì€ ì´ˆê¸°í™” ë©ë‹ˆë‹¤.
When this button pressed, you will receive a specified initialized roulette item.
*/
MSG_GET_ROULLETE_PRIZE = 0xa7b,
-/*20140917 to 20180621
+/*20140917 to 20180704
ì´ ë²„íŠ¼ì„ ëˆ„ë¥¼ ì‹œ, 깜빡ì´ëŠ” í™”ì‚´í‘œì˜ ë¼ì¸ë¶€í„° ë£°ë ›ì„ ì‹œìž‘ 합니다.
When this button pressed, the flashing arrows from the lines of the roulette wheel begins.
*/
MSG_NOTICE_NEXT_ROULLETE_STAGE = 0xa7c,
-/*20140917 to 20180621
+/*20140917 to 20180704
칭호
Style
*/
MSG_TITLE_EQUIPMENT = 0xa7d,
-/*20140917 to 20180621
+/*20140917 to 20180704
칭호 해제
Title release
*/
MSG_TAKEOFF_TITLE = 0xa7e,
-/*20140917 to 20180621
+/*20140917 to 20180704
길드 ìƒì„±ì„ í•  수 없는 지역입니다.
Can't create a Guild in this area.
*/
MSG_GUILD_MAKE_GUILD_NOT_PERMITTED_MAP = 0xa7f,
-/*20140917 to 20180621
+/*20140917 to 20180704
길드 해체를 할 수 없는 지역입니다.
Can't disband a Guild in this area.
*/
MSG_GUILD_DISORGANIZE_GUILD_NOT_PERMITTED_MAP = 0xa80,
-/*20140917 to 20180621
+/*20140917 to 20180704
길드 ê°€ìž…ì„ í•  수 없는 지역입니다.
Can't join a Guild in this area.
*/
MSG_GUILD_JOIN_GUILD_NOT_PERMITTED_MAP = 0xa81,
-/*20140917 to 20180621
+/*20140917 to 20180704
길드 탈퇴를 할 수 없는 지역입니다.
Can't leave a Guild in this area.
*/
MSG_GUILD_LEAVE_GUILD_NOT_PERMITTED_MAP = 0xa82,
-/*20140917 to 20180621
+/*20140917 to 20180704
ê¸¸ë“œì› ì¶”ë°©ì„ í•  수 없는 지역입니다.
Can't deport a Guild in this area.
*/
MSG_GUILD_EXPEL_GUILD_NOT_PERMITTED_MAP = 0xa83,
-/*20140917 to 20180621
+/*20140917 to 20180704
길드ì§ìœ„ ë³€ê²½ì„ í•  수 없는 지역입니다.
Can't change a Guild title in this area
*/
MSG_GUILD_POSITION_CHANGE_NOT_PERMITTED_MAP = 0xa84,
-/*20140917 to 20180621
+/*20140917 to 20180704
ì•„ì´í…œ ì†Œì§€ëŸ‰ì„ 5칸ì´ìƒ 비워주세요
Please empty at least 5 amount of possession in item window.
*/
MSG_NOT_ENOUGH_SPACE_IN_ITEM_BODY = 0xa85,
-/*20140917 to 20180621
+/*20140917 to 20180704
E X P : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
EXP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
*/
MSG_JPN_PERSONALINFO_EXPMSG = 0xa86,
-/*20140917 to 20180621
+/*20140917 to 20180704
DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
*/
MSG_JPN_PERSONALINFO_DROPMSG = 0xa87,
-/*20140917 to 20180621
+/*20140917 to 20180704
DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
*/
MSG_JPN_PERSONALINFO_DEATHMSG = 0xa88,
-/*20140917 to 20180621
+/*20140917 to 20180704
첨부할 수 있는 ì•„ì´í…œì˜ 갯수가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
The number of items that can be attached is exceeded.
*/
MSG_SET_ITEMS_TO_MAIL_OVERCOUNT = 0xa89,
-/*20140917 to 20180621
+/*20140917 to 20180704
ì•„ì´í…œ 구매 ì‹œ 소리로 알림
Notify when item purchased
*/
MSG_SOUNDEFFECT_ITEMBUYWND = 0xa8a,
#endif
#if PACKETVER >= 20140924
-/*20140924 to 20180621
+/*20140924 to 20180704
첨부할 수 없는 ì•„ì´í…œìž…니다.
Unable to attach the items.
*/
MSG_ID_A8B = 0xa8b,
#endif
#if PACKETVER >= 20141001
-/*20141001 to 20180621
+/*20141001 to 20180704
ê½ì— 당첨ë˜ì—ˆìœ¼ë¯€ë¡œ ë‹¤ìŒ ìƒìœ„ ë‹¨ê³„ì˜ ë£°ë ›ì„ ëŒë¦¬ì‹¤ 수 없습니다.
Because you can not win a slam room and turn the roulette of the next higher step.
*/
MSG_ID_A8C = 0xa8c,
-/*20141001 to 20180621
+/*20141001 to 20180704
답장쓰기
Replying
*/
MSG_ID_A8D = 0xa8d,
-/*20141001 to 20180621
+/*20141001 to 20180704
ë‚´ìš©ì½ê¸°
Read more
*/
MSG_ID_A8E = 0xa8e,
-/*20141001 to 20180621
+/*20141001 to 20180704
ë©”ì¼ì‚­ì œ
Delete message
*/
MSG_ID_A8F = 0xa8f,
-/*20141001 to 20180621
+/*20141001 to 20180704
ä»™è² : %d
Crackers : %d
*/
MSG_ID_A90 = 0xa90,
-/*20141001 to 20180621
+/*20141001 to 20180704
%s %s ä»™è²
%s %s crackers
*/
MSG_ID_A91 = 0xa91,
-/*20141001 to 20180621
+/*20141001 to 20180704
ä»™è²
Crackers
*/
MSG_ID_A92 = 0xa92,
-/*20141001 to 20180621
+/*20141001 to 20180704
Total : %d ä»™è²
Total : %d Crackers
*/
MSG_ID_A93 = 0xa93,
-/*20141001 to 20180621
+/*20141001 to 20180704
%d -> %s ä»™è²
%d -> %s Crackers
*/
MSG_ID_A94 = 0xa94,
-/*20141001 to 20180621
+/*20141001 to 20180704
%s ä»™è²
%s Crackers
*/
MSG_ID_A95 = 0xa95,
-/*20141001 to 20180621
+/*20141001 to 20180704
Current ä»™è² : %s
Current Crackers : %s
*/
MSG_ID_A96 = 0xa96,
-/*20141001 to 20180621
+/*20141001 to 20180704
%s : %s ä»™è²
%s : %s Crackers
*/
MSG_ID_A97 = 0xa97,
-/*20141001 to 20180621
+/*20141001 to 20180704
%10s ä»™è²
%10s Crackers
*/
MSG_ID_A98 = 0xa98,
-/*20141001 to 20180621
+/*20141001 to 20180704
Total : %s ä»™è²
Total : %s Crackers
*/
MSG_ID_A99 = 0xa99,
-/*20141001 to 20180621
+/*20141001 to 20180704
※수수료 3% / 최소 1ä»™è²ì˜ 수수료 ì°¨ê°
* Commission 3% / Minimum 1 Crackers comission deducted
*/
MSG_ID_A9A = 0xa9a,
-/*20141001 to 20180621
+/*20141001 to 20180704
ä»™è² ìž…ë‹ˆë‹¤.
The Crackers.
*/
MSG_ID_A9B = 0xa9b,
-/*20141001 to 20180621
+/*20141001 to 20180704
^0000ffä»™è² ì´ìƒ^000000입니다.
ìž…ë ¥ê¸ˆì•¡ì´ ë§žìŠµë‹ˆê¹Œ?
^0000ff more than crackers^000000Did you enter the correct amount?
*/
MSG_ID_A9C = 0xa9c,
-/*20141001 to 20180621
+/*20141001 to 20180704
10억仙è²ì´ìƒ 안전 확ì¸
Over than 10billions secure check
*/
MSG_ID_A9D = 0xa9d,
-/*20141001 to 20180621
+/*20141001 to 20180704
10ì–µ ä»™è² ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 10ì–µ ä»™è²ë¡œ íŒë§¤ë©ë‹ˆë‹¤.
If you fill over 1 billion, the price will be automatically set as 10 billion Xianbei.
*/
MSG_ID_A9E = 0xa9e,
-/*20141001 to 20180621
+/*20141001 to 20180704
9,999ä»™è² ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 9,999ä»™è²ë¡œ íŒë§¤ë©ë‹ˆë‹¤.
If you fill over 9,999 Xianbei, the price will automatically set as 9,999 Xianbei.
*/
MSG_ID_A9F = 0xa9f,
-/*20141001 to 20180621
+/*20141001 to 20180704
ê°€ê²©ì´ 0 ä»™è²ì¸ ì•„ì´í…œì´ 존재 합니다. ìƒì ì„ 열수 없습니다!
There are items priced 0 Xianbei. You cannot open vending.
*/
MSG_ID_AA0 = 0xaa0,
-/*20141001 to 20180621
+/*20141001 to 20180704
ìƒëŒ€ ìºë¦­í„°ê°€ 최대 보유 ä»™è²ëŸ‰ì„ 초과하여 거래가 불가능 합니다.
The opponent is over the Xianbei limit. Trade failed.
*/
MSG_ID_AA1 = 0xaa1,
-/*20141001 to 20180621
+/*20141001 to 20180704
%s ì•„ì´í…œì˜ ê°€ê²©ì„ 10ì–µä»™è² ì´í•˜ë¡œ 입력해 주세요.
Please fill out %s item price less than 1 billion Xianbei.
*/
MSG_ID_AA2 = 0xaa2,
-/*20141001 to 20180621
+/*20141001 to 20180704
%s : %s ä»™è² => %s EA
%s: %s Xianbei => %s ea
*/
MSG_ID_AA3 = 0xaa3,
-/*20141001 to 20180621
+/*20141001 to 20180704
제한 금액 : %s ä»™è²
Limited price: %s Xianbei
*/
MSG_ID_AA4 = 0xaa4,
-/*20141001 to 20180621
+/*20141001 to 20180704
%s %s ä»™è² %d ê°œ
%s %s %d Xianbei
*/
MSG_ID_AA5 = 0xaa5,
-/*20141001 to 20180621
+/*20141001 to 20180704
%s %d개를 %d ä»™è²ì— íŒë§¤ 하였습니다. 수수료는 3%% 입니다.
%d %s are sold. In total %d Xianbei. 3%% charge will be imposed.
*/
MSG_ID_AA6 = 0xaa6,
#endif
#if PACKETVER >= 20141008
-/*20141008 to 20180621
+/*20141008 to 20180704
RODEX
*/
MSG_ID_AA7 = 0xaa7,
-/*20141008 to 20180621
+/*20141008 to 20180704
SEND
*/
MSG_ID_AA8 = 0xaa8,
-/*20141008 to 20180621
+/*20141008 to 20180704
RECEIVE
*/
MSG_ID_AA9 = 0xaa9,
#endif
#if PACKETVER >= 20141015
-/*20141015 to 20180621
+/*20141015 to 20180704
ë©”ì¼ ìž‘ì„±ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Please close the mail compose window.
*/
MSG_ID_AAA = 0xaaa,
#endif
#if PACKETVER >= 20141022
-/*20141022 to 20180621
+/*20141022 to 20180704
서버접근거부(A)
Server access denied(A)
*/
MSG_ID_AAB = 0xaab,
-/*20141022 to 20180621
+/*20141022 to 20180704
서버접근거부(B)
Server access denied(B)
*/
MSG_ID_AAC = 0xaac,
#endif
#if PACKETVER >= 20141112
-/*20141112 to 20180621
+/*20141112 to 20180704
ìž¥ì°©ëœ í™”ì‚´/탄환 ì„ í•´ì œí•´ì•¼í•©ë‹ˆë‹¤.
Unequipped Arrow/Ammunition.
*/
MSG_ID_AAD = 0xaad,
-/*20141112 to 20180621
+/*20141112 to 20180704
ì¸ë²¤í† ë¦¬ì˜ ì•„ì´í…œì´ 소모ë˜ì–´ ë¡œë±ìŠ¤ ì“°ê¸°ì°½ì„ ë‹«ìŠµë‹ˆë‹¤.
Consuming item in inventory will close mail compose window.
*/
MSG_ID_AAE = 0xaae,
#endif
#if PACKETVER >= 20141119
-/*20141119 to 20180621
+/*20141119 to 20180704
소지하신 ë‹ë³´ê¸°ê°€ 없습니다.
Do not have Magnifier.
*/
MSG_ID_AAF = 0xaaf,
#endif
#if PACKETVER >= 20141210
-/*20141210 to 20180621
+/*20141210 to 20180704
ì•„ì´í…œì„ 버릴려면 ë©”ì¼ ì“°ê¸°ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Close email window if you want to discard item.
*/
MSG_ID_AB0 = 0xab0,
-/*20141210 to 20180621
+/*20141210 to 20180704
ìƒëŒ€ë°©ì´ 친구 요청중입니다
The opponent has already requested you to be a friend.
*/
MSG_ID_AB1 = 0xab1,
#endif
#if PACKETVER >= 20141217
-/*20141217 to 20180621
+/*20141217 to 20180704
SCRIPT ERROR AID
*/
MSG_ID_AB2 = 0xab2,
@@ -17158,7 +17158,7 @@ SCRIPT ERROR AID
Errorfile : %s
ErrorLine : %d 줄
ErrorContext: %s
-20150107 to 20180621
+20150107 to 20180704
Errorfile : %s
ErrorLine : %d 줄
@@ -17175,152 +17175,152 @@ ErrorContext: %s
MSG_ID_AB3 = 0xab3,
#endif
#if PACKETVER >= 20141224
-/*20141224 to 20180621
+/*20141224 to 20180704
^ff0000해당 ì•„ì´í…œì„ 구매 하시겠습니까? %dí¬ì¸íŠ¸ ë° %d ä»™è²ê°€ ì°¨ê° ë©ë‹ˆë‹¤.
^ff0000Are you sure want to purchase the item? after confirmation will consume %d point and %d crackers.
*/
MSG_ID_AB4 = 0xab4,
-/*20141224 to 20180621
+/*20141224 to 20180704
닫기
Close
*/
MSG_ID_AB5 = 0xab5,
-/*20141224 to 20180621
+/*20141224 to 20180704
퀘스트
Quest
*/
MSG_ID_AB6 = 0xab6,
-/*20141224 to 20180621
+/*20141224 to 20180704
퀘스트 ì•„ì´ì½˜ 보기
View Quest icon
*/
MSG_ID_AB7 = 0xab7,
-/*20141224 to 20180621
+/*20141224 to 20180704
편ì˜ì‹œì„¤
Facility
*/
MSG_ID_AB8 = 0xab8,
-/*20141224 to 20180621
+/*20141224 to 20180704
편ì˜ì‹œì„¤ ì•„ì´ì½˜ 보기
View Facility icon
*/
MSG_ID_AB9 = 0xab9,
-/*20141224 to 20180621
+/*20141224 to 20180704
길드ì›/파티ì›
Guild/Party
*/
MSG_ID_ABA = 0xaba,
/*20141224 to 20150311
길드ì›/íŒŒí‹°ì› í‘œì‹œ
-20150318 to 20180621
+20150318 to 20180704
길드ì›/íŒŒí‹°ì› ë³´ê¸°
Show Guild/Party
*/
MSG_ID_ABB = 0xabb,
-/*20141224 to 20180621
+/*20141224 to 20180704
기ë¡í•˜ê¸°
Record
*/
MSG_ID_ABC = 0xabc,
-/*20141224 to 20180621
+/*20141224 to 20180704
보스몬스터
Boss Monster
*/
MSG_ID_ABD = 0xabd,
-/*20141224 to 20180621
+/*20141224 to 20180704
나
I
*/
MSG_ID_ABE = 0xabe,
-/*20141224 to 20180621
+/*20141224 to 20180704
삭제 하시겠습니까?
Are you sure want to delete it?
*/
MSG_ID_ABF = 0xabf,
-/*20141224 to 20180621
+/*20141224 to 20180704
퀘스트 NPC
Quest NPC
*/
MSG_ID_AC0 = 0xac0,
-/*20141224 to 20180621
+/*20141224 to 20180704
메모할 ë‚´ìš©ì„ ê¸°ë¡í•©ë‹ˆë‹¤
Record content
*/
MSG_ID_AC1 = 0xac1,
-/*20141224 to 20180621
+/*20141224 to 20180704
저장하기
Store
*/
MSG_ID_AC2 = 0xac2,
-/*20141224 to 20180621
+/*20141224 to 20180704
메모하기
Record
*/
MSG_ID_AC3 = 0xac3,
#endif
#if PACKETVER >= 20141231
-/*20141231 to 20180621
+/*20141231 to 20180704
%s [%d옵션] %d개
%s [%d Property] %d ea
*/
MSG_ID_AC4 = 0xac4,
-/*20141231 to 20180621
+/*20141231 to 20180704
%s [%d옵션] %s Zeny
%s [%d Property] %s Zeny
*/
MSG_ID_AC5 = 0xac5,
-/*20141231 to 20180621
+/*20141231 to 20180704
%s [%d옵션] %d %s %d -> %s %s
%s [%d Property] %d %s %d -> %s %s
*/
MSG_ID_AC6 = 0xac6,
-/*20141231 to 20180621
+/*20141231 to 20180704
%s [%d옵션] %d %s %s %s
%s [%d Property] %d %s %s %s
*/
MSG_ID_AC7 = 0xac7,
-/*20141231 to 20180621
+/*20141231 to 20180704
%s [%d옵션] %d -> %s %s
%s [%d Property] %d -> %s %s
*/
MSG_ID_AC8 = 0xac8,
-/*20141231 to 20180621
+/*20141231 to 20180704
%s [%d옵션] %s %s
%s [%d Property] %s %s
*/
MSG_ID_AC9 = 0xac9,
#endif
#if PACKETVER >= 20150107
-/*20150107 to 20180621
+/*20150107 to 20180704
최소 거래 단위 100 ä»™è² ì´ìƒìœ¼ë¡œ 설정 하셔야 합니다.
The minimum trading unit must be 100 crackers or more.
*/
MSG_ID_ACA = 0xaca,
#endif
#if PACKETVER >= 20150114
-/*20150114 to 20180621
+/*20150114 to 20180704
머리 색
Hair color
*/
MSG_ID_ACB = 0xacb,
-/*20150114 to 20180621
+/*20150114 to 20180704
머리 모양
Hair style
*/
MSG_ID_ACC = 0xacc,
-/*20150114 to 20180621
+/*20150114 to 20180704
옷 색
Cloth color
*/
MSG_ID_ACD = 0xacd,
-/*20150114 to 20180621
+/*20150114 to 20180704
옷 모양
Cloth pattern
*/
MSG_ID_ACE = 0xace,
#endif
#if PACKETVER >= 20150217
-/*20150217 to 20180621
+/*20150217 to 20180704
지ì›ë˜ì§€ 않는 맵 입니다.
Unsupported Map.
*/
@@ -17329,251 +17329,251 @@ Unsupported Map.
#if PACKETVER >= 20150304
/*20150304 to 20150325
2147483647 Zeny ì´í•˜ë¡œ ìž…ë ¥ 하십시오.
-20150401 to 20180621
+20150401 to 20180704
2,147,483,647 Zeny ì´í•˜ë¡œ ìž…ë ¥ 하십시오.
Enter Zeny Below 2,147,483,647.
*/
MSG_ID_AD0 = 0xad0,
-/*20150304 to 20180621
+/*20150304 to 20180704
1 Zeny ì´ìƒ ìž…ë ¥ 하십시오.
Please Enter atleast 1 zeny.
*/
MSG_ID_AD1 = 0xad1,
-/*20150304 to 20180621
+/*20150304 to 20180704
보유한 Zeny 가 없습니다.
You do not hold any zeny.
*/
MSG_ID_AD2 = 0xad2,
-/*20150304 to 20180621
+/*20150304 to 20180704
제니 창고
Zeny Storage
*/
MSG_ID_AD3 = 0xad3,
-/*20150304 to 20180621
+/*20150304 to 20180704
창고보유액
in Bank
*/
MSG_ID_AD4 = 0xad4,
-/*20150304 to 20180621
+/*20150304 to 20180704
소지금
on hand
*/
MSG_ID_AD5 = 0xad5,
-/*20150304 to 20180621
+/*20150304 to 20180704
입금
Deposit
*/
MSG_ID_AD6 = 0xad6,
-/*20150304 to 20180621
+/*20150304 to 20180704
출금
Withdraw
*/
MSG_ID_AD7 = 0xad7,
-/*20150304 to 20180621
+/*20150304 to 20180704
1 z UP
1z UP
*/
MSG_ID_AD8 = 0xad8,
-/*20150304 to 20180621
+/*20150304 to 20180704
1 z Down
1z Down
*/
MSG_ID_AD9 = 0xad9,
-/*20150304 to 20180621
+/*20150304 to 20180704
Max
*/
MSG_ID_ADA = 0xada,
-/*20150304 to 20180621
+/*20150304 to 20180704
ìž…ë ¥ê°’ì´ ì—†ìŠµë‹ˆë‹¤
There is no Input value
*/
MSG_ID_ADB = 0xadb,
-/*20150304 to 20180621
+/*20150304 to 20180704
보유 Zeny 부족
Not enough zeny
*/
MSG_ID_ADC = 0xadc,
-/*20150304 to 20180621
+/*20150304 to 20180704
입력값 필요
Input Required
*/
MSG_ID_ADD = 0xadd,
-/*20150304 to 20180621
+/*20150304 to 20180704
ë¬¸ìž ìž…ë ¥ 불가
Numbers only
*/
MSG_ID_ADE = 0xade,
-/*20150304 to 20180621
+/*20150304 to 20180704
최대 입력 초과
Exceeded max input
*/
MSG_ID_ADF = 0xadf,
-/*20150304 to 20180621
+/*20150304 to 20180704
최소 입력 미만
Below Minimum Input
*/
MSG_ID_AE0 = 0xae0,
-/*20150304 to 20180621
+/*20150304 to 20180704
보유 Zeny 부족
Not enough zeny
*/
MSG_ID_AE1 = 0xae1,
-/*20150304 to 20180621
+/*20150304 to 20180704
ì€í–‰ 잔고 부족
Insufficient funds
*/
MSG_ID_AE2 = 0xae2,
-/*20150304 to 20180621
+/*20150304 to 20180704
최대 보유 Zeny 초과
Exceeded max zeny
*/
MSG_ID_AE3 = 0xae3,
#endif
#if PACKETVER >= 20150311
-/*20150311 to 20180621
+/*20150311 to 20180704
드롭 X
Drop X
*/
MSG_ID_AE4 = 0xae4,
-/*20150311 to 20180621
+/*20150311 to 20180704
창고 X
Storage X
*/
MSG_ID_AE5 = 0xae5,
-/*20150311 to 20180621
+/*20150311 to 20180704
카트 X
Cart X
*/
MSG_ID_AE6 = 0xae6,
-/*20150311 to 20180621
+/*20150311 to 20180704
ë©”ì¼ X
Mail X
*/
MSG_ID_AE7 = 0xae7,
-/*20150311 to 20180621
+/*20150311 to 20180704
êµí™˜ì°½ X
Trade X
*/
MSG_ID_AE8 = 0xae8,
-/*20150311 to 20180621
+/*20150311 to 20180704
경매장 X
Auction X
*/
MSG_ID_AE9 = 0xae9,
-/*20150311 to 20180621
+/*20150311 to 20180704
길드창고 X
Guild Storage X
*/
MSG_ID_AEA = 0xaea,
-/*20150311 to 20180621
+/*20150311 to 20180704
NPCì—게 íŒë§¤ X
Sell to NPC X
*/
MSG_ID_AEB = 0xaeb,
-/*20150311 to 20180621
+/*20150311 to 20180704
ì´ë™ì œí•œì´ 있는 ì•„ì´í…œìž…니다.
Item moves restriction.
*/
MSG_ID_AEC = 0xaec,
#endif
#if PACKETVER >= 20150401
-/*20150401 to 20180621
+/*20150401 to 20180704
ìºë¦­í„°ë¥¼ ìƒì„±í•´ì£¼ì„¸ìš”!
Please Create a Character!
*/
MSG_ID_AED = 0xaed,
#endif
#if PACKETVER >= 20150415
-/*20150415 to 20180621
+/*20150415 to 20180704
ìž¥ì°©ëœ íˆ¬ì‚¬ì²´ ì•„ì´í…œì„ 해제해야 합니다.
You need to disarm the equipped projectiles.
*/
MSG_ID_AEE = 0xaee,
#endif
#if PACKETVER >= 20150513
-/*20150513 to 20180621
+/*20150513 to 20180704
ì¸ì› 초과로 메모리얼 ë˜ì „ì— ìž…ìž¥ í•  수 없습니다
You cannot enter Memorial Dungeon with excess members
*/
MSG_ID_AEF = 0xaef,
-/*20150513 to 20180621
+/*20150513 to 20180704
ì¸ì›ìˆ˜ 초과로 ì¸í•´ 메모리얼 ë˜ì „ ìž…ìž¥ì´ ê±°ë¶€ë˜ì—ˆìŠµë‹ˆë‹¤
Memorial Dungeon Access was denied due to exceeding number of players
*/
MSG_ID_AF0 = 0xaf0,
#endif
#if PACKETVER >= 20150603
-/*20150603 to 20180621
+/*20150603 to 20180704
%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
*/
MSG_ID_AF1 = 0xaf1,
-/*20150603 to 20180621
+/*20150603 to 20180704
%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
*/
MSG_ID_AF2 = 0xaf2,
-/*20150603 to 20180621
+/*20150603 to 20180704
ì¤‘ë³µëœ ì•„ì´í…œì´ 존재하여 ì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥ 합니다.
Consuming Item denied due to multiple same item.
*/
MSG_ID_AF3 = 0xaf3,
-/*20150603 to 20180621
+/*20150603 to 20180704
ì¤‘ë³µëœ íš¨ê³¼ê°€ 존재하여 ì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥ 합니다.
Consuming Item denied due to effect of same consumed item.
*/
MSG_ID_AF4 = 0xaf4,
#endif
#if PACKETVER >= 20150701
-/*20150701 to 20180621
+/*20150701 to 20180704
화면 í”들림 효과 ON
Flicker Effect ON
*/
MSG_ID_AF5 = 0xaf5,
-/*20150701 to 20180621
+/*20150701 to 20180704
화면 í”들림 효과 OFF
Flicker Effect OFF
*/
MSG_ID_AF6 = 0xaf6,
#endif
#if PACKETVER >= 20150702
-/*20150702 to 20180621
+/*20150702 to 20180704
불법 프로그램 발견ë˜ì—ˆìŠµë‹ˆë‹¤
Illegal Programs has been detected
*/
MSG_ID_AF7 = 0xaf7,
#endif
#if PACKETVER >= 20150722
-/*20150722 to 20180621
+/*20150722 to 20180704
ë©”ì¼ ë³´ë‚´ê¸°
Send Mail
*/
MSG_ID_AF8 = 0xaf8,
#endif
#if PACKETVER >= 20150729
-/*20150729 to 20180621
+/*20150729 to 20180704
E X P : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
E X P: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
*/
MSG_ID_AF9 = 0xaf9,
-/*20150729 to 20180621
+/*20150729 to 20180704
DROP : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
DROP : %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
*/
MSG_ID_AFA = 0xafa,
-/*20150729 to 20180621
+/*20150729 to 20180704
DEATH : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
DEATH: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
*/
MSG_ID_AFB = 0xafb,
#endif
#if PACKETVER >= 20150826
-/*20150826 to 20180621
+/*20150826 to 20180704
해당 태그는 ì´ë¦„으로 사용하실 수 없습니다.
Name with this tag cannot be used.
*/
MSG_ID_AFC = 0xafc,
#endif
#if PACKETVER >= 20150916
-/*20150916 to 20180621
+/*20150916 to 20180704
???? bdbac5b8c0cfb8b52098de
Style Shop
*/
@@ -17582,14 +17582,14 @@ Style Shop
#if PACKETVER >= 20151028
/*20151028 to 20151125
ì¿ í° ì—†ìŒ, ìƒì ì—ì„œ 구매해야해요.
-20151202 to 20180621
+20151202 to 20180704
ì¿ í° ì—†ìŒ. Cash Shopì—ì„œ ì•„ì´í…œì„ 구매해 주세요.
No serial number, Please visit the store to buy.
*/
MSG_ID_AFE = 0xafe,
/*20151028 to 20151125
ì•„ì´í…œì°½ì˜ ì¿ í° ìƒìžë¥¼ 열어주세요
-20151202 to 20180621
+20151202 to 20180704
ì¸ë²¤í† ë¦¬ì—ì„œ ì•„ì´í…œ ì¿ í° ìƒìžë¥¼ 열어주세요.
Please turn on Serial item number window box.
*/
@@ -17597,21 +17597,21 @@ Please turn on Serial item number window box.
/*20151028 to 20151125
ì€í–‰
Bank
-20151202 to 20180621
+20151202 to 20180704
해당 ìŠ¤íƒ€ì¼ ì •ë³´ë¥¼ 삭제하시겠습니까?
Bank
*/
MSG_ID_B00 = 0xb00,
/*20151028 to 20151125
ìŠ¬ë¡¯ì´ ê½‰ 찼습니다. ìºë¦­í„°ë¥¼ ì‚­ì œ 후 사용해 주시기 ë°”ëžë‹ˆë‹¤
-20151202 to 20180621
+20151202 to 20180704
ìŠ¬ë¡¯ì´ ê½‰ 찼습니다. ë‚´ 스타ì¼ì—ì„œ ìºë¦­í„° ì‚­ì œ 후 사용해 주십시오.
Slot is full, please delete a character.
*/
MSG_ID_B01 = 0xb01,
/*20151028 to 20151125
사용하신 ì•„ì´í…œì€ ë˜ëŒë¦´ 수 없습니다. ì ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
-20151202 to 20180621
+20151202 to 20180704
ë¹„ìš©ì„ ì§€ë¶ˆí•˜ê³  현재 스타ì¼ì„ ì ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
(※ ë¹„ìš©ì€ ë°˜í™˜ë˜ì§€ 않습니다.)
Item cannot be restored, are you sure want to apply it?
@@ -17621,68 +17621,68 @@ Item cannot be restored, are you sure want to apply it?
#if PACKETVER >= 20151104
/*20151104 to 20151125
관심 스타ì¼ë¡œ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤
-20151202 to 20180621
+20151202 to 20180704
현재 스타ì¼ì„ 저장하였습니다.
Registered as the following style.
*/
MSG_ID_B03 = 0xb03,
/*20151104 to 20151125
ì€í–‰ì— 충분한 제니가 있습니다. 먼저 ì€í–‰ìœ¼ë¡œ 가세요.
-20151202 to 20180621
+20151202 to 20180704
보유 Zeny 부족. ì€í–‰ì— 충분한 Zenyê°€ 있습니다.
There are plenty of golds in the bank, Please go to the bank now.
*/
MSG_ID_B04 = 0xb04,
#endif
#if PACKETVER >= 20151118
-/*20151118 to 20180621
+/*20151118 to 20180704
으로 ì´ë™í•©ë‹ˆë‹¤.
moving...
*/
MSG_ID_B05 = 0xb05,
-/*20151118 to 20180621
+/*20151118 to 20180704
해당 êµ­ê°€ì˜ ì˜ê³µí†µê³¼ì— 대한 허가가 나지 않았습니다.
You are not allowed to fly over the sovereign airspace of the country.
*/
MSG_ID_B06 = 0xb06,
-/*20151118 to 20180621
+/*20151118 to 20180704
마나로 ëŒ€ê¸°ë¶ˆì•ˆì •ì´ ê³„ì†ë˜ì–´ 비공정 ìš´í–‰ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Airship flight is temporarily unavailable due to atmospheric instability caused by magic.
*/
MSG_ID_B07 = 0xb07,
-/*20151118 to 20180621
+/*20151118 to 20180704
ê°œì¸ ë¹„ê³µì •
Private airship
*/
MSG_ID_B08 = 0xb08,
-/*20151118 to 20180621
+/*20151118 to 20180704
ìž ì‹œ 후 다시 ì‹œë„해주세요.
Please try again in a moment.
*/
MSG_ID_B09 = 0xb09,
-/*20151118 to 20180621
+/*20151118 to 20180704
ê°œì¸ ë¹„ê³µì • ì´ìš©ì— 필요한 제니가 부족합니다.
Not enough Zeny to use the private airship.
*/
MSG_ID_B0A = 0xb0a,
/*20151118 to 20170920
ê°œì¸ ë¹„ê³µì • ì´ìš©ì— 필요한 í†µì¡°ë¦¼ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
-20170927 to 20180621
+20170927 to 20180704
ê°œì¸ ë¹„ê³µì • ì´ìš©ì— 필요한 ì•„ì´í…œì´ 부족합니다.
Not enough Cans to use the private airship.
*/
MSG_ID_B0B = 0xb0b,
-/*20151118 to 20180621
+/*20151118 to 20180704
ê°œì¸ ë¹„ê³µì •ì„ ì´ìš©í•  수 있는 ë ˆë²¨ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot meet the level to use the private airship.
*/
MSG_ID_B0C = 0xb0c,
-/*20151118 to 20180621
+/*20151118 to 20180704
ì„ íƒí•œ 지ì ìœ¼ë¡  ê°œì¸ë¹„ê³µì •ì´ ì´ë™í•  수 없습니다.
You cannot move to the selected point by the private airship.
*/
MSG_ID_B0D = 0xb0d,
-/*20151118 to 20180621
+/*20151118 to 20180704
현 지ì ì—ì„  ê°œì¸ë¹„ê³µì •ì„ ì´ìš©í•  수 없습니다.
You cannot use the private airship where you are now.
*/
@@ -17692,33 +17692,33 @@ You cannot use the private airship where you are now.
/*20151125 to 20151125
악세사리
Accessory
-20151202 to 20180621
+20151202 to 20180704
액세서리
Accessory
*/
MSG_ID_B0F = 0xb0f,
-/*20151125 to 20180621
+/*20151125 to 20180704
세컨드코스튬
Second costume
*/
MSG_ID_B10 = 0xb10,
/*20151125 to 20151125
ì¦ê²¨ì°¾ê¸°
-20151202 to 20180621
+20151202 to 20180704
ë‚´ 스타ì¼
Wardrobe
*/
MSG_ID_B11 = 0xb11,
/*20151125 to 20151125
ì—¼ìƒ‰ì„ í•  수 없는 머리스타ì¼ìž…니다.
-20151202 to 20180621
+20151202 to 20180704
염색할 수 없는 헤어스타ì¼ìž…니다.
This hairstyle cannot be dyed.
*/
MSG_ID_B12 = 0xb12,
/*20151125 to 20151125
화살표를 눌러 마ìŒì— 드는 스타ì¼ì„ ì„ íƒí•  수 있어요.
-20151202 to 20180621
+20151202 to 20180704
화살표를 눌러 마ìŒì— 드는 스타ì¼ì„ ì„ íƒí•´ 보세요.
Press an arrow to choose the style you want.
*/
@@ -17728,7 +17728,7 @@ Press an arrow to choose the style you want.
/*20151202 to 20151202
ìŠ¤íƒ€ì¼ ìƒˆë¡œìš´ 스타ì¼ì„ 확ì¸í•´ 보세요.
(※ 액세서리 구매 ì‹œ RODEXë¡œ 발송ë©ë‹ˆë‹¤.)
-20151209 to 20180621
+20151209 to 20180704
새로운 스타ì¼ì„ 확ì¸í•´ 보세요.
(※ 액세서리 구매 ì‹œ RODEXë¡œ 발송ë©ë‹ˆë‹¤.)
Come and see the new styles.
@@ -17737,50 +17737,50 @@ Come and see the new styles.
MSG_ID_B14 = 0xb14,
#endif
#if PACKETVER >= 20151223
-/*20151223 to 20180621
+/*20151223 to 20180704
기본 스타ì¼
Basic style
*/
MSG_ID_B15 = 0xb15,
#endif
#if PACKETVER >= 20160106
-/*20160106 to 20180621
+/*20160106 to 20180704
해당 ìŠ¤í‚¬ì€ BaseLv %d ì´ìƒë¶€í„° 스킬 í¬ì¸íŠ¸ 투ìžê°€ 가능합니다.
You can level up the skill from the base Lv. %d.
*/
MSG_ID_B16 = 0xb16,
#endif
#if PACKETVER >= 20160113
-/*20160113 to 20180621
+/*20160113 to 20180704
해당 특수기호는 ì´ë¦„ì— ì‚¬ìš©í•˜ì‹¤ 수 없습니다.
Special symbol can't be used in name
*/
MSG_ID_B17 = 0xb17,
-/*20160113 to 20180621
+/*20160113 to 20180704
MHPê°€ 너무 낮아, 해당 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다
MaxHP is to low to use this skill
*/
MSG_ID_B18 = 0xb18,
-/*20160113 to 20180621
+/*20160113 to 20180704
MSPê°€ 너무 낮아, 해당 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다
MaxSP is to low to use this skill
*/
MSG_ID_B19 = 0xb19,
#endif
#if PACKETVER >= 20160203
-/*20160203 to 20180621
+/*20160203 to 20180704
ì•„ì´í…œ 비êµí•˜ê¸°
Compare items
*/
MSG_ID_B1A = 0xb1a,
-/*20160203 to 20180621
+/*20160203 to 20180704
ì•„ì´í…œ 버리기 잠금
Drop lock
*/
MSG_ID_B1B = 0xb1b,
#endif
#if PACKETVER >= 20160224
-/*20160224 to 20180621
+/*20160224 to 20180704
스í¬ë¦°ìƒ· 파ì¼ì´ 첨부 ë˜ì§€ 않았습니다.
Screenshots are not attached
*/
@@ -17789,465 +17789,465 @@ Screenshots are not attached
SNS통신
20160518 to 20160817
TWITTER
-20160824 to 20180621
+20160824 to 20180704
Twitter
TWITTER
*/
MSG_ID_B1D = 0xb1d,
-/*20160224 to 20180621
+/*20160224 to 20180704
ì¼ë°˜
General
*/
MSG_ID_B1E = 0xb1e,
-/*20160224 to 20180621
+/*20160224 to 20180704
공지
Notice
*/
MSG_ID_B1F = 0xb1f,
-/*20160224 to 20180621
+/*20160224 to 20180704
반송
Clear
*/
MSG_ID_B20 = 0xb20,
-/*20160224 to 20180621
+/*20160224 to 20180704
새로고침
Refresh
*/
MSG_ID_B21 = 0xb21,
-/*20160224 to 20180621
+/*20160224 to 20180704
%d분
%d minute
*/
MSG_ID_B22 = 0xb22,
-/*20160224 to 20180621
+/*20160224 to 20180704
%d시간
%d hour
*/
MSG_ID_B23 = 0xb23,
-/*20160224 to 20180621
+/*20160224 to 20180704
%dì¼
%d day
*/
MSG_ID_B24 = 0xb24,
-/*20160224 to 20180621
+/*20160224 to 20180704
반송ë¨
Returned
*/
MSG_ID_B25 = 0xb25,
-/*20160224 to 20180621
+/*20160224 to 20180704
ì„ íƒí•œ ë©”ì¼ì„ 삭제하시겠습니까?
Do you want to delete the message?
*/
MSG_ID_B26 = 0xb26,
#endif
#if PACKETVER >= 20160302
-/*20160302 to 20180621
+/*20160302 to 20180704
위치표시
Show information
*/
MSG_ID_B27 = 0xb27,
-/*20160302 to 20180621
+/*20160302 to 20180704
확대
Zoom In
*/
MSG_ID_B28 = 0xb28,
-/*20160302 to 20180621
+/*20160302 to 20180704
축소
Zoom Out
*/
MSG_ID_B29 = 0xb29,
-/*20160302 to 20180621
+/*20160302 to 20180704
맵보기
Maximize
*/
MSG_ID_B2A = 0xb2a,
-/*20160302 to 20180621
+/*20160302 to 20180704
월드보기
Show world map
*/
MSG_ID_B2B = 0xb2b,
-/*20160302 to 20180621
+/*20160302 to 20180704
ì•„ì´í…œ 소지 종류수
Total possession item type
*/
MSG_ID_B2C = 0xb2c,
#endif
#if PACKETVER >= 20160309
-/*20160309 to 20180621
+/*20160309 to 20180704
/minimap
*/
MSG_ID_B2D = 0xb2d,
-/*20160309 to 20180621
+/*20160309 to 20180704
미니맵 ë²„íŠ¼ì„ í‘œì‹œí•©ë‹ˆë‹¤
Show minimap buttons
*/
MSG_ID_B2E = 0xb2e,
-/*20160309 to 20180621
+/*20160309 to 20180704
미니맵 ë²„íŠ¼ì„ í‘œì‹œí•˜ì§€ 않습니다
Hide minimap buttons
*/
MSG_ID_B2F = 0xb2f,
-/*20160309 to 20180621
+/*20160309 to 20180704
길드 ì ‘ì†ìž ì •ë ¬
Show guild member login status
*/
MSG_ID_B30 = 0xb30,
#endif
#if PACKETVER >= 20160323
-/*20160323 to 20180621
+/*20160323 to 20180704
ì¹œë°€ë„ : %s
Intimacy: %s
*/
MSG_ID_B31 = 0xb31,
-/*20160323 to 20180621
+/*20160323 to 20180704
í™•ì¸ ì „
Confirmation
*/
MSG_ID_B32 = 0xb32,
#endif
#if PACKETVER >= 20160330
-/*20160330 to 20180621
+/*20160330 to 20180704
파티 ì´ë¦„
Team name
*/
MSG_ID_B33 = 0xb33,
-/*20160330 to 20180621
+/*20160330 to 20180704
파티장
Leader
*/
MSG_ID_B34 = 0xb34,
-/*20160330 to 20180621
+/*20160330 to 20180704
제한 시간 초과. í´ë¼ì´ì–¸íŠ¸ë¥¼ 종료합니다.
Time limit exceeded. Closing the client
*/
MSG_ID_B35 = 0xb35,
-/*20160330 to 20180621
+/*20160330 to 20180704
ìž˜ëª»ëœ ìž…ë ¥ìž…ë‹ˆë‹¤. í´ë¼ì´ì–¸íŠ¸ë¥¼ 종료합니다.
Input error. Closing the client
*/
MSG_ID_B36 = 0xb36,
-/*20160330 to 20180621
+/*20160330 to 20180704
정답 입니다. ë³´ìƒìœ¼ë¡œ ì†Œì •ì˜ ë²„í”„ê°€ 주어집니다.
Incorrect input. A small buff has given to you
*/
MSG_ID_B37 = 0xb37,
-/*20160330 to 20180621
+/*20160330 to 20180704
ì˜ë¬¸ 4ìž, 한글 2ìž ì´ìƒìœ¼ë¡œ 입력해야 합니다.
Enter 4 english words and 2 chinese words
*/
MSG_ID_B38 = 0xb38,
-/*20160330 to 20180621
+/*20160330 to 20180704
입력한 ë‹µì´ [%s]ê°€ 맞습니까?
Your entered answer is [%s]. Is it right?
*/
MSG_ID_B39 = 0xb39,
-/*20160330 to 20180621
+/*20160330 to 20180704
ì„ íƒëœ ì´ë¯¸ì§€ê°€ 없습니다.
Icon is unchecked
*/
MSG_ID_B3A = 0xb3a,
-/*20160330 to 20180621
+/*20160330 to 20180704
ìž˜ëª»ëœ ìž…ë ¥ìž…ë‹ˆë‹¤. (ë‚¨ì€ ê¸°íšŒ %d번)
Incorrect input (Remaining chance: %d)
*/
MSG_ID_B3B = 0xb3b,
-/*20160330 to 20180621
+/*20160330 to 20180704
ì´ %dëª…ì˜ ìœ ì €ë¥¼ 신고하시겠습니까?
Do you want to announce %d to player?
*/
MSG_ID_B3C = 0xb3c,
-/*20160330 to 20180621
+/*20160330 to 20180704
유저ì—게 메시지를 보냈습니다.
Message has been sent to player
*/
MSG_ID_B3D = 0xb3d,
-/*20160330 to 20180621
+/*20160330 to 20180704
불법 프로그램 단ì†ì— 필요한 ë°ì´í„°ê°€ ë¯¸ë“±ë¡ ìƒíƒœìž…니다.
Needed Data for Query illegal software are not signed.
*/
MSG_ID_B3E = 0xb3e,
-/*20160330 to 20180621
+/*20160330 to 20180704
ì´ë¯¸ 매í¬ë¡œ ê°ì‹œì¤‘ì¸ ìœ ì €ìž…ë‹ˆë‹¤.
The player is being monitored.
*/
MSG_ID_B3F = 0xb3f,
-/*20160330 to 20180621
+/*20160330 to 20180704
매í¬ë¡œê°€ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤..
Already signed in investigation system.
*/
MSG_ID_B40 = 0xb40,
-/*20160330 to 20180621
+/*20160330 to 20180704
ì´ë¯¸ì§€ 등ë¡ì— 실패하였습니다.
Failed to store icon.
*/
MSG_ID_B41 = 0xb41,
-/*20160330 to 20180621
+/*20160330 to 20180704
정답 등ë¡ì— 실패하였습니다.
Failed to store replied answer.
*/
MSG_ID_B42 = 0xb42,
-/*20160330 to 20180621
+/*20160330 to 20180704
안녕하세요. 불법프로그램 단ì†ì¤‘입니다.
Hello, illegal software is being monitored.
*/
MSG_ID_B43 = 0xb43,
-/*20160330 to 20180621
+/*20160330 to 20180704
ì§€ì •ëœ ì‹œê°„ë‚´ì— ì•„ëž˜ì˜ ë¬¸ìžë¥¼ 입력해주세요.
Please enter the text below within the specified time.
*/
MSG_ID_B44 = 0xb44,
-/*20160330 to 20180621
+/*20160330 to 20180704
3회 오류시 ìš´ì˜ì •ì±…ì— ì˜ê±°í•˜ì—¬ ì˜êµ¬ë¸”ë¡ë©ë‹ˆë‹¤.
According to game regulation, when you enter the wrong text three times, you will get banned.
*/
MSG_ID_B45 = 0xb45,
-/*20160330 to 20180621
+/*20160330 to 20180704
ë‚¨ì€ íšŸìˆ˜ : %d
Remaining chance : %d
*/
MSG_ID_B46 = 0xb46,
-/*20160330 to 20180621
+/*20160330 to 20180704
ìºë¦­í„°
Role
*/
MSG_ID_B47 = 0xb47,
-/*20160330 to 20180621
+/*20160330 to 20180704
범위
Range
*/
MSG_ID_B48 = 0xb48,
-/*20160330 to 20180621
+/*20160330 to 20180704
ìºë¦­í„° ì„ íƒì€ 좌í´ë¦­ìœ¼ë¡œ 합니다.
You use the left mouse button to specify the role
*/
MSG_ID_B49 = 0xb49,
-/*20160330 to 20180621
+/*20160330 to 20180704
범위 ì„ íƒì€ ìš°í´ë¦­ìœ¼ë¡œ 합니다.
You use the left mouse button to specify the range
*/
MSG_ID_B4A = 0xb4a,
-/*20160330 to 20180621
+/*20160330 to 20180704
범위 í¬ê¸°ë¥¼ 지정하기 위해서는 엔터를 입력해주세요
Not a valid range, please press Enter
*/
MSG_ID_B4B = 0xb4b,
-/*20160330 to 20180621
+/*20160330 to 20180704
E X P : %.1f%% ( basic %.1f%% %s %.1f%%)
*/
MSG_ID_B4C = 0xb4c,
-/*20160330 to 20180621
+/*20160330 to 20180704
DROP : %.1f%% ( basic %.1f%% %s %.1f%%)
*/
MSG_ID_B4D = 0xb4d,
-/*20160330 to 20180621
+/*20160330 to 20180704
DEATH : %.1f%% ( basic %.1f%% %s %.1f%%)
*/
MSG_ID_B4E = 0xb4e,
/*20160330 to 20160330
ë³€ê²½ëœ ìºë¦­ëª… %s ë¡œ 전송했습니다. í™•ì¸ ë°”ëžë‹ˆë‹¤
-20160406 to 20180621
+20160406 to 20180704
ë³€ê²½ëœ ìºë¦­ëª…으로 발송했습니다. ë³€ê²½ëœ ìºë¦­ëª… : %s
The role name will be sent: %s
*/
MSG_ID_B4F = 0xb4f,
#endif
#if PACKETVER >= 20160427
-/*20160427 to 20180621
+/*20160427 to 20180704
í•©ì„±ì— í•„ìš”í•œ 재료
Synthesis of the required materials
*/
MSG_ID_B50 = 0xb50,
-/*20160427 to 20180621
+/*20160427 to 20180704
조합 재료가 부족해서 조합할 수 없습니다.
Insufficient synthesis materials
*/
MSG_ID_B51 = 0xb51,
#endif
#if PACKETVER >= 20160504
-/*20160504 to 20180621
+/*20160504 to 20180704
해당 재료는 %d개가 필요합니다.
Required material %d ea.
*/
MSG_ID_B52 = 0xb52,
-/*20160504 to 20180621
+/*20160504 to 20180704
제련ë„ê°€ 낮아서 ì¡°í•©í•  수 없습니다.
Refine value is to low for synthesis
*/
MSG_ID_B53 = 0xb53,
-/*20160504 to 20180621
+/*20160504 to 20180704
ëª¨í—˜ê°€ì¤‘ê°œì†Œì— ë“±ë¡ í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you want to sign in to the adventurers?
*/
MSG_ID_B54 = 0xb54,
#endif
#if PACKETVER >= 20160511
-/*20160511 to 20180621
+/*20160511 to 20180704
ìžìœ ë¡­ê²Œ 코멘트를 남겨보세요.
Please leave a message
*/
MSG_ID_B55 = 0xb55,
#endif
#if PACKETVER >= 20160518
-/*20160518 to 20180621
+/*20160518 to 20180704
ê·¸ë¦¼ì— ë³´ì´ëŠ” 문ìžë¥¼ 입력해주세요.
Please enter the text on the graph
*/
MSG_ID_B56 = 0xb56,
-/*20160518 to 20180621
+/*20160518 to 20180704
%d초 남았습니다
%d second left
*/
MSG_ID_B57 = 0xb57,
-/*20160518 to 20180621
+/*20160518 to 20180704
OTP ì¸ì¦ë²ˆí˜¸ 6ìžë¦¬ë¥¼ 입력해 주세요
Please enter your 6 identification number.
*/
MSG_ID_B58 = 0xb58,
-/*20160518 to 20180621
+/*20160518 to 20180704
ì¸ì¦ë²ˆí˜¸
Identification number.
*/
MSG_ID_B59 = 0xb59,
-/*20160518 to 20180621
+/*20160518 to 20180704
6ìžë¦¬ì˜ 숫ìžê°€ 아닙니다. 다시 확ì¸í•´ 주세요
It's not a 6 identification number. Please try again
*/
MSG_ID_B5A = 0xb5a,
#endif
#if PACKETVER >= 20160608
-/*20160608 to 20180621
+/*20160608 to 20180704
ì´ë¯¸ ì‚­ì œëœ ë©”ì¼ìž…니다.
The message has been deleted
*/
MSG_ID_B5B = 0xb5b,
#endif
#if PACKETVER >= 20160615
-/*20160615 to 20180621
+/*20160615 to 20180704
ê°œì¸ ë¹„ê³µì •ìœ¼ë¡œ ì´ë™í•  ì§€ì—­ì„ ì„ íƒí•´ì£¼ì„¸ìš”.
Please select the area where the private airship will move
*/
MSG_ID_B5C = 0xb5c,
-/*20160615 to 20180621
+/*20160615 to 20180704
E X P : %d%% ( basic 100.0%% %s %d%%)
*/
MSG_ID_B5D = 0xb5d,
-/*20160615 to 20180621
+/*20160615 to 20180704
DROP : %d%% ( basic 100.0%% %s %d%%)
*/
MSG_ID_B5E = 0xb5e,
-/*20160615 to 20180621
+/*20160615 to 20180704
DEATH : %d%% ( basic 100.0%% %s %d%%)
*/
MSG_ID_B5F = 0xb5f,
-/*20160615 to 20180621
+/*20160615 to 20180704
목ì ì§€ë¡œ ì´ë™ì¤‘입니다.
Move to the destination
*/
MSG_ID_B60 = 0xb60,
#endif
#if PACKETVER >= 20160629
-/*20160629 to 20180621
+/*20160629 to 20180704
[%s] 파ì¼ì´ 존재하지 ì•Šì•„ default AI ë¡œ ë™ìž‘합니다
The [%s] is not present, the default AI will be used instead.
*/
MSG_ID_B61 = 0xb61,
/*20160629 to 20160630
%.1f%% ( Premium %.1f%% + %s %.1f%%)
-20160706 to 20180621
+20160706 to 20180704
%.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
%.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
*/
MSG_ID_B62 = 0xb62,
#endif
#if PACKETVER >= 20160706
-/*20160706 to 20180621
+/*20160706 to 20180704
ì´ ìžë¦¬ì— ë…¸ì ì„ 세우시겠습니까?
Would you like to open a shop at this location?
*/
MSG_ID_B63 = 0xb63,
#endif
#if PACKETVER >= 20160713
-/*20160713 to 20180621
+/*20160713 to 20180704
ë„ëžŒì¡±ì€ í•´ë‹¹ ì˜ìƒì„ ìž…ì„ ìˆ˜ 없습니다.
Doram race can't wear this clothes
*/
MSG_ID_B64 = 0xb64,
/*20160713 to 20160727
구입한 ë¬¼ê±´ì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤.
-20160803 to 20180621
+20160803 to 20180704
íŒë§¤ ë…¸ì ì—ì„œ 거래한 ì•„ì´í…œì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤.
Props open-air store sales will be traded in RODEX
*/
MSG_ID_B65 = 0xb65,
-/*20160713 to 20180621
+/*20160713 to 20180704
30,000 z
*/
MSG_ID_B66 = 0xb66,
-/*20160713 to 20180621
+/*20160713 to 20180704
ë§ëž‘ë„ íŠ¹ì‚° 통조림 100ê°œ
Malangdo Special Can 100 pc
*/
MSG_ID_B67 = 0xb67,
#endif
#if PACKETVER >= 20160720
-/*20160720 to 20180621
+/*20160720 to 20180704
무게가 80%를 초과하여 진행할 수 없습니다.
Cannot carry anymore because weight limit over 80%
*/
MSG_ID_B68 = 0xb68,
-/*20160720 to 20180621
+/*20160720 to 20180704
íŒë§¤ë˜ì§€ 못한 ìƒí’ˆì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤.
Unsold items are sent to RODEX
*/
MSG_ID_B69 = 0xb69,
#endif
#if PACKETVER >= 20160727
-/*20160727 to 20180621
+/*20160727 to 20180704
장착 모습
Preview
*/
MSG_ID_B6A = 0xb6a,
-/*20160727 to 20180621
+/*20160727 to 20180704
길드마스터 위임
Assign Guild Leader
*/
MSG_ID_B6B = 0xb6b,
-/*20160727 to 20180621
+/*20160727 to 20180704
ì •ë§ë¡œ %s님께 길드마스터를 위임하시겠습니까? 위임 후 ë‹¹ì‹ ì˜ ì§€ìœ„ëŠ” %s님과 지위가 바뀌게 ë©ë‹ˆë‹¤.
Are sure want to assign %s as guild leader? After assigned your position will become %s
*/
MSG_ID_B6C = 0xb6c,
-/*20160727 to 20180621
+/*20160727 to 20180704
철회
Cancel
*/
MSG_ID_B6D = 0xb6d,
-/*20160727 to 20180621
+/*20160727 to 20180704
ë…¸ì ì„ 철수하시겠습니까?
Do you want to close the shop?
*/
MSG_ID_B6E = 0xb6e,
-/*20160727 to 20180621
+/*20160727 to 20180704
%02dì¼ %02d시간 %02d분 %02dì´ˆ
%02d day %02d hour %02d minute %02d second
*/
MSG_ID_B6F = 0xb6f,
-/*20160727 to 20180621
+/*20160727 to 20180704
ì ‘ì†ë¶ˆê°€
Unable to sign in
*/
MSG_ID_B70 = 0xb70,
-/*20160727 to 20180621
+/*20160727 to 20180704
ì ‘ì†ê°€ëŠ¥ì¸ì›ì„ 초과하여 ì ‘ì†ì´ 불가능 합니다.
Unable to sign in because the maximum number of sign-in is exceeded
*/
MSG_ID_B71 = 0xb71,
-/*20160727 to 20180621
+/*20160727 to 20180704
ë…¸ì ì„ 설치할 위치를 ì„ íƒí•´ì£¼ì„¸ìš”.
Please select a location for your shop
*/
MSG_ID_B72 = 0xb72,
-/*20160727 to 20180621
+/*20160727 to 20180704
펫 ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Pet name will be changed to ^0000ff^0000ff %s^000000^000000, do you want to continue?
*/
@@ -18256,154 +18256,154 @@ Pet name will be changed to ^0000ff^0000ff %s^000000^000000, do you want to cont
#if PACKETVER >= 20160803
/*20160803 to 20160803
íŒë§¤ ì¼ì‹œ :
-20160810 to 20180621
+20160810 to 20180704
거래 ì¼ì‹œ :
Trade date :
*/
MSG_ID_B74 = 0xb74,
/*20160803 to 20160803
íŒë§¤ ì•„ì´í…œ :
-20160810 to 20180621
+20160810 to 20180704
거래 ì•„ì´í…œ :
Trade item :
*/
MSG_ID_B75 = 0xb75,
/*20160803 to 20160803
íŒë§¤ 수량 :
-20160810 to 20180621
+20160810 to 20180704
거래 수량 :
Trade quantity :
*/
MSG_ID_B76 = 0xb76,
/*20160803 to 20160803
íŒë§¤ 단가 :
-20160810 to 20180621
+20160810 to 20180704
거래 단가 :
Trade price :
*/
MSG_ID_B77 = 0xb77,
/*20160803 to 20160803
íŒë§¤ 금액 :
-20160810 to 20180621
+20160810 to 20180704
거래 금액 :
Total trade :
*/
MSG_ID_B78 = 0xb78,
-/*20160803 to 20180621
+/*20160803 to 20180704
ë…¸ì  íŒë§¤ ì•„ì´í…œ
Open vending sales agent
*/
MSG_ID_B79 = 0xb79,
-/*20160803 to 20180621
+/*20160803 to 20180704
ë…¸ì  êµ¬ë§¤ ì•„ì´í…œ
Open vending purchase agent
*/
MSG_ID_B7A = 0xb7a,
-/*20160803 to 20180621
+/*20160803 to 20180704
íŒë§¤ ë…¸ì  ì•„ë¥´ë°”ì´íŠ¸ 종료
Close vending sales agent
*/
MSG_ID_B7B = 0xb7b,
-/*20160803 to 20180621
+/*20160803 to 20180704
구매 ë…¸ì  ì•„ë¥´ë°”ì´íŠ¸ 종료
Close vending purchase agent
*/
MSG_ID_B7C = 0xb7c,
-/*20160803 to 20180621
+/*20160803 to 20180704
ë‚¨ì€ ê¸ˆì•¡:
Balance:
*/
MSG_ID_B7D = 0xb7d,
-/*20160803 to 20180621
+/*20160803 to 20180704
ì•„ì´í…œ 리스트:
Item list:
*/
MSG_ID_B7E = 0xb7e,
-/*20160803 to 20180621
+/*20160803 to 20180704
ë…¸ì  ì•„ë¥´ë°”ì´íŠ¸ìƒ
Vending agent
*/
MSG_ID_B7F = 0xb7f,
-/*20160803 to 20180621
+/*20160803 to 20180704
반환 ì•„ì´í…œ:
Returned item:
*/
MSG_ID_B80 = 0xb80,
-/*20160803 to 20180621
+/*20160803 to 20180704
반환 수량:
Returned quantity:
*/
MSG_ID_B81 = 0xb81,
-/*20160803 to 20180621
+/*20160803 to 20180704
반환 ì¼ì‹œ:
Returned date:
*/
MSG_ID_B82 = 0xb82,
-/*20160803 to 20180621
+/*20160803 to 20180704
구매 ë…¸ì ì—ì„œ 거래한 ê¸ˆì•¡ì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤
Total trade will be sent to RODEX
*/
MSG_ID_B83 = 0xb83,
-/*20160803 to 20180621
+/*20160803 to 20180704
사용할 수 없는 ì´ë¦„입니다.
Name isn't available
*/
MSG_ID_B84 = 0xb84,
#endif
#if PACKETVER >= 20160817
-/*20160817 to 20180621
+/*20160817 to 20180704
ìƒí’ˆì´ ë„착했습니다.
Item has been delivered
*/
MSG_ID_B85 = 0xb85,
-/*20160817 to 20180621
+/*20160817 to 20180704
구입해주셔서 ê°ì‚¬í•©ë‹ˆë‹¤.
Thank you for purchasing
*/
MSG_ID_B86 = 0xb86,
#endif
#if PACKETVER >= 20160824
-/*20160824 to 20180621
+/*20160824 to 20180704
NPCì—게 ì•„ì´í…œì„ íŒë§¤í•˜ì§€ 않습니다.
Press again to unlock
*/
MSG_ID_B87 = 0xb87,
-/*20160824 to 20180621
+/*20160824 to 20180704
ì•„ì´í…œ íŒë§¤ 잠금
Lock from NPC selling
*/
MSG_ID_B88 = 0xb88,
-/*20160824 to 20180621
+/*20160824 to 20180704
근처ì—ì„œ 소환가능 위치를 ì°¾ì„수 없습니다.
There is no callable location nearby
*/
MSG_ID_B89 = 0xb89,
-/*20160824 to 20180621
+/*20160824 to 20180704
ì „ì²´ 화면 캡ì³
Capture full screens
*/
MSG_ID_B8A = 0xb8a,
-/*20160824 to 20180621
+/*20160824 to 20180704
부분 화면 캡ì³
Capture part of screen
*/
MSG_ID_B8B = 0xb8b,
-/*20160824 to 20180621
+/*20160824 to 20180704
보내기
Send
*/
MSG_ID_B8C = 0xb8c,
-/*20160824 to 20180621
+/*20160824 to 20180704
가족 분과 담당ìž
Family Affairs agent
*/
MSG_ID_B8D = 0xb8d,
-/*20160824 to 20180621
+/*20160824 to 20180704
가족 사항 ë³€ë™ ì•ˆë‚´
Acknowledgement of family member registrations.
*/
MSG_ID_B8E = 0xb8e,
-/*20160824 to 20180621
+/*20160824 to 20180704
안녕하십니까.
ê¸ˆì¼ "%s"님과 "%s"ë‹˜ì˜ ìžë…€ì¸ "%s"ë‹˜ì´ ë…립하여 ë‹¨ë… ì„¸ëŒ€ë¥¼ 구성하였습니다.
@@ -18426,12 +18426,12 @@ Thank you.
MSG_ID_B8F = 0xb8f,
#endif
#if PACKETVER >= 20160831
-/*20160831 to 20180621
+/*20160831 to 20180704
장착
Equip
*/
MSG_ID_B90 = 0xb90,
-/*20160831 to 20180621
+/*20160831 to 20180704
ì´ë¯¸ì§€ ì—†ìŒ
No image
*/
@@ -18440,362 +18440,362 @@ No image
#if PACKETVER >= 20160907
/*20160907 to 20160921
%sì€(는) 현재 í˜¸ì¶œì„ ì°¨ë‹¨í•œ ìƒíƒœìž…니다.
-20160928 to 20180621
+20160928 to 20180704
[%s]ì€(는) 현재 í˜¸ì¶œì„ ì°¨ë‹¨í•œ ìƒíƒœìž…니다.
[%s] is blocking Call Massage.
*/
MSG_ID_B92 = 0xb92,
#endif
#if PACKETVER >= 20160913
-/*20160913 to 20180621
+/*20160913 to 20180704
현재 ê³µì„±ì „ì´ ì§„í–‰ì¤‘ì´ë¯€ë¡œ, 길드마스터를 위임 í•  수 없습니다.
Currently in WoE hours, unable to delegate Guild leader
*/
MSG_ID_B93 = 0xb93,
-/*20160913 to 20180621
+/*20160913 to 20180704
현재 길드장 ìœ„ìž„ì„ ë°›ì€ì§€ 만 하루가 지나지 ì•Šì•„, ê¸¸ë“œìž¥ì„ ìœ„ìž„í•  수 없습니다.
You have to wait for one day before delegating a new Guild leader
*/
MSG_ID_B94 = 0xb94,
-/*20160913 to 20180621
+/*20160913 to 20180704
ì•„ì´ê°€ ë˜ë©´ ì „ìŠ¹ì„ í•  수 없고 ìŠ¤í…Ÿì˜ ì œí•œì´ ìžˆìœ¼ë©° HP와 SPê°€ 줄어듭니다.
ê·¸ëž˜ë„ ê´œì°®ìŠµë‹ˆê¹Œ?
When adopted, character will not able to transcend, maximum stats will be limited, MaxHP and MaxSP will be reduced.
Are you sure you want to continue?
*/
MSG_ID_B95 = 0xb95,
-/*20160913 to 20180621
+/*20160913 to 20180704
제련
Refining
*/
MSG_ID_B96 = 0xb96,
-/*20160913 to 20180621
+/*20160913 to 20180704
대장장ì´ì˜ ì¶•ë³µì„ ì‚¬ìš©ì¤‘ìž…ë‹ˆë‹¤.
Use Blacksmith's Blessing
*/
MSG_ID_B97 = 0xb97,
-/*20160913 to 20180621
+/*20160913 to 20180704
제니가 부족합니다.
Insufficient zeny
*/
MSG_ID_B98 = 0xb98,
-/*20160913 to 20180621
+/*20160913 to 20180704
대장장ì´ì˜ 축복 개수가 부족합니다.
Not enough Blacksmith's Blessing
*/
MSG_ID_B99 = 0xb99,
-/*20160913 to 20180621
+/*20160913 to 20180704
해당 장비는 ì œë ¨ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
This equipment can not be refined
*/
MSG_ID_B9A = 0xb9a,
/*20160913 to 20170621
제련 성공!
-20170628 to 20180621
+20170628 to 20180704
제련 성공
Upgrade success!
*/
MSG_ID_B9B = 0xb9b,
/*20160913 to 20170621
제련 실패!
-20170628 to 20180621
+20170628 to 20180704
제련 실패
Upgrade failed!
*/
MSG_ID_B9C = 0xb9c,
-/*20160913 to 20180621
+/*20160913 to 20180704
ëŒì•„가기
Back
*/
MSG_ID_B9D = 0xb9d,
-/*20160913 to 20180621
+/*20160913 to 20180704
성공
Success
*/
MSG_ID_B9E = 0xb9e,
-/*20160913 to 20180621
+/*20160913 to 20180704
ì›ëž˜ëŒ€ë¡œ
Return
*/
MSG_ID_B9F = 0xb9f,
#endif
#if PACKETVER >= 20160921
-/*20160921 to 20180621
+/*20160921 to 20180704
씨와ì˜
With Mr/Miss
*/
MSG_ID_BA0 = 0xba0,
-/*20160921 to 20180621
+/*20160921 to 20180704
호문í´ë£¨ìŠ¤ì˜ ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
The Homunculus's name will be changed to^0000ff^0000ff %s^000000^000000, Are you sure?
*/
MSG_ID_BA1 = 0xba1,
#endif
#if PACKETVER >= 20160928
-/*20160928 to 20180621
+/*20160928 to 20180704
í˜¸ì¶œì´ í—ˆìš©ëœ ìƒíƒœìž…니다. (호출 기능 ON)
Call function is ON
*/
MSG_ID_BA2 = 0xba2,
-/*20160928 to 20180621
+/*20160928 to 20180704
í˜¸ì¶œì´ ì°¨ë‹¨ëœ ìƒíƒœìž…니다. (호출 기능 OFF)
Call function is OFF
*/
MSG_ID_BA3 = 0xba3,
-/*20160928 to 20180621
+/*20160928 to 20180704
호출 메시지 표시
Display Call messages
*/
MSG_ID_BA4 = 0xba4,
-/*20160928 to 20180621
+/*20160928 to 20180704
해당 ìºë¦­í„°ê°€ 현재 ë…¸ì  ì•„ì´í…œì„ 사용 중ì´ë¯€ë¡œ 삭제할 수 없습니다.
This character is currently opening a shop and can't be deleted
*/
MSG_ID_BA5 = 0xba5,
-/*20160928 to 20180621
+/*20160928 to 20180704
ì´ë¯¸ ë™ì¼í•œ ë…¸ì  NPCê°€ 설치 중입니다.
The same vend shop NPC has been set up
*/
MSG_ID_BA6 = 0xba6,
-/*20160928 to 20180621
+/*20160928 to 20180704
ë…¸ì ì„ 설치할 수 없는 위치입니다.
Opening shop is not allowed on this location
*/
MSG_ID_BA7 = 0xba7,
-/*20160928 to 20180621
+/*20160928 to 20180704
다른 ìºë¦­í„°ê°€ 있는 위치ì—는 ë…¸ì ì„ 설치할 수 없습니다.
Opening shop is not allowed when there is other character
*/
MSG_ID_BA8 = 0xba8,
#endif
#if PACKETVER >= 20161005
-/*20161005 to 20180621
+/*20161005 to 20180704
펫 먹ì´ì£¼ê¸°ê°€ 실패했습니다. ë¡œë±ìŠ¤ ìž‘ì„±ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Failed to feed pet, please close RODEX window
*/
MSG_ID_BA9 = 0xba9,
-/*20161005 to 20180621
+/*20161005 to 20180704
장비 세트 설정
Set item setting
*/
MSG_ID_BAA = 0xbaa,
-/*20161005 to 20180621
+/*20161005 to 20180704
장착 하기
Equip
*/
MSG_ID_BAB = 0xbab,
#endif
#if PACKETVER >= 20161019
-/*20161019 to 20180621
+/*20161019 to 20180704
제련 실패시 장비가 사ë¼ì§‘니다.
Equipment will dissapear when refine fails
*/
MSG_ID_BAC = 0xbac,
-/*20161019 to 20180621
+/*20161019 to 20180704
제련 실패시 ìž¥ë¹„ì˜ ì œë ¨ë„ê°€ 내려갑니다.
Equipment's refine level will decreased when refine fails
*/
MSG_ID_BAD = 0xbad,
-/*20161019 to 20180621
+/*20161019 to 20180704
제련 실패시 ìž¥ë¹„ì˜ ì œë ¨ë„ê°€ 내려가거나 사ë¼ì§ˆ 수 있습니다.
Equipment will dissapear or refine level will decreased when refine fails
*/
MSG_ID_BAE = 0xbae,
#endif
#if PACKETVER >= 20161026
-/*20161026 to 20180621
+/*20161026 to 20180704
제련 중ì—는 ë¡œë±ìŠ¤ë¥¼ 사용할 수 없습니다. ë¡œë±ìŠ¤ë¥¼ ê°•ì œ 종료하였습니다.
You cannot use RODEX while refining. RODEX has closed.
*/
MSG_ID_BAF = 0xbaf,
-/*20161026 to 20180621
+/*20161026 to 20180704
제련 중ì—는 ë¡œë±ìŠ¤ë¥¼ 사용할 수 없습니다.
You cannot use RODEX while refining.
*/
MSG_ID_BB0 = 0xbb0,
-/*20161026 to 20180621
+/*20161026 to 20180704
ì œë ¨ì„ ì§„í–‰í•˜ë ¤ë©´ 다른 ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Please close other windows to continue.
*/
MSG_ID_BB1 = 0xbb1,
-/*20161026 to 20180621
+/*20161026 to 20180704
오오ë¼ê°€ ì •ìƒì ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤ [ì˜¤ì˜¤ë¼ ON]
Turn On Aura [Aura ON]
*/
MSG_ID_BB2 = 0xbb2,
-/*20161026 to 20180621
+/*20161026 to 20180704
오오ë¼ê°€ 표시ë˜ì§€ 않습니다 [ì˜¤ì˜¤ë¼ OFF]
Turn Off Aura [Auta OFF]
*/
MSG_ID_BB3 = 0xbb3,
-/*20161026 to 20180621
+/*20161026 to 20180704
오오ë¼ê°€ Off ìƒíƒœìž…니다. Off 를 해제하고 ì‹œë„í•´ 주세요
Aura is turned off. Please turn it on and try again
*/
MSG_ID_BB4 = 0xbb4,
-/*20161026 to 20180621
+/*20161026 to 20180704
스킬 ë°œë™ì‹œ 최소 %dê°œì˜ íƒ„ì•Œì´ í•„ìš”í•©ë‹ˆë‹¤.
You need %d bullet(s) to activate the skill.
*/
MSG_ID_BB5 = 0xbb5,
-/*20161026 to 20180621
+/*20161026 to 20180704
장비 세트를 변경하시겠습니까?
Do you want to change the equipment set?
*/
MSG_ID_BB6 = 0xbb6,
-/*20161026 to 20180621
+/*20161026 to 20180704
ì£½ì€ ìƒíƒœì—서는 í•  수 없습니다
You can not do it while you are dead.
*/
MSG_ID_BB7 = 0xbb7,
-/*20161026 to 20180621
+/*20161026 to 20180704
ìºìŠ¤íŒ… ë„중ì—는 í•  수 없습니다
You can not do it while casting
*/
MSG_ID_BB8 = 0xbb8,
-/*20161026 to 20180621
+/*20161026 to 20180704
거래 ë„중ì—는 í•  수 없습니다
You can not do it while trading
*/
MSG_ID_BB9 = 0xbb9,
-/*20161026 to 20180621
+/*20161026 to 20180704
ë…¸ì  ê°œì„¤ ë„중ì—는 í•  수 없습니다
You can not do it while opening vendor
*/
MSG_ID_BBA = 0xbba,
-/*20161026 to 20180621
+/*20161026 to 20180704
NPC ì´ìš©ì¤‘ì—는 í•  수 없습니다
You can not do it while using NPC
*/
MSG_ID_BBB = 0xbbb,
-/*20161026 to 20180621
+/*20161026 to 20180704
채팅방 ì´ìš©ì¤‘ì—는 í•  수 없습니다
You can not do it while using chatting room
*/
MSG_ID_BBC = 0xbbc,
-/*20161026 to 20180621
+/*20161026 to 20180704
íŒŒí‹°ì› ì „ì›ì´ ì ‘ì† ìƒíƒœê°€ 아닙니다.
Party members are not connected.
*/
MSG_ID_BBD = 0xbbd,
-/*20161026 to 20180621
+/*20161026 to 20180704
스킬 ë°œë™ì‹œ 최소 %dê°œì˜ í™”ì‚´ì´ í•„ìš”í•©ë‹ˆë‹¤.
You need %d arrow(s) to activate the skill.
*/
MSG_ID_BBE = 0xbbe,
#endif
#if PACKETVER >= 20161102
-/*20161102 to 20180621
+/*20161102 to 20180704
ì•„ì´í…œ ì •ë ¬
Align items
*/
MSG_ID_BBF = 0xbbf,
-/*20161102 to 20180621
+/*20161102 to 20180704
ì•„ì´í…œì„ 버리려면 장비 설정 ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Please close item setting window to dump item.
*/
MSG_ID_BC0 = 0xbc0,
#endif
#if PACKETVER >= 20161109
-/*20161109 to 20180621
+/*20161109 to 20180704
êµì²´ í•  수 있는 ì•„ì´í…œì´ 없습니다.
There is no item to replace.
*/
MSG_ID_BC1 = 0xbc1,
-/*20161109 to 20180621
+/*20161109 to 20180704
ì‚­ì œëœ ìºë¦­í„°
Deleted character
*/
MSG_ID_BC2 = 0xbc2,
#endif
#if PACKETVER >= 20161116
-/*20161116 to 20180621
+/*20161116 to 20180704
%Y.%m.%d
*/
MSG_ID_BC3 = 0xbc3,
-/*20161116 to 20180621
+/*20161116 to 20180704
ì ‘ì†ì¼: %s
Access date: %s
*/
MSG_ID_BC4 = 0xbc4,
-/*20161116 to 20180621
+/*20161116 to 20180704
제련 중ì—는 ì€í–‰ì„ 사용할 수 없습니다. ì€í–‰ì„ ê°•ì œ 종료하였습니다.
You can not use bank while refining. Bank has closed.
*/
MSG_ID_BC5 = 0xbc5,
-/*20161116 to 20180621
+/*20161116 to 20180704
제련 중ì—는 ì€í–‰ì„ 사용할 수 없습니다.
You can not use bank while refining.
*/
MSG_ID_BC6 = 0xbc6,
-/*20161116 to 20180621
+/*20161116 to 20180704
장비 세트 설정 ì¤‘ì¸ ì•„ì´í…œìž…니다.
The item has bind to set equipment.
*/
MSG_ID_BC7 = 0xbc7,
#endif
#if PACKETVER >= 20161123
-/*20161123 to 20180621
+/*20161123 to 20180704
ì¸ê°„
Human
*/
MSG_ID_BC8 = 0xbc8,
-/*20161123 to 20180621
+/*20161123 to 20180704
검사, 법사, ìƒì¸, 복사, ë„ë‘‘, ê¶ìˆ˜
Swordman, Mage, Merchant, Acolyte, Thief, Archer
*/
MSG_ID_BC9 = 0xbc9,
-/*20161123 to 20180621
+/*20161123 to 20180704
ë„람
Doram
*/
MSG_ID_BCA = 0xbca,
-/*20161123 to 20180621
+/*20161123 to 20180704
소환사
Summoner
*/
MSG_ID_BCB = 0xbcb,
-/*20161123 to 20180621
+/*20161123 to 20180704
미드가르드 ëŒ€ë¥™ì˜ ëŒ€í‘œ 종족. 무한한 잠재력과 ë›°ì–´ë‚œ ì ì‘력으로 문제 í•´ê²°ì— íƒì›”í•œ ê²ƒì´ íŠ¹ì§•ì´ë‹¤.
Delegate race of Midgard. Very talented race to solve a problem with inifite potential and great adaptability.
*/
MSG_ID_BCC = 0xbcc,
-/*20161123 to 20180621
+/*20161123 to 20180704
파-스타 ëŒ€ë¥™ì˜ ëŒ€í‘œì ì¸ 종족 중 하나로, 선천ì ìœ¼ë¡œ í˜¸ê¸°ì‹¬ì´ ê°•í•˜ê³  발랄한 ì„±ê²©ì„ ì§€ë…”ë‹¤.
One of delegate race of Far-star continent with natural born curiosity and sparky character.
*/
MSG_ID_BCD = 0xbcd,
-/*20161123 to 20180621
+/*20161123 to 20180704
소지 í•œê³„ëŸ‰ì´ 70%를 초과하거나, ì¸ë²¤í† ë¦¬ì— 10칸 ì´ìƒì˜ 여유 ê³µê°„ì´ ë¶€ì¡±í•œ ìƒíƒœìž…니다.
Weight limit has reached toover 70%. Or less then 10 invenrory space.
*/
MSG_ID_BCE = 0xbce,
-/*20161123 to 20180621
+/*20161123 to 20180704
C
*/
MSG_ID_BCF = 0xbcf,
-/*20161123 to 20180621
+/*20161123 to 20180704
C
*/
MSG_ID_BD0 = 0xbd0,
-/*20161123 to 20180621
+/*20161123 to 20180704
다른 ì¼ì„ 하는 중입니다.
Doing in other activity.
*/
MSG_ID_BD1 = 0xbd1,
-/*20161123 to 20180621
+/*20161123 to 20180704
오버히트 리미트 : %d
Overheat limit : %d
*/
MSG_ID_BD2 = 0xbd2,
#endif
#if PACKETVER >= 20161130
-/*20161130 to 20180621
+/*20161130 to 20180704
메모리얼 ë˜ì „ ì´ìš© 중엔 초대 ë° íƒˆí‡´ê°€ ë˜ì§€ 않습니다.
You cannot invite or withdraw while in memorial dungeon.
*/
MSG_ID_BD3 = 0xbd3,
-/*20161130 to 20180621
+/*20161130 to 20180704
비ì†ì–´ê°€ í¬í•¨ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
다시 한번 확ì¸í•´ì£¼ì„¸ìš”.
Expletive has detected.
@@ -18804,131 +18804,131 @@ Please check again.
MSG_ID_BD4 = 0xbd4,
#endif
#if PACKETVER >= 20161207
-/*20161207 to 20180621
+/*20161207 to 20180704
ì•„ì´ë””는 %dìž ì´ìƒ 입력해주세요. ì‚¬ìš©ìž ê³„ì •ì´ ì—†ìœ¼ì‹ ë¶„ë“¤ì€ ì™¼ìª½ í•˜ë‹¨ì˜ [ì‹ ì²­] ë²„íŠ¼ì„ ëˆŒëŸ¬ ê³„ì •ì„ ë§Œë“œì‹œê¸° ë°”ëžë‹ˆë‹¤.
Please enter over %d characters. If you don't have user account, please click [Register] button on the bottom left.
*/
MSG_ID_BD5 = 0xbd5,
-/*20161207 to 20180621
+/*20161207 to 20180704
비밀번호는 %dìž ì´ìƒ 입력해주세요.
Please enter the password over %d characters.
*/
MSG_ID_BD6 = 0xbd6,
-/*20161207 to 20180621
+/*20161207 to 20180704
진행중ì´ë˜ ìž‘ì—…ì„ ì¢…ë£Œí›„ 다시 ì‹œë„하세요.
Please finish your current work and try it again.
*/
MSG_ID_BD7 = 0xbd7,
-/*20161207 to 20180621
+/*20161207 to 20180704
%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + %s서버 %.1f%%)
%.1f%% (Internet-Cafe %.1f%% + TPLUS %.1f%% + %sServer %.1f%%)
*/
MSG_ID_BD8 = 0xbd8,
-/*20161207 to 20180621
+/*20161207 to 20180704
ì•„ì´í…œì„ 등ë¡í•  수 없습니다
The item cannot be registered.
*/
MSG_ID_BD9 = 0xbd9,
#endif
#if PACKETVER >= 20161214
-/*20161214 to 20180621
+/*20161214 to 20180704
/100
/300
*/
MSG_ID_BDA = 0xbda,
-/*20161214 to 20180621
+/*20161214 to 20180704
/2000
/4000
*/
MSG_ID_BDB = 0xbdb,
-/*20161214 to 20180621
+/*20161214 to 20180704
https://member.gnjoy.com.tw/mRO_SecPwd.aspx
*/
MSG_ID_BDC = 0xbdc,
-/*20161214 to 20180621
+/*20161214 to 20180704
등ë¡í•  emblemì´ ì¡´ìž¬í•˜ì§€ 않습니다. emblem í´ë”ì— íŒŒì¼ì„ 넣고 ì‹œë„í•´ 주세요
The emblem you want to register does not exist. Insert it in the emblem file and try again
*/
MSG_ID_BDD = 0xbdd,
/*20161214 to 20170315
#ë¼ê·¸ë‚˜ë¡œí¬ #Ragnarok
-20170322 to 20180621
+20170322 to 20180704
ë¼ê·¸ë‚˜ë¡œí¬
Ragnarok Ragnarok
*/
MSG_ID_BDE = 0xbde,
/*20161214 to 20161214
스í¬ë¦°ìƒ·ì— ìžì‹  ì´ì™¸ì˜ ìºë¦¬í„°ëª…ì´ í‘œì‹œë˜ëŠ” 경우나 ì±„íŒ…ì°½ì— ìžì‹  ì´ì™¸ì˜ ìºë¦­í„° 대화가 표시ë˜ëŠ” 경우, 해당 사용ìžì—게 반드시 양해를 구한 후 사용 í•´ 주시기 ë°”ëžë‹ˆë‹¤.
-20161221 to 20180621
+20161221 to 20180704
스í¬ë¦°ìƒ·ì— ìžì‹  ì´ì™¸ì˜ ìºë¦­í„°ëª…ì´ í‘œì‹œë˜ëŠ” 경우나 ì±„íŒ…ì°½ì— ìžì‹  ì´ì™¸ì˜ ìºë¦­í„° 대화가 표시ë˜ëŠ” 경우, 해당 사용ìžì—게 반드시 양해를 구한 후 사용 í•´ 주시기 ë°”ëžë‹ˆë‹¤.
If your screenshot or chat box includes other users besides yourself, first ask permission from the other users before using it.
*/
MSG_ID_BDF = 0xbdf,
#endif
#if PACKETVER >= 20161221
-/*20161221 to 20180621
+/*20161221 to 20180704
현재 ìƒíƒœì—ì„  장비를 êµì²´í•  수 없습니다
You cannot change equipment in current condition
*/
MSG_ID_BE0 = 0xbe0,
-/*20161221 to 20180621
+/*20161221 to 20180704
해당 ìœ ì €ì˜ ì´ë¦„ì„ ê°€ì ¸ì˜¤ê³  있습니다
Getting the user's name
*/
MSG_ID_BE1 = 0xbe1,
-/*20161221 to 20180621
+/*20161221 to 20180704
해당 메시지는 사용 í•  수 없는 ë‚´ìš©ì„ í¬í•¨í•˜ê³  있습니다.
This message includes contents you are not able to use.
*/
MSG_ID_BE2 = 0xbe2,
-/*20161221 to 20180621
+/*20161221 to 20180704
ì•„ì´í…œ êµ¬ìž…ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Failed to purchase item.
*/
MSG_ID_BE3 = 0xbe3,
-/*20161221 to 20180621
+/*20161221 to 20180704
신분ì¦ë²ˆí˜¸ 하위 7ìžë¦¬ê°€ ì¼ì¹˜í•˜ì§€ 않습니다.
The lower numbers of the identification number does not match.
*/
MSG_ID_BE4 = 0xbe4,
#endif
#if PACKETVER >= 20161228
-/*20161228 to 20180621
+/*20161228 to 20180704
닫기
Close
*/
MSG_ID_BE5 = 0xbe5,
-/*20161228 to 20180621
+/*20161228 to 20180704
규칙
Rule
*/
MSG_ID_BE6 = 0xbe6,
-/*20161228 to 20180621
+/*20161228 to 20180704
1회 구매
Purchase 1x
*/
MSG_ID_BE7 = 0xbe7,
-/*20161228 to 20180621
+/*20161228 to 20180704
10회 구매
Purchase 10x
*/
MSG_ID_BE8 = 0xbe8,
-/*20161228 to 20180621
+/*20161228 to 20180704
100회 구매
Purchase 100x
*/
MSG_ID_BE9 = 0xbe9,
-/*20161228 to 20180621
+/*20161228 to 20180704
1등 당첨
Win 1st prize
*/
MSG_ID_BEA = 0xbea,
-/*20161228 to 20180621
+/*20161228 to 20180704
2등 당첨
Win 2nd prize
*/
MSG_ID_BEB = 0xbeb,
-/*20161228 to 20180621
+/*20161228 to 20180704
3등 당첨
Win 3rd prize
*/
@@ -18936,7 +18936,7 @@ Win 3rd prize
/*20161228 to 20170111
복권 구매 금액
Lottery purchase amount
-20170118 to 20180621
+20170118 to 20180704
현재 사용하지 ì•ŠìŒ
Currently not in use
*/
@@ -18944,49 +18944,49 @@ Currently not in use
/*20161228 to 20170111
참여 ìºë¦­í„°
Participating character
-20170118 to 20180621
+20170118 to 20180704
현재 사용하지 ì•ŠìŒ
Currently not in use
*/
MSG_ID_BEE = 0xbee,
-/*20161228 to 20180621
+/*20161228 to 20180704
제니 ë¡œë˜ ë‹¹ì²¨ìž
Zeny Lottery winner
*/
MSG_ID_BEF = 0xbef,
/*20161228 to 20170111
복권 진행ì¼
-20170118 to 20180621
+20170118 to 20180704
복권 구매 금액
Lottery purchase amount
*/
MSG_ID_BF0 = 0xbf0,
-/*20161228 to 20180621
+/*20161228 to 20180704
참여 ìºë¦­í„°
Participating character
*/
MSG_ID_BF1 = 0xbf1,
-/*20161228 to 20180621
+/*20161228 to 20180704
1등
1st Price
*/
MSG_ID_BF2 = 0xbf2,
-/*20161228 to 20180621
+/*20161228 to 20180704
2등
2nd Price
*/
MSG_ID_BF3 = 0xbf3,
-/*20161228 to 20180621
+/*20161228 to 20180704
3등
3rd Price
*/
MSG_ID_BF4 = 0xbf4,
-/*20161228 to 20180621
+/*20161228 to 20180704
구매 ë³´ìƒ ì•„ì´í…œ
Purchase Reward Item
*/
MSG_ID_BF5 = 0xbf5,
-/*20161228 to 20180621
+/*20161228 to 20180704
^1a1a1a복권 ^b%d개^/b를
^4435b2%dZeny^1a1a1a로
구매하시겠습니까?
@@ -18994,165 +18994,165 @@ Purchase Reward Item
^4435b2%dZeny^1a1a1a?
*/
MSG_ID_BF6 = 0xbf6,
-/*20161228 to 20180621
+/*20161228 to 20180704
ë³µê¶Œì„ ì„±ê³µì ìœ¼ë¡œ 구매하였습니다.
You have successfully purchased the lottery ticket.
*/
MSG_ID_BF7 = 0xbf7,
-/*20161228 to 20180621
+/*20161228 to 20180704
소지 제니가 부족하여 ë³µê¶Œì„ êµ¬ë§¤ í•  수 없습니다.
Not enough Zeny to purchase lottey ticket.
*/
MSG_ID_BF8 = 0xbf8,
-/*20161228 to 20180621
+/*20161228 to 20180704
최대 복권 구매 횟수는 1000회를 초과 할 수 없습니다.
You are only able to purchase the tickets upto 1000 times.
*/
MSG_ID_BF9 = 0xbf9,
-/*20161228 to 20180621
+/*20161228 to 20180704
예
Yes
*/
MSG_ID_BFA = 0xbfa,
-/*20161228 to 20180621
+/*20161228 to 20180704
아니요
No
*/
MSG_ID_BFB = 0xbfb,
-/*20161228 to 20180621
+/*20161228 to 20180704
HP
*/
MSG_ID_BFC = 0xbfc,
-/*20161228 to 20180621
+/*20161228 to 20180704
SP
*/
MSG_ID_BFD = 0xbfd,
-/*20161228 to 20180621
+/*20161228 to 20180704
Lv
*/
MSG_ID_BFE = 0xbfe,
-/*20161228 to 20180621
+/*20161228 to 20180704
Lv
*/
MSG_ID_BFF = 0xbff,
-/*20161228 to 20180621
+/*20161228 to 20180704
Exp
*/
MSG_ID_C00 = 0xc00,
-/*20161228 to 20180621
+/*20161228 to 20180704
all on
*/
MSG_ID_C01 = 0xc01,
-/*20161228 to 20180621
+/*20161228 to 20180704
Play Replay Flie
*/
MSG_ID_C02 = 0xc02,
-/*20161228 to 20180621
+/*20161228 to 20180704
P
*/
MSG_ID_C03 = 0xc03,
-/*20161228 to 20180621
+/*20161228 to 20180704
Total
*/
MSG_ID_C04 = 0xc04,
-/*20161228 to 20180621
+/*20161228 to 20180704
Basicinfo
*/
MSG_ID_C05 = 0xc05,
-/*20161228 to 20180621
+/*20161228 to 20180704
Equip
*/
MSG_ID_C06 = 0xc06,
-/*20161228 to 20180621
+/*20161228 to 20180704
Item
*/
MSG_ID_C07 = 0xc07,
-/*20161228 to 20180621
+/*20161228 to 20180704
Skill
*/
MSG_ID_C08 = 0xc08,
-/*20161228 to 20180621
+/*20161228 to 20180704
Guild
*/
MSG_ID_C09 = 0xc09,
-/*20161228 to 20180621
+/*20161228 to 20180704
Party
*/
MSG_ID_C0A = 0xc0a,
-/*20161228 to 20180621
+/*20161228 to 20180704
Chatting
*/
MSG_ID_C0B = 0xc0b,
-/*20161228 to 20180621
+/*20161228 to 20180704
Shortcut
*/
MSG_ID_C0C = 0xc0c,
-/*20161228 to 20180621
+/*20161228 to 20180704
Status
*/
MSG_ID_C0D = 0xc0d,
-/*20161228 to 20180621
+/*20161228 to 20180704
ALL
All
*/
MSG_ID_C0E = 0xc0e,
-/*20161228 to 20180621
+/*20161228 to 20180704
User Defined File Name
*/
MSG_ID_C0F = 0xc0f,
-/*20161228 to 20180621
+/*20161228 to 20180704
Repeated File Check
*/
MSG_ID_C10 = 0xc10,
-/*20161228 to 20180621
+/*20161228 to 20180704
on
*/
MSG_ID_C11 = 0xc11,
-/*20161228 to 20180621
+/*20161228 to 20180704
<Basic Skin>
*/
MSG_ID_C12 = 0xc12,
-/*20161228 to 20180621
+/*20161228 to 20180704
Select Skin
*/
MSG_ID_C13 = 0xc13,
#endif
#if PACKETVER >= 20170111
-/*20170111 to 20180621
+/*20170111 to 20180704
현재 ë³µê¶Œì— ì°¸ì—¬ 중ì´ë¼ 삭제할 수 없습니다
You cannot delete it because you are currently participating in the lottery
*/
MSG_ID_C14 = 0xc14,
-/*20170111 to 20180621
+/*20170111 to 20180704
/achievement
*/
MSG_ID_C15 = 0xc15,
-/*20170111 to 20180621
+/*20170111 to 20180704
제니 복권
Zeny Lottery ticket
*/
MSG_ID_C16 = 0xc16,
-/*20170111 to 20180621
+/*20170111 to 20180704
제니 복권 %d등 당첨 ë³´ìƒ
Zenyy Lottery %dprize reward
*/
MSG_ID_C17 = 0xc17,
-/*20170111 to 20180621
+/*20170111 to 20180704
%d등 당첨 ë³´ìƒ: %s
%dprize reward: %s
*/
MSG_ID_C18 = 0xc18,
-/*20170111 to 20180621
+/*20170111 to 20180704
제니 복권 ëˆ„ì  êµ¬ë§¤ ë³´ìƒ
Zeny Lottery Cumulative purchase reward
*/
MSG_ID_C19 = 0xc19,
-/*20170111 to 20180621
+/*20170111 to 20180704
ëˆ„ì  %d회 ë³´ìƒ: %s
Cumulative %d times reward: %s
*/
MSG_ID_C1A = 0xc1a,
-/*20170111 to 20180621
+/*20170111 to 20180704
제니 복권 구매 환불
Zeny Lottery Refund
*/
@@ -19160,282 +19160,282 @@ Zeny Lottery Refund
/*20170111 to 20170111
환불 금액: %d Zeny
환불 사유: 서버 내 복권 추첨 달성 실패
-20170118 to 20180621
+20170118 to 20180704
환불 금액: %d Zeny
환불 사유: 서버 내 복권 추첨 달성 실패
Refund amount: %d Zeny
Reason for Refund: Failed to draw lottery in the server
*/
MSG_ID_C1C = 0xc1c,
-/*20170111 to 20180621
+/*20170111 to 20180704
미니 파티창 추가
Add Mini Party Chat
*/
MSG_ID_C1D = 0xc1d,
-/*20170111 to 20180621
+/*20170111 to 20180704
미니 파티창 삭제
Delete Mini Party Chat
*/
MSG_ID_C1E = 0xc1e,
#endif
#if PACKETVER >= 20170118
-/*20170118 to 20180621
+/*20170118 to 20180704
복권 ì¶”ì²¨ì´ ëª¨ë‘ ì¢…ë£Œ ë˜ì—ˆìŠµë‹ˆë‹¤! 당첨ìžë¥¼ 확ì¸í•´ì£¼ì„¸ìš”
The lottery draw had ended! Check the winner!
*/
MSG_ID_C1F = 0xc1f,
-/*20170118 to 20180621
+/*20170118 to 20180704
%dì›” %dì¼
%dMonth %dDay
*/
MSG_ID_C20 = 0xc20,
-/*20170118 to 20180621
+/*20170118 to 20180704
ë‹¤ìŒ ë“±ê¸‰ê¹Œì§€
Till the next grade
*/
MSG_ID_C21 = 0xc21,
-/*20170118 to 20180621
+/*20170118 to 20180704
ì „ì²´
All
*/
MSG_ID_C22 = 0xc22,
-/*20170118 to 20180621
+/*20170118 to 20180704
미완료
Incomplete
*/
MSG_ID_C23 = 0xc23,
-/*20170118 to 20180621
+/*20170118 to 20180704
(달성!)
(Accomplished!)
*/
MSG_ID_C24 = 0xc24,
-/*20170118 to 20180621
+/*20170118 to 20180704
(미달성)
(Not Accomplished)
*/
MSG_ID_C25 = 0xc25,
#endif
#if PACKETVER >= 20170208
-/*20170208 to 20180621
+/*20170208 to 20180704
장비 êµì²´
Change equipment
*/
MSG_ID_C26 = 0xc26,
-/*20170208 to 20180621
+/*20170208 to 20180704
CHANGE
*/
MSG_ID_C27 = 0xc27,
-/*20170208 to 20180621
+/*20170208 to 20180704
힘 파ë¼ë©”í„°
^cc0000근접 물리 공격력^ffffff, 소지무게
Power Parameter
^cc0000Melee PhysicalAttack^ffffff, Carrying Weight
*/
MSG_ID_C28 = 0xc28,
-/*20170208 to 20180621
+/*20170208 to 20180704
민첩성 파ë¼ë©”í„°
^cc0000공격 ì†ë„^ffffff, 회피율, 물리 ë°©ì–´ë ¥
Agility Parameter
^cc0000Attack Speed^ffffff, Dodge, Physical Defense
*/
MSG_ID_C29 = 0xc29,
-/*20170208 to 20180621
+/*20170208 to 20180704
ì²´ë ¥ 파ë¼ë©”í„°
^cc0000최대 체력^ffffff, 물리 방어력, 마법 방어력
HP Parameter
^cc0000Max HP^ffffff, Physical Defense, Magic Defense
*/
MSG_ID_C2A = 0xc2a,
-/*20170208 to 20180621
+/*20170208 to 20180704
지력 파ë¼ë©”í„°
^cc0000마법 공격력^ffffff, ìºìŠ¤íŒ… 시간, 마법 ë°©ì–´ë ¥
Intellect Parameter
^cc0000Magic Attack^ffffff, Casting Time, Magic Defense
*/
MSG_ID_C2B = 0xc2b,
-/*20170208 to 20180621
+/*20170208 to 20180704
ì†ìž¬ì£¼ 파ë¼ë©”í„°
^cc0000ì›ê±°ë¦¬ 물리 공격력^ffffff, 명중률, ìºìŠ¤íŒ… 시간, 마법 공격력
Handcraft Parameter
^cc0000Long Range Physical Attack^ffffff, Accuracy, Casting Time, Magic Attack
*/
MSG_ID_C2C = 0xc2c,
-/*20170208 to 20180621
+/*20170208 to 20180704
ìš´ 파ë¼ë©”í„°
^cc0000치명타율^ffffff, 명중률, 물리공격력, 마법공격력, 회피율
Moon Parameter
^cc0000Critical Rate^ffffff, Accuracy, Physical Attack, Magic Attack, Dodge
*/
MSG_ID_C2D = 0xc2d,
-/*20170208 to 20180621
+/*20170208 to 20180704
물리 공격력
Physical Attack
*/
MSG_ID_C2E = 0xc2e,
-/*20170208 to 20180621
+/*20170208 to 20180704
물리 방어력
Physical Defense
*/
MSG_ID_C2F = 0xc2f,
-/*20170208 to 20180621
+/*20170208 to 20180704
명중률
Accuracy
*/
MSG_ID_C30 = 0xc30,
-/*20170208 to 20180621
+/*20170208 to 20180704
치명타율
Critical Rate
*/
MSG_ID_C31 = 0xc31,
-/*20170208 to 20180621
+/*20170208 to 20180704
소ì†ê¸¸ë“œ
Affiliated Guild
*/
MSG_ID_C32 = 0xc32,
-/*20170208 to 20180621
+/*20170208 to 20180704
ê° íŒŒë¼ë©”í„° ë ˆë²¨ì—…ì— ì‚¬ìš©ë˜ëŠ” í¬ì¸íŠ¸
Points to level up each Parameter
*/
MSG_ID_C33 = 0xc33,
-/*20170208 to 20180621
+/*20170208 to 20180704
마법공격력
Magic Attack
*/
MSG_ID_C34 = 0xc34,
-/*20170208 to 20180621
+/*20170208 to 20180704
마법방어력
Magic Defense
*/
MSG_ID_C35 = 0xc35,
-/*20170208 to 20180621
+/*20170208 to 20180704
회피율
Dodge
*/
MSG_ID_C36 = 0xc36,
-/*20170208 to 20180621
+/*20170208 to 20180704
공격 ì†ë„
Attack Speed
*/
MSG_ID_C37 = 0xc37,
#endif
#if PACKETVER >= 20170215
-/*20170215 to 20180621
+/*20170215 to 20180704
단축키 안내
Shortcut
*/
MSG_ID_C38 = 0xc38,
-/*20170215 to 20180621
+/*20170215 to 20180704
옵션
Option
*/
MSG_ID_C39 = 0xc39,
-/*20170215 to 20180621
+/*20170215 to 20180704
스킬 단축키 (F1 ~ F9)
Skill Shortcut Key (F1 ~ F9)
*/
MSG_ID_C3A = 0xc3a,
-/*20170215 to 20180621
+/*20170215 to 20180704
ì´ë¯¸ì§€ 캡ì³
Capture Image
*/
MSG_ID_C3B = 0xc3b,
-/*20170215 to 20180621
+/*20170215 to 20180704
확대
Zoom In
*/
MSG_ID_C3C = 0xc3c,
-/*20170215 to 20180621
+/*20170215 to 20180704
축소
Zoom Out
*/
MSG_ID_C3D = 0xc3d,
-/*20170215 to 20180621
+/*20170215 to 20180704
길드
Guild
*/
MSG_ID_C3E = 0xc3e,
-/*20170215 to 20180621
+/*20170215 to 20180704
ì€í–‰
Bank
*/
MSG_ID_C3F = 0xc3f,
-/*20170215 to 20180621
+/*20170215 to 20180704
우편
Mail
*/
MSG_ID_C40 = 0xc40,
-/*20170215 to 20180621
+/*20170215 to 20180704
ìºì‹œ ìƒì 
Cash Shop
*/
MSG_ID_C41 = 0xc41,
-/*20170215 to 20180621
+/*20170215 to 20180704
앉기
Sit
*/
MSG_ID_C42 = 0xc42,
-/*20170215 to 20180621
+/*20170215 to 20180704
ì´ë™
Move
*/
MSG_ID_C43 = 0xc43,
-/*20170215 to 20180621
+/*20170215 to 20180704
회전
Rotate
*/
MSG_ID_C44 = 0xc44,
-/*20170215 to 20180621
+/*20170215 to 20180704
íŒŒí‹°ìž¥ì€ íŒŒí‹°ìž¥ì„ ë‹¤ë¥¸ 파티ì›ì—게 위임 후 탈퇴 가능합니다.
The Party Leader can be dropped out only after another party member becomes a Party Leader.
*/
MSG_ID_C45 = 0xc45,
-/*20170215 to 20180621
+/*20170215 to 20180704
ì´ ë™ì˜ìƒì„ 그만 보시겠습니까?
Do you want to stop viewing this video?
*/
MSG_ID_C46 = 0xc46,
-/*20170215 to 20180621
+/*20170215 to 20180704
장비가 장비 êµì²´ ì°½ì— ìž¥ì°© ë˜ì—ˆìŠµë‹ˆë‹¤.
gear has been equipped in the gear equipment pop-up.
*/
MSG_ID_C47 = 0xc47,
-/*20170215 to 20180621
+/*20170215 to 20180704
장비가 장비 êµì²´ ì°½ì—ì„œ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
gear has been removed in the gear equipment pop-up.
*/
MSG_ID_C48 = 0xc48,
#endif
#if PACKETVER >= 20170222
-/*20170222 to 20180621
+/*20170222 to 20180704
현재가 마지막 ë¼ì¸ìž…니다.
This is the last line.
*/
MSG_ID_C49 = 0xc49,
-/*20170222 to 20180621
+/*20170222 to 20180704
%.1f%% ( 기본 100%% + 프리미엄 %.1f%%+ %s서버 %.1f%% )
%.1f%% ( Base 100%% + Premium %.1f%%+ %sServer %.1f%% )
*/
MSG_ID_C4A = 0xc4a,
#endif
#if PACKETVER >= 20170228
-/*20170228 to 20180621
+/*20170228 to 20180704
í•œìž
Chinese character
*/
MSG_ID_C4B = 0xc4b,
-/*20170228 to 20180621
+/*20170228 to 20180704
단축키 설정
Shortcut Settings
*/
MSG_ID_C4C = 0xc4c,
#endif
#if PACKETVER >= 20170308
-/*20170308 to 20180621
+/*20170308 to 20180704
ë‹¹ì‹ ì˜ ì •ì•¡ì œ ê¸°ê°„ì€ %sì— ì¢…ë£Œë©ë‹ˆë‹¤.
Your subscription will be ended on%s.
*/
MSG_ID_C4D = 0xc4d,
-/*20170308 to 20180621
+/*20170308 to 20180704
ë¦¬í”Œë ˆì´ íŒŒì¼ì„ 찾지 못하였습니다.
Cannot find the replay file.
*/
@@ -19443,7 +19443,7 @@ Cannot find the replay file.
/*20170308 to 20170801
신발
Head
-20170809 to 20180621
+20170809 to 20180704
ì˜ìƒ
Shoes
*/
@@ -19451,22 +19451,22 @@ Shoes
/*20170308 to 20170801
머리
Costume
-20170809 to 20180621
+20170809 to 20180704
신발
Head
*/
MSG_ID_C50 = 0xc50,
-/*20170308 to 20180621
+/*20170308 to 20180704
갑옷
Armor
*/
MSG_ID_C51 = 0xc51,
-/*20170308 to 20180621
+/*20170308 to 20180704
어깨
Shoulders
*/
MSG_ID_C52 = 0xc52,
-/*20170308 to 20180621
+/*20170308 to 20180704
악세
Accessory
*/
@@ -19474,12 +19474,12 @@ Accessory
/*20170308 to 20170801
ì˜ìƒ
Shoes
-20170809 to 20180621
+20170809 to 20180704
머리
Costume
*/
MSG_ID_C54 = 0xc54,
-/*20170308 to 20180621
+/*20170308 to 20180704
차순정렬
Sort Order
*/
@@ -19487,7 +19487,7 @@ Sort Order
/*20170308 to 20170308
Current admission application state.
-20170315 to 20180621
+20170315 to 20180704
ì¼ë°˜ 장비
Normal Gear
*/
@@ -19495,7 +19495,7 @@ Normal Gear
/*20170308 to 20170308
Current admission application state.
-20170315 to 20180621
+20170315 to 20180704
특수 장비
Special Gear
*/
@@ -19503,291 +19503,291 @@ Special Gear
/*20170308 to 20170308
Current admission application state.
-20170315 to 20180621
+20170315 to 20180704
칭호
Style
*/
MSG_ID_C58 = 0xc58,
#endif
#if PACKETVER >= 20170315
-/*20170315 to 20180621
+/*20170315 to 20180704
/quake : 화면 í”들림 효과 On/Off
/quake : Screen Shaking Effect On/Off
*/
MSG_ID_C59 = 0xc59,
-/*20170315 to 20180621
+/*20170315 to 20180704
/aura2 : 오오ë¼ë¥¼ 완전히 Off 시킬 수 있습니다 On Off
/aura2 : You can completely turn off the aurora On/Off
*/
MSG_ID_C5A = 0xc5a,
-/*20170315 to 20180621
+/*20170315 to 20180704
기본 설정
Default Settings
*/
MSG_ID_C5B = 0xc5b,
-/*20170315 to 20180621
+/*20170315 to 20180704
고급 설정
Advanced Settings
*/
MSG_ID_C5C = 0xc5c,
-/*20170315 to 20180621
+/*20170315 to 20180704
ê¸°ë³¸ì„¤ì •ê°’ì´ ì ìš©ë©ë‹ˆë‹¤.
The Default Settings will be applied.
*/
MSG_ID_C5D = 0xc5d,
-/*20170315 to 20180621
+/*20170315 to 20180704
기본 ì„¤ì •ê°’ì´ ì ìš©ë©ë‹ˆë‹¤. ë™ì˜í•˜ì‹­ë‹ˆê¹Œ?
The Default Settings will be applied. Do you agree?
*/
MSG_ID_C5E = 0xc5e,
-/*20170315 to 20180621
+/*20170315 to 20180704
ì„¤ì •ê°’ì´ ì ìš©ë©ë‹ˆë‹¤. ë™ì˜í•˜ì‹­ë‹ˆê¹Œ?
The settings will be applied. Do you agree?
*/
MSG_ID_C5F = 0xc5f,
-/*20170315 to 20180621
+/*20170315 to 20180704
ì„¤ì •ê°’ì„ ì ìš©í•˜ë ¤ë©´ ìž¬ì‹œìž‘ì´ í•„ìš”í•©ë‹ˆë‹¤. ë™ì˜í•˜ì‹­ë‹ˆê¹Œ?
Need to restart to apply the settings. Do you agree?
*/
MSG_ID_C60 = 0xc60,
-/*20170315 to 20180621
+/*20170315 to 20180704
안개
Fog
*/
MSG_ID_C61 = 0xc61,
-/*20170315 to 20180621
+/*20170315 to 20180704
ì˜¤ì˜¤ë¼ ê°„ëžµí™”
Simplified aurora
*/
MSG_ID_C62 = 0xc62,
-/*20170315 to 20180621
+/*20170315 to 20180704
오오ë¼ì¼œê¸°
Turn on aurora
*/
MSG_ID_C63 = 0xc63,
-/*20170315 to 20180621
+/*20170315 to 20180704
ì´íŽ™íŠ¸ 표시
Show Effect
*/
MSG_ID_C64 = 0xc64,
-/*20170315 to 20180621
+/*20170315 to 20180704
ìŒì˜ 표시
Show Shadows
*/
MSG_ID_C65 = 0xc65,
-/*20170315 to 20180621
+/*20170315 to 20180704
No Shift
*/
MSG_ID_C66 = 0xc66,
-/*20170315 to 20180621
+/*20170315 to 20180704
하드웨어 T&L ê°€ì†ê¸°ëŠ¥ì„ ì„ íƒí•©ë‹ˆë‹¤
Select Hardware T&L Acceleration Function
*/
MSG_ID_C67 = 0xc67,
-/*20170315 to 20180621
+/*20170315 to 20180704
ê²Œìž„ì˜ í•´ìƒë„를 ì„ íƒí•©ë‹ˆë‹¤
Select Game Resolution
*/
MSG_ID_C68 = 0xc68,
-/*20170315 to 20180621
+/*20170315 to 20180704
전체화면 사용
Use full screen
*/
MSG_ID_C69 = 0xc69,
-/*20170315 to 20180621
+/*20170315 to 20180704
마우스 고정
Fix mouse
*/
MSG_ID_C6A = 0xc6a,
-/*20170315 to 20180621
+/*20170315 to 20180704
ì´íŽ™íŠ¸ 설정
Effect Settings
*/
MSG_ID_C6B = 0xc6b,
-/*20170315 to 20180621
+/*20170315 to 20180704
Control 설정
Control Settings
*/
MSG_ID_C6C = 0xc6c,
-/*20170315 to 20180621
+/*20170315 to 20180704
그래픽 장치 설정
Graphic Device Settings
*/
MSG_ID_C6D = 0xc6d,
-/*20170315 to 20180621
+/*20170315 to 20180704
그래픽 í•´ìƒë„ 설정
Graphic Resolution Settings
*/
MSG_ID_C6E = 0xc6e,
-/*20170315 to 20180621
+/*20170315 to 20180704
전체 화면 유무 설정
Full Screen Settings
*/
MSG_ID_C6F = 0xc6f,
-/*20170315 to 20180621
+/*20170315 to 20180704
마우스 고정 여부 설정
Fix mouse Settings
*/
MSG_ID_C70 = 0xc70,
-/*20170315 to 20180621
+/*20170315 to 20180704
수수료 :
Commission :
*/
MSG_ID_C71 = 0xc71,
-/*20170315 to 20180621
+/*20170315 to 20180704
수수료 ì´ì•¡ :
Total commission amount :
*/
MSG_ID_C72 = 0xc72,
-/*20170315 to 20180621
+/*20170315 to 20180704
ìˆ˜ì‹ ì¸ ì„¤ì •
Select receiver
*/
MSG_ID_C73 = 0xc73,
-/*20170315 to 20180621
+/*20170315 to 20180704
수신그룹 설정
Select receiving group
*/
MSG_ID_C74 = 0xc74,
-/*20170315 to 20180621
+/*20170315 to 20180704
í¬ê¸° 변경(F10)
Change size(F10)
*/
MSG_ID_C75 = 0xc75,
-/*20170315 to 20180621
+/*20170315 to 20180704
ë©”ì¼í•¨ì„ 불러오는 중 입니다.
불필요한 ë©”ì¼ì€ ^c92114ì‚­ì œ^000000í•´ 주세요~!!
Loading the mailbox.
^c92114Delete^000000unnecessary emails!!
*/
MSG_ID_C76 = 0xc76,
-/*20170315 to 20180621
+/*20170315 to 20180704
NOW LOADING..
*/
MSG_ID_C77 = 0xc77,
-/*20170315 to 20180621
+/*20170315 to 20180704
제목
Title
*/
MSG_ID_C78 = 0xc78,
-/*20170315 to 20180621
+/*20170315 to 20180704
보낸ì´
Sender
*/
MSG_ID_C79 = 0xc79,
#endif
#if PACKETVER >= 20170322
-/*20170322 to 20180621
+/*20170322 to 20180704
ë¼ê·¸ë‚˜ë¡œí¬ í´ë¼ì´ì–¸íŠ¸ì™€ ë™ì‹œì— ì‹¤í–‰ì´ ë¶ˆê°€ëŠ¥ 합니다. setupì„ ì¢…ë£Œí•©ë‹ˆë‹¤
*/
MSG_ID_C7A = 0xc7a,
-/*20170322 to 20180621
+/*20170322 to 20180704
추가 기능 설정
*/
MSG_ID_C7B = 0xc7b,
-/*20170322 to 20180621
+/*20170322 to 20180704
This account does not exist.
*/
MSG_ID_C7C = 0xc7c,
-/*20170322 to 20180621
+/*20170322 to 20180704
Passwords do not match.
*/
MSG_ID_C7D = 0xc7d,
-/*20170322 to 20180621
+/*20170322 to 20180704
Failed to pass IP authentication
*/
MSG_ID_C7E = 0xc7e,
-/*20170322 to 20180621
+/*20170322 to 20180704
No identification number, supplement your registration information
*/
MSG_ID_C7F = 0xc7f,
-/*20170322 to 20180621
+/*20170322 to 20180704
Account block
*/
MSG_ID_C80 = 0xc80,
-/*20170322 to 20180621
+/*20170322 to 20180704
System error
*/
MSG_ID_C81 = 0xc81,
-/*20170322 to 20180621
+/*20170322 to 20180704
unknown error found.
*/
MSG_ID_C82 = 0xc82,
#endif
#if PACKETVER >= 20170329
-/*20170329 to 20180621
+/*20170329 to 20180704
길안내 ì•„ì´ì½˜ 설정
*/
MSG_ID_C83 = 0xc83,
-/*20170329 to 20180621
+/*20170329 to 20180704
길 안내 정보 UI
*/
MSG_ID_C84 = 0xc84,
-/*20170329 to 20180621
+/*20170329 to 20180704
길 안내 정보 열기
*/
MSG_ID_C85 = 0xc85,
-/*20170329 to 20180621
+/*20170329 to 20180704
현재 위치 공유
*/
MSG_ID_C86 = 0xc86,
-/*20170329 to 20180621
+/*20170329 to 20180704
검색결과[0]
*/
MSG_ID_C87 = 0xc87,
-/*20170329 to 20180621
+/*20170329 to 20180704
검색&안내
*/
MSG_ID_C88 = 0xc88,
/*20170329 to 20170329
위치 ê°’ì€ ìŒìˆ˜ ê°’ì´ ë“¤ì–´ 올 수 없습니다.
-20170405 to 20180621
+20170405 to 20180704
위치가 올바르지 않습니다.
*/
MSG_ID_C89 = 0xc89,
-/*20170329 to 20180621
+/*20170329 to 20180704
검색결과[%d]
*/
MSG_ID_C8A = 0xc8a,
-/*20170329 to 20180621
+/*20170329 to 20180704
길안내 표시를 위한 ì•„ì´ì½˜ 설정
*/
MSG_ID_C8B = 0xc8b,
-/*20170329 to 20180621
+/*20170329 to 20180704
길 ì°¾ê¸°ì— zeny 허용
*/
MSG_ID_C8C = 0xc8c,
-/*20170329 to 20180621
+/*20170329 to 20180704
내비게ì´ì…˜ ë„킹 í•´ì œ
*/
MSG_ID_C8D = 0xc8d,
-/*20170329 to 20180621
+/*20170329 to 20180704
활성화 하지 ì•Šì€ ê³„ì •ìž…ë‹ˆë‹¤.
*/
MSG_ID_C8E = 0xc8e,
#endif
#if PACKETVER >= 20170405
-/*20170405 to 20180621
+/*20170405 to 20180704
í´ë¦­í•œ 위치가 ì±„íŒ…ì°½ì— ê³µìœ  ë©ë‹ˆë‹¤.
*/
MSG_ID_C8F = 0xc8f,
-/*20170405 to 20180621
+/*20170405 to 20180704
4. Service í•­ëª©ì„ ì„ íƒí•˜ë©´ Zeny&비공정 ì´ìš©ì„ 고려하여 안내 한다.
*/
MSG_ID_C90 = 0xc90,
-/*20170405 to 20180621
+/*20170405 to 20180704
5. [<-] 버튼 : 길안내 모드 <-> 검색 모드를 바꾸거나
*/
MSG_ID_C91 = 0xc91,
-/*20170405 to 20180621
+/*20170405 to 20180704
공유하기 모드 -> 서치 모드로 ëŒì•„갈때 사용 ëœë‹¤.
*/
MSG_ID_C92 = 0xc92,
-/*20170405 to 20180621
+/*20170405 to 20180704
경험치 %lld ì–»ìŒ
*/
MSG_ID_C93 = 0xc93,
-/*20170405 to 20180621
+/*20170405 to 20180704
'%lld'ì˜ ê²½í—˜ì¹˜ë¥¼
*/
MSG_ID_C94 = 0xc94,
@@ -19810,7 +19810,7 @@ unknown error found.
= 수수료율 : ^1567fe8%^000000
100,000,001 z ì´ìƒ
= 수수료율 : ^1567fe10%^000000
-20170524 to 20180621
+20170524 to 20180704
^b- ë…¸ì  ìˆ˜ìˆ˜ë£Œ 안내^/b
ë…¸ì  ì„¤ì • ê°€ê²©ì— ë”°ë¼ ì¼ì • ë¹„ìœ¨ì˜ ìˆ˜ìˆ˜ë£Œê°€ 부가ë©ë‹ˆë‹¤.
@@ -19831,741 +19831,741 @@ unknown error found.
= 수수료율 : ^1567fe5%^000000
*/
MSG_ID_C95 = 0xc95,
-/*20170405 to 20180621
+/*20170405 to 20180704
실거래가 :
*/
MSG_ID_C96 = 0xc96,
-/*20170405 to 20180621
+/*20170405 to 20180704
※ ì•„ì´í…œ íŒë§¤ì‹œ, ì‹¤ê±°ëž˜ê°€ë§Œí¼ ì œë‹ˆë¥¼ íšë“합니다.
*/
MSG_ID_C97 = 0xc97,
-/*20170405 to 20180621
+/*20170405 to 20180704
※ ì•„ì´í…œ 구매시, ì‹¤ê±°ëž˜ê°€ë§Œí¼ ì œë‹ˆê°€ ì°¨ê°ë©ë‹ˆë‹¤.
*/
MSG_ID_C98 = 0xc98,
-/*20170405 to 20180621
+/*20170405 to 20180704
채팅방 개설
*/
MSG_ID_C99 = 0xc99,
#endif
#if PACKETVER >= 20170412
-/*20170412 to 20180621
+/*20170412 to 20180704
해당 ìºë¦­í„°ëŠ” íŒŒí‹°ê°€ìž…ì´ ê°€ëŠ¥í•˜ì§€ ì•Šì€ ë ˆë²¨ìž…ë‹ˆë‹¤.
*/
MSG_ID_C9A = 0xc9a,
-/*20170412 to 20180621
+/*20170412 to 20180704
'%lld'ì˜ ìž¡ê²½í—˜ì¹˜ë¥¼
*/
MSG_ID_C9B = 0xc9b,
-/*20170412 to 20180621
+/*20170412 to 20180704
잡경험치 %lld ì–»ìŒ
*/
MSG_ID_C9C = 0xc9c,
#endif
#if PACKETVER >= 20170419
-/*20170419 to 20180621
+/*20170419 to 20180704
현재위치(대로)ì—는 ë…¸ì ì„ 개설할 수 없습니다.
*/
MSG_ID_C9D = 0xc9d,
#endif
#if PACKETVER >= 20170426
-/*20170426 to 20180621
+/*20170426 to 20180704
초 후 가능합니다.
*/
MSG_ID_C9E = 0xc9e,
#endif
#if PACKETVER >= 20170517
-/*20170517 to 20180621
+/*20170517 to 20180704
파티ì›
*/
MSG_ID_C9F = 0xc9f,
-/*20170517 to 20180621
+/*20170517 to 20180704
SNS 전송실패(%d)
*/
MSG_ID_CA0 = 0xca0,
-/*20170517 to 20180621
+/*20170517 to 20180704
SNS 서버 연결실패
*/
MSG_ID_CA1 = 0xca1,
-/*20170517 to 20180621
+/*20170517 to 20180704
SNS ë¡œê·¸ì¸ í›„ 사용 가능합니다.
*/
MSG_ID_CA2 = 0xca2,
-/*20170517 to 20180621
+/*20170517 to 20180704
ì ‘ì† í•  수 있는 주소가 존재하지 않습니다.
*/
MSG_ID_CA3 = 0xca3,
#endif
#if PACKETVER >= 20170524
-/*20170524 to 20180621
+/*20170524 to 20180704
ë¯¸ë‹ˆíŒŒí‹°ì°½ì´ ê²¹ì³ì ¸ 있어 사용하실 수 없습니다.
*/
MSG_ID_CA4 = 0xca4,
#endif
#if PACKETVER >= 20170531
-/*20170531 to 20180621
+/*20170531 to 20180704
ë‚˜ì˜ íŒë§¤ë…¸ì 
*/
MSG_ID_CA5 = 0xca5,
#endif
#if PACKETVER >= 20170614
-/*20170614 to 20180621
+/*20170614 to 20180704
BOX
*/
MSG_ID_CA6 = 0xca6,
-/*20170614 to 20180621
+/*20170614 to 20180704
íŒë°•ìŠ¤
*/
MSG_ID_CA7 = 0xca7,
#endif
#if PACKETVER >= 20170621
-/*20170621 to 20180621
+/*20170621 to 20180704
íŠ¸ìœ—ì„ ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CA8 = 0xca8,
#endif
#if PACKETVER >= 20170628
-/*20170628 to 20180621
+/*20170628 to 20180704
다시하기
*/
MSG_ID_CA9 = 0xca9,
/*20170628 to 20170809
제련재료가 변경ë˜ì–´ 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20170816 to 20180621
+20170816 to 20180704
다시하기가 비활성화ë˜ì—ˆìŠµë‹ˆë‹¤. 제련 재료를 다시 ì„ íƒí•´ì£¼ì„¸ìš”.
*/
MSG_ID_CAA = 0xcaa,
-/*20170628 to 20180621
+/*20170628 to 20180704
제련ì„ì´ ë¶€ì¡±í•˜ì—¬ 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAB = 0xcab,
-/*20170628 to 20180621
+/*20170628 to 20180704
제니가 부족하여 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAC = 0xcac,
-/*20170628 to 20180621
+/*20170628 to 20180704
대장장ì´ì˜ ì¶•ë³µì´ ë¶€ì¡±í•˜ì—¬ 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAD = 0xcad,
-/*20170628 to 20180621
+/*20170628 to 20180704
ì•„ì´í…œì´ 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAE = 0xcae,
-/*20170628 to 20180621
+/*20170628 to 20180704
모든 스테ì´í„°ìŠ¤ê°€ ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAF = 0xcaf,
-/*20170628 to 20180621
+/*20170628 to 20180704
모든 스테ì´í„°ìŠ¤ ê°ì†Œ 효과가 í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CB0 = 0xcb0,
-/*20170628 to 20180621
+/*20170628 to 20180704
OTP 비밀번호는 8ìžë¦¬ 입니다.
*/
MSG_ID_CB1 = 0xcb1,
#endif
#if PACKETVER >= 20170705
-/*20170705 to 20180621
+/*20170705 to 20180704
통합계정
*/
MSG_ID_CB2 = 0xcb2,
-/*20170705 to 20180621
+/*20170705 to 20180704
ë¼ê·¸ë‚˜ë¡œí¬
*/
MSG_ID_CB3 = 0xcb3,
-/*20170705 to 20180621
+/*20170705 to 20180704
서비스 ì ê²€ 중입니다.
*/
MSG_ID_CB4 = 0xcb4,
-/*20170705 to 20180621
+/*20170705 to 20180704
검색어를 입력해주세요
*/
MSG_ID_CB5 = 0xcb5,
-/*20170705 to 20180621
+/*20170705 to 20180704
MOTP
*/
MSG_ID_CB6 = 0xcb6,
-/*20170705 to 20180621
+/*20170705 to 20180704
ì¸ì¦ë²ˆí˜¸
Identification number.
*/
MSG_ID_CB7 = 0xcb7,
-/*20170705 to 20180621
+/*20170705 to 20180704
휴대í°ì— ë‹¤ìš´ë°›ì€ GNJOY MOTP를 실행하여 ì¸ì¦ë²ˆí˜¸ë¥¼ 입력해 주세요.
*/
MSG_ID_CB8 = 0xcb8,
#endif
#if PACKETVER >= 20170712
-/*20170712 to 20180621
+/*20170712 to 20180704
íŒŒí‹°ìž¥ì„ ìœ„ìž„í•  파티ì›ì´ 존재하지 않습니다. 파티를 해산하시겠습니까?
*/
MSG_ID_CB9 = 0xcb9,
#endif
#if PACKETVER >= 20170719
-/*20170719 to 20180621
+/*20170719 to 20180704
- 만18세ì´ìƒ
*/
MSG_ID_CBA = 0xcba,
-/*20170719 to 20180621
+/*20170719 to 20180704
- 유료서버
*/
MSG_ID_CBB = 0xcbb,
-/*20170719 to 20180621
+/*20170719 to 20180704
- 무료서버
*/
MSG_ID_CBC = 0xcbc,
-/*20170719 to 20180621
+/*20170719 to 20180704
쾌ì 
*/
MSG_ID_CBD = 0xcbd,
-/*20170719 to 20180621
+/*20170719 to 20180704
보통
Normal
*/
MSG_ID_CBE = 0xcbe,
-/*20170719 to 20180621
+/*20170719 to 20180704
혼잡
*/
MSG_ID_CBF = 0xcbf,
-/*20170719 to 20180621
+/*20170719 to 20180704
í¬í™”
*/
MSG_ID_CC0 = 0xcc0,
-/*20170719 to 20180621
+/*20170719 to 20180704
map
*/
MSG_ID_CC1 = 0xcc1,
-/*20170719 to 20180621
+/*20170719 to 20180704
월드창고는 ì¸ë²¤í† ë¦¬ ì•„ì´í…œë§Œ 입출고 í•  수 있습니다.
*/
MSG_ID_CC2 = 0xcc2,
-/*20170719 to 20180621
+/*20170719 to 20180704
월드창고ì—는 íŽ«ì•Œì„ ìž…ê³ í•  수 없습니다.
*/
MSG_ID_CC3 = 0xcc3,
-/*20170719 to 20180621
+/*20170719 to 20180704
월드창고ì—는 제작아ì´í…œì„ ìž…ê³ í•  수 없습니다.
*/
MSG_ID_CC4 = 0xcc4,
-/*20170719 to 20180621
+/*20170719 to 20180704
%s ì—서는 출고 í•  수 없는 ì•„ì´í…œìž…니다.
*/
MSG_ID_CC5 = 0xcc5,
#endif
#if PACKETVER >= 20170726
-/*20170726 to 20180621
+/*20170726 to 20180704
ë˜ì „ 파괴
*/
MSG_ID_CC6 = 0xcc6,
-/*20170726 to 20180621
+/*20170726 to 20180704
[%s] ë‹˜ì´ ì œë ¨ì„ ì„±ê³µí•˜ì—¬, [+%d %s] ì•„ì´í…œì„ íšë“하였습니다.
*/
MSG_ID_CC7 = 0xcc7,
-/*20170726 to 20180621
+/*20170726 to 20180704
[%s] ë‹˜ì´ [+%d %s] ì•„ì´í…œì˜ ì œë ¨ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
*/
MSG_ID_CC8 = 0xcc8,
-/*20170726 to 20180621
+/*20170726 to 20180704
íŒŒí‹°ìž¥ì„ ìœ„ìž„í•œ ì´í›„ì— íƒˆí‡´í•  수 있습니다.
*/
MSG_ID_CC9 = 0xcc9,
#endif
#if PACKETVER >= 20170809
-/*20170809 to 20180621
+/*20170809 to 20180704
오름
*/
MSG_ID_CCA = 0xcca,
-/*20170809 to 20180621
+/*20170809 to 20180704
내림
*/
MSG_ID_CCB = 0xccb,
-/*20170809 to 20180621
+/*20170809 to 20180704
기본
*/
MSG_ID_CCC = 0xccc,
-/*20170809 to 20180621
+/*20170809 to 20180704
ë³€ì¡°ëœ íŒŒì¼ì´ 발견ë˜ì—ˆìŠµë‹ˆë‹¤. ê²Œìž„ì„ ë‹¤ì‹œ 실행시켜주세요.
*/
MSG_ID_CCD = 0xccd,
#endif
#if PACKETVER >= 20170823
-/*20170823 to 20180621
+/*20170823 to 20180704
%s ì€(는) ì´ë§µì—ì„œ ì´ë™ì´ ì œí•œëœ ì•„ì´í…œìž…니다.
*/
MSG_ID_CCE = 0xcce,
#endif
#if PACKETVER >= 20170906
-/*20170906 to 20180621
+/*20170906 to 20180704
스스로
먹ì´ë¨¹ê¸°
*/
MSG_ID_CCF = 0xccf,
-/*20170906 to 20180621
+/*20170906 to 20180704
ë¡œë±ìŠ¤ ìž‘ì„±ì°½ì´ ì—´ë ¤ìžˆëŠ” ë™ì•ˆ 호문í´ë£¨ìŠ¤ê°€ 먹ì´ë¥¼ 먹지 못합니다.
*/
MSG_ID_CD0 = 0xcd0,
-/*20170906 to 20180621
+/*20170906 to 20180704
호문í´ë£¨ìŠ¤ê°€ 먹ì´ë¥¼ 먹었습니다. '%s' 잔여량 %dê°œ
*/
MSG_ID_CD1 = 0xcd1,
-/*20170906 to 20180621
+/*20170906 to 20180704
호문í´ë£¨ìŠ¤ 스스로 ë¨¹ì´ ë¨¹ê¸° 활성화 On
*/
MSG_ID_CD2 = 0xcd2,
-/*20170906 to 20180621
+/*20170906 to 20180704
호문í´ë£¨ìŠ¤ 스스로 ë¨¹ì´ ë¨¹ê¸° 활성화 Off
*/
MSG_ID_CD3 = 0xcd3,
-/*20170906 to 20180621
+/*20170906 to 20180704
호문í´ë£¨ìŠ¤ëŠ” 주ì¸ì´ íšë“하는 경험치ì˜
10%만í¼ì„ ìžì‹ ì˜ 경험치로 분배 받습니다.
*/
MSG_ID_CD4 = 0xcd4,
-/*20170906 to 20180621
+/*20170906 to 20180704
확률 : %d%%
*/
MSG_ID_CD5 = 0xcd5,
-/*20170906 to 20180621
+/*20170906 to 20180704
해당 대ìƒì€ í˜¸ë¬¸ì˜ ê³µê²©ëŒ€ìƒì´ 아닙니다. 'Alt + ìš°í´ë¦­'ì„ í†µí•´ 호문í´ë£¨ìŠ¤ì˜ 공격대ìƒì„ 지정해주세요.
*/
MSG_ID_CD6 = 0xcd6,
-/*20170906 to 20180621
+/*20170906 to 20180704
í˜¸ë¬¸ì˜ ê³µê²©ëŒ€ìƒì´ 존재하지 않습니다. 'Alt + ìš°í´ë¦­'ì„ í†µí•´ 호문í´ë£¨ìŠ¤ì˜ 공격대ìƒì„ 지정해주세요.
*/
MSG_ID_CD7 = 0xcd7,
#endif
#if PACKETVER >= 20170913
-/*20170913 to 20180621
+/*20170913 to 20180704
íŒë§¤ 리스트
*/
MSG_ID_CD8 = 0xcd8,
-/*20170913 to 20180621
+/*20170913 to 20180704
구입 리스트
*/
MSG_ID_CD9 = 0xcd9,
-/*20170913 to 20180621
+/*20170913 to 20180704
신규
New
*/
MSG_ID_CDA = 0xcda,
-/*20170913 to 20180621
+/*20170913 to 20180704
ì¸ê¸°
Headgears
*/
MSG_ID_CDB = 0xcdb,
-/*20170913 to 20180621
+/*20170913 to 20180704
한정
Limited
*/
MSG_ID_CDC = 0xcdc,
-/*20170913 to 20180621
+/*20170913 to 20180704
임대장비
Rental Items
*/
MSG_ID_CDD = 0xcdd,
-/*20170913 to 20180621
+/*20170913 to 20180704
ì˜êµ¬ìž¥ë¹„
Equipments
*/
MSG_ID_CDE = 0xcde,
-/*20170913 to 20180621
+/*20170913 to 20180704
버프
Scrolls
*/
MSG_ID_CDF = 0xcdf,
-/*20170913 to 20180621
+/*20170913 to 20180704
회복
Consumables
*/
MSG_ID_CE0 = 0xce0,
-/*20170913 to 20180621
+/*20170913 to 20180704
기타
Other
*/
MSG_ID_CE1 = 0xce1,
-/*20170913 to 20180621
+/*20170913 to 20180704
특가
Special
*/
MSG_ID_CE2 = 0xce2,
-/*20170913 to 20180621
+/*20170913 to 20180704
충전하기
*/
MSG_ID_CE3 = 0xce3,
-/*20170913 to 20180621
+/*20170913 to 20180704
구입하기
*/
MSG_ID_CE4 = 0xce4,
/*20170913 to 20171206
https://payment.gnjoy.com/bill/login.grv
-20171213 to 20180621
+20171213 to 20180704
http://member.gnjoy.com/user/pay/chargelist.asp
*/
MSG_ID_CE5 = 0xce5,
-/*20170913 to 20180621
+/*20170913 to 20180704
ì•„ì´í…œ 검색
*/
MSG_ID_CE6 = 0xce6,
-/*20170913 to 20180621
+/*20170913 to 20180704
무료ìºì‹œ
*/
MSG_ID_CE7 = 0xce7,
-/*20170913 to 20180621
+/*20170913 to 20180704
무료ìºì‹œ 사용
*/
MSG_ID_CE8 = 0xce8,
-/*20170913 to 20180621
+/*20170913 to 20180704
소지ìºì‹œ
*/
MSG_ID_CE9 = 0xce9,
-/*20170913 to 20180621
+/*20170913 to 20180704
수량갱신
*/
MSG_ID_CEA = 0xcea,
-/*20170913 to 20180621
+/*20170913 to 20180704
성제(여)
*/
MSG_ID_CEB = 0xceb,
-/*20170913 to 20180621
+/*20170913 to 20180704
소울리í¼(ì—¬)
*/
MSG_ID_CEC = 0xcec,
-/*20170913 to 20180621
+/*20170913 to 20180704
성제(남)
*/
MSG_ID_CED = 0xced,
-/*20170913 to 20180621
+/*20170913 to 20180704
소울리í¼(남)
*/
MSG_ID_CEE = 0xcee,
#endif
#if PACKETVER >= 20170920
-/*20170920 to 20180621
+/*20170920 to 20180704
무게가 %d í¼ì„¼íŠ¸ ì´ìƒì¼ë•ŒëŠ” HP SPê°€ ìžì—°ì ìœ¼ë¡œ íšŒë³µì´ ë˜ì§€ 않습니다.
*/
MSG_ID_CEF = 0xcef,
-/*20170920 to 20180621
+/*20170920 to 20180704
í•œ ë²ˆì— êµ¬ìž… 가능한 ì•„ì´í…œì˜ 가짓수는 8개입니다.
*/
MSG_ID_CF0 = 0xcf0,
-/*20170920 to 20180621
+/*20170920 to 20180704
http://gift.zhaouc.com/#/index
http://gift.zhaouc.com/
*/
MSG_ID_CF1 = 0xcf1,
#endif
#if PACKETVER >= 20170927
-/*20170927 to 20180621
+/*20170927 to 20180704
UNKNOWN ERROR:%d
*/
MSG_ID_CF2 = 0xcf2,
-/*20170927 to 20180621
+/*20170927 to 20180704
NOT USER
*/
MSG_ID_CF3 = 0xcf3,
-/*20170927 to 20180621
+/*20170927 to 20180704
THIS ACCOUNT ID IS BLOCKED
*/
MSG_ID_CF4 = 0xcf4,
-/*20170927 to 20180621
+/*20170927 to 20180704
COUNTRY REJECT (OR NOT AVALIABLE USER )
*/
MSG_ID_CF5 = 0xcf5,
-/*20170927 to 20180621
+/*20170927 to 20180704
NOT MATCH PASSWORD
*/
MSG_ID_CF6 = 0xcf6,
-/*20170927 to 20180621
+/*20170927 to 20180704
NOT EMAIL CERT
*/
MSG_ID_CF7 = 0xcf7,
-/*20170927 to 20180621
+/*20170927 to 20180704
PAYPAL BLOCK
*/
MSG_ID_CF8 = 0xcf8,
-/*20170927 to 20180621
+/*20170927 to 20180704
COUNTRY REJECT
*/
MSG_ID_CF9 = 0xcf9,
-/*20170927 to 20180621
+/*20170927 to 20180704
PAYPAL BLOCK
*/
MSG_ID_CFA = 0xcfa,
-/*20170927 to 20180621
+/*20170927 to 20180704
WEB BLOCK
*/
MSG_ID_CFB = 0xcfb,
-/*20170927 to 20180621
+/*20170927 to 20180704
AGE LIMIT USER
*/
MSG_ID_CFC = 0xcfc,
-/*20170927 to 20180621
+/*20170927 to 20180704
PASSWORD HAS NOT BEEN CHANGED FOR MORE THAN 90DAYS
*/
MSG_ID_CFD = 0xcfd,
-/*20170927 to 20180621
+/*20170927 to 20180704
INPUT DATA ERROR
*/
MSG_ID_CFE = 0xcfe,
-/*20170927 to 20180621
+/*20170927 to 20180704
ERROR DATABASE
*/
MSG_ID_CFF = 0xcff,
-/*20170927 to 20180621
+/*20170927 to 20180704
ERROR SYSTEM
*/
MSG_ID_D00 = 0xd00,
/*20170927 to 20171025
%s 지불
-20171101 to 20180621
+20171101 to 20180704
%s 소모
*/
MSG_ID_D01 = 0xd01,
-/*20170927 to 20180621
+/*20170927 to 20180704
비용지불
*/
MSG_ID_D02 = 0xd02,
-/*20170927 to 20180621
+/*20170927 to 20180704
출발 가능한 ë§µì´ ì•„ë‹™ë‹ˆë‹¤.
*/
MSG_ID_D03 = 0xd03,
-/*20170927 to 20180621
+/*20170927 to 20180704
ì´ë™ 불가능한 맵입니다
*/
MSG_ID_D04 = 0xd04,
-/*20170927 to 20180621
+/*20170927 to 20180704
ì•„ì´í…œì´ 부족합니다.
*/
MSG_ID_D05 = 0xd05,
-/*20170927 to 20180621
+/*20170927 to 20180704
줄 바꿈 ì—†ì´ í•œ 줄로 입력해주세요.
*/
MSG_ID_D06 = 0xd06,
#endif
#if PACKETVER >= 20171011
-/*20171011 to 20180621
+/*20171011 to 20180704
불량 단어가 í¬í•¨ëœ ì´ë¦„ì€ ë“±ë¡í•  수 없습니다.
*/
MSG_ID_D07 = 0xd07,
#endif
#if PACKETVER >= 20171018
-/*20171018 to 20180621
+/*20171018 to 20180704
íšŒì› ê°€ìž…ì„ ìœ„í•´ ê³µì‹ í™ˆíŽ˜ì´ì§€ë¡œ ì´ë™ë©ë‹ˆë‹¤.
*/
MSG_ID_D08 = 0xd08,
#endif
#if PACKETVER >= 20171025
-/*20171025 to 20180621
+/*20171025 to 20180704
TokenAgency 서버 연결 실패
*/
MSG_ID_D09 = 0xd09,
-/*20171025 to 20180621
+/*20171025 to 20180704
과금정보
*/
MSG_ID_D0A = 0xd0a,
-/*20171025 to 20180621
+/*20171025 to 20180704
삭제예약
*/
MSG_ID_D0B = 0xd0b,
-/*20171025 to 20180621
+/*20171025 to 20180704
예약취소
*/
MSG_ID_D0C = 0xd0c,
-/*20171025 to 20180621
+/*20171025 to 20180704
게임시작
*/
MSG_ID_D0D = 0xd0d,
-/*20171025 to 20180621
+/*20171025 to 20180704
삭제
*/
MSG_ID_D0E = 0xd0e,
-/*20171025 to 20180621
+/*20171025 to 20180704
Character List
*/
MSG_ID_D0F = 0xd0f,
-/*20171025 to 20180621
+/*20171025 to 20180704
공지
Notice
*/
MSG_ID_D10 = 0xd10,
-/*20171025 to 20180621
+/*20171025 to 20180704
ìƒì„±
*/
MSG_ID_D11 = 0xd11,
-/*20171025 to 20180621
+/*20171025 to 20180704
Hair Style
*/
MSG_ID_D12 = 0xd12,
-/*20171025 to 20180621
+/*20171025 to 20180704
Hair Color
*/
MSG_ID_D13 = 0xd13,
-/*20171025 to 20180621
+/*20171025 to 20180704
중복확ì¸
*/
MSG_ID_D14 = 0xd14,
-/*20171025 to 20180621
+/*20171025 to 20180704
%d시 %d분 %d초
*/
MSG_ID_D15 = 0xd15,
-/*20171025 to 20180621
+/*20171025 to 20180704
MOTP ìž…ë ¥ ì‹œê°„ì´ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤. 처ìŒë¶€í„° 다시 로그ì¸í•´ì£¼ì‹­ì‹œì˜¤.
*/
MSG_ID_D16 = 0xd16,
-/*20171025 to 20180621
+/*20171025 to 20180704
뒤로가기
*/
MSG_ID_D17 = 0xd17,
#endif
#if PACKETVER >= 20171101
-/*20171101 to 20180621
+/*20171101 to 20180704
ì•„ì´í…œì„ 사용할 수 없습니다.
*/
MSG_ID_D18 = 0xd18,
-/*20171101 to 20180621
+/*20171101 to 20180704
ë™ì¼í•œ 맵으로 ì´ë™í•  수 없습니다.
*/
MSG_ID_D19 = 0xd19,
-/*20171101 to 20180621
+/*20171101 to 20180704
사ë§ì‹œ ì´ë™ì´ 불가능합니다.
*/
MSG_ID_D1A = 0xd1a,
-/*20171101 to 20180621
+/*20171101 to 20180704
ìºë¦­í„° ìƒì„±
*/
MSG_ID_D1B = 0xd1b,
#endif
#if PACKETVER >= 20171108
-/*20171108 to 20180621
+/*20171108 to 20180704
모험가 중개소 등ë¡
*/
MSG_ID_D1C = 0xd1c,
-/*20171108 to 20180621
+/*20171108 to 20180704
모집 중단
*/
MSG_ID_D1D = 0xd1d,
-/*20171108 to 20180621
+/*20171108 to 20180704
모험가 중개소 설정
*/
MSG_ID_D1E = 0xd1e,
-/*20171108 to 20180621
+/*20171108 to 20180704
전 지역
*/
MSG_ID_D1F = 0xd1f,
-/*20171108 to 20180621
+/*20171108 to 20180704
ì§ì ‘기재
*/
MSG_ID_D20 = 0xd20,
-/*20171108 to 20180621
+/*20171108 to 20180704
검사계열
*/
MSG_ID_D21 = 0xd21,
-/*20171108 to 20180621
+/*20171108 to 20180704
법사계열
*/
MSG_ID_D22 = 0xd22,
-/*20171108 to 20180621
+/*20171108 to 20180704
ê¶ìˆ˜ê³„ì—´
*/
MSG_ID_D23 = 0xd23,
-/*20171108 to 20180621
+/*20171108 to 20180704
복사계열
*/
MSG_ID_D24 = 0xd24,
-/*20171108 to 20180621
+/*20171108 to 20180704
ìƒì¸ê³„ì—´
*/
MSG_ID_D25 = 0xd25,
-/*20171108 to 20180621
+/*20171108 to 20180704
ë„둑계열
*/
MSG_ID_D26 = 0xd26,
-/*20171108 to 20180621
+/*20171108 to 20180704
태권계열
*/
MSG_ID_D27 = 0xd27,
-/*20171108 to 20180621
+/*20171108 to 20180704
ë‹Œìžê³„ì—´
*/
MSG_ID_D28 = 0xd28,
-/*20171108 to 20180621
+/*20171108 to 20180704
건슬ë§ê±°ê³„ì—´
*/
MSG_ID_D29 = 0xd29,
-/*20171108 to 20180621
+/*20171108 to 20180704
ë„람족계열
*/
MSG_ID_D2A = 0xd2a,
-/*20171108 to 20180621
+/*20171108 to 20180704
지역명
*/
MSG_ID_D2B = 0xd2b,
-/*20171108 to 20180621
+/*20171108 to 20180704
지역명 검색
*/
MSG_ID_D2C = 0xd2c,
-/*20171108 to 20180621
+/*20171108 to 20180704
가입 요청하기
*/
MSG_ID_D2D = 0xd2d,
-/*20171108 to 20180621
+/*20171108 to 20180704
신고하기
*/
MSG_ID_D2E = 0xd2e,
-/*20171108 to 20180621
+/*20171108 to 20180704
파티 모집 중단
*/
MSG_ID_D2F = 0xd2f,
-/*20171108 to 20180621
+/*20171108 to 20180704
ì§€ì—­ëª…ì„ ìž…ë ¥í•´ì£¼ì„¸ìš”.
*/
MSG_ID_D30 = 0xd30,
-/*20171108 to 20180621
+/*20171108 to 20180704
지역
*/
MSG_ID_D31 = 0xd31,
-/*20171108 to 20180621
+/*20171108 to 20180704
ì „ ì§ì—…
*/
MSG_ID_D32 = 0xd32,
-/*20171108 to 20180621
+/*20171108 to 20180704
로그ì¸
*/
MSG_ID_D33 = 0xd33,
-/*20171108 to 20180621
+/*20171108 to 20180704
계정
*/
MSG_ID_D34 = 0xd34,
-/*20171108 to 20180621
+/*20171108 to 20180704
종료
Exit
*/
MSG_ID_D35 = 0xd35,
-/*20171108 to 20180621
+/*20171108 to 20180704
ì‹ ì²­
*/
MSG_ID_D36 = 0xd36,
-/*20171108 to 20180621
+/*20171108 to 20180704
ì ‘ì†
*/
MSG_ID_D37 = 0xd37,
-/*20171108 to 20180621
+/*20171108 to 20180704
확ì¸
*/
MSG_ID_D38 = 0xd38,
-/*20171108 to 20180621
+/*20171108 to 20180704
휴대í°ì— ë‹¤ìš´ë°›ì€ GNJOY MOTP를
*/
MSG_ID_D39 = 0xd39,
-/*20171108 to 20180621
+/*20171108 to 20180704
실행하여 ì¸ì¦ë²ˆí˜¸ë¥¼ 입력해 주세요.
*/
MSG_ID_D3A = 0xd3a,
-/*20171108 to 20180621
+/*20171108 to 20180704
NPCê°€ 있는 ë§µì˜ ëžœë¤ ì¢Œí‘œë¡œ ì´ë™ ë©ë‹ˆë‹¤.
*/
MSG_ID_D3B = 0xd3b,
-/*20171108 to 20180621
+/*20171108 to 20180704
태권
*/
MSG_ID_D3C = 0xd3c,
@@ -20573,352 +20573,352 @@ NPCê°€ 있는 ë§µì˜ ëžœë¤ ì¢Œí‘œë¡œ ì´ë™ ë©ë‹ˆë‹¤.
#if PACKETVER >= 20171115
/*20171115 to 20171115
ë‹˜ì´ ì°¨ë‹¨ ìƒíƒœë¡œ 설정ë˜ì—ˆìŠµë‹ˆë‹¤.
-20171122 to 20180621
+20171122 to 20180704
ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ìƒíƒœ
*/
MSG_ID_D3D = 0xd3d,
/*20171115 to 20171115
ë‹˜ì„ ì°¨ë‹¨ ìƒíƒœë¡œ ì„¤ì •í•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
-20171122 to 20180621
+20171122 to 20180704
ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ 요청 실패
*/
MSG_ID_D3E = 0xd3e,
/*20171115 to 20171115
ë‹˜ì„ ì°¨ë‹¨ ìƒíƒœë¡œ ì„¤ì •í•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.(ì¸ì› 초과)
-20171122 to 20180621
+20171122 to 20180704
ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ 요청실패 (ì¸ì›ì´ˆê³¼)
*/
MSG_ID_D3F = 0xd3f,
/*20171115 to 20171115
ë‹˜ì´ ì°¨ë‹¨ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
-20171122 to 20180621
+20171122 to 20180704
ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ìƒíƒœ
*/
MSG_ID_D40 = 0xd40,
/*20171115 to 20171115
ë‹˜ì„ ì°¨ë‹¨ í•´ì œí•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
-20171122 to 20180621
+20171122 to 20180704
ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ 요청실패
*/
MSG_ID_D41 = 0xd41,
/*20171115 to 20171115
ë‹˜ì„ ì°¨ë‹¨ í•´ì œí•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.(ì¸ì› 초과)
-20171122 to 20180621
+20171122 to 20180704
ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ 요청실패 (ì¸ì›ì´ˆê³¼)
*/
MSG_ID_D42 = 0xd42,
-/*20171115 to 20180621
+/*20171115 to 20180704
차단 리스트가 없습니다
*/
MSG_ID_D43 = 0xd43,
-/*20171115 to 20180621
+/*20171115 to 20180704
-차단 리스트-
*/
MSG_ID_D44 = 0xd44,
-/*20171115 to 20180621
+/*20171115 to 20180704
진행중
Act
*/
MSG_ID_D45 = 0xd45,
-/*20171115 to 20180621
+/*20171115 to 20180704
추천
Rec
*/
MSG_ID_D46 = 0xd46,
-/*20171115 to 20180621
+/*20171115 to 20180704
보류중
Pen
*/
MSG_ID_D47 = 0xd47,
-/*20171115 to 20180621
+/*20171115 to 20180704
QUEST
*/
MSG_ID_D48 = 0xd48,
-/*20171115 to 20180621
+/*20171115 to 20180704
ë‚´ìš©
For
*/
MSG_ID_D49 = 0xd49,
-/*20171115 to 20180621
+/*20171115 to 20180704
몬스터
*/
MSG_ID_D4A = 0xd4a,
-/*20171115 to 20180621
+/*20171115 to 20180704
ë³´ìƒ
*/
MSG_ID_D4B = 0xd4b,
-/*20171115 to 20180621
+/*20171115 to 20180704
EXP
*/
MSG_ID_D4C = 0xd4c,
-/*20171115 to 20180621
+/*20171115 to 20180704
JEXP
*/
MSG_ID_D4D = 0xd4d,
-/*20171115 to 20180621
+/*20171115 to 20180704
ì•„ì´í…œ
Item
*/
MSG_ID_D4E = 0xd4e,
-/*20171115 to 20180621
+/*20171115 to 20180704
진행/보류
*/
MSG_ID_D4F = 0xd4f,
-/*20171115 to 20180621
+/*20171115 to 20180704
하단으로 ì´ë™
*/
MSG_ID_D50 = 0xd50,
-/*20171115 to 20180621
+/*20171115 to 20180704
간편 í€˜ìŠ¤íŠ¸ì°½ì— í‘œì‹œ
*/
MSG_ID_D51 = 0xd51,
-/*20171115 to 20180621
+/*20171115 to 20180704
입력시간
*/
MSG_ID_D52 = 0xd52,
#endif
#if PACKETVER >= 20171122
-/*20171122 to 20180621
+/*20171122 to 20180704
ì•„ì´ë”” 저장
*/
MSG_ID_D53 = 0xd53,
-/*20171122 to 20180621
+/*20171122 to 20180704
비밀번호
Password
*/
MSG_ID_D54 = 0xd54,
-/*20171122 to 20180621
+/*20171122 to 20180704
ì•„ì´ë””
*/
MSG_ID_D55 = 0xd55,
-/*20171122 to 20180621
+/*20171122 to 20180704
회ì›ê°€ìž…
*/
MSG_ID_D56 = 0xd56,
-/*20171122 to 20180621
+/*20171122 to 20180704
노비스계열
*/
MSG_ID_D57 = 0xd57,
-/*20171122 to 20180621
+/*20171122 to 20180704
슈í¼ë…¸ë¹„스계열
*/
MSG_ID_D58 = 0xd58,
-/*20171122 to 20180621
+/*20171122 to 20180704
모험가 중개소 등ë¡ì— 실패했습니다.
*/
MSG_ID_D59 = 0xd59,
-/*20171122 to 20180621
+/*20171122 to 20180704
모험가 ì¤‘ê°œì†Œì— ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D5A = 0xd5a,
/*20171122 to 20180328
ì§ì—…ì„ í•œ ê°œ ì´ìƒ ì„ íƒí•´ì£¼ì„¸ìš”.
-20180404 to 20180621
+20180404 to 20180704
ëª¨ì§‘ì„ í¬ë§í•˜ëŠ” 파티ì›ì˜ ì§ì—…ì„ í•œ ê°œ ì´ìƒ ì„ íƒí•´ 주세요.
*/
MSG_ID_D5B = 0xd5b,
-/*20171122 to 20180621
+/*20171122 to 20180704
ì§€ì—­ëª…ì„ ë‘ ê¸€ìž ì´ìƒ 입력해주세요.
*/
MSG_ID_D5C = 0xd5c,
-/*20171122 to 20180621
+/*20171122 to 20180704
%.1f%% (+ %s서버 %.1f%%)
*/
MSG_ID_D5D = 0xd5d,
-/*20171122 to 20180621
+/*20171122 to 20180704
/ex (ìºë¦­í„°ì´ë¦„) or /차단 (ìºë¦­í„°ì´ë¦„) : 해당 ìºë¦­í„°ì— 대해 전체채팅 ë° ê·“ë§ ì°¨ë‹¨
*/
MSG_ID_D5E = 0xd5e,
-/*20171122 to 20180621
+/*20171122 to 20180704
/in (ìºë¦­í„°ì´ë¦„) or /í•´ì œ (ìºë¦­í„°ì´ë¦„) : 해당 ìºë¦­í„°ì— 대해 전체채팅 ë° ê·“ë§ í—ˆìš©
*/
MSG_ID_D5F = 0xd5f,
-/*20171122 to 20180621
+/*20171122 to 20180704
/ex or /차단 : 전체채팅 ë° ê·“ë§ ì°¨ë‹¨ ìºë¦­í„° 리스트
*/
MSG_ID_D60 = 0xd60,
-/*20171122 to 20180621
+/*20171122 to 20180704
/exall or /차단전부 : 모ë‘ì—게 전체채팅 ë° ê·“ë§ ì°¨ë‹¨
*/
MSG_ID_D61 = 0xd61,
-/*20171122 to 20180621
+/*20171122 to 20180704
/inall or /해제전부 : 모ë‘ì—게 전체채팅 ë° ê·“ë§ í—ˆìš©
*/
MSG_ID_D62 = 0xd62,
-/*20171122 to 20180621
+/*20171122 to 20180704
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ìƒíƒœ
*/
MSG_ID_D63 = 0xd63,
-/*20171122 to 20180621
+/*20171122 to 20180704
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ìš”ì²­ 실패
*/
MSG_ID_D64 = 0xd64,
-/*20171122 to 20180621
+/*20171122 to 20180704
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ìƒíƒœ
*/
MSG_ID_D65 = 0xd65,
-/*20171122 to 20180621
+/*20171122 to 20180704
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ìš”ì²­ 실패
*/
MSG_ID_D66 = 0xd66,
-/*20171122 to 20180621
+/*20171122 to 20180704
오프ë‹
*/
MSG_ID_D67 = 0xd67,
#endif
#if PACKETVER >= 20171206
-/*20171206 to 20180621
+/*20171206 to 20180704
ë¡œê·¸ì¸ í™”ë©´ìœ¼ë¡œ ëŒì•„가시겠습니까?
*/
MSG_ID_D68 = 0xd68,
-/*20171206 to 20180621
+/*20171206 to 20180704
힘과 ê³µê²©ë ¥ì´ ê°•í•´ì¡ŒìŠµë‹ˆë‹¤.
*/
MSG_ID_D69 = 0xd69,
-/*20171206 to 20180621
+/*20171206 to 20180704
힘, 지능, ì†ìž¬ì£¼ ë° ëª…ì¤‘ë¥ ì´ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
*/
MSG_ID_D6A = 0xd6a,
-/*20171206 to 20180621
+/*20171206 to 20180704
ë°©ì–´ë ¥ ë° HPê°€ ì¦ê°€ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D6B = 0xd6b,
-/*20171206 to 20180621
+/*20171206 to 20180704
젤스타
*/
MSG_ID_D6C = 0xd6c,
-/*20171206 to 20180621
+/*20171206 to 20180704
계정버프
*/
MSG_ID_D6D = 0xd6d,
-/*20171206 to 20180621
+/*20171206 to 20180704
정액서비스
*/
MSG_ID_D6E = 0xd6e,
#endif
#if PACKETVER >= 20171213
-/*20171213 to 20180621
+/*20171213 to 20180704
현재 ì ‘ì†ì´ 지연ë˜ê³  있습니다. 순차ì ìœ¼ë¡œ ì ‘ì†ì´ 가능하니 ìž ì‹œ 후 ìž¬ì ‘ì† ë¶€íƒë“œë¦½ë‹ˆë‹¤.
*/
MSG_ID_D6F = 0xd6f,
-/*20171213 to 20180621
+/*20171213 to 20180704
현재 ì ‘ì†ì´ 지연ë˜ê³  있으니 ìž ì‹œ 후 ìž¬ì ‘ì† ë¶€íƒë“œë¦½ë‹ˆë‹¤.
*/
MSG_ID_D70 = 0xd70,
-/*20171213 to 20180621
+/*20171213 to 20180704
불량 단어가 í¬í•¨ëœ ì´ë¦„ì€ ê²€ìƒ‰í•  수 없습니다.
*/
MSG_ID_D71 = 0xd71,
-/*20171213 to 20180621
+/*20171213 to 20180704
파티 마스터가 ìš”ì²­ì„ ë°›ì„ ìˆ˜ 없는 ë§µì— ìžˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D72 = 0xd72,
-/*20171213 to 20180621
+/*20171213 to 20180704
파티를 ì°¾ì„ ìˆ˜ 없습니다.
*/
MSG_ID_D73 = 0xd73,
/*20171213 to 20180328
ë‹˜ì˜ íŒŒí‹°ìš”ì²­ìž…ë‹ˆë‹¤.
-20180404 to 20180621
+20180404 to 20180704
ë‹˜ì˜ íŒŒí‹° 가입 요청입니다.
*/
MSG_ID_D74 = 0xd74,
#endif
#if PACKETVER >= 20171220
-/*20171220 to 20180621
+/*20171220 to 20180704
http://ro.gnjoy.com
*/
MSG_ID_D75 = 0xd75,
-/*20171220 to 20180621
+/*20171220 to 20180704
â–²
*/
MSG_ID_D76 = 0xd76,
-/*20171220 to 20180621
+/*20171220 to 20180704
â–¼
*/
MSG_ID_D77 = 0xd77,
#endif
#if PACKETVER >= 20171227
-/*20171227 to 20180621
+/*20171227 to 20180704
ì´ë¯¸ 친구입니다
*/
MSG_ID_D78 = 0xd78,
-/*20171227 to 20180621
+/*20171227 to 20180704
ìƒëŒ€ë°©ì„ ì°¾ì„ ìˆ˜ 없습니다
*/
MSG_ID_D79 = 0xd79,
-/*20171227 to 20180621
+/*20171227 to 20180704
ì´ë¯¸ 다른 ìºë¦­í„°ê°€ 친구 ì‹ ì²­ 중입니다.
*/
MSG_ID_D7A = 0xd7a,
-/*20171227 to 20180621
+/*20171227 to 20180704
혼구슬 표시 ON
*/
MSG_ID_D7B = 0xd7b,
-/*20171227 to 20180621
+/*20171227 to 20180704
혼구슬 표시 OFF
*/
MSG_ID_D7C = 0xd7c,
#endif
#if PACKETVER >= 20180117
-/*20180117 to 20180621
+/*20180117 to 20180704
해당 ê³„ì •ì€ 2ì°¨ 비밀번호 오입력으로 ì¸í•´ 게임내 ì ‘ì†ì´ ì œí•œëœ ìƒíƒœìž…니다.
%02d시간 %02d분 í›„ì— ì ‘ì†ì œí•œì´ í•´ì œë˜ë©°, ì ‘ì†ì œí•œì˜ 해제는 홈페ì´ì§€ -> ê°œì¸ì •ë³´ë³€ê²½ -> 2ì°¨ 비밀번호 ì—ì„œ 본ì¸ì¸ì¦ 후 진행해주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_D7D = 0xd7d,
-/*20180117 to 20180621
+/*20180117 to 20180704
보안패스워드를 3회ì´ìƒ 틀리셨습니다. 계정 ë³´ì•ˆì„ ìœ„í•´ 24시간ë™ì•ˆ 게임내 ì ‘ì†ì´ 제한ë©ë‹ˆë‹¤.
ì ‘ì†ì œí•œì˜ 해제는 홈페ì´ì§€ -> ê°œì¸ì •ë³´ë³€ê²½ -> 2ì°¨ 비밀번호 ì—ì„œ 본ì¸ì¸ì¦ 후 진행해주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_D7E = 0xd7e,
-/*20180117 to 20180621
+/*20180117 to 20180704
ìš´ì˜ì§„
*/
MSG_ID_D7F = 0xd7f,
-/*20180117 to 20180621
+/*20180117 to 20180704
%dì¼ì°¨ ì¶œì„ ë³´ìƒì´ 지급ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D80 = 0xd80,
/*20180117 to 20180117
계정설정정보 ë°›ì•„ì˜¤ëŠ”ë° ì‹¤íŒ¨ 했습니다.( 재시ë„를 위해서는 재시작 해야 합니다. )
-20180124 to 20180621
+20180124 to 20180704
계정 설정 ë°ì´í„°ë¥¼ 불러오는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. ( 재시ë„를 위해서는 재시작 해야 합니다. )
*/
MSG_ID_D81 = 0xd81,
-/*20180117 to 20180621
+/*20180117 to 20180704
해당 ìŠ¤í‚¬ì€ íŒŒí‹° ìƒíƒœì—ì„œ 사용 가능합니다.
*/
MSG_ID_D82 = 0xd82,
#endif
#if PACKETVER >= 20180124
-/*20180124 to 20180621
+/*20180124 to 20180704
파티 ëª¨ì§‘ì„ ì¤‘ë‹¨í•˜ì˜€ìŠµë‹ˆë‹¤.
*/
MSG_ID_D83 = 0xd83,
-/*20180124 to 20180621
+/*20180124 to 20180704
길드 ìƒë‚© 경험치는 최대 %d%%까지 가능합니다.
*/
MSG_ID_D84 = 0xd84,
-/*20180124 to 20180621
+/*20180124 to 20180704
길드 ë ˆë²¨ì´ ìµœëŒ€ì—¬ì„œ ë” ì´ìƒ 경험치를 ìƒë‚©í•  수 없습니다.
*/
MSG_ID_D85 = 0xd85,
#endif
#if PACKETVER >= 20180207
-/*20180207 to 20180621
+/*20180207 to 20180704
ê³„ì •ë³´ì•ˆì„ ìœ„í•˜ì—¬ MOTP미사용ìžëŠ” 홈페ì´ì§€ 로그ì¸ë§Œ 가능합니다.
홈페ì´ì§€ë¡œ 로그ì¸ì„ ì‹œë„해주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_D86 = 0xd86,
-/*20180207 to 20180621
+/*20180207 to 20180704
물리 공격력과 마법 ê³µê²©ë ¥ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D87 = 0xd87,
-/*20180207 to 20180621
+/*20180207 to 20180704
물리 공격력과 마법 ê³µê²©ë ¥ì´ ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D88 = 0xd88,
-/*20180207 to 20180621
+/*20180207 to 20180704
%s 출ì„ì²´í¬ ë³´ìƒ
%s Attendance Check Reward
*/
@@ -20926,324 +20926,330 @@ http://ro.gnjoy.com
/*20180207 to 20180509
ì´ë²¤íŠ¸ 기간 : %02dì›” %02dì¼ ~ %2dì›” %2dì¼ 24:00까지
Event period : From %02d/%02d ~ Until %2d/%2d (Month/Day) 24:00
-20180516 to 20180621
+20180516 to 20180704
ì´ë²¤íŠ¸ 기간 : %02dì›” %02dì¼ ~ %02dì›” %02dì¼ 24:00까지
*/
MSG_ID_D8A = 0xd8a,
-/*20180207 to 20180621
+/*20180207 to 20180704
%dì¼ì°¨
%d Day
*/
MSG_ID_D8B = 0xd8b,
-/*20180207 to 20180621
+/*20180207 to 20180704
%dì¼ì°¨ 출ì„ì²´í¬
í´ë¦­í•´ì£¼ì„¸ìš”~!
%d Day attendance check
Please click~!
*/
MSG_ID_D8C = 0xd8c,
-/*20180207 to 20180621
+/*20180207 to 20180704
%dì¼ì°¨ ì¶œì„ ì„±ê³µ!
%d Day attendance success!
*/
MSG_ID_D8D = 0xd8d,
-/*20180207 to 20180621
+/*20180207 to 20180704
D-day
*/
MSG_ID_D8E = 0xd8e,
-/*20180207 to 20180621
+/*20180207 to 20180704
ì¼
Day
*/
MSG_ID_D8F = 0xd8f,
-/*20180207 to 20180621
+/*20180207 to 20180704
출ì„ì²´í¬ì— 실패하였습니다. 다시 실행해주세요.
Attendance Check failed. Please run again.
*/
MSG_ID_D90 = 0xd90,
-/*20180207 to 20180621
+/*20180207 to 20180704
출ì„ì²´í¬
Attendance Check
*/
MSG_ID_D91 = 0xd91,
-/*20180207 to 20180621
+/*20180207 to 20180704
현재 출ì„ì²´í¬ ì´ë²¤íŠ¸ ê¸°ê°„ì´ ì•„ë‹™ë‹ˆë‹¤
This is not the current attendance check event
*/
MSG_ATTENDANCE_UNAVAILABLE = 0xd92,
/*20180207 to 20180328
길드 ìƒë‚© 경험치가 maxì— ë„달하여, ë” ì´ìƒ 길드 경험치를 누ì í•  수 없습니다
-20180404 to 20180621
+20180404 to 20180704
길드 ìƒë‚© 경험치가 maxì— ë„달하여, ë” ì´ìƒ 길드 경험치를 누ì í•  수 없습니다.
*/
MSG_ID_D93 = 0xd93,
-/*20180207 to 20180621
+/*20180207 to 20180704
ê°œì¸ ìƒë‚© 경험치가 maxì— ë„달하여, ë” ì´ìƒ 길드 경험치를 누ì í•  수 없습니다.
*/
MSG_ID_D94 = 0xd94,
#endif
#if PACKETVER >= 20180213
-/*20180213 to 20180621
+/*20180213 to 20180704
메시지
*/
MSG_ID_D95 = 0xd95,
-/*20180213 to 20180621
+/*20180213 to 20180704
íŠ¸ìœ„í„°ì— ë©”ì„¸ì§€ ì „ì†¡ì„ ì‹¤íŒ¨ 했습니다.
*/
MSG_ID_D96 = 0xd96,
-/*20180213 to 20180621
+/*20180213 to 20180704
ì˜ë¬¸ 4ìž, 한글 2ìž ì´ìƒìœ¼ë¡œ 입력해야 합니다.
Enter 4 english words and 2 chinese words
*/
MSG_ID_D97 = 0xd97,
#endif
#if PACKETVER >= 20180307
-/*20180307 to 20180621
+/*20180307 to 20180704
ëª¬ìŠ¤í„°ì˜ í…Œì´ë°ì´ 불가능한 지역입니다.
*/
MSG_ID_D98 = 0xd98,
#endif
#if PACKETVER >= 20180321
-/*20180321 to 20180621
+/*20180321 to 20180704
순위를 가져오고 있습니다...
*/
MSG_ID_D99 = 0xd99,
-/*20180321 to 20180621
+/*20180321 to 20180704
해당 ìŠ¤í‚¬ì€ íŒŒí‹°ìž¥ì¼ë•Œë§Œ 사용 가능합니다.
*/
MSG_ID_D9A = 0xd9a,
#endif
#if PACKETVER >= 20180404
-/*20180404 to 20180621
+/*20180404 to 20180704
íŒŒíŠ¸ë„ˆì˜ SPê°€ 부족하거나, 스킬 사용 불가 ìƒíƒœìž…니다.
*/
MSG_ID_D9B = 0xd9b,
-/*20180404 to 20180621
+/*20180404 to 20180704
아르바ì´íŠ¸ ë…¸ì  ê°•ì œ 종료 알림메ì¼
*/
MSG_ID_D9C = 0xd9c,
-/*20180404 to 20180621
+/*20180404 to 20180704
안녕하세요. ìš´ì˜íŒ€ìž…니다.
해당 아르바ì´íŠ¸ ë…¸ì ì€ ìš´ì˜ì •ì±… 위배ë˜ëŠ” ì‚¬í•­ì´ í™•ì¸ë˜ì–´ ê°•ì œ 종료ë˜ì—ˆìŠµë‹ˆë‹¤.
ìžì„¸í•œ 확ì¸ì„ ì›í•˜ì‹œëŠ” 경우ì—는 1:1 문ì˜ë¥¼ 접수해 주시기 ë°”ëžë‹ˆë‹¤.
ê°ì‚¬í•©ë‹ˆë‹¤
*/
MSG_ID_D9D = 0xd9d,
-/*20180404 to 20180621
+/*20180404 to 20180704
50% ì´ìƒì˜ ê°’ì„ ìž…ë ¥í•  수 없습니다.
*/
MSG_ID_D9E = 0xd9e,
-/*20180404 to 20180621
+/*20180404 to 20180704
파티 가입 ìš”ì²­ì„ ë³´ëƒˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D9F = 0xd9f,
-/*20180404 to 20180621
+/*20180404 to 20180704
모험가 ì¤‘ê°œì†Œì— íŒŒí‹°ë¥¼ 등ë¡í•  수 없습니다
*/
MSG_ID_DA0 = 0xda0,
-/*20180404 to 20180621
+/*20180404 to 20180704
수ë½
*/
MSG_ID_DA1 = 0xda1,
-/*20180404 to 20180621
+/*20180404 to 20180704
ê±°ì ˆ
*/
MSG_ID_DA2 = 0xda2,
-/*20180404 to 20180621
+/*20180404 to 20180704
설정 ê¶Œí•œì€ íŒŒí‹°ìž¥ì—게 있습니다.
*/
MSG_ID_DA3 = 0xda3,
-/*20180404 to 20180621
+/*20180404 to 20180704
해당 ìºë¦­í„°ë¥¼ ì°¾ì„ ìˆ˜ 없습니다.
*/
MSG_ID_DA4 = 0xda4,
-/*20180404 to 20180621
+/*20180404 to 20180704
ë…¸ì  ê°•ì œ ì² ê±°
*/
MSG_ID_DA5 = 0xda5,
-/*20180404 to 20180621
+/*20180404 to 20180704
해당 íŒŒí‹°ì˜ íŒŒí‹°ìž¥ì„ ì°¾ì„ ìˆ˜ 없습니다.
*/
MSG_ID_DA6 = 0xda6,
-/*20180404 to 20180621
+/*20180404 to 20180704
ìž¡ë ˆë²¨ì´ ë‚®ì•„ íŒŒí‹°ì— ê°€ìž… í•  수 없습니다.
*/
MSG_ID_DA7 = 0xda7,
-/*20180404 to 20180621
+/*20180404 to 20180704
현재 요청ìžê°€ íŒŒí‹°ê°€ìž…ì´ ë¶ˆê°€ëŠ¥í•œ ì§€ì—­ì— ìžˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DA8 = 0xda8,
-/*20180404 to 20180621
+/*20180404 to 20180704
파티 ì¸ì›ìˆ˜ê°€ 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DA9 = 0xda9,
-/*20180404 to 20180621
+/*20180404 to 20180704
%s íŒŒí‹°ì˜ íŒŒí‹°ìž¥ì´ íŒŒí‹° ê°€ìž…ì„ ìŠ¹ì¸í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAA = 0xdaa,
-/*20180404 to 20180621
+/*20180404 to 20180704
%s íŒŒí‹°ì˜ íŒŒí‹°ìž¥ì´ íŒŒí‹° ê°€ìž…ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAB = 0xdab,
-/*20180404 to 20180621
+/*20180404 to 20180704
%s ë‹˜ì´ ì´ë¯¸ íŒŒí‹°ì— ê°€ìž… 중입니다.
*/
MSG_ID_DAC = 0xdac,
-/*20180404 to 20180621
+/*20180404 to 20180704
%s ë‹˜ì˜ íŒŒí‹° ê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAD = 0xdad,
-/*20180404 to 20180621
+/*20180404 to 20180704
%s ë‹˜ì˜ íŒŒí‹° ê°€ìž…ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAE = 0xdae,
-/*20180404 to 20180621
+/*20180404 to 20180704
파티 ìš”ì²­ì„ ë°›ì„ ìˆ˜ 없는 ìƒíƒœì—¬ì„œ %së‹˜ì˜ ì‹ ì²­ì´ ê±°ì ˆë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAF = 0xdaf,
-/*20180404 to 20180621
+/*20180404 to 20180704
모험가 중개소 리스트
*/
MSG_ID_DB0 = 0xdb0,
-/*20180404 to 20180621
+/*20180404 to 20180704
파티 가입 요청
*/
MSG_ID_DB1 = 0xdb1,
-/*20180404 to 20180621
+/*20180404 to 20180704
íŒŒí‹°ìž¥ì´ ì•„ë‹Œ 경우, 모험가 ì¤‘ê°œì†Œì— íŒŒí‹°ë¥¼ 등ë¡í•  수 없습니다.
*/
MSG_ID_DB2 = 0xdb2,
/*20180404 to 20180404
파티 모집 ì¤‘ë‹¨ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20180418 to 20180621
+20180418 to 20180704
파티 ëª¨ì§‘ì„ ì¤‘ë‹¨í•  수 없습니다.
*/
MSG_ID_DB3 = 0xdb3,
#endif
#if PACKETVER >= 20180418
-/*20180418 to 20180621
+/*20180418 to 20180704
존재하지 않는 파티 글입니다.
*/
MSG_ID_DB4 = 0xdb4,
/*20180418 to 20180418
시야 확장
-20180425 to 20180621
+20180425 to 20180704
Zoom Out
*/
MSG_ID_DB5 = 0xdb5,
/*20180418 to 20180418
%s : ì‹œì•¼í™•ìž¥ì„ ì¼œê±°ë‚˜ ëŒìˆ˜ 있습니다 On Off
-20180425 to 20180621
+20180425 to 20180704
%s : Zoom Outì„ ì¼œê±°ë‚˜ ëŒìˆ˜ 있습니다 On Off
*/
MSG_ID_DB6 = 0xdb6,
/*20180418 to 20180418
시야를 확장합니다(On)
-20180425 to 20180621
+20180425 to 20180704
Zoom Out ê¸°ëŠ¥ì„ ì¼­ë‹ˆë‹¤ (On)
*/
MSG_ID_DB7 = 0xdb7,
/*20180418 to 20180418
ì‹œì•¼í™•ìž¥ì„ í•´ì œí•©ë‹ˆë‹¤(Off)
-20180425 to 20180621
+20180425 to 20180704
Zoom Out ê¸°ëŠ¥ì„ í•´ì œí•©ë‹ˆë‹¤ (Off)
*/
MSG_ID_DB8 = 0xdb8,
/*20180418 to 20180418
/expandsight
-20180425 to 20180621
+20180425 to 20180704
/zoom
*/
MSG_ID_DB9 = 0xdb9,
-/*20180418 to 20180621
+/*20180418 to 20180704
모험가 중개소
*/
MSG_ID_DBA = 0xdba,
-/*20180418 to 20180621
+/*20180418 to 20180704
íŒŒí‹°ìž¥ì¸ ê²½ìš°, 가입 ìš”ì²­ì„ í•  수 없습니다.
*/
MSG_ID_DBB = 0xdbb,
-/*20180418 to 20180621
+/*20180418 to 20180704
모험가 ì¤‘ê°œì†Œì— ë“±ë¡ ì¤‘ìž…ë‹ˆë‹¤. 잠시만 기다려 주세요.
*/
MSG_ID_DBC = 0xdbc,
-/*20180418 to 20180621
+/*20180418 to 20180704
ë” ì´ìƒ ì§ì—…ì„ ì„ íƒí•  수 없습니다.
*/
MSG_ID_DBD = 0xdbd,
-/*20180418 to 20180621
+/*20180418 to 20180704
게임 중 해당 ìœ ì €ì˜ ê°€ìž… ìš”ì²­ì„ ë°›ì§€ 않습니다.
*/
MSG_ID_DBE = 0xdbe,
#endif
#if PACKETVER >= 20180502
-/*20180502 to 20180621
+/*20180502 to 20180704
ìž ì‹œ 후 다시 열어주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_DBF = 0xdbf,
-/*20180502 to 20180621
+/*20180502 to 20180704
공성시작 ì „ %d분 ë™ì•ˆì€ 해당 ê¸°ëŠ¥ì„ ì´ìš©í•˜ì‹¤ 수 없습니다.
*/
MSG_ID_DC0 = 0xdc0,
#endif
#if PACKETVER >= 20180516
-/*20180516 to 20180621
+/*20180516 to 20180704
/viewclear
*/
MSG_ID_DC1 = 0xdc1,
-/*20180516 to 20180621
+/*20180516 to 20180704
건물 반 투명화 ON
*/
MSG_ID_DC2 = 0xdc2,
-/*20180516 to 20180621
+/*20180516 to 20180704
건물 반 투명화 OFF
*/
MSG_ID_DC3 = 0xdc3,
-/*20180516 to 20180621
+/*20180516 to 20180704
건물 투명화
*/
MSG_ID_DC4 = 0xdc4,
-/*20180516 to 20180621
+/*20180516 to 20180704
알로 ë˜ëŒë¦¬ê¸°ê°€ 실패했습니다. ë¡œë±ìŠ¤ ìž‘ì„±ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
*/
MSG_ID_DC5 = 0xdc5,
-/*20180516 to 20180621
+/*20180516 to 20180704
Emblem Frame
*/
MSG_ID_DC6 = 0xdc6,
-/*20180516 to 20180621
+/*20180516 to 20180704
Emblem í…Œë‘리를 그려ì¤ë‹ˆë‹¤
*/
MSG_ID_DC7 = 0xdc7,
-/*20180516 to 20180621
+/*20180516 to 20180704
Emblem í…Œë‘리를 그려주지 않습니다
*/
MSG_ID_DC8 = 0xdc8,
#endif
#if PACKETVER >= 20180605
-/*20180605 to 20180621
+/*20180605 to 20180704
ìž¥ì°©ëœ ë¬´ê¸°ê°€ 없습니다.
*/
MSG_ID_DC9 = 0xdc9,
-/*20180605 to 20180621
+/*20180605 to 20180704
ì—너지 구체가 부족합니다.
*/
MSG_ID_DCA = 0xdca,
-/*20180605 to 20180621
+/*20180605 to 20180704
배울 수 없는 스킬(%s)ì´ í¬í•¨ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DCB = 0xdcb,
-/*20180605 to 20180621
+/*20180605 to 20180704
/frame
*/
MSG_ID_DCC = 0xdcc,
#endif
#if PACKETVER >= 20180620
-/*20180620 to 20180621
+/*20180620 to 20180704
ì›¨í° ë¸”ë¡œí‚¹ ë°œë™í›„ 제한시간 ë‚´ì— ì‚¬ìš©ê°€ëŠ¥í•œ 스킬입니다.
*/
MSG_ID_DCD = 0xdcd,
#endif
+#if PACKETVER >= 20180704
+/*20180704 to 20180704
+ì•„ì´ë””í˜¹ì€ íŒ¨ìŠ¤ì›Œë“œê°€ 잘못ë˜ì—ˆì니다.
+*/
+ MSG_ID_DCE = 0xdce,
+#endif
};
#endif /* MAP_MESSAGES_MAIN_H */
diff --git a/src/map/messages_re.h b/src/map/messages_re.h
index 90988507d..7f9a32e0e 100644
--- a/src/map/messages_re.h
+++ b/src/map/messages_re.h
@@ -24,3720 +24,3720 @@
/* This file is autogenerated, please do not commit manual changes */
enum clif_messages {
-/*20080827 to 20180621
+/*20080827 to 20180711
ë™ì˜ 하십니까?
Do you agree?
*/
MSG_DO_YOU_AGREE = 0x0,
-/*20080827 to 20180621
+/*20080827 to 20180711
서버 연결 실패
Failed to Connect to Server.
*/
MSG_SERVER_CONNECTION_FAILED = 0x1,
-/*20080827 to 20180621
+/*20080827 to 20180711
서버와 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤.
Disconnected from Server.
*/
MSG_UNABLE_TO_CONNECT_SERVER = 0x2,
-/*20080827 to 20180621
+/*20080827 to 20180711
서버와 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤!
Disconnected from Server!
*/
MSG_BANNED = 0x3,
-/*20080827 to 20180621
+/*20080827 to 20180711
서버 종료ë¨
Server Closed.
*/
MSG_SERVER_OFF = 0x4,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ ê³„ì •ìœ¼ë¡œ 다른 사용ìžê°€ ë¡œê·¸ì¸ í•˜ì˜€ìŠµë‹ˆë‹¤.
Someone has Logged in with this ID.
*/
MSG_DOUBLE_LOGIN_PROHIBITED = 0x5,
-/*20080827 to 20180621
+/*20080827 to 20180711
등ë¡ë˜ì§€ ì•Šì€ ê³„ì •ìž…ë‹ˆë‹¤. 다시 í™•ì¸ ë°”ëžë‹ˆë‹¤.
Unregistered ID. Please make sure you have a registered account and you have correctly typed in the user ID.
*/
MSG_INCORRECT_USERID = 0x6,
-/*20080827 to 20180621
+/*20080827 to 20180711
입력하신 비밀번호가 올바르지 않습니다.
Incorrect User ID or Password. Please try again.
*/
MSG_INCORRECT_PASSWORD = 0x7,
-/*20080827 to 20180621
+/*20080827 to 20180711
본 ID 는 ì‚¬ìš©ê¸°ê°„ì´ ë§Œë£Œ ë˜ì—ˆìŠµë‹ˆë‹¤
This ID is expired.
*/
MSG_ID_EXPIRED = 0x8,
-/*20080827 to 20180621
+/*20080827 to 20180711
서버 접근 거부
Rejected from Server.
*/
MSG_ACCESS_DENIED = 0x9,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ ìºë¦­í„° ì´ë¦„ì´ ìžˆìŠµë‹ˆë‹¤.
Character Name already exists.
*/
MSG_CHARACTER_NAME_ALREADY_EXISTS = 0xa,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºë¦­í„° ìƒì„± 거부ë¨
Character Creation is denied.
*/
MSG_CHARACTER_CREATION_DENIED = 0xb,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºë¦­í„° ì‚­ì œ 거부
Character Deletion is denied.
*/
MSG_CANNOT_DELETE_CHARACTER = 0xc,
-/*20080827 to 20180621
+/*20080827 to 20180711
방제목를 입력하세요.
Please Enter Room Title.
*/
MSG_ENTER_ROOM_TITLE = 0xd,
-/*20080827 to 20180621
+/*20080827 to 20180711
불량단어가 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
Foul Language Detected.
*/
MSG_BAD_SENTANGE = 0xe,
-/*20080827 to 20180621
+/*20080827 to 20180711
암호를 입력하세요.
Please enter Password.
*/
MSG_ENTER_PASSWORD = 0xf,
-/*20080827 to 20180621
+/*20080827 to 20180711
암호를 ì˜ë¬¸ 4ìž ì´ìƒ 입력하세요.
Please enter Password. Passwords must be at least 4 characters long.
*/
MSG_Enter_Password_more_than_4_char = 0x10,
-/*20080827 to 20180621
+/*20080827 to 20180711
종료 하시겠습니까?
Are you sure that you want to quit?
*/
MSG_DO_YOU_REALLY_WANT_TO_QUIT = 0x11,
-/*20080827 to 20180621
+/*20080827 to 20180711
4ìž ì´ìƒ 입력해주세요. ì‚¬ìš©ìž ê³„ì •ì´ ì—†ìœ¼ì‹ ë¶„ë“¤ì€ ì™¼ìª½ í•˜ë‹¨ì˜ [ì‹ ì²­] ë²„íŠ¼ì„ ëˆŒëŸ¬ ê³„ì •ì„ ë§Œë“œì‹œê¸° ë°”ëžë‹ˆë‹¤.
Passwords are at least 4 characters long. Please try again.
*/
MSG_NAME_MUST_EXCEED_4_CHAR = 0x12,
-/*20080827 to 20180621
+/*20080827 to 20180711
í•œ 번 ì‚­ì œëœ ìºë¦­í„° ë° ê´€ë ¨ 정보는 다시 복구ë˜ì§€ 않습니다. ìºë¦­í„°ë¥¼ 삭제하시겠습니까?
Are you sure that you want to delete this character?
*/
MSG_DELETE_CHARACTER = 0x13,
-/*20080827 to 20180621
+/*20080827 to 20180711
불량단어가 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
Foul Language Detected.
*/
MSG_BAD_NAME = 0x14,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¦„ì„ ìž…ë ¥í•´ 주세요.(한글 2ìž ì˜ë¬¸ 4ìž ì´ìƒ)
Character Name must be at least 4 characters long.
*/
MSG_ENTER_NAME_MORE_THAN_4_CHAR = 0x15,
-/*20080827 to 20180621
+/*20080827 to 20180711
명령어 ì¼ëžŒ: /h
Command List: /h | /help
*/
MSG_LIST_COMMAND = 0x16,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´íŽ™íŠ¸ On
Effects On
*/
MSG_EFFECT_ON = 0x17,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´íŽ™íŠ¸ Off
Effects Off
*/
MSG_EFFECT_OFF = 0x18,
-/*20080827 to 20180621
+/*20080827 to 20180711
사운드 볼륨
Sound Volume
*/
MSG_VOLUME_OF_SOUND = 0x19,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°°ê²½ìŒì•… 볼륨
BGM Volume
*/
MSG_VOLUME_OF_BGM = 0x1a,
-/*20080827 to 20180621
+/*20080827 to 20180711
íš¨ê³¼ìŒ On
Sound Effects On
*/
MSG_SOUND_ON = 0x1b,
-/*20080827 to 20180621
+/*20080827 to 20180711
íš¨ê³¼ìŒ Off
Sound Effects Off
*/
MSG_SOUND_OFF = 0x1c,
-/*20080827 to 20180621
+/*20080827 to 20180711
프레임스킵 On
Frame Skip On
*/
MSG_FRAME_SKIP_ON = 0x1d,
-/*20080827 to 20180621
+/*20080827 to 20180711
프레임스킵 Off
Frame Skip Off
*/
MSG_FRAME_SKIP_OFF = 0x1e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°°ê²½ìŒì•… On
BGM On
*/
MSG_BGM_ON = 0x1f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°°ê²½ìŒì•… Off
BGM Off
*/
MSG_BGM_OFF = 0x20,
-/*20080827 to 20180621
+/*20080827 to 20180711
/h or /help: 명령어 ì¼ëžŒ
/h or /help: Shows this Command Help List
*/
MSG_EXPLAIN_HELP = 0x21,
-/*20080827 to 20180621
+/*20080827 to 20180711
/w or /who or /ì ‘ì†ìž or /누구: 현재 ì ‘ì†ìžìˆ˜ 보기
/w or /who or /player or /who: wiew current the number of player
*/
MSG_EXPLAIN_WHO = 0x22,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ìŒì•… : ë°°ê²½ìŒì•… On Off
/music: Turns BGM On or Off
*/
MSG_EXPLAIN_MUSIC = 0x23,
-/*20080827 to 20180621
+/*20080827 to 20180711
/íš¨ê³¼ìŒ : íš¨ê³¼ìŒ On Off
/sound: Turns Sound Effects On or Off
*/
MSG_EXPLAIN_SOUND = 0x24,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ì´íŽ™íŠ¸ : ì´íŽ™íŠ¸ On Off
/effect: Effects On or Off
*/
MSG_EXPLAIN_EFFECT = 0x25,
-/*20080827 to 20180621
+/*20080827 to 20180711
/좌표 or /장소: 현재 위치 표시
/where: Shows your present location
*/
MSG_EXPLAIN_POS = 0x26,
-/*20080827 to 20180621
+/*20080827 to 20180711
/skip : 프래임스킵 On Off
/skip: Turns Frame Skip On or Off
*/
MSG_EXPLAIN_FRAMESKIP = 0x27,
-/*20080827 to 20180621
+/*20080827 to 20180711
/v (0~127): íš¨ê³¼ìŒ ë³¼ë¥¨ì¡°ì •
/v (0~127): Controls the volume of the Sound Effects
*/
MSG_EXPLAIN_SOUNDVOLUME = 0x28,
-/*20080827 to 20180621
+/*20080827 to 20180711
/bv (0~127): ë°°ê²½ìŒì•… 볼륨조정
/bv (0~127): Controls the volume of the BGM
*/
MSG_EXPLAIN_BGMVOLUME = 0x29,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ex (ìºë¦­í„°ì´ë¦„) or /차단 (ìºë¦­í„°ì´ë¦„) : 해당ìºë¦­í„°ì— 대해 ê·“ë§ì°¨ë‹¨
/ex (Character Name): Blocks whispering from the Character
*/
MSG_EXPLAIN_SAYISOLATION = 0x2a,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ex or /차단 : ê·“ë§ì°¨ë‹¨ ìºë¦­í„° 리스트
/ex: View a list of Characters you have Blocked
*/
MSG_EXPLAIN_LIST_SAYISOLATION_CHAR = 0x2b,
-/*20080827 to 20180621
+/*20080827 to 20180711
/in (ìºë¦­í„°ì´ë¦„) or /í•´ì œ (ìºë¦­í„°ì´ë¦„) : 해당ìºë¦­í„°ì— 대해 ê·“ë§í—ˆìš©
/in (Character Name): Allows whispering from the Character
*/
MSG_EXPLAIN_SAY_PERMIT = 0x2c,
-/*20080827 to 20180621
+/*20080827 to 20180711
/inall or /해제전부 : 모ë‘ì—게 ê·“ë§í—ˆìš©
/inall: Allows whispers from anyone
*/
MSG_EXPLAIN_SAY_PERMITALL = 0x2d,
-/*20080827 to 20180621
+/*20080827 to 20180711
/exall or /차단전부 : 모ë‘ì—게 ê·“ë§ì°¨ë‹¨
/exall: Blocks whispers from everyone
*/
MSG_EXPLAIN_SAY_ISOLATEALL = 0x2e,
-/*20080827 to 20180621
+/*20080827 to 20180711
다른유저 ìºë¦­í„°ë¥¼ 마우스 ì˜¤ë¥¸ë²„íŠ¼ì„ ëˆ„ë¥´ê³  있는 ìƒíƒœì—ì„œ 왼버튼으로 í´ë¦­í•˜ë©´ ê·¸ìºë¦­í„°ì´ë¦„ì´ ê·“ë§ì½¤ë³´ë°•ìŠ¤ì— 저장ë©ë‹ˆë‹¤.
Right click on a character and select [Register as a Friend] to add a person to your Friend List.
*/
MSG_EXPLAIN_TIP1 = 0x2f,
-/*20080827 to 20180621
+/*20080827 to 20180711
단축아ì´íƒ¬ì°½(F12) 소비장비 ì•„ì´í…œì„ 드래그한후 사용하세요. 사용키(F1F2F3F4F5F6F7F8F9)
F12 Brings up a Hotkey Window which allows you to drag and drop Recovery Items, Equipment and Skills into it for faster access.
*/
MSG_EXPLAIN_TIP2 = 0x30,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ë§ì„ 3번ì´ìƒ ì—°ì†í•´ì„œ 전송할 수 없습니다.
You can't type the same word/phrase more than 3 times.
*/
MSG_NO_SAME_SENTANCE = 0x31,
-/*20080827 to 20180621
+/*20080827 to 20180711
불량단어 검출로 ì „ì†¡ì´ ì¤‘ë‹¨ ë˜ì—ˆìŠµë‹ˆë‹¤.
Chat Filter: Yeah, uh, I don't think so buddy...
*/
MSG_NO_SEND_BECAUSE_INSULT = 0x32,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ì•„ì´í…œì€ 한번만 올릴수 있습니다.
You cannot overlap items on a window.
*/
MSG_CAN_DRAG_ITEM_OLNY_ONETIME = 0x33,
-/*20080827 to 20180621
+/*20080827 to 20180711
무게가 초과하여 ì•„ì´í…œì„ 가질 수 없습니다.
You cannot carry more items because you are overweight.
*/
MSG_CANT_GET_ITEM_BECAUSE_WEIGHT = 0x34,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œì„ 가질 수 없습니다.
You cannot get the item.
*/
MSG_CANT_GET_ITEM = 0x35,
-/*20080827 to 20180621
+/*20080827 to 20180711
거래가 잘 ì´ë£¨ì–´ì¡ŒìŠµë‹ˆë‹¤.
The deal has successfully completed.
*/
MSG_DEAL_SECCESS = 0x36,
-/*20080827 to 20180621
+/*20080827 to 20180711
ëˆì´ 부족합니다.
You do not have enough zeny.
*/
MSG_INSUFFICIENT_MONEY = 0x37,
-/*20080827 to 20180621
+/*20080827 to 20180711
무게가 초과 ë˜ì—ˆìŠµë‹ˆë‹¤.
You are over your Weight Limit.
*/
MSG_OVER_WEIGHT = 0x38,
-/*20080827 to 20180621
+/*20080827 to 20180711
거래가 실패 했습니다.
The deal has failed.
*/
MSG_DEAL_FAIL = 0x39,
-/*20080827 to 20180621
+/*20080827 to 20180711
모ë‘ì—게 ê·“ë§ê±°ë¶€ìƒíƒœë¡œë¨
You've blocked whispers from everyone.
*/
MSG_REFUSE_HEAR_ALL = 0x3a,
-/*20080827 to 20180621
+/*20080827 to 20180711
모ë‘ì—게 ê·“ë§ê±°ë¶€ìš”ì²­ 실패함
You've failed to block all whispers.
*/
MSG_REQ_REFUSE_HEAR_ALL_FAIL = 0x3b,
-/*20080827 to 20180621
+/*20080827 to 20180711
모ë‘ì—게 ê·“ë§ê°€ëŠ¥ìƒíƒœê°€ë¨
You've allowed whispers from everyone.
*/
MSG_HEAR_ALL = 0x3c,
-/*20080827 to 20180621
+/*20080827 to 20180711
모ë‘ì—게 ê·“ë§ê°€ëŠ¥ìš”ì²­ 실패함
You've failed to allow all whispers.
*/
MSG_REQ_HEAR_ALL_FAIL = 0x3d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê·“ë§ ê±°ë¶€ 리스트가 없습니다
You have no Block List.
*/
MSG_NO_REFUSE_HEAR_LIST = 0x3e,
-/*20080827 to 20180621
+/*20080827 to 20180711
-ê·“ë§ ê±°ë¶€ 리스트-
[ Character Block List ]
*/
MSG_REFUSE_HEAR_LIST = 0x3f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°©ì´ ìž˜ 만들어 졌습니다.
Room has been successfully created.
*/
MSG_ROOM_IS_MADE = 0x40,
-/*20080827 to 20180621
+/*20080827 to 20180711
방갯수가 허용갯수를 초과 하였습니다.
Room Limit Exceeded.
*/
MSG_TOO_MANY_ROOM = 0x41,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ ë°©ì œëª©ì´ ìžˆìŠµë‹ˆë‹¤.
Same Room exists.
*/
MSG_SAME_ROOM_TITLE = 0x42,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¸ì›ì´ˆê³¼ë¡œ ë°©ì— ë“¤ì–´ê°ˆ 수 없습니다.
The Room is full.
*/
MSG_TOO_MANY_PEOPLE_IN_ROOM = 0x43,
-/*20080827 to 20180621
+/*20080827 to 20180711
강제로 í‡´ìž¥ëœ ë°©ìž…ë‹ˆë‹¤.
You have been kicked out of this room.
*/
MSG_YOU_HAVE_BANNED_FROM_THE_ROOM = 0x44,
-/*20080827 to 20180621
+/*20080827 to 20180711
êµí™˜ìš”ì²­ì„ ê±°ì ˆ 했습니다.
The deal has been rejected.
*/
MSG_REJECT_DEAL = 0x45,
-/*20080827 to 20180621
+/*20080827 to 20180711
êµí™˜ê°€ëŠ¥ê±°ë¦¬ë¥¼ 벗어났습니다.
You are too far away from the person to trade.
*/
MSG_TOO_FAR_TO_DEAL = 0x46,
-/*20080827 to 20180621
+/*20080827 to 20180711
해당 ìºë¦­í„°ê°€ 없습니다.
The Character is not currently online or does not exist.
*/
MSG_CHARACTER_IS_NOT_EXIST = 0x47,
-/*20080827 to 20180621
+/*20080827 to 20180711
다른ìºë¦­í„°ì™€ êµí™˜ì¤‘입니다.
The person is in another deal.
*/
MSG_CHARACTER_IS_DEALING = 0x48,
/*20080827 to 20110628
ìƒíƒœìºë¦­í„° 중량초과로 올려놓ì„수가 없습니다.
-20110706 to 20180621
+20110706 to 20180711
ìƒëŒ€ ìºë¦­í„° 중량초과로 ì˜¬ë ¤ë†“ì„ ìˆ˜ 없습니다.
You cannot trade because this character will exceed his weight limit.
*/
MSG_CHARACTER_IS_OVER_WEIGHT = 0x49,
-/*20080827 to 20180621
+/*20080827 to 20180711
거래가 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
The deal has been canceled.
*/
MSG_DEAL_IS_CANCELED = 0x4a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ êµí™˜ì´ 잘 ë˜ì—ˆìŠµë‹ˆë‹¤.
The deal has successfully completed.
*/
MSG_DEAL_SUCCESS = 0x4b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ êµí™˜ì´ 실패 하였습니다.
The deal has failed.
*/
MSG_DEAL_FAILED = 0x4c,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티가 만들어졌습니다.
Party has successfully been organized.
*/
MSG_PARTY_MAKE_SUCCEED = 0x4d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ íŒŒí‹°ì´ë¦„ì´ ìžˆìŠµë‹ˆë‹¤.
That Party Name already exists.
*/
MSG_SAME_PARTY_NAME = 0x4e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¯¸ íŒŒí‹°ì— ì†í•´ìžˆìŠµë‹ˆë‹¤.
The Character is already in a party.
*/
MSG_YOU_ARE_ALREADY_IN_PARTY = 0x4f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë‹¤ë¥¸íŒŒí‹°ì— ê°€ìž…ë˜ì–´ 있습니다.
The Character already joined another party.
*/
MSG_CHARACTER_IS_ALREADY_IN_PARTY = 0x50,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŒŒí‹°ê°€ìž…ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.
Request for party rejected.
*/
MSG_CHARACTER_REJECT_JOIN = 0x51,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŒŒí‹°ê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
Request for party accepted.
*/
MSG_CHARACTER_ACCEPT_JOIN = 0x52,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티정ì›ì„ 초과했습니다.
Party Capacity exceeded.
*/
MSG_TOO_MANY_PEOPLE_IN_PARTY = 0x53,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티ì—ì„œ 탈퇴하였습니다.
You left the party.
*/
MSG_YOU_LEAVE_FROM_PARTY = 0x54,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì „ì²´ì—게 보냄
Send to All
*/
MSG_SEND_TO_ALL = 0x55,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티ì—게 보냄
Send to Party
*/
MSG_SEND_TO_PARTY = 0x56,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë‹˜ê³¼ì˜ ê±°ëž˜ìš”ì²­
Request a deal with %s
*/
MSG_REQ_DEAL_WITH = 0x57,
-/*20080827 to 20180621
+/*20080827 to 20180711
님 íŒŒí‹°ì— ê°€ìž…ìš”ì²­
Ask %s to join your party
*/
MSG_REQ_JOIN_PARTY = 0x58,
-/*20080827 to 20180621
+/*20080827 to 20180711
비공개 :
Pri:
*/
MSG_ROOM_PRIVATE = 0x59,
-/*20080827 to 20180621
+/*20080827 to 20180711
공개 :
Pub:
*/
MSG_ROOM_PUBLIC = 0x5a,
-/*20080827 to 20180621
+/*20080827 to 20180711
마지막 ì²´í¬ì§€ì ë¶€í„° 시작하려면 '재시작'ì„ ìºë¦­í„° ì„ íƒìœ¼ë¡œ ëŒì•„가려면 '종료'를 눌러주세요.
Click ''Restart'' to go back to your save point or click ''Exit'' to select another character.
*/
MSG_RESTART_MSG = 0x5b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì›í•˜ëŠ” 거래를 ì„ íƒí•˜ì„¸ìš”.
Please select a Deal Type.
*/
MSG_SELECT_DEAL_TYPE = 0x5c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë‹˜ì´ ê±°ëž˜ë¥¼ 요청했습니다.
requests a deal.
*/
MSG_SUGGEST_DEAL = 0x5d,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티ì—ì„œ 초청 메시지가 왔습니다. 합류하겠습니까?
Party has sent you an invitation. Would you like to join?
*/
MSG_SUGGEST_JOIN_PARTY = 0x5e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ëª…ë ¹ì´ í‹€ë ¸ìŠµë‹ˆë‹¤.
Invalid Command
*/
MSG_INVALID_COMMAND = 0x5f,
-/*20080827 to 20180621
+/*20080827 to 20180711
탈퇴하기
Leave party
*/
MSG_LEAVE_PARTY = 0x60,
-/*20080827 to 20180621
+/*20080827 to 20180711
제명시키기
Expel
*/
MSG_EXPEL = 0x61,
-/*20080827 to 20180621
+/*20080827 to 20180711
쪽지보내기
Send Message
*/
MSG_MSG = 0x62,
-/*20080827 to 20180621
+/*20080827 to 20180711
1:1 대화
1:1 Chat
*/
MSG_1ON1 = 0x63,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì •ë³´
Information
*/
MSG_CHARACTER_INFO = 0x64,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티설정
Party Setup
*/
MSG_PARTY_SETTING = 0x65,
-/*20080827 to 20180621
+/*20080827 to 20180711
친구
Friend
*/
MSG_FRIEND = 0x66,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티
Party
*/
MSG_PARTY = 0x67,
-/*20080827 to 20180621
+/*20080827 to 20180711
장착아ì´í…œ
Equipment
*/
MSG_EQUIPED_ITEM = 0x68,
-/*20080827 to 20180621
+/*20080827 to 20180711
스테ì´í„°ìŠ¤
Status
*/
MSG_STATUS_ = 0x69,
-/*20080827 to 20180621
+/*20080827 to 20180711
소지아ì´í…œ
Inventory
*/
MSG_ITEM = 0x6a,
-/*20080827 to 20180621
+/*20080827 to 20180711
/결성 [파티ì´ë¦„] : 파티결성 /탈퇴 : 파티탈퇴
/organize ''Party Name'' To organize a party. Type /leave To leave a Party.
*/
MSG_EXPLAIN_PARTY = 0x6b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìžì‹ ì´ 파티리ë”ì¼ë•Œ ìºë¦­í„°ë¥¼ 오른버튼으로 í´ë¦­í•˜ë©´ íŒŒí‹°ì— ê°€ìž…ìš”ì²­í•˜ê¸° 메뉴가 뜹니다.
If you are the party master, you can invite someone into your party by right-clicking on a Character.
*/
MSG_EXPLAIN_TIP3 = 0x6c,
-/*20080827 to 20180621
+/*20080827 to 20180711
회복
Consumables
*/
MSG_RESTORE = 0x6d,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격
Attack
*/
MSG_ATTACK = 0x6e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë³´ì¡°
Support
*/
MSG_SUPPORT = 0x6f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì „ì²´
All
*/
MSG_ALL = 0x70,
-/*20080827 to 20180621
+/*20080827 to 20180711
무기
Weapons
*/
MSG_WEAPON = 0x71,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°©ì–´
Defense
*/
MSG_DEFENCE = 0x72,
-/*20080827 to 20180621
+/*20080827 to 20180711
수
Water
*/
MSG_WATER = 0x73,
-/*20080827 to 20180621
+/*20080827 to 20180711
지
Earth
*/
MSG_EARTH = 0x74,
-/*20080827 to 20180621
+/*20080827 to 20180711
í™”
Fire
*/
MSG_FIRE = 0x75,
-/*20080827 to 20180621
+/*20080827 to 20180711
í’
Wind
*/
MSG_WIND = 0x76,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ì¢…ë¥˜ì˜ ìž¥ë¹„ì•„ì´í…œì€ í•œë²ˆì— í•œê°œë§Œ ì‚´ 수 있습니다.
Please avoid buying 2 of the same items at one time.
*/
MSG_EQUIPITEM_OLNY_ONE = 0x77,
-/*20080827 to 20180621
+/*20080827 to 20180711
창모드ì—ì„œ 실행 할때는 16비트 컬러로 맞춰주세요.
Please change your desktop Color Depth to 16-bit when running Ragnarok in windowed mode.
*/
MSG_ONLY_16BIT_WHEN_WINDOWMODE = 0x78,
-/*20080827 to 20180621
+/*20080827 to 20180711
잠시만 기다려 주세요.
Please wait...
*/
MSG_PLEASE_BE_PATIENT = 0x79,
-/*20080827 to 20180621
+/*20080827 to 20180711
잠시만 기다려 주세요.
Please wait...
*/
MSG_WAITING_RESPONSE_FROM_SERVER = 0x7a,
-/*20080827 to 20180621
+/*20080827 to 20180711
잠시만 기다려 주세요.
Please wait...
*/
MSG_MAKING_CHARACTER = 0x7b,
-/*20080827 to 20180621
+/*20080827 to 20180711
잠시만 기다려 주세요.
Please wait...
*/
MSG_DELETING_CHARACTER = 0x7c,
-/*20080827 to 20180621
+/*20080827 to 20180711
방 만들기
Make a Room
*/
MSG_MAKING_ROOM = 0x7d,
-/*20080827 to 20180621
+/*20080827 to 20180711
방셋팅 바꾸기
Room Setup
*/
MSG_CHANGE_ROOM_SETTING = 0x7e,
-/*20080827 to 20180621
+/*20080827 to 20180711
강퇴시키기
Kick Character Out
*/
MSG_BAN = 0x7f,
-/*20080827 to 20180621
+/*20080827 to 20180711
방장권한 주기
Give Master Authority
*/
MSG_GIVE_GIVE_ROOM_POWER = 0x80,
-/*20080827 to 20180621
+/*20080827 to 20180711
정보보기
View Information
*/
MSG_SEE_INFORMATION_OF_CHARACTER = 0x81,
-/*20080827 to 20180621
+/*20080827 to 20180711
대화방
Chat Room
*/
MSG_CHAT_ROOM = 0x82,
-/*20080827 to 20180621
+/*20080827 to 20180711
명
Ppl
*/
MSG_COUNT_UNIT_OF_PEOPLE = 0x83,
-/*20080827 to 20180621
+/*20080827 to 20180711
/앉기 or /sit : 앉기. 앉아있ì„ë•Œ 서기
/sit: Sit command. If you are sitting, you will stand instead.
*/
MSG_EXPLAIN_SIT = 0x84,
-/*20080827 to 20180621
+/*20080827 to 20180711
/서기 or /stand : 서기. 서있ì„ë•Œ 앉기
/stand: Stand command. If you are standing, you will sit instead.
*/
MSG_EXPLAIN_STAND = 0x85,
-/*20080827 to 20180621
+/*20080827 to 20180711
/채팅방 or /chat : 채팅방 만들기창 ë„우기
/chat: Creates a Chat Room
*/
MSG_EXPLAIN_MAKE_CHAT = 0x86,
-/*20080827 to 20180621
+/*20080827 to 20180711
/q : 채팅방 나가기.
/q: Leaves a Chat Room
*/
MSG_EXPLAIN_EXIT_CHAT_ROOM = 0x87,
-/*20080827 to 20180621
+/*20080827 to 20180711
/거래 [ìºë¦­í„°ì´ë¦„] or /êµí™˜ [ìºë¦­í„°ì´ë¦„] or /deal [ìºë¦­í„°ì´ë¦„] : 해당 ìºë¦­í„°ì™€ 거래요청
/deal ''Character Name'' Requests a deal with a character
*/
MSG_EXPLAIN_DEAL = 0x88,
-/*20080827 to 20180621
+/*20080827 to 20180711
/결성 [파티ì´ë¦„] or /organize [파티ì´ë¦„] : 파티결성
/organize ''Party Name'' Organizes a party
*/
MSG_EXPLAIN_ORGANIZE_PARTY = 0x89,
-/*20080827 to 20180621
+/*20080827 to 20180711
/탈퇴 or /leave : 파티 탈퇴
/leave: Leaves a party
*/
MSG_EXPLAIN_LEAVE_PARTY = 0x8a,
-/*20080827 to 20180621
+/*20080827 to 20180711
/제명 [ìºë¦­í„°ì´ë¦„] or /expel [ìºë¦­í„°ì´ë¦„] : 해당ìºë¦­í„°ë¥¼ 파티ì—ì„œ 제명시킴
/expel ''Character Name'' kicks a Character out of your party
*/
MSG_EXPLAIN_EXPEL_PARTY_MEMBER = 0x8b,
-/*20080827 to 20180621
+/*20080827 to 20180711
[Alt] + [End] : 플레ì´ì–´ hp/sp 게ì´ì§€ On Off
[Alt] + [End]: Turns HP/SP Bar On or Off
*/
MSG_EXPLAIN_TIP4 = 0x8c,
-/*20080827 to 20180621
+/*20080827 to 20180711
[Alt] + [Home] : 지면 커서 표시 On Off
[Alt] + [Home]: Turns Ground Cursor On or Off
*/
MSG_EXPLAIN_TIP5 = 0x8d,
-/*20080827 to 20180621
+/*20080827 to 20180711
[Insert] : 앉기 서기
[Insert]: Makes you sit or stand. (Hotkey to toggle between /sit and /stand)
*/
MSG_EXPLAIN_TIP6 = 0x8e,
-/*20080827 to 20180621
+/*20080827 to 20180711
MVPê°€ ë˜ì…¨ìŠµë‹ˆë‹¤!! MVP ì•„ì´í…œì€
Congratulations! You are the MVP! Your reward item is
*/
MSG_YOU_RECEIVE_MVP_ITEM = 0x8f,
-/*20080827 to 20180621
+/*20080827 to 20180711
!!
!!
*/
MSG_YOU_RECEIVE_MVP_ITEM2 = 0x90,
-/*20080827 to 20180621
+/*20080827 to 20180711
MVPê°€ ë˜ì…¨ìŠµë‹ˆë‹¤!! 특별경험치
Congratulations! You are the MVP! Your reward EXP Points are
*/
MSG_YOU_RECEIVE_MVP_EXP = 0x91,
-/*20080827 to 20180621
+/*20080827 to 20180711
íšë“!!
!!
*/
MSG_YOU_RECEIVE_MVP_EXP2 = 0x92,
-/*20080827 to 20180621
+/*20080827 to 20180711
MVPê°€ ë˜ì…¨ìŠµë‹ˆë‹¤ë§Œ 무게초과로 MVP ì•„ì´í…œì„ 가질 수 없었습니다!!
You are the MVP, but you can't take the reward because you are over your weight limit.
*/
MSG_YOU_THROW_MVPITEM = 0x93,
-/*20080827 to 20180621
+/*20080827 to 20180711
없는 ìºë¦­í„° ì´ë¦„ 입니다.
There is no such character name or the user is offline.
*/
MSG_NOT_EXIST_CHARACTER = 0x94,
-/*20080827 to 20180621
+/*20080827 to 20180711
수신 거부 ìƒíƒœìž…니다.
doesn't want to receive your messages.
*/
MSG_NO_RECEIVE_MODE = 0x95,
-/*20080827 to 20180621
+/*20080827 to 20180711
모든 ìºë¦­í„°ì— 대해 수신 거부 ìƒíƒœ 입니다.
is not in the mood to talk with anyone.
*/
MSG_NO_RECEIVE_MODE_FOR_ALL = 0x96,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºë¦­í„° ì ‘ì†ëŠê¸° 성공.
Killed/Disconnected User.
*/
MSG_SUCCESS_DISCONNECT_CHARACTER = 0x97,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºë¦­í„° ì ‘ì†ëŠê¸° 실패.
Kill has failed.
*/
MSG_FAIL_DISCONNECT_CHARACTER = 0x98,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s %d ê°œ íšë“
You got %s (%d).
*/
MSG_GET_ITEM = 0x99,
-/*20080827 to 20180621
+/*20080827 to 20180711
[Alt] + [=] : 알파벳 ê°„ê²©ì´ ë„“ì–´ì¡Œì„ë•Œ ë˜ëŒë¦¬ê¸°.
[Alt] + [=]: Fix the interval error between letters.
*/
MSG_EXPLAIN_TIP7 = 0x9a,
-/*20080827 to 20180621
+/*20080827 to 20180711
[F10] : 채팅창 í¬ê¸°ì¡°ì • [Alt] + [F10] : 채팅창 On Off
[F10]: To toggle Chat Window size; [Alt] + [F10]: Toggle Chat Window On or Off
*/
MSG_EXPLAIN_TIP8 = 0x9b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê·“ì†ë§ 하는법 : 채팅창 왼쪽 ìž…ë ¥ëž€ì— ìºë¦­í„°ì´ë¦„ì„ ìž…ë ¥í•˜ê³  오른쪽 ìž…ë ¥ëž€ì— ë§ì„ 입력하면 ë©ë‹ˆë‹¤. TAB키로 ë‘입력란 사ì´ë¡œ 커서를 ì´ë™í•  수 있습니다.
How to Whisper: Enter a Character's Name on the left side of chat window and type your message on the right side. The Tab key helps you move between these boxes.
*/
MSG_EXPLAIN_TIP9 = 0x9c,
-/*20080827 to 20180621
+/*20080827 to 20180711
/! /? /ê¸°ì¨ /하트 /ë•€ /아하 /ì§œì¦ /í™” /ëˆ /... /가위 /바위 /ë³´ : Alt + (1~9) Ctrl + (-=\) ì— ëŒ€ì‘ë˜ëŠ” 명령어 입니다.
/!,/?,/ho,/lv,/lv2,/swt,/ic,/an,/ag,/$,/….,/thx,/wah,/sry,/heh,/swt2,/hmm,/no1,/??,/omg,/oh,/X,/hp,/go,/sob,/gg,/kis,/kis2,/pif,/ok: Emotion icons corresponding to Alt + (1~9) Ctrl + (-=\\)
*/
MSG_EXPLAIN_TIP10 = 0x9d,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티ì›ì—게 ë§í•˜ëŠ”법 : ë§ì˜ ì œì¼ì•žì— '%'를 붙ì´ë©´ 파티ì›ì—게 ë§ì´ 갑니다. (예: "%안녕")
How to Speak to Party: Add % in front of every message.(Example: \%Hello\)
*/
MSG_EXPLAIN_TIP11 = 0x9e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. êµí™˜ 불능.
You haven't learned enough Basic Skills to Trade.
*/
MSG_NOT_ENOUGH_SKILLLEVE1 = 0x9f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. ì´ëª¨ì…˜ 불능.
You haven't learned enough Basic Skills to use Emotion icons.
*/
MSG_NOT_ENOUGH_SKILLLEVE2 = 0xa0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 앉기 불능.
You haven't learned enough Basic Skills to Sit.
*/
MSG_NOT_ENOUGH_SKILLLEVE3 = 0xa1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 채팅방만들기 불능.
You haven't learned enough Basic Skills to create a chat room.
*/
MSG_NOT_ENOUGH_SKILLLEVE4 = 0xa2,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 파티만들기 불능
You haven't learned enough Basic Skills to Party.
*/
MSG_NOT_ENOUGH_SKILLLEVE5 = 0xa3,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 외치기 불능
You haven't learned enough skills to Shout.
*/
MSG_NOT_ENOUGH_SKILLLEVE6 = 0xa4,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. pk 불능
You haven't learned enough skills for Pking.
*/
MSG_NOT_ENOUGH_SKILLLEVE7 = 0xa5,
-/*20080827 to 20180621
+/*20080827 to 20180711
사고ìží•˜ëŠ” 품목
Buying Items
*/
MSG_ITEMS_FOR_BUY = 0xa6,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ ìƒì 
Item Shop
*/
MSG_ITEM_STORE = 0xa7,
-/*20080827 to 20180621
+/*20080827 to 20180711
팔고ìží•˜ëŠ” 품목
Selling Items
*/
MSG_ITEMS_FOR_SELL = 0xa8,
-/*20080827 to 20180621
+/*20080827 to 20180711
보관아ì´í…œ
Storage
*/
MSG_ITEMS_THAT_IS_STORED = 0xa9,
-/*20080827 to 20180621
+/*20080827 to 20180711
장비가 장착 ë˜ì—ˆìŠµë‹ˆë‹¤.
is put on.
*/
MSG_ITEM_IS_EQUIPED = 0xaa,
-/*20080827 to 20180621
+/*20080827 to 20180711
장비가 í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
is taken off.
*/
MSG_ITEM_IS_REMOVED = 0xab,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê·“ë§ë¦¬ìŠ¤íŠ¸ì— ì´ë¦„넣기
To add names on the Whispering List
*/
MSG_ADD_TO_WHISPER_CHAR_LIST = 0xac,
-/*20080827 to 20180621
+/*20080827 to 20180711
스í¬ë¦°ìƒ· ì°ëŠ”법 : [Print Screen]키나 [Scroll Lock]키를 누르면 ë©ë‹ˆë‹¤.
How to Take Screen Shots: Press [Print Screen] or [Scroll Lock]
*/
MSG_EXPLAIN_TIP12 = 0xad,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì˜¤ëŠ˜ì˜ íŒ
Tip of the Day
*/
MSG_TIPOFTHEDAY = 0xae,
-/*20080827 to 20180621
+/*20080827 to 20180711
^3850a0알고 계셨습니까... ^000000 //^709fed
^3850a0Did you know...?^709fed
*/
MSG_DIDYOUKNOW = 0xaf,
-/*20080827 to 20180621
+/*20080827 to 20180711
시작할때 열기
Display at startup
*/
MSG_SHOWTIPSATSTARTUP = 0xb0,
-/*20080827 to 20180621
+/*20080827 to 20180711
/tip : 오늘ì˜íŒ 열기
/tip: Opens ''Tip of the Day''
*/
MSG_EXPLAIN_OPENTIP = 0xb1,
-/*20080827 to 20180621
+/*20080827 to 20180711
현재 ì ‘ì†ìž %d명
There are %d Players Currently Connected.
*/
MSG_NUMPEOPLE = 0xb2,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)ë‹˜ì´ ìž…ìž¥ 하였습니다.
(%s) has entered.
*/
MSG_USERGETINTHEROOM = 0xb3,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)ë‹˜ì´ í‡´ìž¥ 하였습니다.
(%s) has left.
*/
MSG_USERGETOUTOFTHEROOM = 0xb4,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)ë‹˜ì´ ê°•ì œ 퇴장 ë˜ì—ˆìŠµë‹ˆë‹¤.
(%s) was kicked out.
*/
MSG_USERGETOUTOFTHEROOMBYFORCE = 0xb5,
-/*20080827 to 20180621
+/*20080827 to 20180711
%d 개
%d ea.
*/
MSG_EA = 0xb6,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s : %d 개
%s: %d ea.
*/
MSG_EA2 = 0xb7,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s %s : %d 개
%s %s: %d
*/
MSG_EA3 = 0xb8,
-/*20080827 to 20180621
+/*20080827 to 20180711
팔 수 있는 품목
Available Items to sell
*/
MSG_ITEMSYOUCANSELL = 0xb9,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒì ì—ì„œ 파는 품목
Shop Items
*/
MSG_SHOPITEMS = 0xba,
-/*20080827 to 20180621
+/*20080827 to 20180711
알 수 없는곳
Unknown Area
*/
MSG_NOWHERE = 0xbb,
-/*20080827 to 20180621
+/*20080827 to 20180711
서버와 언어가 맞지 않습니다.
Your Client language doesn't match the Server language.
*/
MSG_CLIENTTYPEMISMATCH = 0xbc,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œì„ 버릴려면 ìž¥ë¹„ì°½ì„ ë‹«ìœ¼ì„¸ìš”.
Please move your equipment to the inventory. And close the equipment window.
*/
MSG_CLOSEEQUIPWND = 0xbd,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì˜ì–´ë§Œ ë©ë‹ˆë‹¤.
This server provides English Text Characters Only.
*/
MSG_ENGLISHONLY = 0xbe,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì§€ê¸ˆì€ ì§€ì›ë˜ì§€ 않습니다.
This is not implemented yet.
*/
MSG_NOTSUPPORTEDYET = 0xbf,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê·“ë§ ë¦¬ìŠ¤íŠ¸ê°€ 없습니다.
No Whisper List.
*/
MSG_NOWHISPERLIST = 0xc0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì—게 ê·“ë§ê±°ë¶€ìƒíƒœë¡œë¨
: Whispering Blocked.
*/
MSG_WHISPERIGNORESUCCESS = 0xc1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì—게 ê·“ë§ê±°ë¶€ 요청실패함
: Whispering Block has failed.
*/
MSG_WHISPERIGNOREFAILED1 = 0xc2,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì—게 ê·“ë§ê±°ë¶€ 요청실패함 (ì¸ì›ì´ˆê³¼)
: Whispering Block has failed. Block List is full.
*/
MSG_WHISPERIGNOREFAILED2 = 0xc3,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì—게 ê·“ë§ê°€ëŠ¥ìƒíƒœë¡œë¨
: Whispering accepted.
*/
MSG_WHISPERNOIGNORESUCCESS = 0xc4,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì—게 ê·“ë§ê°€ëŠ¥ 요청실패함
: Command has failed.
*/
MSG_WHISPERNOIGNOREFAILED1 = 0xc5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì—게 ê·“ë§ê°€ëŠ¥ 요청실패함 (ì¸ì›ì´ˆê³¼)
: Command has failed. Block List is full.
*/
MSG_WHISPERNOIGNOREFAILED2 = 0xc6,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¦„ì˜ ì²˜ìŒê³¼ 마지막ì—는 공백문ìžë¥¼ 사용할 수 없습니다.
You cannot put a space at the beginning or end of a name.
*/
MSG_NO_SPACE_IN_NAME = 0xc7,
-/*20080827 to 20180621
+/*20080827 to 20180711
비공개
Private
*/
MSG_ROOM_PRIVATE2 = 0xc8,
-/*20080827 to 20180621
+/*20080827 to 20180711
공개
Public
*/
MSG_ROOM_PUBLIC2 = 0xc9,
-/*20080827 to 20180621
+/*20080827 to 20180711
SP가 부족합니다.
Not Enough SP
*/
MSG_USESKILL_FAIL_SP_INSUFFICIENT = 0xca,
-/*20080827 to 20180621
+/*20080827 to 20180711
HP가 부족합니다.
Not Enough HP
*/
MSG_USESKILL_FAIL_HP_INSUFFICIENT = 0xcb,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬사용 실패.
Skill has failed.
*/
MSG_NOT_ENOUGH_SKILLLEVE8 = 0xcc,
-/*20080827 to 20180621
+/*20080827 to 20180711
훔치기 실패.
Steal has failed.
*/
MSG_FAIL_STEAL = 0xcd,
-/*20080827 to 20180621
+/*20080827 to 20180711
êµí™˜ì°½
Trade
*/
MSG_EXCHANGE = 0xce,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë…걸기 실패.
Envenom skill has failed.
*/
MSG_FAIL_POISON = 0xcf,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ì•„ì´ë””로는 ì´ ì„œë²„ì— ì ‘ì†í•  수 없습니다.
You cannot use this ID on this server.
*/
MSG_ID_MISMATCH = 0xd0,
-/*20080827 to 20180621
+/*20080827 to 20180711
스피드가 í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Your Speed has increased.
*/
MSG_SPEEDUP = 0xd1,
-/*20080827 to 20180621
+/*20080827 to 20180711
스피드가 ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
Your Speed has decreased.
*/
MSG_SPEEDDOWN = 0xd2,
-/*20080827 to 20180621
+/*20080827 to 20180711
/기억 : 워프할 장소 기억(워프 ìŠ¤í‚¬ì´ ìžˆëŠ”ê²½ìš°)
/memo: To memorize a place as Warp Point (If you are an Acolyte Class character)
*/
MSG_EXPLAIN_TIP13 = 0xd3,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìž„ì˜ì˜ 위치
Random Area
*/
MSG_RANDOM_POS = 0xd4,
-/*20080827 to 20180621
+/*20080827 to 20180711
워프 í•  위치를 ì„ íƒí•˜ì„¸ìš”.
Select an Area to Warp
*/
MSG_SELECTWHERETOWARP = 0xd5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
Skill Level is not high enough
*/
MSG_NOTENOUGHSKILLLEVEL = 0xd6,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì €ìž¥ëœ ì›Œí”„í•  장소가 없습니다.
There are no memorized locations (Memo Points).
*/
MSG_NO_STORED_PLACE_TO_WARP = 0xd7,
-/*20080827 to 20180621
+/*20080827 to 20180711
워프 관련 ìŠ¤í‚¬ì´ ì—†ìŠµë‹ˆë‹¤.
You haven't learned Warp.
*/
MSG_NOWARPSKILL = 0xd8,
-/*20080827 to 20180621
+/*20080827 to 20180711
워프 장소로 저장ë¨.
Saved location as a Memo Point for Warp Skill.
*/
MSG_WARPPOINTSTORED = 0xd9,
-/*20080827 to 20180621
+/*20080827 to 20180711
취소
Cancel
*/
MSG_CANCEL = 0xda,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬 사용후 ì‹œê°„ì´ ì¶©ë¶„ížˆ 지나지 않았습니다.
There is a Delay after using a Skill.
*/
MSG_SKILLINTERVAL = 0xdb,
-/*20080827 to 20180621
+/*20080827 to 20180711
í•œë²ˆì— ê°€ì§ˆ 수 있는 ì•„ì´í…œ 종류수를 초과하여 ì•„ì´í…œì„ 가질 수 없습니다.
You can't have this item because you will exceed the weight limit.
*/
MSG_CANT_GET_ITEM_BECAUSE_COUNT = 0xdc,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ 최대 종류수를 초과 하였습니다.
Out of the maximum capacity
*/
MSG_INSUFFICIENT_OVER_COUNT = 0xdd,
-/*20080827 to 20180621
+/*20080827 to 20180711
수레아ì´í…œ
Cart Items
*/
MSG_MERCHANTITEM = 0xde,
-/*20080827 to 20180621
+/*20080827 to 20180711
수레 벗기
Take off Cart
*/
MSG_CARTOFF = 0xdf,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë…¸ì  ê°œì„¤
Opening a stall
*/
MSG_MERCHANTSHOPMAKER = 0xe0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë…¸ì ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”.
Please Name your Shop.
*/
MSG_ENTER_SHOP_TITLE = 0xe1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë‚˜ì˜ ë…¸ì 
My Shop
*/
MSG_ITEM_MY_STORE = 0xe2,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒì¸ ì•„ì´í…œ ìƒì 
Merchant Shop
*/
MSG_ITEM_MERCHANT_STORE = 0xe3,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒì¸ì—게 사고ìží•˜ëŠ” 품목
Buying Items
*/
MSG_ITEMS_FOR_BUY_FROM_MERCHANT = 0xe4,
/*20080827 to 20130508
%s 사기 실패 %s
-20130515 to 20180621
+20130515 to 20180711
%s 구입 실패 %s
%s Purchase Failed %s
*/
MSG_FAIL_BUY_ITEM_FROM_MERCHANT = 0xe5,
-/*20080827 to 20180621
+/*20080827 to 20180711
재고 부족.
Out of Stock
*/
MSG_INSUFFICIENT_STOCK = 0xe6,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s %d 개 팔림.
%s %d sold.
*/
MSG_ITEM_IS_SOLD = 0xe7,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë…¸ì ì—ì„œ 팔 수 있는 ì•„ì´í…œ
Available Items for Vending
*/
MSG_MERCHANTMIRRORITEM = 0xe8,
/*20080827 to 20111012
ëˆì´ 부족해서 ìŠ¤í‚¬ì„ ì“¸ 수 없습니다.
-20111017 to 20180621
+20111017 to 20180711
제니가 부족해서 ìŠ¤í‚¬ì„ ì‚¬ìš© í•  수 없습니다.
Skill has failed because you do not have enough zeny.
*/
MSG_SKILL_FAIL_MONEY = 0xe9,
-/*20080827 to 20180621
+/*20080827 to 20180711
사용할 대ìƒì„ ì„ íƒí•˜ì„¸ìš”
Select a Target.
*/
MSG_SELECTTARGET = 0xea,
-/*20080827 to 20180621
+/*20080827 to 20180711
/pk on : pk On /pk off : pk Off
/pk on: Turns PK On. /pk off: Turns PK Off.
*/
MSG_EXPLAIN_TIP14 = 0xeb,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë…¸ì 
Shop
*/
MSG_STREETSHOP = 0xec,
-/*20080827 to 20180621
+/*20080827 to 20180711
수레 ì•„ì´í…œ [Alt+W]
Cart Items [Alt+W]
*/
MSG_OPENCARTWINDOW = 0xed,
-/*20080827 to 20180621
+/*20080827 to 20180711
기본정보
Basic Information
*/
MSG_BASICINFOWND = 0xee,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¬´ê¸°ë¡œëŠ” ì´ìŠ¤í‚¬ì„ 사용할수 없습니다.
The skill cannot be used with this weapon.
*/
MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 사기 실패 재고 부족 현재 재고 %d 개.
Buying %s has been failed. Out of Stock. Current Stock %d.
*/
MSG_FAIL_BUY_ITEM_FROM_MERCHANT_NO_STOCK = 0xf0,
-/*20080827 to 20180621
+/*20080827 to 20180711
서버와 ë™ê¸°í™”ê°€ 틀려 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤.
You've been disconnected due to a time gap between you and the server.
*/
MSG_SPEEDHACK = 0xf1,
-/*20080827 to 20180621
+/*20080827 to 20180711
í™”ì‚´ì„ ìž¥ì°©í•˜ì„¸ìš”
Please equip the proper ammunition first.
*/
MSG_ERR_ATTACK_ARROW = 0xf2,
-/*20080827 to 20180621
+/*20080827 to 20180711
중량과다로 공격ì´ë‚˜ ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't attack or use skills because you've exceeded the Weight Limit.
*/
MSG_ERR_ATTACK_WEIGHT = 0xf3,
-/*20080827 to 20180621
+/*20080827 to 20180711
중량과다로 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use skills because you've exceeded the Weight Limit.
*/
MSG_ERR_SKILL_WEIGHT = 0xf4,
-/*20080827 to 20180621
+/*20080827 to 20180711
í™”ì‚´ì´ ìž¥ì°©ë˜ì—ˆìŠµë‹ˆë‹¤.
Ammunition has been equipped.
*/
MSG_MSG_ARROW_EQUIPMENT_SUCCESS = 0xf5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë ˆë“œì ¬ìŠ¤í†¤ì´ í•„ìš”í•©ë‹ˆë‹¤.
Red Gemstone required.
*/
MSG_NEED_REDJAMSTONE = 0xf6,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¸”ë£¨ì ¬ìŠ¤í†¤ì´ í•„ìš”í•©ë‹ˆë‹¤.
Blue Gemstone required.
*/
MSG_NEED_BLUEJAMSTONE = 0xf7,
-/*20080827 to 20180621
+/*20080827 to 20180711
힘 파ë¼ë©”í„°
Strength
*/
MSG_DESC_STR = 0xf8,
-/*20080827 to 20180621
+/*20080827 to 20180711
민첩성 파ë¼ë©”í„°
Agility
*/
MSG_DESC_AGI = 0xf9,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì²´ë ¥ 파ë¼ë©”í„°
Vitality
*/
MSG_DESC_VIT = 0xfa,
-/*20080827 to 20180621
+/*20080827 to 20180711
지력 파ë¼ë©”í„°
Intelligence
*/
MSG_DESC_INT = 0xfb,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì†ìž¬ì£¼ 파ë¼ë©”í„°
Dexterity
*/
MSG_DESC_DEX = 0xfc,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìš´ 파ë¼ë©”í„°
Luck
*/
MSG_DESC_LUK = 0xfd,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격력
Hit Point
*/
MSG_DESC_ATK = 0xfe,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°©ì–´ë ¥
Defence Rate
*/
MSG_DESC_DEF = 0xff,
-/*20080827 to 20180621
+/*20080827 to 20180711
명중률
Accuracy
*/
MSG_DESC_HIT = 0x100,
-/*20080827 to 20180621
+/*20080827 to 20180711
필살공격률
Critical Attack
*/
MSG_DESC_CRI = 0x101,
-/*20080827 to 20180621
+/*20080827 to 20180711
소ì†ê¸¸ë“œ
Affiliated Guild
*/
MSG_DESC_GUILD = 0x102,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê° íŒŒë¼ë©”í„° ë ˆë²¨ì—…ì— ì‚¬ìš©ë˜ëŠ” í¬ì¸íŠ¸
Points to level up each Parameter
*/
MSG_DESC_POINT = 0x103,
-/*20080827 to 20180621
+/*20080827 to 20180711
마법공격력
Magic Attack
*/
MSG_DESC_MATK = 0x104,
-/*20080827 to 20180621
+/*20080827 to 20180711
마법방어력
Magic Defense
*/
MSG_DESC_MDEF = 0x105,
-/*20080827 to 20180621
+/*20080827 to 20180711
회피율
Dodge
*/
MSG_DESC_FLEE = 0x106,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격스피드
Attack Speed
*/
MSG_DESC_ASPD = 0x107,
-/*20080827 to 20180621
+/*20080827 to 20180711
지역당 수용ì¸ì› 초과로 ì ‘ì†í•  수 없습니다.
Server is jammed due to over population. Please try again shortly.
*/
MSG_PC_OVERFLOW = 0x108,
-/*20080827 to 20180621
+/*20080827 to 20180711
옵션
Option
*/
MSG_OPTIONWND = 0x109,
-/*20080827 to 20180621
+/*20080827 to 20180711
E-MAIL ì¸ì¦ì´ ë˜ì§€ì•Šì•˜ê±°ë‚˜ ë¸”ëŸ­ëœ ê³„ì •ìž…ë‹ˆë‹¤.
Account ID blocked by the Game Master Team.
*/
MSG_ID_EMAIL_CONFIRM_NEEDED = 0x10a,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호가 틀립니다.
Incorrect User ID or Password. Please try again.
*/
MSG_INCORRECT_LOGIN_PASSWORD = 0x10b,
-/*20080827 to 20180621
+/*20080827 to 20180711
머리모양 ì„ íƒ
Choose Hairstyle
*/
MSG_SELECT_HAIR_STYLE = 0x10c,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격력
Hit Point
*/
MSG_ATK = 0x10d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°©ì–´ë ¥
Defence Rate
*/
MSG_DEF = 0x10e,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격스냅 On
Attack Snap On
*/
MSG_ATTACK_SNAP_ON = 0x10f,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격스냅 Off
Attack Snap Off
*/
MSG_ATTACK_SNAP_OFF = 0x110,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬스냅 On
Skill Snap On
*/
MSG_SKILL_SNAP_ON = 0x111,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬스냅 Off
Skill Snap Off
*/
MSG_SKILL_SNAP_OFF = 0x112,
-/*20080827 to 20180621
+/*20080827 to 20180711
/스냅 or /snap: 몬스터 공격시 스냅 On Off /스킬스냅 or /skillsnap: 스킬로 몬스터 공격시 스냅 On Off /ì•„ì´í…œìŠ¤ëƒ… or /itemsnap: ì•„ì´í…œ 주울때 스냅 On Off
/snap: Turns snap On | Off for fights, /skillsnap: Turns snap On | Off for skills. /itemsnap: Turns snap On | Off for items on the grounds.
*/
MSG_EXPLAIN_SNAP = 0x113,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œìŠ¤ëƒ… On
Item Snap On
*/
MSG_ITEM_SNAP_ON = 0x114,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œìŠ¤ëƒ… Off
Item Snap Off
*/
MSG_ITEM_SNAP_OFF = 0x115,
-/*20080827 to 20180621
+/*20080827 to 20180711
스냅
Snap
*/
MSG_SNAP = 0x116,
-/*20080827 to 20180621
+/*20080827 to 20180711
한가지 ì•„ì´í…œì„ 3만개 ì´ìƒ 가질수 없습니다.
You cannot carry more than 30,000 of one kind of item.
*/
MSG_CANT_GET_ITEM_OVERCOUNT_ONEITEM = 0x117,
-/*20080827 to 20180621
+/*20080827 to 20180711
레벨 30ì´ìƒì˜ ìºë¦­í„°ëŠ” 삭제할 수 없습니다. 삭제를 ì›í•˜ì‹œë©´ 관계ìžì—게 ë¬¸ì˜ í•˜ì„¸ìš”.
You cannot delete a Character with a level greater than 30. If you want to delete the character please contact a Game Master.
*/
MSG_CANT_DELETE_CHARACTER_OVER_30_LEVEL = 0x118,
/*20080827 to 20091208
ì´ì´í…œ êµí™˜ì¤‘ì—는 ì•„ì´í…œì„ 사고 팔 수 없습니다.
-20091215 to 20180621
+20091215 to 20180711
ì•„ì´í…œ êµí™˜ì¤‘ì—는 ì•„ì´í…œì„ 사고 팔 수 없습니다.
You cannot use an NPC shop while in a trade.
*/
MSG_FAIL_BUY_ITEM_ITEM_EXCHANGING = 0x119,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒì ëª…
Shop Name
*/
MSG_STALL_NAME = 0x11a,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬목ë¡
Skill Tree
*/
MSG_SKILLLIST = 0x11b,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬í¬ì¸íŠ¸ : %d
Skill Point: %d
*/
MSG_SKILLPOINT = 0x11c,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬사용 실패
Skill has failed.
*/
MSG_USESKILL_FAIL = 0x11d,
-/*20080827 to 20180621
+/*20080827 to 20180711
패시브
Passive
*/
MSG_PASSIVE = 0x11e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°ìž ì·¨ë“
Individual
*/
MSG_EXPDIV1 = 0x11f,
-/*20080827 to 20180621
+/*20080827 to 20180711
균등하게 분배
Shared
*/
MSG_EXPDIV2 = 0x120,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°ìž ì·¨ë“
Individual
*/
MSG_ITEMCOLLECT1 = 0x121,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티 전체 공유
Party Share
*/
MSG_ITEMCOLLECT2 = 0x122,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티 설정
Party Setup
*/
MSG_PARTYSETTING = 0x123,
-/*20080827 to 20180621
+/*20080827 to 20180711
경험치 분배방ì‹
How to share EXP
*/
MSG_HOWEXPDIV = 0x124,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ 수집방ì‹
How to share Items
*/
MSG_HOWITEMCOLLECT = 0x125,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티 리ë”만 설정할 수 있습니다.
Only the Party Leader can change this setting.
*/
MSG_ONLY_PARTYMASTER = 0x126,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ 갯수 안물어보기
Toggle Item Amount.
*/
MSG_NOQUESTION_ITEMCOUNT = 0x127,
-/*20080827 to 20180621
+/*20080827 to 20180711
^ff0000%d^000000 ì´ˆ í›„ì— ìºë¦­í„°ê°€ 지워집니다. 취소 하려면 취소 ë²„íŠ¼ì„ ëˆ„ë¥´ì„¸ìš”.
Character will be deleted after ^ff0000%d^000000 seconds. Press Cancel to quit.
*/
MSG_CHARARATER_DELETE_COUNT = 0x128,
-/*20080827 to 20180621
+/*20080827 to 20180711
êµí™˜í•  수 있는 최대 ì•„ì´í…œ 갯수는 10가지 입니다.
You cannot trade more than 10 types of items per trade.
*/
MSG_MAXEXCHANGE_IS_10_KIND = 0x129,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ì„œë²„를 ì´ìš©í•  수 없는 나ì´ìž…니다.
You are underaged.
*/
MSG_LIMIT_AGE = 0x12a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë©”ì¼ ì£¼ì†Œë¥¼ 입력하세요.
Please enter the deletion password.
*/
MSG_ENTER_EMAIL = 0x12b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë©”ì¼ ì£¼ì†Œ 입력하기
E-mail Address (Case Sensitive).
*/
MSG_ENTER_EMAIL_TOOLTIP = 0x12c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë©”ì¼ ì£¼ì†Œê°€ 틀려서 ìºë¦­í„°ê°€ ì‚­ì œ ë˜ì§€ 않았습니다.
Character Deletion has failed because you have entered an incorrect e-mail address.
*/
MSG_CANNOT_DELETE_CHARACTER_EMAIL = 0x12d,
-/*20080827 to 20180621
+/*20080827 to 20180711
계정 비밀번호를 입력하세요.
Enter Second Serial Cord of your Social Security number.
*/
MSG_ENTER_PEOPLE_REG_NUMBER = 0x12e,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호가 틀려서 ìºë¦­í„°ê°€ ì‚­ì œ ë˜ì§€ 않았습니다.
Character Deletion has failed because you have entered an incorrect SSN.
*/
MSG_CANNOT_DELETE_CHARACTER_PEOPLE_REG_NUMBER = 0x12f,
-/*20080827 to 20180621
+/*20080827 to 20180711
í•œë²ˆì— 15가지 ì´ìƒì˜ ì•„ì´í…œì„ 팔 수 없습니다.
You can't sell more than 15 types of Items at one time.
*/
MSG_CANT_SELL_OVER_15 = 0x130,
-/*20080827 to 20180621
+/*20080827 to 20180711
나ì´ì œí•œ ë•Œë¬¸ì— ì´ê³„정으로 ì´ì„œë²„ì— ì ‘ì†í•  수 없습니다.
The age limit from commandment tables cannot connect to this server.
*/
MSG_UNDER_AGE = 0x131,
-/*20080827 to 20180621
+/*20080827 to 20180711
무게가 50 í¼ì„¼íŠ¸ ì´ìƒì¼ë•ŒëŠ” HP SPê°€ ìžì—°ì ìœ¼ë¡œ íšŒë³µì´ ë˜ì§€ 않습니다.
HP/SP will not be restored when your carried weight is over 50% of the Weight Limit.
*/
MSG_NO_RECOVER_OVERWEIGHT = 0x132,
-/*20080827 to 20180621
+/*20080827 to 20180711
무게가 90 í¼ì„¼íŠ¸ ì´ìƒì¼ë•ŒëŠ” 공격과 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use Skills or Attack while your carried weight is over 90% of your Weight Limit.
*/
MSG_NO_ATTACK_OVERWEIGHT = 0x133,
-/*20080827 to 20180621
+/*20080827 to 20180711
HP SPê°€ ìžì—°ì ìœ¼ë¡œ íšŒë³µì´ ê°€ëŠ¥í•œ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Your HP/SP are now being restored naturally.
*/
MSG_NO_RECOVER_OVERWEIGHT_RELEASED = 0x134,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격과 ìŠ¤í‚¬ì´ ê°€ëŠ¥í•œ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Attack and Skills are now available.
*/
MSG_NO_ATTACK_OVERWEIGHT_RELEASED = 0x135,
-/*20080827 to 20180621
+/*20080827 to 20180711
서버 ì ê²€ì¤‘입니다.
Your Game's Exe File is not the latest version.
*/
MSG_INVALID_VERSION = 0x136,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œì´ ëª¨ë‘ íŒ”ë ¸ìŠµë‹ˆë‹¤.
Items are sold out.
*/
MSG_ITEM_IS_SOLD_OUT = 0x137,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅내용 파ì¼ë¡œ 저장하기
Save Chat as Text File
*/
MSG_WRITE_CHAT_TO_FILE = 0x138,
-/*20080827 to 20180621
+/*20080827 to 20180711
/갈무리 or /savechat : 채팅 ë‚´ìš© 파ì¼ë¡œ 저장하기.
/savechat: Save a Chat Log
*/
MSG_EXPLAIN_SAVE_CHAT = 0x139,
-/*20080827 to 20180621
+/*20080827 to 20180711
계정 만들기
Register
*/
MSG_MAKEACCOUNT = 0x13a,
-/*20080827 to 20180621
+/*20080827 to 20180711
수신거부하기
Reject Whispering
*/
MSG_REQ_EX_LIST = 0x13b,
-/*20080827 to 20180621
+/*20080827 to 20180711
수신거부해제하기
Allow Whispering
*/
MSG_REQ_IN = 0x13c,
-/*20080827 to 20180621
+/*20080827 to 20180711
미스표시 On
Shows ''Miss''
*/
MSG_MISS_EFFECT_ON = 0x13d,
-/*20080827 to 20180621
+/*20080827 to 20180711
미스표시 Off
Shows ''Miss''
*/
MSG_MISS_EFFECT_OFF = 0x13e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¹´ë©”ë¼ê³ ì • On
Camera Zooming On
*/
MSG_FIXED_CAMERA_ON = 0x13f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¹´ë©”ë¼ê³ ì • Off
Camera Zooming Off
*/
MSG_FIXED_CAMERA_OFF = 0x140,
-/*20080827 to 20180621
+/*20080827 to 20180711
/camera : 플레ì´ì–´ì—게 ì¹´ë©”ë¼ê³ ì • On Off /miss : 미스ì´íŽ™íŠ¸ On Off
/camera: Camera Zooming On or Off. /miss: Toggle ''Miss'' display
*/
MSG_EXPLAIN_CAMERA_MISS = 0x141,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬정보보기
View Skill Info
*/
MSG_SEE_INFORMATION_OF_SKILL = 0x142,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬ì´ë¦„바꾸기
Change Skill
*/
MSG_CHANGE_SKILL_NAME = 0x143,
-/*20080827 to 20180621
+/*20080827 to 20180711
스프ë¼ì´íŠ¸ í•´ìƒë„
Sprite Resolution
*/
MSG_SPRITE_RESOLUTION = 0x144,
-/*20080827 to 20180621
+/*20080827 to 20180711
í…ìŠ¤ì³ í•´ìƒë„
Texture Resolution
*/
MSG_TEXTURE_RESOLUTION = 0x145,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë””í…Œì¼ ì¡°ì •
Arrange Detail
*/
MSG_DETAILLEVELWND = 0x146,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s Zeny íšë“
You got %s Zeny
*/
MSG_GET_ZENY = 0x147,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드명
Guild Name
*/
MSG_GUILDNAME = 0x148,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드레벨
Guild lvl
*/
MSG_GUILDLEVEL = 0x149,
-/*20080827 to 20180621
+/*20080827 to 20180711
마스터ì´ë¦„
ClanMaster Name
*/
MSG_GUILD_MASTER_NAME = 0x14a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¡°í•©ì›ìˆ˜
Number of Members
*/
MSG_GUILD_NUM_MEMBER = 0x14b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¡°í•©ì› í‰ê· ë ˆë²¨
Avg.lvl of Guildsmen
*/
MSG_GUILD_AVG_MEMBER_LEVEL = 0x14c,
-/*20080827 to 20180621
+/*20080827 to 20180711
관리ì˜ì§€
Castles Owned
*/
MSG_GUILD_MANAGE_LAND = 0x14d,
-/*20080827 to 20180621
+/*20080827 to 20180711
성향
Tendency
*/
MSG_GUILD_FAIR = 0x14e,
-/*20080827 to 20180621
+/*20080827 to 20180711
경험치
EXP
*/
MSG_GUILD_EXP = 0x14f,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드엠블렘
Emblem
*/
MSG_GUILD_EMBLEM = 0x150,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드ìƒë‚©í¬ì¸íŠ¸
Tax Point
*/
MSG_GUILD_POINT = 0x151,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë™ë§¹ê¸¸ë“œ
Alliances
*/
MSG_ALLY_GUILD = 0x152,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì ëŒ€ê¸¸ë“œ
Antagonists
*/
MSG_HOSTILITY_GUILD = 0x153,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드정보
Guild Info
*/
MSG_GUILDINFOMANAGE = 0x154,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¡°í•©ì›ì •ë³´
Guildsmen Info
*/
MSG_GUILDMEMBERMANAGE = 0x155,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì§ìœ„설정
Position
*/
MSG_GUILDPOSITIONMANAGE = 0x156,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드스킬
Guild Skill
*/
MSG_GUILDSKILL = 0x157,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¶”ë°©ìž ë¦¬ìŠ¤íŠ¸
Expel History
*/
MSG_GUILDBANISHEDMEMBER = 0x158,
-/*20080827 to 20180621
+/*20080827 to 20180711
공지사항
Guild Notice
*/
MSG_GUILDNOTICE = 0x159,
-/*20080827 to 20180621
+/*20080827 to 20180711
전체길드 리스트
Entire Guild List
*/
MSG_GUILDTOTALINFO = 0x15a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê·“ë§ ë¦¬ìŠ¤íŠ¸
Whispering List
*/
MSG_WHISPERLISTWND = 0x15b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê·“ë§ì°½ 열기
Open Whispering Window
*/
MSG_OPENWHISPERLISTWND = 0x15c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê·“ë§ ë¦¬ìŠ¤íŠ¸ ì°½ 여는법 : [Alt] + [H] 를 누르면 ê·“ë§ ë¦¬ìŠ¤íŠ¸ ì°½ì´ ì—´ë¦½ë‹ˆë‹¤.
How to Open Whispering List: Press [Alt] + [H]
*/
MSG_EXPLAIN_WHISPER_LIST_WND = 0x15d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìžë™ìœ¼ë¡œ ê·“ë§ì°½ 열기
Open Whispering List Automatically
*/
MSG_AUTOOPENWHISPERLISTWND = 0x15e,
-/*20080827 to 20180621
+/*20080827 to 20180711
지우기
Delete
*/
MSG_DELETE = 0x15f,
-/*20080827 to 20180621
+/*20080827 to 20180711
다ìŒë¶€í„° 열리지 ì•ŠìŒ
Close since next
*/
MSG_DONTOPEN = 0x160,
-/*20080827 to 20180621
+/*20080827 to 20180711
마지막으로 ì ‘ì†í•œ 시간
Last Log-in Time
*/
MSG_LAST_LOGIN_TIME = 0x161,
-/*20080827 to 20180621
+/*20080827 to 20180711
마지막으로 ì ‘ì†í•œ IP
Last Log-in IP
*/
MSG_LAST_LOGIN_IP = 0x162,
-/*20080827 to 20180621
+/*20080827 to 20180711
친구 설정
Friend Setup
*/
MSG_FRIEND_SETTING = 0x163,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì •ë§ ì§€ìš°ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure that you want to delete?
*/
MSG_DO_YOU_REALLY_WANT_DELETE = 0x164,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì •ë§ íƒˆí‡´í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure that you want to leave?
*/
MSG_DO_YOU_REALLY_WANT_LEAVE = 0x165,
-/*20080827 to 20180621
+/*20080827 to 20180711
친구로 등ë¡í•˜ê¸°
Register as a Friend
*/
MSG_ADD_TO_FRIEND_CHAR_LIST = 0x166,
-/*20080827 to 20180621
+/*20080827 to 20180711
친구ì¼ë•Œ ìžë™ìœ¼ë¡œ 1:1ì°½ 열기
Open 1:1 Chat between Friends
*/
MSG_AUTOOPENWHISPERLISTWND_FRIEND = 0x167,
-/*20080827 to 20180621
+/*20080827 to 20180711
1:1창 열기
Open 1:1 Chat
*/
MSG_OPEN_1ON1_WINDOW = 0x168,
-/*20080827 to 20180621
+/*20080827 to 20180711
친구가 ì•„ë‹ë•Œ ìžë™ìœ¼ë¡œ 1:1ì°½ 열기
Open 1:1 Chat between Strangers
*/
MSG_AUTOOPEN_1ON1_WINDOW = 0x169,
-/*20080827 to 20180621
+/*20080827 to 20180711
1:1창 열릴때 소리로 알림
Alarm when you recieve a 1:1 Chat
*/
MSG_WHISPER_OPEN_SOUND = 0x16a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì •ë§ ì œëª…ì‹œí‚¤ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure that you want to expel?
*/
MSG_DO_YOU_REALLY_WANT_EXPEL = 0x16b,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s ë‹˜ì´ ê¸¸ë“œë¥¼ 탈퇴했습니다.
%s has withdrawn from the guild.
*/
MSG_USER_LEFT_GUILD = 0x16c,
-/*20080827 to 20180621
+/*20080827 to 20180711
탈퇴사유 : %s
Secession Reason: %s
*/
MSG_REASON_LEAVE_GUILD = 0x16d,
/*20080827 to 20120202
길드 해체 실패
-20120207 to 20180621
+20120207 to 20180711
ê¸¸ë“œëª…ì´ ì¼ì¹˜í•˜ì§€ 않습니다
You have failed to disband the guild.
*/
MSG_DISORGANIZE_GUILD_FAILURE = 0x16e,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드해체사유 : %s
Disband Reason: %s
*/
MSG_DISORGANIZATION_REASON = 0x16f,
-/*20080827 to 20180621
+/*20080827 to 20180711
해당 ê³„ì •ì€ ì‚­ì œëœ ì•„ì´ë”” 입니다.
This ID has been removed.
*/
MSG_DELETED_ACCOUNT = 0x170,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŒë§¤ê°€ :
Price:
*/
MSG_SELLPRICE = 0x171,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s ë‹˜ì´ ê¸¸ë“œì—ì„œ 추방ë˜ì—ˆìŠµë‹ˆë‹¤.
%s has been expelled from our guild.
*/
MSG_BAN_GUILD = 0x172,
-/*20080827 to 20180621
+/*20080827 to 20180711
추방사유 : %s
Expulsion Reason: %s
*/
MSG_REASON_BAN_GUILD = 0x173,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œì„ ì°©ìš©í•  수 없습니다.
You can't put this item on.
*/
MSG_CAN_NOT_EQUIP_ITEM = 0x174,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŒŒí‹°ì„¤ì •ì„ ë³€ê²½í•  수 없습니다.
You can't modify Party Setup.
*/
MSG_PARTYSETTING_CHANGE_IMPOSSIBLE = 0x175,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드가 만들어 졌습니다.
Guild has been Created.
*/
MSG_GUILD_MAKE_SUCCESS = 0x176,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¯¸ ê¸¸ë“œì— ì†í•´ìžˆìŠµë‹ˆë‹¤.
You are already in a Guild.
*/
MSG_GUILD_MAKE_ALREADY_MEMBER = 0x177,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ì´ë¦„ì˜ ê¸¸ë“œê°€ 존재합니다.
That Guild Name already exists.
*/
MSG_GUILD_MAKE_GUILD_EXIST = 0x178,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드ì—ì„œ 초청 메시지가 왔습니다. 가입하겠습니까?
Guild has sent you an invitation. Would you like to join this Guild?
*/
MSG_SUGGEST_JOIN_GUILD = 0x179,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë‹¤ë¥¸ê¸¸ë“œì— ê°€ìž…ë˜ì–´ 있습니다.
He/She is already in a Guild.
*/
MSG_CHARACTER_IS_ALREADY_IN_GUILD = 0x17a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê¸¸ë“œê°€ìž…ì„ ê±°ì ˆ 했습니다.
Offer Rejected
*/
MSG_CHARACTER_REJECT_JOIN_GUILD = 0x17b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê¸¸ë“œê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
Offer Accepted
*/
MSG_CHARACTER_ACCEPT_JOIN_GUILD = 0x17c,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드정ì›ì„ 초과했습니다.
Your Guild is Full.
*/
MSG_TOO_MANY_PEOPLE_IN_GUILD = 0x17d,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)님 ê¸¸ë“œì— ê°€ìž…ìš”ì²­
Send (%s) a Guild invitation
*/
MSG_REQ_JOIN_GUILD = 0x17e,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬 ë ˆë²¨ì´ ëª¨ìžë¼ì„œ 매너í¬ì¸íŠ¸ë¥¼ 줄 수 없습니다.
You haven't learned enough skills for aligning.
*/
MSG_NOT_ENOUGH_FOR_MANNER_POINT = 0x17f,
-/*20080827 to 20180621
+/*20080827 to 20180711
매너 í¬ì¸íŠ¸ 주기 성공
Aligning completed.
*/
MSG_GIVING_MANNER_POINT_SUCCESS = 0x180,
-/*20080827 to 20180621
+/*20080827 to 20180711
오늘 ì´ë¯¸ 사용했습니다.
You already spent your point for today.
*/
MSG_YOU_USE_TODAY_ALREADY = 0x181,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ìºë¦­í„°ì—게 지급한지 í•œë‹¬ì´ ì§€ë‚˜ì§€ 않았습니다.
Hasn't been a month yet since you aligned this person.
*/
MSG_ONE_MONTH_NOT_PASSED = 0x182,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 님으로부터 플러스 매너 í¬ì¸íŠ¸ë¥¼ 받았습니다.
Remember, Spamming isn't nice.
*/
MSG_RECEIVE_PLUS_MANNER_POINT = 0x183,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 님으로부터 마ì´ë„ˆìŠ¤ 매너 í¬ì¸íŠ¸ë¥¼ 받았습니다.
Please refrain from ill-mannered conduct, thank you.
*/
MSG_RECEIVE_MINUS_MANNER_POINT = 0x184,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅 금지 시간 줄ì´ê¸°(풀기)
Align with a Good Point
*/
MSG_GIVE_PLUS_MANNER_POINT = 0x185,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅 금지 시간 늘ì´ê¸°(걸기)
Align with a Bad Point
*/
MSG_GIVE_MINUS_MANNER_POINT = 0x186,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)ë‹˜ê³¼ì˜ ê±°ëž˜ìš”ì²­
Request a deal with (%s)
*/
MSG_REQ_DEAL_WITH2 = 0x187,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)님 íŒŒí‹°ì— ê°€ìž…ìš”ì²­
Ask (%s) to join your party
*/
MSG_REQ_JOIN_PARTY2 = 0x188,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드ì—ì„œ ë™ë§¹ìš”ì²­ 메시지가 왔습니다. ë™ë§¹í•˜ê² ìŠµë‹ˆê¹Œ?
Guild is asking you to agree to an Alliance with them. Do you accept?
*/
MSG_SUGGEST_ALLY_GUILD = 0x189,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¯¸ ë™ë§¹ë˜ì–´ 있습니다.
This Guild is already your Ally.
*/
MSG_REQALLYGUILD_ALREADY_ALLIED = 0x18a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë™ë§¹ì„ ê±°ì ˆ 했습니다.
You reject the offer
*/
MSG_REQALLYGUILD_REJECT = 0x18b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë™ë§¹ì„ ìˆ˜ë½ í–ˆìŠµë‹ˆë‹¤.
You accept the offer
*/
MSG_REQALLYGUILD_ACCEPT = 0x18c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒëŒ€ê¸¸ë“œì˜ ë™ë§¹ê¸¸ë“œì˜ 수가 초과 ë˜ì—ˆìŠµë‹ˆë‹¤.
They have too many Alliances.
*/
MSG_REQALLYGUILD_OVERSIZE = 0x18d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê¸¸ë“œì˜ ë™ë§¹ê¸¸ë“œì˜ 수가 초과 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have too many Alliances.
*/
MSG_REQALLYMYGUILD_OVERSIZE = 0x18e,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드 ë™ë§¹ 요청
Set this guild as an Alliance
*/
MSG_REQ_ALLY_GUILD = 0x18f,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드가 성공ì ìœ¼ë¡œ í•´ì²´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Guild was successfully disbanded.
*/
MSG_DISORGANIZE_GUILD_SUCCESS = 0x190,
-/*20080827 to 20180621
+/*20080827 to 20180711
주민등ë¡ë²ˆí˜¸ê°€ 틀려서 길드가 í•´ì²´ë˜ì§€ 않았습니다.
You have failed to disband the guild due to your incorrect SSN.
*/
MSG_DISORGANIZE_GUILD_INVALIDKEY = 0x191,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드맴버가 존재해서 길드가 í•´ì²´ë˜ì§€ 않았습니다.
You have failed to disband the guild because there are guildsmen still present.
*/
MSG_DISORGANIZE_GUILD_MEMBEREXIST = 0x192,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드 ì ëŒ€ 요청
Set this guild as an Antagonist
*/
MSG_REQ_HOSTILE_GUILD = 0x193,
-/*20080827 to 20180621
+/*20080827 to 20180711
머리색깔 ì„ íƒ
Choose Hair Color
*/
MSG_SELECT_HAIR_COLOR = 0x194,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드결성시 필요한 ì•„ì´í…œì´ 없습니다.
You don't have necessary item to create a Guild.
*/
MSG_GUILD_MAKE_GUILD_NONE_ITEM = 0x195,
-/*20080827 to 20180621
+/*20080827 to 20180711
몬스터 정보
Monster Info
*/
MSG_MONSTER_INFO_WINDOW = 0x196,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¦„
Name
*/
MSG_NAME = 0x197,
-/*20080827 to 20180621
+/*20080827 to 20180711
레벨
Level
*/
MSG_LEVEL = 0x198,
-/*20080827 to 20180621
+/*20080827 to 20180711
HP
*/
MSG_HP = 0x199,
-/*20080827 to 20180621
+/*20080827 to 20180711
í¬ê¸°
Size
*/
MSG_SIZE = 0x19a,
-/*20080827 to 20180621
+/*20080827 to 20180711
종족
Type
*/
MSG_RACETYPE = 0x19b,
-/*20080827 to 20180621
+/*20080827 to 20180711
MDEF
*/
MSG_MDEFPOWER = 0x19c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì†ì„±
Attribute
*/
MSG_PROPERTY = 0x19d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ç„¡
Neutral
*/
MSG_PROPERTY_NEUTURAL = 0x19e,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ°´
Water
*/
MSG_PROPERTY_WATER = 0x19f,
-/*20080827 to 20180621
+/*20080827 to 20180711
地
Earth
*/
MSG_PROPERTY_EARTH = 0x1a0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ç«
Fire
*/
MSG_PROPERTY_FIRE = 0x1a1,
-/*20080827 to 20180621
+/*20080827 to 20180711
風
Wind
*/
MSG_PROPERTY_WIND = 0x1a2,
-/*20080827 to 20180621
+/*20080827 to 20180711
毒
Poison
*/
MSG_PROPERTY_POISON = 0x1a3,
-/*20080827 to 20180621
+/*20080827 to 20180711
è–
Holy
*/
MSG_PROPERTY_SAINT = 0x1a4,
-/*20080827 to 20180621
+/*20080827 to 20180711
æš—
Shadow
*/
MSG_PROPERTY_DARK = 0x1a5,
-/*20080827 to 20180621
+/*20080827 to 20180711
念
Ghost
*/
MSG_PROPERTY_MENTAL = 0x1a6,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ­»
Undead
*/
MSG_PROPERTY_UNDEAD = 0x1a7,
-/*20080827 to 20180621
+/*20080827 to 20180711
현재는 ì•„ì´í…œì„ 만들 수 없습니다.
You can't create items yet.
*/
MSG_CANT_MAKE_ITEM = 0x1a8,
-/*20080827 to 20180621
+/*20080827 to 20180711
제조 목ë¡
Item List you can craft
*/
MSG_MAKE_LIST = 0x1a9,
-/*20080827 to 20180621
+/*20080827 to 20180711
만들기
Create
*/
MSG_MAKE_TARGET = 0x1aa,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì— í•„ìš”í•œ 재료:
's materials
*/
MSG_REQUIRE_FOR_MAKE_TARGET = 0x1ab,
-/*20080827 to 20180621
+/*20080827 to 20180711
만들기 실패
item creation failed.
*/
MSG_MAKE_TARGET_FAIL = 0x1ac,
-/*20080827 to 20180621
+/*20080827 to 20180711
만들기 성공
item created successfully.
*/
MSG_MAKE_TARGET_SUCCEESS = 0x1ad,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 만들기를 실패하였습니다.
item creation failed.
*/
MSG_MAKE_TARGET_FAIL_MSG = 0x1ae,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 만들기를 성공했습니다.
item created successfully.
*/
MSG_MAKE_TARGET_SUCCEESS_MSG = 0x1af,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
You are not the required lvl.
*/
MSG_NOT_ENOUGH_LEVEL = 0x1b0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë ˆë²¨ì´ ë„ˆë¬´ 높습니다.
Too high lvl for this job.
*/
MSG_TOO_HIGH_LEVEL = 0x1b1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì§ì—…ì´ ì í•©í•˜ì§€ 않습니다.
Not the suitable job for this type of work.
*/
MSG_NOT_ACCEPTABLE_JOB = 0x1b2,
-/*20080827 to 20180621
+/*20080827 to 20180711
토키 박스 트랩 메세지
Record a message in the Talkie Box
*/
MSG_TALKBOX_WINDOW = 0x1b3,
-/*20080827 to 20180621
+/*20080827 to 20180711
기ë¡í•  메세지를 입력하시기 ë°”ëžë‹ˆë‹¤.
Please type a message for the Talkie Box
*/
MSG_TALKBOX_WINDOW_MSG = 0x1b4,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드ì—게 보냄
Send to Guild
*/
MSG_SEND_TO_GUILD = 0x1b5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê²°ì œëœ ê³„ì •ì´ ì•„ë‹™ë‹ˆë‹¤. ê²°ì œ 페ì´ì§€ë¡œ ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You didn't pay for this ID. Would you like to pay for it now?
*/
MSG_NOT_SETTLED = 0x1b6,
-/*20080827 to 20180621
+/*20080827 to 20180711
서버가 혼잡한 관계로 잠시후 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Server is jammed due to overpopulation. Please try again after few minutes.
*/
MSG_ACCOUNT_BUSY = 0x1b7,
-/*20080827 to 20180621
+/*20080827 to 20180711
지난 ì ‘ì† ì •ë³´ê°€ 남아 있습니다. 30ì´ˆì •ë„ ì§€ë‚œë’¤ì— ë‹¤ì‹œ ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Server still recognizes your last log-in. Please try again after a few minutes.
*/
MSG_INFORMATION_REMAINED = 0x1b8,
-/*20080827 to 20180621
+/*20080827 to 20180711
매 풀어주기
Release Falcon
*/
MSG_BIRDOFF = 0x1b9,
-/*20080827 to 20180621
+/*20080827 to 20180711
페코페코 내리기
Dismount
*/
MSG_CHIKENOFF = 0x1ba,
-/*20080827 to 20180621
+/*20080827 to 20180711
å°
Small
*/
MSG_SIZE_SMALL = 0x1bb,
-/*20080827 to 20180621
+/*20080827 to 20180711
中
Med
*/
MSG_SIZE_MIDDLE = 0x1bc,
-/*20080827 to 20180621
+/*20080827 to 20180711
大
Big
*/
MSG_SIZE_BIG = 0x1bd,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë”블
Double
*/
MSG_DOUBLE = 0x1be,
-/*20080827 to 20180621
+/*20080827 to 20180711
트리플
Triple
*/
MSG_TRIPLE = 0x1bf,
-/*20080827 to 20180621
+/*20080827 to 20180711
쿼드로플
Quadruple
*/
MSG_QUADROPLE = 0x1c0,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 까지 로그ì¸ì„ 금지하고 있습니다.
You are prohibited to log in until %s.
*/
MSG_LOGIN_REFUSE_BLOCKED_UNTIL = 0x1c1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì˜
's
*/
MSG_MANUFACTURED_NORMAL_ITEM = 0x1c2,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì˜ íŒŒì´ì–´
's Fire
*/
MSG_MANUFACTURED_FIRE_ITEM = 0x1c3,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì˜ ì•„ì´ìŠ¤
's Ice
*/
MSG_MANUFACTURED_ICE_ITEM = 0x1c4,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì˜ ìœˆë“œ
's Wind
*/
MSG_MANUFACTURED_WIND_ITEM = 0x1c5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì˜ ì–´ìŠ¤
's Earth
*/
MSG_MANUFACTURED_EARTH_ITEM = 0x1c6,
-/*20080827 to 20180621
+/*20080827 to 20180711
211.239.161.246
38.144.194.2
*/
MSG_ACCOUNT_ADDRESS = 0x1c7,
-/*20080827 to 20180621
+/*20080827 to 20180711
6900
*/
MSG_ACCOUNT_PORT = 0x1c8,
/*20080827 to 20171206
http://www.ragnarok.co.kr
-20171213 to 20180621
+20171213 to 20180711
http://roz.gnjoy.com/
http://www.ragnarok.co.kr
*/
MSG_REGISTRATION_WEB_URL = 0x1c9,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s ì‚¬ìš©ìž ê°•ì œ 종료
Kill %s
*/
MSG_BAN_USER = 0x1ca,
-/*20080827 to 20180621
+/*20080827 to 20180711
무지쎈
Very Strong
*/
MSG_ONE_STARPIECE = 0x1cb,
-/*20080827 to 20180621
+/*20080827 to 20180711
무지무지쎈
Very Very Strong
*/
MSG_TWO_STARPIECE = 0x1cc,
-/*20080827 to 20180621
+/*20080827 to 20180711
무무무쎈
Very Very Very Strong
*/
MSG_THREE_STARPIECE = 0x1cd,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드 추방 사유
The Reason of Expulsion
*/
MSG_GUILD_KICK_REASON = 0x1ce,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격 ì†ë„ê°€ ì¦ê°€í–ˆìŠµë‹ˆë‹¤.
Attack Speed is up.
*/
MSG_INCATTACKSPEED = 0x1cf,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격 ì†ë„ê°€ ê°ì†Œí–ˆìŠµë‹ˆë‹¤.
Attack Speed is down.
*/
MSG_DECATTACKSPEED = 0x1d0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¬´ê¸°ì˜ ê³µê²©ë ¥ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon Damage is improved.
*/
MSG_INCWEAPONATTACK = 0x1d1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¬´ê¸°ì˜ ê³µê²©ë ¥ì´ ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon Damage is reduced.
*/
MSG_DECWEAPONATTACK = 0x1d2,
-/*20080827 to 20180621
+/*20080827 to 20180711
시전 딜레ì´ê°€ 줄었습니다.
Cast Delay is reduced.
*/
MSG_FASTPREDELAY = 0x1d3,
-/*20080827 to 20180621
+/*20080827 to 20180711
시전 딜레ì´ê°€ ì •ìƒìœ¼ë¡œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Cast Delay has returned to normal.
*/
MSG_NORMALPREDELAY = 0x1d4,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¬´ê¸°ì— ë…ì†ì„±ì´ 부여ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon is temporarily enchanted with Poison.
*/
MSG_WEAPONPROPERTYPOISON = 0x1d5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¬´ê¸°ì— ì„±ì†ì„±ì´ 부여ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon is temporarily enchanted with an elemental property.
*/
MSG_WEAPONPROPERTYSAINT = 0x1d6,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¬´ê¸°ì˜ ì›ëž˜ì†ì„±ì´ ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon has changed back to normal.
*/
MSG_WEAPONPROPERTYORIGINAL = 0x1d7,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°©ì–´êµ¬ì— ì„±ì†ì„±ì´ 부여ë˜ì—ˆìŠµë‹ˆë‹¤.
Armor has been enchanted with the Holy Ghost.
*/
MSG_ARMORPROPERTYSAINT = 0x1d8,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°©ì–´êµ¬ì˜ ì›ëž˜ì†ì„±ì´ ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
Armor has changed back to normal.
*/
MSG_ARMORPROPERTYORIGINAL = 0x1d9,
-/*20080827 to 20180621
+/*20080827 to 20180711
배리어 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Barrier Formed.
*/
MSG_BARRIOR = 0x1da,
-/*20080827 to 20180621
+/*20080827 to 20180711
배리어 ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Barrier Canceled.
*/
MSG_DISAPPEARBARRIOR = 0x1db,
-/*20080827 to 20180621
+/*20080827 to 20180711
소형, 중형, 대형 몬스터ì—게 100% ê³µê²©ë ¥ì„ ì¤ë‹ˆë‹¤.
Weapon Perfection Initiated.
*/
MSG_PERFECTDAMAGE = 0x1dc,
-/*20080827 to 20180621
+/*20080827 to 20180711
웨í°í¼íŽ™ì…˜ 모드가 í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon perfection Canceled.
*/
MSG_DISAPPEARPERFECTDAMAGE = 0x1dd,
-/*20080827 to 20180621
+/*20080827 to 20180711
무기가 íŒŒê´´ë  ê°€ëŠ¥ì„±ì´ ë†’ì•„ì§„ 대신 ë¬´ê¸°ì˜ ê³µê²©ë ¥ì´ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
Power-Thrust Initiated.
*/
MSG_OVERTHRUSTING = 0x1de,
-/*20080827 to 20180621
+/*20080827 to 20180711
오버트러스트 ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Power-Thrust Canceled.
*/
MSG_DISAPPEAROVERTHRUSTING = 0x1df,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¬´ê¸°ì˜ ìµœëŒ€ ì„±ëŠ¥ì„ ëŒì–´ëƒ…니다.
Maximize-Power Initiated.
*/
MSG_MAXIMIZE = 0x1e0,
-/*20080827 to 20180621
+/*20080827 to 20180711
맥시마ì´ì¦ˆ ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Maximize-Power Canceled.
*/
MSG_DISAPPEARMAXIMIZE = 0x1e1,
-/*20080827 to 20180621
+/*20080827 to 20180711
[신서버]
[New Server]
*/
MSG_SERVER_PROPERTY_NEW = 0x1e2,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%d 명)
(%d players)
*/
MSG_SERVER_USER_COUNT = 0x1e3,
-/*20080827 to 20180621
+/*20080827 to 20180711
(ì ê²€ì¤‘)
(On the maintenance)
*/
MSG_SERVER_INSPECTING = 0x1e4,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드멤버 %së‹˜ì´ ì ‘ì†í•˜ì…¨ìŠµë‹ˆë‹¤.
Guild member %s has connected.
*/
MSG_GUILD_MEMBER_STATUS_ONLINE = 0x1e5,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드멤버 %së‹˜ì´ ì¢…ë£Œí•˜ì…¨ìŠµë‹ˆë‹¤.
Guild member %s has disconnected.
*/
MSG_GUILD_MEMBER_STATUS_OFFLINE = 0x1e6,
-/*20080827 to 20180621
+/*20080827 to 20180711
경험치 %d ì–»ìŒ
You got %d Base EXP.
*/
MSG_GOT_EXPERIENCE_POINT = 0x1e7,
-/*20080827 to 20180621
+/*20080827 to 20180711
잡경험치 %d ì–»ìŒ
You got %d Job EXP.
*/
MSG_GOT_JOB_EXPERIENCE_POINT = 0x1e8,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드ì—ì„œ 탈퇴 했습니다.
You left the guild.
*/
MSG_LEFT_GUILD = 0x1e9,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드ì—ì„œ 추방 당했습니다.
You have been expelled from the Guild.
*/
MSG_BAN_FROM_GUILD = 0x1ea,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ ê°ì • 성공
Item Appraisal has completed successfully.
*/
MSG_ITEM_IDENTIFY_SUCCEESS = 0x1eb,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ ê°ì • 실패
Item appraisal has failed.
*/
MSG_ITEM_IDENTIFY_FAIL = 0x1ec,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ ì¡°í•© 성공
Compounding has completed successfully.
*/
MSG_ITEM_COMPOUNDING_SUCCEESS = 0x1ed,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ ì¡°í•© 실패
Compounding has failed.
*/
MSG_ITEM_COMPOUNDING_FAIL = 0x1ee,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드 ì ëŒ€ 성공
Antagonist has been set.
*/
MSG_HOSTILE_GUILD_SUCCEESS = 0x1ef,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì ëŒ€ 길드수 초과로 길드 ì ëŒ€ 실패
Guild has too many Antagonists.
*/
MSG_TOO_MANY_HOSTILE_GUILD = 0x1f0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¯¸ ì ëŒ€ 길드 입니다
Already set as an Antagonist
*/
MSG_ALREADY_REGISTERED_HOSTILE_GUILD = 0x1f1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì œë ¨ì´ ì„±ê³µì ìœ¼ë¡œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Upgrade has been completed successfully.
*/
MSG_ITEM_REFINING_SUCCEESS = 0x1f2,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì œë ¨ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Upgrade has failed.
*/
MSG_ITEM_REFINING_FAIL = 0x1f3,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ê³³ì—서는 순간ì´ë™ì´ 불가능합니다.
Unavailable Area to Teleport
*/
MSG_IMPOSSIBLE_TELEPORT_AREA = 0x1f4,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ìž¥ì†ŒëŠ” 기억할 수 없습니다.
Unable to memorize this place as Warp Point
*/
MSG_POSSIBLE_TELEPORT_AREA = 0x1f5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì§€ê¸ˆì€ ì¢…ë£Œí•  수 없습니다.
Please wait 10 seconds before trying to log out.
*/
MSG_CANT_EXIT_NOW = 0x1f6,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì§ìœ„
Position
*/
MSG_POSITION = 0x1f7,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì§ì—…
Job
*/
MSG_JOB = 0x1f8,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모
Note
*/
MSG_MEMO = 0x1f9,
-/*20080827 to 20180621
+/*20080827 to 20180711
기여
Devotion
*/
MSG_CONTRIBUTION = 0x1fa,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒë‚©ê²½í—˜ì¹˜
Tax Point
*/
MSG_EXP_CONTIRIBUTION = 0x1fb,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드탈퇴
Leave Guild
*/
MSG_LEAVE_GUILD = 0x1fc,
-/*20080827 to 20180621
+/*20080827 to 20180711
제명시키기
Expel
*/
MSG_EXPEL_GUILD = 0x1fd,
-/*20080827 to 20180621
+/*20080827 to 20180711
서열
Rank
*/
MSG_GRADE = 0x1fe,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì§ìœ„명
Position Title
*/
MSG_POSITION_NAME = 0x1ff,
-/*20080827 to 20180621
+/*20080827 to 20180711
가입권한
Invitation
*/
MSG_JOIN_AUTHORITY = 0x200,
-/*20080827 to 20180621
+/*20080827 to 20180711
처벌권한
Punish
*/
MSG_PENALTY_AUTORITY = 0x201,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒë‚©%
Tax %
*/
MSG_CONTRIBUTION_PERCENT = 0x202,
-/*20080827 to 20180621
+/*20080827 to 20180711
제목
Title
*/
MSG_TITLE = 0x203,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë‚´ìš©
For
*/
MSG_CONTENTS = 0x204,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드ì´ë¦„
Guild Name
*/
MSG_GUILD_NAME = 0x205,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드레벨
Guild lvl
*/
MSG_GUILD_LEVEL = 0x206,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¡°í•©ì›ìˆ˜
Number of Members
*/
MSG_GUILD_PEOPLE_COUNT = 0x207,
-/*20080827 to 20180621
+/*20080827 to 20180711
랭킹
Ranking
*/
MSG_RANKING = 0x208,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ ê°ì •
Item Appraisal
*/
MSG_ITEM_IDENTIFY = 0x209,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ ì¡°í•©
Insert Card
*/
MSG_ITEM_COMPOUNDING = 0x20a,
-/*20080827 to 20180621
+/*20080827 to 20180711
탈퇴 사유를 입력해주세요.
Please enter the reason of Secession.
*/
MSG_PLEASE_INPUT_WHY_LEAVING = 0x20b,
-/*20080827 to 20180621
+/*20080827 to 20180711
추방 사유를 입력해주세요.
Please enter the reason of Expulsion.
*/
MSG_PELASE_INPUT_WHY_EXPEL = 0x20c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒì ì„ 닫으세요.
Please close Shop.
*/
MSG_PLEASE_CLOSE_STORE = 0x20d,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬 ì´ë¦„
Skill
*/
MSG_SKILL_NAME = 0x20e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ ì´ë¦„
Item Name
*/
MSG_ITEM_NAME = 0x20f,
-/*20080827 to 20180621
+/*20080827 to 20180711
https://payment.ragnarok.co.kr
https://pay.ragnarok.co.kr (Billing Web)
*/
MSG_SETTLE_WEB_URL = 0x210,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임방ì—ì„œ 사용가능한 IP개수가 ëª¨ë‘ ì‚¬ìš©ì¤‘ìž…ë‹ˆë‹¤. ê°œì¸ ê³„ì •ìœ¼ë¡œ ê²°ì œ 하시겠습니까?
IP capacity of this Internet Cafe is full. Would you like to pay the personal base?
*/
MSG_BAN_IP_OVERFLOW = 0x211,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê²°ì œì‹œê°„ì´ ë‹¤ë˜ì–´ ê²Œìž„ì„ ì¢…ë£Œí•©ë‹ˆë‹¤.
You are out of available paid playing time. Game will be shut down automatically.
*/
MSG_BAN_PAY_OUT = 0x212,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. 한글 11ìž ì˜ë¬¸ 23ìž ì´ë‚´ë¡œ ì¨ì£¼ì‹­ì‹œì˜¤.
Name is too long. Please enter a name no greater than 23 english characters.
*/
MSG_NAMELENGTH_TOO_LONG = 0x213,
-/*20080827 to 20180621
+/*20080827 to 20180711
deleted
Character will be deleted in %d seconds.
*/
MSG_DELETE_AFTER_10_SECOND = 0x214,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 ê°œì¸ ì •ì•¡ì œ 사용ìžìž…니다.
You paid with the personal regular base.
*/
MSG_BILLING_100 = 0x215,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 ê°œì¸ì •ëŸ‰ì œ 사용ìžìž…니다.
You paid with the personal regular base. Available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_200 = 0x216,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 ê°œì¸ ë¬´ë£Œ 사용ìžìž…니다.
You are free!
*/
MSG_BILLING_300 = 0x217,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 ê°œì¸ ë¬´ë£Œ 허용기간 사용ìžìž…니다.
You are free for the test, your available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_400 = 0x218,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 게임방 ì •ì•¡ì œ 사용ìžìž…니다.
You paid with the Internet Cafe regular base. Available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_500 = 0x219,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 게임방 정량제 사용ìžìž…니다.
You paid with the Time Limit for Internet Cafe. Available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_501 = 0x21a,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 게임방 무료 허용기간 사용ìžìž…니다.
You are free for the test of Internet Cafe version .
*/
MSG_BILLING_600 = 0x21b,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 게임방 무료 사용ìžìž…니다.
You are free for the Internet Cafe version.
*/
MSG_BILLING_700 = 0x21c,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 종량제 사ì´íŠ¸ ì´ìš©ìžìž…니다.
You paid on the Time Limit Website.
*/
MSG_BILLING_800 = 0x21d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ëª¨ì…˜ 목ë¡
Emotion icon List
*/
MSG_EMOTION_LIST = 0x21e,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ì´ëª¨ì…˜
/emo
*/
MSG_VIEW_EMOTION = 0x21f,
-/*20080827 to 20180621
+/*20080827 to 20180711
/!
*/
MSG_EMOTION_SURPRISE = 0x220,
-/*20080827 to 20180621
+/*20080827 to 20180711
/?
*/
MSG_EMOTION_QUESTION = 0x221,
-/*20080827 to 20180621
+/*20080827 to 20180711
/기ì¨
/ho
*/
MSG_EMOTION_DELIGHT = 0x222,
-/*20080827 to 20180621
+/*20080827 to 20180711
/하트
/lv
*/
MSG_EMOTION_THROB = 0x223,
-/*20080827 to 20180621
+/*20080827 to 20180711
/왕하트
/lv2
*/
MSG_EMOTION_BIGTHROB = 0x224,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ë•€
/swt
*/
MSG_EMOTION_SWEAT = 0x225,
-/*20080827 to 20180621
+/*20080827 to 20180711
/아하
/ic
*/
MSG_EMOTION_AHA = 0x226,
-/*20080827 to 20180621
+/*20080827 to 20180711
/짜ì¦
/an
*/
MSG_EMOTION_FRET = 0x227,
-/*20080827 to 20180621
+/*20080827 to 20180711
/í™”
/ag
*/
MSG_EMOTION_ANGER = 0x228,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ëˆ
/$
*/
MSG_EMOTION_MONEY = 0x229,
-/*20080827 to 20180621
+/*20080827 to 20180711
/...
*/
MSG_EMOTION_THINK = 0x22a,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ê°ì‚¬
/thx
*/
MSG_EMOTION_THANKS = 0x22b,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ê½¥
/wah
*/
MSG_EMOTION_KEK = 0x22c,
-/*20080827 to 20180621
+/*20080827 to 20180711
/죄송
/sry
*/
MSG_EMOTION_SORRY = 0x22d,
-/*20080827 to 20180621
+/*20080827 to 20180711
/웃ìŒ
/heh
*/
MSG_EMOTION_SMILE = 0x22e,
-/*20080827 to 20180621
+/*20080827 to 20180711
/뻘뻘
/swt2
*/
MSG_EMOTION_PROFUSELY_SWEAT = 0x22f,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ê¸ì 
/hmm
*/
MSG_EMOTION_SCRATCH = 0x230,
-/*20080827 to 20180621
+/*20080827 to 20180711
/최고
/no1
*/
MSG_EMOTION_BEST = 0x231,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ë‘리번
/??
*/
MSG_EMOTION_STARE_ABOUT = 0x232,
-/*20080827 to 20180621
+/*20080827 to 20180711
/í—‰
/omg
*/
MSG_EMOTION_HUK = 0x233,
-/*20080827 to 20180621
+/*20080827 to 20180711
/오
/oh
*/
MSG_EMOTION_O = 0x234,
-/*20080827 to 20180621
+/*20080827 to 20180711
/엑스
/X
*/
MSG_EMOTION_X = 0x235,
-/*20080827 to 20180621
+/*20080827 to 20180711
/헬프
/hlp
*/
MSG_EMOTION_HELP = 0x236,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ê°€
/go
*/
MSG_EMOTION_GO = 0x237,
-/*20080827 to 20180621
+/*20080827 to 20180711
/엉엉
/sob
*/
MSG_EMOTION_CRY = 0x238,
-/*20080827 to 20180621
+/*20080827 to 20180711
/킥킥
/gg
*/
MSG_EMOTION_KIK = 0x239,
-/*20080827 to 20180621
+/*20080827 to 20180711
/쪽
/kis
*/
MSG_EMOTION_CHUP = 0x23a,
-/*20080827 to 20180621
+/*20080827 to 20180711
/쪽쪽
/kis2
*/
MSG_EMOTION_CHUPCHUP = 0x23b,
-/*20080827 to 20180621
+/*20080827 to 20180711
/í¥
/pif
*/
MSG_EMOTION_HNG = 0x23c,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ì‘
/ok
*/
MSG_EMOTION_OK = 0x23d,
-/*20080827 to 20180621
+/*20080827 to 20180711
단축키 목ë¡
Shortcut List
*/
MSG_SHORTCUT_LIST = 0x23e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê·€í•˜ì˜ ê³„ì •ì€ ë³´ë¥˜ë˜ì—ˆìŠµë‹ˆë‹¤.
Your account is suspended.
*/
MSG_BAN_PAY_SUSPEND = 0x23f,
-/*20080827 to 20180621
+/*20080827 to 20180711
과금 ì •ì±… 변경으로 ì¸í•´ ì¼ì‹œ 종료ë©ë‹ˆë‹¤. 다시 ì ‘ì†í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.
Your connection is terminated due to change in the billing policy. Please connect again.
*/
MSG_BAN_PAY_CHANGE = 0x240,
-/*20080827 to 20180621
+/*20080827 to 20180711
어카운트 ì„œë²„ì— ì¸ì¦ëœ IP와 ê·€í•˜ì˜ IPê°€ ë‹¬ë¼ ì—°ê²°ì„ ì¢…ë£Œí•©ë‹ˆë‹¤.
Your connection is terminated because your IP doesn't match the authorized IP from the account server.
*/
MSG_BAN_PAY_WRONGIP = 0x241,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임방 IPì—ì„œ ê°œì¸ ì¢…ëŸ‰ì œ ê³¼ê¸ˆì„ ë§‰ê¸° 위해 ì—°ê²°ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. ê°œì¸ ì¢…ëŸ‰ì œ ê³¼ê¸ˆì„ ì‚¬ìš©í•˜ê¸° 위해서는 게임방IPë¡œ 등ë¡ì´ ë˜ì§€ ì•Šì€ IP를 사용해 주세요.
Your connection is terminated to prevent charging from your account's play time.
*/
MSG_BAN_PAY_PNGAMEROOM = 0x242,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 ìš´ì˜ìžì— ì˜í•´ ê°•ì œ 종료 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been forced to disconnect by the Game Master Team.
*/
MSG_BAN_OP_FORCE = 0x243,
-/*20080827 to 20180621
+/*20080827 to 20180711
무게가 90%를 초과하여 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use this Skill because you are over your Weight Limit.
*/
MSG_USESKILL_FAIL_WEIGHTOVER = 0x244,
-/*20080827 to 20180621
+/*20080827 to 20180711
무명
Nameless
*/
MSG_NAMELESS_USER = 0x245,
-/*20080827 to 20180621
+/*20080827 to 20180711
축하합니다. %së‹˜ì˜ í˜„ìž¬ ëž­í‚¹ì´ %d위로 ìƒìŠ¹í•˜ì˜€ìŠµë‹ˆë‹¤.
Congratulations! %s ranking has gone up to %d.
*/
MSG_RANK_IN_TEN = 0x246,
-/*20080827 to 20180621
+/*20080827 to 20180711
안타ê¹ê²Œë„ %së‹˜ì˜ í˜„ìž¬ ëž­í‚¹ì´ %d위로 하ë½í•˜ì˜€ìŠµë‹ˆë‹¤.
What a pity! %s ranking has gone down to %d.
*/
MSG_RANK_OUT_TEN = 0x247,
-/*20080827 to 20180621
+/*20080827 to 20180711
Pet Info
*/
MSG_PET_INFO = 0x248,
-/*20080827 to 20180621
+/*20080827 to 20180711
만복ë„
Hunger
*/
MSG_PET_HUNGRY = 0x249,
-/*20080827 to 20180621
+/*20080827 to 20180711
친밀ë„
Intimacy
*/
MSG_PET_FRIENDLY = 0x24a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒì ê³¼ ì±„íŒ…ë°©ì„ ë™ì‹œì— 열수 없습니다.
Please avoid opening a chatroom while vending.
*/
MSG_CANT_OPEN_STORE_WHILE_CHAT = 0x24b,
-/*20080827 to 20180621
+/*20080827 to 20180711
개
Total
*/
MSG_EA4 = 0x24c,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 를 전투불능으로 만들었습니다.
You have knocked down %s.
*/
MSG_SLAIN = 0x24d,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s ë‹˜ì— ì˜í•´ 전투불능 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been knocked down by %s.
*/
MSG_SLAINBY = 0x24e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¨¹ì´ - '%s' ì•„ì´í…œì´ 존재하지 않습니다..
Feed - "%s" is not available.
*/
MSG_NOT_EXIST_PET_FOOD = 0x24f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¨¹ì´ ì£¼ê¸°
Feed Pet
*/
MSG_PET_FEEDING = 0x250,
-/*20080827 to 20180621
+/*20080827 to 20180711
í¼í¬ë¨¼ìŠ¤
Performance
*/
MSG_PET_PERFORMANCE = 0x251,
-/*20080827 to 20180621
+/*20080827 to 20180711
알로 ë˜ëŒë¦¬ê¸°
Return to Egg Shell
*/
MSG_PET_RETURN_EGG = 0x252,
-/*20080827 to 20180621
+/*20080827 to 20180711
악세사리 해제
Unequip Accessory
*/
MSG_PET_ACC_OFF = 0x253,
-/*20080827 to 20180621
+/*20080827 to 20180711
Pet ìƒíƒœ 보기
Check Pet Status
*/
MSG_PET_SHOWINFO = 0x254,
-/*20080827 to 20180621
+/*20080827 to 20180711
악세사리
Accessory
*/
MSG_PET_ACCESSARY = 0x255,
-/*20080827 to 20180621
+/*20080827 to 20180711
장착ë¨
Equipped
*/
MSG_ITEM_EQUIPED = 0x256,
-/*20080827 to 20180621
+/*20080827 to 20180711
펫 리스트
Pet List
*/
MSG_PET_EGG_LIST = 0x257,
-/*20080827 to 20180621
+/*20080827 to 20180711
장착 안ë¨
Unequipped
*/
MSG_ITEM_UNEQUIPED = 0x258,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì •ë§ë¡œ 먹ì´ë¥¼ 주시겠습니까?
Are you sure that you want to feed your pet?
*/
MSG_SURE_TO_FEED_PET = 0x259,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°€ê²©ì„ ì“°ì‹¤ë• ìˆ«ìž(0~9)만 ì¨ì£¼ì‹­ì‹œì˜¤.
Only the numbers (0~9) are available.
*/
MSG_CAN_INPUT_NUMBER_ONLY = 0x25a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°ì •ë˜ì§€ ì•Šì€ ì•„ì´í…œì€ íŒë§¤í•  수 없습니다.
You cannot sell unidentified items.
*/
MSG_CANT_SELL_UNIDENTIFIED_ITEM = 0x25b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°€ê²©ì´ 0 Zenyì¸ ì•„ì´í…œì´ 존재합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Item at 0 Zeny exists. Do you wish to continue?
*/
MSG_YOU_HAVE_FREE_ITEM_ON_SHOP = 0x25c,
-/*20080827 to 20180621
+/*20080827 to 20180711
[새로 ì¶”ê°€ëœ ì´ëª¨ì…˜ 리스트]
[New Emotion List]
*/
MSG_NEW_EMOTION_LIST = 0x25d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¼ë³¸ìª½ 베타 사용ìžë“¤ì—게 전하는 메세지. -> 겅호ì—ì„œ 재가입 하세요.
N/A
*/
MSG_BAN_JAPAN_REFUSE1 = 0x25e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¼ë³¸ìª½ ê³¼ê¸ˆì´ ì¢…ë£Œëœ ì‚¬ìš©ìžë“¤ì—게 전하는 메세지. -> ëˆë‚´ë¼. ë‘ ë²ˆë‚´ë¼.
N/A
*/
MSG_BAN_JAPAN_REFUSE2 = 0x25f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ ê³„ì •ì˜ ìºë¦­í„°ê°€ ì´ë¯¸ 가입ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
Character in the same account already joined.
*/
MSG_ALREADY_SAME_AID_JOINED = 0x260,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%d 명) - 만18세ì´ìƒ
(%d ppl) - over the age 18
*/
MSG_SERVER_PROPERTY_ADULT = 0x261,
-/*20080827 to 20180621
+/*20080827 to 20180711
í”„ë¡œë³´í¬ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Provoke initiated.
*/
MSG_ENST_PROVOKE = 0x262,
-/*20080827 to 20180621
+/*20080827 to 20180711
í”„ë¡œë³´í¬ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Provoke canceled.
*/
MSG_DSST_PROVOKE = 0x263,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¸ë“€ì–´ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Endure initiated.
*/
MSG_ENST_ENDURE = 0x264,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¸ë“€ì–´ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Endure canceled.
*/
MSG_DSST_ENDURE = 0x265,
-/*20080827 to 20180621
+/*20080827 to 20180711
집중력 í–¥ìƒ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Improve Concentration initiated.
*/
MSG_ENST_CONCENTRATION = 0x266,
-/*20080827 to 20180621
+/*20080827 to 20180711
집중력 í–¥ìƒ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Improve Concentration canceled.
*/
MSG_DSST_CONCENTRATION = 0x267,
-/*20080827 to 20180621
+/*20080827 to 20180711
하ì´ë”© ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Hiding Initiated.
*/
MSG_ENST_HIDING = 0x268,
-/*20080827 to 20180621
+/*20080827 to 20180711
하ì´ë”© ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Hiding Canceled.
*/
MSG_DSST_HIDING = 0x269,
-/*20080827 to 20180621
+/*20080827 to 20180711
í´ë¡œí‚¹ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Cloaking initiated.
*/
MSG_ENST_CLOAKING = 0x26a,
-/*20080827 to 20180621
+/*20080827 to 20180711
í´ë¡œí‚¹ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Cloaking canceled.
*/
MSG_DSST_CLOAKING = 0x26b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë…ì„ ë°˜ì‚¬ í•  수 있는 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Poison React initiated.
*/
MSG_ENST_POISONREACT = 0x26c,
-/*20080827 to 20180621
+/*20080827 to 20180711
í¬ì´ì¦Œ 리액트 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Poison React canceled.
*/
MSG_DSST_POISONREACT = 0x26d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë™ì†ë„ê°€ ê°ì†Œí•˜ì˜€ìŠµë‹ˆë‹¤.
Speed reduced.
*/
MSG_ENST_QUAGMIRE = 0x26e,
-/*20080827 to 20180621
+/*20080827 to 20180711
콰그마ì´ì–´ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Quagmire canceled.
*/
MSG_DSST_QUAGMIRE = 0x26f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°©ì–´ë ¥ì´ ì¦ê°€ë˜ì—ˆìŠµë‹ˆë‹¤.
Defense increased.
*/
MSG_ENST_ANGELUS = 0x270,
-/*20080827 to 20180621
+/*20080827 to 20180711
안젤루스 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Angelus canceled.
*/
MSG_DSST_ANGELUS = 0x271,
-/*20080827 to 20180621
+/*20080827 to 20180711
힘과 지능, ë±ìŠ¤ê°€ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
Blessing aligned.
*/
MSG_ENST_BLESSING = 0x272,
-/*20080827 to 20180621
+/*20080827 to 20180711
블레싱 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Blessing canceled.
*/
MSG_DSST_BLESSING = 0x273,
-/*20080827 to 20180621
+/*20080827 to 20180711
시그넘 í¬ë£¨ì‹œìŠ¤ë¥¼ 사용하였습니다.
Signum Crusis initiated.
*/
MSG_ENST_CRUCIS = 0x274,
-/*20080827 to 20180621
+/*20080827 to 20180711
시그넘 í¬ë£¨ì‹œìŠ¤ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Signum Crusis canceled.
*/
MSG_DSST_CRUCIS = 0x275,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë…ì´ í¼ì§€ëŠ” ì†ë„ê°€ ëŠë ¤ì¡ŒìŠµë‹ˆë‹¤.
Slow Poison initiated.
*/
MSG_ENST_SLOWPOISON = 0x276,
-/*20080827 to 20180621
+/*20080827 to 20180711
슬로우 í¬ì´ì¦Œ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Slow Poison Canceled.
*/
MSG_DSST_SLOWPOISON = 0x277,
-/*20080827 to 20180621
+/*20080827 to 20180711
SPì˜ íšŒë³µ ì†ë„ê°€ í–¥ìƒ ë˜ì—ˆìŠµë‹ˆë‹¤.
HP/SP recovery increased.
*/
MSG_ENST_MAGNIFICAT = 0x278,
-/*20080827 to 20180621
+/*20080827 to 20180711
마니피캇 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Magnificat canceled.
*/
MSG_DSST_MAGNIFICAT = 0x279,
-/*20080827 to 20180621
+/*20080827 to 20180711
í–‰ìš´ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Luck increased.
*/
MSG_ENST_GLORIA = 0x27a,
-/*20080827 to 20180621
+/*20080827 to 20180711
글로리아 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Gloria canceled.
*/
MSG_DSST_GLORIA = 0x27b,
-/*20080827 to 20180621
+/*20080827 to 20180711
1회 ê³µê²©ì— ë‘ ë°° ë°ë¯¸ì§€ë¥¼ 받는 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
You will received double damage from all attacking opponents.
*/
MSG_ENST_LEXAETERNA = 0x27c,
-/*20080827 to 20180621
+/*20080827 to 20180711
렉스ì—테르나 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Lex Eterna canceled.
*/
MSG_DSST_LEXAETERNA = 0x27d,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격ì†ë„ê°€ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
Attack Speed increased.
*/
MSG_ENST_ADRENALINE = 0x27e,
-/*20080827 to 20180621
+/*20080827 to 20180711
공격ì†ë„ê°€ ê°ì†Œí•˜ì˜€ìŠµë‹ˆë‹¤.
Attack Speed reduced.
*/
MSG_DSST_ADRENALINE = 0x27f,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŽ˜ì½”ì— ì˜¬ë¼ íƒ”ìŠµë‹ˆë‹¤.
You've just been on a Peco Peco.
*/
MSG_ENST_RIDING = 0x280,
-/*20080827 to 20180621
+/*20080827 to 20180711
페코ì—ì„œ 내렸습니다.
You've just got off of a Peco Peco.
*/
MSG_DSST_RIDING = 0x281,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŒ”ì½˜ì„ ìž¥ì°©í•˜ì˜€ìŠµë‹ˆë‹¤.
You've just carried a Falcon with.
*/
MSG_ENST_FALCON = 0x282,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŒ”ì½˜ì„ í’€ì–´ì£¼ì—ˆìŠµë‹ˆë‹¤.
You've just released a Falcon.
*/
MSG_DSST_FALCON = 0x283,
-/*20080827 to 20180621
+/*20080827 to 20180711
죽ì€ì²™í•˜ê¸° ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Play Dead initiated.
*/
MSG_ENST_TRICKDEAD = 0x284,
-/*20080827 to 20180621
+/*20080827 to 20180711
죽ì€ì²™í•˜ê¸° ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Play Dead canceled.
*/
MSG_DSST_TRICKDEAD = 0x285,
-/*20080827 to 20180621
+/*20080827 to 20180711
íž˜ì´ ê°•í•´ì¡ŒìŠµë‹ˆë‹¤.
STR improved.
*/
MSG_ENST_SHOUT = 0x286,
-/*20080827 to 20180621
+/*20080827 to 20180711
íž˜ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
STR turned back to normal.
*/
MSG_DSST_SHOUT = 0x287,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì—너지코트 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Energy Coat initiated.
*/
MSG_ENST_ENERGYCOAT = 0x288,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì—너지코트 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Energy Coat canceled.
*/
MSG_DSST_ENERGYCOAT = 0x289,
-/*20080827 to 20180621
+/*20080827 to 20180711
방어구가 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
Armor destroyed.
*/
MSG_ENST_BROKENAMOR = 0x28a,
-/*20080827 to 20180621
+/*20080827 to 20180711
...
Weapon has just been released from destroyed status.
*/
MSG_DSST_BROKENAMOR = 0x28b,
-/*20080827 to 20180621
+/*20080827 to 20180711
무기가 파괴ë˜ì—ˆë‹ˆë‹¤.
Weapon destroyed.
*/
MSG_ENST_BROKENWEAPON = 0x28c,
-/*20080827 to 20180621
+/*20080827 to 20180711
...
Weapon has just been released from destroyed status.
*/
MSG_DSST_BROKENWEAPON = 0x28d,
-/*20080827 to 20180621
+/*20080827 to 20180711
환ì˜ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Invisibility initiated.
*/
MSG_ENST_ILLUSION = 0x28e,
-/*20080827 to 20180621
+/*20080827 to 20180711
환ì˜ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Invisibility canceled.
*/
MSG_DSST_ILLUSION = 0x28f,
-/*20080827 to 20180621
+/*20080827 to 20180711
과금 ì •ë³´ 처리가 늦어지고 있어 ì ‘ì†ì´ 지연ë˜ê³  있습니다. ìž ì‹œ í›„ì— ë‹¤ì‹œ ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Sorry. It is delayed due to the process of payment. Please re-connect in a minute.
*/
MSG_REFUSE_BLOCK_TEMPORARY = 0x290,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìž¥ì°©ëœ í™”ì‚´/탄환/수리검 ì„ í•´ì œí•´ì•¼í•©ë‹ˆë‹¤.
You must unequip ammunition first.
*/
MSG_UNEQUIP_ARROW = 0x291,
-/*20080827 to 20180621
+/*20080827 to 20180711
화살 목ë¡
Arrow List
*/
MSG_ARROW_LIST = 0x292,
-/*20080827 to 20180621
+/*20080827 to 20180711
카트 목ë¡
Cart List
*/
MSG_CART_LIST = 0x293,
-/*20080827 to 20180621
+/*20080827 to 20180711
카트를 장착한 ìƒíƒœì—¬ì•¼ 합니다.
You must have a Pushcart.
*/
MSG_MUST_EQUIP_CART = 0x294,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì±„íŒ…ë°©ì„ ê°œì„¤ í•  수 없습니다.
You cannot open a Chat Window.
*/
MSG_CANT_MAKE_CHAT_ROOM = 0x295,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬ 홈페ì´ì§€ë¡œ ì ‘ì†í•˜ì—¬ ê³„ì •ì„ ë§Œë“­ë‹ˆë‹¤. ì²˜ìŒ ê³„ì •ì„ ë§Œë“œì‹œë©´ 3ì¼ ë™ì•ˆì€ 무료로 ì´ìš©í•˜ì‹¤ 수 있습니다.
Registering an account is the first step to accessing the game. Do you want to visit the registration page now?
*/
MSG_3DAY_FREE = 0x296,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•‰ì€ ìƒíƒœì—서는 ì´ ì•„ì´í…œì„ 사용할 수 없습니다.
You cannot use this item while sitting.
*/
MSG_CANT_USE_WHEN_SITDOWN = 0x297,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅, 스킬, ì•„ì´í…œ 사용금지가 %d 분간 남아 있습니다.
Your use of skills and chat will be blocked for the next %d minutes.
*/
MSG_BAD_MANNER_REMAIN = 0x298,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅, 스킬, ì•„ì´í…œ 사용금지가 해지 ë˜ì—ˆìŠµë‹ˆë‹¤.
Your use of skills and chat have been reinstated.
*/
MSG_BAD_MANNER_END = 0x299,
-/*20080827 to 20180621
+/*20080827 to 20180711
-[장착안ë¨]
- [Not equipped]
*/
MSG_REF_UNEQUIP = 0x29a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°°ê³ í””
Very Hungry
*/
MSG_VERY_HUNGRY = 0x29b,
-/*20080827 to 20180621
+/*20080827 to 20180711
출출함
Hungry
*/
MSG_HUNGRY = 0x29c,
-/*20080827 to 20180621
+/*20080827 to 20180711
보통
Normal
*/
MSG_NORMAL = 0x29d,
-/*20080827 to 20180621
+/*20080827 to 20180711
배부름
Satisfied
*/
MSG_REPLETE = 0x29e,
-/*20080827 to 20180621
+/*20080827 to 20180711
아주 배부름
Stuffed
*/
MSG_VERY_REPLETE = 0x29f,
-/*20080827 to 20180621
+/*20080827 to 20180711
서먹서먹함
Awkward
*/
MSG_VERY_AWKWARD = 0x2a0,
-/*20080827 to 20180621
+/*20080827 to 20180711
어색함
Shy
*/
MSG_AWKWARD = 0x2a1,
-/*20080827 to 20180621
+/*20080827 to 20180711
친함
Cordial
*/
MSG_FRIENDLY = 0x2a2,
-/*20080827 to 20180621
+/*20080827 to 20180711
절친함
Loyal
*/
MSG_VERY_FRIENDLY = 0x2a3,
-/*20080827 to 20180621
+/*20080827 to 20180711
알수 ì—†ìŒ
Unknown
*/
MSG_UNKNOWN = 0x2a4,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 앞으로 %ì¼ %d시간 %d분 ì‚¬ìš©ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
Your account has play time of %d day %d hour %d minute.
*/
MSG_BILLING_DAY_HOUR_MINUTES = 0x2a5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ê³„ì •ì€ ì´ë¯¸ 다른 어카운트 서버로 ì ‘ì†í•œ ìƒíƒœìž…니다.
Your account is already connected to account server.
*/
MSG_BAN_INFORMATION_REMAINED_ANOTHER_ACCOUNT = 0x2a6,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 앞으로 %d시간 %d분 ì‚¬ìš©ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
Your account has play time of %d hour %d minute.
*/
MSG_BILLING_HOUR_MINUTES = 0x2a7,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 무료 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤.
Your account is a free account.
*/
MSG_BILLING_FREE_USER = 0x2a8,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ê³„ì •ìœ¼ë¡œ 사í¬ë¼ì´ì— ì ‘ì†í• ìˆ˜ 없습니다.
This account can't connect the Sakray server.
*/
MSG_REFUSE_NONSAKRAY_ID_BLOCKED = 0x2a9,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŽ«ì˜ ì´ë¦„ì€ ì˜ë¬¸ 23, 한글 11ìž ì´ë‚´ë¡œ ì •í•´ 주세요.
Your pet name must be 23 characters or less.
*/
MSG_PETNAME_IN23 = 0x2aa,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¦„ì€ ë‹¨ 한번만 바꿀수 있습니다. 펫 ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You may change your pet's name only once. Your pet's name will be changed to ^0000ff^0000ff %s^000000^000000. Do you wish to continue?
*/
MSG_PETNAME_CHANGE_ONLYONCE = 0x2ab,
-/*20080827 to 20180621
+/*20080827 to 20180711
/í°íŠ¸
/font
*/
MSG_NAMEBALLOON_TYPE = 0x2ac,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê¸¸ë“œì— ë‚¨ì€ ì œë‹ˆê°€ 부족하여 ìž‘ì—…ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Your guild lacks the funds to pay for this venture.
*/
MSG_GUILDZENY_NOT_ENOUGH = 0x2ad,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드가 소유할 수 있는 최대 ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì—¬ ìž‘ì—…ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Your guild zeny limit prevents you from performing this action.
*/
MSG_GUILDZENY_OVER = 0x2ae,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´íŽ™íŠ¸ 간략화 On
Simplified effects have been activated.
*/
MSG_MINEFFECT_ON = 0x2af,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´íŽ™íŠ¸ 간략화 Off
Simplified effects have been deactivated.
*/
MSG_MINEFFECT_OFF = 0x2b0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìžë³¸ê¸ˆ
Required Fee
*/
MSG_CAPITAL = 0x2b1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œì„ ë°”ë‹¥ì— ë²„ë¦¬ë ¤ë©´, ì•„ì´í…œ ì°½ì„ ì—´ì–´ 주십시오.
If you wish to drop an item, you must first open your Item Window (alt+e).
*/
MSG_OPEN_ITEMWND_TO_THROW = 0x2b2,
-/*20080827 to 20180621
+/*20080827 to 20180711
PCë°© ìš”ê¸ˆì´ ì¢…ë£Œí•˜ì—¬ ê°œì¸ ìš”ê¸ˆì œë¡œ 전환합니다. ê°œì¸ ìš”ê¸ˆìœ¼ë¡œ ê²Œìž„ì„ ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Internet Cafe Time Plan has been ended. Would you like to continue the game with your personal play time?
*/
MSG_ASK_PNGAMEROOM = 0x2b3,
/*20080827 to 20100810
-20081111 to 20180621
+20081111 to 20180711
Current admission application state.
*/
MSG_REPLY_REMAINTIME = 0x2b4,
/*20080827 to 20100810
-20081111 to 20180621
+20081111 to 20180711
Current admission application state.
*/
MSG_INFO_REMAINTIME = 0x2b5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ëˆì´ 모ìžë¼ê±°ë‚˜, 가질 수 있는 최대 ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
Your lack of zeny or your zeny limit have prevented you from performing this action.
*/
MSG_OVER_OR_LOW_MONEY = 0x2b6,
-/*20080827 to 20180621
+/*20080827 to 20180711
전투불능 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤. esc키를 누르시면 ì„ íƒì°½ì´ 뜹니다.
Your character has fainted. Push the ESC key to restart.
*/
MSG_PRESS_ESC_TO_RESTART = 0x2b7,
-/*20080827 to 20180621
+/*20080827 to 20180711
%d ê°œ íšë“
- %d obtained.
*/
MSG_EA_OBTAIN = 0x2b8,
-/*20080827 to 20180621
+/*20080827 to 20180711
스펠 리스트
Spell List
*/
MSG_SPELL_LIST = 0x2b9,
-/*20080827 to 20180621
+/*20080827 to 20180711
/최소화
/minimize
*/
MSG_MINEFFECT = 0x2ba,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ì•„ì´í…œì€ ì†ìƒë˜ì–´ 있습니다..
This item has been damaged.
*/
MSG_DAMAGED_ITEM = 0x2bb,
-/*20080827 to 20180621
+/*20080827 to 20180711
/noshift : 쉬프트를 누르지않고 ížë¡œ ì ì„ 공격할수있게ë©ë‹ˆë‹¤ On Off
/noshift: You may use your ''force heal'' ability without the Shift key. On | Off
*/
MSG_EXPLAIN_NOSHIFT = 0x2bc,
-/*20080827 to 20180621
+/*20080827 to 20180711
시프트를 누르지 ì•Šê³ ë„ ížë¡œ ì–¸ë°ë“œë¥¼ 공격할수 있습니다 [/ns ON]
[no shift] option activated. [ON]
*/
MSG_NOSHIFT_ON = 0x2bd,
-/*20080827 to 20180621
+/*20080827 to 20180711
시프트를 눌러야 ížë¡œ ì–¸ë°ë“œë¥¼ 공격할수 있습니다 [/ns OFF]
[no shift] option deactivated. [OFF]
*/
MSG_NOSHIFT_OFF = 0x2be,
-/*20080827 to 20180621
+/*20080827 to 20180711
MSI_REFUSE_BAN_BY_DBA
*/
MSG_REFUSE_BAN_BY_DBA = 0x2bf,
-/*20080827 to 20180621
+/*20080827 to 20180711
MSI_REFUSE_EMAIL_NOT_CONFIRMED
*/
MSG_REFUSE_EMAIL_NOT_CONFIRMED = 0x2c0,
-/*20080827 to 20180621
+/*20080827 to 20180711
MSI_REFUSE_BAN_BY_GM
*/
MSG_REFUSE_BAN_BY_GM = 0x2c1,
-/*20080827 to 20180621
+/*20080827 to 20180711
MSI_REFUSE_TEMP_BAN_FOR_DBWORK
*/
MSG_REFUSE_TEMP_BAN_FOR_DBWORK = 0x2c2,
-/*20080827 to 20180621
+/*20080827 to 20180711
MSI_REFUSE_SELF_LOCK
*/
MSG_REFUSE_SELF_LOCK = 0x2c3,
-/*20080827 to 20180621
+/*20080827 to 20180711
MSI_REFUSE_NOT_PERMITTED_GROUP
*/
MSG_REFUSE_NOT_PERMITTED_GROUP = 0x2c4,
-/*20080827 to 20180621
+/*20080827 to 20180711
MSI_REFUSE_WAIT_FOR_SAKRAY_ACTIVE
*/
MSG_REFUSE_WAIT_FOR_SAKRAY_ACTIVE = 0x2c5,
-/*20080827 to 20180621
+/*20080827 to 20180711
/aura : 오오ë¼ë¥¼ 간략화 시킬수있습니다 On Off
/aura: Simplify Aura effect On | Off
*/
MSG_EXPLAIN_AURA = 0x2c6,
-/*20080827 to 20180621
+/*20080827 to 20180711
오오ë¼ê°€ ì •ìƒì ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤ [ì˜¤ì˜¤ë¼ ON]
Turn On Aura [Aura ON]
*/
MSG_AURA_ON = 0x2c7,
-/*20080827 to 20180621
+/*20080827 to 20180711
오오ë¼ê°€ 간략화ë˜ì„œ 표시ë©ë‹ˆë‹¤ [ì˜¤ì˜¤ë¼ OFF]
Simplify Aura enabled. [ON]
*/
MSG_AURA_OFF = 0x2c8,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅금지 ê¸°ë¡ %d 회
Chat block record %d times
*/
MSG_PROHIBIT_LOG = 0x2c9,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅 금지 리스트
Chat block list
*/
MSG_PROHIBIT_LIST = 0x2ca,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ì´ë¦„표시 or /showname : ìºë¦­í„°ì˜ ì´ë¦„ 표시 ë°©ì‹ì„ 변경합니다.
/showname: Change the name font type.
*/
MSG_EXPLAIN_SHOWNAMETYPE = 0x2cb,
-/*20080827 to 20180621
+/*20080827 to 20180711
/noctrl : ì½˜íŠ¸ë¡¤ì„ ëˆ„ë¥´ì§€ì•Šì•„ë„ ìžë™ê³µê²©ì´ ë©ë‹ˆë‹¤. On Off
/noctrl | /nc: Auto attack without pressing ctrl key. On | Off
*/
MSG_EXPLAIN_NOCTRL = 0x2cc,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì½˜íŠ¸ë¡¤ì„ ëˆ„ë¥´ì§€ ì•Šì•„ë„ ìžë™ê³µê²©ì„ 합니다 [/nc ON]
Use auto attack without Ctrl. [Auto attack ON]
*/
MSG_NOCTRL_ON = 0x2cd,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì½˜íŠ¸ë¡¤ì„ ëˆŒëŸ¬ì•¼ ìžë™ê³µê²©ì„ 합니다 [/nc OFF]
Use auto attack with Ctrl. [Auto attack OFF]
*/
MSG_NOCTRL_OFF = 0x2ce,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅 금지 주기
Mute this player.
*/
MSG_APPEND_PROHIBIT = 0x2cf,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅 금지 완전 풀기 & 로그 삭제
Unmute player & Erase mute time.
*/
MSG_ERASE_PROHIBIT = 0x2d0,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅 금지 시간 줄ì´ê¸°(로그 ì‚­ì œ 안ë¨)
Decrease Player Mute time.
*/
MSG_REDUCE_PROHIBIT = 0x2d1,
-/*20080827 to 20180621
+/*20080827 to 20180711
í°íŠ¸ê°€ ì •ìƒì ìœ¼ë¡œ 바뀌었습니다 [ì´ë¦„í‘œì‹œë°©ì‹ 1]
Normal Font Displayed. [showname type 1]
*/
MSG_SHOWNAME_ON = 0x2d2,
-/*20080827 to 20180621
+/*20080827 to 20180711
í°íŠ¸ê°€ 가늘게 바뀌면서 íŒŒí‹°ëª…ë„ í‘œì‹œë©ë‹ˆë‹¤ [ì´ë¦„í‘œì‹œë°©ì‹ 2]
Font will be thin and party name will be shown [showname type 2]
*/
MSG_SHOWNAME_OFF = 0x2d3,
-/*20080827 to 20180621
+/*20080827 to 20180711
/doridori : ì—°ì†í•´ì„œ ì´ ëª…ë ¹ì–´ë¥¼ ì³ì£¼ë©´ ìºë¦­í„°ê°€ ë„리ë„리 ^^;;
/doridori: Shake head
*/
MSG_EXPLAIN_DORIDORI = 0x2d4,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¸í„°ë„· 카페ì—ì„œ ê³¼ê¸ˆì„ í•˜ê³  있습니다.
Internet room is paying now.
*/
MSG_BILLING_INTERNET_CAFE = 0x2d5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì •ì•¡ì œ ê³¼ê¸ˆì€ %dì¼ %d시간 %dë¶„ì´ ë‚¨ì•˜ìŠµë‹ˆë‹¤.
종량제 ê³¼ê¸ˆì€ %d시간 %dë¶„ì´ ë‚¨ì•˜ìŠµë‹ˆë‹¤.
Prepaid voucher validate until %d days %d hours %d minutes later.
Time limit voucher validate untill %d hours %d minutes later.
*/
MSG_BILLING_BOTH = 0x2d6,
-/*20080827 to 20180621
+/*20080827 to 20180711
/bingbing : ì—°ì†í•´ì„œ ì´ ëª…ë ¹ì–´ë¥¼ ì³ì£¼ë©´ ìºë¦­í„°ê°€ 빙글빙글 ^^;;
/bingbing: Rotates player counter clockwise.
*/
MSG_EXPLAIN_BINGBING = 0x2d7,
-/*20080827 to 20180621
+/*20080827 to 20180711
/bangbang : ì—°ì†í•´ì„œ ì´ ëª…ë ¹ì–´ë¥¼ ì³ì£¼ë©´ ìºë¦­í„°ê°€ 뱅글뱅글 ^^;;
/bangbang: Rotates player clockwise.
*/
MSG_EXPLAIN_BANGBANG = 0x2d8,
-/*20080827 to 20180621
+/*20080827 to 20180711
/skillfail : ë¹¨ê°„ìƒ‰ì˜ ìŠ¤í‚¬ì‚¬ìš© 실패 메세지를 표시하지 않습니다 On Off
/skillfail: Display red font message when skill fails. On | Off
*/
MSG_EXPLAIN_SKILLFAIL = 0x2d9,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬사용 실패 메세지를 표시합니다 [/sf ON]
Skill fail messages will be displayed. [Display On]
*/
MSG_SKILLFAIL_ON = 0x2da,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬사용 실패 메세지를 표시하지 않습니다 [/sf OFF]
Skill fail messages will not be displayed. [Display OFF]
*/
MSG_SKILLFAIL_OFF = 0x2db,
-/*20080827 to 20180621
+/*20080827 to 20180711
/notalkmsg : ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ 않습니다 On Off
/notalkmsg: Chat will not be displayed in chat window. On | Off
*/
MSG_EXPLAIN_NOTALKMSG = 0x2dc,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤ [/nm ON]
Chat content will be displayed in the chat window. [Display ON]
*/
MSG_NOTALKMSG_ON = 0x2dd,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤ [/nm OFF]
Chat content will not be displayed in the chat window. [Display OFF]
*/
MSG_NOTALKMSG_OFF = 0x2de,
-/*20080827 to 20180621
+/*20080827 to 20180711
/set1 : /nc + /showname + /sf + /wi, /set2 : + /q3
/set1: /noctrl + /showname + /skillfail
*/
MSG_EXPLAIN_SET1 = 0x2df,
-/*20080827 to 20180621
+/*20080827 to 20180711
/fog : FOGì´íŽ™íŠ¸ë¥¼ 키거나 ëŒìˆ˜ìžˆìŠµë‹ˆë‹¤ On Off
/fog: Fog effect. On | Off
*/
MSG_EXPLAIN_FOG = 0x2e0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì²­í˜¼ì„ í•´ì™”ìŠµë‹ˆë‹¤. 승낙하시겠습니까?
You have received a marriage proposal. Do you accept?
*/
MSG_SUGGEST_COUPLE = 0x2e1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ 분배 ë°©ì‹
Item sharing type
*/
MSG_HOWITEMDIV = 0x2e2,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°ìž ì·¨ë“
Individual
*/
MSG_ITEMDIV1 = 0x2e3,
-/*20080827 to 20180621
+/*20080827 to 20180711
균등하게 분배
Shared
*/
MSG_ITEMDIV2 = 0x2e4,
-/*20080827 to 20180621
+/*20080827 to 20180711
nProtect KeyCrypt
*/
MSG_KEYCRYPT = 0x2e5,
-/*20080827 to 20180621
+/*20080827 to 20180711
Keyboard Driverê°€ 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
키보드 보안 ìž…ë ¥ì„ ìœ„í•´ ì¶”ê°€ê¸°ëŠ¥ì„ ì„¤ì¹˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
@@ -3750,7 +3750,7 @@ Do you want to install a program for keyboard security?
(After installation, System Reboot is required)
*/
MSG_KEYCRYPT_INSTALL_KEYDRIVER = 0x2e6,
-/*20080827 to 20180621
+/*20080827 to 20180711
설치가 완료 ë˜ì—ˆìŠµë‹ˆë‹¤.
ì‹œìŠ¤í…œì„ Reboot 합니다.
@@ -3759,17 +3759,17 @@ Installation has been completed.
System will be rebooted.
*/
MSG_KEYCRYPT_REBOOT = 0x2e7,
-/*20080827 to 20180621
+/*20080827 to 20180711
설치 실패.
Installation has been failed.
*/
MSG_KEYCRYPT_INSTALLFAIL = 0x2e8,
-/*20080827 to 20180621
+/*20080827 to 20180711
키보드 ë³´ì•ˆì„ ì ìš©í•˜ì§€ ì•Šê³  계ì†í•©ë‹ˆë‹¤.
Keyboard Security will be skipped.
*/
MSG_KEYCRYPT_SKIPKEYCRYPT = 0x2e9,
-/*20080827 to 20180621
+/*20080827 to 20180711
키보드 ë³´ì•ˆì— í•„ìš”í•œ 파ì¼ì´ 존재하지 않습니다.
(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
@@ -3778,7 +3778,7 @@ Required file for Keyboard Security is not existing.
(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
*/
MSG_KEYCRYPT_NOKEYCRYPTFILE = 0x2ea,
-/*20080827 to 20180621
+/*20080827 to 20180711
USB Keyboardê°€ 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
키보드 보안 ìž…ë ¥ì„ ìœ„í•´ ì¶”ê°€ê¸°ëŠ¥ì„ ì„¤ì¹˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
@@ -3791,56 +3791,56 @@ Do you want to install a program for keyboard security?
(After installation, System Reboot is required)
*/
MSG_KEYCRYPT_USBKEYBOARD = 0x2eb,
-/*20080827 to 20180621
+/*20080827 to 20180711
ftp://ragnarok.nefficient.co.kr/pub/ragnarok/ragnarok0526.exe
*/
MSG_FINDHACK_PATH = 0x2ec,
-/*20080827 to 20180621
+/*20080827 to 20180711
FindHackì´ ì •ìƒì ìœ¼ë¡œ 설치가 ë˜ì–´ìžˆì§€ 않습니다. ragnarok0226.exe 를 다운로드 하여 ë¼ê·¸ë‚˜ë¡œí¬ê°€ ì„¤ì¹˜ëœ í´ë”ì— ì„¤ì¹˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.(%d).
FindHack is not installed correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.(%d).
*/
MSG_FINDHACK_NOTINSTALLED = 0x2ed,
-/*20080827 to 20180621
+/*20080827 to 20180711
í•´í‚¹íˆ´ì´ ì¡´ìž¬í•˜ì§€ë§Œ 치료가 ì •ìƒì ìœ¼ë¡œ ë˜ì§€ 않았습니다. ë¼ê·¸ë‚˜ë¡œí¬ê°€ 실행ë˜ì§€ 않습니다.
Hacking tool is existing but it hasn't been cleaned. Rangarok Online will not be executed.
*/
MSG_FINDHACK_HACKTOOLEXIST = 0x2ee,
-/*20080827 to 20180621
+/*20080827 to 20180711
해킹툴 진단 í”„ë¡œê·¸ëž¨ì´ ì •ìƒì ìœ¼ë¡œ 다운로드 ë˜ì§€ 않았습니다. ragnarok0226.exe 를 다운로드 하여 ë¼ê·¸ë‚˜ë¡œí¬ê°€ ì„¤ì¹˜ëœ í´ë”ì— ì„¤ì¹˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Hacking tool scan program has not been downloaded correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
*/
MSG_FINDHACK_CANTDOWNLOAD = 0x2ef,
-/*20080827 to 20180621
+/*20080827 to 20180711
NPX.DLL 등ë¡ì—러 ì´ê±°ë‚˜ FindHack 구ë™ì— 필요한 파ì¼ì´ 없습니다. ragnarok0226.exe 를 다운로드 하여 ë¼ê·¸ë‚˜ë¡œí¬ê°€ ì„¤ì¹˜ëœ í´ë”ì— ì„¤ì¹˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.
NPX.DLL register error or there is no necessary file to run FindHack. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
*/
MSG_FINDHACK_NOFILE = 0x2f0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì˜ˆì™¸ì‚¬í•­ì´ ë°œìƒí–ˆìŠµë‹ˆë‹¤. (02-3281-0361)ë¡œ 문ì˜í•´ì£¼ì„¸ìš”. 리턴값(%d)
Exceptional Error. Please contact the customer support. Return Value: (%d)
*/
MSG_FINDHACK_EXCEPTION = 0x2f1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¢…ë£Œë²„íŠ¼ì„ í´ë¦­ 하셨습니다.
Exit button has been clicked.
*/
MSG_FINDHACK_EXITPRESSED = 0x2f2,
-/*20080827 to 20180621
+/*20080827 to 20180711
Findhack ì—…ë°ì´íŠ¸ 서버접근 실패하였습니다. ìž ì‹œ í›„ì— ë‹¤ì‹œ ì‹œë„í•´ 주시거나 ê·¸ë¼ë¹„í‹° ìš´ì˜íŒ€ìœ¼ë¡œ ì—°ë½í•´ì£¼ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Unable to connect Findhack Update Server. Please try again or contact the customer support.
*/
MSG_FINDHACK_UPDATEFAILED = 0x2f3,
-/*20080827 to 20180621
+/*20080827 to 20180711
사랑받고있는
Beloved
*/
MSG_NAMED_PET = 0x2f4,
-/*20080827 to 20180621
+/*20080827 to 20180711
/report or /ì‹ ê³  : ì‹ ê³ ìš© 갈무리 파ì¼ì„ 저장합니다.
/report: Save a chat log file.
*/
MSG_REPORTCOMMAND_EXPLANATION = 0x2f5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ íŒŒì¼ì€ (주)ê·¸ë¼ë¹„í‹°ì˜ ìš´ì˜íŒ€ì—ì„œ ê²Œìž„ë‚´ì˜ ë¶€ì •í–‰ìœ„ë‚˜ 비매너 í–‰ìœ„ì— ëŒ€í•œ
ì¦ê±°ìžë£Œë¡œ 사용하게 ë©ë‹ˆë‹¤.
문서를 다른 문서 형ì‹ìœ¼ë¡œ 저장하거나 ë‚´ìš©ì„ ë³€ê²½í•˜ì—¬ ì›ë³¸ê³¼ ì¼ì¹˜í•˜ì§€ 않게
@@ -3848,2277 +3848,2277 @@ Beloved
Chat logs are not accepted as evidence for any ill-mannered violation on account of possible file modifications. However this feature is provided for players' personal reference.
*/
MSG_REPORTTEXT_HEADER = 0x2f6,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë‹¹ì‹ ì„ ì‚¬ëž‘í•´ìš” ♡
I love you.
*/
MSG_LOVE_SKILL = 0x2f7,
-/*20080827 to 20180621
+/*20080827 to 20180711
화면 ë˜ëŠ” ì´íŽ™íŠ¸ê°€ ë°ì•„ì„œ ëˆˆì— ë¶€ë‹´ì´ ë˜ì‹œëŠ”ë¶„ë“¤ì€ ëª¨ë‹ˆí„°ì˜ ë°ê¸°ë¥¼ 조정해주시기바ëžë‹ˆë‹¤.
Please adjust your monitor/video brightness if effects appear too bright.
*/
MSG_EXPLAIN_BRIGHT = 0x2f8,
-/*20080827 to 20180621
+/*20080827 to 20180711
전체화면모드가 잘안ë˜ëŠ” ê²½ìš°ì— ê²Œìž„ì‹¤í–‰í›„ ALT+TAB으로 í™”ë©´ì„ ì „í™˜í•˜ë©´ 잘ë˜ëŠ” ê¸°ì¢…ë„ ìžˆìŠµë‹ˆë‹¤
If full screen mode fails to work, it is suggested you alt+tab [or ctrl+esc] to inactivate and reactivate the Ragnarok Client.
*/
MSG_EXPLAIN_ALTTAB = 0x2f9,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%d 명) - 유료서버
(%d players) - Pay to Play Server
*/
MSG_SERVER_PROPERTY_PAY = 0x2fa,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%d 명) - 무료서버
(%d players) - Free Server
*/
MSG_SERVER_PROPERTY_FREE = 0x2fb,
-/*20080827 to 20180621
+/*20080827 to 20180711
무료 회ì›ì€ 유료 서버로 ì ‘ì†í•  수 없습니다.
Trial players can't connect Pay to Play Server.
*/
MSG_CANT_CONNECT_TO_PAY_SERVER = 0x2fc,
-/*20080827 to 20180621
+/*20080827 to 20180711
마우스 ìš°í´ë¦­ìœ¼ë¡œ F9ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì“¸ìˆ˜ìžˆìŠµë‹ˆë‹¤ [/q1 ON]
Right click menu skills for F9 are Enabled.[/q1 ON]
*/
MSG_QUICKSPELL_ON = 0x2fd,
-/*20080827 to 20180621
+/*20080827 to 20180711
마우스 ìš°í´ë¦­ìœ¼ë¡œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ì§€ 못합니다 [/q1 OFF]
Right click menu skills for F9 are Disabled.[/q1 OFF]
*/
MSG_QUICKSPELL_OFF = 0x2fe,
-/*20080827 to 20180621
+/*20080827 to 20180711
/quickspell : 마우스 ìš°í´ë¦­ìœ¼ë¡œ F9ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ On Off
/quickspell: Right-click menu enables you to use skills assigned to the F9 hotkey. On | Off
*/
MSG_EXPLAIN_QUICKSPELL = 0x2ff,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë§ˆìš°ìŠ¤ì˜ WHEELì„ ì‚¬ìš©í•´ì„œ F7 ê³¼ F8ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ [/q2 ON]
Mouse wheel skills for F7 and F8 are Enabled.[/q2 ON]
*/
MSG_QUICKSPELL2_ON = 0x300,
-/*20080827 to 20180621
+/*20080827 to 20180711
마우스 WHEELë¡œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ì§€ 못합니다 [/q2 OFF]
Mouse wheel skills for F7 and F8 are Disabled.[/q2 OFF]
*/
MSG_QUICKSPELL2_OFF = 0x301,
-/*20080827 to 20180621
+/*20080827 to 20180711
/quickspell2 : 마우스 WHEELì„ ìœ„,아래로 굴려서 F7ê³¼F8ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ On Off
/quickspell2: By rolling the mouse wheel up and down, you are able to use skills registered on F7 and F8 hotkeys. On | Off
*/
MSG_EXPLAIN_QUICKSPELL2 = 0x302,
-/*20080827 to 20180621
+/*20080827 to 20180711
/q3 : /quickspell (/q1) + /quickspell2 (/q2)
/q3: /quickspell (/q1) + /quickspell2 (/q2)
*/
MSG_EXPLAIN_QUICKSPELL3 = 0x303,
-/*20080827 to 20180621
+/*20080827 to 20180711
/찌릿
/bzz
*/
MSG_EMOTION_STARE = 0x304,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ë°¥
/rice
*/
MSG_EMOTION_HUNGRY = 0x305,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ë©‹ì ¸
/awsm
*/
MSG_EMOTION_COOL = 0x306,
-/*20080827 to 20180621
+/*20080827 to 20180711
/메롱
/meh
*/
MSG_EMOTION_MERONG = 0x307,
-/*20080827 to 20180621
+/*20080827 to 20180711
/부ë„
/shy
*/
MSG_EMOTION_SHY = 0x308,
-/*20080827 to 20180621
+/*20080827 to 20180711
/쓱쓱
/pat
*/
MSG_EMOTION_GOODBOY = 0x309,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ì— íƒ
/mp
*/
MSG_EMOTION_SPTIME = 0x30a,
-/*20080827 to 20180621
+/*20080827 to 20180711
/질질
/slur
*/
MSG_EMOTION_SEXY = 0x30b,
-/*20080827 to 20180621
+/*20080827 to 20180711
/컴온
/com
*/
MSG_EMOTION_COMEON = 0x30c,
-/*20080827 to 20180621
+/*20080827 to 20180711
/하품
/yawn
*/
MSG_EMOTION_SLEEPY = 0x30d,
-/*20080827 to 20180621
+/*20080827 to 20180711
/축하
/grat
*/
MSG_EMOTION_CONGRATULATION = 0x30e,
-/*20080827 to 20180621
+/*20080827 to 20180711
/피íƒ
/hp
*/
MSG_EMOTION_HPTIME = 0x30f,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ì´ëª¨ì…˜ : 현재 사용가능한 ì´ëª¨ì…˜ì˜ 리스트를 ë³´ì—¬ì¤ë‹ˆë‹¤.
/emotion: views the emoticon list.
*/
MSG_EXPLAIN_EMOTION = 0x310,
-/*20080827 to 20180621
+/*20080827 to 20180711
키보드를 ì´ìš©í•´ì„œ 스킬단축창 1,2,3ì˜ ìŠ¤í‚¬ë“¤ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. [/bm ON]
Skills assigned to shortcut windows 1, 2, 3 are Enabled. [/bm ON]
*/
MSG_BATTLE_ON = 0x311,
-/*20080827 to 20180621
+/*20080827 to 20180711
키보드를 ì´ìš©í•´ì„œ 스킬단축창 1,2,3ì˜ ìŠ¤í‚¬ë“¤ì„ ì‚¬ìš©í•˜ì§€ëª»í•©ë‹ˆë‹¤. [/bm OFF]
Skills assigned to shortcut windows 1, 2, 3 are Disabled. [/bm OFF]
*/
MSG_BATTLE_OFF = 0x312,
-/*20080827 to 20180621
+/*20080827 to 20180711
/battlemode : Q ~ O 를 누르면 스킬단축창2ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤.
/battlemode: allows you to use skills assigned to Shortcut Window 2 by pressing Q ~ O keys.
*/
MSG_EXPLAIN_BATTLE = 0x313,
-/*20080827 to 20180621
+/*20080827 to 20180711
A ~ L ì„ ëˆ„ë¥´ë©´ 스킬단축창3ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤.
A ~ L keys allow you to use skills assigned to Shortcut Window 3.
*/
MSG_EXPLAIN_BATTLE2 = 0x314,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬ë¥¼ 실행하실때 다른 í”„ë¡œê·¸ëž¨ì„ ë„우시면 ê²Œìž„ì´ ëŠë ¤ì§ˆìˆ˜ë„있습니다.
Please remember, programs running in the background while playing may affect the game's performance.
*/
MSG_EXPLAIN_LAG = 0x315,
-/*20080827 to 20180621
+/*20080827 to 20180711
천사님 제 목소리 들리세요? ^^;
Dear angel, can you hear my voice?
*/
MSG_SUPERNOVICE1 = 0x316,
-/*20080827 to 20180621
+/*20080827 to 20180711
슈í¼ë…¸ë¹„스
Super Novice
*/
MSG_SUPERNOVICE2 = 0x317,
-/*20080827 to 20180621
+/*20080827 to 20180711
예요~
Super Novice~
*/
MSG_SUPERNOVICE3 = 0x318,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì € 좀 ë„와주세요~ ã… _ã… 
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE4 = 0x319,
-/*20080827 to 20180621
+/*20080827 to 20180711
님께서 ë‹¹ì‹ ì„ ìž…ì–‘ì‹œí‚¤ê³  싶어하십니다. 승낙하시겠습니까?
wishes to adopt you. Do you accept?
*/
MSG_SUGGEST_BABY = 0x31a,
-/*20080827 to 20180621
+/*20080827 to 20180711
Z ~ > ì„ ëˆ„ë¥´ë©´ 스킬단축창1ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤. On Off
Z ~ > keys allow you to use skills assigned on shortcut window 1. On | Off
*/
MSG_EXPLAIN_BATTLE3 = 0x31b,
-/*20080827 to 20180621
+/*20080827 to 20180711
Space를 한번 ëˆ„ë¥¸ë’¤ì— ê¸€ìžë¥¼ 입력하면 ì±„íŒ…ì„ í• ìˆ˜ìžˆìŠµë‹ˆë‹¤.
Press the space bar to Chat when in Battle mode [/battlemode | /bm].
*/
MSG_EXPLAIN_BATTLE4 = 0x31c,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임가드 파ì¼ì´ 없거나 변조ë˜ì—ˆìŠµë‹ˆë‹¤. 게임가드 ì…‹ì—… 파ì¼ì„ 설치해보시기 ë°”ëžë‹ˆë‹¤.
"Either there's no Game Guard installed on the program or Game Guard is cracked. Please, try to reinstall Game Guard from its setup file."
*/
MSG_NPGAMEMON_ERROR_AUTH_GAMEGUARD = 0x31d,
-/*20080827 to 20180621
+/*20080827 to 20180711
윈ë„ìš°ì˜ ì¼ë¶€ 시스템 파ì¼ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤. ì¸í„°ë„· ìµìŠ¤í”Œë¡œëŸ¬(IE)를 다시 설치해보시기 ë°”ëžë‹ˆë‹¤.
Some of Windows system files have been damaged. Please re-install your Internet Explorer.
*/
MSG_NPGAMEMON_ERROR_CRYPTOAPI = 0x31e,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임가드 ì‹¤í–‰ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. 게임가드 ì…‹ì—… 파ì¼ì„ 다시 설치해보시기 ë°”ëžë‹ˆë‹¤.
"Failed to run Game Guard. Please, try to reinstall Game Guard from its setup file."
*/
MSG_NPGAMEMON_ERROR_EXECUTE = 0x31f,
-/*20080827 to 20180621
+/*20080827 to 20180711
불법 í”„ë¡œê·¸ëž¨ì´ ë°œê²¬ë˜ì—ˆìŠµë‹ˆë‹¤. 불필요한 í”„ë¡œê·¸ëž¨ì„ ì¢…ë£Œí•œ 후 다시 실행해보시기 ë°”ëžë‹ˆë‹¤.
"At least one hazardous program has been detected. Please, terminate all the unnecessary programs before executing Game Guard."
*/
MSG_NPGAMEMON_ERROR_ILLEGAL_PRG = 0x320,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임가드 ì—…ë°ì´íŠ¸ë¥¼ 취소하셨습니다. ì ‘ì†ì´ ê³„ì† ë˜ì§€ ì•Šì„ ê²½ìš° ì¸í„°ë„· ë° ë°©í™”ë²½ ìƒíƒœë¥¼ ì ê²€í•´ë³´ì‹œê¸° ë°”ëžë‹ˆë‹¤.
"Game Guard update is canceled. If the disconnection continues, please, check your internet or firewall settings."
*/
MSG_NPGMUP_ERROR_ABORT = 0x321,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임가드 ì—…ë°ì´íŠ¸ 서버 ì ‘ì†ì— 실패하였습니다. ìž ì‹œ 후 ìž¬ì‹œë„ í•´ë³´ê±°ë‚˜, ì¸í„°ë„· ë° ë°©í™”ë²½ ìƒíƒœë¥¼ ì ê²€í•´ 보시기 ë°”ëžë‹ˆë‹¤.
"Failed to connect to Game Guard update server. Try to connect again later, or try to check the internet or firewall settings."
*/
MSG_NPGMUP_ERROR_CONNECT = 0x322,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임가드 ì—…ë°ì´íŠ¸ë¥¼ 완료하지 못 했습니다. ë°”ì´ëŸ¬ìŠ¤ 검사를 해보시거나, PC 관리 í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•˜ì‹œë©´ ì„¤ì •ì„ ì¡°ì •í•œ 후 ê²Œìž„ì„ ì‹¤í–‰í•´ 보시기 ë°”ëžë‹ˆë‹¤.
"Can't complete Game Guard update process. Please, try to execute a vaccine program to remove viruses. Or, please try to modify the settings of your PC managing tool if you are using any."
*/
MSG_NPGMUP_ERROR_AUTH = 0x323,
-/*20080827 to 20180621
+/*20080827 to 20180711
/notrade : ê±°ëž˜ì‹ ì²­ì„ ìžë™ìœ¼ë¡œ 거절합니다 On Off
/notrade: Declines trade offers automatically. On | Off
*/
MSG_EXPLAIN_NOTRADE = 0x324,
-/*20080827 to 20180621
+/*20080827 to 20180711
거래신청과 친구등ë¡ìš”ì²­ì„ ìžë™ìœ¼ë¡œ 거절합니다 [/nt ON]
Auto decline trade offers has been Enabled. [/nt ON]
*/
MSG_NOTRADE_ON = 0x325,
-/*20080827 to 20180621
+/*20080827 to 20180711
거래신청과 친구등ë¡ìš”ì²­ì„ ì •ìƒì ìœ¼ë¡œ 받습니다 [/nt OFF]
Auto decline trade offers has been Disabled. [/nt OFF]
*/
MSG_NOTRADE_OFF = 0x326,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— 30000ê°œ ì´ìƒì€ 살수 없습니다.
You cannot buy more than 30,000ea items at once.
*/
MSG_LIMIT_BUY_ITEM = 0x327,
-/*20080827 to 20180621
+/*20080827 to 20180711
재료가 충분하지 않습니다.
You do not have enough ingredients.
*/
MSG_NOT_ENOUGH_SOURCE = 0x328,
-/*20080827 to 20180621
+/*20080827 to 20180711
%sì— ê³„ì •ì •ë³´ê°€ 남아있습니다.
Login information remains at %s.
*/
MSG_ALREADY_CONNECT = 0x329,
-/*20080827 to 20180621
+/*20080827 to 20180711
계정ë„ìš© 조사를 위해 로그ì¸ì´ 금지ë˜ì—ˆìŠµë‹ˆë‹¤. ìžì„¸í•œ 문ì˜ëŠ” 계정ë„ìš© 관련 ë¬¸ì˜ ë©”ì¼ë¡œ 해주시기 ë°”ëžë‹ˆë‹¤.
Account has been locked for a hacking investigation. Please contact the GM Team for more information.
*/
MSG_HACKING_INVESTIGATION = 0x32a,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 버그관련 조사중ì´ë¯€ë¡œ ì¼ì‹œì ìœ¼ë¡œ ì ‘ì†ì„ 금합니다
This account has been temporarily prohibited from login due to a bug-related investigation.
*/
MSG_BUG_INVESTIGATION = 0x32b,
-/*20080827 to 20180621
+/*20080827 to 20180711
수리가능한 ì•„ì´í…œ
Repairable items
*/
MSG_REPAIRITEMLIST = 0x32c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ 수리 성공
Item has been successfully repaired.
*/
MSG_ITEM_REPAIR_SUCCEESS = 0x32d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ 수리 실패 (재료 ë˜ëŠ” ìƒëŒ€ì™€ì˜ ê±°ë¦¬ë“±ì„ í™•ì¸í•´ì£¼ì‹­ì‹œìš”)
You have failed to repair this item. Please check the distance between you and opponent.
*/
MSG_ITEM_REPAIR_FAIL = 0x32e,
-/*20080827 to 20180621
+/*20080827 to 20180711
시스템 ìƒí™©ì„ 지ì†ì ìœ¼ë¡œ ì²´í¬ í•©ë‹ˆë‹¤.[ìš´ì˜ìžëª¨ë“œ] [/sc ON]
System process enabled [GM mode] [/sc ON]
*/
MSG_SYSTEM_CHECK_ON = 0x32f,
-/*20080827 to 20180621
+/*20080827 to 20180711
시스템 ìƒí™©ì„ 지ì†ì ìœ¼ë¡œ ì²´í¬ í•˜ì§€ 않습니다.[ìš´ì˜ìžëª¨ë“œ] [/sc OFF]
System process disabled [GM mode] [/sc OFF]
*/
MSG_SYSTEM_CHECK_OFF = 0x330,
-/*20080827 to 20180621
+/*20080827 to 20180711
/systemcheck : 시스템 ìƒí™©ì„ 지ì†ì ìœ¼ë¡œ ì²´í¬ í•©ë‹ˆë‹¤.[ìš´ì˜ìžëª¨ë“œ]
/systemcheck: Check the system process [GM mode] On | Off
*/
MSG_EXPLAIN_SYSTEM_CHECK = 0x331,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)ë‹˜ì´ ì¹œêµ¬ ì‹ ì²­ì„ í•˜ì…¨ìŠµë‹ˆë‹¤. 친구가 ë˜ì‹œê² ìŠµë‹ˆê¹Œ?
(%s) wishes to be friends with you. Would you like to accept?
*/
MSG_SUGGEST_JOIN_FRIEND = 0x332,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë” ì´ìƒ 친구 등ë¡ì„ 하실수 없습니다.
Your Friend List is full.
*/
MSG_FRIEND_ADD_ME_OVERSIZE = 0x333,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)ë‹˜ì´ ë” ì´ìƒ 친구 등ë¡ì„ 하실수 없습니다.
(%s)'s Friend List is full.
*/
MSG_FRIEND_ADD_OTHER_OVERSIZE = 0x334,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)님과 친구가 ë˜ì…¨ìŠµë‹ˆë‹¤.
You have become friends with (%s).
*/
MSG_FRIEND_ADD_SUCCEED = 0x335,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)ë‹˜ì´ ì¹œêµ¬ ë˜ê¸°ë¥¼ ì›í•˜ì§€ 않습니다.
(%s) does not want to be friends with you.
*/
MSG_FRIEND_ADD_FALSE = 0x336,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ìºë¦­í„°ëŠ” %s 까지 블럭ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
This character will be blocked to use until %s.
*/
MSG_BLOCKED = 0x337,
-/*20080827 to 20180621
+/*20080827 to 20180711
천만제니 ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ ì²œë§Œì œë‹ˆë¡œ íŒë§¤ë©ë‹ˆë‹¤.
Price will be fixed at 10,000,000 zeny, even if you enter higher price.
*/
MSG_OVERPRICE = 0x338,
-/*20080827 to 20180621
+/*20080827 to 20180711
(ì ìŒ)
(Very low)
*/
MSG_LITTLEUSER = 0x339,
-/*20080827 to 20180621
+/*20080827 to 20180711
(약간 ì ìŒ)
(Low)
*/
MSG_ALITTLEUSER = 0x33a,
-/*20080827 to 20180621
+/*20080827 to 20180711
(보통)
(Normal)
*/
MSG_NORMLEUSER = 0x33b,
-/*20080827 to 20180621
+/*20080827 to 20180711
(많ìŒ)
(High)
*/
MSG_MANYUSER = 0x33c,
-/*20080827 to 20180621
+/*20080827 to 20180711
(매우 많ìŒ)
(Very high)
*/
MSG_VERYMANYUSER = 0x33d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¹„ë§¤ë„ˆì— ì˜í•´ ìš´ì˜ìžë¡œë¶€í„° 채팅금지가 ì ìš©ë©ë‹ˆë‹¤.
You have been blocked from using chat and skills for %d minutes by the GM Team.
*/
MSG_GM_BAD_MANNER_START = 0x33e,
-/*20080827 to 20180621
+/*20080827 to 20180711
GMì— ì˜í•œ 채팅금지가 %d 분 남아 있습니다.
%d minutes remain until release from the GM penalty.
*/
MSG_GM_BAD_MANNER_REMAIN = 0x33f,
-/*20080827 to 20180621
+/*20080827 to 20180711
GMì— ì˜í•œ 채팅금지가 해지 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been released from the GM penalty.
*/
MSG_GM_BAD_MANNER_END = 0x340,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë„ë°° 방지 시스템으로 ì¸í•œ ìžë™ 채팅금지가 ì ìš©ë©ë‹ˆë‹¤.
You have been blocked from using chat and skills for %d as an automatic penalty.
*/
MSG_AUTO_BAD_MANNER_START = 0x341,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë„ë°° 방지 시스템으로 ì¸í•œ 채팅금지가 %d 분 남아 있습니다.
%d minutes remain until release from auto penalty.
*/
MSG_AUTO_BAD_MANNER_REMAIN = 0x342,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë„ë°° 방지 시스템으로 ì¸í•œ 채팅금지가 해지ë˜ì—ˆìŠµë‹ˆë‹¤. 게임진행 ì‹œì—는 ë„ë°°ì— ëŒ€í•´ì„œ 주ì˜í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.
You have been released from the auto penalty. Please refrain from spamming in-game.
*/
MSG_AUTO_BAD_MANNER_END = 0x343,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s님과 %së‹˜ì´ ì´í˜¼í•˜ì…¨ìŠµë‹ˆë‹¤.
%s and %s have divorced from each other.
*/
MSG_DIVORCE = 0x344,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ íƒœì–‘ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Solar Space.
*/
MSG_STARPLACE1 = 0x345,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ ë‹¬ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Luna Space.
*/
MSG_STARPLACE2 = 0x346,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ ë³„ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Stellar Space.
*/
MSG_STARPLACE3 = 0x347,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ íƒœì–‘ì˜ ìž¥ì†ŒëŠ” %s 입니다
Gravity %s's Solar Space: %s
*/
MSG_STARPLACE4 = 0x348,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ ë‹¬ì˜ ìž¥ì†ŒëŠ” %s 입니다
Gravity %s's Luna Space: %s
*/
MSG_STARPLACE5 = 0x349,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ ë³„ì˜ ìž¥ì†ŒëŠ” %s 입니다
Gravity %s's Stellar Space: %s
*/
MSG_STARPLACE6 = 0x34a,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ íƒœì–‘ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Solar Monster.
*/
MSG_STARMONSTER1 = 0x34b,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ ë‹¬ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Luna Monster.
*/
MSG_STARMONSTER2 = 0x34c,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ ë³„ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Stellar Monster.
*/
MSG_STARMONSTER3 = 0x34d,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ íƒœì–‘ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
Gravity %s's Solar Monster: %s
*/
MSG_STARMONSTER4 = 0x34e,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ ë‹¬ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
Gravity %s's Luna Monster: %s
*/
MSG_STARMONSTER5 = 0x34f,
-/*20080827 to 20180621
+/*20080827 to 20180711
æ‹³è– %sì˜ ë³„ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
Gravity %s's Stellar Monster: %s
*/
MSG_STARMONSTER6 = 0x350,
-/*20080827 to 20180621
+/*20080827 to 20180711
/window : ì°½ 위치 ì´ë™ì‹œ 다른 창과 달ë¼ë¶™ëŠ” ì†ì„±ì´ 들어갑니다 On Off
/window: Display windows will snap/dock together. On | Off
*/
MSG_EXPLAIN_WINDOW = 0x351,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì°½ 위치 ì´ë™ì‹œ 다른 창과 잘 붙습니다 [/wi ON]
Display window docking enabled. [/wi ON]
*/
MSG_WINDOW_ON = 0x352,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì°½ 위치 ì´ë™ì‹œ 다른 창과 붙으려는 ì†ì„±ì„ 가지지 않습니다 [/wi OFF]
Display window docking disabled. [/wi OFF]
*/
MSG_WINDOW_OFF = 0x353,
-/*20080827 to 20180621
+/*20080827 to 20180711
/pvpinfo : ìžì‹ ì˜ PVP 승패와 PVP í¬ì¸íŠ¸ë¥¼ ì•Œ 수 있습니다.
/pvpinfo: shows your PVP result and PVP points.
*/
MSG_EXPLAIN_PVP_INFO = 0x354,
-/*20080827 to 20180621
+/*20080827 to 20180711
현재 %d승, %d패, PVPí¬ì¸íŠ¸ëŠ” %d입니다.
You have won %d times and have lost %d times in PVP. Current points %d.
*/
MSG_PVP_INFO = 0x355,
-/*20080827 to 20180621
+/*20080827 to 20180711
매너 í¬ì¸íŠ¸ë¥¼ 성공ì ìœ¼ë¡œ 보냈습니다.
A manner point has been successfully aligned.
*/
MSG_SEND_MANNER_POINT = 0x356,
-/*20080827 to 20180621
+/*20080827 to 20180711
현재 ì´ê³³ì€ PK 가능 지역입니다. 불ì˜ì˜ ê³µê²©ì— ìœ ì˜ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
You are in a PK area. Please beware of sudden attack.
*/
MSG_PKZONE = 0x357,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임가드 ì—…ë°ì´íŠ¸ê°€ ë°”ì´ëŸ¬ìŠ¤ë‚˜ 스파ì´ì›¨ì–´ì™€ì˜ 충ëŒë¡œ 실패했습니다. 백신 프로그램/스파ì´ì›¨ì–´ 제거 í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•œ 후 ì ‘ì†í•´ 주십시기 ë°”ëžë‹ˆë‹¤
Game Guard update has been failed when either Virus or Spyware conflicted with. Please, Uninstall Spyware and Virus protection program before you log in.
*/
MSG_NPGAMEMON_ERROR_100ERROR = 0x358,
-/*20080827 to 20180621
+/*20080827 to 20180711
윈ë„ìš° 호환성 문제로 í”„ë¡œê·¸ëž¨ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. ê²Œìž„ì„ ë‹¤ì‹œ 실행해 주시기 ë°”ëžë‹ˆë‹¤
Program has encountered an error related to Windows compatibility. Please start the game again.
*/
MSG_NPGAMEMON_XP_COMPATIBILITY = 0x359,
-/*20080827 to 20180621
+/*20080827 to 20180711
채팅, 스킬, ì•„ì´í…œì„ 사용할수없게 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been blocked from chatting, using skills and items.
*/
MSG_PK_HONOR = 0x35a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºë¦­í„° ì‚­ì œ 작업중ì´ë¯€ë¡œ ì ‘ì†ì´ ì¼ì‹œì ìœ¼ë¡œ 제한ë©ë‹ˆë‹¤.
Login is temporarily unavailable while this character is being deleted.
*/
MSG_DELETING_CHAR = 0x35b,
-/*20080827 to 20180621
+/*20080827 to 20180711
결혼 ìƒëŒ€ìžì˜ ìºë¦­í„° ì‚­ì œ 작업중ì´ë¯€ë¡œ ì ‘ì†ì´ ì¼ì‹œì ìœ¼ë¡œ 제한ë©ë‹ˆë‹¤.
Login is temporarily unavailable while your spouse character is being deleted.
*/
MSG_DELETING_SPOUSE_CHAR = 0x35c,
-/*20080827 to 20180621
+/*20080827 to 20180711
Novice
*/
MSG_NOVICE = 0x35d,
-/*20080827 to 20180621
+/*20080827 to 20180711
Swordman
*/
MSG_SWORDMAN = 0x35e,
-/*20080827 to 20180621
+/*20080827 to 20180711
Magician
Mage
*/
MSG_MAGICIAN = 0x35f,
-/*20080827 to 20180621
+/*20080827 to 20180711
Archer
*/
MSG_ARCHER = 0x360,
-/*20080827 to 20180621
+/*20080827 to 20180711
Acolyte
*/
MSG_ACOLYTE = 0x361,
-/*20080827 to 20180621
+/*20080827 to 20180711
Merchant
*/
MSG_MERCHANT = 0x362,
-/*20080827 to 20180621
+/*20080827 to 20180711
Thief
*/
MSG_THIEF = 0x363,
-/*20080827 to 20180621
+/*20080827 to 20180711
Knight
*/
MSG_KNIGHT = 0x364,
-/*20080827 to 20180621
+/*20080827 to 20180711
Prieset
Priest
*/
MSG_PRIEST = 0x365,
-/*20080827 to 20180621
+/*20080827 to 20180711
Wizerd
Wizard
*/
MSG_WIZARD = 0x366,
-/*20080827 to 20180621
+/*20080827 to 20180711
Blacksmith
*/
MSG_BLACKSMITH = 0x367,
-/*20080827 to 20180621
+/*20080827 to 20180711
Hunter
*/
MSG_HUNTER = 0x368,
-/*20080827 to 20180621
+/*20080827 to 20180711
Assassin
*/
MSG_ASSASSIN = 0x369,
-/*20080827 to 20180621
+/*20080827 to 20180711
Novice
*/
MSG_NOVICE_W = 0x36a,
-/*20080827 to 20180621
+/*20080827 to 20180711
Swordman
*/
MSG_SWORDMAN_W = 0x36b,
-/*20080827 to 20180621
+/*20080827 to 20180711
Magician
Mage
*/
MSG_MAGICIAN_W = 0x36c,
-/*20080827 to 20180621
+/*20080827 to 20180711
Archer
*/
MSG_ARCHER_W = 0x36d,
-/*20080827 to 20180621
+/*20080827 to 20180711
Acolyte
*/
MSG_ACOLYTE_W = 0x36e,
-/*20080827 to 20180621
+/*20080827 to 20180711
Merchant
*/
MSG_MERCHANT_W = 0x36f,
-/*20080827 to 20180621
+/*20080827 to 20180711
Thief
*/
MSG_THIEF_W = 0x370,
-/*20080827 to 20180621
+/*20080827 to 20180711
Knight
*/
MSG_KNIGHT_W = 0x371,
-/*20080827 to 20180621
+/*20080827 to 20180711
Prieset
Priest
*/
MSG_PRIEST_W = 0x372,
-/*20080827 to 20180621
+/*20080827 to 20180711
Wizerd
Wizard
*/
MSG_WIZARD_W = 0x373,
-/*20080827 to 20180621
+/*20080827 to 20180711
Blacksmith
*/
MSG_BLACKSMITH_W = 0x374,
-/*20080827 to 20180621
+/*20080827 to 20180711
Hunter
*/
MSG_HUNTER_W = 0x375,
-/*20080827 to 20180621
+/*20080827 to 20180711
Assassin
*/
MSG_ASSASSIN_W = 0x376,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)ë‹˜ì„ ì•„ì´ë¡œ ìž…ì–‘ì‹ ì²­
Send an adoption request to %s
*/
MSG_REQ_JOIN_BABY = 0x377,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´ê°€ ë˜ë©´ ì „ìŠ¹ì„ í• ìˆ˜ì—†ê³  ìŠ¤í…Ÿì€ 80ì´ìƒ 올릴수없게ë˜ë©° HP와 SPê°€ 줄어듭니다. ê·¸ëž˜ë„ ê´œì°®ìŠµë‹ˆê¹Œ?
When you become a child, you will be unable to become a Transcendent Class character, all stats will be limited to a maximum of 80, and Max HP/SP will be reduced. Are you sure that you want to be adopted?
*/
MSG_SUGGEST_BABY2 = 0x378,
-/*20080827 to 20180621
+/*20080827 to 20180711
모든 ë‚˜ìœ ìƒíƒœì´ìƒì´ 제거 ë˜ì—ˆìŠµë‹ˆë‹¤.
All abnormal status effects have been removed.
*/
MSG_GOSPEL1 = 0x379,
-/*20080827 to 20180621
+/*20080827 to 20180711
1분간 모든 ìƒíƒœì´ìƒì— 대해 ë©´ì—­ì´ ë©ë‹ˆë‹¤.
You will be immune to abnormal status effects for the next minute.
*/
MSG_GOSPEL2 = 0x37a,
-/*20080827 to 20180621
+/*20080827 to 20180711
1분간 최대 ìƒëª…ë ¥ì´ í¬ê²Œ 늘어납니다.
Your Max HP will stay increased for the next minute.
*/
MSG_GOSPEL3 = 0x37b,
-/*20080827 to 20180621
+/*20080827 to 20180711
1분간 최대 ë§ˆë²•ë ¥ì´ í¬ê²Œ 늘어납니다.
Your Max SP will stay increased for the next minute.
*/
MSG_GOSPEL4 = 0x37c,
-/*20080827 to 20180621
+/*20080827 to 20180711
1분간 모든 ëŠ¥ë ¥ì´ í¬ê²Œ ìƒìŠ¹í•©ë‹ˆë‹¤.
All of your Stats will stay increased for the next minute.
*/
MSG_GOSPEL5 = 0x37d,
-/*20080827 to 20180621
+/*20080827 to 20180711
1분간 사용하는 ë¬´ê¸°ì— ì„±ìŠ¤ëŸ¬ìš´ ì†ì„±ì´ 부여ë©ë‹ˆë‹¤.
Your weapon will remain blessed with Holy power for the next minute.
*/
MSG_GOSPEL6 = 0x37e,
-/*20080827 to 20180621
+/*20080827 to 20180711
1분간 사용하는 ê°‘ì˜·ì— ì„±ìŠ¤ëŸ¬ìš´ ì†ì„±ì´ 부여ë©ë‹ˆë‹¤.
Your armor will remain blessed with Holy power for the next minute.
*/
MSG_GOSPEL7 = 0x37f,
-/*20080827 to 20180621
+/*20080827 to 20180711
10초간 ë°©ì–´ë ¥ì´ í¬ê²Œ ìƒìŠ¹í•©ë‹ˆë‹¤.
Your Defense will stay increased for the next 10 seconds.
*/
MSG_GOSPEL8 = 0x380,
-/*20080827 to 20180621
+/*20080827 to 20180711
1분간 ê³µê²©ë ¥ì´ í¬ê²Œ ì¦ê°€í•©ë‹ˆë‹¤.
Your Attack strength will be increased for the next minute.
*/
MSG_GOSPEL9 = 0x381,
-/*20080827 to 20180621
+/*20080827 to 20180711
1분간 명중률과 íšŒí”¼ìœ¨ì´ í¬ê²Œ ìƒìŠ¹í•©ë‹ˆë‹¤.
Your Accuracy and Flee Rate will be increased for the next minute.
*/
MSG_GOSPEL10 = 0x382,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´ë¥¼ 한번 ìž…ì–‘í–ˆë˜ ë¶€ë¶€ëŠ” 추가 ìž…ì–‘ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
You cannot adopt more than 1 child.
*/
MSG_BABY1 = 0x383,
-/*20080827 to 20180621
+/*20080827 to 20180711
부부가 둘다 레벨70ì´ ë„˜ì–´ì•¼ ì•„ì´ë¥¼ 입양할수있습니다.
You must be at least character level 70 in order to adopt someone.
*/
MSG_BABY2 = 0x384,
-/*20080827 to 20180621
+/*20080827 to 20180711
[POINT] 블랙스미스 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You have been rewarded with %d Blacksmith rank points. Your point total is %d.
*/
MSG_BLACKSMITH_POINT = 0x385,
-/*20080827 to 20180621
+/*20080827 to 20180711
[POINT] 알케미스트 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You have been rewarded with %d Alchemist rank points. Your point total is %d.
*/
MSG_ALCHEMIST_POINT = 0x386,
-/*20080827 to 20180621
+/*20080827 to 20180711
X
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE11 = 0x387,
-/*20080827 to 20180621
+/*20080827 to 20180711
X
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE12 = 0x388,
-/*20080827 to 20180621
+/*20080827 to 20180711
X
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE13 = 0x389,
-/*20080827 to 20180621
+/*20080827 to 20180711
X
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE14 = 0x38a,
-/*20080827 to 20180621
+/*20080827 to 20180711
/notalkmsg2 : ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ 않습니다 (ê¸¸ë“œë§ í¬í•¨) On Off
/notalkmsg2: Hides chat messages(including guild chat). On Off
*/
MSG_EXPLAIN_NOTALKMSG2 = 0x38b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤ [/nm2 ON]
Show chat messages. [/nm2 ON]
*/
MSG_NOTALKMSG2_ON = 0x38c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤ (ê¸¸ë“œë§ í¬í•¨) [/nm2 OFF]
Hide chat messages(including guild chat) [/nm2 OFF]
*/
MSG_NOTALKMSG2_OFF = 0x38d,
-/*20080827 to 20180621
+/*20080827 to 20180711
제련가능한 ì•„ì´í…œ
Upgradable Weapons
*/
MSG_REFINEITEMLIST = 0x38e,
-/*20080827 to 20180621
+/*20080827 to 20180711
제련한 무기 : %s
Weapons upgraded: %s
*/
MSG_ITEM_REFINE_SUCCEESS = 0x38f,
-/*20080827 to 20180621
+/*20080827 to 20180711
제련한 무기 : %s
Weapons upgraded: %s
*/
MSG_ITEM_REFINE_FAIL = 0x390,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¬´ê¸°ì œë ¨ìŠ¤í‚¬ì˜ ë ˆë²¨ì´ ë¶€ì¡±í•´ì„œ %s ì œë ¨ì„ í• ìˆ˜ì—†ìŠµë‹ˆë‹¤.
You cannot upgrade %s until you level up your Upgrade Weapon skill.
*/
MSG_ITEM_REFINE_FAIL_LEVEL = 0x391,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì œë ¨ì— í•„ìš”í•œ ì•„ì´í…œ (%s) ì´ ì—†ìœ¼ë¯€ë¡œ 제련할수없습니다.
You lack a necessary item %s to upgrade this weapon.
*/
MSG_ITEM_REFINE_FAIL_MATERIAL = 0x392,
-/*20080827 to 20180621
+/*20080827 to 20180711
완벽하게 코팅ë˜ì–´ìžˆì–´ì„œ í’€ìŠ¤íŠ¸ë¦½ì´ í†µí•˜ì§€ 않습니다.
Full Divestment cannot pierce the target. The target is fully shielded.
*/
MSG_FULLSTRIP = 0x393,
-/*20080827 to 20180621
+/*20080827 to 20180711
결혼한 ìºë¦­í„°ëŠ” 입양시킬수 없습니다.
You cannot adopt a married person.
*/
MSG_BABY3 = 0x394,
-/*20080827 to 20180621
+/*20080827 to 20180711
친구로 등ë¡ëœ ì´ë¦„ê³¼ 비슷하지만 등ë¡ëœ ì´ë¦„ì´ ì•„ë‹™ë‹ˆë‹¤. 아는사람ì¸ì§€ 확ì¸í•˜ì‹­ì‹œìš”.
This name is not registered in your Friend List. Please check the name again.
*/
MSG_ID_WARNING = 0x395,
-/*20080827 to 20180621
+/*20080827 to 20180711
/hi ë˜ëŠ” /hi 문장 : 친구로 등ë¡ëœ ìºë¦­í„°ë“¤ì—게 ì¸ì‚¬ë¥¼ 합니다.
/hi or /hi message: Send greetings to people who are online and registered on your Friend List.
*/
MSG_EXPLAIN_HI = 0x396,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드ì›ì˜ ì´ë¦„ê³¼ 비슷하지만 길드ì›ì´ 아닙니다. 길드ì›ì¸ì§€ 확ì¸í•˜ì‹­ì‹œìš”.
This character is not your guildsman. Please check the name again.
*/
MSG_ID_WARNING_GUILD = 0x397,
-/*20080827 to 20180621
+/*20080827 to 20180711
9999만제니 ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 9999만제니로 íŒë§¤ë©ë‹ˆë‹¤.
Please be aware that the maximum selling price is fixed as 2 Billion. You cannot sell an item higher than that.
*/
MSG_OVERPRICE9999 = 0x398,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¹œêµ¬ì˜ ê·“ì†ë§ì€ [ Friend ] , 길드ì›ì€ [ Member ] ë¡œ 표시ë©ë‹ˆë‹¤.
Whispers from friends are displayed as [ Friend ], and ones from guildsmen are displayed as [ Member ].
*/
MSG_EXPLAIN_SACHING1 = 0x399,
-/*20080827 to 20180621
+/*20080827 to 20180711
( From ìºë¦­í„°ì´ë¦„ : ) ì´ë¼ê³  표시 ë˜ëŠ” ê·“ì†ë§ì€ 친구나 길드ì›ì´ 아닙니다.
( From character name: ) is from an anonymous character who is neither your friend nor guildsman.
*/
MSG_EXPLAIN_SACHING2 = 0x39a,
-/*20080827 to 20180621
+/*20080827 to 20180711
/blacksmith : ë¸”ëž™ìŠ¤ë¯¸ìŠ¤ì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/blacksmith: Shows top 10 Blacksmiths in the server.
*/
MSG_EXPLAIN_BLACKSMITH = 0x39b,
-/*20080827 to 20180621
+/*20080827 to 20180711
/alchemist : ì•Œì¼€ë¯¸ìŠ¤íŠ¸ì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/alchemist: Shows top 10 Alchemists in the server.
*/
MSG_EXPLAIN_ALCHEMIST = 0x39c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ALT+Y : 여러가지 명령어를 쉽게 쓸수있는 윈ë„ìš°ê°€ 열립니다.
ALT+Y: Opens a window which allows you to use various commands with ease.
*/
MSG_EXPLAIN_ALTY = 0x39d,
-/*20080827 to 20180621
+/*20080827 to 20180711
[POINT] 태권미션 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[POINT] You have been rewarded with %d Tae-Kwon Mission rank points. Your point total is %d.
*/
MSG_TAEKWON_POINT = 0x39e,
-/*20080827 to 20180621
+/*20080827 to 20180711
[태권미션] Target Monster : %s (%d%%)
[Taekwon Mission] Target Monster: %s (%d%%)
*/
MSG_TAEKWON_MISSION = 0x39f,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임가드 초기화 ì—러 : %lu
Error - Failed to initialize GameGuard: %lu
*/
MSG_INIT_ERROR = 0x3a0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í”¼ë“œí•µì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Speed Hack has been detected.
*/
MSG_SPEEDHACK_DETECT = 0x3a1,
-/*20080827 to 20180621
+/*20080827 to 20180711
불법 프로그램 (%s) ê°€ 발견ë˜ì—ˆìŠµë‹ˆë‹¤
The illegal program, (%s) has been detected.
*/
MSG_GAMEHACK_DETECT = 0x3a2,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임ì´ë‚˜ 게임가드가 변조ë˜ì—ˆìŠµë‹ˆë‹¤.
The Game or Gameguard has been cracked.
*/
MSG_GAMEHACK_DOUBT = 0x3a3,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임가드가 실행 중 입니다. ìž ì‹œ í›„ì— ë‹¤ì‹œ 실행해보시기 ë°”ëžë‹ˆë‹¤.
GameGuard is currently running. Please wait for sometime and restart the game.
*/
MSG_ERROR_EXIST = 0x3a4,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê²Œìž„ì´ ì¤‘ë³µ 실행ë˜ì—ˆê±°ë‚˜ 게임가드가 ì´ë¯¸ 실행 중 입니다. 게임 종료 후 다시 실행해보시기 ë°”ëžë‹ˆë‹¤.
The Game or GameGuard is already running. Please close the game and restart the game.
*/
MSG_GAME_EXIST = 0x3a5,
-/*20080827 to 20180621
+/*20080827 to 20180711
게임가드 초기화 ì—러입니다. 재부팅 후 다시 실행해보거나 충ëŒí•  수 있는 다른 í”„ë¡œê·¸ëž¨ë“¤ì„ ì¢…ë£Œí•œ 후 실행해 보시기 ë°”ëžë‹ˆë‹¤.
Failed to intialize GameGuard. Please try again after rebooting the system or closing other programs.
*/
MSG_ERROR_INIT = 0x3a6,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë°”ì´ëŸ¬ìŠ¤ ë° í•´í‚¹íˆ´ 검사 모듈 ë¡œë”©ì— ì‹¤íŒ¨ 했습니다. 메모리 부족ì´ê±°ë‚˜ ë°”ì´ëŸ¬ìŠ¤ì— ì˜í•œ ê°ì—¼ì¼ 수 있습니다.
Failed to load the scan module of virus and hacking tool. It's caused by lack of memory or PC virus infection.
*/
MSG_ERROR_NPSCAN = 0x3a7,
-/*20080827 to 20180621
+/*20080827 to 20180711
호문í´ë£¨ìŠ¤ ì •ë³´
Homunculus Info
*/
MSG_HOMUN_INFO = 0x3a8,
-/*20080827 to 20180621
+/*20080827 to 20180711
호문í´ë£¨ìŠ¤ 스킬목ë¡
Homunculus Skill List
*/
MSG_HOMUN_SKILLLIST = 0x3a9,
-/*20080827 to 20180621
+/*20080827 to 20180711
호문í´ë£¨ìŠ¤ì˜ ì´ë¦„ì€ ì˜ë¬¸ 23, 한글 11ìž ì´ë‚´ë¡œ ì •í•´ 주세요.
Please give your Homunculus a name no longer than 23 letters.
*/
MSG_HOMUN_NAME_IN23 = 0x3aa,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¦„ì€ ë‹¨ 한번만 바꿀수 있습니다. 호문í´ë£¨ìŠ¤ì˜ ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You can name a Homunculus only once. You have entered the name, ^0000ff%s^000000. Would you like to continue?
*/
MSG_HOMUN_NAME_CHANGE_ONLYONCE = 0x3ab,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì§€ê¸ˆì€ ë¶€ìž¬ì¤‘~
(Away)
*/
MSG_AUTO_MSG = 0x3ac,
-/*20080827 to 20180621
+/*20080827 to 20180711
[ìžë™ì‘답]
[Automated Message]
*/
MSG_AUTO_MSG2 = 0x3ad,
-/*20080827 to 20180621
+/*20080827 to 20180711
부재시 타ì¸ì˜ ê·“ë§ì— ìžë™ì‘답합니다.
Send an automated message while you are away.
*/
MSG_AUTO_MSG_ON = 0x3ae,
-/*20080827 to 20180621
+/*20080827 to 20180711
부재시 타ì¸ì˜ ê·“ë§ì— ìžë™ì‘답하지 않습니다.
Cancel automated away message.
*/
MSG_AUTO_MSG_OFF = 0x3af,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìžë™ ì‘답 메시지를 입력하세요.
Please enter Away Message.
*/
MSG_ENTER_AUTO_MSG = 0x3b0,
-/*20080827 to 20180621
+/*20080827 to 20180711
/번ì©
/fsh
*/
MSG_EMOTION_SPARK = 0x3b1,
-/*20080827 to 20180621
+/*20080827 to 20180711
/빙빙
/spin
*/
MSG_EMOTION_CONFUSE = 0x3b2,
-/*20080827 to 20180621
+/*20080827 to 20180711
/하아
/sigh
*/
MSG_EMOTION_OHNO = 0x3b3,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ë¤ë¤
/dum
*/
MSG_EMOTION_HUM = 0x3b4,
-/*20080827 to 20180621
+/*20080827 to 20180711
/ì‹œëŒ
/crwd
*/
MSG_EMOTION_BLABLA = 0x3b5,
-/*20080827 to 20180621
+/*20080827 to 20180711
/좌절
/desp
*/
MSG_EMOTION_OTL = 0x3b6,
-/*20080827 to 20180621
+/*20080827 to 20180711
/주사위
/dice
*/
MSG_EMOTION_DICE = 0x3b7,
-/*20080827 to 20180621
+/*20080827 to 20180711
/pk : 학살ìžì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/pk: Shows top 10 Slayers in the server.
*/
MSG_EXPLAIN_KILLER_RANK = 0x3b8,
-/*20080827 to 20180621
+/*20080827 to 20180711
[POINT] í•™ì‚´ìž ëž­í‚¹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[POINT] You have been rewarded with %d Slayer rank points. Your point total is %d.
*/
MSG_KILLER_POINT = 0x3b9,
-/*20080827 to 20180621
+/*20080827 to 20180711
진화 가능
Evolution Available
*/
MSG_HOMUN_EVOLVE = 0x3ba,
-/*20080827 to 20180621
+/*20080827 to 20180711
^ff0000^ff0000호문í´ë£¨ìŠ¤ë¥¼ 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 ë‚´ì—­ì´ ëª¨ë‘ ì‚­ì œë©ë‹ˆë‹¤. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You have decided to delete this Homunculus ^ff0000^ff0000. When deleted, the homunculus and its history will be deleted and they cannot be restored in the future. Would you like to continue?
*/
MSG_DELETE_HOMUN = 0x3bb,
-/*20080827 to 20180621
+/*20080827 to 20180711
í˜¸ë¬¸ì˜ ìƒíƒœë¥¼ 파ì¼ì— 저장합니다.
Save Homunculus status as a file.
*/
MSG_TRACE_AI_ON = 0x3bc,
-/*20080827 to 20180621
+/*20080827 to 20180711
í˜¸ë¬¸ì˜ ìƒíƒœë¥¼ 파ì¼ì— 저장하지 않습니다.
Do not save Homunculus status as a file.
*/
MSG_TRACE_AI_OFF = 0x3bd,
-/*20080827 to 20180621
+/*20080827 to 20180711
Crusader
*/
MSG_CRUSADER = 0x3be,
-/*20080827 to 20180621
+/*20080827 to 20180711
Monk
*/
MSG_MONK = 0x3bf,
-/*20080827 to 20180621
+/*20080827 to 20180711
Sage
*/
MSG_SAGE = 0x3c0,
-/*20080827 to 20180621
+/*20080827 to 20180711
Rouge
Rogue
*/
MSG_ROGUE = 0x3c1,
-/*20080827 to 20180621
+/*20080827 to 20180711
Alchemist
*/
MSG_ALCHEMIST = 0x3c2,
-/*20080827 to 20180621
+/*20080827 to 20180711
Bard
*/
MSG_BARD = 0x3c3,
-/*20080827 to 20180621
+/*20080827 to 20180711
Crusader_W
Crusader
*/
MSG_CRUSADER_W = 0x3c4,
-/*20080827 to 20180621
+/*20080827 to 20180711
Monk_W
Monk
*/
MSG_MONK_W = 0x3c5,
-/*20080827 to 20180621
+/*20080827 to 20180711
Sage_W
Sage
*/
MSG_SAGE_W = 0x3c6,
-/*20080827 to 20180621
+/*20080827 to 20180711
Rouge_W
Rogue
*/
MSG_ROGUE_W = 0x3c7,
-/*20080827 to 20180621
+/*20080827 to 20180711
Alchemist_W
Alchemist
*/
MSG_ALCHEMIST_W = 0x3c8,
-/*20080827 to 20180621
+/*20080827 to 20180711
Dancer
*/
MSG_DANCER = 0x3c9,
-/*20080827 to 20180621
+/*20080827 to 20180711
Novice High
High Novice
*/
MSG_NOVICE_H = 0x3ca,
-/*20080827 to 20180621
+/*20080827 to 20180711
Swordman High
High Swordman
*/
MSG_SWORDMAN_H = 0x3cb,
-/*20080827 to 20180621
+/*20080827 to 20180711
Magician High
High Mage
*/
MSG_MAGICIAN_H = 0x3cc,
-/*20080827 to 20180621
+/*20080827 to 20180711
Archer High
High Archer
*/
MSG_ARCHER_H = 0x3cd,
-/*20080827 to 20180621
+/*20080827 to 20180711
Acolyte High
High Acolyte
*/
MSG_ACOLYTE_H = 0x3ce,
-/*20080827 to 20180621
+/*20080827 to 20180711
Merchant High
High Merchant
*/
MSG_MERCHANT_H = 0x3cf,
-/*20080827 to 20180621
+/*20080827 to 20180711
Thief High
High Thief
*/
MSG_THIEF_H = 0x3d0,
-/*20080827 to 20180621
+/*20080827 to 20180711
Novice High_W
High Novice
*/
MSG_NOVICE_H_W = 0x3d1,
-/*20080827 to 20180621
+/*20080827 to 20180711
Swordman High_W
High Swordman
*/
MSG_SWORDMAN_H_W = 0x3d2,
-/*20080827 to 20180621
+/*20080827 to 20180711
Magician High_W
High Mage
*/
MSG_MAGICIAN_H_W = 0x3d3,
-/*20080827 to 20180621
+/*20080827 to 20180711
Archer High_W
High Archer
*/
MSG_ARCHER_H_W = 0x3d4,
-/*20080827 to 20180621
+/*20080827 to 20180711
Acolyte High_W
High Acolyte
*/
MSG_ACOLYTE_H_W = 0x3d5,
-/*20080827 to 20180621
+/*20080827 to 20180711
Merchant High_W
High Merchant
*/
MSG_MERCHANT_H_W = 0x3d6,
-/*20080827 to 20180621
+/*20080827 to 20180711
Thief High_W
High Thief
*/
MSG_THIEF_H_W = 0x3d7,
-/*20080827 to 20180621
+/*20080827 to 20180711
Lord Knight
*/
MSG_KNIGHT_H = 0x3d8,
-/*20080827 to 20180621
+/*20080827 to 20180711
High Priest
*/
MSG_PRIEST_H = 0x3d9,
-/*20080827 to 20180621
+/*20080827 to 20180711
High Wizard
*/
MSG_WIZARD_H = 0x3da,
-/*20080827 to 20180621
+/*20080827 to 20180711
White Smith
WhiteSmith
*/
MSG_BLACKSMITH_H = 0x3db,
-/*20080827 to 20180621
+/*20080827 to 20180711
Sniper
*/
MSG_HUNTER_H = 0x3dc,
-/*20080827 to 20180621
+/*20080827 to 20180711
Saaassin Cross
Assassin Cross
*/
MSG_ASSASSIN_H = 0x3dd,
-/*20080827 to 20180621
+/*20080827 to 20180711
Lord Knight_W
Lord Knight
*/
MSG_KNIGHT_H_W = 0x3de,
-/*20080827 to 20180621
+/*20080827 to 20180711
High Priest_W
High Priest
*/
MSG_PRIEST_H_W = 0x3df,
-/*20080827 to 20180621
+/*20080827 to 20180711
High Wizard_W
High Wizard
*/
MSG_WIZARD_H_W = 0x3e0,
-/*20080827 to 20180621
+/*20080827 to 20180711
White Smith_W
WhiteSmith
*/
MSG_BLACKSMITH_H_W = 0x3e1,
-/*20080827 to 20180621
+/*20080827 to 20180711
Sniper_W
Sniper
*/
MSG_HUNTER_H_W = 0x3e2,
-/*20080827 to 20180621
+/*20080827 to 20180711
Saaassin Cross_W
Assassin Cross
*/
MSG_ASSASSIN_H_W = 0x3e3,
-/*20080827 to 20180621
+/*20080827 to 20180711
Paladin
*/
MSG_CRUSADER_H = 0x3e4,
-/*20080827 to 20180621
+/*20080827 to 20180711
Champion
*/
MSG_MONK_H = 0x3e5,
-/*20080827 to 20180621
+/*20080827 to 20180711
Professor
Scholar
*/
MSG_SAGE_H = 0x3e6,
-/*20080827 to 20180621
+/*20080827 to 20180711
Stalker
*/
MSG_ROGUE_H = 0x3e7,
-/*20080827 to 20180621
+/*20080827 to 20180711
Creator
Biochemist
*/
MSG_ALCHEMIST_H = 0x3e8,
-/*20080827 to 20180621
+/*20080827 to 20180711
Clown
Minstrel
*/
MSG_BARD_H = 0x3e9,
-/*20080827 to 20180621
+/*20080827 to 20180711
Paladin_W
Paladin
*/
MSG_CRUSADER_H_W = 0x3ea,
-/*20080827 to 20180621
+/*20080827 to 20180711
Champion_W
Champion
*/
MSG_MONK_H_W = 0x3eb,
-/*20080827 to 20180621
+/*20080827 to 20180711
Professor_W
Professor
*/
MSG_SAGE_H_W = 0x3ec,
-/*20080827 to 20180621
+/*20080827 to 20180711
Stalker_W
Stalker
*/
MSG_ROGUE_H_W = 0x3ed,
-/*20080827 to 20180621
+/*20080827 to 20180711
Creator_W
Creator
*/
MSG_ALCHEMIST_H_W = 0x3ee,
-/*20080827 to 20180621
+/*20080827 to 20180711
Gypsy
*/
MSG_DANCER_H = 0x3ef,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호가 지정ë˜ì–´ 있지 않습니다. 새로운 비밀번호를 지정하시겠습니까?
You have not set a password yet. Would you like to create one now?
*/
MSG_STORE_PASSWORD_REQ = 0x3f0,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호를 3회 틀려셨습니다. ë‚˜ì¤‘ì— ë‹¤ì‹œ ì‹œë„í•´ 주세요.
You have incorrectly entered the password 3 times. Please try again later.
*/
MSG_STORE_PASSWORD_PENALTY = 0x3f1,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호 ë³€ê²½ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Password creation has failed.
*/
MSG_STORE_PASSWORD_CHANGE_NG = 0x3f2,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호는 4ìžë¦¬ ì´ìƒ 8ìžë¦¬ì´í•˜ì—¬ì•¼ë§Œ 합니다.
Password must be 4~8 letters long.
*/
MSG_STORE_PASSWORD_4_8 = 0x3f3,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호
Password
*/
MSG_STORE_PASSWORD = 0x3f4,
-/*20080827 to 20180621
+/*20080827 to 20180711
신규 비밀번호
New Password
*/
MSG_STORE_NEW_PASSWORD = 0x3f5,
-/*20080827 to 20180621
+/*20080827 to 20180711
í™•ì¸ ë¹„ë°€ë²ˆí˜¸
Confirm Password
*/
MSG_STORE_RENEW_PASSWORD = 0x3f6,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호 ë³€ê²½ì´ ì™„ë£Œë˜ì—ˆìŠµë‹ˆë‹¤.
Password has been changed.
*/
MSG_STORE_PASSWORD_CHANGE_OK = 0x3f7,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호가 서로 다릅니다.
Password does not match.
*/
MSG_STORE_PASSWORD_MISMATCH = 0x3f8,
-/*20080827 to 20180621
+/*20080827 to 20180711
비밀번호 입력
Enter Password
*/
MSG_STORE_PASSWORD_INPUT = 0x3f9,
-/*20080827 to 20180621
+/*20080827 to 20180711
í˜¸ë¬¸ì´ ì•„ì‚¬ ì§ì „입니다! 먹ì´ë¥¼ 주지 않으면 가출하게ë©ë‹ˆë‹¤.
Your Homunculus is starving. Please feed it, otherwise it will leave you.
*/
MSG_HOMUN_HUNGRY = 0x3fa,
-/*20080827 to 20180621
+/*20080827 to 20180711
경험치
EXP
*/
MSG_HOMUN_EXP = 0x3fb,
/*20080827 to 20110526
[EVENT] ì´ë²¤íŠ¸ì— 당첨ë˜ì…¨ìŠµë‹ˆë‹¤. 게임내ì—ì„œ ì•„ì´í…œì„ 지급받으십시요.
-20110531 to 20180621
+20110531 to 20180711
수령하지 ì•Šì€ ì•„ì´í…œì´ 존재합니다. ì•Œë² ë¥´íƒ€ì˜ ì¡´ë‹¤ 기íšì‚¬ ì§ì›ì„ 찾아주세요. ^ff0000※ ì•„ì´í…œ 수령 ê¸°ê°„ì´ ì§€ë‚˜ë©´ ì•„ì´í…œì´ 소실 ë©ë‹ˆë‹¤!^000000
[EVENT] You have won an event prize. Please claim your prize in game.
*/
MSG_EVENT_RESULT = 0x3fc,
-/*20080827 to 20180621
+/*20080827 to 20180711
싫어함
Hate
*/
MSG_HATE = 0x3fd,
-/*20080827 to 20180621
+/*20080827 to 20180711
매우싫어함
Hate with a Passion
*/
MSG_VERYHATE = 0x3fe,
-/*20080827 to 20180621
+/*20080827 to 20180711
호문í´ë£¨ìŠ¤ê°€ ì‚¬ìš©ìž ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Homunculus has been customized.
*/
MSG_HOMUN_USERAI_ON = 0x3ff,
-/*20080827 to 20180621
+/*20080827 to 20180711
호문í´ë£¨ìŠ¤ê°€ 기본 ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Homunculus has been activated with the basic AI.
*/
MSG_HOMUN_USERAI_OFF = 0x400,
-/*20080827 to 20180621
+/*20080827 to 20180711
편지목ë¡
Mail List
*/
MSG_MAIL_LIST = 0x401,
-/*20080827 to 20180621
+/*20080827 to 20180711
편지쓰기
Write Mail
*/
MSG_MAIL_WRITE = 0x402,
-/*20080827 to 20180621
+/*20080827 to 20180711
편지ì½ê¸°
Read Mail
*/
MSG_MAIL_READ = 0x403,
-/*20080827 to 20180621
+/*20080827 to 20180711
한번 지정하시면 ë³€ê²½ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤! ì´ ë§µìœ¼ë¡œ 지정하시겠습니까?
You cannot change a map's designation once it is designated. Are you sure that you want to designate this map?
*/
MSG_STARPLACE_ACCEPT = 0x404,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ ì•„ì´í…œì„ 수령했습니다.
Item has been added in the Item Window.
*/
MSG_MAIL_ADD_ITEM_SUCCESS = 0x405,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ ì•„ì´í…œì„ 수령하지 못했습니다.
You have failed to add the item in the Item Window.
*/
MSG_MAIL_ADD_ITEM_FAILURE = 0x406,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ ë³´ë‚´ê¸°ê°€ 성공하였습니다.
You have successfully mailed a message.
*/
MSG_MAIL_SEND_SUCCESS = 0x407,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ ë³´ë‚´ê¸°ê°€ 실패하였습니다. 받는 ì‚¬ëžŒì´ ì¡´ìž¬í•˜ì§€ 않습니다.
You have failed to mail a message. Recipient does not exist.
*/
MSG_MAIL_USER_NOT_FOUND = 0x408,
-/*20080827 to 20180621
+/*20080827 to 20180711
[태양과 달과 ë³„ì˜ ì²œì‚¬] ì§€ì •í–ˆë˜ ìž¥ì†Œë“¤ê³¼ ëª¬ìŠ¤í„°ë“¤ì´ ì´ˆê¸°í™”ë습니다!
[Solar, Lunar and Stellar Angel] Designated places and monsters have been reset.
*/
MSG_STAR_ANGEL = 0x409,
-/*20080827 to 20180621
+/*20080827 to 20180711
경매 등ë¡ì´ 실패했습니다.
The minimum starting bid for auctions is 10,000,000 zeny.
*/
MSG_AUCTION_ADD_FALSE = 0x40a,
-/*20080827 to 20180621
+/*20080827 to 20180711
경매 등ë¡ì´ 성공했습니다.
You have successfully started a new auction.
*/
MSG_AUCTION_ADD_TRUE = 0x40b,
-/*20080827 to 20180621
+/*20080827 to 20180711
해당 경매가 취소ë˜ì—ˆìŠµë‹ˆë‹¤.
The auction has been canceled.
*/
MSG_AUCTION_ADD_CANCEL = 0x40c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìž…ì°°ìžê°€ 있는 경매는 취소할 수 없습니다.
An auction with at least one bidder cannot be canceled.
*/
MSG_AUCTION_ADD_CANCEL_FALSE = 0x40d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ ì‚­ì œê°€ 성공하였습니다.
Mail has been successfully deleted.
*/
MSG_MAIL_DELETE_SUCCESS = 0x40e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ ì‚­ì œê°€ 실패하였습니다.
You have failed to delete the mail.
*/
MSG_MAIL_DELETE_FAILURE = 0x40f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë˜ì§€ëŠ” ë‹¨ê²€ì´ ìž¥ì°©ë˜ì—ˆìŠµë‹ˆë‹¤.
You have equipped throwing daggers.
*/
MSG_MSG_KNIFE_EQUIPMENT_SUCCESS = 0x410,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s ë‹˜ì´ ë¡œê·¸ì¸í–ˆìŠµë‹ˆë‹¤.
%s has logged in.
*/
MSG_LOGIN_FRIEND = 0x411,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s ë‹˜ì´ ë¡œê·¸ì•„ì›ƒí–ˆìŠµë‹ˆë‹¤.
%s has logged out.
*/
MSG_LOGOUT_FRIEND = 0x412,
-/*20080827 to 20180621
+/*20080827 to 20180711
/loginout : 길드ì›ê³¼ ì¹œêµ¬ë“¤ì˜ ì ‘ì†ê´€ë ¨ 메세지를 ë³´ì—¬ì¤ë‹ˆë‹¤. On Off
/loginout: Shows guildsmen and friends online status. On Off
*/
MSG_EXPLAIN_LOGINOUT = 0x413,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¹œêµ¬ë“¤ì˜ ì ‘ì†ê´€ë ¨ 메세지를 ëŒ€í™”ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤. [/li ON]
Display online status of friends in Chat Window. [/li ON]
*/
MSG_LOGINOUT_ON = 0x414,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¹œêµ¬ë“¤ì˜ ì ‘ì†ê´€ë ¨ 메세지를 ëŒ€í™”ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤. [/li OFF]
Do not display online status of friends in Chat Window. [/li OFF]
*/
MSG_LOGINOUT_OFF = 0x415,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¯¸ 실행중입니다.
It is already running.
*/
MSG_SGP_CODE_ALREADY_RUNNING = 0x416,
-/*20080827 to 20180621
+/*20080827 to 20180711
매í¬ë¡œ ì‚¬ìš©ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Use of Macro program has been detected.
*/
MSG_SGP_CODE_DETECTED_MACRO = 0x417,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í”¼ë“œí•´í‚¹ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Use of Speed hack has been detected.
*/
MSG_SGP_CODE_DETECTED_SPEEDHACK = 0x418,
-/*20080827 to 20180621
+/*20080827 to 20180711
API í›„í‚¹ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
API Hooking has been detected.
*/
MSG_SGP_CODE_DETECTED_APIHOOK = 0x419,
-/*20080827 to 20180621
+/*20080827 to 20180711
메시지 í›„í‚¹ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Message Hooking has been detected.
*/
MSG_SGP_CODE_DETECTED_MSGHOOK = 0x41a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ëª¨ë“ˆì´ ë³€ì¡° ë˜ëŠ” ì†ìƒë˜ì—ˆê±°ë‚˜ ë²„ì „ì´ ì¼ì¹˜í•˜ì§€ 않습니다.
Module has been modified or damaged or its version does not match.
*/
MSG_SGP_CODE_NOT_EQUALENCRYPTEDDATA = 0x41b,
-/*20080827 to 20180621
+/*20080827 to 20180711
(태국)귀하는 게임방 과금으로 ë¡œê·¸ì¸ í•˜ì…¨ìŠµë‹ˆë‹¤.
(Thailand) You have logged in game with PC cafe payment.
*/
MSG_BILLING_PCB = 0x41c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ì „
Prev
*/
MSG_PREV_PAGE = 0x41d,
-/*20080827 to 20180621
+/*20080827 to 20180711
다ìŒ
Next
*/
MSG_NEXT_PAGE = 0x41e,
-/*20080827 to 20180621
+/*20080827 to 20180711
경매
Auction
*/
MSG_AUCTION = 0x41f,
-/*20080827 to 20180621
+/*20080827 to 20180711
물품보기
Product List
*/
MSG_AUCTION_VIEW = 0x420,
-/*20080827 to 20180621
+/*20080827 to 20180711
등ë¡í•˜ê¸°
Register
*/
MSG_AUCTION_ADD = 0x421,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŒë§¤ 진행ìƒíƒœ
Sale Status
*/
MSG_AUCTION_SELL = 0x422,
-/*20080827 to 20180621
+/*20080827 to 20180711
구매 진행ìƒíƒœ
Purchase Status
*/
MSG_AUCTION_BUY = 0x423,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ
Item
*/
MSG_ITEM2 = 0x424,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œëª…
Name
*/
MSG_ITEM_NAME2 = 0x425,
-/*20080827 to 20180621
+/*20080827 to 20180711
가격 / 즉시구입가격
Current Bid / Max Bid
*/
MSG_ITEM_PRICE = 0x426,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŒë§¤ìž
Seller
*/
MSG_SELLER = 0x427,
-/*20080827 to 20180621
+/*20080827 to 20180711
구매ìž
Buyer
*/
MSG_BUYER = 0x428,
-/*20080827 to 20180621
+/*20080827 to 20180711
종료시간
End Time
*/
MSG_FINISH_TIME = 0x429,
-/*20080827 to 20180621
+/*20080827 to 20180711
%mì›” %dì¼ %Hì‹œ
%m %d %H
*/
MSG_TIME_TYPE = 0x42a,
-/*20080827 to 20180621
+/*20080827 to 20180711
시간설정
Time (Hr)
*/
MSG_SET_TIME = 0x42b,
-/*20080827 to 20180621
+/*20080827 to 20180711
수수료
Fee
*/
MSG_CHARGE = 0x42c,
/*20080827 to 20170906
검색 ëœ ì•„ì´í…œì´ 없습니다.
-20170913 to 20180621
+20170913 to 20180711
ê²€ìƒ‰ëœ ì•„ì´í…œì´ 없습니다.
No items found in search.
*/
MSG_NOTHING_SEARCH_ITEM = 0x42d,
-/*20080827 to 20180621
+/*20080827 to 20180711
현재 íŒë§¤ì¤‘ì¸ ì•„ì´í…œì´ 없습니다.
Your Sale List is empty.
*/
MSG_NOTHING_SEARCH_SELL_ITEM = 0x42e,
-/*20080827 to 20180621
+/*20080827 to 20180711
현재 êµ¬ë§¤ì¤‘ì¸ ì•„ì´í…œì´ 없습니다.
Your Purchase List is empty.
*/
MSG_NOTHING_SEARCH_BUY_ITEM = 0x42f,
-/*20080827 to 20180621
+/*20080827 to 20180711
경매정보가 정확하지 않습니다.
Auction Information is incorrect or incomplete.
*/
MSG_ERROR_AUCTION_ITEM_INFO = 0x430,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê²½ë§¤ì— ë“±ë¡í•  ì•„ì´í…œ ì •ë³´ê°€ 없습니다.
You must drag and drop an item from your Inventory into the Register Window to begin a new auction.
*/
MSG_NOTHING_AUCTION_ITEM_INFO = 0x431,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¯¸ 등ë¡ëœ 경매입니다.
The auction has already been registered.
*/
MSG_ERROR_ADD_AUCTION = 0x432,
-/*20080827 to 20180621
+/*20080827 to 20180711
제시가격
Starting Bid
*/
MSG_PRICE = 0x433,
-/*20080827 to 20180621
+/*20080827 to 20180711
구입í¬ë§ê°€ê²©
Current Bid
*/
MSG_PRICE2 = 0x434,
-/*20080827 to 20180621
+/*20080827 to 20180711
즉시구입가격
Buy Now Price
*/
MSG_PRICE3 = 0x435,
-/*20080827 to 20180621
+/*20080827 to 20180711
현재소지제니
Your Current Zeny
*/
MSG_PRICE4 = 0x436,
-/*20080827 to 20180621
+/*20080827 to 20180711
현재최고가격
Highest Bid
*/
MSG_PRICE5 = 0x437,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ì „입찰가격
Previous Bid
*/
MSG_PRICE6 = 0x438,
-/*20080827 to 20180621
+/*20080827 to 20180711
추가입찰가격
Next Bid
*/
MSG_PRICE7 = 0x439,
-/*20080827 to 20180621
+/*20080827 to 20180711
구입하시겠습니까?
Press buy to confirm.
*/
MSG_BUY_ACTION_ITEM = 0x43a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ê°€ê²©ì— íŒë§¤í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Would you like to sell this item?
*/
MSG_SELL_ACTION_ITEM = 0x43b,
-/*20080827 to 20180621
+/*20080827 to 20180711
입찰하기
Place Bid
*/
MSG_BUY_AUCTION = 0x43c,
-/*20080827 to 20180621
+/*20080827 to 20180711
즉시구매하기
Buy Now
*/
MSG_BUY_AUCTION2 = 0x43d,
-/*20080827 to 20180621
+/*20080827 to 20180711
경매종료하기
End the Auction
*/
MSG_BUY_AUCTION3 = 0x43e,
-/*20080827 to 20180621
+/*20080827 to 20180711
재입찰하기
Place another Bid
*/
MSG_FINISH_AUCTION = 0x43f,
-/*20080827 to 20180621
+/*20080827 to 20180711
해당 ê²½ë§¤ì— ëŒ€í•œ ìž…ì°°ì´ ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
You have placed a bid.
*/
MSG_RESULT_BUY_TRUE = 0x440,
-/*20080827 to 20180621
+/*20080827 to 20180711
해당 ê²½ë§¤ì— ëŒ€í•œ ìž…ì°°ì´ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
You have failed to place a bid.
*/
MSG_RESULT_BUY_FALSE = 0x441,
-/*20080827 to 20180621
+/*20080827 to 20180711
제니가 충분하지 않습니다.
You do not have enough zeny.
*/
MSG_RESULT_BUY_FALSE_MONEY = 0x442,
-/*20080827 to 20180621
+/*20080827 to 20180711
방어구
Armors
*/
MSG_EQUIP = 0x443,
-/*20080827 to 20180621
+/*20080827 to 20180711
카드
Card
*/
MSG_CARD = 0x444,
-/*20080827 to 20180621
+/*20080827 to 20180711
기타
Other
*/
MSG_ETC = 0x445,
-/*20080827 to 20180621
+/*20080827 to 20180711
경매번호
Bid
*/
MSG_AUCTION_NUM = 0x446,
-/*20080827 to 20180621
+/*20080827 to 20180711
검색
Search
*/
MSG_AUCTION_SEARCH = 0x447,
-/*20080827 to 20180621
+/*20080827 to 20180711
해당 경매를 종료했습니다.
You have ended the auction.
*/
MSG_RESULT_MY_SELL_STOP_TRUE = 0x448,
-/*20080827 to 20180621
+/*20080827 to 20180711
해당 경매를 종료 할 수 없습니다.
You cannot end the auction.
*/
MSG_RESULT_MY_SELL_STOP_FALSE = 0x449,
-/*20080827 to 20180621
+/*20080827 to 20180711
경매 번호가 정확하지 않습니다.
Bid Number is incorrect.
*/
MSG_RESULT_AUCTION_ID_FALSE = 0x44a,
-/*20080827 to 20180621
+/*20080827 to 20180711
받는ì´
To
*/
MSG_SENDER = 0x44b,
-/*20080827 to 20180621
+/*20080827 to 20180711
제 목
Title
*/
MSG_TITLE2 = 0x44c,
-/*20080827 to 20180621
+/*20080827 to 20180711
새 ë©”ì¼ì´ ë„착하였습니다.
You have received a message in the mail.
*/
MSG_NEW_MAIL = 0x44d,
-/*20080827 to 20180621
+/*20080827 to 20180711
검색중입니다.
Searching...
*/
MSG_SEARCHING_ITEM = 0x44e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë” ì´ìƒ 경매 등ë¡í•  수 없습니다. 경매 등ë¡ì€ 최대 5개까지 가능합니다.
You cannot register more than 5 items in an auction at a time.
*/
MSG_AUCTION_ADD_OVER = 0x44f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë” ì´ìƒ 경매 ë¬¼í’ˆì— ìž…ì°°í•  수 없습니다. 경매 물품 ìž…ì°°ì€ ìµœëŒ€ 5개까지 가능합니다.
You cannot place more than 5 bids at a time.
*/
MSG_RESULT_BUY_OVER = 0x450,
-/*20080827 to 20180621
+/*20080827 to 20180711
삭제하려는 ë©”ì¼ì— 수령하지 ì•Šì€ ì•„ì´í…œì´ 있습니다.
Please accept all items from your mail before deleting.
*/
MSG_MAIL_DELETE_ERROR = 0x451,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ ì œëª©ì„ ìž…ë ¥í•˜ì—¬ 주십시오.
Please enter a title.
*/
MSG_MAIL_SEND_ERROR = 0x452,
-/*20080827 to 20180621
+/*20080827 to 20180711
/shopping : í´ë¦­ 한번으로 ìƒì ì„ ì—´ê³  ìƒì ì´ë¦„ 오른쪽 í´ë¦­ìœ¼ë¡œ ìƒì ì„ 닫습니다 On Off
/shopping: Enables you to open a shop with a single left-click and close your shop with a single right-click. On Off
*/
MSG_EXPLAIN_SHOPPING = 0x453,
-/*20080827 to 20180621
+/*20080827 to 20180711
í´ë¦­ 한번으로 ìƒì ì„ ì—´ê³  ìƒì ì´ë¦„ì„ ì˜¤ë¥¸ìª½ í´ë¦­í•´ì„œ ìƒì ì„ ë‹«ì„수있습니다. [/sh ON]
You can now open a shop with a single left-click and close your shop with a single right-click. [sh ON].
*/
MSG_SHOPPING_ON = 0x454,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë”블í´ë¦­ 으로 ìƒì ì„ 열게ë©ë‹ˆë‹¤. [/sh OFF]
You can open a shop by double-clicking. [/sh OFF]
*/
MSG_SHOPPING_OFF = 0x455,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ì„ 보내려면, 제니 ìž…ë ¥ì„ ì™„ë£Œí•´ì•¼ 합니다.
Please enter zeny amount before sending mail.
*/
MSG_MAIL_SEND_ERROR2 = 0x456,
-/*20080827 to 20180621
+/*20080827 to 20180711
경매 수수료가 부족합니다.
You do not have enough zeny to pay the Auction Fee.
*/
MSG_ADD_MONEY_FALSE = 0x457,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒíƒœë³´ê¸°
View Status
*/
MSG_HOMUN_SHOWINFO = 0x458,
-/*20080827 to 20180621
+/*20080827 to 20180711
먹ì´ì£¼ê¸°
Feed
*/
MSG_HOMUN_FEEDING = 0x459,
-/*20080827 to 20180621
+/*20080827 to 20180711
대기
Stand By
*/
MSG_HOMUN_WAITING = 0x45a,
-/*20080827 to 20180621
+/*20080827 to 20180711
슈í¼ë…¸ë¹„스(남)
Super Novice (Male)
*/
MSG_JOB_SUPERNOVICE_M = 0x45b,
-/*20080827 to 20180621
+/*20080827 to 20180711
슈í¼ë…¸ë¹„스(ì—¬)
Super Novice (Female)
*/
MSG_JOB_SUPERNOVICE_F = 0x45c,
-/*20080827 to 20180621
+/*20080827 to 20180711
태권소년
Taekwon Boy
*/
MSG_JOB_TAEKWON_M = 0x45d,
-/*20080827 to 20180621
+/*20080827 to 20180711
태권소녀
Taekwon Girl
*/
MSG_JOB_TAEKWON_F = 0x45e,
-/*20080827 to 20180621
+/*20080827 to 20180711
권성(남)
Taekwon Master (Male)
*/
MSG_KWONSUNG_M = 0x45f,
-/*20080827 to 20180621
+/*20080827 to 20180711
권성(여)
Taekwon Master (Female)
*/
MSG_KWONSUNG_F = 0x460,
-/*20080827 to 20180621
+/*20080827 to 20180711
소울ë§ì»¤(남)
Soul Linker (Male)
*/
MSG_SOULLINGKER_M = 0x461,
-/*20080827 to 20180621
+/*20080827 to 20180711
소울ë§ì»¤(ì—¬)
Soul Linker (Female)
*/
MSG_SOULLINGKER_F = 0x462,
-/*20080827 to 20180621
+/*20080827 to 20180711
PC방요금제로 2ê°œì´ìƒì˜ ê³„ì •ì´ ì ‘ì†ë˜ê³ ìžˆìŠµë‹ˆë‹¤. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
Please check the connection, more than 2 accounts are connected with Internet Cafe Time Plan.
*/
MSG_BAN_PC_IP_UNFAIR = 0x463,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 월정액 요금제 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤. (남ì€ê¸°ê°„ : %dì¼)
Your account is using monthly payment. (Remaining day: %d day)
*/
MSG_BILLING_1 = 0x464,
-/*20080827 to 20180621
+/*20080827 to 20180711
귀하는 정량 요금제 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤. (남ì€ì‹œê°„ : %d시간 %분 %ì´ˆ)
Your account is using time limited. (Remaining time: %d hour %d minute %d second)
*/
MSG_BILLING_2 = 0x465,
-/*20080827 to 20180621
+/*20080827 to 20180711
해당 ì•„ì´í…œì€ ë©”ì¼ì— 첨부 할수 없는 ì•„ì´í…œìž…니다.
This item cannot be mailed.
*/
MSG_MAIL_ITEM_ADD_FAILED = 0x466,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë”ì´ìƒ ì•„ì´í…œì„ 가질수 없습니다. ì•„ì´í…œì€ ë©”ì¼ë¡œ 보관하겠습니다.
You cannot accept any more items. Please try again later.
*/
MSG_MAIL_ADD_ITEM_OVER_FAILURE = 0x467,
-/*20080827 to 20180621
+/*20080827 to 20180711
남성
Male
*/
MSG_PTSEX1 = 0x468,
-/*20080827 to 20180621
+/*20080827 to 20180711
여성
Female
*/
MSG_PTSEX2 = 0x469,
-/*20080827 to 20180621
+/*20080827 to 20180711
새로운 유저입니다
New User.
*/
MSG_PT_NEWUSER = 0x46a,
-/*20080827 to 20180621
+/*20080827 to 20180711
E-mailì€ ìºë¦­í„°ë¥¼ 지울때 필요합니다.
E-mail address is required to delete a character.
*/
MSG_PT_ACINFO = 0x46b,
-/*20080827 to 20180621
+/*20080827 to 20180711
정확한 형ì‹ìœ¼ë¡œ 입력해 주세요.
Please enter the correct information.
*/
MSG_PT_ACINFO2 = 0x46c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ í‚¤ë¥¼ 사용하세요
Please use this key.
*/
MSG_PT_NEWKEYINFO = 0x46d,
-/*20080827 to 20180621
+/*20080827 to 20180711
정확한 카드 패스워드를 다시 입력해주세요
Please enter the correct card password.
*/
MSG_PT_FAIL_CARDPASS = 0x46e,
-/*20080827 to 20180621
+/*20080827 to 20180711
PTì •ë³´
PT Info
*/
MSG_PTID1 = 0x46f,
-/*20080827 to 20180621
+/*20080827 to 20180711
PT_ID는 %s
PT_ID is %s
*/
MSG_PTID2 = 0x470,
-/*20080827 to 20180621
+/*20080827 to 20180711
NUM_ID는 %s
NUM_ID is %s
*/
MSG_PTID3 = 0x471,
-/*20080827 to 20180621
+/*20080827 to 20180711
잊지않게 주ì˜í•˜ì„¸ìš”
Please don't forget this information.
*/
MSG_PTID4 = 0x472,
-/*20080827 to 20180621
+/*20080827 to 20180711
1001
*/
MSG_PT_ERROR_1001 = 0x473,
-/*20080827 to 20180621
+/*20080827 to 20180711
1002
*/
MSG_PT_ERROR_1002 = 0x474,
-/*20080827 to 20180621
+/*20080827 to 20180711
1003
*/
MSG_PT_ERROR_1003 = 0x475,
-/*20080827 to 20180621
+/*20080827 to 20180711
1004
*/
MSG_PT_ERROR_1004 = 0x476,
-/*20080827 to 20180621
+/*20080827 to 20180711
1006
*/
MSG_PT_ERROR_1006 = 0x477,
-/*20080827 to 20180621
+/*20080827 to 20180711
1007
*/
MSG_PT_ERROR_1007 = 0x478,
-/*20080827 to 20180621
+/*20080827 to 20180711
1008
*/
MSG_PT_ERROR_1008 = 0x479,
-/*20080827 to 20180621
+/*20080827 to 20180711
1009
*/
MSG_PT_ERROR_1009 = 0x47a,
-/*20080827 to 20180621
+/*20080827 to 20180711
1012
*/
MSG_PT_ERROR_1012 = 0x47b,
-/*20080827 to 20180621
+/*20080827 to 20180711
1013
*/
MSG_PT_ERROR_1013 = 0x47c,
-/*20080827 to 20180621
+/*20080827 to 20180711
1014
*/
MSG_PT_ERROR_1014 = 0x47d,
-/*20080827 to 20180621
+/*20080827 to 20180711
1015
*/
MSG_PT_ERROR_1015 = 0x47e,
-/*20080827 to 20180621
+/*20080827 to 20180711
1019
*/
MSG_PT_ERROR_1019 = 0x47f,
-/*20080827 to 20180621
+/*20080827 to 20180711
1020
Navigation
*/
MSG_PT_ERROR_1020 = 0x480,
-/*20080827 to 20180621
+/*20080827 to 20180711
1021
*/
MSG_PT_ERROR_1021 = 0x481,
-/*20080827 to 20180621
+/*20080827 to 20180711
1023
*/
MSG_PT_ERROR_1023 = 0x482,
-/*20080827 to 20180621
+/*20080827 to 20180711
1024
*/
MSG_PT_ERROR_1024 = 0x483,
-/*20080827 to 20180621
+/*20080827 to 20180711
1025
*/
MSG_PT_ERROR_1025 = 0x484,
-/*20080827 to 20180621
+/*20080827 to 20180711
1027
*/
MSG_PT_ERROR_1027 = 0x485,
-/*20080827 to 20180621
+/*20080827 to 20180711
1028
*/
MSG_PT_ERROR_1028 = 0x486,
-/*20080827 to 20180621
+/*20080827 to 20180711
10
*/
MSG_PT_ERROR_10 = 0x487,
-/*20080827 to 20180621
+/*20080827 to 20180711
20
*/
MSG_PT_ERROR_20 = 0x488,
-/*20080827 to 20180621
+/*20080827 to 20180711
40
*/
MSG_PT_ERROR_40 = 0x489,
-/*20080827 to 20180621
+/*20080827 to 20180711
50
*/
MSG_PT_ERROR_50 = 0x48a,
-/*20080827 to 20180621
+/*20080827 to 20180711
60
*/
MSG_PT_ERROR_60 = 0x48b,
-/*20080827 to 20180621
+/*20080827 to 20180711
70
*/
MSG_PT_ERROR_70 = 0x48c,
-/*20080827 to 20180621
+/*20080827 to 20180711
80
*/
MSG_PT_ERROR_80 = 0x48d,
-/*20080827 to 20180621
+/*20080827 to 20180711
90
*/
MSG_PT_ERROR_90 = 0x48e,
-/*20080827 to 20180621
+/*20080827 to 20180711
100
*/
MSG_PT_ERROR_100 = 0x48f,
-/*20080827 to 20180621
+/*20080827 to 20180711
110
*/
MSG_PT_ERROR_110 = 0x490,
-/*20080827 to 20180621
+/*20080827 to 20180711
30í¬ì¸íŠ¸ë¥¼ 받으시겠습니까?
Do you want to receive 30 points?
*/
MSG_PT_POINT1 = 0x491,
-/*20080827 to 20180621
+/*20080827 to 20180711
30í¬ì¸íŠ¸(5시간)ì´ ì¶©ì „ë˜ì—ˆìŠµë‹ˆë‹¤
30 points (5 hours) have been added.
*/
MSG_PT_POINT2 = 0x492,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê°ì •ë˜ì§€ ì•Šì€ ì•„ì´í…œì€ ê²½ë§¤ì— ë“±ë¡í•  수 없습니다.
You cannot register Unidentified Items in auctions.
*/
MSG_AUCTION_ADD_ITEM_FAILURE = 0x493,
-/*20080827 to 20180621
+/*20080827 to 20180711
소비 ì•„ì´í…œì€ ê²½ë§¤ì— ë“±ë¡í•  수 없습니다.
You cannot register this Consumable Item in an auction.
*/
MSG_AUCTION_ADD_ITEM_FAILURE2 = 0x494,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ì°½ì„ 열려면 ì¹´íŠ¸ì°½ì„ ë‹«ì•„ 주십시요.
Please close the Cart Window to open the Mail Window.
*/
MSG_CLOSE_MERCHANTITEMWND = 0x495,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¹´íŠ¸ì°½ì„ ì—´ë ¤ë©´ ë©”ì¼ì°½ì„ ë‹«ì•„ 주십시요.
Please close the Mail Window to open the Cart Window.
*/
MSG_CLOSE_MAILWND = 0x496,
-/*20080827 to 20180621
+/*20080827 to 20180711
íƒ„í™˜ì´ ìž¥ì°©ë˜ì—ˆìŠµë‹ˆë‹¤.
Bullets have been equipped.
*/
MSG_MSG_BULLET_EQUIPMENT_SUCCESS = 0x497,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ì´ 반송ë˜ì—ˆìŠµë‹ˆë‹¤.
The mail has been returned to sender.
*/
MSG_MAIL_RETURN_SUCCESS = 0x498,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë©”ì¼ì´ 존재하지 않습니다.
The mail no longer exists.
*/
MSG_MAIL_RETURN_FAILURE = 0x499,
-/*20080827 to 20180621
+/*20080827 to 20180711
한시간 ë™ì•ˆ, ë™ì¼í•œ IPë¡œ ì ‘ì†í•œ 유저가 30ê±´ ì´ìƒìž…니다. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
More than 30 players sharing the same IP have logged into the game for an hour. Please check this matter.
*/
MSG_BAN_PC_IP_COUNT_ALL = 0x49a,
-/*20080827 to 20180621
+/*20080827 to 20180711
한시간 ë™ì•ˆ, ë™ì¼í•œ IPë¡œ 10번 ì´ìƒ ì ‘ì†ë˜ì—ˆìŠµë‹ˆë‹¤. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
More than 10 connections sharing the same IP have logged into the game for an hour. Please check this matter.
*/
MSG_BAN_PC_IP_COUNT = 0x49b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê²Œìž„ì„ ìž¬ì‹œìž‘ 하십시오
Please restart the game.
*/
MSG_GAMEGUARD_RESTART = 0x49c,
-/*20080827 to 20180621
+/*20080827 to 20180711
용병정보 - ì•„ì³íƒ€ìž…
Mercenary: Archer
*/
MSG_MER_INFO_TYPE_ARCHER = 0x49d,
-/*20080827 to 20180621
+/*20080827 to 20180711
용병정보 - 검사타입
Mercenary: Swordman
*/
MSG_MER_INFO_TYPE_SWORDMAN = 0x49e,
-/*20080827 to 20180621
+/*20080827 to 20180711
용병정보 - 창병타입
Mercenary: Spearman
*/
MSG_MER_INFO_TYPE_LANCER = 0x49f,
-/*20080827 to 20180621
+/*20080827 to 20180711
삭제시간
Expiration
*/
MSG_LEFT_TIME = 0x4a0,
-/*20080827 to 20180621
+/*20080827 to 20180711
신뢰ë„
Loyalty
*/
MSG_MER_FRIENDLY = 0x4a1,
-/*20080827 to 20180621
+/*20080827 to 20180711
소환횟수
Summons
*/
MSG_MER_CALLCOUNT = 0x4a2,
-/*20080827 to 20180621
+/*20080827 to 20180711
Kill
*/
MSG_MER_KILL = 0x4a3,
-/*20080827 to 20180621
+/*20080827 to 20180711
íŽ«ì´ ë°°ê°€ 고파서 ë‹¹ì‹ ì„ ì›ë§í•˜ê³  있다는 ëŠë‚Œì´ 든다.
You can feel hatred from your pet for neglecting to feed it.
*/
MSG_PET_STARVING = 0x4a4,
-/*20080827 to 20180621
+/*20080827 to 20180711
[POINT] í…Œì´ë°ë¯¸ì…˜ 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[POINT] You earned %d Taming Mission Ranking Points, giving you a total of %d points.
*/
MSG_GANGSI_POINT = 0x4a5,
-/*20080827 to 20180621
+/*20080827 to 20180711
[í…Œì´ë°ë¯¸ì…˜] Target Monster : %s
[Taming Mission] Target Monster: %s
*/
MSG_GANGSI_MISSION = 0x4a6,
-/*20080827 to 20180621
+/*20080827 to 20180711
/hunting : 사냥 목ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/hunting: You can check the your hunting list.
*/
MSG_EXPLAIN_HUNTING = 0x4a7,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. %s는 몇 스킬 ì°ìœ¼ì…¨ë‚˜ìš”?
[Angel's Question] Please tell me, how many %s skills do you have?
*/
MSG_DEATH_Q01 = 0x4a8,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. 소지하시고있는 제니를 십만으로 나누면 얼마가 ë˜ì‹œë‚˜ìš”?
[Angel's Question] Please tell me, how much zeny you'll have if you divide it by 100,000?
*/
MSG_DEATH_Q02 = 0x4a9,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. ì˜¤ëŠ˜ì´ ëª‡ì¼ì´ì‹ ì§€ 아시나요?
[Angel's Question] Please tell me, what is today's date?
*/
MSG_DEATH_Q03 = 0x4aa,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. %sì€ ì§€ê¸ˆ 몇ì´ì‹ ê°€ìš”?
[Angel's Question] Please tell me, how many %s do you have?
*/
MSG_DEATH_Q04 = 0x4ab,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 슈노, 태권계열, ë¬´ë‚™ê³„ì—´ì„ ë‹´ë‹¹í•˜ê³ ìžˆëŠ” SiYeonì”¨ì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in SiYeon's name?
*/
MSG_DEATH_Q05 = 0x4ac,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 귀엽고 ì–´ì—¬ìœ ë¼ê·¸ë‚˜ë¡œí¬ì˜ ížˆë¡œì¸ Munakì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Munak's name?
*/
MSG_DEATH_Q06 = 0x4ad,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 제가 ì–´ì—¬ë»í•˜ëŠ” Bongunì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Bongun's name?
*/
MSG_DEATH_Q07 = 0x4ae,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ì €í¬ê°€ 존재하는 온ë¼ì¸ì„¸ê³„ Ragnarokì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, Ragnarok?
*/
MSG_DEATH_Q08 = 0x4af,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 언제나 Onlineìƒíƒœì¸ 천사ë™ë£Œë“¤ì€ í°íž˜ì´ ë˜ì–´ì£¼ì£ . Onlineì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, online?
*/
MSG_DEATH_Q09 = 0x4b0,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 죽ìŒë„ ë‘려워하지않는 ê¸°ì‚¬ë“¤ì„ ìƒì§•í•˜ëŠ” ë‹¨ì–´ì¸ Deathì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, death?
*/
MSG_DEATH_Q10 = 0x4b1,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ê¸°ì‚¬ë“¤ì€ ë„ˆë¬´ 멋진다고 ìƒê°í•´ìš”. Knightì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, knight?
*/
MSG_DEATH_Q11 = 0x4b2,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ì¤‘ë ¥ì„ ëœ»í•˜ëŠ” ë‹¨ì–´ì¸ Gravityì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, gravity?
*/
MSG_DEATH_Q12 = 0x4b3,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ì–´ë‘ ì†ì—ì„œë„ ë°ê²Œ 사는게 중요하지요. Darkì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, dark?
*/
MSG_DEATH_Q13 = 0x4b4,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ë­ë“ ì§€ 수집하는 Collectorì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, collecter?
*/
MSG_DEATH_Q14 = 0x4b5,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ëŒ€ë‹µ] 소녀ì—게 정확한 ì‚¬ì‹¤ì„ ê°€ë¥´ì³ì£¼ì…”ì„œ ê°ì‚¬í•˜ì˜µë‹ˆë‹¤.
[Angel's Answer] Thank you for letting me know~
*/
MSG_DEATH_R01 = 0x4b6,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ëŒ€ë‹µ] 사랑스러우신 분ì´ì‹œêµ°ìš”. 소녀 ê°íƒ„했사옵니다.
[Angel's Answer] I'm very pleased with your answer. You are a splendid adventurer.
*/
MSG_DEATH_R02 = 0x4b7,
-/*20080827 to 20180621
+/*20080827 to 20180711
[천사ì˜ëŒ€ë‹µ] 소녀 실ë§í–ˆì‚¬ì˜µë‹ˆë‹¤.
[Angel's Answer] You've disappointed me...
*/
MSG_DEATH_R05 = 0x4b8,
-/*20080827 to 20180621
+/*20080827 to 20180711
[POINT] 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You earned %d Ranking Points, giving you a total of %d Ranking Points.
*/
MSG_DEATH_POINT = 0x4b9,
-/*20080827 to 20180621
+/*20080827 to 20180711
[%s]ì˜ ì†Œì§€ ìºì‹œ : %d ìºì‹œ
[%s]'s Points: %d Points
*/
MSG_POINT_SHOP = 0x4ba,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì„ íƒí•˜ì§€ ì•Šì€ ìºë¦­í„°ëŠ” ì‚­ì œ ë©ë‹ˆë‹¤. 완료하시겠습니까?
Unselected Characters will be deleted. Continue?
*/
MSG_CONFIRM_SELECT_CHARACTERS = 0x4bb,
-/*20080827 to 20180621
+/*20080827 to 20180711
9ê°œ ì´ìƒ ì„ íƒí•˜ì‹¤ 수 없습니다.
You cannot select more than 8.
*/
MSG_ERROR_SELECT_CHARACTERS = 0x4bc,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºë¦­í„°ëª…ì„ '%s' (으)ë¡œ 변경하시겠습니까?
Do you want to change your name to '%s'?
*/
MSG_CONFIRM_TO_CHANGE_NAME = 0x4bd,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºë¦­í„°ëª…ì´ ì„±ê³µì ìœ¼ë¡œ 변경ë˜ì—ˆìŠµë‹ˆë‹¤.
Character Name has been changed successfully.
*/
MSG_CHANGE_NAME_SUCCESS = 0x4be,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºë¦­í„°ëª… ë³€ê²½ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
You have failed to change this character's name.
*/
MSG_CHANGE_NAME_FAILURE = 0x4bf,
-/*20080827 to 20180621
+/*20080827 to 20180711
í•œ ë²ˆì— í•œ ì¢…ë¥˜ì˜ ì•„ì´í…œë§Œ 구매할 수 있습니다.
You can purchase only one kind of item at a time.
*/
MSG_CAN_BUY_ONLY_ONEITEM = 0x4c0,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºë¦­í„°ê°€ í•œê°œë„ ì„ íƒë˜ì§€ 않았습니다. 반드시 한개 ì´ìƒì˜ ìºë¦­í„°ë¥¼ ì„ íƒí•˜ì—¬ì•¼ 합니다.
No characters were selected. You must select at least one character.
*/
MSG_NO_SELECT_CHARACTERS = 0x4c1,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ë¯¸ ìºë¦­í„°ëª…ì„ ë³€ê²½í•œ ì ì´ 있습니다. ë” ì´ìƒ 변경 í•  수 없습니다.
This character's name has already been changed. You cannot change a character's name more than once.
*/
MSG_ALREADY_CHANGED_NAME = 0x4c2,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì‚¬ìš©ìž ì •ë³´ê°€ 정확하지 않습니다.
User Information is not correct.
*/
MSG_NOTREGISTED_USER = 0x4c3,
-/*20080827 to 20180621
+/*20080827 to 20180711
다른 사용ìžê°€ ê°™ì€ ìºë¦­í„° ëª…ì„ ë¨¼ì € 사용하였습니다. 다른 ìºë¦­í„°ëª…ì„ ì‚¬ìš©í•˜ì—¬ 주십시요.
Another user is using this character name, so please select another one.
*/
MSG_DUPLICATED_CHAR_NAME = 0x4c4,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티장 ê¶Œí•œì´ ì—†ì–´ 파티ì›ì„ 소환하지 못했습니다.
The party member was not summoned because you are not the party leader.
*/
MSG_CANNOT_PARTYCALL = 0x4c5,
-/*20080827 to 20180621
+/*20080827 to 20180711
현재 맵ì—는 ì†Œí™˜ë  íŒŒí‹°ì›ì´ 존재하지 않습니다.
There is no party member to summon in the current map.
*/
MSG_NO_PARTYMEM_ON_THISMAP = 0x4c6,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ì§€ì—­ì—ì„  ë³´ìŠ¤ëª¬ìŠ¤í„°ì˜ í”ì ì„ ì°¾ì„ ìˆ˜ê°€ 없습니다.
You cannot find any trace of a Boss Monster in this area.
*/
MSG_NOTFIND_BOSSMON = 0x4c7,
-/*20080827 to 20180621
+/*20080827 to 20180711
보스 몬스터 '%s'(ì´)ê°€ %d시간 %d분 í›„ì— ë“±ìž¥í•©ë‹ˆë‹¤.
Boss Monster, '%s' will appear in %02d hour(s) and %02d minute(s).
*/
MSG_APPEARANCE_TIME_OF_BOSSMON = 0x4c8,
-/*20080827 to 20180621
+/*20080827 to 20180711
보스 몬스터 '%s'ì˜ ìœ„ì¹˜ê°€ ë¯¸ë‹ˆë§µì— í‘œì‹œë©ë‹ˆë‹¤.
The location of Boss Monster, '%s', will be displayed on your Mini-Map.
*/
@@ -6127,117 +6127,117 @@ The location of Boss Monster, '%s', will be displayed on your Mini-Map.
'%s'를 개봉 하시겠습니까? 한번 ê°œë´‰ëœ ì•„ì´í…œì€ 창고 저장 ì™¸ì˜ ë‹¤ë¥¸ ì´ë™ì€ 불가하며 임대 ì•„ì´í…œì€ 창고 ì €ìž¥ë„ ë¶ˆê°€í•©ë‹ˆë‹¤. 한정 ì•„ì´í…œì€ 거래 ë° ì´ë™ì´ 가능 합니다. ë™ì¼í•œ ì•„ì´í…œì„ 중복 사용하ë”ë¼ë„ 효과가 중첩ë˜ì§€ 않습니다.
20101102 to 20110330
'%s'를 개봉 하시겠습니까? ^ff0000ìƒìžë¥¼ 개봉하시면 청약 철회 ë° í™˜ë¶ˆ 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 한번 개봉 ëœ ì•„ì´í…œì€ 창고 저장 ì™¸ì˜ ë‹¤ë¥¸ ì´ë™ì€ 불가하며 임대 ì•„ì´í…œì€ 창고 ì €ìž¥ë„ ë¶ˆê°€í•©ë‹ˆë‹¤. 한정 ì•„ì´í…œì€ 거래 ë° ì´ë™ì´ 가능 합니다. ë™ì¼í•œ ì•„ì´í…œì„ 중복 사용하ë”ë¼ë„ 효과가 중첩ë˜ì§€ 않습니다.
-20110405 to 20180621
+20110405 to 20180711
'%s'를 개봉 하시겠습니까? ^ff0000ìƒìžë¥¼ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 한번 개봉 ëœ ì•„ì´í…œì€ 창고 저장 ì™¸ì˜ ë‹¤ë¥¸ ì´ë™ì€ 불가하며 임대 ì•„ì´í…œì€ 창고 ì €ìž¥ë„ ë¶ˆê°€í•©ë‹ˆë‹¤. 한정 ì•„ì´í…œì€ 거래 ë° ì´ë™ì´ 가능 합니다. ë™ì¼í•œ ì•„ì´í…œì„ 중복 사용하ë”ë¼ë„ 효과가 중첩ë˜ì§€ 않습니다.
Do you want to open '%s'? Once opened, the contents cannot be moved to other locations aside from the Kafra Storage. The item effect isn't doubled, even if the same items are used more than once.
*/
MSG_CONFIRM_TO_OPEN_CASH_ITEM = 0x4ca,
-/*20080827 to 20180621
+/*20080827 to 20180711
NPC가 존재하지 않아 구매가 실패하였습니다.
The Purchase has failed because the NPC does not exist.
*/
MSG_BUY_CASH_FAIL_NPC = 0x4cb,
-/*20080827 to 20180621
+/*20080827 to 20180711
부분 유료화 ì‹œìŠ¤í…œì´ ì •ìƒ ìž‘ë™í•˜ì§€ ì•Šì•„ 구매가 실패하였습니다.
The Purchase has failed because the Kafra Shop System is not working correctly.
*/
MSG_BUY_CASH_FAIL_SYSTEM = 0x4cc,
-/*20080827 to 20180621
+/*20080827 to 20180711
êµí™˜ì¤‘ì—는 ì•„ì´í…œì„ 구매 í•  수 없습니다.
You cannot purchase items while you are in a trade.
*/
MSG_BUY_CASH_FAIL_EXCHANGE = 0x4cd,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ ì •ë³´ê°€ 정확하지 ì•Šì•„ 구매가 실패하였습니다.
The Purchase has failed because the Item Information was incorrect.
*/
MSG_BUY_CASH_FAIL_ITEM_ID = 0x4ce,
-/*20080827 to 20180621
+/*20080827 to 20180711
STRì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
STR has increased.
*/
MSG_ENST_STR = 0x4cf,
-/*20080827 to 20180621
+/*20080827 to 20180711
STRì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
STR has returned to normal.
*/
MSG_DSST_STR = 0x4d0,
-/*20080827 to 20180621
+/*20080827 to 20180711
AGIì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
AGI has increased.
*/
MSG_ENST_AGI = 0x4d1,
-/*20080827 to 20180621
+/*20080827 to 20180711
AGIì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
AGI has returned to normal.
*/
MSG_DSST_AGI = 0x4d2,
-/*20080827 to 20180621
+/*20080827 to 20180711
VITì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
VIT has increased.
*/
MSG_ENST_VIT = 0x4d3,
-/*20080827 to 20180621
+/*20080827 to 20180711
VITì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
VIT has returned to normal.
*/
MSG_DSST_VIT = 0x4d4,
-/*20080827 to 20180621
+/*20080827 to 20180711
INTì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
INT has increased.
*/
MSG_ENST_INT = 0x4d5,
-/*20080827 to 20180621
+/*20080827 to 20180711
INTì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
INT has returned to normal.
*/
MSG_DSST_INT = 0x4d6,
-/*20080827 to 20180621
+/*20080827 to 20180711
DEXì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
DEX has increased.
*/
MSG_ENST_DEX = 0x4d7,
-/*20080827 to 20180621
+/*20080827 to 20180711
DEXì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
DEX has returned to normal.
*/
MSG_DSST_DEX = 0x4d8,
-/*20080827 to 20180621
+/*20080827 to 20180711
LUKì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
LUK has increased.
*/
MSG_ENST_LUK = 0x4d9,
-/*20080827 to 20180621
+/*20080827 to 20180711
LUKì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
LUK has returned to normal.
*/
MSG_DSST_LUK = 0x4da,
-/*20080827 to 20180621
+/*20080827 to 20180711
íšŒí”¼ìœ¨ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Flee Rate (Flee) has increased.
*/
MSG_ENST_AVOIDANCE = 0x4db,
-/*20080827 to 20180621
+/*20080827 to 20180711
íšŒí”¼ìœ¨ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
Flee Rate has returned to normal.
*/
MSG_DSST_AVOIDANCE = 0x4dc,
-/*20080827 to 20180621
+/*20080827 to 20180711
ëª…ì¤‘ë¥ ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Accuracy Rate (Hit) has increased.
*/
MSG_ENST_HIT = 0x4dd,
-/*20080827 to 20180621
+/*20080827 to 20180711
ëª…ì¤‘ë¥ ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
Accuracy Rate has returned to normal.
*/
MSG_DSST_HIT = 0x4de,
-/*20080827 to 20180621
+/*20080827 to 20180711
í¬ë¦¬í‹°ì»¬ í™•ë¥ ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Critical Attack (Critical) has increased.
*/
MSG_ENST_CRITICALSUCCESSVALUE = 0x4df,
-/*20080827 to 20180621
+/*20080827 to 20180711
í¬ë¦¬í‹°ì»¬ í™•ë¥ ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
Critical Attack has returned to normal.
*/
@@ -6246,22 +6246,22 @@ Critical Attack has returned to normal.
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 1.5ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
20111025 to 20111101
30분간 ì–»ì„ ìˆ˜ 있는 경험치가 75%% ì¦ê°€í•©ë‹ˆë‹¤.
-20111102 to 20180621
+20111102 to 20180711
30분간 ì–»ì„ ìˆ˜ 있는 경험치가 50%% ì¦ê°€í•©ë‹ˆë‹¤.
You will receive 1.5 times more EXP from hunting monsters for the next 30 minutes.
*/
MSG_PLUSEXP = 0x4e1,
-/*20080827 to 20180621
+/*20080827 to 20180711
30분내 사ë§ì‹œ 1íšŒì— í•œí•´ 경험치 ê°ì†Œê°€ ì¼ì–´ë‚˜ì§€ 않습니다.
This character will not receive any EXP penalty if killed within the next 30 minutes.
*/
MSG_DDEATHPENALTY = 0x4e2,
-/*20080827 to 20180621
+/*20080827 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ 30분간 2ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Regular item drops from monsters will be doubled for the next 30 minutes.
*/
MSG_RECEIVEITEM = 0x4e3,
-/*20080827 to 20180621
+/*20080827 to 20180711
10분간 맵 ë‚´ì— ì¶œí˜„ 가능한 보스 ëª¬ìŠ¤í„°ì— ëŒ€í•œ 정보를 안내해 드립니다.
Boss Monster Map Information for the next 10 minutes.
*/
@@ -6276,297 +6276,297 @@ Boss Monster Map Information for the next 10 minutes.
^ff0000본 ì•„ì´í…œì„ 구매 후 개봉하시면 청약 철회 ë° í™˜ë¶ˆ 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
20110405 to 20120618
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
-20120626 to 20180621
+20120626 to 20180711
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.ë˜í•œ 구매시 ì‚¬ìš©ëœ ë¬´ë£Œìºì‹œëŠ” 청약철회시 반환ë˜ì§€ 않습니다.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
Do you really want to purchase this item? %d points will be deducted from your total Kafra Credit Points.
*/
MSG_BUY_RECONFIRM = 0x4e5,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºì‹œê°€ 부족합니다.
You do not have enough Kafra Credit Points.
*/
MSG_BUY_CASH_FAIL_MONEY = 0x4e6,
-/*20080827 to 20180621
+/*20080827 to 20180711
^ff0000파기ì¼ì‹œ: %s^000000
^ff0000Expiration Date: %s^000000
*/
MSG_NOTICE_TO_DELETE_TIME = 0x4e7,
-/*20080827 to 20180621
+/*20080827 to 20180711
'%s'ì•„ì´í…œì˜ ì‚¬ìš©ì‹œê°„ì´ %d분 남았습니다.
The '%s' item will disappear in %d minutes.
*/
MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e8,
-/*20080827 to 20180621
+/*20080827 to 20180711
1분 후, '%s'ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ì—ì„œ ì‚­ì œë©ë‹ˆë‹¤.
'%s' item will be deleted from the Inventory in 1 minute.
*/
MSG_LAST_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e9,
-/*20080827 to 20180621
+/*20080827 to 20180711
'%s'ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ì—ì„œ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.
'%s' item has been deleted from the Inventory.
*/
MSG_NOTICE_TO_DELETE_ITEM = 0x4ea,
-/*20080827 to 20180621
+/*20080827 to 20180711
Input Number
*/
MSG_INPUT_NUMBER = 0x4eb,
-/*20080827 to 20180621
+/*20080827 to 20180711
%mì›” %dì¼ %Hì‹œ %M분
%m/%d %H:%M
*/
MSG_TIME_TYPE2 = 0x4ec,
-/*20080827 to 20180621
+/*20080827 to 20180711
보스 몬스터 '%s'(ì´)ê°€ ìž ì‹œ í›„ì— ë“±ìž¥í•©ë‹ˆë‹¤.
Boss Monster '%s' will appear within 1 minute.
*/
MSG_APPEARANCE_TIME_OF_BOSSMON2 = 0x4ed,
-/*20080827 to 20180621
+/*20080827 to 20180711
용병 스킬목ë¡
Mercenary Soldier Skill List
*/
MSG_MER_SKILLLIST = 0x4ee,
-/*20080827 to 20180621
+/*20080827 to 20180711
블랙젬스톤 1개와 백만제니를 소모하는 ë§ˆë²•ì˜ ì‹¤í–‰ì— ë™ì˜í•©ë‹ˆê¹Œ?
Do you agree to cast the magic spell that consumes 1 Black Gemstone and 1,000,000 Zeny?
*/
MSG_DA_EXP_ACCEPT = 0x4ef,
-/*20080827 to 20180621
+/*20080827 to 20180711
[POINT] 콜렉터랭킹 í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You have gained %d Collector Rank Points; you now have a total of %d Collector Rank Points.
*/
MSG_COLLECTOR_POINT = 0x4f0,
-/*20080827 to 20180621
+/*20080827 to 20180711
[콜렉터랭킹] Target Item : %s
[Collector Rank] Target Item: %s
*/
MSG_COLLECTOR_MISSION = 0x4f1,
-/*20080827 to 20180621
+/*20080827 to 20180711
용병 ì‚¬ìš©ì‹œê°„ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤.
The mercenary contract has expired.
*/
MSG_MER_FINISH = 0x4f2,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìš©ë³‘ì´ ì‚¬ë§í•˜ì˜€ìŠµë‹ˆë‹¤.
The mercenary has died.
*/
MSG_MER_DIE = 0x4f3,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìš©ë³‘ì´ í•´ê³ ë˜ì—ˆìŠµë‹ˆë‹¤.
You have released the mercenary.
*/
MSG_MER_RETIRE = 0x4f4,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìš©ë³‘ì´ ë„ë§ê°”습니다.
The mercenary has run away.
*/
MSG_MER_RUNAWAY = 0x4f5,
-/*20080827 to 20180621
+/*20080827 to 20180711
'%s'ì•„ì´í…œì˜ ì‚¬ìš©ì‹œê°„ì´ %dì´ˆ 남았습니다.
The '%s' item will disappear in %d seconds.
*/
MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME2 = 0x4f6,
-/*20080827 to 20180621
+/*20080827 to 20180711
PCë°© 프리미엄 서비스 : 경험치 %d%% ì¦ê°€, ì‚¬ë§ íŽ˜ë„í‹° %d%% ê°ì†Œ, 드롭율 %d%% ì¦ê°€
IP Bonus: EXP/JEXP %d%%, Death Penalty %d%%, Item Drop %d%%
*/
MSG_PCBANG_EVENT = 0x4f7,
-/*20080827 to 20180621
+/*20080827 to 20180711
24시간 ì´í›„ì— ì‹œë„하세요
Symbols in Character Names are forbidden.
*/
MSG_LIMIT_CHAR_DELETE = 0x4f8,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìš©ë³‘ì´ ì‚¬ìš©ìž ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Mercenary will follow custom AI.
*/
MSG_MER_USERAI_ON = 0x4f9,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìš©ë³‘ì´ ê¸°ë³¸ ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Mercenary will follow basic AI.
*/
MSG_MER_USERAI_OFF = 0x4fa,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s님ì˜
%s's
*/
MSG_CHARACTER_NAME = 0x4fb,
-/*20080827 to 20180621
+/*20080827 to 20180711
%së‹˜ì´ %s ì•„ì´í…œì„ íšë“하셨습니다.
%s has acquired %s.
*/
MSG_ITEM_PICKUP_PARTY = 0x4fc,
-/*20080827 to 20180621
+/*20080827 to 20180711
공개 채팅 메시지 표시
Public Chat Display
*/
MSG_VIEW_CHAT_MSG = 0x4fd,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê·“ì†ë§ 채팅 메시지 표시
Whisper Display
*/
MSG_VIEW_WHISPER_MSG = 0x4fe,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티 채팅 메시지 표시
Party Chat Display
*/
MSG_VIEW_PARTY_MSG = 0x4ff,
-/*20080827 to 20180621
+/*20080827 to 20180711
길드 채팅 메시지 표시
Guild Chat Display
*/
MSG_VIEW_GUILD_MSG = 0x500,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì•„ì´í…œ íšë“/드롭 메시지 표시
Item Get/Drop Message Display
*/
MSG_VIEW_GET_ITEM_MSG = 0x501,
-/*20080827 to 20180621
+/*20080827 to 20180711
장비 장착/해제 메시지 표시
Equipment On/Off Message Display
*/
MSG_VIEW_EQUIP_MSG = 0x502,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒíƒœì´ìƒ 메시지 표시
Abnormal Status Message Display
*/
MSG_VIEW_CHANGE_STATUS_MSG = 0x503,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티ì›ì˜ 주요 ì•„ì´í…œ íšë“ 메시지 표시
Party Member's Obtained Item Message Display
*/
MSG_VIEW_GET_ITEM_PARTY_MSG = 0x504,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티ì›ì˜ ìƒíƒœì´ìƒ 메시지 표시
Party Member's Abnormal Status Message Display
*/
MSG_VIEW_CHANGE_STATUS_PARTY_MSG = 0x505,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬 사용 실패 메시지 표시
Skill Failure Message Display
*/
MSG_VIEW_FAIL_SKILL_MSG = 0x506,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티 설정 메시지 표시
Party Configuration Message Display
*/
MSG_VIEW_PARTY_SETUP_MSG = 0x507,
-/*20080827 to 20180621
+/*20080827 to 20180711
장비 ì†ìƒ 메시지 표시
Damaged Equipment Message Display
*/
MSG_VIEW_DAMAGED_EQUIP_MSG = 0x508,
-/*20080827 to 20180621
+/*20080827 to 20180711
배틀 메시지 창 표시 정보
Battle Message Window Display
*/
MSG_BATTLE_CHAT_WND_OPTION = 0x509,
-/*20080827 to 20180621
+/*20080827 to 20180711
[%s]ì˜ ì†Œì§€ í•œì½”ì¸ : %d 한코ì¸
[%s]'s Han Coin: %d Han Coin
*/
MSG_POINT_SHOP_NHN = 0x50a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì¼ë°˜ 메시지
Public Log
*/
MSG_ST_CHAT = 0x50b,
-/*20080827 to 20180621
+/*20080827 to 20180711
배틀 메시지
Battle Log
*/
MSG_BT_CHAT = 0x50c,
-/*20080827 to 20180621
+/*20080827 to 20180711
íœ´ëŒ€í° ì¸ì¦.
Mobile Authentication
*/
MSG_PHONE_CONFIRM = 0x50d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì½ê¸°
Read
*/
MSG_BOOK_READ = 0x50e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìžë™ë‚­ë…
Auto Read
*/
MSG_BOOK_AUTOREAD = 0x50f,
-/*20080827 to 20180621
+/*20080827 to 20180711
책갈피
Bookmark
*/
MSG_BOOK_KEEP = 0x510,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ì „페ì´ì§€
Previous
*/
MSG_BOOK_PREV = 0x511,
-/*20080827 to 20180621
+/*20080827 to 20180711
다ìŒíŽ˜ì´ì§€
Next
*/
MSG_BOOK_NEXT = 0x512,
-/*20080827 to 20180621
+/*20080827 to 20180711
닫기
Close
*/
MSG_BOOK_CLOSE = 0x513,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 장비가 ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
%s's Equipment has been damaged.
*/
MSG_DAMAGED_EQUIP = 0x514,
-/*20080827 to 20180621
+/*20080827 to 20180711
%së‹˜ì˜ %s ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
%s's %s was damaged.
*/
MSG_DAMAGED_EQUIP_PARTY = 0x515,
-/*20080827 to 20180621
+/*20080827 to 20180711
무기가
Weapon
*/
MSG_DAMAGED_WEAPON = 0x516,
-/*20080827 to 20180621
+/*20080827 to 20180711
갑옷ì´
Armor
*/
MSG_DAMAGED_BODY = 0x517,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 파티가입 불능
Insufficient Skill Level for joining a Party
*/
MSG_NOT_ENOUGH_SKILLLEVE5_2 = 0x518,
-/*20080827 to 20180621
+/*20080827 to 20180711
[%s]ì˜ ë¬´ë£Œ ìºì‹œ : %d ìºì‹œ
[%s]'s Free Cash: %d Cash
*/
MSG_POINT_SHOP2 = 0x519,
-/*20080827 to 20180621
+/*20080827 to 20180711
무료 ìºì‹œ 사용 :
Use Free Cash:
*/
MSG_USE_FREE_POINT = 0x51a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºì‹œ
Cash
*/
MSG_CASH = 0x51b,
-/*20080827 to 20180621
+/*20080827 to 20180711
http://payment.ro.hangame.com/index.asp
*/
MSG_SETTLE_WEB_URL_HANGAME = 0x51c,
/*20080827 to 20090603
ê·¸ë¼ë¹„í‹° íšŒì› ì •ë³´ë™ì˜ë¥¼ 하셔야 사용할수있습니다.
-20090605 to 20180621
+20090605 to 20180711
ê·¸ë¼ë¹„í‹° íšŒì› ì •ë³´ë™ì˜ë¥¼ 하셔야 사용할 수 있습니다.
You need to accept the Privacy Policy from Gravity in order to use the service.
*/
MSG_BAN_GRAVITY_MEM_AGREE = 0x51d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ìš©ì•½ê´€ì— ë™ì˜ë¥¼ 하셔야 본 서비스를 ì´ìš©í•˜ì‹¤ 수 있습니다.
You need to accept the User Agreement in order to use the service.
*/
MSG_BAN_GAME_MEM_AGREE = 0x51e,
-/*20080827 to 20180621
+/*20080827 to 20180711
입력하신 ì•„ì´ë””와 비밀번호가 등ë¡ëœ 정보와 ì¼ì¹˜í•˜ì§€ 않습니다.
Incorrect or nonexistent ID.
*/
@@ -6581,616 +6581,616 @@ Incorrect or nonexistent ID.
^ff0000본 ì•„ì´í…œì„ 구매 후 개봉하시면 청약 철회 ë° í™˜ë¶ˆ 대ìƒì—ì„œ 제외ë©ë‹ˆë‹¤.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 ì¼ë°˜ %dìºì‹œ, 무료 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
20110405 to 20120618
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 ì¼ë°˜ %dìºì‹œ, 무료 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
-20120626 to 20180621
+20120626 to 20180711
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.ë˜í•œ 구매시 ì‚¬ìš©ëœ ë¬´ë£Œìºì‹œëŠ” 청약철회시 반환ë˜ì§€ 않습니다.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 ì¼ë°˜ %dìºì‹œ, 무료 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
Do you really want to purchase these items? You will spend %d Regular Cash Points and %d Free Cash Points.
*/
MSG_BUY_RECONFIRM2 = 0x520,
-/*20080827 to 20180621
+/*20080827 to 20180711
%dì‹œê°„ì´ ê²½ê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
%d hour(s) has passed.
*/
MSG_NOTIFY_PLAYTIME1 = 0x521,
-/*20080827 to 20180621
+/*20080827 to 20180711
%d시간 %dë¶„ì´ ê²½ê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
%d hour(s) %d minute(s) has passed.
*/
MSG_NOTIFY_PLAYTIME2 = 0x522,
-/*20080827 to 20180621
+/*20080827 to 20180711
ê²Œìž„ì„ ì¢…ë£Œí•˜ì„¸ìš”, 경험치 ë° ëª¨ë“ ê²Œ 50%ë¡œ ì¡°ì •ë©ë‹ˆë‹¤
Please stop playing the game, and take a break. Exp and other features will be reduced to 50%.
*/
MSG_WARNING_MSG1 = 0x523,
-/*20080827 to 20180621
+/*20080827 to 20180711
불건전 ì‹œê°„ëŒ€ì— ì ‘ì–´ë“¤ì—ˆìŠµë‹ˆë‹¤. ê²Œìž„ì„ ì¢…ë£Œí•˜ì„¸ìš”, 경험치 ë° ëª¨ë“ ê²Œ 0%ë¡œ ì¡°ì •ë©ë‹ˆë‹¤
Please stop playing the game since you'll need to rest. Exp and other features will be fixed to 0%.
*/
MSG_WARNING_MSG2 = 0x524,
-/*20080827 to 20180621
+/*20080827 to 20180711
퀘스트 목ë¡
Quest List
*/
MSG_QUESTWIN = 0x525,
-/*20080827 to 20180621
+/*20080827 to 20180711
RO SHOP
RO Shop
*/
MSG_RO_SHOP = 0x526,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì•Œìˆ˜ì—†ëŠ” ì´ìœ ë¡œ 실패 하였습니다.
Memorial Dungeon, '%s' is booked.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN = 0x527,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì˜ˆì•½ì¤‘ë³µìœ¼ë¡œ 실패 하였습니다.
Failed to book Memorial Dungeon, '%s'.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE = 0x528,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ê¶Œí•œë¬¸ì œë¡œ 실패 하였습니다.
Memorial Dungeon, '%s' is already booked.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_RIGHT = 0x529,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì¤‘ë³µìƒì„±ìš”청으로 실패하였습니다.
Memorial Dungeon, '%s' is created.
Please enter in 5 minutes.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_EXIST = 0x52a,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì·¨ì†Œê°€ 실패 하였습니다.
Failed to create Memorial Dungeon, '%s'.
Please try again.
*/
MSG_MDUNGEON_SUBSCRIPTION_CANCEL_FAIL = 0x52b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒëŒ€ë°©ì´ 파티 초대 거부 ìƒíƒœìž…니다.
The character blocked the party invitation.
*/
MSG_JOINMSG_REFUSE = 0x52c,
-/*20080827 to 20180621
+/*20080827 to 20180711
모든 파티 초대를 거부합니다.
Block all party invitations.
*/
MSG_INVITE_PARTY_REFUSE = 0x52d,
-/*20080827 to 20180621
+/*20080827 to 20180711
모든 파티 초대를 수ë½í•©ë‹ˆë‹¤.
Allow all party invitations.
*/
MSG_INVITE_PARTY_ACCEPT = 0x52e,
-/*20080827 to 20180621
+/*20080827 to 20180711
착용하시면 ì´ ì•„ì´í…œì€ ì˜êµ¬ ê·€ì†ë©ë‹ˆë‹¤. 착용하시겠습니까?
This item will be permanently bound to this character once it is equipped. Do you really want to equip this item?
*/
MSG_YOURITEM_EQUIP = 0x52f,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s ì•„ì´í…œì´ ê·€ì†ë˜ì—ˆìŠµë‹ˆë‹¤.
%s is now permanently bound to this character.
*/
MSG_YOURITEM_EQUIPED = 0x530,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìºì‹œê°€ 부족합니다. 무료 ìºì‹œ í¬ì¸íŠ¸ë¥¼ 입력해 주시기 ë°”ëžë‹ˆë‹¤.
You do not have enough Kafra Credit Points. Please enter whether you have free credit points.
*/
MSG_BUY_TO_FREE_POINT = 0x531,
-/*20080827 to 20180621
+/*20080827 to 20180711
파티 가입요청
Request to Join Party
*/
MSG_REQ_JOIN_PARTY3 = 0x532,
-/*20080827 to 20180621
+/*20080827 to 20180711
공성 정보 메시지 표시
Display WOE Info
*/
MSG_VIEW_SIEGE_INFO_MSG = 0x533,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì·¨ì†Œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Memorial Dungeon %s's reservation has been canceled.
*/
MSG_MDUNGEON_SUBSCRIPTION_CANCEL_SUCCESS = 0x534,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼ë˜ì ¼ '%s' ìƒì„±ì— 실패하였습니다. 다시 ì‹œë„ í•˜ì„¸ìš”.
Failed to create Memorial Dungeon %s. Please try again.
*/
MSG_MDUNGEON_CREATE_FAIL = 0x535,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ìž¥ì†Œì—서는 사용할 수 없는 스킬입니다.
This skill cannot be used within this area.
*/
MSG_IMPOSSIBLE_SKILL_AREA = 0x536,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ìž¥ì†Œì—서는 사용할 수 없는 ì•„ì´í…œìž…니다.
This item cannot be used within this area.
*/
MSG_IMPOSSIBLE_USEITEM_AREA = 0x537,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼 ë˜ì „
Memorial Dungeon
*/
MSG_MEMORIAL_DUN = 0x538,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 대기중
%s in Standby
*/
MSG_MEMORIAL_DUN_WAITING = 0x539,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 입장 가능
%s Available
*/
MSG_MEMORIAL_DUN_READY = 0x53a,
-/*20080827 to 20180621
+/*20080827 to 20180711
%s 진행중
%s in Progress
*/
MSG_MEMORIAL_DUN_IN = 0x53b,
-/*20080827 to 20180621
+/*20080827 to 20180711
시간 ì•ˆì— ìž…ìž¥í•˜ì§€ ì•Šì•„ 메모리얼 ë˜ì „ì´ ì‚¬ë¼ì¡ŒìŠµë‹ˆë‹¤.
No one entered the Memorial Dungeon within its duration; the dungeon has disappeared.
*/
MSG_MEMORIAL_DUN_OUT1 = 0x53c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ìš©í•˜ì‹œë ¤ë©´ ì´ìš© ì‹ ì²­ì„ ì²˜ìŒë¶€í„° 다시 해주시기 ë°”ëžë‹ˆë‹¤.
Please apply for dungeon entry again to play in this dungeon.
*/
MSG_MEMORIAL_DUN_OUT2 = 0x53d,
-/*20080827 to 20180621
+/*20080827 to 20180711
대기 순위 : ^ff0000%d^000000
Your Standby Priority: ^ff0000%d^000000
*/
MSG_MEMORIAL_DUN_PRIORITY = 0x53e,
-/*20080827 to 20180621
+/*20080827 to 20180711
^ff0000%s^000000 ë‚´ì— ìž…ìž¥í•˜ì§€ ì•Šì„ ê²½ìš° 신청하신 ë˜ì „ì´ ì‚­ì œ ë©ë‹ˆë‹¤.
The requested dungeon will be removed if you do not enter within ^ff0000%s^000000.
*/
MSG_MEMORIAL_DUN_NOTIFY = 0x53f,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë˜ì „ 미션 제한 시간 :
Dungeon Mission Time Limit:
*/
MSG_MEMORIAL_DUN_NOTIFY2 = 0x540,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼 ë˜ì „ ì˜ˆì•½ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon reservation has been canceled.
*/
MSG_MEMORIAL_DUN_CANCEL = 0x541,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼 ë˜ì „ì´ ìœ ì§€ 시간 ì œí•œì— ì˜í•´ 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon duration expired; it has been destroyed.
*/
MSG_MEMORIAL_DUN_LIVE_TIME_OUT = 0x542,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼 ë˜ì „ì´ ìž…ìž¥ 시간 ì œí•œì— ì˜í•´ 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon's entry time limit expired; it has been destroyed.
*/
MSG_MEMORIAL_DUN_ENTER_TIME_OUT = 0x543,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼 ë˜ì „ì´ ì‚­ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon has been removed.
*/
MSG_MEMORIAL_DUN_DESTROY_REQUEST = 0x544,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼 ë˜ì „ì— ì‹œìŠ¤í…œ 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤. ì •ìƒì ì¸ 게임 ì§„í–‰ì„ ìœ„í•´ 재접ì†ì„ 해주십시오.
A system error has occurred in the Memorial Dungeon. Please relog in to the game to continue playing.
*/
MSG_MEMORIAL_DUN_ERROR = 0x545,
-/*20080827 to 20180621
+/*20080827 to 20180711
사용할 수 없는 슬롯입니다.
This slot is not usable.
*/
MSG_FR_INVALID_SLOT = 0x546,
-/*20080827 to 20180621
+/*20080827 to 20180711
Base Levelì´ 15를 넘었습니다.
Your Base Level is over 15.
*/
MSG_FR_BASELVL = 0x547,
-/*20080827 to 20180621
+/*20080827 to 20180711
Job Levelì´ 15를 넘었습니다.
Your Job Level is over 15.
*/
MSG_FR_INVALID_JOBLV = 0x548,
-/*20080827 to 20180621
+/*20080827 to 20180711
해당슬롯 ìºë¦­í„°ì— ì§ì—…êµ°ì˜ ìƒì¸ì´ë¯€ë¡œ ê²Œìž„ì„ í•  수 없습니다.
You cannot play the Merchant class character in this slot.
*/
MSG_FR_JOB = 0x549,
-/*20080827 to 20180621
+/*20080827 to 20180711
추후 사용예정
Not Yet Implemented
*/
MSG_FR_MAP = 0x54a,
-/*20080827 to 20180621
+/*20080827 to 20180711
만들수 있는 케릭터 ìŠ¬ë¡¯ì´ ì•„ë‹™ë‹ˆë‹¤.
You are not eligible to open the Character Slot.
*/
MSG_FR_ERR_MKCHAR_INVALID_SLOT = 0x54b,
-/*20080827 to 20180621
+/*20080827 to 20180711
삭제할 수 없는 케릭터 입니다.
This character cannot be deleted.
*/
MSG_FR_ERR_DELCHAR_INVALID_SLOT = 0x54c,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìƒëŒ€ë°©ì˜ ìž¥ë¹„ì°½ì´ ê³µê°œë˜ì–´ 있지 않습니다.
This character's equipment information is not open to the public.
*/
MSG_OPEN_EQUIPEDITEM_REFUSED = 0x54d,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìž¥ë¹„ì°½ì„ ê³µê°œí•˜ì§€ 않습니다.
Equipment information not open to the public.
*/
MSG_OPEN_EQUIPEDITEM_REFUSE = 0x54e,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìž¥ë¹„ì°½ì„ ê³µê°œí•©ë‹ˆë‹¤.
Equipment information open to the public.
*/
MSG_OPEN_EQUIPEDITEM_ACCEPT = 0x54f,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)님 장비창 보기
Check %s's Equipment Info
*/
MSG_REQ_VIEW_OTHERUSER = 0x550,
-/*20080827 to 20180621
+/*20080827 to 20180711
%sì˜ ìž¥ì°©ì•„ì´í…œ
'%s's Equipment
*/
MSG_OTHERUSER_EQUIPED_ITEM = 0x551,
-/*20080827 to 20180621
+/*20080827 to 20180711
장비창 공개
Show Equip
*/
MSG_OPEN_EQUIPED_ITEM = 0x552,
-/*20080827 to 20180621
+/*20080827 to 20180711
프리미엄 서비스를 ì´ìš©í•´ 주시기 ë°”ëžë‹ˆë‹¤.
This service is only available for premium users.
*/
MSG_NEED_PREMIUM_SERVICE = 0x553,
-/*20080827 to 20180621
+/*20080827 to 20180711
무료 사용ìžëŠ” 최대 50000제니까지 소유할 수 있습니다.
Free Trial users can only hold up to 50,000 zeny.
*/
MSG_FR_INVALID_MONEY = 0x554,
-/*20080827 to 20180621
+/*20080827 to 20180711
전장채팅 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Battlefield Chat has been activated.
*/
MSG_BATTLECHAT_ON = 0x555,
-/*20080827 to 20180621
+/*20080827 to 20180711
전장채팅 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Battlefield Chat has been deactivated.
*/
MSG_BATTLECHAT_OFF = 0x556,
-/*20080827 to 20180621
+/*20080827 to 20180711
용병정보 - 몬스터타입
Mercenary Info - Monster Type
*/
MSG_MER_INFO_TYPE_MONSTER = 0x557,
-/*20080827 to 20180621
+/*20080827 to 20180711
전체 맵 보기
World Map
*/
MSG_RO_MAP = 0x558,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼ë˜ì ¼ì´ CLOSE ìƒíƒœìž…니다.
The Memorial Dungeon is now closed.
*/
MSG_MEMORIAL_DUN_CLOSE = 0x559,
-/*20080827 to 20180621
+/*20080827 to 20180711
^ff0000^ff0000ìš©ë³‘ì„ ì‚­ì œí•©ë‹ˆë‹¤.^000000^000000 삭제하실 경우 지금까지 키운 ë‚´ì—­ì´ ëª¨ë‘ ì‚­ì œë©ë‹ˆë‹¤. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
^ff0000Deleting a Mercenary Soldier^000000 will also delete his growth history. Do you really want to proceed with the deletion?
*/
MSG_DELETE_MER = 0x55a,
-/*20080827 to 20180621
+/*20080827 to 20180711
메모리얼ë˜ì ¼ì´ OPEN ìƒíƒœìž…니다.
The Memorial Dungeon is now open.
*/
MSG_MEMORIAL_DUN_OPEN = 0x55b,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìœ„ì˜ ê³„ì •ì€ ì•„ì§ í†µì‹  안전 í‚¤ì— ì—°ê²°ë˜ì§€ 않았습니다. 먼저 안전 키를 해제하신 ë’¤ ê²Œìž„ì— ì ‘ì†í•´ 주십시오.
This account has not been confirmed by connecting to the safe communication key. Please connect to the key first, and then log into the game.
*/
MSG_PHONE_BLOCK = 0x55c,
-/*20080827 to 20180621
+/*20080827 to 20180711
í•œ ì•„ì´í”¼ë¡œ ì ‘ì† ê°€ëŠ¥í•œ 유저수를 초과하였습니다.
The number of accounts connected to this IP has exceeded the limit.
*/
MSG_BAN_PC_IP_LIMIT_ACCESS = 0x55d,
-/*20080827 to 20180621
+/*20080827 to 20180711
새로운 퀘스트를 받았습니다
You have received a new quest.
*/
MSG_QUESTGET = 0x55e,
-/*20080827 to 20180621
+/*20080827 to 20180711
^777777습ë“ì¡°ê±´ :
^CC3399Requirement:
*/
MSG_FINDTEXT_TO_SKILLDES = 0x55f,
-/*20080827 to 20180621
+/*20080827 to 20180711
스킬 설명 보기
View Skill Info
*/
MSG_VIEW_SKILL_DESCRIPT = 0x560,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì‚¬ìš©ëœ ìŠ¤í‚¬ í¬ì¸íŠ¸ëŠ” 다시 ë˜ëŒë¦´ 수 없습니다. ì ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Once used, skill points cannot be re-allocated. Would you like to use the skill points?
*/
MSG_APPLY_SKILL_UP = 0x561,
-/*20080827 to 20180621
+/*20080827 to 20180711
노비스·1ì°¨ì§ì—…
1st
*/
MSG_1TABNAME_SKILLWND = 0x562,
-/*20080827 to 20180621
+/*20080827 to 20180711
2차·전승ì§ì—…
2nd
*/
MSG_2TABNAME_SKILLWND = 0x563,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¶ˆë²•í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•˜ì˜€ê±°ë‚˜ í˜¹ì€ í•´í‚¹ì„ ì‹œë„í•œ 계정입니다. 블럭종료시간 : %s
This account has been used for illegal program or hacking program. Block Time: %s
20081217 to 20081218
ë¶ˆë²•í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•˜ì˜€ê±°ë‚˜ í•´í‚¹ì„ ì‹œë„í•œ 계정ì´ê±°ë‚˜ ê·¸ë¼ë¹„í‹° ì´ì „ì„ ì‹ ì²­í•œ 한게임 계정입니다. 블럭종료시간 : %s
*/
MSG_RE17 = 0x564,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë¶ˆë²•í”„ë¡œê·¸ëž¨ì´ ì‹¤í–‰, ë°”ì´ëŸ¬ìŠ¤ ê°ì—¼, ë˜ëŠ” í•´í‚¹íˆ´ì´ ì„¤ì¹˜ë˜ì–´ ìžˆì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤. ì •ìƒ í´ë¼ì´ì–¸íŠ¸ë¥¼ 실행하여 주시기 ë°”ëžë‹ˆë‹¤. 함께 만드는 ë°ì€ ë¼ê·¸ë‚˜ë¡œí¬ê°€ ë  ìˆ˜ 있ë„ë¡ ë…¸ë ¥í•˜ê³  있습니다.
The possibility of exposure to illegal program, PC virus infection or Hacking Tool has been detected. Please execute licensed client. Our team is trying to make a best environment for Ro players.
*/
MSG_RE18 = 0x565,
-/*20080827 to 20180621
+/*20080827 to 20180711
ë‹¹ì‹ ì€ ì§€ê¸ˆ ê±´ê°•í•œ 게임 시간 ëŒ€ì— ìžˆìŠµë‹ˆë‹¤, ì¦ê±°ìš´ ê²Œìž„ì´ ë˜ì‹œê¸¸ ë°”ëžë‹ˆë‹¤
You are currently playing in the best game environment. Please enjoy the Ragnarok.
*/
MSG_WARNING_MSG3 = 0x566,
/*20080827 to 20100721
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Job경험치가 30분간 1.5ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
-20100727 to 20180621
+20100727 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Job경험치가 30분간 1.25ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Job Exp points from hunting monsters are increased by 50% for 30 minutes.
*/
MSG_PLUSONLYJOBEXP = 0x567,
/*20080827 to 20091110
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 1.25ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
-20091117 to 20180621
+20091117 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 1.2ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Exp points from hunting monsters are increased by 25% for 30 minutes.
*/
MSG_PLUSEXP14532 = 0x568,
-/*20080827 to 20180621
+/*20080827 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 2ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
EXP points from hunting monsters are increased by 100%% for 30 minutes.
*/
MSG_PLUSEXP14533 = 0x569,
-/*20080827 to 20180621
+/*20080827 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 60분간 1.5ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
EXP points from hunting monsters are increased by 50% for 60 minutes.
*/
MSG_PLUSEXP12312 = 0x56a,
-/*20080827 to 20180621
+/*20080827 to 20180711
ì´ ë§µì—서는 파티를 결성할 수 없습니다.
Unable to organize a party in this map.
*/
MSG_NOPARTY = 0x56b,
-/*20080827 to 20180621
+/*20080827 to 20180711
(%s)ë‹˜ì€ íŒŒí‹°ì— ì°¸ì—¬í•  수 없는 ë§µì— ìžˆìŠµë‹ˆë‹¤.
(%s) are currently in restricted map to join a party.
*/
MSG_NOPARTY2 = 0x56c,
-/*20080827 to 20180621
+/*20080827 to 20180711
간편아ì´í…œìƒµ
Simple Item Shop
*/
MSG_SIMPLE_CASH_SHOP = 0x56d,
-/*20080827 to 20180621
+/*20080827 to 20180711
소지 í•œì½”ì¸ : %d 한코ì¸
Han Coin: %d Han Coin
*/
MSG_SIMPLE_POINT_SHOP_NHN = 0x56e,
-/*20080827 to 20180621
+/*20080827 to 20180711
소지 ìºì‹œ : %d ìºì‹œ
RoK Point: %d RoK Point
*/
MSG_SIMPLE_POINT_SHOP = 0x56f,
-/*20080827 to 20180621
+/*20080827 to 20180711
무료 ìºì‹œ : %d ìºì‹œ
Free Cash: %d Cash
*/
MSG_SIMPLE_POINT_SHOP2 = 0x570,
-/*20080827 to 20180621
+/*20080827 to 20180711
본서버 유저는 í”„ë¦¬ì„œë²„ì— ì ‘ì†í• ìˆ˜ 없습니다.
An user of this server cannot connect to free server
*/
MSG_MAIN_USER_CANONT_LOGIN_FREE_SERVER = 0x571,
-/*20080827 to 20180621
+/*20080827 to 20180711
ìœ íš¨ê¸°ê°„ì´ ì§€ë‚œ 비밀번호 입니다. 다시 로그ì¸í•˜ì—¬ì£¼ì‹­ì‹œì˜¤.
Your password has expired. Please log in again
*/
MSG_INVALID_ONETIMELIMIT = 0x572,
#if PACKETVER >= 20080903
-/*20080903 to 20180621
+/*20080903 to 20180711
3ì°¨ì§ì—…
3rd
*/
MSG_3TABNAME_SKILLWND = 0x573,
#endif
#if PACKETVER >= 20080917
-/*20080917 to 20180621
+/*20080917 to 20180711
ì´ ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없는 대ìƒìž…니다.
This skill can't be used on that target.
*/
MSG_USESKILL_FAIL_TOTARGET = 0x574,
-/*20080917 to 20180621
+/*20080917 to 20180711
ì•ˆì‹¤ë¼ ì†Œìœ  개수가 초과하여 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use skill because you have exceeded the number Ancilla possession limit
*/
MSG_USESKILL_FAIL_ANCILLA_NUMOVER = 0x575,
-/*20080917 to 20180621
+/*20080917 to 20180711
성수가 필요합니다.
Unable to use the skill to exceed the number of Ancilla.
*/
MSG_USESKILL_FAIL_HOLYWATER = 0x576,
-/*20080917 to 20180621
+/*20080917 to 20180711
안실ë¼ê°€ 필요합니다.
Holy water is required.
*/
MSG_USESKILL_FAIL_ANCILLA = 0x577,
-/*20080917 to 20180621
+/*20080917 to 20180711
ì¼ì •ê±°ë¦¬ ë‚´ì— ì¤‘ë³µë  ìˆ˜ 없습니다.
Ancilla is required.
*/
MSG_USESKILL_FAIL_DUPLICATE_RANGEIN = 0x578,
-/*20080917 to 20180621
+/*20080917 to 20180711
ì´ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ê¸° 위해서는 다른 ìŠ¤í‚¬ì´ í•„ìš”í•©ë‹ˆë‹¤.
Cannot be duplicated within a certain distance.
*/
MSG_USESKILL_FAIL_NEED_OTHER_SKILL = 0x579,
#endif
#if PACKETVER >= 20080924
-/*20080924 to 20180621
+/*20080924 to 20180711
ì´ ë§µì—서는 ì±„íŒ…ì„ í•  수 없습니다.
This skill requires other skills to be used.
*/
MSG_NO_CHATTING = 0x57a,
#endif
#if PACKETVER >= 20081001
-/*20081001 to 20180621
+/*20081001 to 20180711
3ì‹œê°„ì´ ì§€ë‚¬ìŠµë‹ˆë‹¤.
Chat is not allowed in this map
*/
MSG_VET_3HOUR = 0x57b,
-/*20081001 to 20180621
+/*20081001 to 20180711
5ì‹œê°„ì´ ì§€ë‚¬ìŠµë‹ˆë‹¤.
3 hours have passed.
*/
MSG_VET_5HOUR = 0x57c,
#endif
#if PACKETVER >= 20081008
-/*20081008 to 20180621
+/*20081008 to 20180711
게임가드 초기화 ì—러 ë˜ëŠ” êµ¬ë²„ì „ì˜ ê²Œìž„ê°€ë“œ 파ì¼ìž…니다. 게임가드 셋업파ì¼ì„ 다시 설치하고 ê²Œìž„ì„ ì‹¤í–‰í•´ 보시기 ë°”ëžë‹ˆë‹¤.
5 hours have passed.
*/
MSG_NPGAMEMON_ERROR_GAMEGUARD = 0x57d,
-/*20081008 to 20180621
+/*20081008 to 20180711
ini 파ì¼ì´ 없거나 변조ë˜ì—ˆìŠµë‹ˆë‹¤. 게임가드 셋업파ì¼ì„ 설치하면 í•´ê²° í•  수 있습니다.
Game guard initialization error or previous version game guard file is installed. Please re-install the setup file and try again
*/
MSG_NPGMUP_ERROR_PARAM = 0x57e,
-/*20081008 to 20180621
+/*20081008 to 20180711
게임가드와 ì¶©ëŒ í”„ë¡œê·¸ëž¨ì´ ë°œê²¬ë˜ì—ˆìŠµë‹ˆë‹¤.
Either ini file is missing or altered. Install game guard setup file to fix the problem
*/
MSG_NPGG_ERROR_COLLISION = 0x57f,
#endif
#if PACKETVER >= 20081111
-/*20081111 to 20180621
+/*20081111 to 20180711
ìž˜ëª»ëœ í´ë¼ì´ì–¸íŠ¸ìž…니다. ì •ìƒì ì¸ í´ë¼ì´ì–¸íŠ¸ë¥¼ 실행하여 주십시요.
There is a program found that conflicts with game guard
*/
MSG_PROOF_ERROR = 0x580,
#endif
#if PACKETVER >= 20081203
-/*20081203 to 20180621
+/*20081203 to 20180711
ëª¨ë°”ì¼ ì¸ì¦ì„ 받아주시기 ë°”ëžë‹ˆë‹¤.
Incorrect client. Please run a normal client
*/
MSG_MOBILE_LOCKSERVER = 0x581,
#endif
#if PACKETVER >= 20081217
-/*20081217 to 20180621
+/*20081217 to 20180711
ëª¨ë°”ì¼ ì¸ì¦ì— 실패하였습니다.
Thank you to accept mobile authentication.
*/
MSG_FAILED_MOBILE_LOCKSERVER = 0x582,
-/*20081217 to 20180621
+/*20081217 to 20180711
ì´ìŠ¤í‚¬ì€ 혼ìžì„œ 사용할수 없습니다.
This skill can't be used alone
*/
MSG_USESKILL_FAIL_NEED_HELPER = 0x583,
-/*20081217 to 20180621
+/*20081217 to 20180711
ì´ìŠ¤í‚¬ì€ 특정방향으로만 사용할수 있습니다.
This skill can be used to certain direction only
*/
MSG_USESKILL_FAIL_INVALID_DIR = 0x584,
-/*20081217 to 20180621
+/*20081217 to 20180711
ë”ì´ìƒ 소환할수 없습니다.
Cannot summon spheres anymore.
*/
MSG_USESKILL_FAIL_SUMMON = 0x585,
/*20081217 to 20130710
ì†Œí™˜ëœ êµ¬ì²´ê°€ 존재하지 않습니다.
-20130717 to 20180621
+20130717 to 20180711
ì†Œí™˜ëœ êµ¬ì²´ê°€ 존재하지 않거나 부족합니다.
There is no summoned sphere or you do not have enough sphere.
*/
MSG_USESKILL_FAIL_SUMMON_NONE = 0x586,
-/*20081217 to 20180621
+/*20081217 to 20180711
사용가능한 ëª¨ë°©ìŠ¤í‚¬ì´ ì¡´ìž¬í•˜ì§€ 않습니다.
There is no imitation skills available.
*/
MSG_USESKILL_FAIL_IMITATION_SKILL_NONE = 0x587,
-/*20081217 to 20180621
+/*20081217 to 20180711
ì´ ìŠ¤í‚¬ì€ ì¤‘ë³µí•´ì„œ 사용할수 없습니다.
You can't reuse this skill
*/
MSG_USESKILL_FAIL_DUPLICATE = 0x588,
-/*20081217 to 20180621
+/*20081217 to 20180711
ìŠ¤í‚¬ì„ ì‚¬ìš©í• ìˆ˜ 없는 ìƒíƒœìž…니다.
Skill can't be used in this state
*/
MSG_USESKILL_FAIL_CONDITION = 0x589,
-/*20081217 to 20180621
+/*20081217 to 20180711
ì•„ì´í…œë³„ 최대 ì†Œì§€ëŸ‰ì„ ì´ˆê³¼í•˜ì—¬ 가질 수 없습니다.
You have exceeded the maximum amount of possession of another item.
*/
MSG_PICKUP_MAXCOUNT_LIMIT = 0x58a,
#endif
#if PACKETVER >= 20090204
-/*20090204 to 20180621
+/*20090204 to 20180711
ê´€ë¦¬ìž ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. 프로그램 최초 ì‹¤í–‰ì€ ê´€ë¦¬ìž ê¶Œí•œìœ¼ë¡œ 실행하셔야 합니다.
No administrative privileges. Must first run the program with administrator privileges.
*/
MSG_NPK_ERROR_NOTADMIN = 0x58b,
-/*20090204 to 20180621
+/*20090204 to 20180711
nProtect KeyCrypt ë“œë¼ì´ë²„ ë²„ì „ì´ ë§žì§€ 않습니다. 시스템 재 부팅 í›„ì— ìƒˆë¡œ 실행 시켜 주십시오.
nProtect KeyCrypt not the same. Please restart the program and the computer first.
*/
MSG_NPK_ERROR_DRIVERVERSION = 0x58c,
-/*20090204 to 20180621
+/*20090204 to 20180711
WindowXP 호환성 모드를 사용하고 계십니다. 현재 프로그램ì—ì„œ 호환성 모드를 제거하였습니다. í”„ë¡œê·¸ëž¨ì„ ìƒˆë¡œ 시작해 주십시오.
Currently wearing WindowXP Compatibility Mode. The program now removes Compatibility Mode. Please restart the program.
*/
MSG_NPK_ERROR_VERIFYVERSION = 0x58d,
-/*20090204 to 20180621
+/*20090204 to 20180711
PS/2 키로거가 존재합니다.
PS/2 keyloggers exist.
*/
MSG_DETECT_PS2KEYLOGGER = 0x58e,
-/*20090204 to 20180621
+/*20090204 to 20180711
USB 키보드 ë“œë¼ì´ë²„ 해킹 ì‹œë„ê°€ íƒì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
USB Keylogging attempt was detected.
*/
MSG_DETECT_USBKEYLOGGER = 0x58f,
-/*20090204 to 20180621
+/*20090204 to 20180711
HHD ëª¨ë‹ˆí„°ë§ íˆ´ì´ íƒì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
HHD monitoring tool has been detected.
*/
MSG_DETECT_HHDUSBH = 0x590,
-/*20090204 to 20180621
+/*20090204 to 20180711
페ì¸íŠ¸ë¶“ì´ í•„ìš”í•©ë‹ˆë‹¤.
Paintbrush is required.
*/
MSG_USESKILL_FAIL_PAINTBRUSH = 0x591,
/*20090204 to 20090401
그림물ê°ì´ 필요합니다.
-20090408 to 20180621
+20090408 to 20180711
서페ì´ìŠ¤íŽ˜ì¸íŠ¸ê°€ 필요합니다.
Paint is required.
*/
MSG_USESKILL_FAIL_II_SURFACE_PAINTS = 0x592,
-/*20090204 to 20180621
+/*20090204 to 20180711
지정한 ìœ„ì¹˜ì— ìŠ¤í‚¬ì„ ì‚¬ìš©í• ìˆ˜ 없습니다.
Use the skills that are not at the specified location.
*/
MSG_USESKILL_FAIL_POS = 0x593,
-/*20090204 to 20180621
+/*20090204 to 20180711
ë„ìš°ë¯¸ì˜ SPê°€ 부족합니다.
Not enough SP.
*/
@@ -7199,569 +7199,569 @@ Not enough SP.
#if PACKETVER >= 20090211
/*20090211 to 20090218
ìƒì„± 가능 ìºë¦­í„° 수는 9개입니다!!(ìž„ì‹œ)
-20090226 to 20180621
+20090226 to 20180711
ìºë¦­í„° ì„ íƒì°½ì˜ ìºë¦­í„°ê°€ %d개를 초과하면 ê²Œìž„ì— ì ‘ì†í•  수 없습니다. 불필요한 ìºë¦­í„°ë¥¼ 삭제해주십시오.
Character %d is character selection window cannot connect to the game that exceeds the total. Please remove unwanted characters.
*/
MSG_BAN_OVER_CHARACTER_LIST = 0x595,
#endif
#if PACKETVER >= 20090226
-/*20090226 to 20180621
+/*20090226 to 20180711
목캔디가 필요합니다.
Throat Lozenge is required.
*/
MSG_USESKILL_FAIL_II_NECK_CANDY = 0x596,
-/*20090226 to 20180621
+/*20090226 to 20180711
ì•ˆíƒ€ê¹Œìš´ëˆˆë¬¼ì´ í•„ìš”í•©ë‹ˆë‹¤.
Painful Tears is required.
*/
MSG_USESKILL_FAIL_II_MISERABLE_TEAR = 0x597,
-/*20090226 to 20180621
+/*20090226 to 20180711
목 보호 캔디가 필요합니다.
Throat Lozenge is required.
*/
MSG_USESKILL_FAIL_II_PROTECT_NECK_CANDY = 0x598,
-/*20090226 to 20180621
+/*20090226 to 20180711
ì›¨í° ë¸”ë¡œí‚¹ì˜ ì—°ê³„ë¡œë§Œ 사용가능합니다.
Cooperation is only available with Weapon Blocking.
*/
MSG_USESKILL_FAIL_GC_WEAPONBLOCKING = 0x599,
-/*20090226 to 20180621
+/*20090226 to 20180711
길로틴í¬ë¡œìŠ¤ì˜ ë…ì„ ë°”ë¥¸ 무기가 필요합니다.
Poisoned weapons is required.
*/
MSG_USESKILL_FAIL_GC_POISONINGWEAPON = 0x59a,
-/*20090226 to 20180621
+/*20090226 to 20180711
마ë„기어 탑승시ì—만 사용가능합니다.
Item can only be used when Mado Gear is mounted.
*/
MSG_USESKILL_FAIL_MADOGEAR = 0x59b,
-/*20090226 to 20180621
+/*20090226 to 20180711
ë°œì¹¸ë¸”ë¦¿ì´ í•„ìš”í•©ë‹ˆë‹¤.
Vulcan Bullet is required.
*/
MSG_USESKILL_FAIL_II_VULCANBULLET = 0x59c,
-/*20090226 to 20180621
+/*20090226 to 20180711
마ë„기어 연료가 필요합니다.
Mado Gear Fuel is required.
*/
MSG_USESKILL_FAIL_II_FUELGAS = 0x59d,
-/*20090226 to 20180621
+/*20090226 to 20180711
액체냉ê°íƒ„ì´ í•„ìš”í•©ë‹ˆë‹¤.
Liquid Cold Bullet is required.
*/
MSG_USESKILL_FAIL_II_COLDSLOWERBULLET = 0x59e,
-/*20090226 to 20180621
+/*20090226 to 20180711
ìºë…¼ë³¼ì„ 장전 하세요.
Please load a Cannon Ball.
*/
MSG_USESKILL_FAIL_CANONBALL = 0x59f,
-/*20090226 to 20180621
+/*20090226 to 20180711
미ë„기어 ê°€ì†ìž¥ì¹˜ë¥¼ 착용하세요.
Please equipped with a Mado Gear Accelerator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_ACCELERATION = 0x5a0,
-/*20090226 to 20180621
+/*20090226 to 20180711
호버ë§ë¶€ìŠ¤í„°ë¥¼ 착용하세요.
Please equipped with a Hovering Booster.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_HOVERING_BOOSTER = 0x5a1,
#endif
#if PACKETVER >= 20090304
-/*20090304 to 20180621
+/*20090304 to 20180711
[톡신] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Toxin] Poison effect was applied to the weapon.
*/
MSG_TOXIN = 0x5a2,
-/*20090304 to 20180621
+/*20090304 to 20180711
[패럴ë¼ì´ì¦ˆ] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Paralysis] Poison effect was applied to the weapon.
*/
MSG_PARALYZE = 0x5a3,
-/*20090304 to 20180621
+/*20090304 to 20180711
[베놈블리드] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Fatigue] Poison effect was applied to the weapon.
*/
MSG_VENOMBLEED = 0x5a4,
-/*20090304 to 20180621
+/*20090304 to 20180711
[ë§¤ì§ ë¨¸ì‰¬ë£¸] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Laughing] Poison effect was applied to the weapon.
*/
MSG_MAGICMUSHROOM = 0x5a5,
-/*20090304 to 20180621
+/*20090304 to 20180711
[ë°ìŠ¤ 허트] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Disheart] Poison effect was applied to the weapon.
*/
MSG_DEATHHURT = 0x5a6,
-/*20090304 to 20180621
+/*20090304 to 20180711
[파ì´ë ‰ì‹œì•„] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Pyrexia] Poison effect was applied to the weapon.
*/
MSG_PHYREXIA = 0x5a7,
-/*20090304 to 20180621
+/*20090304 to 20180711
[오블리비언 커즈] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Oblivion] Poison effect was applied to the weapon.
*/
MSG_OBLIANCURSE = 0x5a8,
-/*20090304 to 20180621
+/*20090304 to 20180711
[리치 엔드] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Leech] Poison effect was applied to the weapon.
*/
MSG_RICHEND = 0x5a9,
#endif
#if PACKETVER >= 20090311
-/*20090311 to 20180621
+/*20090311 to 20180711
호버ë§ìƒíƒœì—서만 사용가능합니다.
Can only be used in Hovering state.
*/
MSG_USESKILL_FAIL_MADOGEAR_HOVERING = 0x5aa,
-/*20090311 to 20180621
+/*20090311 to 20180711
ìží­ìž¥ì¹˜ë¥¼ 장착하세요.
Please equip a Self-Destruct Mechanism.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_SELFDESTRUCTION_DEVICE = 0x5ab,
-/*20090311 to 20180621
+/*20090311 to 20180711
ì…°ì´í”„쉬프터를 장착하세요.
Please equip a Shape Shift.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_SHAPESHIFTER = 0x5ac,
-/*20090311 to 20180621
+/*20090311 to 20180711
길로틴ë…ì´ í•„ìš”í•©ë‹ˆë‹¤.
Guillotine Cross Poison is required.
*/
MSG_USESKILL_FAIL_GUILLONTINE_POISON = 0x5ad,
-/*20090311 to 20180621
+/*20090311 to 20180711
냉ê°ìž¥ì¹˜ë¥¼ 장착하세요.
Please equipped with a Cooling System.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_COOLING_DEVICE = 0x5ae,
-/*20090311 to 20180621
+/*20090311 to 20180711
ìžê¸°ìž¥í•„ë“œìƒì„±ê¸°ë¥¼ 착용하세요.
Please equipped with a Magnetic Field Generator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_MAGNETICFIELD_GENERATOR = 0x5af,
-/*20090311 to 20180621
+/*20090311 to 20180711
베리어ìƒì„±ê¸°ë¥¼ 착용하세요.
Please equipped with a Barrier Generator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_BARRIER_GENERATOR = 0x5b0,
-/*20090311 to 20180621
+/*20090311 to 20180711
광학미채발ìƒê¸°ë¥¼ 착용하세요.
Please equipped with a Optical Camouflage Generator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_OPTICALCAMOUFLAGE_GENERATOR = 0x5b1,
-/*20090311 to 20180621
+/*20090311 to 20180711
리페어키트를 착용하세요.
Please equipped with a Repair Kit.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_REPAIRKIT = 0x5b2,
-/*20090311 to 20180621
+/*20090311 to 20180711
몽키 스패너가 필요합니다.
Monkey Wrench is required.
*/
MSG_USESKILL_FAIL_II_MONKEY_SPANNER = 0x5b3,
#endif
#if PACKETVER >= 20090318
-/*20090318 to 20180621
+/*20090318 to 20180711
[%s] ìŠ¤í‚¬ì„ ì‹œì „ í•  수 없습니다.
[%s] Cannot use the skills due to cooldown delay.
*/
MSG_SKILLINTERVAL2 = 0x5b4,
-/*20090318 to 20180621
+/*20090318 to 20180711
%d레벨 ì´ìƒì€ 삭제가 불가능합니다.
Deletion is impossible for over level %d
*/
MSG_LEMIT_DELETE_LEVEL = 0x5b5,
/*20090318 to 20110614
마ë„기어 탑승시ì—는 사용할수 없습니다.
-20110622 to 20180621
+20110622 to 20180711
마ë„기어 탑승시ì—는 사용 í•  수 없습니다.
Can't be used while on Magic Gear.
*/
MSG_USESKILL_FAIL_MADOGEAR_RIDE = 0x5b6,
#endif
#if PACKETVER >= 20090319
-/*20090319 to 20180621
+/*20090319 to 20180711
드래곤 내리기
Dismount Dragon
*/
MSG_DRAGONOFF = 0x5b7,
-/*20090319 to 20180621
+/*20090319 to 20180711
마ë„기어 내리기
Dismount Magic Gear
*/
MSG_MADOOFF = 0x5b8,
#endif
#if PACKETVER >= 20090401
-/*20090401 to 20180621
+/*20090401 to 20180711
소비
I
*/
MSG_STORE_TABNAME_0 = 0x5b9,
-/*20090401 to 20180621
+/*20090401 to 20180711
ìºì‰¬
Cash
*/
MSG_STORE_TABNAME_1 = 0x5ba,
-/*20090401 to 20180621
+/*20090401 to 20180711
방어구
Armors
*/
MSG_STORE_TABNAME_2 = 0x5bb,
-/*20090401 to 20180621
+/*20090401 to 20180711
무기
Weapons
*/
MSG_STORE_TABNAME_3 = 0x5bc,
-/*20090401 to 20180621
+/*20090401 to 20180711
투사체
Ammo
*/
MSG_STORE_TABNAME_4 = 0x5bd,
-/*20090401 to 20180621
+/*20090401 to 20180711
카드
Card
*/
MSG_STORE_TABNAME_5 = 0x5be,
-/*20090401 to 20180621
+/*20090401 to 20180711
기타
Other
*/
MSG_STORE_TABNAME_6 = 0x5bf,
-/*20090401 to 20180621
+/*20090401 to 20180711
í´ë¼ì´ì–¸íŠ¸ ì‘ë‹µì‹œê°„ì´ ì´ˆê³¼ë˜ì–´ ì—°ê²°ì´ ëŠì–´ì§‘니다.
Client response time has passed so connection is terminated
*/
MSG_ERROR_HS_TIMEOUT = 0x5c0,
-/*20090401 to 20180621
+/*20090401 to 20180711
핵쉴드 파ì¼ì˜ ë²„ì „ì´ ë§žì§€ 않습니다. í´ë¼ì´ì–¸íŠ¸ë¥¼ 재설치 해주십시오.
Incorrect version of hack shield file. Please reinstall the client
*/
MSG_ERROR_DIFF_CLIENT = 0x5c1,
#endif
#if PACKETVER >= 20090408
-/*20090408 to 20180621
+/*20090408 to 20180711
마법서가 필요합니다.
[Magic Book] is required.
*/
MSG_USESKILL_FAIL_SPELLBOOK = 0x5c2,
-/*20090408 to 20180621
+/*20090408 to 20180711
마법서가 너무 어려워서 졸ìŒì´ 몰려온다.
Feel sleepy since Magic Book is too difficult to understand.
*/
MSG_USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP = 0x5c3,
-/*20090408 to 20180621
+/*20090408 to 20180711
ë³´ì¡´í¬ì¸íŠ¸ê°€ 부족합니다.
Not enough saved point.
*/
MSG_USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT = 0x5c4,
-/*20090408 to 20180621
+/*20090408 to 20180711
ë”ì´ìƒ 마법서를 ì½ì„수 없습니다.
Can't read a Magic Book anymore.
*/
MSG_USESKILL_FAIL_SPELLBOOK_READING = 0x5c5,
-/*20090408 to 20180621
+/*20090408 to 20180711
페ì´ìŠ¤íŽ˜ì¸íŠ¸ê°€ 필요합니다.
Face Paint is required.
*/
MSG_USESKILL_FAIL_II_FACE_PAINTS = 0x5c6,
-/*20090408 to 20180621
+/*20090408 to 20180711
ë¶„ìž¥ìš©ë¶“ì´ í•„ìš”í•©ë‹ˆë‹¤.
Brush is required.
*/
MSG_USESKILL_FAIL_II_MAKEUP_BRUSH = 0x5c7,
-/*20090408 to 20180621
+/*20090408 to 20180711
대기 ì‹œê°„ì´ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤. 다시 ë¡œê·¸ì¸ í•´ì£¼ì‹­ì‹œì˜¤.
Waiting time has passed. Please log in again
*/
MSG_MOBILE_TIMEOVER = 0x5c8,
-/*20090408 to 20180621
+/*20090408 to 20180711
위험! ì´ë¯¸ ë™ì¼í•œ ê³„ì •ì´ ë¡œê·¸ì¸ ì¤‘ì— ìžˆìŠµë‹ˆë‹¤. ìž ì‹œ ëª¨ë°”ì¼ ì¸ì¦ ì§„í–‰ì„ ë©ˆì¶”ì‹œê³  ë¹„ë²ˆì„ ìˆ˜ì •í•œ ë’¤ 재 ë¡œê·¸ì¸ í•´ì£¼ì‹­ì‹œì˜¤.
Watch out! Same account is already logged in. Stop mobile verification and log in again after changing your password
*/
MSG_MOBILE_ANOTHER_LOGIN = 0x5c9,
-/*20090408 to 20180621
+/*20090408 to 20180711
위험! 현재 ë™ì¼í•œ ê³„ì •ì´ ëª¨ë°”ì¼ ì¸ì¦ 대기 ì¤‘ì— ìžˆìŠµë‹ˆë‹¤. ìž ì‹œ ëª¨ë°”ì¼ ì¸ì¦ ì§„í–‰ì„ ë©ˆì¶”ì‹œê³  ë¹„ë²ˆì„ ìˆ˜ì •í•œ ë’¤ 재 ë¡œê·¸ì¸ í•´ì£¼ì‹­ì‹œì˜¤.
Watch out! Same account is waiting for mobile verification. Stop mobile verification and log in again after changing your password
*/
MSG_MOBILE_WAITING_STATE = 0x5ca,
#endif
#if PACKETVER >= 20090506
-/*20090506 to 20180621
+/*20090506 to 20180711
게임 옵션창
Game setting window
*/
MSG_ESC_OPTIONWND = 0x5cb,
-/*20090506 to 20180621
+/*20090506 to 20180711
그래픽 설정
Graphics Settings
*/
MSG_GRAPHIC_OPTIONWND = 0x5cc,
-/*20090506 to 20180621
+/*20090506 to 20180711
사운드 설정
Sound Settings
*/
MSG_SOUND_OPTIONWND = 0x5cd,
#endif
#if PACKETVER >= 20090514
-/*20090514 to 20180621
+/*20090514 to 20180711
변경 할 단축키를 누르거나, 'ESC'키를 눌러 삭제 해 주세요.
Press a key to assign. Pressing 'ESC' will remove the assigned key.
*/
MSG_HOTKEYWND_NOTICE1 = 0x5ce,
-/*20090514 to 20180621
+/*20090514 to 20180711
ë‹¨ì¼ í‚¤ë¡œ 지정 í•  수 없는 키입니다.
Unable to specify a single key.
*/
MSG_HOTKEYWND_NOTICE2 = 0x5cf,
-/*20090514 to 20180621
+/*20090514 to 20180711
지정 할 수 없는 키입니다.
Unable to specify the key assigned.
*/
MSG_HOTKEYWND_NOTICE3 = 0x5d0,
-/*20090514 to 20180621
+/*20090514 to 20180711
'%s'ì— ì‚¬ìš©ëœ ë‹¨ì¶•í‚¤ì™€ 중복ë©ë‹ˆë‹¤. 바꾸시겠습니까?
Duplicated with ['%s']. Do you still want to change?
*/
MSG_HOTKEYWND_NOTICE4 = 0x5d1,
-/*20090514 to 20180621
+/*20090514 to 20180711
ì €ìž¥ëœ ë‹¨ì¶•í‚¤ ì¡°í•©ì´ ì´ˆê¸°í™” ë©ë‹ˆë‹¤. 초기화 하시겠습니까?
Initialization is stored in the shortcut key settings. Do you want to initialized?
*/
MSG_HOTKEYWND_NOTICE5 = 0x5d2,
-/*20090514 to 20180621
+/*20090514 to 20180711
스킬바
Skill Bar
*/
MSG_HOTKEYWND_TAB1 = 0x5d3,
-/*20090514 to 20180621
+/*20090514 to 20180711
ì¸í„°íŽ˜ì´ìŠ¤
Interface
*/
MSG_HOTKEYWND_TAB2 = 0x5d4,
-/*20090514 to 20180621
+/*20090514 to 20180711
ì´ëª¨ì…˜
Macros
*/
MSG_HOTKEYWND_TAB3 = 0x5d5,
-/*20090514 to 20180621
+/*20090514 to 20180711
단축키 설정 창
Shortcut Settings
*/
MSG_HOTKEYWND_TITLE = 0x5d6,
#endif
#if PACKETVER >= 20090520
-/*20090520 to 20180621
+/*20090520 to 20180711
ë°°ê²½ìŒ
BGM
*/
MSG_BGM = 0x5d7,
-/*20090520 to 20180621
+/*20090520 to 20180711
효과ìŒ
Effect
*/
MSG_SOUND = 0x5d8,
-/*20090520 to 20180621
+/*20090520 to 20180711
스킨
Skin
*/
MSG_SKIN = 0x5d9,
-/*20090520 to 20180621
+/*20090520 to 20180711
채팅방 입장ìŒë§Œ 소리남 On
Chat room entrance sound on
*/
MSG_TINGONLY_ON = 0x5da,
-/*20090520 to 20180621
+/*20090520 to 20180711
채팅방 입장ìŒë§Œ 소리남 Off
Chat room entrance sound off
*/
MSG_TINGONLY_OFF = 0x5db,
-/*20090520 to 20180621
+/*20090520 to 20180711
/tingonly : 채팅방 입장ìŒë§Œ 들ì„수있게ë©ë‹ˆë‹¤
/tingonly: you can hear only sound like a chat room entry.
*/
MSG_EXPLAIN_TINGONLY = 0x5dc,
-/*20090520 to 20180621
+/*20090520 to 20180711
/주먹
/rock
*/
MSG_EMOTION_ROCK = 0x5dd,
-/*20090520 to 20180621
+/*20090520 to 20180711
/가위
/scissors
*/
MSG_EMOTION_SCISSOR = 0x5de,
-/*20090520 to 20180621
+/*20090520 to 20180711
/ë³´
/paper
*/
MSG_EMOTION_WRAP = 0x5df,
-/*20090520 to 20180621
+/*20090520 to 20180711
/러브
/love
*/
MSG_EMOTION_LUV = 0x5e0,
-/*20090520 to 20180621
+/*20090520 to 20180711
/mobile
*/
MSG_EMOTION_MOBILE = 0x5e1,
-/*20090520 to 20180621
+/*20090520 to 20180711
/mail
*/
MSG_EMOTION_MAIL = 0x5e2,
-/*20090520 to 20180621
+/*20090520 to 20180711
/antenna0
*/
MSG_EMOTION_ANTENNA0 = 0x5e3,
-/*20090520 to 20180621
+/*20090520 to 20180711
/antenna1
*/
MSG_EMOTION_ANTENNA1 = 0x5e4,
-/*20090520 to 20180621
+/*20090520 to 20180711
/antenna2
*/
MSG_EMOTION_ANTENNA2 = 0x5e5,
-/*20090520 to 20180621
+/*20090520 to 20180711
/antenna3
*/
MSG_EMOTION_ANTENNA3 = 0x5e6,
-/*20090520 to 20180621
+/*20090520 to 20180711
/hum
*/
MSG_EMOTION_HUM2 = 0x5e7,
-/*20090520 to 20180621
+/*20090520 to 20180711
/abs
*/
MSG_EMOTION_ABS = 0x5e8,
-/*20090520 to 20180621
+/*20090520 to 20180711
/oops
*/
MSG_EMOTION_OOPS = 0x5e9,
-/*20090520 to 20180621
+/*20090520 to 20180711
/spit
*/
MSG_EMOTION_SPIT = 0x5ea,
-/*20090520 to 20180621
+/*20090520 to 20180711
/ene
*/
MSG_EMOTION_ENE = 0x5eb,
-/*20090520 to 20180621
+/*20090520 to 20180711
/panic
*/
MSG_EMOTION_PANIC = 0x5ec,
-/*20090520 to 20180621
+/*20090520 to 20180711
/whisp
*/
MSG_EMOTION_WHISP = 0x5ed,
#endif
#if PACKETVER >= 20090527
-/*20090527 to 20180621
+/*20090527 to 20180711
지정안함
Not Assigned
*/
MSG_HOTKEY_NOTHING = 0x5ee,
#endif
#if PACKETVER >= 20090529
-/*20090529 to 20180621
+/*20090529 to 20180711
카트장착시ì—만 사용가능합니다.
Only available when cart is mounted.
*/
MSG_USESKILL_FAIL_CART = 0x5ef,
-/*20090529 to 20180621
+/*20090529 to 20180711
[가시나무 씨앗]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Thorny Seed] is required.
*/
MSG_USESKILL_FAIL_II_THORNS_SEED = 0x5f0,
-/*20090529 to 20180621
+/*20090529 to 20180711
[í¡í˜ˆ ì‹ë¬¼ 씨앗]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Bloodsucker Seed] is required.
*/
MSG_USESKILL_FAIL_II_BLOOD_SUCKER_SEED = 0x5f1,
-/*20090529 to 20180621
+/*20090529 to 20180711
ë”ì´ìƒ 시전할수 없습니다.
Cannot be used anymore.
*/
MSG_USESKILL_FAIL_NO_MORE_SPELL = 0x5f2,
-/*20090529 to 20180621
+/*20090529 to 20180711
[í­íƒ„버섯í¬ìž]ê°€ 필요합니다.
[Bomb Mushroom Spore] is required.
*/
MSG_USESKILL_FAIL_II_BOMB_MUSHROOM_SPORE = 0x5f3,
-/*20090529 to 20180621
+/*20090529 to 20180711
[화염병]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Fire Bottle] is required.
*/
MSG_USESKILL_FAIL_II_GASOLINE_BOOMB = 0x5f4,
-/*20090529 to 20180621
+/*20090529 to 20180711
[기름병]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Oil Bottle] is required.
*/
MSG_USESKILL_FAIL_II_OIL_BOTTLE = 0x5f5,
-/*20090529 to 20180621
+/*20090529 to 20180711
[í­ë°œê°€ë£¨]ê°€ 필요합니다.
[Explosive Powder] is required.
*/
MSG_USESKILL_FAIL_II_EXPLOSION_POWDER = 0x5f6,
-/*20090529 to 20180621
+/*20090529 to 20180711
[연막가루]가 필요합니다.
[Smokescreen Powder] is required.
*/
MSG_USESKILL_FAIL_II_SMOKE_POWDER = 0x5f7,
-/*20090529 to 20180621
+/*20090529 to 20180711
[최루가스]가 필요합니다.
[Tear Gas] is required.
*/
MSG_USESKILL_FAIL_II_TEAR_GAS = 0x5f8,
-/*20090529 to 20180621
+/*20090529 to 20180711
[염산병]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Acid Bottle] is required.
*/
MSG_USESKILL_FAIL_II_HYDROCHLORIC_ACID_BOTTLE = 0x5f9,
-/*20090529 to 20180621
+/*20090529 to 20180711
[ì‹ì¸ì‹ë¬¼ë³‘]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Bottom Man-Eating Plant] is required.
*/
MSG_USESKILL_FAIL_II_HELLS_PLANT_BOTTLE = 0x5fa,
-/*20090529 to 20180621
+/*20090529 to 20180711
[만드ë¼ê³ ë¼ì˜ 화분]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Pot of Mandragora] is required.
*/
MSG_USESKILL_FAIL_II_MANDRAGORA_FLOWERPOT = 0x5fb,
#endif
#if PACKETVER >= 20090603
-/*20090603 to 20180621
+/*20090603 to 20180711
파티장 위임
Party delegation
*/
MSG_YIELD_PARTYMASTER = 0x5fc,
-/*20090603 to 20180621
+/*20090603 to 20180711
ì •ë§ íŒŒí‹°ìž¥ì„ ìœ„ìž„í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you want to delegate the real party?
*/
MSG_DO_YOU_REALLY_WANT_YIELD_PARTYMASTER = 0x5fd,
-/*20090603 to 20180621
+/*20090603 to 20180711
íŒŒí‹°ìž¥ì„ ìœ„ìž„ í•  수 없습니다.
Party cannot be delegated.
*/
MSG_CANNOT_YIELD_PARTYMASTER = 0x5fe,
-/*20090603 to 20180621
+/*20090603 to 20180711
변경불가
Immutable
*/
MSG_FAILED_CHANGE = 0x5ff,
-/*20090603 to 20180621
+/*20090603 to 20180711
[%s]가 %d개 필요합니다.
[%s] required '%d' amount.
*/
MSG_USESKILL_FAIL_NEED_ITEM = 0x600,
#endif
#if PACKETVER >= 20090605
-/*20090605 to 20180621
+/*20090605 to 20180711
제련 수치가 하향 ì¡°ì • ë˜ì—ˆìŠµë‹ˆë‹¤.
Is now refining the value lowered.
*/
MSG_ITEM_REFINING_DOWNGRADE = 0x601,
-/*20090605 to 20180621
+/*20090605 to 20180711
[%s]를 장비하고 있어야 사용할 수 있습니다
Need to put on [%s] in order to use.
*/
@@ -7770,14 +7770,14 @@ Need to put on [%s] in order to use.
#if PACKETVER >= 20090617
/*20090617 to 20090923
전장 리스트
-20090929 to 20180621
+20090929 to 20180711
전장 입장 설정
Battle field entrance setting
*/
MSG_BATTLEFIELD_LIST = 0x603,
/*20090617 to 20090929
전장 - [%s] 신청 하시겠습니까?
-20091006 to 20180621
+20091006 to 20180711
% 전장으로 ì´ë™ í•  수 없는 ìƒíƒœê°€ ë˜ì–´ 전장 ì‹ ì²­ì´ ì·¨ì†Œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Battlefield - [%s] you sign up?
*/
@@ -7788,7 +7788,7 @@ Battlefield - [%s] you sign up?
입장 ì‹ ì²­ì´ ì™„ë£Œë˜ì—ˆìŠµë‹ˆë‹¤.
20091006 to 20100810
-20100817 to 20180621
+20100817 to 20180711
Current admission application state.
*/
@@ -7799,7 +7799,7 @@ Current admission application state.
전장 - [%s] ì— ìž…ìž¥ í•  수 없는 ìƒíƒœì´ë¯€ë¡œ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
20090722 to 20090929
ì— ìž…ìž¥ í•  수 없는 ìƒíƒœì´ë¯€ë¡œ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20091006 to 20180621
+20091006 to 20180711
% 전장 ìž…ìž¥ì´ ë³´ë¥˜ ë˜ì—ˆìŠµë‹ˆë‹¤. 다른 플레ì´ì–´ë¥¼ 기다립니다.
It was unregistered and not be able to enter the state.
*/
@@ -7808,7 +7808,7 @@ It was unregistered and not be able to enter the state.
현재 입장 ì‹ ì²­ ìƒíƒœìž…니다.
20091006 to 20100810
-20100817 to 20180621
+20100817 to 20180711
Current admission application state.
*/
@@ -7817,7 +7817,7 @@ Current admission application state.
입장 ì‹ ì²­ì„ ì·¨ì†Œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?
20091006 to 20100616
%s 전장 ì‹ ì²­ì„ ì •ë§ë¡œ 취소하시겠습니까?
-20100622 to 20180621
+20100622 to 20180711
í™•ì¸ ë‹¨ì¶”ë¥¼ 누르면 전장 ì‹ ì²­ì´ ì·¨ì†Œë©ë‹ˆë‹¤. 아래 단추를 í´ë¦­í•´ 주세요.
Do you want to cancel the admission application?
*/
@@ -7826,109 +7826,109 @@ Do you want to cancel the admission application?
전장 - [%s] 입장 ì‹ ì²­ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
20090722 to 20090929
입장 ì‹ ì²­ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
-20091006 to 20180621
+20091006 to 20180711
%s 전장 입장 ì‹ ì²­ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
Admission request has been cancelled.
*/
MSG_CANCEL_JOINTO_BATTLEFIELD = 0x609,
/*20090617 to 20090929
곧 전장으로 ì´ë™ 합니다.
-20091006 to 20180621
+20091006 to 20180711
잠시후 %s 전장으로 ì´ë™ 합니다. 공간 ì´ë™ì„ 위한 안정ì ì¸ ìƒíƒœë¥¼ 확보해 주시길 ë°”ëžë‹ˆë‹¤. (거래 ë° ê³µê°„ ì´ë™ 기능 ì¼ì‹œ 중지ë¨)
Go to the battlefield quickly.
*/
MSG_MOVETO_BATTLEFIELD = 0x60a,
/*20090617 to 20091028
전장 - [%s]
-20091103 to 20180621
+20091103 to 20180711
전장 명칭
Battlefield - [%s]
*/
MSG_BATTLEFIELD_NAME = 0x60b,
#endif
#if PACKETVER >= 20090624
-/*20090624 to 20180621
+/*20090624 to 20180711
ì •ë§ ì´ë™ 하시겠습니까?
Do you really want to go back to your savepoint?
*/
MSG_MOVETO_SAVEPOINT = 0x60c,
-/*20090624 to 20180621
+/*20090624 to 20180711
íŒŒí‹°ì› ì°¾ê¸° 메세지
Search Message for Party Members
*/
MSG_VIEW_SEEK_PARTY = 0x60d,
-/*20090624 to 20180621
+/*20090624 to 20180711
íŒŒí‹°ì› ì°¾ê¸° 메세지 ì˜µì…˜ì´ êº¼ì ¸ìžˆìŠµë‹ˆë‹¤.
Message option is off the search party members.
*/
MSG_UNVIEW_SEEK_PARTY = 0x60e,
-/*20090624 to 20180621
+/*20090624 to 20180711
10초간 파티 ì§€ì› ë”œë ˆì´ê°€ 걸려있습니다.
10 seconds delay of party support is in effect
*/
MSG_SEEK_PARTY_DEALY = 0x60f,
#endif
#if PACKETVER >= 20090701
-/*20090701 to 20180621
+/*20090701 to 20180711
íŒŒí‹°ìž¥ì€ '%s' 님 입니다.
Party leader is '%s'.
*/
MSG_NOTIFY_PARTY_ROLE_MASTER = 0x610,
/*20090701 to 20090715
전장 - [%s] : 시스템 오류로 입장 할 수 없습니다.
-20090722 to 20180621
+20090722 to 20180711
시스템 오류로 입장 할 수 없습니다.
Unable to enter due to system error.
*/
MSG_ERROR_SYSTEM_ERROR_BATTLEFIELD = 0x611,
/*20090701 to 20090715
전장 - [%s] : 대기 ì¸ì› 수 초과로 입장 í•  수 없습니다.
-20090722 to 20180621
+20090722 to 20180711
대기 ì¸ì› 수 초과로 입장 í•  수 없습니다.
Cannot wait to enter the number of excess.
*/
MSG_ERROR_FULL_ESROOM_BATTLEFIELD = 0x612,
/*20090701 to 20090715
전장 - [%s] : ì´ë¯¸ ì‹ ì²­ ë˜ì—ˆìŠµë‹ˆë‹¤.
-20090722 to 20180621
+20090722 to 20180711
ì´ë¯¸ ì‹ ì²­ ë˜ì—ˆìŠµë‹ˆë‹¤.
Has already been applied.
*/
MSG_ERROR_DOUBLE_OFFER_BATTLEFIELD = 0x613,
/*20090701 to 20090715
전장 - [%s] : 대기 ì‹œê°„ì´ ì´ˆê³¼ë˜ì–´ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20090722 to 20180621
+20090722 to 20180711
대기 ì‹œê°„ì´ ì´ˆê³¼ë˜ì–´ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
Registration has been cancelled because of the excessive waiting time.
*/
MSG_ERROR_WAIT_TIMEOUT_BATTLEFIELD = 0x614,
/*20090701 to 20090715
전장 - [%s] : 입장 ì¡°ê±´ì´ ë§žì§€ ì•Šì•„, 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20090722 to 20180621
+20090722 to 20180711
입장 ì¡°ê±´ì´ ë§žì§€ ì•Šì•„, 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
Unregistered because admission requirements are not matching.
*/
MSG_ERROR_BATTLEFILD_ENTER_BATTLEFIELD = 0x615,
/*20090701 to 20090715
전장 - [%s] : 오류가 ë°œìƒí•˜ì—¬ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20090722 to 20180621
+20090722 to 20180711
오류가 ë°œìƒí•˜ì—¬ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
Was unregistered and error.
*/
MSG_ERROR_DROP_ENTRANCESTATION_BATTLEFIELD = 0x616,
#endif
#if PACKETVER >= 20090708
-/*20090708 to 20180621
+/*20090708 to 20180711
[%s]ì˜ ì—°ê³„ 스킬입니다.
The skill need [%s].
*/
MSG_USESKILL_FAIL_COMBOSKILL = 0x617,
-/*20090708 to 20180621
+/*20090708 to 20180711
특정스킬 ì˜ ì—°ê³„ 스킬입니다.
The skill need a particular skill.
*/
MSG_USESKILL_FAIL_COMBOSKILL2 = 0x618,
-/*20090708 to 20180621
+/*20090708 to 20180711
기구체 %d 개가 필요합니다
Requires %d mind bullets
*/
@@ -7936,98 +7936,98 @@ Requires %d mind bullets
/*20090708 to 20090708
기구체 %d 개가 필요합니다
Requires %d mind bullets
-20090715 to 20180621
+20090715 to 20180711
기구체가 필요합니다
Mind Bullet is required.
*/
MSG_USESKILL_FAIL_SPIRITS2 = 0x61a,
#endif
#if PACKETVER >= 20090729
-/*20090729 to 20180621
+/*20090729 to 20180711
최대 소지량 보다 ë§Žì€ ë£¬ìŠ¤í†¤ì„ ì œìž‘í•  수 없습니다.
Cannot create rune stone more than the maximum amount.
*/
MSG_RUNESTONE_MAKEERROR_OVERCOUNT = 0x61b,
-/*20090729 to 20180621
+/*20090729 to 20180711
전장 리스트를 ë°›ì„ ìˆ˜ 없는 ìƒíƒœìž…니다. í™•ì¸ í›„ 다시 ì‹œë„ í•´ 주세요.
Not able to receive battle field list. Please check and try again
*/
MSG_ERROR_LIST_OPEN_BATTLEFIELD = 0x61c,
-/*20090729 to 20180621
+/*20090729 to 20180711
ë ˆë²¨ì´ ë¶€ì¡±í•˜ì—¬ 입장 í•  수 없습니다.
Level is not high enough to enter
*/
MSG_ERROR_LEVEL_LIMIT_BATTLEFIELD = 0x61d,
#endif
#if PACKETVER >= 20090805
-/*20090805 to 20180621
+/*20090805 to 20180711
1ì°¨ ì§ì—… 스킬 %d개를 ë” ì˜¬ë ¤ 주십시오.
You must consume all '%d' points in your 1st Tab.
*/
MSG_UPGRADESKILLERROR_MORE_FIRSTJOBSKILL = 0x61e,
#endif
#if PACKETVER >= 20091013
-/*20091013 to 20180621
+/*20091013 to 20180711
1ì°¨ í˜¹ì€ 2ì°¨ ì§ì—… 스킬 %d개를 ë” ì˜¬ë ¤ 주십시오.
You must consume all '%d' remaining points in your 2nd Tab. 1st Tab is already done.
*/
MSG_UPGRADESKILLERROR_MORE_SECONDJOBSKILL = 0x61f,
-/*20091013 to 20180621
+/*20091013 to 20180711
변환 가능한 ì•„ì´í…œ
Items available for conversion
*/
MSG_ITEMSYOUCANCHANGE = 0x620,
-/*20091013 to 20180621
+/*20091013 to 20180711
변환할 ì•„ì´í…œ
Insert items to convert
*/
MSG_ITEMS_FOR_CHANGE = 0x621,
-/*20091013 to 20180621
+/*20091013 to 20180711
ë³€í™˜ì´ ë¶ˆê°€ëŠ¥í•œ ì¡°í•© 입니다.
Inconvertible combination
*/
MSG_SKILL_RECIPE_NOTEXIST = 0x622,
-/*20091013 to 20180621
+/*20091013 to 20180711
ì¸ë²¤í† ë¦¬ì˜ 무게가 너무 무ê²ìŠµë‹ˆë‹¤.
Inventory weight is too much
*/
MSG_SKILL_INVENTORY_WEIGHT_OVER = 0x623,
-/*20091013 to 20180621
+/*20091013 to 20180711
ì¸ë²¤í† ë¦¬ë¥¼ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
Please secure some room in the inventory
*/
MSG_SKILL_INVENTORY_KINDCNT_OVER = 0x624,
-/*20091013 to 20180621
+/*20091013 to 20180711
재료가 존재하지 않습니다.
Material doesn't exist
*/
MSG_SKILL_MATERIAL_FAIL = 0x625,
-/*20091013 to 20180621
+/*20091013 to 20180711
성공하였습니다.
Successful.
*/
MSG_SKILL_SUCCESS = 0x626,
-/*20091013 to 20180621
+/*20091013 to 20180711
실패 하였습니다.
Failed.
*/
MSG_SKILL_FAIL = 0x627,
-/*20091013 to 20180621
+/*20091013 to 20180711
실패하여 모든 재료가 사ë¼ì¡ŒìŠµë‹ˆë‹¤.
all materials are gone due to failure
*/
MSG_SKILL_FAIL_MATERIAL_DESTROY = 0x628,
-/*20091013 to 20180621
+/*20091013 to 20180711
지정하신 탭 ì´ë¦„ì´ ë„ˆë¬´ 길어 변경 í•  수 없습니다.
unable to change the name of the specified tab, because it's too long.
*/
MSG_FAILED_CHANGE_TABNAME = 0x629,
-/*20091013 to 20180621
+/*20091013 to 20180711
ë” ì´ìƒ 추가 í•  수 없습니다.
Cannot add more.
*/
MSG_FAILED_ADD_TAB = 0x62a,
-/*20091013 to 20180621
+/*20091013 to 20180711
ì¸ì¦ì— 실패 했습니다.
Authentication failed.
*/
@@ -8036,472 +8036,472 @@ Authentication failed.
ë´‡ ì²´í¬
20101019 to 20101020
ìžë™ ë¡œê·¸ì¸ ë°©ì§€
-20101026 to 20180621
+20101026 to 20180711
ìžë™ ìž…ë ¥ 방지
Bot checks
*/
MSG_BOT_CHECK = 0x62c,
-/*20091013 to 20180621
+/*20091013 to 20180711
ê°ì •ì´ ì•Šëœ ì•„ì´í…œì€ 재료로 사용할 수 없습니다.
Items cannot be used in materials cannot be emotional.
*/
MSG_SKILL_FAIL_MATERIAL_IDENTITY = 0x62d,
-/*20091013 to 20180621
+/*20091013 to 20180711
ì ‘ì†í•˜ì‹  IP는 ë¼ê·¸ë‚˜ë¡œí¬ 온ë¼ì¸ ì´ìš©ì´ 불가능 합니다. ê³ ê° ì§€ì› ì„¼í„° ë˜ëŠ” 홈페ì´ì§€ë¡œ ë¬¸ì˜ í•´ 주십시오.
It is impossible to connect using this IP in Ragnarok Online. Please contact the customer support center or home.
*/
MSG_BAN_IP_BLOCK = 0x62e,
-/*20091013 to 20180621
+/*20091013 to 20180711
비밀번호가 6회 ì´ìƒ 잘못 ìž…ë ¥ë˜ì–´ ìž ì‹œ ë™ì•ˆ ì ‘ì†ì´ 제한ë©ë‹ˆë‹¤. ê³ ê°ë‹˜ì˜ ê°œì¸ì •ë³´ë¥¼ 다시 í•œ 번 확ì¸í•´ 주시길 ë°”ëžë‹ˆë‹¤.
You have entered a wrong password for more than six times, please check your personal information again.
*/
MSG_BAN_INVALID_PWD_CNT = 0x62f,
-/*20091013 to 20180621
+/*20091013 to 20180711
í•©ì„±ì— ì‚¬ìš©í•œ ì•„ì´í…œì€ 소모ë©ë‹ˆë‹¤. 괜찮겠습니까?
Consumption items are used in the synthesis. Are you sure?
*/
MSG_MIX_ACCEPT = 0x630,
-/*20091013 to 20180621
+/*20091013 to 20180711
ì™¼ìª½ì— ë³´ì´ëŠ” ê¸€ìž ë° ìˆ«ìžì¡°í•©ì„ 입력해주세요.
Please input the captcha code found at your left side.
*/
MSG_BOT_CHECK_NOTIC = 0x631,
-/*20091013 to 20180621
+/*20091013 to 20180711
전장 설명 -
Describes the battlefield --
*/
MSG_DESCRIBE_BATTLEFIELD = 0x632,
-/*20091013 to 20180621
+/*20091013 to 20180711
입장 대기 ìƒíƒœ -
Waiting for admission --
*/
MSG_BATTLEFIELD_STATUS = 0x633,
-/*20091013 to 20180621
+/*20091013 to 20180711
전장 입장 ì‹ ì²­ ë„움ë§
Request help battle position
*/
MSG_BATTLEFIELD_HELP = 0x634,
#endif
#if PACKETVER >= 20091020
-/*20091020 to 20180621
+/*20091020 to 20180711
죄송합니다. 해당 ì§ì—…ì˜ ìºë¦­í„°ëŠ” 현재 테스트를 위해서 ì ‘ì†ì´ 금지ë©ë‹ˆë‹¤.
Sorry the character you are trying to use is banned for testing connection.
*/
MSG_BAN_NOT_ALLOWED_JOBCLASS = 0x635,
#endif
#if PACKETVER >= 20091027
-/*20091027 to 20180621
+/*20091027 to 20180711
모든 장비 해제
Remove all equipment
*/
MSG_REMOVE_EQUIPEDITEM = 0x636,
#endif
#if PACKETVER >= 20091103
-/*20091103 to 20180621
+/*20091103 to 20180711
미니 ì•„ì´ì½˜
Mini Icon
*/
MSG_MINI_ICON = 0x637,
-/*20091103 to 20180621
+/*20091103 to 20180711
ì§„ì˜ A : ì§„ì˜ B
Camp A: Camp B
*/
MSG_BATTLEFIELD_TEAM = 0x638,
/*20091103 to 20100616
대기 ìƒíƒœ
-20100622 to 20180621
+20100622 to 20180711
대기열
Wait
*/
MSG_WAIT_STATUS = 0x639,
-/*20091103 to 20180621
+/*20091103 to 20180711
전장 신청 취소 알림
cancellation notice of Battlefield registration.
*/
MSG_NOTIFY_BATTLEFIELD_CANCEL = 0x63a,
-/*20091103 to 20180621
+/*20091103 to 20180711
전장 í•„ìš” ì¸ì›
Required field for staff
*/
MSG_BATTLEFIELD_COUNT = 0x63b,
-/*20091103 to 20180621
+/*20091103 to 20180711
전장 A 대기 ì¸ì›
Battlefield staff A is waiting.
*/
MSG_BATTLEFIELD_ATEAM_COUNT = 0x63c,
-/*20091103 to 20180621
+/*20091103 to 20180711
전장 B 대기 ì¸ì›
Battlefield staff B is waiting.
*/
MSG_BATTLEFIELD_BTEAM_COUNT = 0x63d,
-/*20091103 to 20180621
+/*20091103 to 20180711
ë‚´ 대기 ìƒí™© : %d(ì§„ì˜ A)
Waiting for my situation: %d (Camp A)
*/
MSG_BATTLEFIELD_ATEAM_WAIT = 0x63e,
-/*20091103 to 20180621
+/*20091103 to 20180711
ë‚´ 대기 ìƒí™© : %d(ì§„ì˜ B)
Waiting for my situation: %d (Camp B)
*/
MSG_BATTLEFIELD_BTEAM_WAIT = 0x63f,
-/*20091103 to 20180621
+/*20091103 to 20180711
전장 ì•„ì´ì½˜ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
Battlefield display icon.
*/
MSG_SHOW_BATTLEFIELD_ICON = 0x640,
-/*20091103 to 20180621
+/*20091103 to 20180711
전장 ì•„ì´ì½˜ì„ 보여주지 않습니다.
Does not display the icon field.
*/
MSG_DONT_SHOW_BATTLEFIELD_ICON = 0x641,
-/*20091103 to 20180621
+/*20091103 to 20180711
전장 ì´ë™ 알림
Field notification was moved.
*/
MSG_NOTIFY_BATTLEFIELD_MOVE = 0x642,
-/*20091103 to 20180621
+/*20091103 to 20180711
전장 입장 보류 알림
Admission pending notification of the battlefield
*/
MSG_NOTIFY_BATTLEFIELD_DEFER = 0x643,
-/*20091103 to 20180621
+/*20091103 to 20180711
누군가
Anyone
*/
MSG_WHO_IS = 0x644,
-/*20091103 to 20180621
+/*20091103 to 20180711
[%s](으)로부터 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 받았습니다.
[%s] deal '%d' damage on you.
*/
MSG_I_RECEIVED_DAMAGE = 0x645,
/*20091103 to 20091104
[%s]ê°€ [%s](으)로부터 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 받았습니다.
-20091110 to 20180621
+20091110 to 20180711
[%s]ë‹˜ì´ [%s](으)로부터 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 받았습니다.
[%s] received damage from [%s] with '%d' damage.
*/
MSG_PARTY_RECEIVED_DAMAGE = 0x646,
-/*20091103 to 20180621
+/*20091103 to 20180711
[%s]ì—게 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 주었습니다.
[%s] received '%d' damage.
*/
MSG_I_GAVE_DAMAGE = 0x647,
/*20091103 to 20091104
[%s님]ê°€ [%s]ì—게 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 주었습니다.
-20091110 to 20180621
+20091110 to 20180711
[%s]ë‹˜ì´ [%s]ì—게 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 주었습니다.
[%s] deal damage to [%s] with '%d' damage.
*/
MSG_PARTY_GAVE_DAMAGE = 0x648,
-/*20091103 to 20180621
+/*20091103 to 20180711
%s %d 개 드롭
You dropped '%s' (%d).
*/
MSG_DROP_ITEM = 0x649,
-/*20091103 to 20180621
+/*20091103 to 20180711
[%s]í€˜ìŠ¤íŠ¸ì˜ [%s]몬스터를 처치하였습니다. (%d/%d)
[%s] Quest - defeated [%s] progress (%d/%d)
*/
MSG_CLEAR_QUEST_MONSTER = 0x64a,
-/*20091103 to 20180621
+/*20091103 to 20180711
%s 퀘스트가 ì‚­ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
The Quest '%s' has been removed.
*/
MSG_DELETE_QUEST = 0x64b,
-/*20091103 to 20180621
+/*20091103 to 20180711
[%s]님ì´
[%s] has
*/
MSG_NOTIFY_WHO = 0x64c,
-/*20091103 to 20180621
+/*20091103 to 20180711
'%d'ì˜ ê²½í—˜ì¹˜ë¥¼
You acquired '%d' Experience Points
*/
MSG_NOTIFY_EXP = 0x64d,
-/*20091103 to 20180621
+/*20091103 to 20180711
'%d'ì˜ ìž¡ê²½í—˜ì¹˜ë¥¼
You acquired '%d' Job Experience Points
*/
MSG_NOTIFY_JOBEXP = 0x64e,
-/*20091103 to 20180621
+/*20091103 to 20180711
íšë“했습니다.
gained.
*/
MSG_GET = 0x64f,
-/*20091103 to 20180621
+/*20091103 to 20180711
ìƒì‹¤í–ˆìŠµë‹ˆë‹¤.
has lost.
*/
MSG_LOSS = 0x650,
-/*20091103 to 20180621
+/*20091103 to 20180711
[%s](으)로부터 '%d'ì˜ ì½”ì¸ì„ 스틸했습니다.
From [%s], '%d' coins were stolen.
*/
MSG_NOTIFY_STEAL_COIN = 0x651,
-/*20091103 to 20180621
+/*20091103 to 20180711
전투 메시지
Battle Message
*/
MSG_VIEW_COMBAT_MSG = 0x652,
-/*20091103 to 20180621
+/*20091103 to 20180711
íŒŒí‹°ì› ì „íˆ¬ 메시지
Display Party Battle Message
*/
MSG_VIEW_PARTY_COMBAT_MSG = 0x653,
-/*20091103 to 20180621
+/*20091103 to 20180711
íšë“ 경험치
Display Experience Message
*/
MSG_VIEW_GETTING_EXP_MSG = 0x654,
-/*20091103 to 20180621
+/*20091103 to 20180711
파티ì›ì˜ íšë“ 경험치
Display Party Experience Message
*/
MSG_VIEW_PARTY_GETTING_EXP_MSG = 0x655,
-/*20091103 to 20180621
+/*20091103 to 20180711
퀘스트 정보 표시
Display Quest Info Message
*/
MSG_VIEW_QUEST_INFO_MSG = 0x656,
-/*20091103 to 20180621
+/*20091103 to 20180711
전장 정보 표시
Display Battlefield Message
*/
MSG_VIEW_BATTLEFIELD_INFO_MSG = 0x657,
#endif
#if PACKETVER >= 20091104
-/*20091104 to 20180621
+/*20091104 to 20180711
[%s]ì—게
[%s]
*/
MSG_NOTIFY_TARGET_WHO = 0x658,
/*20091104 to 20091104
[%s] ìŠ¤í‚¬ì„ ìºìŠ¤íŒ…합니다.
-20091110 to 20180621
+20091110 to 20180711
[%s] ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
Casts [%s] skill.
*/
MSG_NOTIFY_SKILL_TO_TARGET = 0x659,
#endif
#if PACKETVER >= 20091110
-/*20091110 to 20180621
+/*20091110 to 20180711
기능제한ìƒíƒœ
Activate lock function
*/
MSG_LOCK_MOUSE = 0x65a,
-/*20091110 to 20180621
+/*20091110 to 20180711
기능제한해제ìƒíƒœ
Deactivate lock function
*/
MSG_UNLOCK_MOUSE = 0x65b,
#endif
#if PACKETVER >= 20091201
-/*20091201 to 20180621
+/*20091201 to 20180711
[%s]ë‹˜ì´ [%s](으)로부터 '%s' 를 íšë“ 했습니다.
Citizens of Midgard, Lady Luck shines upon [%s] !! [%s] has awarded the player with '%s' !!
*/
MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN = 0x65c,
#endif
#if PACKETVER >= 20091208
-/*20091208 to 20180621
+/*20091208 to 20180711
소드맨
Swordman
*/
MSG_JOB_SWORDMAN = 0x65d,
-/*20091208 to 20180621
+/*20091208 to 20180711
매지션
Magician
*/
MSG_JOB_MAGICIAN = 0x65e,
-/*20091208 to 20180621
+/*20091208 to 20180711
아처
Archer
*/
MSG_JOB_ARCHER = 0x65f,
-/*20091208 to 20180621
+/*20091208 to 20180711
어콜ë¼ì´íŠ¸
Acolyte
*/
MSG_JOB_ACOLYTE = 0x660,
-/*20091208 to 20180621
+/*20091208 to 20180711
머첸트
Merchant
*/
MSG_JOB_MERCHANT = 0x661,
-/*20091208 to 20180621
+/*20091208 to 20180711
씨프
Thief
*/
MSG_JOB_THIEF = 0x662,
-/*20091208 to 20180621
+/*20091208 to 20180711
나ì´íŠ¸
Knight
*/
MSG_JOB_KNIGHT = 0x663,
-/*20091208 to 20180621
+/*20091208 to 20180711
프리스트
Priest
*/
MSG_JOB_PRIEST = 0x664,
-/*20091208 to 20180621
+/*20091208 to 20180711
위저드
Wizard
*/
MSG_JOB_WIZARD = 0x665,
-/*20091208 to 20180621
+/*20091208 to 20180711
블랙스미스
Black Smith
*/
MSG_JOB_BLACKSMITH = 0x666,
-/*20091208 to 20180621
+/*20091208 to 20180711
헌터
Hunter
*/
MSG_JOB_HUNTER = 0x667,
-/*20091208 to 20180621
+/*20091208 to 20180711
어새신
Assasin
*/
MSG_JOB_ASSASSIN = 0x668,
-/*20091208 to 20180621
+/*20091208 to 20180711
í¬ë£¨ì„¸ì´ë”
Crusader
*/
MSG_JOB_CRUSADER = 0x669,
-/*20091208 to 20180621
+/*20091208 to 20180711
몽í¬
Monk
*/
MSG_JOB_MONK = 0x66a,
-/*20091208 to 20180621
+/*20091208 to 20180711
세ì´ì§€
Sage
*/
MSG_JOB_SAGE = 0x66b,
-/*20091208 to 20180621
+/*20091208 to 20180711
로그
Rogue
*/
MSG_JOB_ROGUE = 0x66c,
-/*20091208 to 20180621
+/*20091208 to 20180711
알케미스트
Alchemist
*/
MSG_JOB_ALCHEMIST = 0x66d,
-/*20091208 to 20180621
+/*20091208 to 20180711
바드
Bard
*/
MSG_JOB_BARD = 0x66e,
-/*20091208 to 20180621
+/*20091208 to 20180711
댄서
Dancer
*/
MSG_JOB_DANCER = 0x66f,
/*20091208 to 20100310
룬나ì´íŠ¸
-20100316 to 20180621
+20100316 to 20180711
룬 나ì´íŠ¸
Rune Knight
*/
MSG_JOB_RUNE_KNIGHT = 0x670,
-/*20091208 to 20180621
+/*20091208 to 20180711
워ë¡
Warlock
*/
MSG_JOB_WARLOCK = 0x671,
-/*20091208 to 20180621
+/*20091208 to 20180711
ë ˆì¸ì ¸
Ranger
*/
MSG_JOB_RANGER = 0x672,
/*20091208 to 20100310
ì•„í¬ë¹„ìˆ
-20100316 to 20180621
+20100316 to 20180711
ì•„í¬ ë¹„ìˆ
Arc Bishop
*/
MSG_JOB_ARCHBISHOP = 0x673,
-/*20091208 to 20180621
+/*20091208 to 20180711
미케닉
Mechanic
*/
MSG_JOB_MECHANIC = 0x674,
/*20091208 to 20100310
길로틴í¬ë¡œìŠ¤
-20100316 to 20180621
+20100316 to 20180711
길로틴 í¬ë¡œìŠ¤
Guillotine Cross
*/
MSG_JOB_GUILLOTINE_CROSS = 0x675,
-/*20091208 to 20180621
+/*20091208 to 20180711
로얄가드
Royal Guard
*/
MSG_JOB_ROYAL_GUARD = 0x676,
-/*20091208 to 20180621
+/*20091208 to 20180711
소서러
Sorcerer
*/
MSG_JOB_SORCERER = 0x677,
-/*20091208 to 20180621
+/*20091208 to 20180711
민스트럴
Minstrel
*/
MSG_JOB_MINSTREL = 0x678,
-/*20091208 to 20180621
+/*20091208 to 20180711
ì›ë”러
Wanderer
*/
MSG_JOB_WANDERER = 0x679,
-/*20091208 to 20180621
+/*20091208 to 20180711
수ë¼
Sura
*/
MSG_JOB_SURA = 0x67a,
-/*20091208 to 20180621
+/*20091208 to 20180711
제네릭
Genetic
*/
MSG_JOB_GENETIC = 0x67b,
/*20091208 to 20100310
ì‰ë„ìš°ì²´ì´ì„œ
-20100316 to 20180621
+20100316 to 20180711
ì‰ë„ìš° ì²´ì´ì„œ
Shadow Chaser
*/
MSG_JOB_SHADOW_CHASER = 0x67c,
/*20091208 to 20100113
소드맨_하ì´
-20100119 to 20180621
+20100119 to 20180711
소드맨 하ì´
High Swordman
*/
MSG_JOB_SWORDMAN_H = 0x67d,
/*20091208 to 20100113
매지션_하ì´
-20100119 to 20180621
+20100119 to 20180711
매지션 하ì´
High Magician
*/
MSG_JOB_MAGICIAN_H = 0x67e,
/*20091208 to 20100113
아처_하ì´
-20100119 to 20180621
+20100119 to 20180711
아처 하ì´
High Archer
*/
MSG_JOB_ARCHER_H = 0x67f,
/*20091208 to 20100113
어콜ë¼ì´íŠ¸_하ì´
-20100119 to 20180621
+20100119 to 20180711
어콜ë¼ì´íŠ¸ 하ì´
High Acolyte
*/
MSG_JOB_ACOLYTE_H = 0x680,
/*20091208 to 20100113
머첸트_하ì´
-20100119 to 20180621
+20100119 to 20180711
머첸트 하ì´
High Merchant
*/
@@ -8510,97 +8510,97 @@ High Merchant
시프_하ì´
20100119 to 20100223
시프 하ì´
-20100302 to 20180621
+20100302 to 20180711
씨프 하ì´
High Thief
*/
MSG_JOB_THIEF_H = 0x682,
-/*20091208 to 20180621
+/*20091208 to 20180711
로드나ì´íŠ¸
Lord Knight
*/
MSG_JOB_KNIGHT_H = 0x683,
-/*20091208 to 20180621
+/*20091208 to 20180711
하ì´í”„리스트
High Priest
*/
MSG_JOB_PRIEST_H = 0x684,
-/*20091208 to 20180621
+/*20091208 to 20180711
하ì´ìœ„저드
High Wizard
*/
MSG_JOB_WIZARD_H = 0x685,
-/*20091208 to 20180621
+/*20091208 to 20180711
í™”ì´íŠ¸ìŠ¤ë¯¸ìŠ¤
White Smith
*/
MSG_JOB_BLACKSMITH_H = 0x686,
-/*20091208 to 20180621
+/*20091208 to 20180711
스나ì´í¼
Sniper
*/
MSG_JOB_HUNTER_H = 0x687,
-/*20091208 to 20180621
+/*20091208 to 20180711
어새신í¬ë¡œìŠ¤
Assasin Cross
*/
MSG_JOB_ASSASSIN_H = 0x688,
-/*20091208 to 20180621
+/*20091208 to 20180711
팔ë¼ë”˜
Paladin
*/
MSG_JOB_CRUSADER_H = 0x689,
-/*20091208 to 20180621
+/*20091208 to 20180711
챔피온
Champion
*/
MSG_JOB_MONK_H = 0x68a,
-/*20091208 to 20180621
+/*20091208 to 20180711
프로페서
Professor
*/
MSG_JOB_SAGE_H = 0x68b,
-/*20091208 to 20180621
+/*20091208 to 20180711
스토커
Stalker
*/
MSG_JOB_ROGUE_H = 0x68c,
-/*20091208 to 20180621
+/*20091208 to 20180711
í¬ë¦¬ì—ì´í„°
Creator
*/
MSG_JOB_ALCHEMIST_H = 0x68d,
-/*20091208 to 20180621
+/*20091208 to 20180711
í´ë¡œìš´
Clown
*/
MSG_JOB_BARD_H = 0x68e,
-/*20091208 to 20180621
+/*20091208 to 20180711
집시
Gypsy
*/
MSG_JOB_DANCER_H = 0x68f,
-/*20091208 to 20180621
+/*20091208 to 20180711
노비스
Wedding
*/
MSG_JOB_NOVICE = 0x690,
-/*20091208 to 20180621
+/*20091208 to 20180711
하ì´ë…¸ë¹„스
High Novice
*/
MSG_JOB_NOVICE_H = 0x691,
-/*20091208 to 20180621
+/*20091208 to 20180711
슈í¼ë…¸ë¹„스
Super Novice
*/
MSG_JOB_SUPERNOVICE = 0x692,
-/*20091208 to 20180621
+/*20091208 to 20180711
건슬ë§ê±°
Gunslinger
*/
MSG_JOB_GUNSLINGER = 0x693,
-/*20091208 to 20180621
+/*20091208 to 20180711
ë‹Œìž
Ninja
*/
@@ -8609,227 +8609,227 @@ Ninja
태권소녀,태권소년
20100112 to 20100310
태권소년소녀
-20100316 to 20180621
+20100316 to 20180711
태권소년/소녀
Taekwon F/M
*/
MSG_JOB_TAEKWON = 0x695,
-/*20091208 to 20180621
+/*20091208 to 20180711
권성
Star Gladiator
*/
MSG_JOB_STAR = 0x696,
-/*20091208 to 20180621
+/*20091208 to 20180711
소울ë§ì»¤
Soul Linker
*/
MSG_JOB_LINKER = 0x697,
-/*20091208 to 20180621
+/*20091208 to 20180711
파티모집
Party Recruitment
*/
MSG_SEEK_PARTY_MEMBER = 0x698,
/*20091208 to 20100310
파티 부킹 리스트
-20100316 to 20180621
+20100316 to 20180711
파티 모집 리스트
Party Booking List
*/
MSG_SEEK_PARTY_LIST = 0x699,
-/*20091208 to 20180621
+/*20091208 to 20180711
파티 모집 중
Recruiting Party
*/
MSG_SEEK_PARTY_CHECK = 0x69a,
#endif
#if PACKETVER >= 20091215
-/*20091215 to 20180621
+/*20091215 to 20180711
[활]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Bow] must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_BOW = 0x69b,
-/*20091215 to 20180621
+/*20091215 to 20180711
[악기/채ì°]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Musical Instrument/Whip] must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_INSTRUMENT_WHIP = 0x69c,
-/*20091215 to 20180621
+/*20091215 to 20180711
ì˜ë¬¸ê³¼ 숫ìžë§Œ 사용가능합니다.
Only alphanumeric characters are allowed.
*/
MSG_BAD_CHAR = 0x69d,
-/*20091215 to 20180621
+/*20091215 to 20180711
알림
Notice
*/
MSG_ALRAM = 0x69e,
-/*20091215 to 20180621
+/*20091215 to 20180711
ìƒì  ì •ë³´ê°€ 정확하지 ì•Šì•„ ì•„ì´í…œ 구매가 실패하였습니다.
Item purchase failed due to incorrect shop information.
*/
MSG_FAIL_BUY_ITEM_INVALID_MCSTORE = 0x69f,
#endif
#if PACKETVER >= 20100105
-/*20100105 to 20180621
+/*20100105 to 20180711
소지 ì•„ì´í…œ ì°½ì—ì„œ 버릴 수 있습니다.
Item cannot be discarded from the window.
*/
MSG_CAN_DROP_ITEM_TO_ITEMWND = 0x6a0,
#endif
#if PACKETVER >= 20100112
-/*20100112 to 20180621
+/*20100112 to 20180711
시간
Time
*/
MSG_TIME = 0x6a1,
-/*20100112 to 20180621
+/*20100112 to 20180711
맵
Map
*/
MSG_MAP = 0x6a2,
-/*20100112 to 20180621
+/*20100112 to 20180711
거래 ìƒíƒœì—서는 ì•„ì´í…œ 사용 ë° ìž¥ë¹„ ì°©ìš©/해제를 í•  수 없습니다.
You can't use, equip or disarm items when you're trading.
*/
MSG_CANT_USE_WHEN_OPENED_EXCHANGEWND = 0x6a3,
-/*20100112 to 20180621
+/*20100112 to 20180711
미지정값
Unspecified value
*/
MSG_HOTKEY_UNKOWN = 0x6a4,
#endif
#if PACKETVER >= 20100126
-/*20100126 to 20180621
+/*20100126 to 20180711
/stateinfo : ìƒíƒœ ì•„ì´ì½˜ì— 대한 ì„¤ëª…ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. On Off
/stateinfo: Shows the description of status icons. On Off
*/
MSG_EXPLAIN_STATEINFO = 0x6a5,
-/*20100126 to 20180621
+/*20100126 to 20180711
ìƒíƒœ ì •ë³´ On : ìƒíƒœ ì•„ì´ì½˜ì— 대한 ì„¤ëª…ì´ í‘œì‹œë©ë‹ˆë‹¤.
Status Information On: Status icon description is enabled.
*/
MSG_SHOW_STATEINFO_ON = 0x6a6,
-/*20100126 to 20180621
+/*20100126 to 20180711
ìƒíƒœ ì •ë³´ Off: ìƒíƒœ ì•„ì´ì½˜ì— 대한 ì„¤ëª…ì´ í‘œì‹œë˜ì§€ 않습니다.
Status Information Off: Status icon description is disabled.
*/
MSG_SHOW_STATEINFO_OFF = 0x6a7,
/*20100126 to 20100126
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— %dê°œ ì´ìƒì€ 살수 없습니다.
-20100202 to 20180621
+20100202 to 20180711
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— %dê°œ ì´ìƒì€ ì‚´ 수 없습니다.
It is not possible to purchase the same item more than %d pieces at a time
*/
MSG_LIMIT_BUY_ITEM2 = 0x6a8,
#endif
#if PACKETVER >= 20100202
-/*20100202 to 20180621
+/*20100202 to 20180711
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— %dê°œ ì´ìƒì€ 팔 수 없습니다.
It is not possible to purchase the same item more than %d pieces at a time
*/
MSG_LIMIT_SELL_ITEM = 0x6a9,
/*20100202 to 20100203
ì´ êµ¬ë§¤ 가능 개수는 %dê°œ 입니다.
-20100209 to 20180621
+20100209 to 20180711
해당 ì•„ì´í…œì˜ ì´ êµ¬ë§¤ 가능 개수는 %dê°œ 입니다.
Can purchase upto %d pieces of the same item at a time.
*/
MSG_CAN_BUY_ITEM_NUM = 0x6aa,
#endif
#if PACKETVER >= 20100209
-/*20100209 to 20180621
+/*20100209 to 20180711
설정한 ë‚´ìš©ì€ ì •ìƒ ì¢…ë£Œ ì‹œ [%s\%s]ì— ì €ìž¥ë©ë‹ˆë‹¤.
User customized key is saved to [%s\%s]
*/
MSG_SAVE_HOTKEY_TO_FILE = 0x6ab,
#endif
#if PACKETVER >= 20100216
-/*20100216 to 20180621
+/*20100216 to 20180711
[%s] ë‹˜ì€ í˜„ìž¬ êµí™˜ ì‹ ì²­ì„ ë°›ì„ ìˆ˜ 없는 ìƒíƒœìž…니다.
[%s] is currently on trade and cannot accept the request.
*/
MSG_CHARACTER_IS_BUSY = 0x6ac,
#endif
#if PACKETVER >= 20100309
-/*20100309 to 20180621
+/*20100309 to 20180711
RO_HELP
RO_HELP.
*/
MSG_RO_HELP = 0x6ad,
#endif
#if PACKETVER >= 20100316
-/*20100316 to 20180621
+/*20100316 to 20180711
모루가 존재 하지 않습니다.
Anvil does not exist.
*/
MSG_HAVENOT_ANVIL = 0x6ae,
-/*20100316 to 20180621
+/*20100316 to 20180711
노비스 레벨 10 ì´í•˜ëŠ” ê·“ì†ë§ì´ 금지ë©ë‹ˆë‹¤
Novice below level 10 is not allowed to whisper.
*/
MSG_WHISPER_BLOCK_NOVICE_LEVEL10 = 0x6af,
#endif
#if PACKETVER >= 20100323
-/*20100323 to 20180621
+/*20100323 to 20180711
공격
Attack
*/
MSG_JOB_ATTACKER = 0x6b0,
-/*20100323 to 20180621
+/*20100323 to 20180711
ë°©ì–´
Defense
*/
MSG_JOB_TANKER = 0x6b1,
-/*20100323 to 20180621
+/*20100323 to 20180711
회복
Consumables
*/
MSG_JOB_HEALER = 0x6b2,
-/*20100323 to 20180621
+/*20100323 to 20180711
ë³´ì¡°
Support
*/
MSG_JOB_ASSISTANCE = 0x6b3,
-/*20100323 to 20180621
+/*20100323 to 20180711
파티 모집 관련 명령어
Party recruitment related command
*/
MSG_DESCRIBE_PARTY_BOOKING = 0x6b4,
#endif
#if PACKETVER >= 20100330
-/*20100330 to 20180621
+/*20100330 to 20180711
길드 ë™ë§¹ì‹ ì²­ì´ 불가능합니다
Guild alliance application is not possible.
*/
MSG_GUILD_ALLY_REQUEST_DISABLE = 0x6b5,
-/*20100330 to 20180621
+/*20100330 to 20180711
길드 ì ëŒ€ì‹ ì²­ì´ 불가능합니다
Guild hostility application is not possible.
*/
MSG_GUILD_HOSTILE_REQUEST_DISABLE = 0x6b6,
-/*20100330 to 20180621
+/*20100330 to 20180711
아지트맵ì—서는 친구추가가 불가능합니다
Adding friends is not possible in this map.
*/
MSG_FRIEND_ADD_FALSE_AGIT = 0x6b7,
#endif
#if PACKETVER >= 20100406
-/*20100406 to 20180621
+/*20100406 to 20180711
êµ¬ë§¤ë…¸ì  ê°œì„¤
Buying Store Window
*/
MSG_BUYINGSTORE_MAKEWND_TITLE = 0x6b8,
-/*20100406 to 20180621
+/*20100406 to 20180711
구매가 :
Price:
*/
MSG_BUYINGSTORE_MAKEWND_PRICE = 0x6b9,
-/*20100406 to 20180621
+/*20100406 to 20180711
소지액 :
Money:
*/
MSG_BUYINGSTORE_MAKEWND_MYZENY = 0x6ba,
-/*20100406 to 20180621
+/*20100406 to 20180711
구매 í•œë„ì•¡
Purchase Zeny Limit
*/
@@ -8837,7 +8837,7 @@ Purchase Zeny Limit
/*20100406 to 20100414
íŒë§¤ 가능한 ì•„ì´í…œ 목ë¡
Available items:
-20100420 to 20180621
+20100420 to 20180711
구매할 ì•„ì´í…œì„ 등ë¡í•˜ì§€ 않았습니다. 구매하실 ì•„ì´í…œì„ 등ë¡í•´ 주세요
Please register the item first that has to be purchased.
*/
@@ -8845,7 +8845,7 @@ Please register the item first that has to be purchased.
/*20100406 to 20100414
ë‚˜ì˜ êµ¬ë§¤ë…¸ì 
Purchase list:
-20100420 to 20180621
+20100420 to 20180711
%s ì•„ì´í…œì˜ ê°€ê²©ì„ ìž…ë ¥í•´ 주세요.
Enter the price for item %s.
*/
@@ -8853,14 +8853,14 @@ Enter the price for item %s.
/*20100406 to 20100414
구매 ë…¸ì 
Wanted items
-20100420 to 20180621
+20100420 to 20180711
%s ì•„ì´í…œì˜ ê°€ê²©ì„ 9999만 Zenyì´í•˜ë¡œ 입력해 주세요.
Enter the price for item %s. It has to be below 99990000 Zeny.
*/
MSG_BUYINGSTORE_MAKEWND_REINPUTPRICE = 0x6be,
/*20100406 to 20100414
제한금액 : %d Zeny
-20100420 to 20180621
+20100420 to 20180711
%s ì•„ì´í…œì˜ êµ¬ë§¤ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
Enter the item number for %s.
*/
@@ -8868,7 +8868,7 @@ Enter the item number for %s.
/*20100406 to 20100414
%s %s Zeny %d 개
Buying %s for %s Zeny. Amount: %d.
-20100420 to 20180621
+20100420 to 20180711
%s ì•„ì´í…œì˜ 소지수량과 êµ¬ë§¤ìˆ˜ëŸ‰ì˜ í•©ì´ 9999ê°œ ì´ìƒìž…니다. 9999ê°œ ì´í•˜ì˜ ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
The sum of purchasing and belonging items is over 9999. The sum has to be bellow 9999.
*/
@@ -8876,14 +8876,14 @@ The sum of purchasing and belonging items is over 9999. The sum has to be bellow
/*20100406 to 20100414
%s : %s Zeny => %s EA
%s: %s Zeny => %s ea.
-20100420 to 20180621
+20100420 to 20180711
ì¤‘ë³µëœ ì•„ì´í…œì´ 존재합니다.
You have duplicate items in your purchase list.
*/
MSG_BUYINGSTORE_MAKEWND_DUPLICATEITEM = 0x6c1,
/*20100406 to 20100414
%s %d 개 구매.
-20100420 to 20180621
+20100420 to 20180711
제한 ê¸ˆì•¡ì„ ìž…ë ¥í•´ 주세요
Enter the limited price.
*/
@@ -8891,7 +8891,7 @@ Enter the limited price.
/*20100406 to 20100414
ì•„ì´í…œì„ ëª¨ë‘ êµ¬ë§¤í–ˆìŠµë‹ˆë‹¤.
You purchased all items.
-20100420 to 20180621
+20100420 to 20180711
입력한 ì œí•œê¸ˆì•¡ì´ ì†Œì§€ê¸ˆì•¡ì„ ì´ˆê³¼í•©ë‹ˆë‹¤. 다시 설정해 주세요
You have entered a greater amount of zeny than you have. Please check your zeny.
*/
@@ -8899,21 +8899,21 @@ You have entered a greater amount of zeny than you have. Please check your zeny.
/*20100406 to 20100414
해당 ì•„ì´í…œì˜ ì´ íŒë§¤ 가능 개수는 %dê°œ 입니다.
The max. number of items you can sell is %d.
-20100420 to 20180621
+20100420 to 20180711
%s : %s Zeny => %s EA
%s: %s Zeny => %s ea.
*/
MSG_BUYINGSTORE_MAKEWND_ITEMLIST = 0x6c4,
/*20100406 to 20100414
ê°€ê²©ì´ 0 Zenyì¸ ì•„ì´í…œì´ 존재합니다. ê°€ê²©ì„ ìž…ë ¥í•´ 주세요.
-20100420 to 20180621
+20100420 to 20180711
구매 가능한 ì•„ì´í…œ 목ë¡
Available items:
*/
MSG_BUYINGSTORE_MIRRORBUYITEMLIST = 0x6c5,
/*20100406 to 20100414
ê°€ê²©ì´ 9999만 Zenyì´ìƒì¸ ì•„ì´í…œì´ 존재합니다. 9999만 Zeny ì´í•˜ì˜ ê°€ê²©ì„ ìž…ë ¥í•´ 주세요.
-20100420 to 20180621
+20100420 to 20180711
ë‚˜ì˜ êµ¬ë§¤ë…¸ì 
Purchase list:
*/
@@ -8922,14 +8922,14 @@ Purchase list:
êµ¬ë§¤ìˆ˜ëŸ‰ì´ 0 ê°œì¸ ì•„ì´í…œì´ 존재합니다. ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
20100420 to 20110208
제한금액 : %d Zeny
-20110215 to 20180621
+20110215 to 20180711
제한금액 : %s Zeny
Price limit: %s Zeny
*/
MSG_BUYINGSTORE_MYSHOPWND_LIMITZENY = 0x6c7,
/*20100406 to 20100414
êµ¬ë§¤ìˆ˜ëŸ‰ì´ 9999ê°œ ì´ìƒì¸ ì•„ì´í…œì´ 존재합니다. 9999ê°œ ì´í•˜ì˜ ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
-20100420 to 20180621
+20100420 to 20180711
%s %s Zeny %d 개
Buying %s for %s Zeny. Amount: %d.
*/
@@ -8937,21 +8937,21 @@ Buying %s for %s Zeny. Amount: %d.
/*20100406 to 20100414
ì¤‘ë³µëœ ì•„ì´í…œì´ 존재합니다.
You have duplicate items in your purchase list.
-20100420 to 20180621
+20100420 to 20180711
구매 ë…¸ì 
Wanted items
*/
MSG_BUYINGSTORE_SHOPWND_TITLE = 0x6c9,
/*20100406 to 20100414
구매ìƒì  ì—´ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20100420 to 20180621
+20100420 to 20180711
íŒë§¤ 가능한 ì•„ì´í…œ 목ë¡
Available items:
*/
MSG_BUYINGSTORE_MIRRORSELLWND_TITLE = 0x6ca,
/*20100406 to 20100414
구매ìƒì  ì—´ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20100420 to 20180621
+20100420 to 20180711
해당 ì•„ì´í…œì˜ ì´ íŒë§¤ 가능 개수는 %dê°œ 입니다.
The max. number of items you can sell is %d.
*/
@@ -8960,14 +8960,14 @@ The max. number of items you can sell is %d.
구매가능한 최대 갯수를 초과하였습니다.
20100420 to 20110208
구매ìžì˜ ìž”ì•¡ì´ ë¶€ì¡±í•˜ë‹ˆ 다시 설정해 주세요
-20110215 to 20180621
+20110215 to 20180711
구매노ì ì˜ ì œí•œê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì—¬ íŒë§¤í•  수 없습니다.
Buyer has insufficient money, lower the amount of items you're selling.
*/
MSG_BUYINGSTORE_SELLWND_LACKBUYERZENY = 0x6cc,
/*20100406 to 20100414
ë‚¨ì€ ìž”ì•¡ìœ¼ë¡œ ì•„ì´í…œ 구매가 불가능 합니다.
-20100420 to 20180621
+20100420 to 20180711
구매ìƒì  ê°œì„¤ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to open purchase shop.
*/
@@ -8977,7 +8977,7 @@ Failed to open purchase shop.
/*20100413 to 20100414
ì†Œí™˜ëœ ì •ë ¹ì´ ì—†ìŠµë‹ˆë‹¤.
You don't have any summoned spirits.
-20100420 to 20180621
+20100420 to 20180711
ì•„ì´í…œì˜ ì´ ë¬´ê²Œê°€ %d ë§Œí¼ ì†Œì§€ í•œê³„ëŸ‰ì„ ì´ˆê³¼í•©ë‹ˆë‹¤. 다시 설정해 주세요.
You exceed the total amount of items.
*/
@@ -8985,34 +8985,34 @@ You exceed the total amount of items.
/*20100413 to 20100414
서버연합대전 제약사항 입니다.
This is a restricted server.
-20100420 to 20180621
+20100420 to 20180711
제한금액만í¼ì˜ ì•„ì´í…œì„ ëª¨ë‘ êµ¬ë§¤í•˜ì˜€ìŠµë‹ˆë‹¤.
You have purchased all items within the limited price.
*/
MSG_BUYINGSTORE_TRADE_OVERLIMITZENY = 0x6cf,
#endif
#if PACKETVER >= 20100420
-/*20100420 to 20180621
+/*20100420 to 20180711
ì•„ì´í…œì„ ëª¨ë‘ êµ¬ë§¤í–ˆìŠµë‹ˆë‹¤.
You purchased all items.
*/
MSG_BUYINGSTORE_TRADE_BUYCOMPLETE = 0x6d0,
-/*20100420 to 20180621
+/*20100420 to 20180711
구매ìžì˜ ìž”ì•¡ì´ ë¶€ì¡±í•˜ì—¬ 거래가 실패하였습니다.
Failed to deal because you have not enough Zeny.
*/
MSG_BUYINGSTORE_TRADE_LACKBUYERZENY = 0x6d1,
-/*20100420 to 20180621
+/*20100420 to 20180711
%s %d개를 %dzì— íŒë§¤í•˜ì˜€ìŠµë‹ˆë‹¤.
You have sold %s. Amount: %d. Total Zeny: %dz
*/
MSG_BUYINGSTORE_TRADE_SELLCOMPLETE = 0x6d2,
-/*20100420 to 20180621
+/*20100420 to 20180711
%s ì•„ì´í…œì€ í¬ë§ 구매갯수보다 ìˆ˜ëŸ‰ì´ ë§Žì•„ íŒë§¤í•˜ì§€ 못하였습니다
%s item could not be sold because you do not have the wanted amount of items.
*/
MSG_BUYINGSTORE_TRADE_OVERCOUNT = 0x6d3,
-/*20100420 to 20180621
+/*20100420 to 20180711
ì†Œí™˜ëœ ì •ë ¹ì´ ì—†ìŠµë‹ˆë‹¤.
You don't have any summoned spirits.
20130807 to 20130814
@@ -9020,7 +9020,7 @@ You don't have any summoned spirits.
Has not registered to sell the item. Please register to sell the item
*/
MSG_USESKILL_FAIL_EL_SUMMON = 0x6d4,
-/*20100420 to 20180621
+/*20100420 to 20180711
서버연합대전 제약사항 입니다.
This is a restricted server.
20130807 to 20130814
@@ -9028,7 +9028,7 @@ This is a restricted server.
You don't have any summoned spirits.
*/
MSG_AGAINSTSERVERSIEGEWARFARE_RESTRICTION = 0x6d5,
-/*20100420 to 20180621
+/*20100420 to 20180711
OTP 비밀번호는 6ìžë¦¬ 입니다.
OTP password is 6 digits long.
20130807 to 20130814
@@ -9036,7 +9036,7 @@ OTP password is 6 digits long.
This is a restricted server.
*/
MSG_OTP_MUST_6_CHAR = 0x6d6,
-/*20100420 to 20180621
+/*20100420 to 20180711
OTP ì •ë³´ê°€ 없습니다. 관리ìžì—게 문ì˜í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
OTP information is unavailable. Please contact your administrator.
20130807 to 20130814
@@ -9044,7 +9044,7 @@ OTP 비밀번호는 6ìžë¦¬ 입니다.
OTP password is 6 digits long.
*/
MSG_DB_ERROR = 0x6d7,
-/*20100420 to 20180621
+/*20100420 to 20180711
OTP ì¸ì¦ì— 실패 했습니다.
OTP authentication failed.
20130807 to 20130814
@@ -9052,7 +9052,7 @@ OTP ì •ë³´ê°€ 없습니다. 관리ìžì—게 문ì˜í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
OTP information is unavailable. Please contact your administrator.
*/
MSG_OTP_FAILED = 0x6d8,
-/*20100420 to 20180621
+/*20100420 to 20180711
파티광고가 추가ë˜ì—ˆìŠµë‹ˆë‹¤
Party ad has been added.
20130807 to 20130814
@@ -9062,7 +9062,7 @@ OTP authentication failed.
MSG_PARTY_BOOKING_NOTIFY = 0x6d9,
/*20100420 to 20110719
íŒŒí‹°ì› ëª¨ì§‘ 중
-20110726 to 20180621
+20110726 to 20180711
모집 중
Recruit party members
20130807 to 20130814
@@ -9070,7 +9070,7 @@ Recruit party members
Party ad has been added.
*/
MSG_PARTY_BOOKING_REQURT = 0x6da,
-/*20100420 to 20180621
+/*20100420 to 20180711
ì—­í• 
Roles
20130807 to 20130814
@@ -9078,7 +9078,7 @@ Roles
Recruit party members
*/
MSG_PARTY_BOOKING_TYPE = 0x6db,
-/*20100420 to 20180621
+/*20100420 to 20180711
1ì°¨ ì§ì—…
1st Jobs
20130807 to 20130814
@@ -9086,7 +9086,7 @@ Recruit party members
Roles
*/
MSG_PARTY_BOOKING_TYPE_1 = 0x6dc,
-/*20100420 to 20180621
+/*20100420 to 20180711
2ì°¨ ì§ì—…
2nd Jobs
20130807 to 20130814
@@ -9094,7 +9094,7 @@ Roles
1st Jobs
*/
MSG_PARTY_BOOKING_TYPE_2 = 0x6dd,
-/*20100420 to 20180621
+/*20100420 to 20180711
3-1ì°¨ ì§ì—…
3-1 Classes
20130807 to 20130814
@@ -9102,7 +9102,7 @@ Roles
2nd Jobs
*/
MSG_PARTY_BOOKING_TYPE_3_1 = 0x6de,
-/*20100420 to 20180621
+/*20100420 to 20180711
3-2ì°¨ ì§ì—…
3-2 Classes
20130807 to 20130814
@@ -9110,7 +9110,7 @@ Roles
3-1 Classes
*/
MSG_PARTY_BOOKING_TYPE_3_2 = 0x6df,
-/*20100420 to 20180621
+/*20100420 to 20180711
전승 1ì°¨ ì§ì—…
1st Job High
20130807 to 20130814
@@ -9118,7 +9118,7 @@ Roles
3-2 Classes
*/
MSG_PARTY_BOOKING_TYPE_1PLUS = 0x6e0,
-/*20100420 to 20180621
+/*20100420 to 20180711
전승 2ì°¨ ì§ì—…
2nd Jobs High
20130807 to 20130814
@@ -9126,7 +9126,7 @@ Roles
1st Job High
*/
MSG_PARTY_BOOKING_TYPE_2PLUS = 0x6e1,
-/*20100420 to 20180621
+/*20100420 to 20180711
기타 ì§ì—…êµ°
Other Jobs
20130807 to 20130814
@@ -9134,7 +9134,7 @@ Other Jobs
2nd Jobs High
*/
MSG_PARTY_BOOKING_TYPE_ETC = 0x6e2,
-/*20100420 to 20180621
+/*20100420 to 20180711
모집 하기
Recruit
20130807 to 20130814
@@ -9142,7 +9142,7 @@ Recruit
Other Jobs
*/
MSG_PARTY_BOOKING_REQURTING = 0x6e3,
-/*20100420 to 20180621
+/*20100420 to 20180711
파티ì›ì„ 모집합니다.
Open party recruitment window.
20130807 to 20130814
@@ -9152,7 +9152,7 @@ Recruit
MSG_PARTY_BOOKING_REQURT_TIP = 0x6e4,
/*20100420 to 20110719
검색중 -
-20110726 to 20180621
+20110726 to 20180711
검색 중 -
Searching -
20130807 to 20130814
@@ -9160,7 +9160,7 @@ Searching -
Open party recruitment window.
*/
MSG_PARTY_BOOKING_SEARCH = 0x6e5,
-/*20100420 to 20180621
+/*20100420 to 20180711
ëª¨ë‘ ì„ íƒ
Select All
20130807 to 20130814
@@ -9168,7 +9168,7 @@ Select All
Searching -
*/
MSG_PARTY_BOOKING_ALL_SELECT = 0x6e6,
-/*20100420 to 20180621
+/*20100420 to 20180711
최소한 í•˜ë‚˜ì˜ ì§ì—…ì´ ëª¨ì§‘ 중ì´ì–´ì•¼ 합니다.
Recruitment of at least one job must be running.
20130807 to 20130814
@@ -9176,7 +9176,7 @@ Recruitment of at least one job must be running.
Select All
*/
MSG_PARTY_BOOKING_ERR1 = 0x6e7,
-/*20100420 to 20180621
+/*20100420 to 20180711
최소 1ê°œì´ìƒì˜ ì§ì—…ì„ ì„ íƒí•´ 주셔야 합니다.
You have to select atleast 1 or more jobs.
20130807 to 20130814
@@ -9184,7 +9184,7 @@ You have to select atleast 1 or more jobs.
Recruitment of at least one job must be running.
*/
MSG_PARTY_BOOKING_ERR2 = 0x6e8,
-/*20100420 to 20180621
+/*20100420 to 20180711
ì„ íƒëœ ì§ì—…ì€ %d개입니다. 최대 6개까지만 ì§ì—…ì„ ì„ íƒí•  수 있습니다.
You have selected %d Jobs. You can only select up to 6 different jobs.
20130807 to 20130814
@@ -9192,7 +9192,7 @@ You have selected %d Jobs. You can only select up to 6 different jobs.
You have to select atleast 1 or more jobs.
*/
MSG_PARTY_BOOKING_ERR3 = 0x6e9,
-/*20100420 to 20180621
+/*20100420 to 20180711
ë ˆë²¨ì— ìˆ«ìž ì´ì™¸ì˜ 문ìžëŠ” 들어갈 수 없습니다.
Only numeric characters are allowed.
20130807 to 20130814
@@ -9200,7 +9200,7 @@ Only numeric characters are allowed.
You have selected %d Jobs. You can only select up to 6 different jobs.
*/
MSG_PARTY_BOOKING_ERR4 = 0x6ea,
-/*20100420 to 20180621
+/*20100420 to 20180711
ë ˆë²¨ì€ 1~150 사ì´ì˜ 숫ìžë¥¼ 입력해 주세요.
Please enter levels between 1~150.
20130807 to 20130814
@@ -9210,7 +9210,7 @@ Only numeric characters are allowed.
MSG_PARTY_BOOKING_ERR5 = 0x6eb,
#endif
#if PACKETVER >= 20100511
-/*20100511 to 20180621
+/*20100511 to 20180711
해당 맵ì—서는 ì˜ìƒ 장비가 ë³´ì´ì§€ 않습니다.
Nothing found in the selected map.
20130807 to 20130814
@@ -9220,7 +9220,7 @@ Please enter levels between 1~150.
MSG_DISABLE_COSTUMEITEM_MAP = 0x6ec,
#endif
#if PACKETVER >= 20100525
-/*20100525 to 20180621
+/*20100525 to 20180711
ì•„ì´í…œì„ ì°©ìš©í•  수 있는 ë ˆë²¨ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot equip this item with your current level.
20130807 to 20130814
@@ -9228,7 +9228,7 @@ You cannot equip this item with your current level.
Nothing found in the selected map.
*/
MSG_CANNOT_EQUIP_ITEM_LEVEL = 0x6ed,
-/*20100525 to 20180621
+/*20100525 to 20180711
ì•„ì´í…œì„ 사용할 수 있는 ë ˆë²¨ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot use this item with your current level.
20130807 to 20130814
@@ -9238,7 +9238,7 @@ You cannot equip this item with your current level.
MSG_CANNOT_USE_ITEM_LEVEL = 0x6ee,
#endif
#if PACKETVER >= 20100601
-/*20100601 to 20180621
+/*20100601 to 20180711
채팅모드 OnOff 활성화
Enable Battlemode
20130807 to 20130814
@@ -9246,7 +9246,7 @@ Enable Battlemode
You cannot use this item with your current level.
*/
MSG_CHATMODE_ONOFF = 0x6ef,
-/*20100601 to 20180621
+/*20100601 to 20180711
탭사ì´ì¦ˆ í¬ê¸°ê°€ 초과ë˜ì–´ 추가할 수 없습니다.
Failed to add because you have reached the limit.
20130807 to 20130814
@@ -9256,7 +9256,7 @@ Enable Battlemode
MSG_OVER_TABSIZE = 0x6f0,
/*20100601 to 20100601
창 표시 정보.
-20100608 to 20180621
+20100608 to 20180711
창 표시 정보
Window Sign Information
20130807 to 20130814
@@ -9266,7 +9266,7 @@ Failed to add because you have reached the limit.
MSG_SET_CHATINFO = 0x6f1,
#endif
#if PACKETVER >= 20100608
-/*20100608 to 20180621
+/*20100608 to 20180711
íŒë§¤
Sell
20130807 to 20130814
@@ -9274,7 +9274,7 @@ Sell
Window Sign Information
*/
MSG_SELL = 0x6f2,
-/*20100608 to 20180621
+/*20100608 to 20180711
구매
Purchase
20130807 to 20130814
@@ -9282,7 +9282,7 @@ Purchase
Sell
*/
MSG_BUY = 0x6f3,
-/*20100608 to 20180621
+/*20100608 to 20180711
ë…¸ì  ê²€ìƒ‰
Search for Vends
20130807 to 20130814
@@ -9290,7 +9290,7 @@ Search for Vends
Purchase
*/
MSG_SEARCH_STOREINFO = 0x6f4,
-/*20100608 to 20180621
+/*20100608 to 20180711
ë…¸ì  ì´ë¦„
Shop Name
20130807 to 20130814
@@ -9298,7 +9298,7 @@ Shop Name
Search for Vends
*/
MSG_STORE_NAME = 0x6f5,
-/*20100608 to 20180621
+/*20100608 to 20180711
수량
Quantity
20130807 to 20130814
@@ -9306,7 +9306,7 @@ Quantity
Shop Name
*/
MSG_SEARCH_ITEM_COUNT = 0x6f6,
-/*20100608 to 20180621
+/*20100608 to 20180711
가격
Cost
20130807 to 20130814
@@ -9314,7 +9314,7 @@ Cost
Quantity
*/
MSG_SEARCH_ITEM_PRICE = 0x6f7,
-/*20100608 to 20180621
+/*20100608 to 20180711
검색 결과가 너무 많습니다. 검색어를 ìžì„¸ížˆ ìž…ë ¥ í•´ 주세요.
Too much results have been found. Please do a more precisely search.
20130807 to 20130814
@@ -9322,7 +9322,7 @@ Too much results have been found. Please do a more precisely search.
Cost
*/
MSG_SSI_FAILED_OVER_MAXCOUNT = 0x6f8,
-/*20100608 to 20180621
+/*20100608 to 20180711
해당 ë…¸ì ì„ 여시겠습니까?
Do you want to open a street stall?
20130807 to 20130814
@@ -9330,7 +9330,7 @@ Do you want to open a street stall?
Too much results have been found. Please do a more precisely search.
*/
MSG_OPEN_SEARCH_STORE = 0x6f9,
-/*20100608 to 20180621
+/*20100608 to 20180711
SSO ì¸ì¦ì— 실패하였습니다.
Failed to recognize SSO.
20130807 to 20130814
@@ -9340,7 +9340,7 @@ Do you want to open a street stall?
MSG_SSO_FAILED = 0x6fa,
#endif
#if PACKETVER >= 20100615
-/*20100615 to 20180621
+/*20100615 to 20180711
현재 해당지역으로 ì´ë™ í•  수 없습니다
Cannot move to the applied area.
20130807 to 20130814
@@ -9350,7 +9350,7 @@ Failed to recognize SSO.
MSG_ZONE_MOVE_FAIL = 0x6fb,
/*20100615 to 20100622
í¬í•¨ 검색
-20100629 to 20180621
+20100629 to 20180711
단어가 í¬í•¨ëœ ì•„ì´í…œ 검색
searching item including the word
20130807 to 20130814
@@ -9358,7 +9358,7 @@ searching item including the word
Cannot move to the applied area.
*/
MSG_SEARCH_INCLUDED = 0x6fc,
-/*20100615 to 20180621
+/*20100615 to 20180711
탈퇴한 유저입니다.
User has been expelled.
20130807 to 20130814
@@ -9366,7 +9366,7 @@ User has been expelled.
searching item including the word
*/
MSG_WITHDREW_USERS = 0x6fd,
-/*20100615 to 20180621
+/*20100615 to 20180711
게임 ì´ìš©ì— ë™ì˜í•˜ì§€ 않았습니다.
You have not accepted the user agreements yet.
20130807 to 20130814
@@ -9374,7 +9374,7 @@ You have not accepted the user agreements yet.
User has been expelled.
*/
MSG_DIDNOT_AGREE = 0x6fe,
-/*20100615 to 20180621
+/*20100615 to 20180711
존재 하지 않는 계정입니다.
You will not be disconnect from the game.
20130807 to 20130814
@@ -9382,7 +9382,7 @@ You will not be disconnect from the game.
You have not accepted the user agreements yet.
*/
MSG_ACCOUNT_DOESNOT_EXIST = 0x6ff,
-/*20100615 to 20180621
+/*20100615 to 20180711
본 ê²Œìž„ì€ 12세 ì´ìš©ê°€ìž…니다.
It is available only for 12 hours.
20130807 to 20130814
@@ -9392,7 +9392,7 @@ You will not be disconnect from the game.
MSG_AGE_RESTRICTIONS = 0x700,
#endif
#if PACKETVER >= 20100616
-/*20100616 to 20180621
+/*20100616 to 20180711
계정ë„ìš© 조사를 위한 블럭ìƒíƒœìž…니다.
Your account is blocked due to illegal use of the game account.
20130807 to 20130814
@@ -9400,7 +9400,7 @@ Your account is blocked due to illegal use of the game account.
It is available only for 12 hours.
*/
MSG_ACCOUNT_BLOCK = 0x701,
-/*20100616 to 20180621
+/*20100616 to 20180711
버그조사를 위한 블럭ìƒíƒœìž…니다.
Your account is blocked because there may exist a bug with your account.
20130807 to 20130814
@@ -9410,7 +9410,7 @@ Your account is blocked due to illegal use of the game account.
MSG_BUG_BLOCK = 0x702,
#endif
#if PACKETVER >= 20100622
-/*20100622 to 20180621
+/*20100622 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Base, Job 경험치가 30분간 75% ì¦ê°€í•©ë‹ˆë‹¤.
Increases base exp and job exp gained by killing monsters up to 75% for 30 minutes.
20130807 to 20130814
@@ -9418,7 +9418,7 @@ Increases base exp and job exp gained by killing monsters up to 75% for 30 minut
Your account is blocked because there may exist a bug with your account.
*/
MSG_PLUSEXP75 = 0x703,
-/*20100622 to 20180621
+/*20100622 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Base, Job 경험치가 30분간 50% ì¦ê°€í•©ë‹ˆë‹¤.
Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
20130807 to 20130814
@@ -9428,7 +9428,7 @@ Increases base exp and job exp gained by killing monsters up to 75% for 30 minut
MSG_PLUSEXP50 = 0x704,
/*20100622 to 20100622
ìƒì  ì •ë³´ê°€ 정확하지 ì•Šì•„ ìƒì ì„ ì—´ 수 없습니다.
-20100629 to 20180621
+20100629 to 20180711
íŒë§¤(구매) ì •ë³´ê°€ 없습니다.
No sales information.
20130807 to 20130814
@@ -9436,7 +9436,7 @@ No sales information.
Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
*/
MSG_FAIL_OPEN_STORE = 0x705,
-/*20100622 to 20180621
+/*20100622 to 20180711
ë” ì´ìƒ 검색 í•  수 없습니다.
Failed to search any further.
20130807 to 20130814
@@ -9446,7 +9446,7 @@ No sales information.
MSG_SSI_FAILED_SEARCH_CNT = 0x706,
/*20100622 to 20100622
ê²€ìƒ‰ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
-20100629 to 20180621
+20100629 to 20180711
해당 ì•„ì´í…œ ëª…ì€ ì¡´ìž¬í•˜ì§€ 않습니다.
The item you have entered does not exist.
20130807 to 20130814
@@ -9454,7 +9454,7 @@ The item you have entered does not exist.
Failed to search any further.
*/
MSG_SSI_FAILED_ITEM_DOES_NOT_EXIST = 0x707,
-/*20100622 to 20180621
+/*20100622 to 20180711
ì•„ì§ ê²€ìƒ‰ í•  수 없습니다.
Cannot search yet.
20130807 to 20130814
@@ -9466,7 +9466,7 @@ The item you have entered does not exist.
#if PACKETVER >= 20100629
/*20100629 to 20100707
ì¹´ë“œ ì´ë¦„, ì ‘ë‘사, 접미사
-20100713 to 20180621
+20100713 to 20180711
ì¹´ë“œ ì´ë¦„ ë˜ëŠ” ì ‘ë‘사(접미사)를 입력하세요
Enter the card name or prefix/suffix.
20130807 to 20130814
@@ -9474,7 +9474,7 @@ Enter the card name or prefix/suffix.
Cannot search yet.
*/
MSG_SSI_TOOLTIP_OF_SERACHING_THE_CARD = 0x709,
-/*20100629 to 20180621
+/*20100629 to 20180711
ë‚¨ì€ ê²€ìƒ‰ 횟수 : %d
Searches left: %d
20130807 to 20130814
@@ -9482,7 +9482,7 @@ Searches left: %d
Enter the card name or prefix/suffix.
*/
MSG_SSI_REST_OF_NUMBER_OF_SEARCHES = 0x70a,
-/*20100629 to 20180621
+/*20100629 to 20180711
검색 ëœ ë…¸ì ì´ 없습니다.
No result has been found.
20130807 to 20130814
@@ -9490,7 +9490,7 @@ No result has been found.
Searches left: %d
*/
MSG_SSI_FAILED_SEARCH_STORE = 0x70b,
-/*20100629 to 20180621
+/*20100629 to 20180711
ì•„ì´í…œ 가격 범위가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤.
The item price is too high.
20130807 to 20130814
@@ -9498,7 +9498,7 @@ The item price is too high.
No result has been found.
*/
MSG_SSI_FAILED_PRICE_ISNOT_VALID = 0x70c,
-/*20100629 to 20180621
+/*20100629 to 20180711
ì¼ë°˜ 장비
Normal Gear
20130807 to 20130814
@@ -9506,7 +9506,7 @@ Normal Gear
The item price is too high.
*/
MSG_GENERAL_EQUIPMENT = 0x70d,
-/*20100629 to 20180621
+/*20100629 to 20180711
ì˜ìƒ 장비
Costume
20130807 to 20130814
@@ -9516,7 +9516,7 @@ Normal Gear
MSG_COSTUME_EQUIPMENT = 0x70e,
#endif
#if PACKETVER >= 20100713
-/*20100713 to 20180621
+/*20100713 to 20180711
분
minute
20130807 to 20130814
@@ -9524,7 +9524,7 @@ minute
Costume
*/
MSG_MINUTE = 0x70f,
-/*20100713 to 20180621
+/*20100713 to 20180711
ì´ˆ
second
20130807 to 20130814
@@ -9532,7 +9532,7 @@ second
minute
*/
MSG_SECOND = 0x710,
-/*20100713 to 20180621
+/*20100713 to 20180711
ì•„ì´í…œ ëª…ì„ ìž…ë ¥í•´ 주세요.
Please enter the name of the item.
20130807 to 20130814
@@ -9540,7 +9540,7 @@ Please enter the name of the item.
second
*/
MSG_SSI_FAILED_ENTER_THE_NAME_OF_ITEM = 0x711,
-/*20100713 to 20180621
+/*20100713 to 20180711
해당 ì•„ì´í…œ ëª…ì€ ì¡´ìž¬í•˜ì§€ 않습니다.
The item you have entered does not exist.
20130807 to 20130814
@@ -9550,7 +9550,7 @@ Please enter the name of the item.
MSG_SSI_FAILED_NAME_OF_ITEM_DOES_NOT_EXIST = 0x712,
#endif
#if PACKETVER >= 20100720
-/*20100720 to 20180621
+/*20100720 to 20180711
진입가능한 ë§µì´ ì¡´ìž¬í•˜ì§€ 않습니다.
The map is not available.
20130807 to 20130814
@@ -9558,7 +9558,7 @@ The map is not available.
The item you have entered does not exist.
*/
MSG_NOT_EXIST_ENTRYMAP = 0x713,
-/*20100720 to 20180621
+/*20100720 to 20180711
해당 ì¹´ë“œ ì´ë¦„ì´ë‚˜ ì ‘ë‘사(접미사)는 존재하지 않습니다.
The selected name or prefix/suffix does not exist.
20130807 to 20130814
@@ -9568,7 +9568,7 @@ The map is not available.
MSG_SSI_FAILED_NAME_OF_CARD_DOES_NOT_EXIST = 0x714,
#endif
#if PACKETVER >= 20100727
-/*20100727 to 20180621
+/*20100727 to 20180711
í•œë²ˆì— êµ¬ë§¤ 가능 종류는 10개입니다.
You can purchase up to 10 items.
20130807 to 20130814
@@ -9576,7 +9576,7 @@ You can purchase up to 10 items.
The selected name or prefix/suffix does not exist.
*/
MSG_CASH_FAILED_TOTAL_CNT = 0x715,
-/*20100727 to 20180621
+/*20100727 to 20180711
ì¼ë¶€ ì•„ì´í…œì˜ 구매가 실패하였습니다.
Some items could not be purchased.
20130807 to 20130814
@@ -9586,7 +9586,7 @@ You can purchase up to 10 items.
MSG_CASH_FAILED_BUY_SOME = 0x716,
#endif
#if PACKETVER >= 20100730
-/*20100730 to 20180621
+/*20100730 to 20180711
ìƒë…„ì›”ì¼ 6ìžë¦¬ë¥¼ 입력하세요.(예시:801122)
Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
20130807 to 20130814
@@ -9594,7 +9594,7 @@ Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
Some items could not be purchased.
*/
MSG_ENTER_PEOPLE_BIRTH = 0x717,
-/*20100730 to 20180621
+/*20100730 to 20180711
ì•Œ 수 없는 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.
Now Logging Out.
20130807 to 20130814
@@ -9602,7 +9602,7 @@ Now Logging Out.
Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
*/
MSG_RESULT_FAIL_UNKNOWN = 0x718,
-/*20100730 to 20180621
+/*20100730 to 20180711
ë°ì´íƒ€ ë² ì´ìŠ¤ 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.
A database error has occurred.
20130807 to 20130814
@@ -9610,7 +9610,7 @@ A database error has occurred.
Now Logging Out.
*/
MSG_RESULT_FAIL_DATABASE = 0x719,
-/*20100730 to 20180621
+/*20100730 to 20180711
ìºë¦­í„°ë¥¼ 삭제하기 위해서는 길드ì—ì„œ 탈퇴 해야 합니다.
Please leave your guild first in order to remove your character.
20130807 to 20130814
@@ -9618,7 +9618,7 @@ Please leave your guild first in order to remove your character.
A database error has occurred.
*/
MSG_RESULT_FAIL_GUILD = 0x71a,
-/*20100730 to 20180621
+/*20100730 to 20180711
ìºë¦­í„°ë¥¼ 삭제하기 위해서는 파티ì—ì„œ 탈퇴 해야 합니다.
Please leave your party first in order to remove your character.
20130807 to 20130814
@@ -9626,7 +9626,7 @@ Please leave your party first in order to remove your character.
Please leave your guild first in order to remove your character.
*/
MSG_RESULT_FAIL_PARTY = 0x71b,
-/*20100730 to 20180621
+/*20100730 to 20180711
시스템 설정으로 ì¸í•´ 삭제할 수 없습니다.
You cannot delete this character because the delete time has not expired yet.
20130807 to 20130814
@@ -9634,7 +9634,7 @@ You cannot delete this character because the delete time has not expired yet.
Please leave your party first in order to remove your character.
*/
MSG_RESULT_FAIL_CONFIGURATION = 0x71c,
-/*20100730 to 20180621
+/*20100730 to 20180711
ì•„ì§ ì‚­ì œ 가능 ì‹œê°„ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot delete this character at the moment.
20130807 to 20130814
@@ -9642,7 +9642,7 @@ You cannot delete this character at the moment.
You cannot delete this character because the delete time has not expired yet.
*/
MSG_RESULT_FAIL_DATE = 0x71d,
-/*20100730 to 20180621
+/*20100730 to 20180711
ìƒë…„ì›”ì¼ì´ ì¼ì¹˜í•˜ì§€ 않습니다.
Your entered birthday does not match.
20130807 to 20130814
@@ -9650,7 +9650,7 @@ Your entered birthday does not match.
You cannot delete this character at the moment.
*/
MSG_RESULT_FAIL_BIRTH = 0x71e,
-/*20100730 to 20180621
+/*20100730 to 20180711
친밀ë„ê°€ 부족합니다.
You lack of familiarity.
20130807 to 20130814
@@ -9658,7 +9658,7 @@ You lack of familiarity.
Your entered birthday does not match.
*/
MSG_USESKILL_FAIL_RELATIONGRADE = 0x71f,
-/*20100730 to 20180621
+/*20100730 to 20180711
스타ì¼ì²´ì¸ì§€ 파ì´í„° ìƒíƒœì—서만 사용가능합니다.
This is only available on style change for fighting classes.
20130807 to 20130814
@@ -9666,7 +9666,7 @@ This is only available on style change for fighting classes.
You lack of familiarity.
*/
MSG_USESKILL_FAIL_STYLE_CHANGE_FIGHTER = 0x720,
-/*20100730 to 20180621
+/*20100730 to 20180711
스타ì¼ì²´ì¸ì§€ 그래플러 ìƒíƒœì—서만 사용가능합니다.
This is only available on style change for novice.
20130807 to 20130814
@@ -9676,7 +9676,7 @@ This is only available on style change for fighting classes.
MSG_USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 0x721,
#endif
#if PACKETVER >= 20100817
-/*20100817 to 20180621
+/*20100817 to 20180711
파티등ë¡ì‹¤íŒ¨
Party Registration failed.
20130807 to 20130814
@@ -9684,7 +9684,7 @@ Party Registration failed.
This is only available on style change for novice.
*/
MSG_PARTY_REGISTRATION_FAILED = 0x722,
-/*20100817 to 20180621
+/*20100817 to 20180711
ê²€ìƒ‰ëœ ì¡°ê±´ì˜ ë¦¬ìŠ¤íŠ¸ê°€ 없습니다.
results have been found.
20130807 to 20130814
@@ -9692,7 +9692,7 @@ results have been found.
Party Registration failed.
*/
MSG_PARTY_SEARCH_FAILED = 0x723,
-/*20100817 to 20180621
+/*20100817 to 20180711
ê´‘ê³ ì‚­ì œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to remove result.
20130807 to 20130814
@@ -9700,7 +9700,7 @@ Failed to remove result.
results have been found.
*/
MSG_PARTY_AD_DELETE_FAILED = 0x724,
-/*20100817 to 20180621
+/*20100817 to 20180711
ì¡°ê±´ì— ë§žëŠ” ê´‘ê³ ê°€ 없어 실패했습니다.
No results have been found.
20130807 to 20130814
@@ -9710,7 +9710,7 @@ Failed to remove result.
MSG_PARTY_NOT_EXIST_AD = 0x725,
#endif
#if PACKETVER >= 20100824
-/*20100824 to 20180621
+/*20100824 to 20180711
결제 정보가 없습니다.
No payment information has been found.
20130807 to 20130814
@@ -9718,7 +9718,7 @@ No payment information has been found.
No results have been found.
*/
MSG_REFUSE_SSO_NOT_PAY_USER = 0x726,
-/*20100824 to 20180621
+/*20100824 to 20180711
êµí™˜ ì‹œ 스í¬ë¦°ìƒ· ì°ê¸°
Screenshot Trade
20130807 to 20130814
@@ -9726,7 +9726,7 @@ Screenshot Trade
No payment information has been found.
*/
MSG_SCREENSHOT_FOR_EXCHANGE = 0x727,
-/*20100824 to 20180621
+/*20100824 to 20180711
[거래_%s]
[Trade_%s]
20130807 to 20130814
@@ -9741,12 +9741,12 @@ Screenshot Trade
20130807 to 20130814
[거래_%s]
[Trade_%s]
-20180207 to 20180621
+20180207 to 20180711
ì‚¬ë§ ì‹œ 소지한 ì•„ì´í…œìœ¼ë¡œ 경험치 ì†ì‹¤ì„ 막았습니다.
Death due to the auto insurance young people are spending.
*/
MSG_NOTIFY_NEO_INSURANCE_ITEM_USE = 0x729,
-/*20100914 to 20180621
+/*20100914 to 20180711
대화
Chat Dialog
20130807 to 20130814
@@ -9755,7 +9755,7 @@ Chat Dialog
MSG_TALK = 0x72a,
#endif
#if PACKETVER >= 20101019
-/*20101019 to 20180621
+/*20101019 to 20180711
ì¤‘ë³µì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Redundant is not available.
20130807 to 20130814
@@ -9763,7 +9763,7 @@ Redundant is not available.
Chat Dialog
*/
MSG_MACRO_DUPLICATE = 0x72b,
-/*20101019 to 20180621
+/*20101019 to 20180711
ì‚¬ìš©ì œí•œì´ ê±¸ë ¤ìžˆìŠµë‹ˆë‹¤.
Use the limit that has been set.
20130807 to 20130814
@@ -9771,7 +9771,7 @@ Use the limit that has been set.
Redundant is not available.
*/
MSG_MACRO_POSTDELAY = 0x72c,
-/*20101019 to 20180621
+/*20101019 to 20180711
현재 ì‚¬ìš©ì œí•œì´ ê±¸ë ¤ 있지 않습니다.
No user restrictions are set.
20130807 to 20130814
@@ -9779,7 +9779,7 @@ No user restrictions are set.
Use the limit that has been set.
*/
MSG_MACRO_NOT_POSTDELAY = 0x72d,
-/*20101019 to 20180621
+/*20101019 to 20180711
예기치 못한 사유로 ì¸í•´ ì ‘ì†ì´ 실패하였습니다. 관리ìžì—게 문ì˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Connection has failed. Please contact your administrator.
20130807 to 20130814
@@ -9787,7 +9787,7 @@ Connection has failed. Please contact your administrator.
No user restrictions are set.
*/
MSG_SSO_ERROR_MSG = 0x72e,
-/*20101019 to 20180621
+/*20101019 to 20180711
ì ‘ì† ì •ë³´ ì¸ì¦ 실패하였습니다.
Failed to authenticate.
20130807 to 20130814
@@ -9795,7 +9795,7 @@ Failed to authenticate.
Connection has failed. Please contact your administrator.
*/
MSG_REFUSE_SSO_AUTH_INVALID_TOKEN = 0x72f,
-/*20101019 to 20180621
+/*20101019 to 20180711
가입하지 ì•Šì€ ì‚¬ìš©ìžìž…니다.
User is offline.
20130807 to 20130814
@@ -9803,7 +9803,7 @@ User is offline.
Failed to authenticate.
*/
MSG_REFUSE_SSO_AUTH_INVALID_USER = 0x730,
-/*20101019 to 20180621
+/*20101019 to 20180711
나ì´ì œí•œ ë•Œë¬¸ì— ì´ê³„정으로 ì´ì„œë²„ì— ì ‘ì†í•  수 없습니다.
The age limit from commandment tables cannot connect to this server.
20130807 to 20130814
@@ -9811,7 +9811,7 @@ The age limit from commandment tables cannot connect to this server.
User is offline.
*/
MSG_REFUSE_SSO_AUTH_INVALID_AGE = 0x731,
-/*20101019 to 20180621
+/*20101019 to 20180711
구매하기
Buy
20130807 to 20130814
@@ -9819,7 +9819,7 @@ Buy
The age limit from commandment tables cannot connect to this server.
*/
MSG_NC_BUY = 0x732,
-/*20101019 to 20180621
+/*20101019 to 20180711
장바구니 비우기
Cancel.
20130807 to 20130814
@@ -9827,7 +9827,7 @@ Cancel.
Buy
*/
MSG_NC_BLANK = 0x733,
-/*20101019 to 20180621
+/*20101019 to 20180711
첫 페ì´ì§€
First page
20130807 to 20130814
@@ -9835,7 +9835,7 @@ First page
Cancel.
*/
MSG_NC_FIRSTPAGE = 0x734,
-/*20101019 to 20180621
+/*20101019 to 20180711
마지막 페ì´ì§€
Last page
20130807 to 20130814
@@ -9843,7 +9843,7 @@ Last page
First page
*/
MSG_NC_LASTPAGE = 0x735,
-/*20101019 to 20180621
+/*20101019 to 20180711
신규
New
20130807 to 20130814
@@ -9851,7 +9851,7 @@ New
Last page
*/
MSG_NC_CAT1 = 0x736,
-/*20101019 to 20180621
+/*20101019 to 20180711
ì¸ê¸°
Headgears
20130807 to 20130814
@@ -9859,7 +9859,7 @@ Headgears
New
*/
MSG_NC_CAT2 = 0x737,
-/*20101019 to 20180621
+/*20101019 to 20180711
한정
Limited
20130807 to 20130814
@@ -9867,7 +9867,7 @@ Limited
Headgears
*/
MSG_NC_CAT3 = 0x738,
-/*20101019 to 20180621
+/*20101019 to 20180711
임대장비
Rental Items
20130807 to 20130814
@@ -9875,7 +9875,7 @@ Rental Items
Limited
*/
MSG_NC_CAT4 = 0x739,
-/*20101019 to 20180621
+/*20101019 to 20180711
ì˜êµ¬ìž¥ë¹„
Equipments
20130807 to 20130814
@@ -9883,7 +9883,7 @@ Equipments
Rental Items
*/
MSG_NC_CAT5 = 0x73a,
-/*20101019 to 20180621
+/*20101019 to 20180711
버프
Scrolls
20130807 to 20130814
@@ -9891,7 +9891,7 @@ Scrolls
Equipments
*/
MSG_NC_CAT6 = 0x73b,
-/*20101019 to 20180621
+/*20101019 to 20180711
회복
Consumables
20130807 to 20130814
@@ -9899,7 +9899,7 @@ Consumables
Scrolls
*/
MSG_NC_CAT7 = 0x73c,
-/*20101019 to 20180621
+/*20101019 to 20180711
기타
Other
20130807 to 20130814
@@ -9907,7 +9907,7 @@ Other
Consumables
*/
MSG_NC_CAT8 = 0x73d,
-/*20101019 to 20180621
+/*20101019 to 20180711
가격
Cost
20130807 to 20130814
@@ -9915,7 +9915,7 @@ Cost
Other
*/
MSG_NC_COST = 0x73e,
-/*20101019 to 20180621
+/*20101019 to 20180711
수량
Quantity
20130807 to 20130814
@@ -9923,7 +9923,7 @@ Quantity
Cost
*/
MSG_NC_NUM = 0x73f,
-/*20101019 to 20180621
+/*20101019 to 20180711
개
Total
20130807 to 20130814
@@ -9931,7 +9931,7 @@ Total
Quantity
*/
MSG_NC_COUNT = 0x740,
-/*20101019 to 20180621
+/*20101019 to 20180711
무료 ìºì‹œ : %s C
Free Cash: %s C
20130807 to 20130814
@@ -9939,7 +9939,7 @@ Free Cash: %s C
Total
*/
MSG_NC_FREECASH = 0x741,
-/*20101019 to 20180621
+/*20101019 to 20180711
소지 ìºì‹œ : %s C
CashPoints: %s C
20130807 to 20130814
@@ -9947,7 +9947,7 @@ CashPoints: %s C
Free Cash: %s C
*/
MSG_NC_CASH = 0x742,
-/*20101019 to 20180621
+/*20101019 to 20180711
ì´ ì§€ì—­ì—서는 몬스터 ì†Œí™˜ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
You cannot summon a monster in this area.
20130807 to 20130814
@@ -9957,7 +9957,7 @@ CashPoints: %s C
MSG_CALLMONSTER_FAIL_AREA = 0x743,
#endif
#if PACKETVER >= 20101109
-/*20101109 to 20180621
+/*20101109 to 20180711
무료ìºì‹œ ì‚¬ìš©ëŸ‰ì´ ì „ì²´ ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ê³ ìžˆìŠµë‹ˆë‹¤
Exceeded total free cash
20130807 to 20130814
@@ -9965,7 +9965,7 @@ Exceeded total free cash
You cannot summon a monster in this area.
*/
MSG_BUY_CASH_FAIL2 = 0x744,
-/*20101109 to 20180621
+/*20101109 to 20180711
설정한 ë‚´ìš©ì´ [SaveData_ExMacro%d]ì— ì €ìž¥ë©ë‹ˆë‹¤.
%d seconds left until you can use
20130807 to 20130814
@@ -9975,7 +9975,7 @@ Exceeded total free cash
MSG_MACRO_SAVE_DATA = 0x745,
#endif
#if PACKETVER >= 20101123
-/*20101123 to 20180621
+/*20101123 to 20180711
약 %d ì´ˆ í›„ì— ì‚¬ìš©í•  수 있습니다
Content has been saved in [SaveData_ExMacro%d]
20130807 to 20130814
@@ -9985,7 +9985,7 @@ Content has been saved in [SaveData_ExMacro%d]
MSG_ITEM_REUSE_LIMIT_SECOND = 0x746,
#endif
#if PACKETVER >= 20101207
-/*20101207 to 20180621
+/*20101207 to 20180711
[ì°½]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
~ [Windows] must be equipped with.
20130807 to 20130814
@@ -9995,7 +9995,7 @@ Content has been saved in [SaveData_ExMacro%d]
MSG_FAIL_NEED_EQUIPPED_SPEAR = 0x747,
#endif
#if PACKETVER >= 20101214
-/*20101214 to 20180621
+/*20101214 to 20180711
드래곤 탑승시ì—만 사용가능합니다.
Available only on the dragon.
20130807 to 20130814
@@ -10003,7 +10003,7 @@ Available only on the dragon.
~ [Windows] must be equipped with.
*/
MSG_USESKILL_FAIL_DRAGON = 0x748,
-/*20101214 to 20180621
+/*20101214 to 20180711
본 ì„œë²„ì— ì ‘ì†í•  수 있는 ì •ì›ì´ 초과ë˜ì–´ ì§„ìž…ì´ ë¶ˆê°€ëŠ¥ 합니다.
Unable to proceed due to exceeding capacity.
20130807 to 20130814
@@ -10013,7 +10013,7 @@ Available only on the dragon.
MSG_OVER_CONNECT_USER = 0x749,
#endif
#if PACKETVER >= 20101228
-/*20101228 to 20180621
+/*20101228 to 20180711
실명 ì¸ì¦ì´ ë˜ì§€ 않았습니다. 실명ì¸ì¦ 사ì´íŠ¸ë¡œ ì´ë™í•©ë‹ˆë‹¤
Real name has not been verified. Go to name verification site.
20130807 to 20130814
@@ -10023,7 +10023,7 @@ Unable to proceed due to exceeding capacity.
MSG_AUTHENTICATE = 0x74a,
#endif
#if PACKETVER >= 20110104
-/*20110104 to 20180621
+/*20110104 to 20180711
저장 í•  ìŠ¬ë¡¯ì„ ì„ íƒ í•´ 주세요
Please select slot you are going to save.
20130807 to 20130814
@@ -10033,7 +10033,7 @@ Real name has not been verified. Go to name verification site.
MSG_SELECT_SAVESLOT = 0x74b,
#endif
#if PACKETVER >= 20110111
-/*20110111 to 20180621
+/*20110111 to 20180711
%s, 축하드립니다. '%s' 를 얻으셨습니다!
Congratulation %s, Acquired '%s' !
20130807 to 20130814
@@ -10043,7 +10043,7 @@ Please select slot you are going to save.
MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN2 = 0x74c,
#endif
#if PACKETVER >= 20110118
-/*20110118 to 20180621
+/*20110118 to 20180711
그루미ìƒíƒœì—서는 사용할 수 없습니다
Unable to use in gloomy state
20130807 to 20130814
@@ -10053,7 +10053,7 @@ Congratulation %s, Acquired '%s' !
MSG_NOTUSE_GROOMY = 0x74d,
#endif
#if PACKETVER >= 20110215
-/*20110215 to 20180621
+/*20110215 to 20180711
êµ¬ë§¤ë¬¼í’ˆì˜ í•©ê³„ê¸ˆì•¡ì´ ì¼€ë¦­í„°ê°€ 소지할 수 있는 최대 ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤
Purchased products has exceeded the total price.
20130807 to 20130814
@@ -10061,7 +10061,7 @@ Purchased products has exceeded the total price.
Unable to use in gloomy state
*/
MSG_BUYINGSTORE_OVERFLOW_MONEY = 0x74e,
-/*20110215 to 20180621
+/*20110215 to 20180711
현재 맵ì—서는 파티 ê°€ìž…ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Cannot join a party in this map.
20130807 to 20130814
@@ -10069,7 +10069,7 @@ Cannot join a party in this map.
Purchased products has exceeded the total price.
*/
MSG_PREVENT_PARTY_JOIN = 0x74f,
-/*20110215 to 20180621
+/*20110215 to 20180711
현재 맵ì—서는 파티 탈퇴가 불가능합니다.
Cannot leave a party in this map.
20130807 to 20130814
@@ -10077,7 +10077,7 @@ Cannot leave a party in this map.
Cannot join a party in this map.
*/
MSG_PREVENT_PARTY_LEAVE = 0x750,
-/*20110215 to 20180621
+/*20110215 to 20180711
현재 맵ì—서는 파티 ì¶”ë°©ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Cannot withdraw/break the party in this map.
20130807 to 20130814
@@ -10085,7 +10085,7 @@ Cannot withdraw/break the party in this map.
Cannot leave a party in this map.
*/
MSG_PREVENT_PARTY_EXPEL = 0x751,
-/*20110215 to 20180621
+/*20110215 to 20180711
실제 성명
Real Name
20130807 to 20130814
@@ -10093,7 +10093,7 @@ Real Name
Cannot withdraw/break the party in this map.
*/
MSG_SDO_REALNAME = 0x752,
-/*20110215 to 20180621
+/*20110215 to 20180711
ì‹ ë¶„ì¦ ë²ˆí˜¸
ID Number
20130807 to 20130814
@@ -10101,7 +10101,7 @@ ID Number
Real Name
*/
MSG_SDO_ID_NUMBER = 0x753,
-/*20110215 to 20180621
+/*20110215 to 20180711
ì´ë©”ì¼
E-mail
20130807 to 20130814
@@ -10109,7 +10109,7 @@ E-mail
ID Number
*/
MSG_SDO_EMAIL = 0x754,
-/*20110215 to 20180621
+/*20110215 to 20180711
ìž…ë ¥ì´ ì˜¬ë°”ë¥´ì§€ 않습니다
Invalid input
20130807 to 20130814
@@ -10121,7 +10121,7 @@ E-mail
#if PACKETVER >= 20110222
/*20110222 to 20130508
ìƒëŒ€ë°©ì—게 제니 ì§€ê¸‰ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20130515 to 20180621
+20130515 to 20180711
ìƒëŒ€ ìºë¦­í„°ê°€ 최대 ë³´ìœ ì œë‹ˆëŸ‰ì„ ì´ˆê³¼í•˜ì—¬ 거래가 불가능합니다.
Failed to send the zeny
20130807 to 20130814
@@ -10129,7 +10129,7 @@ Failed to send the zeny
Invalid input
*/
MSG_MCSTORE_FAIL_SELLER_MONEY_GIVE = 0x756,
-/*20110222 to 20180621
+/*20110222 to 20180711
해당 ì§ì—…ì´ ì•„ë‹™ë‹ˆë‹¤.
This is not a relevant job
20130807 to 20130814
@@ -10137,7 +10137,7 @@ This is not a relevant job
Failed to send the zeny
*/
MSG_INVALID_CLASS = 0x757,
-/*20110222 to 20180621
+/*20110222 to 20180711
해당 ì„±ë³„ì´ ì•„ë‹™ë‹ˆë‹¤.
This is not a relevant gender
20130807 to 20130814
@@ -10145,7 +10145,7 @@ This is not a relevant gender
This is not a relevant job
*/
MSG_INVALID_GENDER = 0x758,
-/*20110222 to 20180621
+/*20110222 to 20180711
ìœ ì €ë‹˜ì˜ ì •ë³´ê°€ ì¸ì¦ì— 성공했습니다.
User information identification was successful.
20130807 to 20130814
@@ -10153,7 +10153,7 @@ User information identification was successful.
This is not a relevant gender
*/
MSG_SUCCESS_AUTHENTICATE = 0x759,
-/*20110222 to 20180621
+/*20110222 to 20180711
ì´ë¦„ì´ ì¼ì¹˜í•˜ì§€ 않습니다. 재작성 해주세요.
Name does not match. Please retry.
20130807 to 20130814
@@ -10161,7 +10161,7 @@ Name does not match. Please retry.
User information identification was successful.
*/
MSG_INVALID_REALNAME = 0x75a,
-/*20110222 to 20180621
+/*20110222 to 20180711
ì‹ ë¶„ì¦ ë²ˆí˜¸ê°€ ì¼ì¹˜í•˜ì§€ 않습니다. 재작성 해주세요.
ID number does not match. Please retry.
20130807 to 20130814
@@ -10169,7 +10169,7 @@ ID number does not match. Please retry.
Name does not match. Please retry.
*/
MSG_INVALID_IDNUMBER = 0x75b,
-/*20110222 to 20180621
+/*20110222 to 20180711
현재 ì„œë¹„ìŠ¤ì— ì´ìƒì´ 있으니 ìž ì‹œ 후 ìž¬ì‹œë„ í•´ì£¼ì„¸ìš”.
Service is currently unavailable. Please try again later.
20130807 to 20130814
@@ -10179,7 +10179,7 @@ ID number does not match. Please retry.
MSG_INVALID_AUTHENTICATE = 0x75c,
#endif
#if PACKETVER >= 20110224
-/*20110224 to 20180621
+/*20110224 to 20180711
탑승 ìƒíƒœì—서는 ê³µê²©ì„ í•  수 없습니다.
Unable to attack while riding.
20130807 to 20130814
@@ -10187,7 +10187,7 @@ Unable to attack while riding.
Service is currently unavailable. Please try again later.
*/
MSG_CANNOT_ATTACK_IN_RIDING_STATE = 0x75d,
-/*20110224 to 20180621
+/*20110224 to 20180711
탑승 ìƒíƒœì—서는 스킬 ì‹œì „ì„ í•  수 없습니다.
Unable to cast the skill while riding.
20130807 to 20130814
@@ -10199,7 +10199,7 @@ Unable to attack while riding.
#if PACKETVER >= 20110228
/*20110228 to 20110228
비밀번호는 4ìžë¦¬ ì´ìƒ 6ìžë¦¬ì´í•˜ì—¬ì•¼ë§Œ 합니다.
-20110308 to 20180621
+20110308 to 20180711
비밀번호는 4ìžë¦¬ì´í•˜ì—¬ì•¼ë§Œ 합니다.
Pin number should be 4~6 characters.
20130807 to 20130814
@@ -10209,7 +10209,7 @@ Unable to cast the skill while riding.
MSG_STORE_PASSWORD_4_6 = 0x75f,
/*20110228 to 20110228
로그ì¸ì— 성공했습니다.
-20110308 to 20180621
+20110308 to 20180711
보안 ì¸ì¦ì— 성공했습니다.
Secured authentication is successful.
20130807 to 20130814
@@ -10219,7 +10219,7 @@ Pin number should be 4~6 characters.
MSG_SECOND_PASSWORD_LOGIN_SUCCESS = 0x760,
/*20110228 to 20110228
세컨드 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 성공했습니다.
-20110308 to 20180621
+20110308 to 20180711
보안 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 성공했습니다.
Succeeded in creating 2nd password.
20130807 to 20130814
@@ -10229,7 +10229,7 @@ Secured authentication is successful.
MSG_SECOND_PASSWORD_MAKE_SUCCESS = 0x761,
/*20110228 to 20110228
세컨드 패스워드를 삭제했습니다.
-20110308 to 20180621
+20110308 to 20180711
보안 패스워드를 삭제했습니다.
2nd password has been deleted.
20130807 to 20130814
@@ -10239,7 +10239,7 @@ Succeeded in creating 2nd password.
MSG_SECOND_PASSWORD_DEL_SUCCESS = 0x762,
/*20110228 to 20110228
세컨드 패스워드를 수정했습니다.
-20110308 to 20180621
+20110308 to 20180711
보안 패스워드를 수정했습니다.
2nd password has been corrected.
20130807 to 20130814
@@ -10249,7 +10249,7 @@ Succeeded in creating 2nd password.
MSG_SECOND_PASSWORD_EDIT_SUCCESS = 0x763,
/*20110228 to 20110228
로그ì¸ì— 실패했습니다.
-20110308 to 20180621
+20110308 to 20180711
ìž˜ëª»ëœ íŒ¨ìŠ¤ì›Œë“œìž…ë‹ˆë‹¤.(%d회남ìŒ)
Password is incorrect.
20130807 to 20130814
@@ -10259,7 +10259,7 @@ Password is incorrect.
MSG_SECOND_PASSWORD_LOGIN_FAILED = 0x764,
/*20110228 to 20110228
세컨드 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 실패했습니다.
-20110308 to 20180621
+20110308 to 20180711
보안 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 실패했습니다.
Failed to create 2nd password.
20130807 to 20130814
@@ -10269,7 +10269,7 @@ Password is incorrect.
MSG_SECOND_PASSWORD_MAKE_FAILED = 0x765,
/*20110228 to 20110228
세컨드 패스워드 ì‚­ì œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20110308 to 20180621
+20110308 to 20180711
보안 패스워드 ì‚­ì œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to delete 2nd password.
20130807 to 20130814
@@ -10279,7 +10279,7 @@ Failed to create 2nd password.
MSG_SECOND_PASSWORD_DEL_FAILED = 0x766,
/*20110228 to 20110228
세컨드 íŒ¨ìŠ¤ì›Œë“œì˜ ìˆ˜ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20110308 to 20180621
+20110308 to 20180711
보안 íŒ¨ìŠ¤ì›Œë“œì˜ ìˆ˜ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to correct 2nd password.
20130807 to 20130814
@@ -10289,7 +10289,7 @@ Failed to delete 2nd password.
MSG_SECOND_PASSWORD_EDIT_FAILED = 0x767,
/*20110228 to 20110228
세컨드 비밀번호ì—는 ì œí•œëœ ë²ˆí˜¸ë¥¼ 사용할수 없습니다.
-20110308 to 20180621
+20110308 to 20180711
입력하신패스워드는 사용하실수없습니다.
Unable to use restricted number in 2nd password.
20130807 to 20130814
@@ -10297,7 +10297,7 @@ Unable to use restricted number in 2nd password.
Failed to correct 2nd password.
*/
MSG_SECOND_PASSWORD_EDIT_RESTRICT_PW = 0x768,
-/*20110228 to 20180621
+/*20110228 to 20180711
주민등ë¡ë²ˆí˜¸ëŠ” 사용할수없습니다.
Unable to use your KSSN number.
20130807 to 20130814
@@ -10307,7 +10307,7 @@ Unable to use restricted number in 2nd password.
MSG_SECOND_PASSWORD_EDIT_PERSONALNUM_PW = 0x769,
/*20110228 to 20110228
보안번호
-20110308 to 20180621
+20110308 to 20180711
ì´ë¯¸ 패스워드가 존재합니다.
~There is already a password.
20130807 to 20130814
@@ -10317,7 +10317,7 @@ Unable to use your KSSN number.
MSG_SECOND_PASSWORD_MAKE_DUPLICATED_PW = 0x76a,
/*20110228 to 20110228
비밀번호 ìž…ë ¥ (4~6ìžë¦¬)
-20110308 to 20180621
+20110308 to 20180711
보안 패스워드
Security Code
20130807 to 20130814
@@ -10327,7 +10327,7 @@ Security Code
MSG_SECOND_PASSWORD = 0x76b,
/*20110228 to 20110228
ITEM
-20110308 to 20180621
+20110308 to 20180711
ê³„ì •ë³´ì•ˆì„ ìœ„í•˜ì—¬ 추가ì ì¸ 패스워드 ì„¤ì •ì„ ê¶Œìž¥í•©ë‹ˆë‹¤.
Account for the additional password security settings are recommended.
20130807 to 20130814
@@ -10337,7 +10337,7 @@ Security Code
MSG_SECOND_PASSWORD_INPUT = 0x76c,
/*20110228 to 20110228
SKILL
-20110308 to 20180621
+20110308 to 20180711
보안 패스워드 ì‚¬ìš©ì„ í•˜ì§€ 않습니다.
Do not use secure password.
20130807 to 20130814
@@ -10347,7 +10347,7 @@ Account for the additional password security settings are recommended.
MSG_SECOND_PASSWDRD_NOT_AVAILABLE_SUCCESS = 0x76d,
/*20110228 to 20110228
TACTIC
-20110308 to 20180621
+20110308 to 20180711
보안 패스워드 ì‚¬ìš©ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Use the set security password failed.
20130807 to 20130814
@@ -10357,7 +10357,7 @@ Do not use secure password.
MSG_SECOND_PASSWDRD_NOT_AVAILABLE_FAILED = 0x76e,
/*20110228 to 20110228
ETC
-20110308 to 20180621
+20110308 to 20180711
보안 패스워드를 사용합니다. 다ìŒë¡œê·¸ì¸ë¶€í„° ì ìš©ë©ë‹ˆë‹¤.
Use secure passwords. Will be applied to your next login.
20130807 to 20130814
@@ -10367,7 +10367,7 @@ Use the set security password failed.
MSG_SECOND_PASSWDRD_AVAILABLE_SUCCESS = 0x76f,
/*20110228 to 20110228
COMBAT
-20110308 to 20180621
+20110308 to 20180711
보안 패스워드 사용 ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Use the set security password failed.
20130807 to 20130814
@@ -10377,7 +10377,7 @@ Use secure passwords. Will be applied to your next login.
MSG_SECOND_PASSWDRD_AVAILABLE_FAILED = 0x770,
/*20110228 to 20110228
NON-COMBAT
-20110308 to 20180621
+20110308 to 20180711
ê³„ì •ë³´ì•ˆì„ ìœ„í•˜ì—¬ 추가ì ì¸ 패스워드를 설정합니다.
Added to the security of your account password is set.
20130807 to 20130814
@@ -10387,7 +10387,7 @@ Use the set security password failed.
MSG_SECOND_PASSWORD_INFO_1 = 0x771,
/*20110228 to 20110228
BUFF
-20110308 to 20180621
+20110308 to 20180711
ì•„ëž˜ì˜ ìˆ«ìžë²„íŠ¼ì„ ë§ˆìš°ìŠ¤ë¥¼ ì´ìš©í•˜ì—¬ 4ìžë¦¬ë¥¼ í´ë¦­í•˜ì„¸ìš”.
Use the mouse to enter the 4-digit password below.
20130807 to 20130814
@@ -10397,7 +10397,7 @@ Added to the security of your account password is set.
MSG_SECOND_PASSWORD_INFO_2 = 0x772,
/*20110228 to 20110228
AUTO EQUIPED
-20110308 to 20180621
+20110308 to 20180711
3회ì´ìƒ 잘못ëœíŒ¨ìŠ¤ì›Œë“œ 입력으로, 종료ë©ë‹ˆë‹¤.
Typing an incorrect password 3 times will shut down the client.
20130807 to 20130814
@@ -10407,7 +10407,7 @@ Use the mouse to enter the 4-digit password below.
MSG_SECOND_PASSWORD_INFO_3 = 0x773,
/*20110228 to 20110228
1st. ATTACK
-20110308 to 20180621
+20110308 to 20180711
ITEM
20130807 to 20130814
3회ì´ìƒ 잘못ëœíŒ¨ìŠ¤ì›Œë“œ 입력으로, 종료ë©ë‹ˆë‹¤.
@@ -10416,7 +10416,7 @@ Typing an incorrect password 3 times will shut down the client.
MSG_MACRO_ITEM = 0x774,
/*20110228 to 20110228
ATTACK
-20110308 to 20180621
+20110308 to 20180711
SKILL
20130807 to 20130814
ITEM
@@ -10425,7 +10425,7 @@ ITEM
/*20110228 to 20110228
Next attack time :
Next attack time:
-20110308 to 20180621
+20110308 to 20180711
TACTIC
20130807 to 20130814
SKILL
@@ -10433,7 +10433,7 @@ SKILL
MSG_MACRO_TACTIC = 0x776,
/*20110228 to 20110228
When died
-20110308 to 20180621
+20110308 to 20180711
ETC
20130807 to 20130814
TACTIC
@@ -10441,7 +10441,7 @@ TACTIC
MSG_MACRO_ETC = 0x777,
/*20110228 to 20110228
When invited to a party
-20110308 to 20180621
+20110308 to 20180711
COMBAT
20130807 to 20130814
ETC
@@ -10449,7 +10449,7 @@ ETC
MSG_MACRO_COMBAT = 0x778,
/*20110228 to 20110228
Pickup Item
-20110308 to 20180621
+20110308 to 20180711
NON-COMBAT
20130807 to 20130814
COMBAT
@@ -10457,7 +10457,7 @@ COMBAT
MSG_MACRO_NON_COMBAT = 0x779,
/*20110228 to 20110228
Over 85% Weight
-20110308 to 20180621
+20110308 to 20180711
BUFF
20130807 to 20130814
NON-COMBAT
@@ -10465,64 +10465,64 @@ NON-COMBAT
MSG_MACRO_BUFF = 0x77a,
#endif
#if PACKETVER >= 20110308
-/*20110308 to 20180621
+/*20110308 to 20180711
AUTO EQUIPED
20130807 to 20130814
BUFF
*/
MSG_MACRO_AUTO_EQUIPED = 0x77b,
-/*20110308 to 20180621
+/*20110308 to 20180711
1st. ATTACK
20130807 to 20130814
AUTO EQUIPED
*/
MSG_MACRO_1ST_ATTACK = 0x77c,
-/*20110308 to 20180621
+/*20110308 to 20180711
ATTACK
20130807 to 20130814
1st. ATTACK
*/
MSG_MACRO_ATTACK = 0x77d,
-/*20110308 to 20180621
+/*20110308 to 20180711
Next attack time :
Next attack time:
20130807 to 20130814
ATTACK
*/
MSG_MACRO_NEXT_ATK_TIME = 0x77e,
-/*20110308 to 20180621
+/*20110308 to 20180711
When died
20130807 to 20130814
Next attack time :
Next attack time:
*/
MSG_MACRO_WHEN_DIED = 0x77f,
-/*20110308 to 20180621
+/*20110308 to 20180711
When invited to a party
20130807 to 20130814
When died
*/
MSG_MACRO_WHEN_INVITED_PARTY = 0x780,
-/*20110308 to 20180621
+/*20110308 to 20180711
Pickup Item
20130807 to 20130814
When invited to a party
*/
MSG_MACRO_PICKUP_ITEM = 0x781,
-/*20110308 to 20180621
+/*20110308 to 20180711
Over 85% Weight
20130807 to 20130814
Pickup Item
*/
MSG_MACRO_OVERWEIGHT = 0x782,
-/*20110308 to 20180621
+/*20110308 to 20180711
진행중ì´ë˜ ìž‘ì—…(NPC대화,제조...)ì„ ì¢…ë£Œí›„ì— ë‹¤ì‹œ ì‹œë„하세요.
Any work in progress (NPC dialog, manufacturing ...) quit and try again.
20130807 to 20130814
Over 85% Weight
*/
MSG_BUSY = 0x783,
-/*20110308 to 20180621
+/*20110308 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Job경험치가 %d분간 %.2fë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
20130807 to 20130814
@@ -10534,7 +10534,7 @@ Any work in progress (NPC dialog, manufacturing ...) quit and try again.
#if PACKETVER >= 20110315
/*20110315 to 20110405
ExMacro_SaveData%d
-20110412 to 20180621
+20110412 to 20180711
SaveData_ExMacro%d
SaveData_ExMacro %d
20130807 to 20130814
@@ -10542,7 +10542,7 @@ SaveData_ExMacro %d
Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
*/
MSG_MACRO_SAVE = 0x785,
-/*20110315 to 20180621
+/*20110315 to 20180711
설정한 ë‚´ìš©ì´ [%s]ì— ì €ìž¥ë©ë‹ˆë‹¤.
Settings for [%s] are stored in.
20130807 to 20130814
@@ -10552,7 +10552,7 @@ SaveData_ExMacro %d
MSG_MACRO_SAVE_DATA2 = 0x786,
#endif
#if PACKETVER >= 20110322
-/*20110322 to 20180621
+/*20110322 to 20180711
보안레벨
Security level
20130807 to 20130814
@@ -10562,7 +10562,7 @@ Settings for [%s] are stored in.
MSG_SECOND_PASSWORD_LEVEL = 0x787,
#endif
#if PACKETVER >= 20110412
-/*20110412 to 20180621
+/*20110412 to 20180711
현재 ìºë¦­í„°ëŠ” 파티 ë˜ëŠ” ê¸¸ë“œì— ê°€ìž…ë˜ì–´ 있어서 삭제가 불가능합니다.
The current character is a party or join the guild can not be deleted.
20130807 to 20130814
@@ -10572,7 +10572,7 @@ Security level
MSG_RESULT_FAIL_CHAR_DELETE = 0x788,
#endif
#if PACKETVER >= 20110517
-/*20110517 to 20180621
+/*20110517 to 20180711
ë²½ì´ë‚˜ 물체 근처ì—서만 사용 í•  수 있습니다.
Objects can be used only near the wall.
20130807 to 20130814
@@ -10582,7 +10582,7 @@ The current character is a party or join the guild can not be deleted.
MSG_USESKILL_FAIL_NEER_WALL = 0x789,
#endif
#if PACKETVER >= 20110531
-/*20110531 to 20180621
+/*20110531 to 20180711
%s : 레벨 %d %s 파티구합니다.
%s: Level %d %s party to obtain level.
20130807 to 20130814
@@ -10590,7 +10590,7 @@ The current character is a party or join the guild can not be deleted.
Objects can be used only near the wall.
*/
MSG_SEEK_PARTY_SET = 0x78a,
-/*20110531 to 20180621
+/*20110531 to 20180711
탑승 ì¤‘ì¸ ìƒíƒœì—서는 ê³ ì‚ ì•„ì´í…œì„ 사용할 수 없습니다.
While boarding reins is not available for items.
20130807 to 20130814
@@ -10600,7 +10600,7 @@ While boarding reins is not available for items.
MSG_FAIELD_RIDING_OVERLAPPED = 0x78b,
#endif
#if PACKETVER >= 20110622
-/*20110622 to 20180621
+/*20110622 to 20180711
ì´ ìŠ¤í‚¬ì€ 1%ì˜ ê²½í—˜ì¹˜ê°€ 필요합니다.
This skill requires 1% experience.
20130807 to 20130814
@@ -10610,7 +10610,7 @@ While boarding reins is not available for items.
MSG_USESKILL_FAIL_NEED_EXP_1PERCENT = 0x78c,
#endif
#if PACKETVER >= 20110628
-/*20110628 to 20180621
+/*20110628 to 20180711
경 험 치 :
Experience value:
20130807 to 20130814
@@ -10618,7 +10618,7 @@ Experience value:
This skill requires 1% experience.
*/
MSG_EXP_MSG = 0x78d,
-/*20110628 to 20180621
+/*20110628 to 20180711
드 롭 율 :
Drop rate:
20130807 to 20130814
@@ -10626,7 +10626,7 @@ Drop rate:
Experience value:
*/
MSG_DROP_MSG = 0x78e,
-/*20110628 to 20180621
+/*20110628 to 20180711
사ë§íŽ˜ë„í‹° :
Death Penalty:
20130807 to 20130814
@@ -10636,7 +10636,7 @@ Drop rate:
MSG_DEATH_MSG = 0x78f,
/*20110628 to 20110713
%d%% (PC방 %d%% + 프리미엄 %d%% + %s서버 %d%%)
-20110713 to 20180621
+20110713 to 20180711
%d%% (PC방 %d%% + TPLUS %d%% + 프리미엄 %d%% + %s서버 %d%%)
%d%% (PCroom %d%% + TPLUS %d%% + Premium %d%% + %s Server %d%%)
20130807 to 20130814
@@ -10644,7 +10644,7 @@ Drop rate:
Death Penalty:
*/
MSG_BASIC_EXP_MSG = 0x790,
-/*20110628 to 20180621
+/*20110628 to 20180711
í•©ì°½ìŠ¤í‚¬ì„ ì‹œì „í•  파티ì›ì˜ SPëŸ‰ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
Amount of party members to cast the skill Chorus SP is low.
20130807 to 20130814
@@ -10654,7 +10654,7 @@ Amount of party members to cast the skill Chorus SP is low.
MSG_USESKILL_FAIL_CHORUS_SP_INSUFFICIENT = 0x791,
#endif
#if PACKETVER >= 20110706
-/*20110706 to 20180621
+/*20110706 to 20180711
ìƒëŒ€ ìºë¦­í„°ì˜ 소지 ì•„ì´í…œ ì¢…ë¥˜ì˜ í•œê³„ëŸ‰ 초과로 거래가 불가능합니다.
Relative character that has possession of the items can not trade because amount is exceeded.
20130807 to 20130814
@@ -10662,7 +10662,7 @@ Relative character that has possession of the items can not trade because amount
Amount of party members to cast the skill Chorus SP is low.
*/
MSG_CHARACTER_IS_OVER_COUNT = 0x792,
-/*20110706 to 20180621
+/*20110706 to 20180711
ìƒëŒ€ ìºë¦­í„°ì˜ 해당 ì•„ì´í…œì˜ 소지 한계량 초과로 거래가 불가능합니다.
Relative character that has possession of the item amount which exceeds makes it impossible to trade.
20130807 to 20130814
@@ -10670,7 +10670,7 @@ Relative character that has possession of the item amount which exceeds makes it
Relative character that has possession of the items can not trade because amount is exceeded.
*/
MSG_CHARACTER_IS_EACHITEM_OVER_COUNT = 0x793,
-/*20110706 to 20180621
+/*20110706 to 20180711
해당 ì•„ì´í…œì˜ 소지 한계량 초과로 êµ¬ìž…ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Amounts are exceeded the possession of the item is not available for purchase.
20130807 to 20130814
@@ -10680,7 +10680,7 @@ Relative character that has possession of the item amount which exceeds makes it
MSG_PURCHASE_FAIL_EACHITEM_COUNT = 0x794,
/*20110706 to 20110706
ìž ì‹œí›„ì— ë‹¤ì‹œ ì‹œë„해주세요.
-20110713 to 20180621
+20110713 to 20180711
ê´‘ê³  ë“±ë¡ ëŒ€ê¸°ì¤‘ìž…ë‹ˆë‹¤.
Advertising is pending registration.
20130807 to 20130814
@@ -10688,7 +10688,7 @@ Advertising is pending registration.
Amounts are exceeded the possession of the item is not available for purchase.
*/
MSG_PARTY_FAILED_TIMEOUT = 0x795,
-/*20110706 to 20180621
+/*20110706 to 20180711
ì•„ëž˜ì˜ íŒŒì¼ê³¼ í…ìŠ¤íŠ¸ë‚´ìš©ì„ í•¨ê»˜
ë¼ê·¸ë‚˜ë¡œí¬ ê³µì‹í™ˆíŽ˜ì´ì§€ -> ê³ ê°ì„¼í„° -> 문ì˜í•˜ê¸°ë¥¼
ì´ìš©í•˜ì—¬ 보내주시기 ë°”ëžë‹ˆë‹¤.
@@ -10700,7 +10700,7 @@ Advertising is pending registration.
MSG_UNEXCEPTION_MSG1ST = 0x796,
#endif
#if PACKETVER >= 20110719
-/*20110719 to 20180621
+/*20110719 to 20180711
빌ë§ì‹œìŠ¤í…œì— 오류가 ë°œìƒí–‡ìŠµë‹ˆë‹¤(%d)
Has caused an error in billing system(%d)
20130807 to 20130814
@@ -10710,7 +10710,7 @@ Has caused an error in billing system(%d)
With the following files and text content Ragnarok Official Website -> Support -> Contact Us to submit your comments by:
*/
MSG_INGAMBA_BILLING_ZSVR_ERROR = 0x797,
-/*20110719 to 20180621
+/*20110719 to 20180711
룬 ì•„ì´í…œ 소유 개수가 초과 ë˜ì–´ 구매가 실패 하였습니다.
Failed purchase of runes, items exceed the maximum number that can be held.
20130807 to 20130814
@@ -10718,7 +10718,7 @@ Failed purchase of runes, items exceed the maximum number that can be held.
Has caused an error in billing system(%d)
*/
MSG_CASH_FAILED_RUNE_OVERCOUNT = 0x798,
-/*20110719 to 20180621
+/*20110719 to 20180711
개별 ì•„ì´í…œ 개수가 초과 ë˜ì–´ 구매가 실패 하였습니다.
Exceeded the number of individual items, purchase failed.
20130807 to 20130814
@@ -10726,7 +10726,7 @@ Exceeded the number of individual items, purchase failed.
Failed purchase of runes, items exceed the maximum number that can be held.
*/
MSG_CASH_FAILED_EACHITEM_OVERCOUNT = 0x799,
-/*20110719 to 20180621
+/*20110719 to 20180711
ì•Œ 수 없는 오류가 ë°œìƒí•˜ì—¬ 구매가 실패 하였습니다.
Purchase failed due to an unknown error.
20130807 to 20130814
@@ -10734,7 +10734,7 @@ Purchase failed due to an unknown error.
Exceeded the number of individual items, purchase failed.
*/
MSG_CASH_FAILED_UNKOWN = 0x79a,
-/*20110719 to 20180621
+/*20110719 to 20180711
ìž ì‹œ 후 다시 ì‹œë„í•´ 주십시오.
Please try again later.
20130807 to 20130814
@@ -10742,7 +10742,7 @@ Please try again later.
Purchase failed due to an unknown error.
*/
MSG_CASH_FAILED_BUSY = 0x79b,
-/*20110719 to 20180621
+/*20110719 to 20180711
ì¿ ë‚˜ì´ ì•„ì´í…œì„ 장착 í•œ ìƒíƒœì—서만 사용 가능합니다.
Kunai must be equipped to use this skill.
20130807 to 20130814
@@ -10752,7 +10752,7 @@ Please try again later.
MSG_USESKILL_FAIL_NEED_EQUIPMENT_KUNAI = 0x79c,
#endif
#if PACKETVER >= 20110726
-/*20110726 to 20180621
+/*20110726 to 20180711
모집할 ìµœì†Œë ˆë²¨ê°’ì„ ìž…ë ¥í•´ì£¼ì„¸ìš”.
Please enter the value of the minimum level to be recruited.
20130807 to 20130814
@@ -10762,7 +10762,7 @@ Kunai must be equipped to use this skill.
MSG_SEEK_PARTY_LEVEL_HELP = 0x79d,
#endif
#if PACKETVER >= 20110803
-/*20110803 to 20180621
+/*20110803 to 20180711
존다기íšì‚¬NPC ì—게 ì•„ì´í…œì´ ìˆ˜ë ¹ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤. ì†Œì§€ì°½ì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
20130807 to 20130814
@@ -10772,7 +10772,7 @@ Please enter the value of the minimum level to be recruited.
MSG_FAILED_GET_ITEM_FROM_ZONEDA = 0x79e,
#endif
#if PACKETVER >= 20110810
-/*20110810 to 20180621
+/*20110810 to 20180711
ì´ ìŠ¤í‚¬ì€ ê³µì„±ì „ì—서만 사용 가능합니다.
This skill is only available in the siege.
20130807 to 20130814
@@ -10780,7 +10780,7 @@ This skill is only available in the siege.
Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
*/
MSG_USESKILL_FAIL_SIZE = 0x79f,
-/*20110810 to 20180621
+/*20110810 to 20180711
ì´ ìŠ¤í‚¬ì€ í”Œë ˆì´ì–´ì—게만 사용 가능합니다.
This skill is available only to the player.
20130807 to 20130814
@@ -10788,7 +10788,7 @@ This skill is available only to the player.
This skill is only available in the siege.
*/
MSG_USESKILL_FAIL_TOTARGET_PLAYER = 0x7a0,
-/*20110810 to 20180621
+/*20110810 to 20180711
ì°©ìš©ì´ ê¸ˆì§€ ëœ ìƒíƒœë¡œ ì°©ìš© í•  수 없습니다.
Forbidden to wear the state can not be worn.
20130807 to 20130814
@@ -10796,7 +10796,7 @@ Forbidden to wear the state can not be worn.
This skill is available only to the player.
*/
MSG_CAN_NOT_EQUIP_ITEM_FORBID = 0x7a1,
-/*20110810 to 20180621
+/*20110810 to 20180711
현재 위치ì—서는 ìƒì  ë° ì±„íŒ…ë°©ì˜ ìƒì„±ì´ 불가능합니다.
Current location of the shop and chat room creation is disabled.
20130807 to 20130814
@@ -10806,21 +10806,21 @@ Forbidden to wear the state can not be worn.
MSG_USESKILL_FAIL_THERE_ARE_NPC_AROUND = 0x7a2,
#endif
#if PACKETVER >= 20110816
-/*20110816 to 20180621
+/*20110816 to 20180711
Elapsed time: %d:%d:%d / %d:%d:%d
20130807 to 20130814
현재 위치ì—서는 ìƒì  ë° ì±„íŒ…ë°©ì˜ ìƒì„±ì´ 불가능합니다.
Current location of the shop and chat room creation is disabled.
*/
MSG_REPLAY_ELAPSEDTIME = 0x7a3,
-/*20110816 to 20180621
+/*20110816 to 20180711
Speed : X 1/4
Speed: X 1/4
20130807 to 20130814
Elapsed time: %d:%d:%d / %d:%d:%d
*/
MSG_REPLAY_SPEED1_4 = 0x7a4,
-/*20110816 to 20180621
+/*20110816 to 20180711
Speed : X 1/2
Speed: X 1/2
20130807 to 20130814
@@ -10828,7 +10828,7 @@ Speed : X 1/4
Speed: X 1/4
*/
MSG_REPLAY_SPEED1_2 = 0x7a5,
-/*20110816 to 20180621
+/*20110816 to 20180711
Speed : X 1
Speed: X 1
20130807 to 20130814
@@ -10836,7 +10836,7 @@ Speed : X 1/2
Speed: X 1/2
*/
MSG_REPLAY_SPEED1 = 0x7a6,
-/*20110816 to 20180621
+/*20110816 to 20180711
Speed : X 2
Speed: X 2
20130807 to 20130814
@@ -10844,7 +10844,7 @@ Speed : X 1
Speed: X 1
*/
MSG_REPLAY_SPEED2 = 0x7a7,
-/*20110816 to 20180621
+/*20110816 to 20180711
Speed : X 4
Speed: X 4
20130807 to 20130814
@@ -10852,7 +10852,7 @@ Speed : X 2
Speed: X 2
*/
MSG_REPLAY_SPEED4 = 0x7a8,
-/*20110816 to 20180621
+/*20110816 to 20180711
Speed : X 8
Speed: X 8
20130807 to 20130814
@@ -10860,7 +10860,7 @@ Speed : X 4
Speed: X 4
*/
MSG_REPLAY_SPEED8 = 0x7a9,
-/*20110816 to 20180621
+/*20110816 to 20180711
Speed : X 16
Speed: X 16
20130807 to 20130814
@@ -10868,7 +10868,7 @@ Speed : X 8
Speed: X 8
*/
MSG_REPLAY_SPEED16 = 0x7aa,
-/*20110816 to 20180621
+/*20110816 to 20180711
Speed : 알수없ìŒ
Speed: Unknown
20130807 to 20130814
@@ -10876,7 +10876,7 @@ Speed : X 16
Speed: X 16
*/
MSG_REPLAY_SPEEDUNKNOWN = 0x7ab,
-/*20110816 to 20180621
+/*20110816 to 20180711
Service Info : %s
Service Info: %s
20130807 to 20130814
@@ -10884,7 +10884,7 @@ Speed : 알수없ìŒ
Speed: Unknown
*/
MSG_REPLAY_CHRVICEINFO = 0x7ac,
-/*20110816 to 20180621
+/*20110816 to 20180711
Character Name : %s
Character Name: %s
20130807 to 20130814
@@ -10892,7 +10892,7 @@ Service Info : %s
Service Info: %s
*/
MSG_REPLAY_CHARACTERNAME = 0x7ad,
-/*20110816 to 20180621
+/*20110816 to 20180711
Map Name : %s
Map Name: %s
20130807 to 20130814
@@ -10900,65 +10900,65 @@ Character Name : %s
Character Name: %s
*/
MSG_REPLAY_MAPNAME = 0x7ae,
-/*20110816 to 20180621
+/*20110816 to 20180711
Record Time: %d-%01d-%01d %d: %02d: %02d
20130807 to 20130814
Map Name : %s
Map Name: %s
*/
MSG_REPLAY_RECORDTIME = 0x7af,
-/*20110816 to 20180621
+/*20110816 to 20180711
Play Time: %02d: %02d: %02d
20130807 to 20130814
Record Time: %d-%01d-%01d %d: %02d: %02d
*/
MSG_REPLAY_PLAYTIME = 0x7b0,
-/*20110816 to 20180621
+/*20110816 to 20180711
No Replay File.
20130807 to 20130814
Play Time: %02d: %02d: %02d
*/
MSG_REPLAY_NOREPLAYFILE = 0x7b1,
-/*20110816 to 20180621
+/*20110816 to 20180711
Server No Matching
20130807 to 20130814
No Replay File.
*/
MSG_REPLAY_SERVERNOMATCH = 0x7b2,
-/*20110816 to 20180621
+/*20110816 to 20180711
Replay Option Setting
20130807 to 20130814
Server No Matching
*/
MSG_REPLAY_REPLAYOPTIONSETTING = 0x7b3,
-/*20110816 to 20180621
+/*20110816 to 20180711
íŒŒì¼ ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”.
Enter File Name
20130807 to 20130814
Replay Option Setting
*/
MSG_REPLAY_ENTERTHEFILENAME = 0x7b4,
-/*20110816 to 20180621
+/*20110816 to 20180711
Set Replay Save Data
20130807 to 20130814
íŒŒì¼ ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”.
Enter File Name
*/
MSG_REPLAY_SETREPLAYSAVEDATA = 0x7b5,
-/*20110816 to 20180621
+/*20110816 to 20180711
Set Rec Option
20130807 to 20130814
Set Replay Save Data
*/
MSG_REPLAY_SETRECOPTION = 0x7b6,
-/*20110816 to 20180621
+/*20110816 to 20180711
%.1f %% Pos☞:%d:%d:%d
%.1f % Pos->:%d:%d:%d
20130807 to 20130814
Set Rec Option
*/
MSG_REPLAY_GAGEPOS1 = 0x7b7,
-/*20110816 to 20180621
+/*20110816 to 20180711
%.1f %% Pos☞:ì´ë™ë¶ˆê°€
%.1f % Pos->:cannot move
20130807 to 20130814
@@ -10966,57 +10966,57 @@ Set Rec Option
%.1f % Pos->:%d:%d:%d
*/
MSG_REPLAY_GAGEPOS2 = 0x7b8,
-/*20110816 to 20180621
+/*20110816 to 20180711
Start
20130807 to 20130814
%.1f %% Pos☞:ì´ë™ë¶ˆê°€
%.1f % Pos->:cannot move
*/
MSG_REPLAY_START = 0x7b9,
-/*20110816 to 20180621
+/*20110816 to 20180711
Stop
20130807 to 20130814
Start
*/
MSG_REPLAY_STOP = 0x7ba,
-/*20110816 to 20180621
+/*20110816 to 20180711
Input FileName -> Start
20130807 to 20130814
Stop
*/
MSG_REPLAY_START2 = 0x7bb,
-/*20110816 to 20180621
+/*20110816 to 20180711
Open Option
20130807 to 20130814
Input FileName -> Start
*/
MSG_REPLAY_OPENOPTION = 0x7bc,
-/*20110816 to 20180621
+/*20110816 to 20180711
Close Option
20130807 to 20130814
Open Option
*/
MSG_REPLAY_CLOSEOPION = 0x7bd,
-/*20110816 to 20180621
+/*20110816 to 20180711
End
20130807 to 20130814
Close Option
*/
MSG_REPLAY_END = 0x7be,
-/*20110816 to 20180621
+/*20110816 to 20180711
Time
20130807 to 20130814
End
*/
MSG_REPLAY_TIME = 0x7bf,
-/*20110816 to 20180621
+/*20110816 to 20180711
파티&친구
Party & Friends
20130807 to 20130814
Time
*/
MSG_REPLAY_PARTYFRIEND = 0x7c0,
-/*20110816 to 20180621
+/*20110816 to 20180711
채팅
Chat
20130807 to 20130814
@@ -11024,7 +11024,7 @@ Chat
Party & Friends
*/
MSG_REPLAY_CHAT = 0x7c1,
-/*20110816 to 20180621
+/*20110816 to 20180711
단축키
Shortcuts
20130807 to 20130814
@@ -11032,7 +11032,7 @@ Shortcuts
Chat
*/
MSG_REPLAY_SHORTCUTS = 0x7c2,
-/*20110816 to 20180621
+/*20110816 to 20180711
ìžë™ 파ì¼ëª… ìƒì„±
Automatic filename generation
20130807 to 20130814
@@ -11040,7 +11040,7 @@ Automatic filename generation
Shortcuts
*/
MSG_REPLAY_AUTOMATICFILENAME = 0x7c3,
-/*20110816 to 20180621
+/*20110816 to 20180711
íŒŒì¼ ì¤‘ë³µ 채í¬
Checking for duplicate files
20130807 to 20130814
@@ -11048,7 +11048,7 @@ Checking for duplicate files
Automatic filename generation
*/
MSG_REPLAY_CHECKINGFILE = 0x7c4,
-/*20110816 to 20180621
+/*20110816 to 20180711
ë™ì¼í•œ 파ì¼ì´ 존재 합니다.
The same file exists already.
20130807 to 20130814
@@ -11056,14 +11056,14 @@ The same file exists already.
Checking for duplicate files
*/
MSG_REPLAY_THESAMEFILEEXISTS = 0x7c5,
-/*20110816 to 20180621
+/*20110816 to 20180711
Record Start
20130807 to 20130814
ë™ì¼í•œ 파ì¼ì´ 존재 합니다.
The same file exists already.
*/
MSG_REPLAY_RECORDSTART = 0x7c6,
-/*20110816 to 20180621
+/*20110816 to 20180711
is Saved.
20130807 to 20130814
Record Start
@@ -11071,14 +11071,14 @@ Record Start
MSG_REPLAY_RECORDEND = 0x7c7,
#endif
#if PACKETVER >= 20110823
-/*20110823 to 20180621
+/*20110823 to 20180711
Weight : %3d / %3d
Weight: %3d / %3d
20130807 to 20130814
is Saved.
*/
MSG_WEIGHT = 0x7c8,
-/*20110823 to 20180621
+/*20110823 to 20180711
Total : %s C
Total: %s C
20130807 to 20130814
@@ -11086,7 +11086,7 @@ Weight : %3d / %3d
Weight: %3d / %3d
*/
MSG_TOTAL = 0x7c9,
-/*20110823 to 20180621
+/*20110823 to 20180711
[수리검]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Shuriken] must be equipped.
20130807 to 20130814
@@ -11096,79 +11096,79 @@ Total: %s C
MSG_FAIL_NEED_EQUIPPED_SYURIKEN = 0x7ca,
#endif
#if PACKETVER >= 20110831
-/*20110831 to 20180621
+/*20110831 to 20180711
Base Lv. %d
20130807 to 20130814
[수리검]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Shuriken] must be equipped.
*/
MSG__BASIC_MSG_BASE = 0x7cb,
-/*20110831 to 20180621
+/*20110831 to 20180711
Job Lv. %d
20130807 to 20130814
Base Lv. %d
*/
MSG__BASIC_MSG_JOB = 0x7cc,
-/*20110831 to 20180621
+/*20110831 to 20180711
Zeny : %s
Zeny: %s
20130807 to 20130814
Job Lv. %d
*/
MSG_BASIC_MSG_ZENY = 0x7cd,
-/*20110831 to 20180621
+/*20110831 to 20180711
Trilinear
20130807 to 20130814
Zeny : %s
Zeny: %s
*/
MSG_GRAPHIC_MSG_TRILINEAR = 0x7ce,
-/*20110831 to 20180621
+/*20110831 to 20180711
attack
20130807 to 20130814
Trilinear
*/
MSG_GRAPHIC_MSG_ATTACK = 0x7cf,
-/*20110831 to 20180621
+/*20110831 to 20180711
skill
20130807 to 20130814
attack
*/
MSG_GRAPHIC_MSG_SKILL = 0x7d0,
-/*20110831 to 20180621
+/*20110831 to 20180711
item
20130807 to 20130814
skill
*/
MSG_GRAPHIC_MSG_ITEM = 0x7d1,
-/*20110831 to 20180621
+/*20110831 to 20180711
NoCtrl
20130807 to 20130814
item
*/
MSG_GRAPHIC_MSG_NOCTRL = 0x7d2,
-/*20110831 to 20180621
+/*20110831 to 20180711
전장
More
20130807 to 20130814
NoCtrl
*/
MSG_GRAPHIC_MSG_BATTLE = 0x7d3,
-/*20110831 to 20180621
+/*20110831 to 20180711
(Character/Total Slot)
20130807 to 20130814
전장
More
*/
MSG_CHARACTER_MSG_CHARACTERTOTALSLOT = 0x7d4,
-/*20110831 to 20180621
+/*20110831 to 20180711
Premium Service
VIP Service
20130807 to 20130814
(Character/Total Slot)
*/
MSG_CHARACTER_MSG_PREMIUMSERVICE = 0x7d5,
-/*20110831 to 20180621
+/*20110831 to 20180711
Premium
VIP
20130807 to 20130814
@@ -11176,21 +11176,21 @@ Premium Service
VIP Service
*/
MSG_CHARACTER_MSG_PREMIUM = 0x7d6,
-/*20110831 to 20180621
+/*20110831 to 20180711
Service
20130807 to 20130814
Premium
VIP
*/
MSG_CHARACTER_MSG_SERVICE = 0x7d7,
-/*20110831 to 20180621
+/*20110831 to 20180711
Billing Service
VIP
20130807 to 20130814
Service
*/
MSG_CHARACTER_MSG_BILLINGSERVICE = 0x7d8,
-/*20110831 to 20180621
+/*20110831 to 20180711
Billing
VIP
20130807 to 20130814
@@ -11198,26 +11198,26 @@ Billing Service
VIP
*/
MSG_CHARACTER_MSG_BILLING = 0x7d9,
-/*20110831 to 20180621
+/*20110831 to 20180711
Command List
20130807 to 20130814
Billing
VIP
*/
MSG_MSG_COMMANDLIST = 0x7da,
-/*20110831 to 20180621
+/*20110831 to 20180711
LEVEL
20130807 to 20130814
Command List
*/
MSG_SEEK_PARTY_LEVEL = 0x7db,
-/*20110831 to 20180621
+/*20110831 to 20180711
MAP
20130807 to 20130814
LEVEL
*/
MSG_SEEK_PARTY_MAP = 0x7dc,
-/*20110831 to 20180621
+/*20110831 to 20180711
JOB
20130807 to 20130814
MAP
@@ -11225,7 +11225,7 @@ MAP
MSG_SEEK_PARTY_JOB = 0x7dd,
#endif
#if PACKETVER >= 20110906
-/*20110906 to 20180621
+/*20110906 to 20180711
Not Available
20130807 to 20130814
JOB
@@ -11235,7 +11235,7 @@ JOB
#if PACKETVER >= 20110920
/*20110920 to 20110929
[수호 ì²œì‚¬ì˜ ë³´í˜¸] ìŠ¤í‚¬ì€ ë§Œë ™ì¼ ê²½ìš°, 경험치 100% ì´ìƒì¼ 때는 사용할 수 없습니다.
-20111004 to 20180621
+20111004 to 20180711
[수호 ì²œì‚¬ì˜ ë³´í˜¸] ë§Œë ™ì¼ ê²½ìš° 사용할 수 없습니다.
[Protection of Guardian Angel] You can't use it when you reach the highest level.
20130807 to 20130814
@@ -11244,7 +11244,7 @@ Not Available
MSG_MSG_SUPERNOVICE_CHOPOKGI_CAPPEDLEVEL = 0x7df,
#endif
#if PACKETVER >= 20110928
-/*20110928 to 20180621
+/*20110928 to 20180711
ì •ë§ ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you really want to move?
20130807 to 20130814
@@ -11252,7 +11252,7 @@ Do you really want to move?
[Protection of Guardian Angel] You can't use it when you reach the highest level.
*/
MSG_CHANGE_CHARACTER_SLOT = 0x7e0,
-/*20110928 to 20180621
+/*20110928 to 20180711
ìºë¦­í„° 슬롯 ì´ë™ì— 실패했습니다.
Failed to move Char slot.
20130807 to 20130814
@@ -11262,7 +11262,7 @@ Do you really want to move?
MSG_CHANGE_CHARACTER_SLOT_FAILED = 0x7e1,
#endif
#if PACKETVER >= 20111004
-/*20111004 to 20180621
+/*20111004 to 20180711
ìºë¦­í„° ì´ë¦„ì´ ìž˜ëª» ë˜ì—ˆìŠµë‹ˆë‹¤.
Character name is invalid.
20130807 to 20130814
@@ -11270,7 +11270,7 @@ Character name is invalid.
Failed to move Char slot.
*/
MSG_CHARACTERNAME_ERROR = 0x7e2,
-/*20111004 to 20180621
+/*20111004 to 20180711
퀘스트보기창
Show Quest
20130807 to 20130814
@@ -11284,7 +11284,7 @@ Character name is invalid.
ì •ë§ íƒ­ì„ ì œê±°í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
20111025 to 20111116
청소년 ë³´í˜¸ë²•ì— ë”°ë¼, ìž ì‹œ 후 0ì‹œ 부터 6ì‹œ 까지 ^ff0000만 16세 미만 ê³ ê°ë‹˜ë“¤ì˜ 게임 ì´ìš©ì´ 제한^000000ë©ë‹ˆë‹¤.
-20111122 to 20180621
+20111122 to 20180711
청소년 ë³´í˜¸ë²•ì— ë”°ë¼, ìž ì‹œ 후 0ì‹œ 부터 6ì‹œ 까지 만 16세 미만 ê³ ê°ë‹˜ë“¤ì˜ 게임 ì´ìš©ì´ 제한ë©ë‹ˆë‹¤.
Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16 of your game use is limited.
20130807 to 20130814
@@ -11294,7 +11294,7 @@ Show Quest
MSG_SHUTDOWN_ALERT_MSG = 0x7e4,
/*20111017 to 20111021
ë”ì´ìƒ íƒ­ì„ ì œê±°í•  수 없습니다.
-20111025 to 20180621
+20111025 to 20180711
청소년 ë³´í˜¸ë²•ì— ë”°ë¼, 0ì‹œ 부터 6ì‹œ 까지 ^ff0000만 16세 미만 ê³ ê°ë‹˜ë“¤ì˜ 게임 ì´ìš©ì´ 제한^000000ë˜ë©°, ê²Œìž„ì„ ì¢…ë£Œí•©ë‹ˆë‹¤.
Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^000000 limit your use of the game and the game ends.
20130807 to 20130814
@@ -11304,7 +11304,7 @@ Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16
MSG_BAN_SHUTDOWN_TEENAGER = 0x7e5,
/*20111017 to 20111021
ë”ì´ìƒ íƒ­ì„ ì¶”ê°€í•  수 없습니다.
-20111025 to 20180621
+20111025 to 20180711
ìºë¦­í„° ì´ë¦„ì„ ë³€ê²½í•˜ê¸° 위해서는 길드ì—ì„œ 탈퇴 해야 합니다.
In order to change the character name, you must leave the guild.
20130807 to 20130814
@@ -11314,7 +11314,7 @@ Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^
MSG_FAILED_RENAME_BELONGS_TO_GUILD = 0x7e6,
#endif
#if PACKETVER >= 20111025
-/*20111025 to 20180621
+/*20111025 to 20180711
ìºë¦­í„° ì´ë¦„ì„ ë³€ê²½í•˜ê¸° 위해서는 파티ì—ì„œ 탈퇴 해야 합니다.
In order to change the character name, you must leave the party.
20130807 to 20130814
@@ -11322,7 +11322,7 @@ In order to change the character name, you must leave the party.
In order to change the character name, you must leave the guild.
*/
MSG_FAILED_RENAME_BELONGS_TO_PARTY = 0x7e7,
-/*20111025 to 20180621
+/*20111025 to 20180711
ì•Œ 수 없는 오류로 ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
Character name change failed, due an unknown error.
20130807 to 20130814
@@ -11332,7 +11332,7 @@ In order to change the character name, you must leave the party.
MSG_FAILED_RENAME_UNKOWN = 0x7e8,
#endif
#if PACKETVER >= 20111101
-/*20111101 to 20180621
+/*20111101 to 20180711
ì´ë¯¸ ìºë¦­í„° ìŠ¬ë¡¯ë³€ê²½ì´ ê°€ëŠ¥í•œ ìƒíƒœìž…니다.(%d)
Ready to change character slot in.(%d)
20130807 to 20130814
@@ -11340,7 +11340,7 @@ Ready to change character slot in.(%d)
Character name change failed, due an unknown error.
*/
MSG_CHARSLOT_CHANGE_DUPLICATE = 0x7e9,
-/*20111101 to 20180621
+/*20111101 to 20180711
ì´ë¯¸ ìºë¦­í„° ì´ë¦„ë³€ê²½ì´ ê°€ëŠ¥í•œ ìƒíƒœìž…니다.(%d)
Ready to change character name in.(%d)
20130807 to 20130814
@@ -11348,7 +11348,7 @@ Ready to change character name in.(%d)
Ready to change character slot in.(%d)
*/
MSG_CHARNAME_CHANGE_DUPLICATE = 0x7ea,
-/*20111101 to 20180621
+/*20111101 to 20180711
변경하려는 ì´ë¦„ì˜ ê¸¸ì´ê°€ 최대í¬ê¸°ë¥¼ 초과하여 ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
Length exceeds the maximum size of the character name you want to change.
20130807 to 20130814
@@ -11356,7 +11356,7 @@ Length exceeds the maximum size of the character name you want to change.
Ready to change character name in.(%d)
*/
MSG_FAILED_RENAME_OVER_LENGTH = 0x7eb,
-/*20111101 to 20180621
+/*20111101 to 20180711
사용할 수 없는 단어가 í¬í•¨ë˜ì–´ ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
Name contains invalid characters. Character name change failed.
20130807 to 20130814
@@ -11364,7 +11364,7 @@ Name contains invalid characters. Character name change failed.
Length exceeds the maximum size of the character name you want to change.
*/
MSG_FAILED_RENAME_PREVENTNAM = 0x7ec,
-/*20111101 to 20180621
+/*20111101 to 20180711
ì´ë¦„ ë³€ê²½ì´ ê¸ˆì§€ëœ ìƒíƒœì´ë¯€ë¡œ ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
The name change is prohibited. Character name change failed.
20130807 to 20130814
@@ -11374,7 +11374,7 @@ Name contains invalid characters. Character name change failed.
MSG_FAILED_RENAME_FORBIDDEN = 0x7ed,
#endif
#if PACKETVER >= 20111108
-/*20111108 to 20180621
+/*20111108 to 20180711
완료
Complete
20130807 to 20130814
@@ -11386,7 +11386,7 @@ The name change is prohibited. Character name change failed.
#if PACKETVER >= 20111114
/*20111114 to 20111116
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 %d분간 %d%% ì¦ê°€í•©ë‹ˆë‹¤.
-20111122 to 20180621
+20111122 to 20180711
%d분간 ì–»ì„ ìˆ˜ 있는 경험치가 %d%% ì¦ê°€í•©ë‹ˆë‹¤.
During %d minutes your Exp will increase by %d%%.
20130807 to 20130814
@@ -11394,7 +11394,7 @@ During %d minutes your Exp will increase by %d%%.
Complete
*/
MSG_PLUSEXP_VALUE = 0x7ef,
-/*20111114 to 20180621
+/*20111114 to 20180711
소환까지 %02d초남았습니다.
%02d seconds left until summon.
20130807 to 20130814
@@ -11402,7 +11402,7 @@ Complete
During %d minutes your Exp will increase by %d%%.
*/
MSG_PARTY_RECALL_TIME = 0x7f0,
-/*20111114 to 20180621
+/*20111114 to 20180711
íŒŒí‹°ìž¥ì´ ë‹¹ì‹ ì„ %s (%s) ë¡œ 소환합니다.소환시 %d zenyê°€ 소모ë©ë‹ˆë‹¤.
Your party leader summons you to %s (%s). Warp costs %d Zeny.
20130807 to 20130814
@@ -11410,7 +11410,7 @@ Your party leader summons you to %s (%s). Warp costs %d Zeny.
%02d seconds left until summon.
*/
MSG_PARTY_RECALL_INFO = 0x7f1,
-/*20111114 to 20180621
+/*20111114 to 20180711
소환대ìƒ
Summon target
20130807 to 20130814
@@ -11418,7 +11418,7 @@ Summon target
Your party leader summons you to %s (%s). Warp costs %d Zeny.
*/
MSG_RECALL_TARGET = 0x7f2,
-/*20111114 to 20180621
+/*20111114 to 20180711
차단목ë¡
Block List
20130807 to 20130814
@@ -11428,7 +11428,7 @@ Summon target
MSG_PARTY_BLACKLIST = 0x7f3,
/*20111114 to 20120207
파티 광고를 등ë¡í•˜ê¸° 위해 1000제니가 소모ë©ë‹ˆë‹¤.
-20120214 to 20180621
+20120214 to 20180711
파티 광고를 등ë¡í•˜ê¸° 위해 %d제니가 소모ë©ë‹ˆë‹¤.
%d Zeny will be spent for making party ad.
20130807 to 20130814
@@ -11436,7 +11436,7 @@ Summon target
Block List
*/
MSG_PARTY_CF_PAY = 0x7f4,
-/*20111114 to 20180621
+/*20111114 to 20180711
파티 광고를 하기 위한 제니가 부족합니다.
Insufficient Zeny for making party ad.
20130807 to 20130814
@@ -11444,7 +11444,7 @@ Insufficient Zeny for making party ad.
%d Zeny will be spent for making party ad.
*/
MSG_PARTY_CF_PAY_SHORTAGE_COST = 0x7f5,
-/*20111114 to 20180621
+/*20111114 to 20180711
)님 파티 가입승ì¸
) party: accept invitation
20130807 to 20130814
@@ -11452,7 +11452,7 @@ Insufficient Zeny for making party ad.
Insufficient Zeny for making party ad.
*/
MSG_PARTY_ADD_OK = 0x7f6,
-/*20111114 to 20180621
+/*20111114 to 20180711
)님 파티 가입거부
) party: decline invitation
20130807 to 20130814
@@ -11460,7 +11460,7 @@ Insufficient Zeny for making party ad.
) party: accept invitation
*/
MSG_PARTY_ADD_REFUSES = 0x7f7,
-/*20111114 to 20180621
+/*20111114 to 20180711
)님 장비창보기
) party: show equipment window
20130807 to 20130814
@@ -11468,7 +11468,7 @@ Insufficient Zeny for making party ad.
) party: decline invitation
*/
MSG_PARTY_ITEM_VIEW = 0x7f8,
-/*20111114 to 20180621
+/*20111114 to 20180711
한글18글ìž,ì˜ë¬¸36ê¸€ìž ìž…ë ¥ê°€ëŠ¥
Up to 36 english letters can be entered
20130807 to 20130814
@@ -11476,7 +11476,7 @@ Up to 36 english letters can be entered
) party: show equipment window
*/
MSG_SEEK_PARTY_MEMO_HELP = 0x7f9,
-/*20111114 to 20180621
+/*20111114 to 20180711
지ì›í•˜ê¸°
Enter
20130807 to 20130814
@@ -11484,7 +11484,7 @@ Enter
Up to 36 english letters can be entered
*/
MSG_PARTY_REQUEST = 0x7fa,
-/*20111114 to 20180621
+/*20111114 to 20180711
1:1대화하기
1:1 Chat
20130807 to 20130814
@@ -11492,7 +11492,7 @@ Up to 36 english letters can be entered
Enter
*/
MSG_DIRECT_CHAT = 0x7fb,
-/*20111114 to 20180621
+/*20111114 to 20180711
차단하기
Block
20130807 to 20130814
@@ -11502,7 +11502,7 @@ Block
MSG_ADD_BLACKLIST = 0x7fc,
#endif
#if PACKETVER >= 20111122
-/*20111122 to 20180621
+/*20111122 to 20180711
파티장ì—게 소환ë˜ê¸° 위한 제니가 부족합니다.
Insufficient Zeny for recall.
20130807 to 20130814
@@ -11510,7 +11510,7 @@ Insufficient Zeny for recall.
Block
*/
MSG_PARTY_RECRUIT_NOT_RECALL_PAY = 0x7fd,
-/*20111122 to 20180621
+/*20111122 to 20180711
ë©”ëª¨ëž€ì— íŒŒí‹°ê´‘ê³ ë¥¼ ì¨ì£¼ì„¸ìš”.
Input your party ad.
20130807 to 20130814
@@ -11518,7 +11518,7 @@ Input your party ad.
Insufficient Zeny for recall.
*/
MSG_PARTY_RECRUIT_MEMO_ERROR = 0x7fe,
-/*20111122 to 20180621
+/*20111122 to 20180711
íŒŒí‹°ìž¥ë§Œì´ íŒŒí‹°ê´‘ê³ ë¥¼ 등ë¡í• ìˆ˜ìžˆìŠµë‹ˆë‹¤.
Only party leader can register party ad.
20130807 to 20130814
@@ -11526,7 +11526,7 @@ Only party leader can register party ad.
Input your party ad.
*/
MSG_PARTY_RECRUIT_ERROR = 0x7ff,
-/*20111122 to 20180621
+/*20111122 to 20180711
ì´ë¯¸ 지ì›í•œ 파티광고입니다.
You have already accepted this ad.
20130807 to 20130814
@@ -11534,7 +11534,7 @@ You have already accepted this ad.
Only party leader can register party ad.
*/
MSG_PARTY_REFUSE_ERROR = 0x800,
-/*20111122 to 20180621
+/*20111122 to 20180711
ë‚´ìš©
For
20130807 to 20130814
@@ -11542,7 +11542,7 @@ For
You have already accepted this ad.
*/
MSG_PARTY_RECRUIT_INFO = 0x801,
-/*20111122 to 20180621
+/*20111122 to 20180711
장비
E
20130807 to 20130814
@@ -11550,7 +11550,7 @@ E
For
*/
MSG_INVENTORY_TABNAME_1 = 0x802,
-/*20111122 to 20180621
+/*20111122 to 20180711
ê°œì¸
F
20130807 to 20130814
@@ -11558,7 +11558,7 @@ F
E
*/
MSG_INVENTORY_TABNAME_3 = 0x803,
-/*20111122 to 20180621
+/*20111122 to 20180711
ì•„ì´í…œ 버리기 잠금
Drop Lock: On/Off
20130807 to 20130814
@@ -11566,7 +11566,7 @@ E
F
*/
MSG_ITEM_DROP_LOCK = 0x804,
-/*20111122 to 20180621
+/*20111122 to 20180711
íŒŒí‹°ì› ì°¾ê¸° 알람
Party Alarm
20130807 to 20130814
@@ -11576,7 +11576,7 @@ Party Alarm
MSG_PARTY_RECRUIT_ALRAM = 0x805,
#endif
#if PACKETVER >= 20111207
-/*20111207 to 20180621
+/*20111207 to 20180711
파티결성
Create Party
20130807 to 20130814
@@ -11584,7 +11584,7 @@ Create Party
Party Alarm
*/
MSG_CREATE_PARTY = 0x806,
-/*20111207 to 20180621
+/*20111207 to 20180711
파티탈퇴
Leave Party
20130807 to 20130814
@@ -11592,7 +11592,7 @@ Leave Party
Create Party
*/
MSG_WITHDRAW_PARTY = 0x807,
-/*20111207 to 20180621
+/*20111207 to 20180711
파티초대
Party Invitation
20130807 to 20130814
@@ -11600,7 +11600,7 @@ Party Invitation
Leave Party
*/
MSG_INVITE_PARTY = 0x808,
-/*20111207 to 20180621
+/*20111207 to 20180711
파티 ì´ë¦„ 등ë¡
Party Name:
20130807 to 20130814
@@ -11608,7 +11608,7 @@ Party Name:
Party Invitation
*/
MSG_PUT_PARTY_NAME_IN = 0x809,
-/*20111207 to 20180621
+/*20111207 to 20180711
초대할 ìºë¦­í„° ì´ë¦„
Player Name:
20130807 to 20130814
@@ -11616,7 +11616,7 @@ Player Name:
Party Name:
*/
MSG_PUT_PLAYER_NAME_IN = 0x80a,
-/*20111207 to 20180621
+/*20111207 to 20180711
님께 파티가입 ìš”ì²­ì„ ë³´ëƒˆìŠµë‹ˆë‹¤.
has recieved an invitation to join your party.
20130807 to 20130814
@@ -11624,7 +11624,7 @@ Party Name:
Player Name:
*/
MSG_CHARACTER_PARTY_INVITATION_TO_JOIN = 0x80b,
-/*20111207 to 20180621
+/*20111207 to 20180711
님께서 íŒŒí‹°ê°€ìž…ì„ ê±°ì ˆí–ˆìŠµë‹ˆë‹¤.
rejected your party invitation.
20130807 to 20130814
@@ -11632,7 +11632,7 @@ Player Name:
has recieved an invitation to join your party.
*/
MSG_CHARACTER_REJECT_PARTY_INVITATION = 0x80c,
-/*20111207 to 20180621
+/*20111207 to 20180711
님께서 íŒŒí‹°ê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
accepted your party invitation.
20130807 to 20130814
@@ -11640,7 +11640,7 @@ Player Name:
rejected your party invitation.
*/
MSG_CHARACTER_ACCEPT_PARTY_INVITATION = 0x80d,
-/*20111207 to 20180621
+/*20111207 to 20180711
ì´ë¯¸ 파티모집중입니다.
Recruitment is already a party.
20130807 to 20130814
@@ -11648,7 +11648,7 @@ Recruitment is already a party.
accepted your party invitation.
*/
MSG_PARTY_RECRUIT_ERROR1 = 0x80e,
-/*20111207 to 20180621
+/*20111207 to 20180711
ì´ì „ 검색과 ê°™ì€ ì¡°ê±´ìž…ë‹ˆë‹¤.
Same conditions such as the previous search.
20130807 to 20130814
@@ -11656,7 +11656,7 @@ Same conditions such as the previous search.
Recruitment is already a party.
*/
MSG_PARTY_RECRUIT_ERROR2 = 0x80f,
-/*20111207 to 20180621
+/*20111207 to 20180711
길드 탈퇴 후 사용 가능합니다.
Guild after withdrwal.
20130807 to 20130814
@@ -11664,7 +11664,7 @@ Guild after withdrwal.
Same conditions such as the previous search.
*/
MSG_CHARNAME_CHANGE_FILED_GUILDMEMBER = 0x810,
-/*20111207 to 20180621
+/*20111207 to 20180711
파티 탈퇴 후 사용 가능합니다.
Party after secession.
20130807 to 20130814
@@ -11672,7 +11672,7 @@ Party after secession.
Guild after withdrwal.
*/
MSG_CHARNAME_CHANGE_FILED_PARTYMEMBER = 0x811,
-/*20111207 to 20180621
+/*20111207 to 20180711
소환 유저가 ì†Œí™˜ì´ ì•ˆë˜ëŠ” ë§µì— ìžˆìŠµë‹ˆë‹¤.
The player can not be summoned to this map.
20130807 to 20130814
@@ -11682,7 +11682,7 @@ Party after secession.
MSG_PARTY_RECRUIT_RECALL_ERR1 = 0x812,
/*20111207 to 20120229
íŒŒí‹°ìž¥ì´ ìžˆëŠ” 맵ì—서는 ì†Œí™˜ì´ ì•ˆë©ë‹ˆë‹¤.
-20120307 to 20180621
+20120307 to 20180711
현재 íŒŒí‹°ìž¥ì´ ìžˆëŠ” 맵ì—서는 ì†Œí™˜ì´ ì•ˆë©ë‹ˆë‹¤.
Party Leader is on a map that is restricted to summon players.
20130807 to 20130814
@@ -11690,7 +11690,7 @@ Party Leader is on a map that is restricted to summon players.
The player can not be summoned to this map.
*/
MSG_PARTY_RECRUIT_RECALL_ERR2 = 0x813,
-/*20111207 to 20180621
+/*20111207 to 20180711
소환거부ë˜ì—ˆìŠµë‹ˆë‹¤.
Summon has been denied.
20130807 to 20130814
@@ -11698,7 +11698,7 @@ Summon has been denied.
Party Leader is on a map that is restricted to summon players.
*/
MSG_PARTY_RECRUIT_RECALL_ERR3 = 0x814,
-/*20111207 to 20180621
+/*20111207 to 20180711
ì†Œí™˜ì„ í•  수 없습니다.
Can not be summoned.
20130807 to 20130814
@@ -11706,7 +11706,7 @@ Can not be summoned.
Summon has been denied.
*/
MSG_PARTY_RECRUIT_RECALL_ERR4 = 0x815,
-/*20111207 to 20180621
+/*20111207 to 20180711
파티초대는 파티장만 가능합니다.
Only the leader can invite.
20130807 to 20130814
@@ -11716,7 +11716,7 @@ Can not be summoned.
MSG_YOU_ARE_NOT_PARTYMASTER = 0x816,
#endif
#if PACKETVER >= 20111213
-/*20111213 to 20180621
+/*20111213 to 20180711
검색할 ì•„ì´í…œëª… ìž…ë ¥ :
Search item:
20130807 to 20130814
@@ -11724,7 +11724,7 @@ Search item:
Only the leader can invite.
*/
MSG_NC_ITEM_SEARCH = 0x817,
-/*20111213 to 20180621
+/*20111213 to 20180711
ìºë¦­í„°ëª…ì„ ìž…ë ¥í•˜ì…”ì•¼ 합니다.
You must enter a character name.
20130807 to 20130814
@@ -11732,7 +11732,7 @@ You must enter a character name.
Search item:
*/
MSG_PLEASE_PUT_CHARACTER_NAME_IN = 0x818,
-/*20111213 to 20180621
+/*20111213 to 20180711
파티ì´ë¦„ì„ ìž…ë ¥í•˜ì…”ì•¼ 합니다.
You must enter the name of the party.
20130807 to 20130814
@@ -11742,7 +11742,7 @@ You must enter a character name.
MSG_PLEASE_PUT_PARTY_NAME_IN = 0x819,
#endif
#if PACKETVER >= 20111220
-/*20111220 to 20180621
+/*20111220 to 20180711
길드 ë„우미
Guild Creation Window
20130807 to 20130814
@@ -11750,7 +11750,7 @@ Guild Creation Window
You must enter the name of the party.
*/
MSG_GUILD_HELPER = 0x81a,
-/*20111220 to 20180621
+/*20111220 to 20180711
가입ë˜ì–´ 있는 길드가 없습니다.
Join a guild or start your own!
20130807 to 20130814
@@ -11758,7 +11758,7 @@ Join a guild or start your own!
Guild Creation Window
*/
MSG_NO_GUILD_CURRENTLY_PARTICIPATED_IN = 0x81b,
-/*20111220 to 20180621
+/*20111220 to 20180711
길드 결성
Create Guild
20130807 to 20130814
@@ -11766,7 +11766,7 @@ Create Guild
Join a guild or start your own!
*/
MSG_CREATE_GUILD = 0x81c,
-/*20111220 to 20180621
+/*20111220 to 20180711
ìƒì„±í•  길드 ì´ë¦„
Guild Name
20130807 to 20130814
@@ -11774,7 +11774,7 @@ Guild Name
Create Guild
*/
MIS_PUT_GUILD_NAME_IN = 0x81d,
-/*20111220 to 20180621
+/*20111220 to 20180711
길드 결성 ë„움ë§
Guild System
20130807 to 20130814
@@ -11782,7 +11782,7 @@ Guild System
Guild Name
*/
MIS_GUILD_TIP = 0x81e,
-/*20111220 to 20180621
+/*20111220 to 20180711
길드 시스템ì´ëž€
What is the guild system
20130807 to 20130814
@@ -11790,7 +11790,7 @@ What is the guild system
Guild System
*/
MIS_GUILD_SYSTEM = 0x81f,
-/*20111220 to 20180621
+/*20111220 to 20180711
길드ì´ë¦„ì„ ìž…ë ¥í•˜ì…”ì•¼ 합니다.
You must enter the name of your guild.
20130807 to 20130814
@@ -11800,7 +11800,7 @@ What is the guild system
MSG_PLEASE_PUT_GUILD_NAME_IN = 0x820,
#endif
#if PACKETVER >= 20111227
-/*20111227 to 20180621
+/*20111227 to 20180711
지ì›í•œ 파티ì—ì„œ 거부당했습니다.
Supported at the party was rejected.
20130807 to 20130814
@@ -11810,7 +11810,7 @@ You must enter the name of your guild.
MSG_PARTY_RECRUIT_REFUSE_VOLUNTEER = 0x821,
#endif
#if PACKETVER >= 20120103
-/*20120103 to 20180621
+/*20120103 to 20180711
서비스 ì„ íƒ.
Select Service:
20130807 to 20130814
@@ -11818,7 +11818,7 @@ Select Service:
Supported at the party was rejected.
*/
MSG_SERVICESELECT = 0x822,
-/*20120103 to 20180621
+/*20120103 to 20180711
탈출 가능한 지역.
Possible escape area.
20130807 to 20130814
@@ -11826,20 +11826,20 @@ Possible escape area.
Select Service:
*/
MSG_SHOW_MAPNAMETITLE = 0x823,
-/*20120103 to 20180621
+/*20120103 to 20180711
Replay File List
20130807 to 20130814
탈출 가능한 지역.
Possible escape area.
*/
MSG_REPLAY_STR_REPLAYFILELIST = 0x824,
-/*20120103 to 20180621
+/*20120103 to 20180711
File info
20130807 to 20130814
Replay File List
*/
MSG_REPLAY_STR_FILEINFO = 0x825,
-/*20120103 to 20180621
+/*20120103 to 20180711
File List
20130807 to 20130814
File info
@@ -11847,7 +11847,7 @@ File info
MSG_REPLAY_STR_FILELIST = 0x826,
#endif
#if PACKETVER >= 20120117
-/*20120117 to 20180621
+/*20120117 to 20180711
%s ì•„ì´í…œì€ 거래가 불가능 합니다.
%s Item deal not possible.
20130807 to 20130814
@@ -11856,7 +11856,7 @@ File List
MSG_NOT_MOVEABLE_TRADE = 0x827,
#endif
#if PACKETVER >= 20120207
-/*20120207 to 20180621
+/*20120207 to 20180711
길드해체
Disband the Guild
20130807 to 20130814
@@ -11864,7 +11864,7 @@ Disband the Guild
%s Item deal not possible.
*/
MSG_GUILD_DISBAND = 0x828,
-/*20120207 to 20180621
+/*20120207 to 20180711
í•´ì²´í•  길드 ì´ë¦„
Enter Guild Name
20130807 to 20130814
@@ -11874,7 +11874,7 @@ Disband the Guild
MSG_PUT_DISBAND_GUILDNAME = 0x829,
#endif
#if PACKETVER >= 20120214
-/*20120214 to 20180621
+/*20120214 to 20180711
ì ‘ì†í•˜ì§€ 않았거나 존재하지 않는 ìºë¦­í„°ìž…니다.
The character is not online or does not exist.
20130807 to 20130814
@@ -11884,7 +11884,7 @@ Enter Guild Name
MSG_JOINGUILD_NOTEXIST_USER = 0x82a,
#endif
#if PACKETVER >= 20120228
-/*20120228 to 20180621
+/*20120228 to 20180711
팔콘 í˜¸ì¶œì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Failed to call Falcon.
20130807 to 20130814
@@ -11896,7 +11896,7 @@ The character is not online or does not exist.
#if PACKETVER >= 20120307
/*20120307 to 20120321
%d%% ( 프리미엄 %d%% + %s서버 %d%% )
-20120328 to 20180621
+20120328 to 20180711
%d%% ( 기본 100%% + 프리미엄 %d%% + %s서버 %d%% )
%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
20130807 to 20130814
@@ -11904,7 +11904,7 @@ The character is not online or does not exist.
Failed to call Falcon.
*/
MSG_BASIC_EXP_MSG_BRZ = 0x82c,
-/*20120307 to 20180621
+/*20120307 to 20180711
해당 유저는 현재 ê³µì„±ì „ì— ì°¸ê°€í•˜ê³  있습니다.
This user is currently participating in the siege.
20130807 to 20130814
@@ -11912,7 +11912,7 @@ This user is currently participating in the siege.
%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
*/
MSG_JOINGUILD_TARGET_USER_IN_SIEGEMAP = 0x82d,
-/*20120307 to 20180621
+/*20120307 to 20180711
ë™ì¼í•œ 맵ì—서만 파티장 ë³€ê²½ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
It is only possible to change the party leader while on the same map.
20130807 to 20130814
@@ -11920,7 +11920,7 @@ It is only possible to change the party leader while on the same map.
This user is currently participating in the siege.
*/
MSG_PARTY_MASTER_CHANGE_SAME_MAP = 0x82e,
-/*20120307 to 20180621
+/*20120307 to 20180711
현재 지역ì—서는 파티장 ë³€ê²½ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
In the current region it is not possible to change the party.
20130807 to 20130814
@@ -11928,7 +11928,7 @@ In the current region it is not possible to change the party.
It is only possible to change the party leader while on the same map.
*/
MSG_CANNOT_PARTY_MASTER_CHANGE_IN_MAP = 0x82f,
-/*20120307 to 20180621
+/*20120307 to 20180711
ê·¸ë¦¬í° ë‚´ë¦¬ê¸°
Gryphon making
20130807 to 20130814
@@ -11939,7 +11939,7 @@ In the current region it is not possible to change the party.
/*20120307 to 20120307
현재 ê³µì„±ì „ì— ì°¸ì—¬ 중ì´ë¯€ë¡œ 길드초대를 하실 수 없습니다.
You can't invite characters in WoE maps.
-20120314 to 20180621
+20120314 to 20180711
%dì›” %dì¼ %dì‹œ %d분 %dì´ˆ
Delete: %d/%d - %d:%d:%d
20130807 to 20130814
@@ -11949,7 +11949,7 @@ Gryphon making
MSG_TIME_TYPE3 = 0x831,
#endif
#if PACKETVER >= 20120314
-/*20120314 to 20180621
+/*20120314 to 20180711
현재 ê³µì„±ì „ì— ì°¸ì—¬ 중ì´ë¯€ë¡œ 길드초대를 하실 수 없습니다.
You can't invite characters in WoE maps.
20130807 to 20130814
@@ -11957,7 +11957,7 @@ You can't invite characters in WoE maps.
Delete: %d/%d - %d:%d:%d
*/
MSG_JOINGUILD_REQ_USER_IN_SIEGEMAP = 0x832,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì „ìž¥ì— ìž…ìž¥ 대기를 신청하셨습니다.
You are now in the battlefield queue.
20130807 to 20130814
@@ -11965,7 +11965,7 @@ You are now in the battlefield queue.
You can't invite characters in WoE maps.
*/
MSG_BATTLEFIELD_MSG_REQUEST_JOINWAIT = 0x833,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì¸ì›ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤.
Queuing has finished.
20130807 to 20130814
@@ -11973,7 +11973,7 @@ Queuing has finished.
You are now in the battlefield queue.
*/
MSG_BATTLEFIELD_MSG_FULL = 0x834,
-/*20120314 to 20180621
+/*20120314 to 20180711
확ì¸ë˜ì§€ ì•Šì€ ì „ìž¥ëª…ìž…ë‹ˆë‹¤.
Invalid name of the battlefield.
20130807 to 20130814
@@ -11981,7 +11981,7 @@ Invalid name of the battlefield.
Queuing has finished.
*/
MSG_BATTLEFIELD_MSG_UNKNOWN_NAME = 0x835,
-/*20120314 to 20180621
+/*20120314 to 20180711
확ì¸ë˜ì§€ ì•Šì€ ì‹ ì²­íƒ€ìž…ìž…ë‹ˆë‹¤.
Invalid type of application.
20130807 to 20130814
@@ -11989,7 +11989,7 @@ Invalid type of application.
Invalid name of the battlefield.
*/
MSG_BATTLEFIELD_MSG_UNKNOWN_TYPE = 0x836,
-/*20120314 to 20180621
+/*20120314 to 20180711
최대 ì¸ì›ì„ 초과하였습니다.
People count exceeded.
20130807 to 20130814
@@ -11997,7 +11997,7 @@ People count exceeded.
Invalid type of application.
*/
MSG_BATTLEFIELD_MSG_MAXOVER = 0x837,
-/*20120314 to 20180621
+/*20120314 to 20180711
입장 ë ˆë²¨ì´ ë§žì§€ 않습니다.
Your level doesn't fit this battlefield rules.
20130807 to 20130814
@@ -12005,7 +12005,7 @@ Your level doesn't fit this battlefield rules.
People count exceeded.
*/
MSG_BATTLEFIELD_MSG_JOIN_NOTLEVEL = 0x838,
-/*20120314 to 20180621
+/*20120314 to 20180711
중복 신청하셨습니다.
Duplicate application.
20130807 to 20130814
@@ -12013,7 +12013,7 @@ Duplicate application.
Your level doesn't fit this battlefield rules.
*/
MSG_BATTLEFIELD_MSG_JOIN_OVERLAP = 0x839,
-/*20120314 to 20180621
+/*20120314 to 20180711
재접ì†í›„ 다시 신청하여 주시기 ë°”ëžë‹ˆë‹¤.
After reconnecting, please re-apply.
20130807 to 20130814
@@ -12021,7 +12021,7 @@ After reconnecting, please re-apply.
Duplicate application.
*/
MSG_BATTLEFIELD_MSG_RESTART = 0x83a,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì§ì—…ì´ ë§žì§€ 않습니다.
Your class can't participate in this battlefield.
20130807 to 20130814
@@ -12029,7 +12029,7 @@ Your class can't participate in this battlefield.
After reconnecting, please re-apply.
*/
MSG_BATTLEFIELD_MSG_NOTJOB = 0x83b,
-/*20120314 to 20180621
+/*20120314 to 20180711
파티장ì´ë‚˜ ê¸¸ë“œìž¥ë§Œì´ ì‹ ì²­í•  수 있습니다.
Only party leader / guild master can apply.
20130807 to 20130814
@@ -12037,7 +12037,7 @@ Only party leader / guild master can apply.
Your class can't participate in this battlefield.
*/
MSG_BATTLEFIELD_MSG_JOIN_ONLYBOSS = 0x83c,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì „ìž¥ì„ ì´ìš© ì¤‘ì¸ íŒ€ì›ì´ 있어 ì‹ ì²­ì´ ë¶ˆê°€ëŠ¥ 합니다.
You can't apply while your team member is already on a battlefield.
20130807 to 20130814
@@ -12045,7 +12045,7 @@ You can't apply while your team member is already on a battlefield.
Only party leader / guild master can apply.
*/
MSG_BATTLEFIELD_MSG_BUSY_PARTYMEMBER = 0x83d,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장 입장 대기가 취소ë˜ì—ˆìŠµë‹ˆë‹¤.
You have left the battlefield queue.
20130807 to 20130814
@@ -12053,7 +12053,7 @@ You have left the battlefield queue.
You can't apply while your team member is already on a battlefield.
*/
MSG_BATTLEFIELD_MSG_CANCEL_JOINWAIT = 0x83e,
-/*20120314 to 20180621
+/*20120314 to 20180711
ìž˜ëª»ëœ ì „ìž¥ëª… 입니다.
Wrong battlefield name.
20130807 to 20130814
@@ -12061,7 +12061,7 @@ Wrong battlefield name.
You have left the battlefield queue.
*/
MSG_BATTLEFIELD_MSG_WRONG_NAME = 0x83f,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장 입장 대기 ìˆœìœ„ì— ì—†ìŠµë‹ˆë‹¤.
You are not in the battlefield queue list
20130807 to 20130814
@@ -12069,7 +12069,7 @@ You are not in the battlefield queue list
Wrong battlefield name.
*/
MSG_BATTLEFIELD_MSG_NOTRANK = 0x840,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì„ íƒí•˜ì‹  ì „ìž¥ì€ í˜„ìž¬ ì´ìš©í•˜ì‹¤ 수 없으므로 대기가 취소ë©ë‹ˆë‹¤.
The selected arena is unavailable; your application has been cancelled
20130807 to 20130814
@@ -12077,7 +12077,7 @@ The selected arena is unavailable; your application has been cancelled
You are not in the battlefield queue list
*/
MSG_BATTLEFIELD_MSG_FAIL_CHOICE = 0x841,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장 ìž…ìž¥ì„ ì·¨ì†Œí•˜ì˜€ìŠµë‹ˆë‹¤.
You have left the queue
20130807 to 20130814
@@ -12085,7 +12085,7 @@ You have left the queue
The selected arena is unavailable; your application has been cancelled
*/
MSG_BATTLEFIELD_MSG_CANCEL_JOIN = 0x842,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì „ìž¥ì— ìž…ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure you want to join a battleground?
20130807 to 20130814
@@ -12093,7 +12093,7 @@ Are you sure you want to join a battleground?
You have left the queue
*/
MSG_BATTLEFIELD_MSG_DOYOU_JOIN = 0x843,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장 입장 신청 시스템
[Battlefield application rules]
20130807 to 20130814
@@ -12101,7 +12101,7 @@ You have left the queue
Are you sure you want to join a battleground?
*/
MSG_BATTLEFIELD_HELP1 = 0x844,
-/*20120314 to 20180621
+/*20120314 to 20180711
입장 ì‹ ì²­ ë° ì „ìž¥ìœ¼ë¡œì˜ ê³µê°„ì´ë™ 불가 ìƒí™©
Application and position into the battlefield cannot be applied under this circumtances
20130807 to 20130814
@@ -12109,7 +12109,7 @@ Application and position into the battlefield cannot be applied under this circu
[Battlefield application rules]
*/
MSG_BATTLEFIELD_HELP2 = 0x845,
-/*20120314 to 20180621
+/*20120314 to 20180711
1. 여러 ì¢…ë¥˜ì˜ ì „ìž¥ì„ ë™ì‹œì— ì‹ ì²­í•  수 없습니다.
1. Different types of battle can not be applied simultaneously.
20130807 to 20130814
@@ -12117,7 +12117,7 @@ Application and position into the battlefield cannot be applied under this circu
Application and position into the battlefield cannot be applied under this circumtances
*/
MSG_BATTLEFIELD_HELP3 = 0x846,
-/*20120314 to 20180621
+/*20120314 to 20180711
2. ê°œì¸ / 파티 / 길드 ì „ìž¥ì„ ë™ì‹œì— ì‹ ì²­í•  수 없습니다.
2. Personal / party / guild battle can not be applied simultaneously.
20130807 to 20130814
@@ -12125,7 +12125,7 @@ Application and position into the battlefield cannot be applied under this circu
1. Different types of battle can not be applied simultaneously.
*/
MSG_BATTLEFIELD_HELP4 = 0x847,
-/*20120314 to 20180621
+/*20120314 to 20180711
3. 파티 전장 ì‹ ì²­ì€ íŒŒí‹°ìž¥ë§Œ ì‹ ì²­í•  수 있으며,
3. Parties can only be applied by their party leaders.
20130807 to 20130814
@@ -12133,7 +12133,7 @@ Application and position into the battlefield cannot be applied under this circu
2. Personal / party / guild battle can not be applied simultaneously.
*/
MSG_BATTLEFIELD_HELP5 = 0x848,
-/*20120314 to 20180621
+/*20120314 to 20180711
오프ë¼ì¸ì¤‘ì´ê±°ë‚˜ 오프ë¼ì¸ ëœ íŒŒí‹°ì›ì€ 대기열ì—ì„œ 누ë½ë©ë‹ˆë‹¤.
Offline party members won't proceed to the queue.
20130807 to 20130814
@@ -12141,7 +12141,7 @@ Offline party members won't proceed to the queue.
3. Parties can only be applied by their party leaders.
*/
MSG_BATTLEFIELD_HELP6 = 0x849,
-/*20120314 to 20180621
+/*20120314 to 20180711
4. 전장 ì‹ ì²­ì€ ì „ìž¥ ë§µì„ ì œì™¸í•œ 모든 ê³³ì—ì„œ ì‹ ì²­ 가능하나,
4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
20130807 to 20130814
@@ -12149,7 +12149,7 @@ Offline party members won't proceed to the queue.
Offline party members won't proceed to the queue.
*/
MSG_BATTLEFIELD_HELP7 = 0x84a,
-/*20120314 to 20180621
+/*20120314 to 20180711
입장한 위치가 마ì„, í•„ë“œ, ì¼ë°˜ ë˜ì „ì´ ì•„ë‹ ê²½ìš° 복귀 ì‹œ ìºë¦­í„° 저장 좌표로 ì´ë™ ë©ë‹ˆë‹¤.
When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
20130807 to 20130814
@@ -12157,7 +12157,7 @@ When the battle is finished your character will be returned to the current spot
4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
*/
MSG_BATTLEFIELD_HELP8 = 0x84b,
-/*20120314 to 20180621
+/*20120314 to 20180711
5. ì „ìž¥ì˜ ë³´ìƒ ë° ê¸°íƒ€ 서비스는 ê° ë§ˆì„ì— ìœ„ì¹˜í•œ 전장 ëª¨ë³‘ê´€ì„ í†µí•´ 전장 대기실ì—ì„œ ì´ìš©í•´ 주십시오.
5. You can view and choose rewards in the arena waiting room.
20130807 to 20130814
@@ -12165,7 +12165,7 @@ When the battle is finished your character will be returned to the current spot
When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
*/
MSG_BATTLEFIELD_HELP9 = 0x84c,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장 입장 ì‹ ì²­ ë„움ë§
Request help battle position
20130807 to 20130814
@@ -12173,7 +12173,7 @@ Request help battle position
5. You can view and choose rewards in the arena waiting room.
*/
MSG_BATTLEFIELD_HELP10 = 0x84d,
-/*20120314 to 20180621
+/*20120314 to 20180711
%s ì „ìž¥ì´ ì‹œìž‘ë©ë‹ˆë‹¤.
%s battle begins.
20130807 to 20130814
@@ -12181,7 +12181,7 @@ Request help battle position
Request help battle position
*/
MSG_BATTLEFIELD_START = 0x84e,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장으로 ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you want to enter the arena?
20130807 to 20130814
@@ -12189,7 +12189,7 @@ Do you want to enter the arena?
%s battle begins.
*/
MSG_BATTLEFIELD_DOYOU_MOVE = 0x84f,
-/*20120314 to 20180621
+/*20120314 to 20180711
[주ì˜]
[Note]
20130807 to 20130814
@@ -12197,7 +12197,7 @@ Do you want to enter the arena?
Do you want to enter the arena?
*/
MSG_BATTLEFIELD_WARNINGMSG1 = 0x850,
-/*20120314 to 20180621
+/*20120314 to 20180711
현재 위치가 마ì„, í•„ë“œ í˜¹ì€ ì¼ë°˜ë˜ì „ì´
When the battle is finished your character will
20130807 to 20130814
@@ -12205,7 +12205,7 @@ When the battle is finished your character will
[Note]
*/
MSG_BATTLEFIELD_WARNINGMSG2 = 0x851,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì•„ë‹ ê²½ìš° 전장 종료 후 ì €ìž¥ëœ ìœ„ì¹˜ë¡œ
be returned to the current spot or (if it's not
20130807 to 20130814
@@ -12213,7 +12213,7 @@ be returned to the current spot or (if it's not
When the battle is finished your character will
*/
MSG_BATTLEFIELD_WARNINGMSG3 = 0x852,
-/*20120314 to 20180621
+/*20120314 to 20180711
ë˜ëŒì•„가게 ë©ë‹ˆë‹¤.
possible) to the save point.
20130807 to 20130814
@@ -12221,7 +12221,7 @@ possible) to the save point.
be returned to the current spot or (if it's not
*/
MSG_BATTLEFIELD_WARNINGMSG4 = 0x853,
-/*20120314 to 20180621
+/*20120314 to 20180711
다른 ì´ì˜ 요청 결과를 기다리고 있습니다.
Waiting for the opponents.
20130807 to 20130814
@@ -12229,7 +12229,7 @@ Waiting for the opponents.
possible) to the save point.
*/
MSG_BATTLEFIELD_WAIT_PLAYER = 0x854,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장 입장 요청
Battlefield position request
20130807 to 20130814
@@ -12237,7 +12237,7 @@ Battlefield position request
Waiting for the opponents.
*/
MSG_BATTLEFIELD_REQUEST_JOIN = 0x855,
-/*20120314 to 20180621
+/*20120314 to 20180711
수ë½ëŒ€ê¸°ì‹œê°„:%dì´ˆ
Accept standby time:%d seconds
20130807 to 20130814
@@ -12245,7 +12245,7 @@ Accept standby time:%d seconds
Battlefield position request
*/
MSG_BATTLEFIELD_WAITTIME_D = 0x856,
-/*20120314 to 20180621
+/*20120314 to 20180711
입장 대기 ìƒíƒœ
Standby position
20130807 to 20130814
@@ -12253,7 +12253,7 @@ Standby position
Accept standby time:%d seconds
*/
MSG_BATTLEFIELD_STATE_JOINWAIT = 0x857,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장 명칭: %s
Battlefield name:%s
20130807 to 20130814
@@ -12261,7 +12261,7 @@ Battlefield name:%s
Standby position
*/
MSG_BATTLEFIELD_NAME_S = 0x858,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장 í•„ìš” ì¸ì›: %d
Persons required:%d
20130807 to 20130814
@@ -12269,7 +12269,7 @@ Persons required:%d
Battlefield name:%s
*/
MSG_BATTLEFIELD_MEMBER_D = 0x859,
-/*20120314 to 20180621
+/*20120314 to 20180711
내 대기순번: %d
Your position:%d
20130807 to 20130814
@@ -12277,7 +12277,7 @@ Your position:%d
Persons required:%d
*/
MSG_BATTLEFIELD_MYRANK_D = 0x85a,
-/*20120314 to 20180621
+/*20120314 to 20180711
명칭 :
Name:
20130807 to 20130814
@@ -12285,7 +12285,7 @@ Name:
Your position:%d
*/
MSG_BATTLEFIELD_DP_TITLE = 0x85b,
-/*20120314 to 20180621
+/*20120314 to 20180711
목표 :
Goal:
20130807 to 20130814
@@ -12293,7 +12293,7 @@ Goal:
Name:
*/
MSG_BATTLEFIELD_DP_AIM = 0x85c,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì „ìž¥ì˜ ì¸ì› 구성 :
Format:
20130807 to 20130814
@@ -12301,7 +12301,7 @@ Format:
Goal:
*/
MSG_BATTLEFIELD_DP_MEMBER = 0x85d,
-/*20120314 to 20180621
+/*20120314 to 20180711
참여조건 :
Level:
20130807 to 20130814
@@ -12309,7 +12309,7 @@ Level:
Format:
*/
MSG_BATTLEFIELD_DP_REQUIRED = 0x85e,
-/*20120314 to 20180621
+/*20120314 to 20180711
ë³´ìƒ(승) :
Win:
20130807 to 20130814
@@ -12317,7 +12317,7 @@ Win:
Level:
*/
MSG_BATTLEFIELD_DP_WIN = 0x85f,
-/*20120314 to 20180621
+/*20120314 to 20180711
ë³´ìƒ(무) :
Draw:
20130807 to 20130814
@@ -12325,7 +12325,7 @@ Draw:
Win:
*/
MSG_BATTLEFIELD_DP_DRAW = 0x860,
-/*20120314 to 20180621
+/*20120314 to 20180711
ë³´ìƒ(패) :
Loss:
20130807 to 20130814
@@ -12333,7 +12333,7 @@ Loss:
Draw:
*/
MSG_BATTLEFIELD_DP_LOSS = 0x861,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì „ìž¥ì„ ê°œì¸ìœ¼ë¡œ ì‹ ì²­ 하셨습니다. 맞습니까?
Do you want to participate in the individuals battle?
20130807 to 20130814
@@ -12341,7 +12341,7 @@ Do you want to participate in the individuals battle?
Loss:
*/
MSG_BATTLEFIELD_DOYOU_SINGLE = 0x862,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì „ìž¥ì„ íŒŒí‹°ë¡œ ì‹ ì²­ 하셨습니다. 맞습니까?
Do you want to participate in the parties battle?
20130807 to 20130814
@@ -12349,7 +12349,7 @@ Do you want to participate in the parties battle?
Do you want to participate in the individuals battle?
*/
MSG_BATTLEFIELD_DOYOU_PALTY = 0x863,
-/*20120314 to 20180621
+/*20120314 to 20180711
ì „ìž¥ì„ ê¸¸ë“œë¡œ ì‹ ì²­ 하셨습니다. 맞습니까?
Do you want to participate in the guilds battle?
20130807 to 20130814
@@ -12357,7 +12357,7 @@ Do you want to participate in the guilds battle?
Do you want to participate in the parties battle?
*/
MSG_BATTLEFIELD_DOYOU_GUILD = 0x864,
-/*20120314 to 20180621
+/*20120314 to 20180711
전장 목ë¡
Battleground List
20130807 to 20130814
@@ -12365,21 +12365,21 @@ Battleground List
Do you want to participate in the guilds battle?
*/
MSG_BATTLEFIELD_LIST2 = 0x865,
-/*20120314 to 20180621
+/*20120314 to 20180711
%d VS %d
20130807 to 20130814
전장 목ë¡
Battleground List
*/
MSG_BATTLEFIELD_D_VS_D = 0x866,
-/*20120314 to 20180621
+/*20120314 to 20180711
Base LV %d ì´í•˜
LV %d and lower
20130807 to 20130814
%d VS %d
*/
MSG_BATTLEFIELD_LEVELDOWN_D = 0x867,
-/*20120314 to 20180621
+/*20120314 to 20180711
Base LV %d ì´ìƒ
LV %d and higher
20130807 to 20130814
@@ -12387,7 +12387,7 @@ Base LV %d ì´í•˜
LV %d and lower
*/
MSG_BATTLEFIELD_LEVELUP_D = 0x868,
-/*20120314 to 20180621
+/*20120314 to 20180711
Base LV %d ~ %d
LV %d ~ %d
20130807 to 20130814
@@ -12395,7 +12395,7 @@ Base LV %d ì´ìƒ
LV %d and higher
*/
MSG_BATTLEFIELD_LEVEL_D_D = 0x869,
-/*20120314 to 20180621
+/*20120314 to 20180711
제한 ì—†ìŒ
No restrictions
20130807 to 20130814
@@ -12403,7 +12403,7 @@ Base LV %d ~ %d
LV %d ~ %d
*/
MSG_BATTLEFIELD_LIMITLESS = 0x86a,
-/*20120314 to 20180621
+/*20120314 to 20180711
[해당 맵ì—서는 신청하실 수 없습니다.]
[You can't apply on this map.]
20130807 to 20130814
@@ -12411,7 +12411,7 @@ LV %d ~ %d
No restrictions
*/
MSG_BATTLEFIELD_MSG_NOT_JOINMAP = 0x86b,
-/*20120314 to 20180621
+/*20120314 to 20180711
[전장 재신청까지 약 1ë¶„ì˜ ëŒ€ê¸°ì‹œê°„ì„ í•„ìš”ë¡œ 합니다.]
[You must wait about 1 minute to apply.]
20130807 to 20130814
@@ -12419,7 +12419,7 @@ No restrictions
[You can't apply on this map.]
*/
MSG_BATTLEFIELD_MSG_WAIT_1MM = 0x86c,
-/*20120314 to 20180621
+/*20120314 to 20180711
[íŒŒí‹°ì— ë¨¼ì € 가입하셔야 합니다.]
[You must be in a party.]
20130807 to 20130814
@@ -12427,7 +12427,7 @@ No restrictions
[You must wait about 1 minute to apply.]
*/
MSG_BATTLEFIELD_MSG_PLZ_PALTYJOIN = 0x86d,
-/*20120314 to 20180621
+/*20120314 to 20180711
[파티장만 신청 가능합니다.]
[Only party leader can apply.]
20130807 to 20130814
@@ -12435,7 +12435,7 @@ No restrictions
[You must be in a party.]
*/
MSG_BATTLEFIELD_MSG_NOT_PALTYBOSS = 0x86e,
-/*20120314 to 20180621
+/*20120314 to 20180711
[ì ‘ì†ë˜ì–´ìžˆëŠ” 파티ì¸ì›ìˆ˜ê°€ 많습니다.]
[Too many party members online.]
20130807 to 20130814
@@ -12443,7 +12443,7 @@ No restrictions
[Only party leader can apply.]
*/
MSG_BATTLEFIELD_MSG_OVER_PARTYMEMBER = 0x86f,
-/*20120314 to 20180621
+/*20120314 to 20180711
[ê¸¸ë“œì— ë¨¼ì € 가입하셔야 합니다.]
[You must be in a guild.]
20130807 to 20130814
@@ -12451,7 +12451,7 @@ No restrictions
[Too many party members online.]
*/
MSG_BATTLEFIELD_MSG_PLZ_GUILDJOIN = 0x870,
-/*20120314 to 20180621
+/*20120314 to 20180711
[길드장만 신청 가능합니다.]
[Only guild master can apply.]
20130807 to 20130814
@@ -12459,7 +12459,7 @@ No restrictions
[You must be in a guild.]
*/
MSG_BATTLEFIELD_MSG_NOT_GUILDBOSS = 0x871,
-/*20120314 to 20180621
+/*20120314 to 20180711
[ì ‘ì†ë˜ì–´ìžˆëŠ” 길드ì¸ì›ìˆ˜ê°€ 많습니다.]
[Too many guild members online.]
20130807 to 20130814
@@ -12469,7 +12469,7 @@ No restrictions
MSG_BATTLEFIELD_MSG_OVER_GUILDMEMBER = 0x872,
/*20120314 to 20120314
ì•„ì´í…œ 합치기
-20120320 to 20180621
+20120320 to 20180711
ì´ë™ì˜ˆì•½
Moving Book
20130807 to 20130814
@@ -12480,7 +12480,7 @@ Moving Book
/*20120314 to 20120314
ê°™ì€ ì¢…ë¥˜ì˜ ì•„ì´í…œì„ 2ê°œ ì´ìƒ ì„ íƒí•´ì£¼ì„¸ìš”.
Two or more of the same type. Please select an item.
-20120320 to 20180621
+20120320 to 20180711
ì´ë™
Move
20130807 to 20130814
@@ -12491,7 +12491,7 @@ Moving Book
/*20120314 to 20120314
ì•„ì´í…œ í•©ì¹˜ê¸°ì— ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
Item merge is successful.
-20120320 to 20180621
+20120320 to 20180711
ì´ë¦„변경
Rename
20130807 to 20130814
@@ -12502,7 +12502,7 @@ Move
/*20120314 to 20120314
ì•„ì´í…œ 합치기는 í•œë²ˆì— 1종류씩만 가능합니다.
Combining items will be only one kind at a time.
-20120320 to 20180621
+20120320 to 20180711
Make Character
20130807 to 20130814
ì´ë¦„변경
@@ -12512,7 +12512,7 @@ Rename
/*20120314 to 20120314
ì•„ì´í…œì˜ 개수가 30000ê°œ 초과 했습니다.
You cannot have more than 30,000 stacked items.
-20120320 to 20180621
+20120320 to 20180711
http://ro.game.gnjoy.com/
20130807 to 20130814
Make Character
@@ -12520,7 +12520,7 @@ Make Character
MSG_UAE_URL = 0x877,
#endif
#if PACKETVER >= 20120320
-/*20120320 to 20180621
+/*20120320 to 20180711
(%s) Server
20130807 to 20130814
http://ro.game.gnjoy.com/
@@ -12528,14 +12528,14 @@ http://ro.game.gnjoy.com/
MSG_UAE_SERVERSTR = 0x878,
/*20120320 to 20120328
ì•„ì´í…œ 합치기
-20120404 to 20180621
+20120404 to 20180711
ì•„ì´í…œ 병합(모ë‘ì„ íƒ Ctrl+í´ë¦­)
Item Merge
20130807 to 20130814
(%s) Server
*/
MSG_MERGE_ITEM = 0x879,
-/*20120320 to 20180621
+/*20120320 to 20180711
ê°™ì€ ì¢…ë¥˜ì˜ ì•„ì´í…œì„ 2ê°œ ì´ìƒ ì„ íƒí•´ì£¼ì„¸ìš”.
Two or more of the same type. Please select an item.
20130807 to 20130814
@@ -12543,7 +12543,7 @@ Two or more of the same type. Please select an item.
Item Merge
*/
MSG_SELECT_ITEM_TO_MERGE = 0x87a,
-/*20120320 to 20180621
+/*20120320 to 20180711
ì•„ì´í…œ í•©ì¹˜ê¸°ì— ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
Item merge is successful.
20130807 to 20130814
@@ -12551,7 +12551,7 @@ Item merge is successful.
Two or more of the same type. Please select an item.
*/
MSG_MERGE_ITEM_SUCCESS = 0x87b,
-/*20120320 to 20180621
+/*20120320 to 20180711
ì•„ì´í…œ 합치기는 í•œë²ˆì— 1종류씩만 가능합니다.
Combining items will be only one kind at a time.
20130807 to 20130814
@@ -12559,7 +12559,7 @@ Combining items will be only one kind at a time.
Item merge is successful.
*/
MSG_MERGE_ITEM_FAILED_NOT_MERGE = 0x87c,
-/*20120320 to 20180621
+/*20120320 to 20180711
ì•„ì´í…œì˜ 개수가 30000ê°œ 초과 했습니다.
You cannot have more than 30,000 stacked items.
20130807 to 20130814
@@ -12569,7 +12569,7 @@ Combining items will be only one kind at a time.
MSG_MERGE_ITEM_FAILED_MAX_COUNT = 0x87d,
#endif
#if PACKETVER >= 20120321
-/*20120321 to 20180621
+/*20120321 to 20180711
좌로 회전
Rotate left
20130807 to 20130814
@@ -12577,7 +12577,7 @@ Rotate left
You cannot have more than 30,000 stacked items.
*/
MSG_CHARACTER_LEFT_ROLL = 0x87e,
-/*20120321 to 20180621
+/*20120321 to 20180711
우로 회전
Rotate right
20130807 to 20130814
@@ -12587,7 +12587,7 @@ Rotate left
MSG_CHARACTER_RIGHT_ROLL = 0x87f,
#endif
#if PACKETVER >= 20120328
-/*20120328 to 20180621
+/*20120328 to 20180711
(%s)ë‹˜ì˜ ì´ì „서버 정보보기
(%s) to view the old server information
20130807 to 20130814
@@ -12595,7 +12595,7 @@ Rotate left
Rotate right
*/
MSG_VIEW_BEFORE_WORLDINFO = 0x880,
-/*20120328 to 20180621
+/*20120328 to 20180711
기존 서버 정보
Existing server information
20130807 to 20130814
@@ -12603,7 +12603,7 @@ Existing server information
(%s) to view the old server information
*/
MSG_VIEW_BEFORE_WORLDINFO_TITLE = 0x881,
-/*20120328 to 20180621
+/*20120328 to 20180711
^ff0000기존 서버 : ^0000ff
^ff0000Existing server: ^0000ff
20130807 to 20130814
@@ -12611,7 +12611,7 @@ Existing server information
Existing server information
*/
MSG_VIEW_BEFORE_SERVERINFO = 0x882,
-/*20120328 to 20180621
+/*20120328 to 20180711
^ff0000기존 ìºë¦­ëª… : ^0000ff
^ff0000Existing character: ^0000ff
20130807 to 20130814
@@ -12619,7 +12619,7 @@ Existing server information
^ff0000Existing server: ^0000ff
*/
MSG_VIEW_BEFORE_CHARNAME = 0x883,
-/*20120328 to 20180621
+/*20120328 to 20180711
공격한 ëª¬ìŠ¤í„°ì˜ HPê°€ 표시ë©ë‹ˆë‹¤.
Show monster HP bar when attacking.
20130807 to 20130814
@@ -12629,7 +12629,7 @@ Show monster HP bar when attacking.
MSG_MONSTER_HP_ON = 0x884,
/*20120328 to 20120328
공격한 ëª¬ìŠ¤í„°ì˜ HPê°€ 표시ë˜ì§€ 않습니다..
-20120404 to 20180621
+20120404 to 20180711
공격한 ëª¬ìŠ¤í„°ì˜ HPê°€ 표시ë˜ì§€ 않습니다.
Hide monster HP bar when attacking.
20130807 to 20130814
@@ -12639,7 +12639,7 @@ Show monster HP bar when attacking.
MSG_MONSTER_HP_OFF = 0x885,
#endif
#if PACKETVER >= 20120404
-/*20120404 to 20180621
+/*20120404 to 20180711
병합 가능한 ì•„ì´í…œì´ 존재하지 않습니다
Merge does not exist as an item
20130807 to 20130814
@@ -12647,7 +12647,7 @@ Merge does not exist as an item
Hide monster HP bar when attacking.
*/
MSG_MERGE_ITEM_FAILED_NOT_EXIST = 0x886,
-/*20120404 to 20180621
+/*20120404 to 20180711
병합 가능한 ì•„ì´í…œì´ 존재하지 않습니다.
Merge items available does not exist.
20130807 to 20130814
@@ -12655,7 +12655,7 @@ Merge items available does not exist.
Merge does not exist as an item
*/
MSG_NOT_EXIST_MERGE_ITEM = 0x887,
-/*20120404 to 20180621
+/*20120404 to 20180711
진행중
Act
20130807 to 20130814
@@ -12663,7 +12663,7 @@ Act
Merge items available does not exist.
*/
MSG_QUESTUI_TAB_PROCESS = 0x888,
-/*20120404 to 20180621
+/*20120404 to 20180711
보류중
Pen
20130807 to 20130814
@@ -12671,7 +12671,7 @@ Pen
Act
*/
MSG_QUESTUI_TAB_HOLD = 0x889,
-/*20120404 to 20180621
+/*20120404 to 20180711
추천
Rec
20130807 to 20130814
@@ -12679,7 +12679,7 @@ Rec
Pen
*/
MSG_QUESTUI_TAB_BEST = 0x88a,
-/*20120404 to 20180621
+/*20120404 to 20180711
ì—피소드
Episode
20130807 to 20130814
@@ -12687,7 +12687,7 @@ Episode
Rec
*/
MSG_QUESTUI_TAB_EPISODE = 0x88b,
-/*20120404 to 20180621
+/*20120404 to 20180711
로컬
Loc
20130807 to 20130814
@@ -12695,7 +12695,7 @@ Loc
Episode
*/
MSG_QUESTUI_TAB_LOCAL = 0x88c,
-/*20120404 to 20180621
+/*20120404 to 20180711
ì´ë²¤íŠ¸
Evt
20130807 to 20130814
@@ -12703,7 +12703,7 @@ Evt
Loc
*/
MSG_QUESTUI_TAB_EVENT = 0x88d,
-/*20120404 to 20180621
+/*20120404 to 20180711
신규
New
20130807 to 20130814
@@ -12711,7 +12711,7 @@ New
Evt
*/
MSG_QUESTUI_TAB_NEW = 0x88e,
-/*20120404 to 20180621
+/*20120404 to 20180711
사냥몬스터
Monsters to kill
20130807 to 20130814
@@ -12719,7 +12719,7 @@ Monsters to kill
New
*/
MSG_QUESTUI_HUNTMONSTER = 0x88f,
-/*20120404 to 20180621
+/*20120404 to 20180711
ë³´ìƒì•„ì´í…œ
Rewards
20130807 to 20130814
@@ -12727,7 +12727,7 @@ Rewards
Monsters to kill
*/
MSG_QUESTUI_REWARDITEM = 0x890,
-/*20120404 to 20180621
+/*20120404 to 20180711
필요아ì´í…œ
Required Items
20130807 to 20130814
@@ -12735,7 +12735,7 @@ Required Items
Rewards
*/
MSG_QUESTUI_NEEDITEM = 0x891,
-/*20120404 to 20180621
+/*20120404 to 20180711
제한시간
Time Limit
20130807 to 20130814
@@ -12743,7 +12743,7 @@ Time Limit
Required Items
*/
MSG_QUESTUI_TIMELIMIT = 0x892,
-/*20120404 to 20180621
+/*20120404 to 20180711
마ê°ì‹œê°„
Deadline
20130807 to 20130814
@@ -12753,7 +12753,7 @@ Time Limit
MSG_QUESTUI_CLOSINGTIME = 0x893,
#endif
#if PACKETVER >= 20120417
-/*20120417 to 20180621
+/*20120417 to 20180711
검색
Search
20130807 to 20130814
@@ -12761,7 +12761,7 @@ Search
Deadline
*/
MSG_NAVIGATION_SEARCH = 0x894,
-/*20120417 to 20180621
+/*20120417 to 20180711
목표로 안내
Navigation
20130807 to 20130814
@@ -12769,7 +12769,7 @@ Navigation
Search
*/
MSG_NAVIGATION_TARGETGO = 0x895,
-/*20120417 to 20180621
+/*20120417 to 20180711
길 정보
Back to Navigation
20130807 to 20130814
@@ -12777,7 +12777,7 @@ Back to Navigation
Navigation
*/
MSG_NAVIGATION_ROUTEINFO = 0x896,
-/*20120417 to 20180621
+/*20120417 to 20180711
검색 정보
Find Information
20130807 to 20130814
@@ -12785,7 +12785,7 @@ Find Information
Back to Navigation
*/
MSG_NAVIGATION_SEARCHINFO = 0x897,
-/*20120417 to 20180621
+/*20120417 to 20180711
보기 모드 변경
Toggle Minimap
20130807 to 20130814
@@ -12795,7 +12795,7 @@ Find Information
MSG_NAVIGATION_VIEWCHANGE = 0x898,
/*20120417 to 20130109
안내 지시 ìƒ‰ìƒ ë³€ê²½
-20130115 to 20180621
+20130115 to 20180711
외부 길정보 íŒŒì¼ ì½ê¸°
Read Information from External File
20130807 to 20130814
@@ -12803,7 +12803,7 @@ Read Information from External File
Toggle Minimap
*/
MSG_NAVIGATION_LIGHTCHANGE = 0x899,
-/*20120417 to 20180621
+/*20120417 to 20180711
종료
Exit
20130807 to 20130814
@@ -12811,7 +12811,7 @@ Exit
Read Information from External File
*/
MSG_NAVIGATION_END = 0x89a,
-/*20120417 to 20180621
+/*20120417 to 20180711
기본 UI로 변경
Change the Default UI
20130807 to 20130814
@@ -12819,7 +12819,7 @@ Change the Default UI
Exit
*/
MSG_NAVIGATION_BASE = 0x89b,
-/*20120417 to 20180621
+/*20120417 to 20180711
간편 UI로 변경
Change to Default UI
20130807 to 20130814
@@ -12827,7 +12827,7 @@ Change to Default UI
Change the Default UI
*/
MSG_NAVIGATION_MINI = 0x89c,
-/*20120417 to 20180621
+/*20120417 to 20180711
ë„움ë§
Help
20130807 to 20130814
@@ -12835,7 +12835,7 @@ Help
Change to Default UI
*/
MSG_NAVIGATION_HELP = 0x89d,
-/*20120417 to 20180621
+/*20120417 to 20180711
ALL
All
20130807 to 20130814
@@ -12843,75 +12843,75 @@ All
Help
*/
MSG_NAVIGATION_ALL = 0x89e,
-/*20120417 to 20180621
+/*20120417 to 20180711
Map
20130807 to 20130814
ALL
All
*/
MSG_NAVIGATION_MAP = 0x89f,
-/*20120417 to 20180621
+/*20120417 to 20180711
Npc
20130807 to 20130814
Map
*/
MSG_NAVIGATION_NPC = 0x8a0,
-/*20120417 to 20180621
+/*20120417 to 20180711
Mob
20130807 to 20130814
Npc
*/
MSG_NAVIGATION_MOB = 0x8a1,
-/*20120417 to 20180621
+/*20120417 to 20180711
검색 단어 설정 (Ex: 단어 단어 ...
Enter search string... (Ex: word word ...)
20130807 to 20130814
Mob
*/
MSG_NAVIGATION_SETSTRING = 0x8a2,
-/*20120417 to 20180621
+/*20120417 to 20180711
Scroll
20130807 to 20130814
검색 단어 설정 (Ex: 단어 단어 ...
Enter search string... (Ex: word word ...)
*/
MSG_NAVIGATION_SCROLL = 0x8a3,
-/*20120417 to 20180621
+/*20120417 to 20180711
ë˜ì „ì´ë™ 스í¬ë¡¤ 사용 ì ìš©
Use Scroll?
20130807 to 20130814
Scroll
*/
MSG_NAVIGATION_USESCROLL = 0x8a4,
-/*20120417 to 20180621
+/*20120417 to 20180711
Service
20130807 to 20130814
ë˜ì „ì´ë™ 스í¬ë¡¤ 사용 ì ìš©
Use Scroll?
*/
MSG_NAVIGATION_SERVICE = 0x8a5,
-/*20120417 to 20180621
+/*20120417 to 20180711
위치 ì´ë™ 서비스 허용
Use Kafra Warp?
20130807 to 20130814
Service
*/
MSG_NAVIGATION_USESERVICE = 0x8a6,
-/*20120417 to 20180621
+/*20120417 to 20180711
Plane
20130807 to 20130814
위치 ì´ë™ 서비스 허용
Use Kafra Warp?
*/
MSG_NAVIGATION_PLANE = 0x8a7,
-/*20120417 to 20180621
+/*20120417 to 20180711
비공정 ì´ë™ ì ìš©
Use Airship?
20130807 to 20130814
Plane
*/
MSG_NAVIGATION_USEPLANE = 0x8a8,
-/*20120417 to 20180621
+/*20120417 to 20180711
>> 목표 정보를 ì½ì§€ 못함!
>> Failed to read the target information.
20130807 to 20130814
@@ -12919,7 +12919,7 @@ Plane
Use Airship?
*/
MSG_NAVIGATION_TARGETUNKNOWN = 0x8a9,
-/*20120417 to 20180621
+/*20120417 to 20180711
<< 안내중 >>
>> Destination <<
20130807 to 20130814
@@ -12927,7 +12927,7 @@ Use Airship?
>> Failed to read the target information.
*/
MSG_NAVIGATION_GOING = 0x8aa,
-/*20120417 to 20180621
+/*20120417 to 20180711
<< 검색중... >>
<< Goal >>
20130807 to 20130814
@@ -12935,53 +12935,53 @@ Use Airship?
>> Destination <<
*/
MSG_NAVIGATION_SEARCHING = 0x8ab,
-/*20120417 to 20180621
+/*20120417 to 20180711
-----------
20130807 to 20130814
<< 검색중... >>
<< Goal >>
*/
MSG_NAVIGATION_UN = 0x8ac,
-/*20120417 to 20180621
+/*20120417 to 20180711
Navigation
20130807 to 20130814
-----------
*/
MSG_NAVIGATION_NAVI = 0x8ad,
-/*20120417 to 20180621
+/*20120417 to 20180711
== 검색 결과(%d)==
= Found (%d) ==
20130807 to 20130814
Navigation
*/
MSG_NAVIGATION_SEARCHRESULT_D = 0x8ae,
-/*20120417 to 20180621
+/*20120417 to 20180711
Npc)%s:%s
20130807 to 20130814
== 검색 결과(%d)==
= Found (%d) ==
*/
MSG_NAVIGATION_NPC_S_S = 0x8af,
-/*20120417 to 20180621
+/*20120417 to 20180711
Mob)%s:%s
20130807 to 20130814
Npc)%s:%s
*/
MSG_NAVIGATION_MOB_S_S = 0x8b0,
-/*20120417 to 20180621
+/*20120417 to 20180711
Map)%s
20130807 to 20130814
Mob)%s:%s
*/
MSG_NAVIGATION_MAP_S = 0x8b1,
-/*20120417 to 20180621
+/*20120417 to 20180711
======== ê²°ê³¼ ì •ë³´ ==========
======== Results ==========
20130807 to 20130814
Map)%s
*/
MSG_NAVIGATION_RESULTINFO = 0x8b2,
-/*20120417 to 20180621
+/*20120417 to 20180711
거리 : %d Sell %d WarpMove
Dist %d Cell %d WarpMove
20130807 to 20130814
@@ -12989,7 +12989,7 @@ Dist %d Cell %d WarpMove
======== Results ==========
*/
MSG_NAVIGATION_LENGTH = 0x8b3,
-/*20120417 to 20180621
+/*20120417 to 20180711
목표맵: %s(%s)
Coords %s(%s)
20130807 to 20130814
@@ -12997,7 +12997,7 @@ Coords %s(%s)
Dist %d Cell %d WarpMove
*/
MSG_NAVIGATION_TARGETMAP_S_S = 0x8b4,
-/*20120417 to 20180621
+/*20120417 to 20180711
목표 : %s(%d, %d)
Goal:%s (%d,%d)
20130807 to 20130814
@@ -13005,7 +13005,7 @@ Goal:%s (%d,%d)
Coords %s(%s)
*/
MSG_NAVIGATION_TARGET_S_D_D = 0x8b5,
-/*20120417 to 20180621
+/*20120417 to 20180711
보스
Boss
20130807 to 20130814
@@ -13013,7 +13013,7 @@ Boss
Goal:%s (%d,%d)
*/
MSG_NAVIGATION_BOSS = 0x8b6,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì¼ë°˜
General
20130807 to 20130814
@@ -13021,7 +13021,7 @@ General
Boss
*/
MSG_NAVIGATION_NORMAL = 0x8b7,
-/*20120417 to 20180621
+/*20120417 to 20180711
목표 : %s(%s)
Goal:
20130807 to 20130814
@@ -13029,7 +13029,7 @@ Goal:
General
*/
MSG_NAVIGATION_TARGET_S_S = 0x8b8,
-/*20120417 to 20180621
+/*20120417 to 20180711
목표: (%d, %d)
Goal: (%d, %d)
20130807 to 20130814
@@ -13037,7 +13037,7 @@ Goal: (%d, %d)
Goal:
*/
MSG_NAVIGATION_TARGET_D_D = 0x8b9,
-/*20120417 to 20180621
+/*20120417 to 20180711
======= 길 안내 정보 =======
======= Guidance =======
20130807 to 20130814
@@ -13045,7 +13045,7 @@ Goal:
Goal: (%d, %d)
*/
MSG_NAVIGATION_GOINFO = 0x8ba,
-/*20120417 to 20180621
+/*20120417 to 20180711
%2d) Item:%s => %s 사용!
%2d) Item:%s => %s Use!
20130807 to 20130814
@@ -13053,33 +13053,33 @@ Goal: (%d, %d)
======= Guidance =======
*/
MSG_NAVIGATION_ITEM_S_S = 0x8bb,
-/*20120417 to 20180621
+/*20120417 to 20180711
%2d) %s(%d,%d)=>(%d,%d)
20130807 to 20130814
%2d) Item:%s => %s 사용!
%2d) Item:%s => %s Use!
*/
MSG_NAVIGATION_D_S_D_D_D_D = 0x8bc,
-/*20120417 to 20180621
+/*20120417 to 20180711
E%2d) %s(%d,%d)=>(%d,%d)
20130807 to 20130814
%2d) %s(%d,%d)=>(%d,%d)
*/
MSG_NAVIGATION_E_D_S_D_D_D_D = 0x8bd,
-/*20120417 to 20180621
+/*20120417 to 20180711
E%2d) %s
20130807 to 20130814
E%2d) %s(%d,%d)=>(%d,%d)
*/
MSG_NAVIGATION_E_D_S = 0x8be,
-/*20120417 to 20180621
+/*20120417 to 20180711
안내중 입니다! 종료 하시겠습니까?
Do you want to cancel navigation?
20130807 to 20130814
E%2d) %s
*/
MSG_NAVIGATION_GOEXIT = 0x8bf,
-/*20120417 to 20180621
+/*20120417 to 20180711
내비게ì´ì…˜ ë„움ë§
How to Use Navigation
20130807 to 20130814
@@ -13087,7 +13087,7 @@ How to Use Navigation
Do you want to cancel navigation?
*/
MSG_NAVIGATION_HELPTITLE = 0x8c0,
-/*20120417 to 20180621
+/*20120417 to 20180711
------------------- 명령어 --------------------
------------------- Instruction --------------------
20130807 to 20130814
@@ -13095,7 +13095,7 @@ Do you want to cancel navigation?
How to Use Navigation
*/
MSG_NAVIGATION_HELP1 = 0x8c1,
-/*20120417 to 20180621
+/*20120417 to 20180711
1. /navigation /navi
1) /Navigation or /navi
20130807 to 20130814
@@ -13105,7 +13105,7 @@ How to Use Navigation
MSG_NAVIGATION_HELP2 = 0x8c2,
/*20120417 to 20120418
ex)/navi prontera 100 100 -> 맵ì´ë¦„, 100, 100
-20120424 to 20180621
+20120424 to 20180711
ex)/navi prontera 100/100 -> 맵ì´ë¦„, 100/100
ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
20130807 to 20130814
@@ -13116,7 +13116,7 @@ ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
/*20120417 to 20120418
2. /navigation2 /navi2
ex) /navi2 prontera 100 111
-20120424 to 20180621
+20120424 to 20180711
기본 명령어는 제니, 비공정 ê²€ìƒ‰ì„ ê¸°ë³¸ìœ¼ë¡œ 합니다.
2) /Navigation2 or /navi2
20130807 to 20130814
@@ -13126,7 +13126,7 @@ ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
MSG_NAVIGATION_HELP4 = 0x8c4,
/*20120417 to 20120418
ex) /navi2 prontera 100090 111
-20120424 to 20180621
+20120424 to 20180711
2. /navigation2 /navi2
ex) /navi2 prontera 100 111
20130807 to 20130814
@@ -13136,7 +13136,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP5 = 0x8c5,
/*20120417 to 20120418
-> 맵ì´ë¦„, 위치(100 90), scrool/ zeny/ plane (1:사용함 0: 사용안함)
-20120424 to 20180621
+20120424 to 20180711
ex) /navi2 prontera 100/100 1/1/1
-> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
20130807 to 20130814
@@ -13146,7 +13146,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP6 = 0x8c6,
/*20120417 to 20120418
※ /navi2 ì˜ ê²½ìš° 반드시 위치 좌표를 붙여서 3 ìžë¦¬ë¡œ ì ì–´ì•¼ 한다
-20120424 to 20180621
+20120424 to 20180711
-> 맵ì´ë¦„, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
20130807 to 20130814
@@ -13156,7 +13156,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP7 = 0x8c7,
/*20120417 to 20120418
3. /$$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
-20120424 to 20180621
+20120424 to 20180711
3. $$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
3) /$$ Output all the items (Can take a while...)
20130807 to 20130814
@@ -13166,7 +13166,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP8 = 0x8c8,
/*20120417 to 20120418
4. /$$lv30 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력
-20120424 to 20180621
+20120424 to 20180711
4. $$lv30 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력
4) /$$ Lv30 monsters are placed in the output
20130807 to 20130814
@@ -13176,7 +13176,7 @@ ex) /navi2 prontera 100 111
MSG_NAVIGATION_HELP9 = 0x8c9,
/*20120417 to 20120418
5. /$$lv20~30 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력
-20120424 to 20180621
+20120424 to 20180711
5. $$lv20~30 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력
5) /$$ Lv20~30 monsters in that level range are placed in the output
20130807 to 20130814
@@ -13184,7 +13184,7 @@ ex) /navi2 prontera 100 111
4) /$$ Lv30 monsters are placed in the output
*/
MSG_NAVIGATION_HELP10 = 0x8ca,
-/*20120417 to 20180621
+/*20120417 to 20180711
------------------- 설명 --------------------
------------------- Description --------------------
20130807 to 20130814
@@ -13192,7 +13192,7 @@ ex) /navi2 prontera 100 111
5) /$$ Lv20~30 monsters in that level range are placed in the output
*/
MSG_NAVIGATION_HELP11 = 0x8cb,
-/*20120417 to 20180621
+/*20120417 to 20180711
1.검색 종류는 ì „ì²´, 맵, Npc, 몬스터 으로 분류 ëœë‹¤.
1) One can search for monsters, npcs, maps, or all at once
20130807 to 20130814
@@ -13200,7 +13200,7 @@ ex) /navi2 prontera 100 111
------------------- Description --------------------
*/
MSG_NAVIGATION_HELP12 = 0x8cc,
-/*20120417 to 20180621
+/*20120417 to 20180711
2.명령어로 검색한다. ê·œì¹™ì€ ê²€ìƒ‰ 하려는 문ìžì—´ì´ ëª¨ë‘ í¬í•¨ëœ 정보를 출력 한다.
2) You can press the search button to get results. It will out put the results depending on what rule you choose
20130807 to 20130814
@@ -13208,7 +13208,7 @@ ex) /navi2 prontera 100 111
1) One can search for monsters, npcs, maps, or all at once
*/
MSG_NAVIGATION_HELP13 = 0x8cd,
-/*20120417 to 20180621
+/*20120417 to 20180711
ex) 프론 카프 -> 검색 ê²°ê³¼ 프론테ë¼ì˜ 카프ë¼ë¥¼ ëª¨ë‘ ì¶œë ¥ 한다.
ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
20130807 to 20130814
@@ -13216,7 +13216,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
2) You can press the search button to get results. It will out put the results depending on what rule you choose
*/
MSG_NAVIGATION_HELP14 = 0x8ce,
-/*20120417 to 20180621
+/*20120417 to 20180711
3.리스트ì—ì„œ í•­ëª©ì„ ì„ íƒí•˜ë©´ ì •ë³´ê°€ 출력ëœë‹¤.
3) When you select an item from a list, information about it are displayed.
20130807 to 20130814
@@ -13224,7 +13224,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
*/
MSG_NAVIGATION_HELP15 = 0x8cf,
-/*20120417 to 20180621
+/*20120417 to 20180711
출력 ë˜ê³  있는 목표가 있ì„ë•Œ 안내 ë²„íŠ¼ì„ í´ë¦­í•˜ë©´ 해당 목표로 ê¸¸ì„ ì•ˆë‚´ 한다.
-> When button is clicked, it will point you towards your destination if available
20130807 to 20130814
@@ -13232,7 +13232,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
3) When you select an item from a list, information about it are displayed.
*/
MSG_NAVIGATION_HELP16 = 0x8d0,
-/*20120417 to 20180621
+/*20120417 to 20180711
4.scrool/ zeny/ plane ìƒìžë¥¼ ì›í•˜ëŠ” ë§Œí¼ ì²´í¬í•˜ì—¬ ë” ë¹ ë¥¸ 경로를 안내 ë°›ì„ ìˆ˜ 있다.
4) Scroll | Zeny | Plane options can be checked to find a faster route
20130807 to 20130814
@@ -13240,7 +13240,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
-> When button is clicked, it will point you towards your destination if available
*/
MSG_NAVIGATION_HELP17 = 0x8d1,
-/*20120417 to 20180621
+/*20120417 to 20180711
5.안내 ë²„íŠ¼ì´ ëˆŒëŸ¬ì§€ë©´ ê²°ê³¼ ë¦¬ìŠ¤íŠ¸ì°½ì€ ê¸¸ì•ˆë‚´ 리스트 장으로 변경 ëœë‹¤.
5) Guide button is pressed, the result list window displays where routes can change direction
20130807 to 20130814
@@ -13248,7 +13248,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
4) Scroll | Zeny | Plane options can be checked to find a faster route
*/
MSG_NAVIGATION_HELP18 = 0x8d2,
-/*20120417 to 20180621
+/*20120417 to 20180711
6.검색 리스트창 하단 ë²„íŠ¼ì„ ì´ìš©í•˜ì—¬
6) Using the button below, search results can be found
20130807 to 20130814
@@ -13256,7 +13256,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
5) Guide button is pressed, the result list window displays where routes can change direction
*/
MSG_NAVIGATION_HELP19 = 0x8d3,
-/*20120417 to 20180621
+/*20120417 to 20180711
[결과 리스트 창] <-> [길 안내 정보 창] 으로 보기 모드 변경 가능하다.
-> [Results List Window] <-> [View Modes can be switched]
20130807 to 20130814
@@ -13264,7 +13264,7 @@ ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will no
6) Using the button below, search results can be found
*/
MSG_NAVIGATION_HELP20 = 0x8d4,
-/*20120417 to 20180621
+/*20120417 to 20180711
Level:%d (보스)
Level:%d (Boss)
20130807 to 20130814
@@ -13272,7 +13272,7 @@ Level:%d (Boss)
-> [Results List Window] <-> [View Modes can be switched]
*/
MSG_NAVIGATION_LEVEL_D_BOSS = 0x8d5,
-/*20120417 to 20180621
+/*20120417 to 20180711
Level:%d (ì¼ë°˜)
Level:%d (Mob)
20130807 to 20130814
@@ -13280,7 +13280,7 @@ Level:%d (보스)
Level:%d (Boss)
*/
MSG_NAVIGATION_LEVEL_D_NORMAL = 0x8d6,
-/*20120417 to 20180621
+/*20120417 to 20180711
수ì†ì„±%d
Water %d
20130807 to 20130814
@@ -13288,7 +13288,7 @@ Level:%d (ì¼ë°˜)
Level:%d (Mob)
*/
MSG_NAVIGATION_PROPERTY1 = 0x8d7,
-/*20120417 to 20180621
+/*20120417 to 20180711
지ì†ì„±%d
Earth %d
20130807 to 20130814
@@ -13296,7 +13296,7 @@ Earth %d
Water %d
*/
MSG_NAVIGATION_PROPERTY2 = 0x8d8,
-/*20120417 to 20180621
+/*20120417 to 20180711
í™”ì†ì„±%d
Fire %d
20130807 to 20130814
@@ -13304,7 +13304,7 @@ Fire %d
Earth %d
*/
MSG_NAVIGATION_PROPERTY3 = 0x8d9,
-/*20120417 to 20180621
+/*20120417 to 20180711
í’ì†ì„±%d
Wind %d
20130807 to 20130814
@@ -13312,7 +13312,7 @@ Wind %d
Fire %d
*/
MSG_NAVIGATION_PROPERTY4 = 0x8da,
-/*20120417 to 20180621
+/*20120417 to 20180711
ë…ì†ì„±%d
Poison %d
20130807 to 20130814
@@ -13320,7 +13320,7 @@ Poison %d
Wind %d
*/
MSG_NAVIGATION_PROPERTY5 = 0x8db,
-/*20120417 to 20180621
+/*20120417 to 20180711
성ì†ì„±%d
Holy %d
20130807 to 20130814
@@ -13328,7 +13328,7 @@ Holy %d
Poison %d
*/
MSG_NAVIGATION_PROPERTY6 = 0x8dc,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì•”ì†ì„±%d
Shadow %d
20130807 to 20130814
@@ -13336,7 +13336,7 @@ Shadow %d
Holy %d
*/
MSG_NAVIGATION_PROPERTY7 = 0x8dd,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì—¼ì†ì„±%d
Ghost %d
20130807 to 20130814
@@ -13344,7 +13344,7 @@ Ghost %d
Shadow %d
*/
MSG_NAVIGATION_PROPERTY8 = 0x8de,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì–¸ë°ë“œ%d
Undead %d
20130807 to 20130814
@@ -13352,7 +13352,7 @@ Undead %d
Ghost %d
*/
MSG_NAVIGATION_PROPERTY9 = 0x8df,
-/*20120417 to 20180621
+/*20120417 to 20180711
무ì†ì„±%d
Neutral %d
20130807 to 20130814
@@ -13360,7 +13360,7 @@ Neutral %d
Undead %d
*/
MSG_NAVIGATION_PROPERTY0 = 0x8e0,
-/*20120417 to 20180621
+/*20120417 to 20180711
중형
Medium
20130807 to 20130814
@@ -13368,7 +13368,7 @@ Medium
Neutral %d
*/
MSG_NAVIGATION_SCALE1 = 0x8e1,
-/*20120417 to 20180621
+/*20120417 to 20180711
대형
Large
20130807 to 20130814
@@ -13376,7 +13376,7 @@ Large
Medium
*/
MSG_NAVIGATION_SCALE2 = 0x8e2,
-/*20120417 to 20180621
+/*20120417 to 20180711
소형
Small
20130807 to 20130814
@@ -13384,7 +13384,7 @@ Small
Large
*/
MSG_NAVIGATION_SCALE0 = 0x8e3,
-/*20120417 to 20180621
+/*20120417 to 20180711
불사형
Undead
20130807 to 20130814
@@ -13392,7 +13392,7 @@ Undead
Small
*/
MSG_NAVIGATION_RACE1 = 0x8e4,
-/*20120417 to 20180621
+/*20120417 to 20180711
ë™ë¬¼í˜•
Brute
20130807 to 20130814
@@ -13400,7 +13400,7 @@ Brute
Undead
*/
MSG_NAVIGATION_RACE2 = 0x8e5,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì‹ë¬¼í˜•
Plant
20130807 to 20130814
@@ -13408,7 +13408,7 @@ Plant
Brute
*/
MSG_NAVIGATION_RACE3 = 0x8e6,
-/*20120417 to 20180621
+/*20120417 to 20180711
곤충형
Insect
20130807 to 20130814
@@ -13416,7 +13416,7 @@ Insect
Plant
*/
MSG_NAVIGATION_RACE4 = 0x8e7,
-/*20120417 to 20180621
+/*20120417 to 20180711
어패형
Fish
20130807 to 20130814
@@ -13424,7 +13424,7 @@ Fish
Insect
*/
MSG_NAVIGATION_RACE5 = 0x8e8,
-/*20120417 to 20180621
+/*20120417 to 20180711
악마형
Demon
20130807 to 20130814
@@ -13432,7 +13432,7 @@ Demon
Fish
*/
MSG_NAVIGATION_RACE6 = 0x8e9,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì¸ê°„형
Demi-Human
20130807 to 20130814
@@ -13440,7 +13440,7 @@ Demi-Human
Demon
*/
MSG_NAVIGATION_RACE7 = 0x8ea,
-/*20120417 to 20180621
+/*20120417 to 20180711
천사형
Angel
20130807 to 20130814
@@ -13448,7 +13448,7 @@ Angel
Demi-Human
*/
MSG_NAVIGATION_RACE8 = 0x8eb,
-/*20120417 to 20180621
+/*20120417 to 20180711
용족
Dragon
20130807 to 20130814
@@ -13456,7 +13456,7 @@ Dragon
Angel
*/
MSG_NAVIGATION_RACE9 = 0x8ec,
-/*20120417 to 20180621
+/*20120417 to 20180711
무형
Formless
20130807 to 20130814
@@ -13464,7 +13464,7 @@ Formless
Dragon
*/
MSG_NAVIGATION_RACE0 = 0x8ed,
-/*20120417 to 20180621
+/*20120417 to 20180711
%s ì´ë™ í´ë¦­
Click to move %s
20130807 to 20130814
@@ -13472,7 +13472,7 @@ Click to move %s
Formless
*/
MSG_NAVIGATION_MOVECLICK = 0x8ee,
-/*20120417 to 20180621
+/*20120417 to 20180711
Npc ì´ë™ 서비스 ì´ìš©
Move to the Kafra Service Npc
20130807 to 20130814
@@ -13480,7 +13480,7 @@ Move to the Kafra Service Npc
Click to move %s
*/
MSG_NAVIGATION_NPCMOVE = 0x8ef,
-/*20120417 to 20180621
+/*20120417 to 20180711
NPC í´ë¦­
Click the NPC
20130807 to 20130814
@@ -13488,7 +13488,7 @@ Npc ì´ë™ 서비스 ì´ìš©
Move to the Kafra Service Npc
*/
MSG_NAVIGATION_NPCCLICK = 0x8f0,
-/*20120417 to 20180621
+/*20120417 to 20180711
%s ì´ë™
Move %s
20130807 to 20130814
@@ -13496,7 +13496,7 @@ NPC í´ë¦­
Click the NPC
*/
MSG_NAVIGATION_S_MOVE = 0x8f1,
-/*20120417 to 20180621
+/*20120417 to 20180711
비공정 ì´ë™
Move to the Airship Service
20130807 to 20130814
@@ -13504,7 +13504,7 @@ Move to the Airship Service
Move %s
*/
MSG_NAVIGATION_PLANEMOVE = 0x8f2,
-/*20120417 to 20180621
+/*20120417 to 20180711
워프 ì´ìš©
By Warp
20130807 to 20130814
@@ -13512,7 +13512,7 @@ By Warp
Move to the Airship Service
*/
MSG_NAVIGATION_WARPUSE = 0x8f3,
-/*20120417 to 20180621
+/*20120417 to 20180711
ë„ì°©ì  : ( %d %d )
End Points: (%d %d)
20130807 to 20130814
@@ -13525,19 +13525,19 @@ By Warp
20130807 to 20130814
ë„ì°©ì  : ( %d %d )
End Points: (%d %d)
-20170524 to 20180621
+20170524 to 20180711
내비게ì´ì…˜ì´ ì§€ì› ë˜ì§€ 않는 지역 입니다.
That does not support the navigation area
*/
MSG_NAVIGATION_UNKNOWNMAP = 0x8f5,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì°¾ê³ ìž í•˜ëŠ” 목ì ì´ 불분명 합니다.
The purpose is unclear
20130807 to 20130814
네비게ì´ì…˜ì´ ì§€ì› ë˜ì§€ 않는 지역 입니다.
*/
MSG_NAVIGATION_RS_UNKNOWN = 0x8f6,
-/*20120417 to 20180621
+/*20120417 to 20180711
ë§¤ì¹­ì´ ë§žì§€ 않는 맵ì´ë‹¤.
Does not meet the map requirement
20130807 to 20130814
@@ -13545,7 +13545,7 @@ Does not meet the map requirement
The purpose is unclear
*/
MSG_NAVIGATION_RS_NOTSAMEMAP = 0x8f7,
-/*20120417 to 20180621
+/*20120417 to 20180711
출발 ì§€ì—­ì— ëŒ€í•œ ì •ë³´ 설정 실패!
Information Failure | Change settings
20130807 to 20130814
@@ -13553,7 +13553,7 @@ Information Failure | Change settings
Does not meet the map requirement
*/
MSG_NAVIGATION_RS_FAILSTARTDATA = 0x8f8,
-/*20120417 to 20180621
+/*20120417 to 20180711
ë„ì°© 지ì ì— 대한 ì •ë³´ 설정 실패!
Failed to set info for location!
20130807 to 20130814
@@ -13561,7 +13561,7 @@ Failed to set info for location!
Information Failure | Change settings
*/
MSG_NAVIGATION_RS_FAILTARGET = 0x8f9,
-/*20120417 to 20180621
+/*20120417 to 20180711
길 찾기 실패
Failed to find a path
20130807 to 20130814
@@ -13569,7 +13569,7 @@ Failed to find a path
Failed to set info for location!
*/
MSG_NAVIGATION_RS_FAILROUTE = 0x8fa,
-/*20120417 to 20180621
+/*20120417 to 20180711
플레ì´ì–´ 위치 찾기 실패
Failed to find players
20130807 to 20130814
@@ -13577,7 +13577,7 @@ Failed to find players
Failed to find a path
*/
MSG_NAVIGATION_RS_FAILPLAYER = 0x8fb,
-/*20120417 to 20180621
+/*20120417 to 20180711
내비게ì´ì…˜ì— ì •ë³´ê°€ 없습니다.
No Information
20130807 to 20130814
@@ -13585,7 +13585,7 @@ No Information
Failed to find players
*/
MSG_NAVIGATION_RS_NODATA = 0x8fc,
-/*20120417 to 20180621
+/*20120417 to 20180711
해당 ë§µì€ ê¸¸ì°¾ê¸°ê°€ ì§€ì› ë˜ì§€ 않는 맵입니다.
Map doesn't support directions
20130807 to 20130814
@@ -13593,7 +13593,7 @@ Map doesn't support directions
No Information
*/
MSG_NAVIGATION_RS_MAPNOTNAVIGATION = 0x8fd,
-/*20120417 to 20180621
+/*20120417 to 20180711
목표를 지정 하시기 ë°”ëžë‹ˆë‹¤.
Please specify target goals.
20130807 to 20130814
@@ -13601,7 +13601,7 @@ Please specify target goals.
Map doesn't support directions
*/
MSG_NAVIGATION_RS_FAILTARGETROUTE = 0x8fe,
-/*20120417 to 20180621
+/*20120417 to 20180711
ë„ì°©.
Found
20130807 to 20130814
@@ -13609,7 +13609,7 @@ Found
Please specify target goals.
*/
MSG_NAVIGATION_RS_SUCCESS = 0x8ff,
-/*20120417 to 20180621
+/*20120417 to 20180711
길 안내가 시작 ë˜ì—ˆìŠµë‹ˆë‹¤.
Directions were started
20130807 to 20130814
@@ -13617,7 +13617,7 @@ Directions were started
Found
*/
MSG_NAVIGATION_RS_START = 0x900,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì°¾ê³ ìž í•˜ëŠ” 몬스터가 있는 맵 입니다.
Is the map that your looking for mob
20130807 to 20130814
@@ -13625,7 +13625,7 @@ Is the map that your looking for mob
Directions were started
*/
MSG_NAVIGATION_RS_MOBTARGETMAP = 0x901,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì°¾ê³ ìž í•˜ëŠ” ë§µì´ í•´ë‹¹ 맵 입니다.
Map appears on the guide you are looking for
20130807 to 20130814
@@ -13633,7 +13633,7 @@ Map appears on the guide you are looking for
Is the map that your looking for mob
*/
MSG_NAVIGATION_RS_TARGETMAP = 0x902,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì•„ì´í…œì„ 사용하여 ì´ë™í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.
Please navigate using the item
20130807 to 20130814
@@ -13641,7 +13641,7 @@ Please navigate using the item
Map appears on the guide you are looking for
*/
MSG_NAVIGATION_RS_SCROLL = 0x903,
-/*20120417 to 20180621
+/*20120417 to 20180711
안내하는 위치로 ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Please follow the instruction to reach your destination.
20130807 to 20130814
@@ -13649,7 +13649,7 @@ Please follow the instruction to reach your destination.
Please navigate using the item
*/
MSG_NAVIGATION_RS_ROUTE_SUCCESS = 0x904,
-/*20120417 to 20180621
+/*20120417 to 20180711
목표 ë§µì— ë„착하였습니다.
Arrived at the target map
20130807 to 20130814
@@ -13657,7 +13657,7 @@ Arrived at the target map
Please follow the instruction to reach your destination.
*/
MSG_NAVIGATION_RS_MAPTMAP_SUCCESS = 0x905,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì°¾ê³ ìž í•˜ëŠ” Npcê°€ 있는 ë§µì— ë„ì°© 하였습니다. Npcë¡œ ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Arrived on the map that has the Npc your looking for. Go to that NPC
20130807 to 20130814
@@ -13665,7 +13665,7 @@ Arrived on the map that has the Npc your looking for. Go to that NPC
Arrived at the target map
*/
MSG_NAVIGATION_RS_NPCTMAP_SUCCESS = 0x906,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì°¾ê³ ìž í•˜ëŠ” Mobì´ ì„œì‹í•˜ëŠ” ë§µì— ë„ì°© 하였습니다.
You have arrived at the mob you were looking for
20130807 to 20130814
@@ -13673,7 +13673,7 @@ You have arrived at the mob you were looking for
Arrived on the map that has the Npc your looking for. Go to that NPC
*/
MSG_NAVIGATION_RS_MOBTMAP_SUCCESS = 0x907,
-/*20120417 to 20180621
+/*20120417 to 20180711
ì´ì „ê³¼ ë™ì¼í•œ 목표 입니다.
You have reached your goal
20130807 to 20130814
@@ -13681,7 +13681,7 @@ You have reached your goal
You have arrived at the mob you were looking for
*/
MSG_NAVIGATION_RS_POSTMAP_SUCCESS = 0x908,
-/*20120417 to 20180621
+/*20120417 to 20180711
가리키는 방향으로 가시기 ë°”ëžë‹ˆë‹¤.
Please go to indicated direction.
20130807 to 20130814
@@ -13689,7 +13689,7 @@ Please go to indicated direction.
You have reached your goal
*/
MSG_NAVIGATION_RS_SAMETARGET = 0x909,
-/*20120417 to 20180621
+/*20120417 to 20180711
목표가 여기 입니다.
The goal has been reached
20130807 to 20130814
@@ -13697,21 +13697,21 @@ The goal has been reached
Please go to indicated direction.
*/
MSG_NAVIGATION_RS_HERE = 0x90a,
-/*20120417 to 20180621
+/*20120417 to 20180711
Navigation >: %s
20130807 to 20130814
목표가 여기 입니다.
The goal has been reached
*/
MSG_NAVIGATION_PRINT_S = 0x90b,
-/*20120417 to 20180621
+/*20120417 to 20180711
Navigation >: 안내하는 %s(ì„)를 ì´ìš©í•˜ì—¬
Navigation >: Talk to Guide "%s" (A)
20130807 to 20130814
Navigation >: %s
*/
MSG_NAVIGATION_PRINT_GO_S = 0x90c,
-/*20120417 to 20180621
+/*20120417 to 20180711
Navigation >: 맵(%s)으로 ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤
Navigation >: Move to (%s) map
20130807 to 20130814
@@ -13719,7 +13719,7 @@ Navigation >: 안내하는 %s(ì„)를 ì´ìš©í•˜ì—¬
Navigation >: Talk to Guide "%s" (A)
*/
MSG_NAVIGATION_PRINT_MAP_S = 0x90d,
-/*20120417 to 20180621
+/*20120417 to 20180711
Navigation >: 맵(%s)ì„ ì„ íƒí•˜ì—¬ ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Choose (%s) Map from Kafra
20130807 to 20130814
@@ -13727,7 +13727,7 @@ Navigation >: 맵(%s)으로 ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤
Navigation >: Move to (%s) map
*/
MSG_NAVIGATION_PRINT_SELECTMAP_S = 0x90e,
-/*20120417 to 20180621
+/*20120417 to 20180711
Navigation >: 비공정으로 ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Please go to the AirShip
20130807 to 20130814
@@ -13735,7 +13735,7 @@ Navigation >: 맵(%s)ì„ ì„ íƒí•˜ì—¬ ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Choose (%s) Map from Kafra
*/
MSG_NAVIGATION_PRINT_PLANE = 0x90f,
-/*20120417 to 20180621
+/*20120417 to 20180711
Navigation >: 워프를 ì´ìš©í•˜ì—¬ ë‹¤ìŒ ì§€ì—­ìœ¼ë¡œ ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Navigation >: Get to your destination by using WarpPortal
20130807 to 20130814
@@ -13743,32 +13743,32 @@ Navigation >: 비공정으로 ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Please go to the AirShip
*/
MSG_NAVIGATION_PRINT_WARP = 0x910,
-/*20120417 to 20180621
+/*20120417 to 20180711
Item:
20130807 to 20130814
Navigation >: 워프를 ì´ìš©í•˜ì—¬ ë‹¤ìŒ ì§€ì—­ìœ¼ë¡œ ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Navigation >: Get to your destination by using WarpPortal
*/
MSG_NAVIGATION_PRINT_ITEM = 0x911,
-/*20120417 to 20180621
+/*20120417 to 20180711
$$
20130807 to 20130814
Item:
*/
MSG_NAVIGATION_ZZ = 0x912,
-/*20120417 to 20180621
+/*20120417 to 20180711
$$lv
20130807 to 20130814
$$
*/
MSG_NAVIGATION_ZZLV = 0x913,
-/*20120417 to 20180621
+/*20120417 to 20180711
~
20130807 to 20130814
$$lv
*/
MSG_NAVIGATION_ZZLIMIT = 0x914,
-/*20120417 to 20180621
+/*20120417 to 20180711
$$all
20130807 to 20130814
~
@@ -13776,14 +13776,14 @@ $$all
MSG_NAVIGATION_ZZALL = 0x915,
#endif
#if PACKETVER >= 20120424
-/*20120424 to 20180621
+/*20120424 to 20180711
구매 확ì¸ì„œ
Confirm Deal
20130807 to 20130814
$$all
*/
MSG_SHOP_ITEM_BAY_TITLE = 0x916,
-/*20120424 to 20180621
+/*20120424 to 20180711
구입하려는 ì•„ì´í…œë“¤ì˜ ì´ê°€ê²©ì€
Below is the total cost:
20130807 to 20130814
@@ -13791,7 +13791,7 @@ Below is the total cost:
Confirm Deal
*/
MSG_SHOP_ITEM_BAY_MAG1 = 0x917,
-/*20120424 to 20180621
+/*20120424 to 20180711
Zeny 입니다.
Zeny to complete the transaction.
20130807 to 20130814
@@ -13799,7 +13799,7 @@ Zeny 입니다.
Below is the total cost:
*/
MSG_SHOP_ITEM_BAY_MAG2 = 0x918,
-/*20120424 to 20180621
+/*20120424 to 20180711
구입하시겠습니까?
Press buy to confirm.
20130807 to 20130814
@@ -13811,7 +13811,7 @@ Zeny 입니다.
#if PACKETVER >= 20120502
/*20120502 to 20120529
%.3f%% (PC방 %.3f%% + TPLUS %.3f%% + 프리미엄 %.3f%% + %s서버 %.3f%%)
-20120601 to 20180621
+20120601 to 20180711
%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + 프리미엄 %.1f%% + %s서버 %.1f%%)
%.1f% (PCRoom %.1f% + TPLUS %.1f% + Premium %.1f% + %sServer %.1f%)
20130807 to 20130814
@@ -13821,7 +13821,7 @@ Press buy to confirm.
MSG_BASIC_EXP_MSG2 = 0x91a,
#endif
#if PACKETVER >= 20120508
-/*20120508 to 20180621
+/*20120508 to 20180711
ì¹´ë“œ ë¶
Card Book
20130807 to 20130814
@@ -13831,7 +13831,7 @@ Card Book
MSG_CARDWIN = 0x91b,
#endif
#if PACKETVER >= 20120515
-/*20120515 to 20180621
+/*20120515 to 20180711
%d%% [ ( 기본 100%% + %s서버 %d%% ) * 활성 %.1f ]
%d%% [ ( Basic 100%% + %sServer %d%% ) * Active %.1f ]
20130807 to 20130814
@@ -13839,7 +13839,7 @@ Card Book
Card Book
*/
MSG_PERSONAL_INFORMATION_MSG_CHN = 0x91c,
-/*20120515 to 20180621
+/*20120515 to 20180711
%d%% [ 기본 100%% + %s서버 %d%% ]
%d%% [ Basic 100%% + %sServer %d%% ]
20130807 to 20130814
@@ -13849,7 +13849,7 @@ Card Book
MSG_PERSONAL_INFORMATION_MSG_CHN_DEATH = 0x91d,
#endif
#if PACKETVER >= 20120523
-/*20120523 to 20180621
+/*20120523 to 20180711
ì´ê³³ì€ PK 지역입니다. 미성년ìžëŠ” ìžë°œì ìœ¼ë¡œ 떠나주시기 ë°”ëžë‹ˆë‹¤.
This is PK region. Minors,Please leave immediately.
20130807 to 20130814
@@ -13857,7 +13857,7 @@ This is PK region. Minors,Please leave immediately.
%d%% [ Basic 100%% + %sServer %d%% ]
*/
MSG_CAUTION_PKZONE = 0x91e,
-/*20120523 to 20180621
+/*20120523 to 20180711
피로ë„
Fatigue
20130807 to 20130814
@@ -13867,7 +13867,7 @@ This is PK region. Minors,Please leave immediately.
MSG_FATIGUE = 0x91f,
/*20120523 to 20120529
ê±´ê°•ìƒíƒœ ì´ë©° 게임수ìµì€ 100%%입니다.
-20120601 to 20180621
+20120601 to 20180711
ê±´ê°•ìƒíƒœ ì´ë©° 게임수ìµì€ 100%입니다.
Health and gaming revenue is 100%%.
20130807 to 20130814
@@ -13877,7 +13877,7 @@ Fatigue
MSG_FATIGUE_LEVEL_ZERO = 0x920,
/*20120523 to 20120529
ì§€ê¸ˆì€ í”¼ë¡œìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ 게임수ìµì€ 50%% 떨어집니다. ê±´ê°•ì„ ìœ„í•˜ì—¬ ì ë‹¹í•œ íœ´ì‹ ë°”ëžë‹ˆë‹¤.
-20120601 to 20180621
+20120601 to 20180711
ì§€ê¸ˆì€ í”¼ë¡œìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ 게임수ìµì€ 50% 떨어집니다. ê±´ê°•ì„ ìœ„í•˜ì—¬ ì ë‹¹í•œ íœ´ì‹ ë°”ëžë‹ˆë‹¤.
Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
20130807 to 20130814
@@ -13887,7 +13887,7 @@ Health and gaming revenue is 100%%.
MSG_FATIGUE_LEVEL_HALF = 0x921,
/*20120523 to 20120529
ì§€ê¸ˆì€ ë¹„ê±´ê°•ìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ ê±´ê°•ì„ ìœ„í•˜ì—¬ 게임오프ë¼ì¸ì„ ì›í•©ë‹ˆë‹¤. ê³„ì† ì˜¨ë¼ì¸ìƒíƒœì— 있으면 ê±´ê°•ì— ì†ìƒì„ 주므로 게임 수ìµì€ 0%%으로 떨어지며 게임 오프ë¼ì¸ 5ì‹œê°„í›„ì— ë‹¤ì‹œ 회복ë©ë‹ˆë‹¤.
-20120601 to 20180621
+20120601 to 20180711
ì§€ê¸ˆì€ ë¹„ê±´ê°•ìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ ê±´ê°•ì„ ìœ„í•˜ì—¬ 게임오프ë¼ì¸ì„ ì›í•©ë‹ˆë‹¤. ê³„ì† ì˜¨ë¼ì¸ìƒíƒœì— 있으면 ê±´ê°•ì— ì†ìƒì„ 주므로 게임 수ìµì€ 0%으로 떨어지며 게임 오프ë¼ì¸ 5ì‹œê°„í›„ì— ë‹¤ì‹œ 회복ë©ë‹ˆë‹¤.
Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
20130807 to 20130814
@@ -13895,7 +13895,7 @@ Now because it is a non-health to the health of the guests want to offline games
Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
*/
MSG_FATIGUE_LEVEL_FULL = 0x922,
-/*20120523 to 20180621
+/*20120523 to 20180711
ì ‘ì†ì‹œê°„ %d ë¶„ì´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Online since %d minutes
20130807 to 20130814
@@ -13903,7 +13903,7 @@ Online since %d minutes
Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
*/
MSG_FATIGUE_MESSAGE0 = 0x923,
-/*20120523 to 20180621
+/*20120523 to 20180711
ì ‘ì†ì‹œê°„ %d ì‹œê°„ì´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Online Time: %d
20130807 to 20130814
@@ -13911,7 +13911,7 @@ Online Time: %d
Online since %d minutes
*/
MSG_FATIGUE_MESSAGE1 = 0x924,
-/*20120523 to 20180621
+/*20120523 to 20180711
ì ‘ì†ì‹œê°„ %d 시간 %d ë¶„ì´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Online since %d hours and %d minutes
20130807 to 20130814
@@ -13919,7 +13919,7 @@ Online since %d hours and %d minutes
Online Time: %d
*/
MSG_FATIGUE_MESSAGE2 = 0x925,
-/*20120523 to 20180621
+/*20120523 to 20180711
/monsterhp : 공격한 ëª¬ìŠ¤í„°ì˜ HP정보를 표시합니다. On Off
/monsterhp: Show the hp of attacked monster. On off
20130807 to 20130814
@@ -13929,7 +13929,7 @@ Online since %d hours and %d minutes
MSG_EXPLAIN_MONSTERHP = 0x926,
#endif
#if PACKETVER >= 20120529
-/*20120529 to 20180621
+/*20120529 to 20180711
스킬í¬ì¸íŠ¸ :
Skill Points:
20130807 to 20130814
@@ -13939,7 +13939,7 @@ Skill Points:
MSG_SKILLPOINT2 = 0x927,
#endif
#if PACKETVER >= 20120601
-/*20120601 to 20180621
+/*20120601 to 20180711
ì¸ì¦ì„œë²„ë¡œ ë¶€í„°ì˜ ì‘ë‹µì´ ì—†ìŠµë‹ˆë‹¤. 다시 ì‹œë„í•´ 주세요
There is no response from the authentification server. Please try again
20130807 to 20130814
@@ -13949,7 +13949,7 @@ Skill Points:
MSG_BAN_BILLING_SERVER_ERROR = 0x928,
#endif
#if PACKETVER >= 20120612
-/*20120612 to 20180621
+/*20120612 to 20180711
암호를 변경하여 주시기 ë°”ëžë‹ˆë‹¤.
Please change your password
20130807 to 20130814
@@ -13957,21 +13957,21 @@ Please change your password
There is no response from the authentification server. Please try again
*/
MSG_REFUSE_CHANGE_PASSWD_FORCE = 0x929,
-/*20120612 to 20180621
+/*20120612 to 20180711
http://www.ragnarok.co.kr
20130807 to 20130814
암호를 변경하여 주시기 ë°”ëžë‹ˆë‹¤.
Please change your password
*/
MSG_REFUSE_CHANGE_PASSWD_SITE = 0x92a,
-/*20120612 to 20180621
+/*20120612 to 20180711
ê³ ê°ë‹˜ê»˜ì„œëŠ” 현재 ì ‘ì†ê¸ˆì§€ 시간입니다.
Guest access is prohibited
20130807 to 20130814
http://www.ragnarok.co.kr
*/
MSG_PLANNED_TIME_SHUTDOWN = 0x92b,
-/*20120612 to 20180621
+/*20120612 to 20180711
셧다운제ë„ì— ì˜í•´ ê³ ê°ë‹˜ì˜ 게임제한 ì‹œê°„ì€ %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2dì— ê²Œìž„ì´ ì¢…ë£Œë  ì˜ˆì •ìž…ë‹ˆë‹¤.
Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end time.
20130807 to 20130814
@@ -13981,7 +13981,7 @@ Guest access is prohibited
MSG_SHOUTDOWN_TIME = 0x92c,
#endif
#if PACKETVER >= 20120626
-/*20120626 to 20180621
+/*20120626 to 20180711
ê³ ê°ë‹˜ì˜ ê³„ì •ì€ ì„ íƒì  ì…§ë‹¤ìš´ì´ ì ìš©ëœ 계정ì´ë©°, ìž”ì—¬ì‹œê°„ì€ %1.2d시간 %1.2d분입니다. 게임 ì´ìš©ì— 참고해주시기 ë°”ëžë‹ˆë‹¤.
Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
20130807 to 20130814
@@ -13991,7 +13991,7 @@ Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end tim
MSG_PARTIAL_SHOUTDOWN_TIME = 0x92d,
#endif
#if PACKETVER >= 20120702
-/*20120702 to 20180621
+/*20120702 to 20180711
리플레ì´
Replay
20130807 to 20130814
@@ -13999,7 +13999,7 @@ Replay
Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
*/
MSG_MENU_REPLAYWND = 0x92e,
-/*20120702 to 20180621
+/*20120702 to 20180711
매í¬ë¡œ
Macro
20130807 to 20130814
@@ -14007,7 +14007,7 @@ Macro
Replay
*/
MSG_MENU_MACROWND = 0x92f,
-/*20120702 to 20180621
+/*20120702 to 20180711
Webbrowser
20130807 to 20130814
매í¬ë¡œ
@@ -14018,25 +14018,25 @@ Macro
네비게ì´ì…˜
20130807 to 20130814
Webbrowser
-20170524 to 20180621
+20170524 to 20180711
내비게ì´ì…˜
Navigation
*/
MSG_MENU_NAVIGATIONWND = 0x931,
-/*20120702 to 20180621
+/*20120702 to 20180711
UAEURL
20130807 to 20130814
네비게ì´ì…˜
*/
MSG_MENU_UAEURLWND = 0x932,
-/*20120702 to 20180621
+/*20120702 to 20180711
í´ëžœì •ë³´
Clan Information
20130807 to 20130814
UAEURL
*/
MSG_CLAN_INFOMANAGE = 0x933,
-/*20120702 to 20180621
+/*20120702 to 20180711
í´ëžœë ˆë²¨
Clan Level
20130807 to 20130814
@@ -14044,7 +14044,7 @@ Clan Level
Clan Information
*/
MSG_CLAN_LEVEL = 0x934,
-/*20120702 to 20180621
+/*20120702 to 20180711
í´ëžœëª…
Clan Name
20130807 to 20130814
@@ -14052,7 +14052,7 @@ Clan Name
Clan Level
*/
MSG_CLAN_NAME = 0x935,
-/*20120702 to 20180621
+/*20120702 to 20180711
í´ëžœë§ˆí¬
Clan Mark
20130807 to 20130814
@@ -14060,7 +14060,7 @@ Clan Mark
Clan Name
*/
MSG_CLAN_MARK = 0x936,
-/*20120702 to 20180621
+/*20120702 to 20180711
ë™ë§¹í´ëžœ
Ally Clan
20130807 to 20130814
@@ -14071,7 +14071,7 @@ Clan Mark
/*20120702 to 20130529
ì ëŒ€ê¸¸ë“œ
Antagonists
-20130605 to 20180621
+20130605 to 20180711
ì ëŒ€í´ëžœ
Antagonist Clan
20130807 to 20130814
@@ -14079,7 +14079,7 @@ Antagonist Clan
Ally Clan
*/
MSG_HOSTILITY_CLAN = 0x938,
-/*20120702 to 20180621
+/*20120702 to 20180711
í´ëžœì—게 보냄
Send to Clan
20130807 to 20130814
@@ -14087,7 +14087,7 @@ Send to Clan
Antagonist Clan
*/
MSG_SEND_TO_CLAN = 0x939,
-/*20120702 to 20180621
+/*20120702 to 20180711
마스터ì´ë¦„
ClanMaster Name
20130807 to 20130814
@@ -14095,7 +14095,7 @@ ClanMaster Name
Send to Clan
*/
MSG_CLAN_MASTER_NAME = 0x93a,
-/*20120702 to 20180621
+/*20120702 to 20180711
ì¡°í•©ì›ìˆ˜
Number of Members
20130807 to 20130814
@@ -14106,7 +14106,7 @@ ClanMaster Name
/*20120702 to 20120702
ì¡°í•©ì› í‰ê· ë ˆë²¨
Avg.lvl of Guildsmen
-20120710 to 20180621
+20120710 to 20180711
관리ì˜ì§€
Castles Owned
20130807 to 20130814
@@ -14117,14 +14117,14 @@ Number of Members
/*20120702 to 20130814
관리ì˜ì§€
Castles Owned
-20120716 to 20180621
+20120716 to 20180711
í´ëžœ 채팅 메시지 표시
Clan Chat Messages
*/
MSG_VIEW_CLAN_MSG = 0x93d,
#endif
#if PACKETVER >= 20120716
-/*20120716 to 20180621
+/*20120716 to 20180711
충전 페ì´ì§€ë¡œ ì´ë™í•©ë‹ˆë‹¤.
Go to Page Charged.
20130807 to 20130814
@@ -14134,7 +14134,7 @@ Clan Chat Messages
MSG_TWWAB_WARRING = 0x93e,
/*20120716 to 20120716
http://ro.game.gnjoy.com/
-20120724 to 20180621
+20120724 to 20180711
https://gfb.gameflier.com/Billing/ingame/index_new.asp?
20130807 to 20130814
충전 페ì´ì§€ë¡œ ì´ë™í•©ë‹ˆë‹¤.
@@ -14143,14 +14143,14 @@ Go to Page Charged.
MSG_TWWAB_URL = 0x93f,
#endif
#if PACKETVER >= 20120724
-/*20120724 to 20180621
+/*20120724 to 20180711
ìºë¦­í„° 만들기
Create char
20130807 to 20130814
https://gfb.gameflier.com/Billing/ingame/index_new.asp?
*/
MSG_STR_MAKECHARACTER = 0x940,
-/*20120724 to 20180621
+/*20120724 to 20180711
ìºë¦­ëª…ì´ ì¼ì¹˜í•˜ì§€ 않습니다.
Name does not match
20130807 to 20130814
@@ -14158,7 +14158,7 @@ Name does not match
Create char
*/
MSG_CHR_DELETE_RESERVED_FAIL_CHARNAME = 0x941,
-/*20120724 to 20180621
+/*20120724 to 20180711
ìºë¦­í„°ëª…ì„ ìž…ë ¥í•˜ì„¸ìš”
Enter the name of character
20130807 to 20130814
@@ -14168,7 +14168,7 @@ Name does not match
MSG_CHR_DELETE_RESERVED_INPUTCONFIRMSTR_WND_TITLE = 0x942,
/*20120724 to 20120822
/bufftimer : ë²„í”„ì— ì¿¨íƒ€ì´ë¨¸ë¥¼ 표시합니다. On Off
-20120830 to 20180621
+20120830 to 20180711
성별 ì„ íƒ ì°½
Sex Selection Window
20130807 to 20130814
@@ -14178,7 +14178,7 @@ Enter the name of character
MSG_SELECT_SEX = 0x943,
/*20120724 to 20120822
ë²„í”„ì— ì¿¨íƒ€ì´ë¨¸ê°€ 표시ë©ë‹ˆë‹¤.
-20120830 to 20180621
+20120830 to 20180711
파ì¼ì˜ 위변조가 ê°ì§€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Editing of the File Detected
20130807 to 20130814
@@ -14188,7 +14188,7 @@ Sex Selection Window
MSG_SPRITE_ALTER = 0x944,
/*20120724 to 20120822
ë²„í”„ì— ì¿¨íƒ€ì´ë¨¸ê°€ 표시ë˜ì§€ 않습니다.
-20120830 to 20180621
+20120830 to 20180711
해당 ì•„ì´í…œì„ 개봉하여 íšë“ë˜ëŠ” ì•„ì´í…œë“¤ì€ ìºë¦­í„° ê·€ì† ì•„ì´í…œ (창고ì´ë™ 불가능) 입니다. 본 ìºë¦­í„°ì— 사용하시는 ê²ƒì´ ë§žìœ¼ì‹ ì§€ 확ì¸í•´ì£¼ì‹œê¸° ë°”ëžë‹ˆë‹¤. ìƒìžë¥¼ 개봉하시겠습니까?
Items obtained by opening the item is character bounded (can not move to storage). Do you want to open the box?
20130807 to 20130814
@@ -14201,7 +14201,7 @@ Editing of the File Detected
/*20120808 to 20120822
성별 ì„ íƒ ì°½
Sex Selection Window
-20120925 to 20180621
+20120925 to 20180711
게임 설정
Game Settings
20130807 to 20130814
@@ -14214,7 +14214,7 @@ Items obtained by opening the item is character bounded (can not move to storage
/*20120822 to 20120822
파ì¼ì˜ 위변조가 ê°ì§€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Editing of the File Detected
-20120925 to 20180621
+20120925 to 20180711
게임 시스템
Game System
20130807 to 20130814
@@ -14224,7 +14224,7 @@ Game Settings
MSG_SYSTEM_SETTING = 0x947,
#endif
#if PACKETVER >= 20120925
-/*20120925 to 20180621
+/*20120925 to 20180711
게임 커맨드
Game Commands
20130807 to 20130814
@@ -14234,7 +14234,7 @@ Game System
MSG_COMMAND_SETTING = 0x948,
/*20120925 to 20120926
게임 커맨드 리스트
-20121010 to 20180621
+20121010 to 20180711
게임 커맨드 ON/OFF
Game Command ON/OFF
20130807 to 20130814
@@ -14242,7 +14242,7 @@ Game Command ON/OFF
Game Commands
*/
MSG_COMMAND_LIST = 0x949,
-/*20120925 to 20180621
+/*20120925 to 20180711
매í¬ë¡œ
Macro
20130807 to 20130814
@@ -14250,7 +14250,7 @@ Macro
Game Command ON/OFF
*/
MSG_MACRO_LIST = 0x94a,
-/*20120925 to 20180621
+/*20120925 to 20180711
ì´ì§€ì—­ì€ ì•„ì´í…œêµí™˜ì´ 금지 ë˜ì–´ 있습니다
Trading is prohibited in this Map
20130807 to 20130814
@@ -14258,7 +14258,7 @@ Trading is prohibited in this Map
Macro
*/
MSG_EXCHANGEITEM_DENY_MAP = 0x94b,
-/*20120925 to 20180621
+/*20120925 to 20180711
ì´ì§€ì—­ì€ 카트ì´ìš©ì´ 금지 ë˜ì–´ 있습니다
Vending is prohibited in this Map
20130807 to 20130814
@@ -14268,7 +14268,7 @@ Trading is prohibited in this Map
MSG_CART_USE_DENY_MAP = 0x94c,
#endif
#if PACKETVER >= 20121010
-/*20121010 to 20180621
+/*20121010 to 20180711
ì´ì§€ì—­ì€ íƒœì–‘ê³¼ë‹¬ê³¼ë³„ì˜ ê¸°ì  íš¨ê³¼ê°€ ë°œìƒí•˜ì§€ 않습니다.
In this Map,Effect of Mirace of Sun and Moon is nullified.
20130807 to 20130814
@@ -14276,7 +14276,7 @@ In this Map,Effect of Mirace of Sun and Moon is nullified.
Vending is prohibited in this Map
*/
MSG_BLOCK_SUNMOONSTAR_MIRACLE = 0x94d,
-/*20121010 to 20180621
+/*20121010 to 20180711
랭킹 보드
Ranking Board
20130807 to 20130814
@@ -14284,7 +14284,7 @@ Ranking Board
In this Map,Effect of Mirace of Sun and Moon is nullified.
*/
MSG_RANKING_BOARD = 0x94e,
-/*20121010 to 20180621
+/*20121010 to 20180711
순위
Rank
20130807 to 20130814
@@ -14292,7 +14292,7 @@ Rank
Ranking Board
*/
MSG_RANKING_NUMBER = 0x94f,
-/*20121010 to 20180621
+/*20121010 to 20180711
ì´ë¦„
Name
20130807 to 20130814
@@ -14300,7 +14300,7 @@ Name
Rank
*/
MSG_RANKING_NAME = 0x950,
-/*20121010 to 20180621
+/*20121010 to 20180711
í¬ì¸íŠ¸
Points
20130807 to 20130814
@@ -14308,26 +14308,26 @@ Points
Name
*/
MSG_RANKING_POINT = 0x951,
-/*20121010 to 20180621
+/*20121010 to 20180711
BlackSmith
20130807 to 20130814
í¬ì¸íŠ¸
Points
*/
MSG_RANKING_BLACKSMITH = 0x952,
-/*20121010 to 20180621
+/*20121010 to 20180711
Alchemist
20130807 to 20130814
BlackSmith
*/
MSG_RANKING_ALCHEMIST = 0x953,
-/*20121010 to 20180621
+/*20121010 to 20180711
Taekwon
20130807 to 20130814
Alchemist
*/
MSG_RANKING_TAEKWON = 0x954,
-/*20121010 to 20180621
+/*20121010 to 20180711
Killer
20130807 to 20130814
Taekwon
@@ -14337,7 +14337,7 @@ Taekwon
Munak
20121017 to 20121107
1 vs 1
-20121114 to 20180621
+20121114 to 20180711
7 vs 7
20130807 to 20130814
Killer
@@ -14347,7 +14347,7 @@ Killer
DeathKnight
20121017 to 20130814
7 vs 7
-20121114 to 20180621
+20121114 to 20180711
RuneKnight
*/
MSG_RANKING_RUNE_KNIGHT = 0x957,
@@ -14355,7 +14355,7 @@ RuneKnight
Collector
20121017 to 20121107
Select Ranking Type
-20121114 to 20180621
+20121114 to 20180711
Warlock
20130807 to 20130814
RuneKnight
@@ -14365,7 +14365,7 @@ RuneKnight
Select Ranking Type
20121017 to 20121107
Ranking Type
-20121114 to 20180621
+20121114 to 20180711
Ranger
20130807 to 20130814
Warlock
@@ -14373,7 +14373,7 @@ Warlock
MSG_RANKING_RANGER = 0x959,
/*20121010 to 20121011
Ranking Type
-20121114 to 20180621
+20121114 to 20180711
Mechanic
20130807 to 20130814
Ranger
@@ -14381,92 +14381,92 @@ Ranger
MSG_RANKING_MECHANIC = 0x95a,
#endif
#if PACKETVER >= 20121114
-/*20121114 to 20180621
+/*20121114 to 20180711
GuillotineCross
20130807 to 20130814
Mechanic
*/
MSG_RANKING_GUILLOTINE_CROSS = 0x95b,
-/*20121114 to 20180621
+/*20121114 to 20180711
Archbishop
20130807 to 20130814
GuillotineCross
*/
MSG_RANKING_ARCHBISHOP = 0x95c,
-/*20121114 to 20180621
+/*20121114 to 20180711
RoyalGuard
20130807 to 20130814
Archbishop
*/
MSG_RANKING_ROYAL_GUARD = 0x95d,
-/*20121114 to 20180621
+/*20121114 to 20180711
Sorcerer
20130807 to 20130814
RoyalGuard
*/
MSG_RANKING_SORCERER = 0x95e,
-/*20121114 to 20180621
+/*20121114 to 20180711
Minstrel
20130807 to 20130814
Sorcerer
*/
MSG_RANKING_MINSTREL = 0x95f,
-/*20121114 to 20180621
+/*20121114 to 20180711
Wanderer
20130807 to 20130814
Minstrel
*/
MSG_RANKING_WANDERER = 0x960,
-/*20121114 to 20180621
+/*20121114 to 20180711
Genetic
20130807 to 20130814
Wanderer
*/
MSG_RANKING_GENETIC = 0x961,
-/*20121114 to 20180621
+/*20121114 to 20180711
ShadowChaser
20130807 to 20130814
Genetic
*/
MSG_RANKING_SHADOW_CHASER = 0x962,
-/*20121114 to 20180621
+/*20121114 to 20180711
Sura
20130807 to 20130814
ShadowChaser
*/
MSG_RANKING_SURA = 0x963,
-/*20121114 to 20180621
+/*20121114 to 20180711
Kagerou
20130807 to 20130814
Sura
*/
MSG_RANKING_KAGEROU = 0x964,
-/*20121114 to 20180621
+/*20121114 to 20180711
Oboro
20130807 to 20130814
Kagerou
*/
MSG_RANKING_OBORO = 0x965,
-/*20121114 to 20180621
+/*20121114 to 20180711
Select Ranking Type
20130807 to 20130814
Oboro
*/
MSG_RANKING_SELECT = 0x966,
-/*20121114 to 20180621
+/*20121114 to 20180711
Ranking Type
20130807 to 20130814
Select Ranking Type
*/
MSG_RANKING_TYPE = 0x967,
-/*20121114 to 20180621
+/*20121114 to 20180711
현재 ì ‘ì† ì¸ì›ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤. ^0000ff현재 대기순위 : %d ì˜ˆìƒ ëŒ€ê¸°ì‹œê°„ : %dì´ˆ
Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
20130807 to 20130814
Ranking Type
*/
MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_SEC = 0x968,
-/*20121114 to 20180621
+/*20121114 to 20180711
현재 ì ‘ì† ì¸ì›ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤. ^0000ff현재 대기순위 : %d ì˜ˆìƒ ëŒ€ê¸°ì‹œê°„ : %d분 %dì´ˆ
Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dMinutes %d Seconds
20130807 to 20130814
@@ -14474,7 +14474,7 @@ Currently,Server is full. ^0000ffPeople Currently Waiting: %d
Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
*/
MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_MIN = 0x969,
-/*20121114 to 20180621
+/*20121114 to 20180711
CBT 초청 유저가 아닙니다
CBT is not an invited user
20130807 to 20130814
@@ -14484,7 +14484,7 @@ Currently,Server is full. ^0000ffPeople Currently Waiting: %d
MSG_CBT_ACTIVE_USER_CHECK = 0x96a,
#endif
#if PACKETVER >= 20121128
-/*20121128 to 20180621
+/*20121128 to 20180711
-------------- Navigation 명령어 --------------
------------------- Instruction --------------------
20130807 to 20130814
@@ -14492,7 +14492,7 @@ CBT 초청 유저가 아닙니다
CBT is not an invited user
*/
MSG_NAVIGATION_HELP_1 = 0x96b,
-/*20121128 to 20180621
+/*20121128 to 20180711
/navigation /navi : /navi yuno 100/100 ->> 맵ì´ë¦„, 위치(100/100)
1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
20130807 to 20130814
@@ -14500,7 +14500,7 @@ CBT is not an invited user
------------------- Instruction --------------------
*/
MSG_NAVIGATION_HELP_2 = 0x96c,
-/*20121128 to 20180621
+/*20121128 to 20180711
/navigation2 /navi2 : /navi2 yuno 100/100 1/1/1 ->> 맵ì´ë¦„, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
20130807 to 20130814
@@ -14508,7 +14508,7 @@ CBT is not an invited user
1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
*/
MSG_NAVIGATION_HELP_3 = 0x96d,
-/*20121128 to 20180621
+/*20121128 to 20180711
-------------- Navigation 검색창 명령어 -------
-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
20130807 to 20130814
@@ -14516,7 +14516,7 @@ CBT is not an invited user
2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
*/
MSG_NAVIGATION_HELP_4 = 0x96e,
-/*20121128 to 20180621
+/*20121128 to 20180711
$$all : 모든 항목 출력 (Type 구분ìžì—ì„œ 출력 종류를 나눌수 있다.)
3) $$all Output all the items (Can take a while...)
20130807 to 20130814
@@ -14524,7 +14524,7 @@ $$all : 모든 항목 출력 (Type 구분ìžì—ì„œ 출력 종류를 나ë
-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
*/
MSG_NAVIGATION_HELP_5 = 0x96f,
-/*20121128 to 20180621
+/*20121128 to 20180711
$$lv30 : 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
4) $$lv30 monsters are placed in the output
20130807 to 20130814
@@ -14532,7 +14532,7 @@ $$all : 모든 항목 출력 (Type 구분ìžì—ì„œ 출력 종류를 나ë
3) $$all Output all the items (Can take a while...)
*/
MSG_NAVIGATION_HELP_6 = 0x970,
-/*20121128 to 20180621
+/*20121128 to 20180711
$$lv20~30 : 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
5) $$lv20~30 monsters in that level range are placed in the output
20130807 to 20130814
@@ -14540,7 +14540,7 @@ $$lv30 : 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
4) $$lv30 monsters are placed in the output
*/
MSG_NAVIGATION_HELP_7 = 0x971,
-/*20121128 to 20180621
+/*20121128 to 20180711
1 vs 1
20130807 to 20130814
$$lv20~30 : 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
@@ -14549,7 +14549,7 @@ $$lv20~30 : 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
MSG_RANKING_BATTLE_1VS1_ALL = 0x972,
#endif
#if PACKETVER >= 20121205
-/*20121205 to 20180621
+/*20121205 to 20180711
특수 장비
Special Gear
20130807 to 20130814
@@ -14558,7 +14558,7 @@ Special Gear
MSG_SHADOW_EQUIPMENT = 0x973,
#endif
#if PACKETVER >= 20130109
-/*20130109 to 20180621
+/*20130109 to 20180711
%d 번째 ìºë¦­í„°ì˜ ì§ì—… ì •ë³´ê°€ ì´ìƒí•©ë‹ˆë‹¤. ê³ ê°ì„¼í„°ë¡œ ë¬¸ì˜ ë¶€íƒ ë“œë¦½ë‹ˆë‹¤. ErrorCode(%d)
%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
20130807 to 20130814
@@ -14568,14 +14568,14 @@ Special Gear
MSG_CHARACTERERROR_JOB = 0x974,
#endif
#if PACKETVER >= 20130115
-/*20130115 to 20180621
+/*20130115 to 20180711
(%s) %d / %d
20130807 to 20130814
%d 번째 ìºë¦­í„°ì˜ ì§ì—… ì •ë³´ê°€ ì´ìƒí•©ë‹ˆë‹¤. ê³ ê°ì„¼í„°ë¡œ ë¬¸ì˜ ë¶€íƒ ë“œë¦½ë‹ˆë‹¤. ErrorCode(%d)
%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
*/
MSG_NAVIGATION_ALL_S = 0x975,
-/*20130115 to 20180621
+/*20130115 to 20180711
%s-%s(%d/%d)
20130807 to 20130814
(%s) %d / %d
@@ -14583,14 +14583,14 @@ Special Gear
MSG_NAVIGATION_ALL_SD = 0x976,
#endif
#if PACKETVER >= 20130121
-/*20130121 to 20180621
+/*20130121 to 20180711
ì ‘ì†ìž 수 초과로 ì„œë²„ì— ë”ì´ìƒ ì ‘ì†í•  수 없습니다.
Server Exceeded the maximum number of users,Cannot Connect anymore users.
20130807 to 20130814
%s-%s(%d/%d)
*/
MSG_REFUSE_OVER_USERLIMIT = 0x977,
-/*20130121 to 20180621
+/*20130121 to 20180711
ì„œë²„ì ‘ì† ì‹¤íŒ¨ (%d)
Server Connection Failed (%d)
20130807 to 20130814
@@ -14598,7 +14598,7 @@ Server Connection Failed (%d)
Server Exceeded the maximum number of users,Cannot Connect anymore users.
*/
MSG_REFUSE_ERRORCODE = 0x978,
-/*20130121 to 20180621
+/*20130121 to 20180711
ë¡œê·¸ì¸ í—ˆìš©ì‹œê°„ 초과
Login Timeout Permitted
20130807 to 20130814
@@ -14606,7 +14606,7 @@ Login Timeout Permitted
Server Connection Failed (%d)
*/
MSG_REFUSE_DISCONNECT_KEEP_TIME = 0x979,
-/*20130121 to 20180621
+/*20130121 to 20180711
ë¡œê·¸ì¸ ì¤‘ ì¸ì¦ì„œë²„로부터 ì¸ì¦ì´ 실패하였습니다.
Login Authentication Failed from Authentication Server.
20130807 to 20130814
@@ -14616,7 +14616,7 @@ Login Timeout Permitted
MSG_REFUSE_WEB_AUTH_FAILED = 0x97a,
#endif
#if PACKETVER >= 20130206
-/*20130206 to 20180621
+/*20130206 to 20180711
길드ì´ë¦„ì— ê³µë°±ë¬¸ìžë¥¼ 사용할 수 없습니다.
Guild Cannot use Space in the name.
20130807 to 20130814
@@ -14626,7 +14626,7 @@ Login Authentication Failed from Authentication Server.
MSG_GUILDNAME_CHECK = 0x97b,
#endif
#if PACKETVER >= 20130215
-/*20130215 to 20180621
+/*20130215 to 20180711
ê³ ê°ë‹˜ 안녕하세요!
Hey,Hello There
20130807 to 20130814
@@ -14634,7 +14634,7 @@ Hey,Hello There
Guild Cannot use Space in the name.
*/
MSG_BILLING_CHN_1 = 0x97c,
-/*20130215 to 20180621
+/*20130215 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %dë…„ %d ì›” %dì¼ %d:%d ì— ì¢…ë£Œë©ë‹ˆë‹¤.
Available Time will End on %d month %d hour %d:%d
20130807 to 20130814
@@ -14642,7 +14642,7 @@ Available Time will End on %d month %d hour %d:%d
Hey,Hello There
*/
MSG_BILLING_CHN_2 = 0x97d,
-/*20130215 to 20180621
+/*20130215 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ ì•„ì§ ë§Žì´ ë‚¨ì•˜ìœ¼ë‹ˆ 안심하고 플레ì´í•˜ì„¸ìš”!
You've lot of time,Play in Peace.
20130807 to 20130814
@@ -14650,7 +14650,7 @@ You've lot of time,Play in Peace.
Available Time will End on %d month %d hour %d:%d
*/
MSG_BILLING_CHN_3 = 0x97e,
-/*20130215 to 20180621
+/*20130215 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ ì´ë²ˆ 주 ë‚´ë¡œ 종료 ë©ë‹ˆë‹¤. 종료 ì „ì— ì¶©ì „ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Your hours will be terminated within this week. Please Charge before termination.
20130807 to 20130814
@@ -14658,7 +14658,7 @@ Your hours will be terminated within this week. Please Charge before termination
You've lot of time,Play in Peace.
*/
MSG_BILLING_CHN_4 = 0x97f,
-/*20130215 to 20180621
+/*20130215 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ 24시간 ë‚´ì— ì¢…ë£Œë©ë‹ˆë‹¤. 빨리 충전하시기 ë°”ëžë‹ˆë‹¤.
Your hours will be terminated within 24 hours.Please Charge Quickly.
20130807 to 20130814
@@ -14666,7 +14666,7 @@ Your hours will be terminated within 24 hours.Please Charge Quickly.
Your hours will be terminated within this week. Please Charge before termination.
*/
MSG_BILLING_CHN_5 = 0x980,
-/*20130215 to 20180621
+/*20130215 to 20180711
현재 ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d시간 남았습니다. ì •ìƒì ì¸ 게임 ì´ìš©ì„ 위해 ì¶©ì „ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Current Time Left:%d hours.Charge the game for uninterrupted play.
20130807 to 20130814
@@ -14674,7 +14674,7 @@ Current Time Left:%d hours.Charge the game for uninterrupted play.
Your hours will be terminated within 24 hours.Please Charge Quickly.
*/
MSG_BILLING_CHN_6 = 0x981,
-/*20130215 to 20180621
+/*20130215 to 20180711
현재 ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d분 남았습니다. ì´ìš©ì‹œê°„ì´ ëë‚œ 후 ê°•ì œì ìœ¼ë¡œ 종료ë©ë‹ˆë‹¤. ì •ìƒì ì¸ 게임 ì´ìš©ì„ 위해 ì¶©ì „ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Current Time Left:%d minutes.Charge the game for uninterrupted play.
20130807 to 20130814
@@ -14682,7 +14682,7 @@ Current Time Left:%d minutes.Charge the game for uninterrupted play.
Current Time Left:%d hours.Charge the game for uninterrupted play.
*/
MSG_BILLING_CHN_7 = 0x982,
-/*20130215 to 20180621
+/*20130215 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d시간 %d분 남았습니다.
Time Left: %d hours %d minutes
20130807 to 20130814
@@ -14690,7 +14690,7 @@ Time Left: %d hours %d minutes
Current Time Left:%d minutes.Charge the game for uninterrupted play.
*/
MSG_BILLING_CHN_8 = 0x983,
-/*20130215 to 20180621
+/*20130215 to 20180711
%d%% ( 기본 100%% + PC방 %d%% + 프리미엄 %d%% + %s서버 %d%% )
%d%% ( Basic 100%% + PCRoom %d%% + Premium %d%% + %sServer %d%% )
20130807 to 20130814
@@ -14698,7 +14698,7 @@ Current Time Left:%d minutes.Charge the game for uninterrupted play.
Time Left: %d hours %d minutes
*/
MSG_BASIC_EXP_MSG_THAI = 0x984,
-/*20130215 to 20180621
+/*20130215 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d시간 %d분 í›„ì— ì¢…ë£Œë©ë‹ˆë‹¤.
After %d hours %d minutes, your game will be terminated.
20130807 to 20130814
@@ -14708,7 +14708,7 @@ After %d hours %d minutes, your game will be terminated.
MSG_CHN_BILLING_EXPIRE_TIME = 0x985,
#endif
#if PACKETVER >= 20130220
-/*20130220 to 20180621
+/*20130220 to 20180711
ìœ ì €ë‹˜ì˜ ê³„ì •ì€ ì˜êµ¬ ì ‘ì†ê¸ˆì§€ ë˜ì˜€ìŠµë‹ˆë‹¤
This Account is permanently Banned.
20130807 to 20130814
@@ -14716,7 +14716,7 @@ This Account is permanently Banned.
After %d hours %d minutes, your game will be terminated.
*/
MSG_CHN_BLOCK_FOREVER = 0x986,
-/*20130220 to 20180621
+/*20130220 to 20180711
ìœ ì €ë‹˜ì˜ ê³„ì •ì€ ì ‘ì†ê¸ˆì§€ ë˜ì˜€ìŠµë‹ˆë‹¤
해지 시간 : %04d-%02d-%02d %02d:%02d
This Account is banned.
@@ -14728,7 +14728,7 @@ This Account is permanently Banned.
MSG_CHN_BLOCK = 0x987,
#endif
#if PACKETVER >= 20130227
-/*20130227 to 20180621
+/*20130227 to 20180711
몬스터(Tab)
Monster(Tab)
20130807 to 20130814
@@ -14738,7 +14738,7 @@ This Account is banned.
Termination Time:%04d-%02d-%02d %02d:%02d
*/
MSG_WORLDMAP_MSG1 = 0x988,
-/*20130227 to 20180621
+/*20130227 to 20180711
맵(Alt)
Map(Alt)
20130807 to 20130814
@@ -14746,7 +14746,7 @@ Map(Alt)
Monster(Tab)
*/
MSG_WORLDMAP_MSG2 = 0x989,
-/*20130227 to 20180621
+/*20130227 to 20180711
안내 정보
Product Information
20130807 to 20130814
@@ -14754,7 +14754,7 @@ Product Information
Map(Alt)
*/
MSG_WORLDMAP_MSG3 = 0x98a,
-/*20130227 to 20180621
+/*20130227 to 20180711
검색 정보
Find Information
20130807 to 20130814
@@ -14762,7 +14762,7 @@ Find Information
Product Information
*/
MSG_WORLDMAP_MSG4 = 0x98b,
-/*20130227 to 20180621
+/*20130227 to 20180711
비공정
AirShip
20130807 to 20130814
@@ -14770,7 +14770,7 @@ AirShip
Find Information
*/
MSG_WORLDMAP_MSG5 = 0x98c,
-/*20130227 to 20180621
+/*20130227 to 20180711
카프ë¼
Kafra
20130807 to 20130814
@@ -14778,7 +14778,7 @@ Kafra
AirShip
*/
MSG_WORLDMAP_MSG6 = 0x98d,
-/*20130227 to 20180621
+/*20130227 to 20180711
(ë„ì°©)
(Arrival)
20130807 to 20130814
@@ -14788,21 +14788,21 @@ Kafra
MSG_WORLDMAP_MSG7 = 0x98e,
#endif
#if PACKETVER >= 20130313
-/*20130313 to 20180621
+/*20130313 to 20180711
Mob)%s:%s(%s)
20130807 to 20130814
(ë„ì°©)
(Arrival)
*/
MSG_NAVIGATION_MOB_S_S_S = 0x98f,
-/*20130313 to 20180621
+/*20130313 to 20180711
분í¬ë„:%s
Distribution:%s
20130807 to 20130814
Mob)%s:%s(%s)
*/
MSG_NAVIGATION_NUM = 0x990,
-/*20130313 to 20180621
+/*20130313 to 20180711
매우많ìŒ
Very Plenty
20130807 to 20130814
@@ -14810,7 +14810,7 @@ Very Plenty
Distribution:%s
*/
MSG_NAVIGATION_NUM1 = 0x991,
-/*20130313 to 20180621
+/*20130313 to 20180711
많ìŒ
Plenty
20130807 to 20130814
@@ -14818,7 +14818,7 @@ Plenty
Very Plenty
*/
MSG_NAVIGATION_NUM2 = 0x992,
-/*20130313 to 20180621
+/*20130313 to 20180711
보통
Normal
20130807 to 20130814
@@ -14826,7 +14826,7 @@ Normal
Plenty
*/
MSG_NAVIGATION_NUM3 = 0x993,
-/*20130313 to 20180621
+/*20130313 to 20180711
ì ìŒ
Low
20130807 to 20130814
@@ -14834,7 +14834,7 @@ Low
Normal
*/
MSG_NAVIGATION_NUM4 = 0x994,
-/*20130313 to 20180621
+/*20130313 to 20180711
매우ì ìŒ
Very Low
20130807 to 20130814
@@ -14844,7 +14844,7 @@ Low
MSG_NAVIGATION_NUM5 = 0x995,
#endif
#if PACKETVER >= 20130320
-/*20130320 to 20180621
+/*20130320 to 20180711
ì€í–‰ì„ ì´ìš©í•  수 없습니다. ìž ì‹œ 후 다시 ì‹œë„하세요.
The bank is not available. Please try again in a few minutes.
20130807 to 20130814
@@ -14852,7 +14852,7 @@ The bank is not available. Please try again in a few minutes.
Very Low
*/
MSG_BANK_SYSTEM_ERROR = 0x996,
-/*20130320 to 20180621
+/*20130320 to 20180711
ì€í–‰ 잔고가 부족합니다.
Bank balance is low.
20130807 to 20130814
@@ -14862,7 +14862,7 @@ The bank is not available. Please try again in a few minutes.
MSG_BANK_WITHDRAW_NO_MONEY = 0x997,
#endif
#if PACKETVER >= 20130327
-/*20130327 to 20180621
+/*20130327 to 20180711
보유한 Zeny 가 부족해서 입금할 수 없습니다.
You don't have enough zeny
20130807 to 20130814
@@ -14870,7 +14870,7 @@ You don't have enough zeny
Bank balance is low.
*/
MSG_BANK_DEPOSIT_NO_MONEY = 0x998,
-/*20130327 to 20180621
+/*20130327 to 20180711
1 Zeny ì´ìƒ 입금 가능합니다.
Minimum Deposit Amount: 1 zeny
20130807 to 20130814
@@ -14878,7 +14878,7 @@ Minimum Deposit Amount: 1 zeny
You don't have enough zeny
*/
MSG_BANK_DEPOSIT_ZERO = 0x999,
-/*20130327 to 20180621
+/*20130327 to 20180711
1 Zeny ì´ìƒ 출금 가능합니다.
Minimum Withdrawal Amount: 1 zeny
20130807 to 20130814
@@ -14888,7 +14888,7 @@ Minimum Deposit Amount: 1 zeny
MSG_BANK_WITHDRAW_ZERO = 0x99a,
/*20130327 to 20130529
보유 Zeny 는 21 ì–µì„ ë„˜ì„ ìˆ˜ 없습니다.
-20130605 to 20180621
+20130605 to 20180711
보유 Zeny 는 2,147,483,647 Zeny를 ë„˜ì„ ìˆ˜ 없습니다.
You cannot hold more than 2,147,483,647 Zeny
20130807 to 20130814
@@ -14896,7 +14896,7 @@ You cannot hold more than 2,147,483,647 Zeny
Minimum Withdrawal Amount: 1 zeny
*/
MSG_BANK_OVER_INT_MAX = 0x99b,
-/*20130327 to 20180621
+/*20130327 to 20180711
your account is lock by mobil otp
your account is lock by mobile otp
20130807 to 20130814
@@ -14904,14 +14904,14 @@ your account is lock by mobile otp
You cannot hold more than 2,147,483,647 Zeny
*/
MSG_REFUSE_MOTP_LOCK = 0x99c,
-/*20130327 to 20180621
+/*20130327 to 20180711
MOTP auth fail
20130807 to 20130814
your account is lock by mobil otp
your account is lock by mobile otp
*/
MSG_REFUSE_MOTP_AUTH_FAIL = 0x99d,
-/*20130327 to 20180621
+/*20130327 to 20180711
%d분간 몬스터ì—게 ì–»ì„ ìˆ˜ 있는 Job경험치가 %d%% ì¦ê°€í•©ë‹ˆë‹¤.
For %d minutes,Job Experience obtained from monster is increased by %d%%
20130807 to 20130814
@@ -14922,7 +14922,7 @@ MOTP auth fail
#if PACKETVER >= 20130410
/*20130410 to 20130410
소지 Zeny : %d Zeny
-20130417 to 20180621
+20130417 to 20180711
소지 Zeny : %s Zeny
Current Zeny: %s Zeny
20130807 to 20130814
@@ -14930,7 +14930,7 @@ Current Zeny: %s Zeny
For %d minutes,Job Experience obtained from monster is increased by %d%%
*/
MSG_BANK_MY_ZENY = 0x99f,
-/*20130410 to 20180621
+/*20130410 to 20180711
Zeny
20130807 to 20130814
소지 Zeny : %s Zeny
@@ -14943,7 +14943,7 @@ Current Zeny: %s Zeny
최대 2,147,483,647ì–µ Zeny까지만 ë³´ê´€ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
20130605 to 20130605
최대 2,147,483,647 Zeny까지만 ë³´ê´€ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
-20130612 to 20180621
+20130612 to 20180711
최대 2,147,483,647 Zeny 까지만 ë³´ê´€ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
The Maximum amount is 2,147,483,647 Zeny
20130807 to 20130814
@@ -14952,7 +14952,7 @@ Zeny
MSG_BANK_WARNING = 0x9a1,
#endif
#if PACKETVER >= 20130515
-/*20130515 to 20180621
+/*20130515 to 20180711
ì´ì•Œì´ 부족합니다.
Insufficient bullet
20130807 to 20130814
@@ -14960,7 +14960,7 @@ Insufficient bullet
The Maximum amount is 2,147,483,647 Zeny
*/
MSG_NEED_MORE_BULLET = 0x9a2,
-/*20130515 to 20180621
+/*20130515 to 20180711
10억제니 ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 10ì–µ 제니로 íŒë§¤ë©ë‹ˆë‹¤.
You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
20130807 to 20130814
@@ -14970,7 +14970,7 @@ Insufficient bullet
MSG_OVERPRICE_MAX = 0x9a3,
#endif
#if PACKETVER >= 20130605
-/*20130605 to 20180621
+/*20130605 to 20180711
AuthTicket is Not Vaild
AuthTicket is Not Valid
20130807 to 20130814
@@ -14980,7 +14980,7 @@ You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
MSG_NOT_VALID_AUTH_TICKET = 0x9a4,
/*20130605 to 20130605
ErrorCode : %d, ErrorValue : %d
-20130612 to 20180621
+20130612 to 20180711
ErrorCategory : %d, ErrorCode : %d (%d,%d,%d,%d)
ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
20130807 to 20130814
@@ -14992,7 +14992,7 @@ AuthTicket is Not Valid
#if PACKETVER >= 20130618
/*20130618 to 20130618
%d%% ( Primary 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
-20130626 to 20180621
+20130626 to 20180711
%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
20130807 to 20130814
@@ -15005,7 +15005,7 @@ ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
20130807 to 20130814
%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
-20130925 to 20180621
+20130925 to 20180711
%d분간 몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %d%%ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Basic item drop rate from monster hunting is increased for %dmins by %dtimes.
*/
@@ -15014,21 +15014,21 @@ Basic item drop rate from monster hunting is increased for %dmins by %dtimes.
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %dì‹œ %.2d분간 %dë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
20130807 to 20130814
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %d분간 %dë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
-20130925 to 20180621
+20130925 to 20180711
%dì‹œ %.2d분간 몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %d%%ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Basic item drop rate from monster hunting is increased for %dhour %.2dmins by %dtimes.
*/
MSG_RECEIVEITEM_VALUE_1 = 0x9a8,
#endif
#if PACKETVER >= 20130626
-/*20130626 to 20180621
+/*20130626 to 20180711
%s ì˜ ê°€ê²©ì´
The price of^0000FF %s^000000
20130807 to 20130814
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %dì‹œ %.2d분간 %dë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
*/
MSG_WARNING_PRICE1 = 0x9a9,
-/*20130626 to 20180621
+/*20130626 to 20180711
100000000
1000000000
20130807 to 20130814
@@ -15036,7 +15036,7 @@ The price of^0000FF %s^000000
The price of^0000FF %s^000000
*/
MSG_WARNING_PRICE2 = 0x9aa,
-/*20130626 to 20180621
+/*20130626 to 20180711
^ff0000%d^0000ffì–µ
is over ^FF0000%d^0000FF Billion^000000 Zeny and
20130807 to 20130814
@@ -15044,21 +15044,21 @@ The price of^0000FF %s^000000
1000000000
*/
MSG_WARNING_PRICE3 = 0x9ab,
-/*20130626 to 20180621
+/*20130626 to 20180711
10000000
20130807 to 20130814
^ff0000%d^0000ffì–µ
is over ^FF0000%d^0000FF Billion^000000 Zeny and
*/
MSG_WARNING_PRICE4 = 0x9ac,
-/*20130626 to 20180621
+/*20130626 to 20180711
^ff0000%d^0000ff천만
more than^FF0000 %d0^0000FF Million^000000 Zeny
20130807 to 20130814
10000000
*/
MSG_WARNING_PRICE5 = 0x9ad,
-/*20130626 to 20180621
+/*20130626 to 20180711
^0000ffZeny ì´ìƒ^000000입니다.
ìž…ë ¥ê¸ˆì•¡ì´ ë§žìŠµë‹ˆê¹Œ?
. Is this correct?
@@ -15067,7 +15067,7 @@ The price of^0000FF %s^000000
more than^FF0000 %d0^0000FF Million^000000 Zeny
*/
MSG_WARNING_PRICE6 = 0x9ae,
-/*20130626 to 20180621
+/*20130626 to 20180711
천만Zenyì´ìƒ 안전확ì¸
Safety check for more than 10m Zeny
20130807 to 20130814
@@ -15076,7 +15076,7 @@ Safety check for more than 10m Zeny
. Is this correct?
*/
MSG_WARNING_PRICE7 = 0x9af,
-/*20130626 to 20180621
+/*20130626 to 20180711
https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
20130807 to 20130814
천만Zenyì´ìƒ 안전확ì¸
@@ -15087,19 +15087,19 @@ Safety check for more than 10m Zeny
https://kepler.warpportal.com/steam/purchase/?step=1&steamid=76561198071003044&game=rose&accountname=khanhtest111&lang=en
20130807 to 20130814
https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
-20131030 to 20180621
+20131030 to 20180711
https://kepler.warpportal.com/ro1/purchase/?step=1&steamid=%lld&accountname=
https://kepler.warpportal.com/ror/purchase/?step=1&steamid=%lld&accountname=
*/
MSG_AMERICA_CASHSHOP_URL_STEAM = 0x9b1,
-/*20130626 to 20180621
+/*20130626 to 20180711
지ìƒì˜ ë, 스플랑디드와 부유대륙 ì•Œí”„í—¤ìž„ì„ ìž‡ëŠ” 다리, ë¹„í”„ë¡œìŠ¤íŠ¸ì— ìƒê²¨ë‚œ 거대한 ê· ì—´, 그리고 ê·¼ì›ì„ ì•Œ 수 없는 미ê¶ìˆ².
A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
20130807 to 20130814
https://kepler.warpportal.com/steam/purchase/?step=1&steamid=76561198071003044&game=rose&accountname=khanhtest111&lang=en
*/
MSG_QUEST_INFO_01 = 0x9b2,
-/*20130626 to 20180621
+/*20130626 to 20180711
ì´ê²ƒì€ ì—¬í–‰ì˜ ëì„ ì•Œë¦¬ëŠ” í‘œì‹ì¸ê°€, 새로운 세계를 여는 지표ì¸ê°€! 수호ìžëŠ” ë…¸ëž«ë§ ê°™ì€ ìœ í˜¹ì— ì ì°¨ ë„‹ì„ ìžƒì–´ê°€ê³  있었다.
This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
20130807 to 20130814
@@ -15107,7 +15107,7 @@ This is a marker indicating the end of the trip, a new world is opening indicato
A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
*/
MSG_QUEST_INFO_02 = 0x9b3,
-/*20130626 to 20180621
+/*20130626 to 20180711
수천 ë…„ì˜ ì„¸ì›”ì´ í르는 ë™ì•ˆ, ê·¸ 스스로가 홀로 ì•ˆê°„íž˜ì„ ì“°ë©° 지켜낸 ê²ƒì´ ë¬´ì—‡ì´ì—ˆëŠ”지, ë´‰ì¸ ë˜ì–´ 긴 ì‹œê°„ì„ ê°‡í˜€ë²„ë¦° ê²ƒì€ ì˜¤ížˆë ¤ ìžì‹ ì´ 아니었는지 í˜¼ëž€ì„ ëŠë¼ê³  있었다.
For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
20130807 to 20130814
@@ -15115,7 +15115,7 @@ For thousands of years, a mysterious melody has mesmerized the guardian. After a
This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
*/
MSG_QUEST_INFO_03 = 0x9b4,
-/*20130626 to 20180621
+/*20130626 to 20180711
ìœ í˜¹ì˜ ë…¸ëž«ë§ì´ ìµœê³ ì¡°ì— ì´ë¥´ë €ì„ ë•Œ, 지ìƒì˜ ë 스플랑디드와 부유대륙 ì•Œí”„í—¤ìž„ì„ ìž‡ëŠ” 다리, ë¹„í”„ë¡œìŠ¤íŠ¸ì— ê±°ëŒ€í•œ ê· ì—´ì´ ìƒê²¨ë‚¬ê³ , 그로 ì¸í•´ ë‘ ì„¸ê³„ê°„ì˜ ì™•ëž˜ê°€ ëŠê¸°ë©´ì„œ ì‚¬ëžŒë“¤ì€ í° ë¶ˆíŽ¸ì„ ê²ªê²Œ ë˜ì—ˆë‹¤.
When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
20130807 to 20130814
@@ -15123,7 +15123,7 @@ When the melody reached its peak, a giant crevice appeared in Bifrost, the bridg
For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
*/
MSG_QUEST_INFO_04 = 0x9b5,
-/*20130626 to 20180621
+/*20130626 to 20180711
ë¹„í”„ë¡œìŠ¤íŠ¸ì˜ í†µë¡œëŠ” ì´ì œ 미ê¶ìˆ² ë¿. ê·¼ì›ì¡°ì°¨ ì•Œ 수 없는 ê·¸ê³³ì„ ë¬´ì‚¬ížˆ 통과 í•œ ì‚¬ëžŒì€ ì§€ê¸ˆê¹Œì§€ ì•„ë¬´ë„ ì—†ì—ˆë‹¤.
Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody knows how the forest came to exist, and nobody has ever come out of it alive...
20130807 to 20130814
@@ -15131,7 +15131,7 @@ Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody know
When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
*/
MSG_QUEST_INFO_05 = 0x9b6,
-/*20130626 to 20180621
+/*20130626 to 20180711
숱한 ëª¨í—˜ê°€ë“¤ì„ ì§‘ì–´ 삼킨 혼ëˆì˜ 지옥, 미ê¶ìˆ²ì€ ê·¸ ì†ì„ 방황하는 ì´ë¦„ 모를 ì—¬ì¸ì˜ 마ìŒì²˜ëŸ¼ ë”ìš± 깊고 혼란스럽게 확장ë˜ê³  있었다.
Swallowed countless adventurers to put a hell of confusion, wandering in the forest labyrinth of nowhere, like the heart of a woman was being extend deeper confusion.
20130807 to 20130814
@@ -15141,7 +15141,7 @@ Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody know
MSG_QUEST_INFO_06 = 0x9b7,
#endif
#if PACKETVER >= 20130717
-/*20130717 to 20180621
+/*20130717 to 20180711
숫ìžë§Œ ìž…ë ¥ 가능합니다.
You can enter only numbers.
20130807 to 20130814
@@ -15151,7 +15151,7 @@ Swallowed countless adventurers to put a hell of confusion, wandering in the for
MSG_BANK_CHECK_NUM = 0x9b8,
#endif
#if PACKETVER >= 20130724
-/*20130724 to 20180621
+/*20130724 to 20180711
êµí™˜ì°½ ë˜ëŠ” ìƒì ì´ 활성화 ëœ ìƒíƒœì—서는 ìž…ì¶œê¸ˆì„ í•˜ì‹¤ìˆ˜ 없습니다.
Exchange or store window is active and can not register the withdrawal.
20130807 to 20130814
@@ -15161,7 +15161,7 @@ You can enter only numbers.
MSG_BANK_PROHIBIT = 0x9b9,
#endif
#if PACKETVER >= 20130731
-/*20130731 to 20180621
+/*20130731 to 20180711
바로가기
Go to
20130807 to 20130814
@@ -15169,7 +15169,7 @@ Go to
Exchange or store window is active and can not register the withdrawal.
*/
MSG_QUEST_INFO_00 = 0x9ba,
-/*20130731 to 20180621
+/*20130731 to 20180711
ì•„ì´í…œ 비êµ
Item Compare
20130807 to 20130814
@@ -15182,7 +15182,7 @@ Go to
/*20130807 to 20130814
ì•„ì´í…œ 비êµ
Item Compare
-20130821 to 20180621
+20130821 to 20180711
현재 장착하려고 하는 ì´ê¸°ê°€ 장착하고 있는 íƒ„í™˜ì— ë§žì§€ 않습니다
Now you are trying to mount the gun equipped with bullet does not meet
*/
@@ -15190,7 +15190,7 @@ Now you are trying to mount the gun equipped with bullet does not meet
/*20130807 to 20130814
현재 장착하려고 하는 ì´ê¸°ê°€ 장착하고 있는 íƒ„í™˜ì— ë§žì§€ 않습니다
Now you are trying to mount the gun equipped with bullet does not meet
-20130821 to 20180621
+20130821 to 20180711
현재 장착하려고 하는 íƒ„í™˜ì´ ìž¥ì°©í•˜ê³  있는 ì´ê¸°ì™€ 맞지 않습니다
Now you are trying to mount the guns and bullets will not fit mounted
*/
@@ -15198,14 +15198,14 @@ Now you are trying to mount the guns and bullets will not fit mounted
/*20130807 to 20130814
현재 장착하려고 하는 íƒ„í™˜ì´ ìž¥ì°©í•˜ê³  있는 ì´ê¸°ì™€ 맞지 않습니다
Now you are trying to mount the guns and bullets will not fit mounted
-20130821 to 20180621
+20130821 to 20180711
íŒë§¤í•  ì•„ì´í…œì„ 등ë¡í•˜ì§€ 않았습니다. íŒë§¤í•˜ì‹¤ ì•„ì´í…œì„ 등ë¡í•´ 주세요
Has not registered to sell the item. Please register to sell the item
*/
MSG_BUYINGSTORE_MAKEWND_ADD_GOODS = 0x9be,
#endif
#if PACKETVER >= 20130821
-/*20130821 to 20180621
+/*20130821 to 20180711
ITEM
*/
MSG_ITEM_IN_MAIL_SYSTEM = 0x9bf,
@@ -15213,276 +15213,276 @@ ITEM
#if PACKETVER >= 20130828
/*20130828 to 20130911
길드 창고를 ì´ìš©í•  수 없습니다. ìž ì‹œ 후 ì´ìš©í•´ì£¼ì„¸ìš”.
-20130917 to 20180621
+20130917 to 20180711
길드 창고를 ì´ìš©í•  수 없습니다.
Guild storage is not available.
*/
MSG_GUILD_STORAGE_OPEN_ERROR = 0x9c0,
-/*20130828 to 20180621
+/*20130828 to 20180711
ê¸¸ë“œì— ê°€ìž…ë˜ì–´ 있지 않습니다. 가입 후 ì´ìš©í•´ì£¼ì„¸ìš”.
Guild is not subscribed to. After signing up, please use
*/
MSG_GUILD_STORAGE_OPEN_NO_JOIN_GUILD = 0x9c1,
-/*20130828 to 20180621
+/*20130828 to 20180711
다른 길드ì›ì´ 사용중입니다. ìž ì‹œ 후 ì´ìš©í•´ì£¼ì„¸ìš”.
Two other guild members are in use. Please use it after a while.
*/
MSG_GUILD_STORAGE_WARNING_USING_ANOTHER_MEMBER = 0x9c2,
-/*20130828 to 20180621
+/*20130828 to 20180711
창고권한
Storage Permission
*/
MSG_GUILD_STORAGE_PERMISSON = 0x9c3,
-/*20130828 to 20180621
+/*20130828 to 20180711
길드창고
Guild Storage
*/
MSG_GUILD_STORAGE_TITLE = 0x9c4,
/*20130828 to 20130828
ê¸¸ë“œì°½ê³ ì˜ ì‚¬ìš© ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. 길드 마스터ì—게 요청하세요.
-20130904 to 20180621
+20130904 to 20180711
ê¸¸ë“œì°½ê³ ì˜ ì‚¬ìš© ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.
You do not have permission to use guild storage.
*/
MSG_GUILD_STORAGE_PERMISSON_WARNING_MSG = 0x9c5,
#endif
#if PACKETVER >= 20130917
-/*20130917 to 20180621
+/*20130917 to 20180711
한정íŒë§¤ 등ë¡ì°½
Limited Sale Registration Window
*/
MSG_BARGAINSALE_TOOLWND_TITLE = 0x9c6,
-/*20130917 to 20180621
+/*20130917 to 20180711
ì•„ì´í…œ DB명
Item DB Name
*/
MSG_BARGAINSALE_TOOLWND_DB_NAME = 0x9c7,
-/*20130917 to 20180621
+/*20130917 to 20180711
ì•„ì´í…œ DB번호
Item DB Number
*/
MSG_BARGAINSALE_TOOLWND_DB_NUMBER = 0x9c8,
-/*20130917 to 20180621
+/*20130917 to 20180711
íŒë§¤ 갯수
Number of Sale
*/
MSG_BARGAINSALE_TOOLWND_SELL_COUNT = 0x9c9,
-/*20130917 to 20180621
+/*20130917 to 20180711
íŒë§¤ 시작시간
Sale Start Time
*/
MSG_BARGAINSALE_TOOLWND_SELL_STARTTIME = 0x9ca,
-/*20130917 to 20180621
+/*20130917 to 20180711
íŒë§¤í•  시간
Time to sell
*/
MSG_BARGAINSALE_TOOLWND_SELL_PERIODTIME = 0x9cb,
-/*20130917 to 20180621
+/*20130917 to 20180711
íŒë§¤í•  갯수를 입력해 주세요
Please enter number you want to sell
*/
MSG_BARGAINSALE_TOOLWND_INPUT_COUNT_MSG = 0x9cc,
-/*20130917 to 20180621
+/*20130917 to 20180711
íŒë§¤ ì‹œìž‘ì‹œê°„ì„ ìž…ë ¥í•´ 주세요
Enter start time of sale
*/
MSG_BARGAINSALE_TOOLWND_INPUT_STARTTIME_MSG = 0x9cd,
-/*20130917 to 20180621
+/*20130917 to 20180711
íŒë§¤ ì‹œìž‘ì‹œê°„ì˜ ë²”ìœ„ê°€ 맞지 않습니다
Start time does not match the scope of sales.
*/
MSG_BARGAINSALE_TOOLWND_WRONG_RANGE_MSG = 0x9ce,
-/*20130917 to 20180621
+/*20130917 to 20180711
íŒë§¤í•  ì‹œê°„ì„ ìž…ë ¥í•´ 주세요
Please enter the time
*/
MSG_BARGAINSALE_TOOLWND_INPUT_PERIODTIME_MSG = 0x9cf,
-/*20130917 to 20180621
+/*20130917 to 20180711
Item DB Nameì„ ìž…ë ¥í•´ 주세요
Please enter the Item DB Name
*/
MSG_BARGAINSALE_TOOLWND_INPUT_ITEMDBNAME_MSG = 0x9d0,
-/*20130917 to 20180621
+/*20130917 to 20180711
Item ID ì¡°íšŒì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤. í™•ì¸ í›„ 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤
Item ID lookup failed. Please try again later
*/
MSG_BARGAINSALE_TOOLWND_ITEMID_CHECK_FAILED_MSG = 0x9d1,
-/*20130917 to 20180621
+/*20130917 to 20180711
>> ItemName : %s / Price : %dc / 수량 : %d / íŒë§¤ê¸°ê°„ : %dì›”:%dì¼:%dì‹œ:%d분 ~ %dì›”:%dì¼:%dì‹œ:%d분
>> ItemName: %s / Price: %dc / Quantity: %d / TimeOfSale: %dMonth:%dDay:%dMinute:%dSecond ~ %dMonth:%dDay:%dMinute:%dSecond
*/
MSG_BARGAINSALE_TOOLWND_RESULT_FORMAT = 0x9d2,
-/*20130917 to 20180621
+/*20130917 to 20180711
등ë¡ì— 성공하였습니다
Registration successful
*/
MSG_BARGAINSALE_TOOLWND_APPLY_SUCCESS_MSG = 0x9d3,
-/*20130917 to 20180621
+/*20130917 to 20180711
등ë¡ì— 실패하였습니다. 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Registration failure. Please try again later.
*/
MSG_BARGAINSALE_TOOLWND_APPLY_FAILED_MSG = 0x9d4,
-/*20130917 to 20180621
+/*20130917 to 20180711
ì´ë¯¸ 등ë¡ëœ ì•„ì´í…œì´ 있습니다. 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Item has already been registered. Please try again later.
*/
MSG_BARGAINSALE_TOOLWND_ALREADY_REGISTERED_MSG = 0x9d5,
-/*20130917 to 20180621
+/*20130917 to 20180711
ì•„ì´í…œ ì‚­ì œì— ì‹¤íŒ¨ 하였습니다. 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Failed to delete the item. Please try again later.
*/
MSG_BARGAINSALE_TOOLWND_DELETE_FAILED_MSG = 0x9d6,
-/*20130917 to 20180621
+/*20130917 to 20180711
%s ì•„ì´í…œì´ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.
%s item has been deleted.
*/
MSG_BARGAINSALE_TOOLWND_DELETE_SUCCESS_MSG = 0x9d7,
-/*20130917 to 20180621
+/*20130917 to 20180711
특가
Special
*/
MSG_BARGAINSALE_CASHSHOP_TAB_NAME = 0x9d8,
-/*20130917 to 20180621
+/*20130917 to 20180711
한정íŒë§¤ ì•„ì´í…œ íŒë§¤ìˆ˜ëŸ‰ 갱신
Sales limited sale item update
*/
MSG_BARGAINSALE_CASHSHOP_REFRESH_BTN_TOOLTIP = 0x9d9,
-/*20130917 to 20180621
+/*20130917 to 20180711
íŒë§¤ì¢…료
Discontinued
*/
MSG_BARGAINSALE_CASHSHOP_TIMER = 0x9da,
-/*20130917 to 20180621
+/*20130917 to 20180711
ìˆ˜ëŸ‰ê°±ì‹ ì´ í•„ìš”í•©ë‹ˆë‹¤
Quantity update is required
*/
MSG_BARGAINSALE_CASHSHOP_REFRESH_MSG = 0x9db,
-/*20130917 to 20180621
+/*20130917 to 20180711
재고가 부족하여 %d ê°œ 만í¼ë§Œ 구입합니다
The %d is out of stock or to buy as much as
*/
MSG_BARGAINSALE_CASHSHOP_CHECK_COUNT_MSG = 0x9dc,
-/*20130917 to 20180621
+/*20130917 to 20180711
%s ì•„ì´í…œì˜ 특가íŒë§¤ê°€ 시작ë˜ì—ˆìŠµë‹ˆë‹¤
%s Items are on sale
*/
MSG_BARGAINSALE_START_MSG = 0x9dd,
-/*20130917 to 20180621
+/*20130917 to 20180711
%s ì•„ì´í…œì˜ 매진 ë˜ëŠ” íŒë§¤ì‹œê°„만료로 ì¸í•´ 한정íŒë§¤ê°€ 종료ë˜ì—ˆìŠµë‹ˆë‹¤
%s time-out or sale of the items sold has been shut down due to the limited sales
*/
MSG_BARGAINSALE_CLOSE_MSG = 0x9de,
-/*20130917 to 20180621
+/*20130917 to 20180711
/한정íŒë§¤
/limitedsale
*/
MSG_BARGAINSALE_TOOLWND_CALL = 0x9df,
#endif
#if PACKETVER >= 20131002
-/*20131002 to 20180621
+/*20131002 to 20180711
http://www.ragnarokeurope.com/news/home-r70.html
*/
MSG_FRANCE_CASHSHOP_URL = 0x9e0,
-/*20131002 to 20180621
+/*20131002 to 20180711
http://www.ragnarokeurope.com/index.php?rubrique=70&Steam
*/
MSG_FRANCE_CASHSHOP_URL_STEAM = 0x9e1,
#endif
#if PACKETVER >= 20131016
-/*20131016 to 20180621
+/*20131016 to 20180711
êµ¬ìž…ì— ì„±ê³µí•œ 품목
Item purchase successful
*/
MSG_PARA_RESULT_TITLE = 0x9e2,
-/*20131016 to 20180621
+/*20131016 to 20180711
ì£¼ë¬¸ëŸ‰ì´ ìž¬ê³ ëŸ‰ì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
You do not have enough items.
*/
MSG_PARA_WRONG_PURCHASE_COUNT_MSG = 0x9e3,
-/*20131016 to 20180621
+/*20131016 to 20180711
초대할수 없는 케릭터 ì´ë¦„입니다.
Name of the character that cannot be invited.
*/
MSG_PARTY_INVITE = 0x9e4,
-/*20131016 to 20180621
+/*20131016 to 20180711
길드초대할수 없는 케릭터 ì´ë¦„입니다.
You cannot invite the character to the guild.
*/
MSG_GUILD_INVITE = 0x9e5,
-/*20131016 to 20180621
+/*20131016 to 20180711
ì¼ë¶€ í’ˆëª©ì€ ì´ë¯¸ íŒë§¤ë˜ì–´ êµ¬ìž…ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Item already Sold,Purchase Failed.
*/
MSG_PARA_PURCHASE_ITEM_FAIL = 0x9e6,
#endif
#if PACKETVER >= 20131030
-/*20131030 to 20180621
+/*20131030 to 20180711
현재 위치ì—ì„œ 워프 장소를 기억 í•  수 없습니다.
The warp spot cannot be memorized in current position.
*/
MSG_NOWARPSKILL2 = 0x9e7,
-/*20131030 to 20180621
+/*20131030 to 20180711
무게가 초과ë˜ì–´ ì•„ì´í…œì„ 구매할 수 없습니다.
Cannot purchase item, You exceeded the weight.
*/
MSG_PARA_PURCHASE_ITEM_WEIGHT = 0x9e8,
-/*20131030 to 20180621
+/*20131030 to 20180711
No.
*/
MSG_GUILD_STORAGE_NUMBER = 0x9e9,
-/*20131030 to 20180621
+/*20131030 to 20180711
ì•„ì´í…œ
Item
*/
MSG_GUILD_STORAGE_ITEM = 0x9ea,
-/*20131030 to 20180621
+/*20131030 to 20180711
개수
Number
*/
MSG_GUILD_STORAGE_ITEM_COUNT = 0x9eb,
-/*20131030 to 20180621
+/*20131030 to 20180711
ì´ë¦„
Name
*/
MSG_GUILD_STORAGE_USER_NAME = 0x9ec,
-/*20131030 to 20180621
+/*20131030 to 20180711
시간
Time
*/
MSG_GUILD_STORAGE_LOG_TIME = 0x9ed,
-/*20131030 to 20180621
+/*20131030 to 20180711
입/출
Input/Output
*/
MSG_GUILD_STORAGE_ITEM_IN_OUT = 0x9ee,
-/*20131030 to 20180621
+/*20131030 to 20180711
로그가 존재하지 않습니다.
Log does not exist.
*/
MSG_GUILD_STORAGE_LOG_FINISH = 0x9ef,
-/*20131030 to 20180621
+/*20131030 to 20180711
ì „ ì²´
Entire
*/
MSG_GUILD_STORAGE_LOG_ALL = 0x9f0,
-/*20131030 to 20180621
+/*20131030 to 20180711
넣 기
Insert Symbol
*/
MSG_GUILD_STORAGE_LOG_IN = 0x9f1,
-/*20131030 to 20180621
+/*20131030 to 20180711
빼 기
Remaining Time
*/
MSG_GUILD_STORAGE_LOG_OUT = 0x9f2,
#endif
#if PACKETVER >= 20131106
-/*20131106 to 20180621
+/*20131106 to 20180711
길드 창고 내역
Guild Storage Logs
*/
MSG_GUILD_STORAGE_LOG_WND_NAME = 0x9f3,
-/*20131106 to 20180621
+/*20131106 to 20180711
ë‚´ì—­ì€ ìµœê·¼ 100개만 표시ë©ë‹ˆë‹¤.
100 entries are displayed.
*/
@@ -15491,157 +15491,157 @@ Guild Storage Logs
#if PACKETVER >= 20131120
/*20131120 to 20131120
%s : +%d
-20131127 to 20180621
+20131127 to 20180711
ê¸¸ë“œì°½ê³ ì˜ ì‚¬ìš© 시간 2ë¶„ì´ ê²½ê³¼ë˜ì–´ ìžë™ìœ¼ë¡œ 종료ë©ë‹ˆë‹¤.
Guild Storage is open only for 2 minutes, and will close automatically.
*/
MSG_GUILD_STORAGE_CLOSE_TIMEOUT = 0x9f5,
#endif
#if PACKETVER >= 20131204
-/*20131204 to 20180621
+/*20131204 to 20180711
Incorrect GameSamba ID. Please Try Again.
*/
MSG_INCORRECT_GAMESAMBEID = 0x9f6,
-/*20131204 to 20180621
+/*20131204 to 20180711
%s [%d옵션] : %d 개
%s [%d Option]: %d Quantity
*/
MSG_EA5 = 0x9f7,
#endif
#if PACKETVER >= 20131211
-/*20131211 to 20180621
+/*20131211 to 20180711
ì½”ì¸ì´ 필요합니다.
Requires a Coin.
*/
MSG_USESKILL_FAIL_COINTS = 0x9f8,
-/*20131211 to 20180621
+/*20131211 to 20180711
ì½”ì¸ì´ %d 개가 필요합니다.
%d Coins are required.
*/
MSG_USESKILL_FAIL_COINTS_NUM = 0x9f9,
-/*20131211 to 20180621
+/*20131211 to 20180711
개틀ë§ê±´ ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Gatling Gun should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_GATLING = 0x9fa,
-/*20131211 to 20180621
+/*20131211 to 20180711
샷건 ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Shotguns should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_SHOTGUN = 0x9fb,
-/*20131211 to 20180621
+/*20131211 to 20180711
ë¼ì´í”Œ ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Rifle should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_RIFLE = 0x9fc,
-/*20131211 to 20180621
+/*20131211 to 20180711
리볼버 ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Pair of Revolver should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_HANDGUN = 0x9fd,
-/*20131211 to 20180621
+/*20131211 to 20180711
성ì†ì„± ë¸”ë¦¿ì„ ìž¥ì°©í•´ì•¼ 합니다
[Silver Bullet] weapon class must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_PROPERTY_SAINT_BULLET = 0x9fe,
-/*20131211 to 20180621
+/*20131211 to 20180711
ì•„ì´í…œ íŒë§¤ ë‚´ì—­
Item Sell History
*/
MSG_MERCHANT_SOLD_ITEM_LOG = 0x9ff,
-/*20131211 to 20180621
+/*20131211 to 20180711
ì•„ì´í…œ 구매 ë‚´ì—­
Item Purchase History
*/
MSG_MERCHANT_ITEM_BUY_LOG = 0xa00,
#endif
#if PACKETVER >= 20131218
-/*20131218 to 20180621
+/*20131218 to 20180711
그레네ì´ë“œëŸ°ì³ ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Grenade Launcher should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_GRANADE = 0xa01,
-/*20131218 to 20180621
+/*20131218 to 20180711
[히트배럴],[매드니스 캔슬러],[플래티넘 알터] ì˜ íš¨ê³¼ë“¤ì€ ì¤‘ì²©í•˜ì—¬ 사용할 수 없습니다.
[Heat barrel],[Last Stand],[Platinum Alter] cannot be used while sitting.
*/
MSG_FAIL_DUPLICATE_HEAT_BARREL_GS_MADNESSCANCEL_P_ALTER = 0xa02,
#endif
#if PACKETVER >= 20131223
-/*20131223 to 20180621
+/*20131223 to 20180711
현재 맵ì—서는 사용할 수 없는 스킬입니다.
Cannot use skill in this map.
*/
MSG_USESKILL_FAIL_MAP = 0xa03,
#endif
#if PACKETVER >= 20140108
-/*20140108 to 20180621
+/*20140108 to 20180711
길드 창고를 ì´ìš©ì¤‘ì¸ ê²½ìš° ì°½ê³ ì˜ ëª¨ë“  ì•„ì´í…œì´ 사ë¼ì§€ê²Œ ë©ë‹ˆë‹¤.
If you are using a guild storage, all items inside it will disappear.
*/
MSG_GUILD_STORAGE_WARNING = 0xa04,
#endif
#if PACKETVER >= 20140115
-/*20140115 to 20180621
+/*20140115 to 20180711
http://ragnarok.gamesamba.com/paytest.html
http://ragnarok.gamesamba.com/
*/
MSG_AMERICA_CASHSHOP_URL_GAMESAMBA = 0xa05,
-/*20140115 to 20180621
+/*20140115 to 20180711
로그ì¸ì„ 위해 패스워드를 입력해주세요.
Please enter a password to login.
*/
MSG_SECOND_PASSWORD_INFO_4 = 0xa06,
#endif
#if PACKETVER >= 20140129
-/*20140129 to 20180621
+/*20140129 to 20180711
펫 진화
Pet Evolution
*/
MSG_PET_EVOLUTION = 0xa07,
-/*20140129 to 20180621
+/*20140129 to 20180711
진화 - %s
Evolution - %s
*/
MSG_PET_EVOLUTION_WITH_PET_NAME = 0xa08,
-/*20140129 to 20180621
+/*20140129 to 20180711
진화ì—는 다ìŒì˜ 재료가 필요합니다.
Evolution requires the following ingredients:
*/
MSG_PET_EVOLUTION_NEED_ITEM = 0xa09,
-/*20140129 to 20180621
+/*20140129 to 20180711
진화 하시겠습니까?
Are you sure you want to evolve your pet?
*/
MSG_DO_YOU_WANT_TO_EVOLVE_PET = 0xa0a,
-/*20140129 to 20180621
+/*20140129 to 20180711
알 수 없는 오류
Unknown Error
*/
MSG_PET_EVOLUTION_FAIL_UNKNOWN = 0xa0b,
-/*20140129 to 20180621
+/*20140129 to 20180711
소환ëœíŽ«ì„ ê°–ê³  있지 않습니다.
Pet Cannot be hatched.
*/
MSG_PET_EVOLUTION_FAIL_NOTEXIST_CALLPET = 0xa0c,
-/*20140129 to 20180621
+/*20140129 to 20180711
요청한 ê²ƒì´ íŽ«ì•Œì´ ì•„ë‹™ë‹ˆë‹¤.
It is not requested petal.
*/
MSG_PET_EVOLUTION_FAIL_NOT_PETEGG = 0xa0d,
/*20140129 to 20140205
진화가 불가능한 요청입니다.
-20140212 to 20180621
+20140212 to 20180711
진화 재료가 부족합니다.
Evolution material is low.
*/
MSG_PET_EVOLUTION_FAIL_RECIPE = 0xa0e,
-/*20140129 to 20180621
+/*20140129 to 20180711
ì§„í™”ì— í•„ìš”í•œ 재료가 부족합니다.
Insufficient materials for evolution.
*/
MSG_PET_EVOLUTION_FAIL_MATERIAL = 0xa0f,
-/*20140129 to 20180621
+/*20140129 to 20180711
친밀ë„ê°€ ì ˆì¹œì¸ ìƒíƒœì—서만 진화가 가능합니다.
Loyal Intimacy is required to evolve.
*/
@@ -15650,111 +15650,111 @@ Loyal Intimacy is required to evolve.
#if PACKETVER >= 20140212
/*20140212 to 20170830
ìžë™ ë¨¹ì´ ì£¼ê¸°
-20170906 to 20180621
+20170906 to 20180711
펫 ìžë™ ë¨¹ì´ ì£¼ê¸°
Automatic feeding
*/
MSG_PET_AUTO_FEEDING = 0xa11,
-/*20140212 to 20180621
+/*20140212 to 20180711
펫ì—게 먹ì´ë¥¼ 주었습니다. '%s' 잔여량 %dê°œ
Feeding the pet. %d '%d' remaining
*/
MSG_PET_AUTO_FEEDING_REST = 0xa12,
/*20140212 to 20170830
ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 On
-20170906 to 20180621
+20170906 to 20180711
펫 ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 On
Automatic feeding turned On
*/
MSG_PET_AUTO_FEEDING_ON = 0xa13,
/*20140212 to 20170830
ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 Off
-20170906 to 20180621
+20170906 to 20180711
펫 ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 Off
Automatic feeding turned Off
*/
MSG_PET_AUTO_FEEDING_OFF = 0xa14,
-/*20140212 to 20180621
+/*20140212 to 20180711
갱신
Update
*/
MSG_REFRESH = 0xa15,
/*20140212 to 20140702
%d 분전
-20140709 to 20180621
+20140709 to 20180711
%d 분 전
%d minutes ago
*/
MSG_TIME_LINE_MINUTE = 0xa16,
/*20140212 to 20140702
%d 시간전
-20140709 to 20180621
+20140709 to 20180711
%d 시간 전
%d hours ago
*/
MSG_TIME_LINE_HOUR = 0xa17,
/*20140212 to 20140702
%d ì¼ì „
-20140709 to 20180621
+20140709 to 20180711
%d ì¼ ì „
%d days ago
*/
MSG_TIME_LINE_DAY = 0xa18,
#endif
#if PACKETVER >= 20140319
-/*20140319 to 20180621
+/*20140319 to 20180711
%d%% ( Premium %d%% + %s Server )
%d%%% ( Premium %d%%% + %s Server )
*/
MSG_BASIC_EXP_MSG_PH = 0xa19,
#endif
#if PACKETVER >= 20140326
-/*20140326 to 20180621
+/*20140326 to 20180711
우편 발송
Mailed
*/
MSG_SEND_MAIL = 0xa1a,
-/*20140326 to 20180621
+/*20140326 to 20180711
ë©”ì¼ì´ 전송ë˜ì—ˆìŠµë‹ˆë‹¤.
Your mail has been sent.
*/
MSG_MAIL_SENT = 0xa1b,
-/*20140326 to 20180621
+/*20140326 to 20180711
ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ë¡œ ì´ë™ë˜ì—ˆìŠµë‹ˆë‹¤.
This item has been moved to the inventory.
*/
MSG_GET_ITEMS_FROM_MAIL_SUCCEED = 0xa1c,
-/*20140326 to 20180621
+/*20140326 to 20180711
ì•„ì´í…œ 받기가 실패하였습니다.
Failed to get items.
*/
MSG_GET_ITEMS_FROM_MAIL_FAILED = 0xa1d,
-/*20140326 to 20180621
+/*20140326 to 20180711
ì¸ë²¤í† ë¦¬ë¥¼ 비워주세요
Please empty your inventory.
*/
MSG_GET_ITEMS_FROM_MAIL_OVERWEIGHT = 0xa1e,
-/*20140326 to 20180621
+/*20140326 to 20180711
제니를 받았습니다.
Zeny received.
*/
MSG_GET_ZENY_FROM_MAIL_SUCCEED = 0xa1f,
-/*20140326 to 20180621
+/*20140326 to 20180711
제니 받기가 실패하였습니다.
Failed to get zeny.
*/
MSG_GET_ZENY_FROM_MAIL_FAILED = 0xa20,
-/*20140326 to 20180621
+/*20140326 to 20180711
ì œë‹ˆì˜ í•œê³„ì¹˜ë¥¼ 넘었습니다.
Exceeded the limits of zenny.
*/
MSG_GET_ZENY_FROM_MAIL_OVERAMOUNT = 0xa21,
-/*20140326 to 20180621
+/*20140326 to 20180711
ì•„ì´í…œ 첨부 성공
Items attached success
*/
MSG_SET_ITEMS_TO_MAIL_SUCCEED = 0xa22,
-/*20140326 to 20180621
+/*20140326 to 20180711
받는 ì‚¬ëžŒì˜ ì´ë¦„ì´ ë°˜ë“œì‹œ 들어가야 합니다.
The name of the recipient must be included.
*/
@@ -15763,72 +15763,72 @@ The name of the recipient must be included.
ì œëª©ì˜ ê¸¸ì´ëŠ” 4ìžì´ìƒ ì´ì–´ì•¼ 합니다.
20140423 to 20141001
ì œëª©ì˜ ê¸¸ì´ëŠ” 4ìžì´ìƒ 16ìž ì´í•˜ì—¬ì•¼ 합니다.
-20141008 to 20180621
+20141008 to 20180711
ì œëª©ì˜ ê¸¸ì´ëŠ” 한글 2ìž~25ìž, ì˜ë¬¸ 4ìž~50ìž ì´ì–´ì•¼ 합니다.
The length of the title must be 4 to 50 characters long.
*/
MSG_INVALID_MAIL_TITLE_INFO = 0xa24,
-/*20140326 to 20180621
+/*20140326 to 20180711
ë©”ì¼ ì „ì†¡ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Mail delivery failed.
*/
MSG_FAILED_SEND_MAIL = 0xa25,
-/*20140326 to 20180621
+/*20140326 to 20180711
ì ì ˆí•˜ì§€ 못한 ì•„ì´í…œìœ¼ë¡œ 전송 실패하였습니다.
Transmission has failed to inappropriate items.
*/
MSG_FAILED_SEND_MAIL_ITEM = 0xa26,
-/*20140326 to 20180621
+/*20140326 to 20180711
받는 ì‚¬ëžŒì˜ ì •ë³´ê°€ 존재하지 않습니다.
Information of the recipient does not exist.
*/
MSG_FAIELD_SEND_MAIL_TO = 0xa27,
#endif
#if PACKETVER >= 20140402
-/*20140402 to 20180621
+/*20140402 to 20180711
%s [%d옵션]
%s [%d Option]
*/
MSG_EA6 = 0xa28,
-/*20140402 to 20180621
+/*20140402 to 20180711
ë ˆë²¨ì€ 1~%d 사ì´ì˜ 숫ìžë¥¼ 입력해 주세요.
Level, enter a number between 1 and %d.
*/
MSG_PARTY_BOOKING_ERR5R2 = 0xa29,
#endif
#if PACKETVER >= 20140409
-/*20140409 to 20180621
+/*20140409 to 20180711
ì†Œì§€ì°½ì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
Please free the window possessing space.
*/
MSG_ITEM_WND_OVERFULL = 0xa2a,
/*20140409 to 20140416
수신ìžì˜ ë©”ì¼ ë³´ê´€ ìš©ëŸ‰ì´ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤.
-20140423 to 20180621
+20140423 to 20180711
ë©”ì¼ ë³´ë‚´ê¸° 횟수가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
Sending mail count exceeded.
*/
MSG_FAILED_MAIL_LIMIT_CNT = 0xa2b,
#endif
#if PACKETVER >= 20140416
-/*20140416 to 20180621
+/*20140416 to 20180711
ë©”ì¼ì„ ì—´ 수 없습니다.
You can not open the mail.
*/
MSG_FAILED_TO_WRITE_MAIL = 0xa2c,
-/*20140416 to 20180621
+/*20140416 to 20180711
You are currently joined in CLan !!
You are currently joined in Clan !!
*/
MSG_JOINED_IN_CLAN = 0xa2d,
-/*20140416 to 20180621
+/*20140416 to 20180711
골드 PCë°© 마ì¼ë¦¬ì§€ ì •ë³´
Gold PC rooms mileage information
*/
MSG_GOLDPCCAFE_MILEAGE = 0xa2e,
#endif
#if PACKETVER >= 20140423
-/*20140423 to 20180621
+/*20140423 to 20180711
펫 액세서리를 해제해야 진화가 가능합니다.
Unequip pet accessories first to start evolution
*/
@@ -15837,7 +15837,7 @@ Unequip pet accessories first to start evolution
/ %d 분후
20140508 to 20140702
%d 분후
-20140709 to 20180621
+20140709 to 20180711
%d 분 후
%d minutes later
*/
@@ -15846,7 +15846,7 @@ Unequip pet accessories first to start evolution
/ %d 시간후
20140508 to 20140702
%d 시간후
-20140709 to 20180621
+20140709 to 20180711
%d 시간 후
%d hours later
*/
@@ -15855,49 +15855,49 @@ Unequip pet accessories first to start evolution
/ %d ì¼í›„
20140508 to 20140702
%d ì¼í›„
-20140709 to 20180621
+20140709 to 20180711
%d ì¼ í›„
%d days later
*/
MSG_TIME_LINE_DAY2 = 0xa32,
-/*20140423 to 20180621
+/*20140423 to 20180711
í™•ì¸ ë²„íŠ¼ì„ ëˆŒëŸ¬ C-CODE를 확ì¸í•˜ì„¸ìš”.
Press the OK button to confirm the C-CODE.
*/
MSG_INVALID_CCODE_INFO = 0xa33,
-/*20140423 to 20180621
+/*20140423 to 20180711
ì²¨ë¶€ëœ ë¬¼í’ˆì„ íšë“ 후 삭제가 가능합니다.
After obtaining the attached article can be deleted.
*/
MSG_FAILED_DELETE_MAIL = 0xa34,
-/*20140423 to 20180621
+/*20140423 to 20180711
현재 보유 제니 보다 ë§Žì€ ì œë‹ˆë¥¼ 보낼 수 없습니다.
You can not send any more zeny.
*/
MSG_FAILED_SEND_MAIL_ZENY = 0xa35,
-/*20140423 to 20180621
+/*20140423 to 20180711
수수료 : %s Zeny
Fee: %s Zeny
*/
MSG_SEND_MAIL_COMMISSION = 0xa36,
-/*20140423 to 20180621
+/*20140423 to 20180711
받는 ì‚¬ëžŒì˜ ì´ë¦„ì´ ì¡´ìž¬í•˜ì§€ 않습니다.
The recipient's name does not exist.
*/
MSG_FAILE_MAIL_RECIEVER_INFO = 0xa37,
#endif
#if PACKETVER >= 20140430
-/*20140430 to 20180621
+/*20140430 to 20180711
E X P : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
EXP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
*/
MSG_TAIWAN_PERSONALINFO_EXPMSG = 0xa38,
-/*20140430 to 20180621
+/*20140430 to 20180711
DROP : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
DROP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
*/
MSG_TAIWAN_PERSONALINFO_DROPMSG = 0xa39,
-/*20140430 to 20180621
+/*20140430 to 20180711
DEATH : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
DEATH: %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
*/
@@ -15906,7 +15906,7 @@ DEATH: %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
#if PACKETVER >= 20140514
/*20140514 to 20140528
보유 가능한 최대 마ì¼ë¦¬ì§€ : %d
-20140605 to 20180621
+20140605 to 20180711
골드 PCë°© 마ì¼ë¦¬ì§€ëŠ” 최대 %dì ê¹Œì§€ ëª¨ì„ ìˆ˜ 있습니다.
You can accumulate points of PC Gold-club up to %d points maximum.
*/
@@ -15916,39 +15916,39 @@ You can accumulate points of PC Gold-club up to %d points maximum.
/*20140521 to 20140521
ì•„ì´í…œ 버리기가 불 가능한 서버 입니다.
Items discard is imposible in server.
-20140528 to 20180621
+20140528 to 20180711
해당 서버ì—ì„œ 사용 í•  수 없는 기능 입니다
This function can not be used on the server.
*/
MSG_RESTRAINT_OF_TRADE_1 = 0xa3c,
-/*20140521 to 20180621
+/*20140521 to 20180711
수래 ì´ìš©ì´ 불 가능한 서버 입니다.
Imposible to use in server.
*/
MSG_RESTRAINT_OF_TRADE_2 = 0xa3d,
-/*20140521 to 20180621
+/*20140521 to 20180711
옥션 ì´ìš©ì´ 불 가능한 서버 입니다.
The auction is not available in server.
*/
MSG_RESTRAINT_OF_TRADE_3 = 0xa3e,
-/*20140521 to 20180621
+/*20140521 to 20180711
거래가 불 가능한 서버 입니다.
The deal is imposible in server.
*/
MSG_RESTRAINT_OF_TRADE_4 = 0xa3f,
/*20140521 to 20140521
ì•„ì´í…œ 편지 보내기가 불 가능한 서버 입니다.
-20140528 to 20180621
+20140528 to 20180711
ì•„ì´í…œ 버리기가 불 가능한 서버 입니다.
Items discard is imposible in server.
*/
MSG_RESTRAINT_OF_TRADE_5 = 0xa40,
-/*20140521 to 20180621
+/*20140521 to 20180711
ìƒì  íŒë§¤ ê¸°ëŠ¥ì„ ì‚¬ìš©í• ìˆ˜ 없습니다.
Stores selling features are not available.
*/
MSG_RESTRAINT_OF_TRADE_6 = 0xa41,
-/*20140521 to 20180621
+/*20140521 to 20180711
ì†Œí™˜ë¬¼ì˜ SPê°€ 부족합니다.
The SP's summoned enough.
*/
@@ -15957,28 +15957,28 @@ The SP's summoned enough.
#if PACKETVER >= 20140528
/*20140528 to 20140702
Weight : %s/%s
-20140709 to 20180621
+20140709 to 20180711
%s/%s
*/
MSG_SEND_MAIL_WEIGHT = 0xa43,
-/*20140528 to 20180621
+/*20140528 to 20180711
ë©”ì¼ ë‚´ìš©ì˜ ìµœëŒ€ 길ì´ëŠ” 1K ì´í•˜ 입니다.
The maximum length of the message content is 1K.
*/
MSG_INVALID_MAIL_CONTENTS_INFO = 0xa44,
-/*20140528 to 20180621
+/*20140528 to 20180711
ì•„ì´í…œ 첨부 실패
Failed to attach an item.
*/
MSG_SET_ITEMS_TO_MAIL_FAILED = 0xa45,
-/*20140528 to 20180621
+/*20140528 to 20180711
ë©”ì¼ì— 첨부할수 있는 ì•„ì´í…œì˜ 무게가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
The weight of the items that can be attached to mail has been exceeded.
*/
MSG_SET_ITEMS_TO_MAIL_OVER_WEIGHT = 0xa46,
#endif
#if PACKETVER >= 20140611
-/*20140611 to 20180621
+/*20140611 to 20180711
ì´ë¯¸ 서비스 중입니다. ìž ì‹œ 후 다시 ì‹œë„í•´ 주세요.
Is already in service. Please try again in a few minutes.
*/
@@ -15987,55 +15987,55 @@ Is already in service. Please try again in a few minutes.
#if PACKETVER >= 20140618
/*20140618 to 20140924
환ìƒì˜ ë£°ë ›ì°½ì„ ì—´ 수 없습니다.
-20141001 to 20180621
+20141001 to 20180711
í–‰ìš´ì˜ ë£°ë ›ì°½ì„ ì—´ 수 없습니다.
Unable to open the window of Lucky Roulette.
*/
MSG_FAILED_OPEN_ROULLETTE = 0xa48,
/*20140618 to 20140924
환ìƒì˜ ë£°ë ›ì°½ì„ ë‹«ì„ ìˆ˜ 없습니다.
-20141001 to 20180621
+20141001 to 20180711
í–‰ìš´ì˜ ë£°ë ›ì°½ì„ ë‹«ì„ ìˆ˜ 없습니다.
Unable to close the window of the Lucky Roulette.
*/
MSG_FAILED_CLOSE_ROULLETTE = 0xa49,
/*20140618 to 20140924
환ìƒì˜ ë£°ë ›ì„ ì‹œìž‘ í•  수 없습니다.
-20141001 to 20180621
+20141001 to 20180711
í–‰ìš´ì˜ ë£°ë ›ì„ ì‹œìž‘ í•  수 없습니다.
You can not start a roulette wheel of fortune.
*/
MSG_FAILED_GENERATE_ROULLETTE = 0xa4a,
/*20140618 to 20140924
환ìƒì˜ ë£°ë ›ì„ ì‹œìž‘í•˜ê¸° 위해서는 í¬ì¸íŠ¸ê°€ 필요합니다.
-20141001 to 20180621
+20141001 to 20180711
í–‰ìš´ì˜ ë£°ë ›ì„ ì‹œìž‘í•˜ê¸° 위해서는 í¬ì¸íŠ¸ê°€ 필요합니다.
Points is required to play Lucky Roulette.
*/
MSG_NOT_ENOUGH_ROULLETTE_POINT = 0xa4b,
-/*20140618 to 20180621
+/*20140618 to 20180711
ë‹¹ì²¨ëœ ì•„ì´í…œì„ 수령할 수 없습니다.
You can not receive a winning items.
*/
MSG_FAILED_RECV_ITEM = 0xa4c,
#endif
#if PACKETVER >= 20140625
-/*20140625 to 20180621
+/*20140625 to 20180711
ì¸ë²¤í† ë¦¬ì— ì•„ì´í…œ 개수가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
The number of items in the inventory has been exceeded.
*/
MSG_FAILED_RECV_ITEM_OVERCOUNT = 0xa4d,
-/*20140625 to 20180621
+/*20140625 to 20180711
무게가 초과하였습니다. ì†Œì§€ì°½ì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
The weight has been exceeded. Please free up the possesion window.
*/
MSG_FAILED_RECV_ITEM_OVERWEIGHT = 0xa4e,
-/*20140625 to 20180621
+/*20140625 to 20180711
ë…¸ì  ê°œì„¤ 실패.
Failed to open stalls.
*/
MSG_MERCHANTSHOP_MAKING_FAIL = 0xa4f,
-/*20140625 to 20180621
+/*20140625 to 20180711
ë£°ë ›ì´ ëŒê³  있습니다. ê²½í’ˆì„ í™•ì¸ í›„ì— ë‹¤ì‹œ ì‹œë„해주세요.
The roulette wheel is spinning. Please try again after checking with prizes.
*/
@@ -16044,55 +16044,55 @@ The roulette wheel is spinning. Please try again after checking with prizes.
#if PACKETVER >= 20140702
/*20140702 to 20140917
환ìƒì˜ 룰렛
-20140924 to 20180621
+20140924 to 20180711
í–‰ìš´ì˜ ë£°ë ›
Lucky Roulette
*/
MSG_ROULLETTE_WND = 0xa51,
-/*20140702 to 20180621
+/*20140702 to 20180711
ì•„ì´í…œ íŒë§¤ ì‹œ 소리로 알림
Notify when item sell out
*/
MSG_SOUNDEFFECT_ITEMSELLWND = 0xa52,
#endif
#if PACKETVER >= 20140709
-/*20140709 to 20180621
+/*20140709 to 20180711
수수료를 확ì¸í•´ì£¼ì„¸ìš”.
Please check the fees.
*/
MSG_FAILED_SEND_MAIL_ITEMS = 0xa53,
/*20140709 to 20140716
유저ì´ë¦„확ì¸
-20140723 to 20180621
+20140723 to 20180711
유저ì´ë¦„ 확ì¸
Verify user name
*/
MSG_CHECK_USER_NAME = 0xa54,
-/*20140709 to 20180621
+/*20140709 to 20180711
삭제 예정
Schedule deletion
*/
MSG_DELETE_DUE_DATE = 0xa55,
#endif
#if PACKETVER >= 20140723
-/*20140723 to 20180621
+/*20140723 to 20180711
달성과제
Achievable challenge
*/
MSG_ACHIEVEMENT_SYSTEM = 0xa56,
-/*20140723 to 20180621
+/*20140723 to 20180711
달성ì´ì 
Achieve overall
*/
MSG_ACHIEVEMENT_TOTAL_SCORE = 0xa57,
-/*20140723 to 20180621
+/*20140723 to 20180711
달성등급
Achieve rank
*/
MSG_ACHIEVEMENT_GRADE = 0xa58,
/*20140723 to 20150225
ë‹¤ìŒ ë³´ìƒë°•ìŠ¤ê¹Œì§€ [%5d]ì 
-20150225 to 20180621
+20150225 to 20180711
ë‹¤ìŒ ë‹¬ì„±ë“±ê¸‰ê¹Œì§€ [%5d]ì 
The following compensation box until [% 5d] point
*/
@@ -16100,7 +16100,7 @@ The following compensation box until [% 5d] point
/*20140723 to 20140723
개요
Overview
-20140730 to 20180621
+20140730 to 20180711
진척ìƒí™©
Progress
*/
@@ -16108,7 +16108,7 @@ Progress
/*20140723 to 20140723
ì¼ë°˜
General
-20140730 to 20180621
+20140730 to 20180711
최근 달성 ì—…ì 
Recent Achievements
*/
@@ -16118,7 +16118,7 @@ Recent Achievements
Role
20140730 to 20140924
개다래 열매 품목
-20141001 to 20180621
+20141001 to 20180711
ä»™è² í’ˆëª©
Cracker Item
*/
@@ -16128,7 +16128,7 @@ Cracker Item
Action
20140730 to 20140924
개다래 열매 : %d / %d GD
-20141001 to 20180621
+20141001 to 20180711
ä»™è² : %d / %d
Cracker : %d / %d
*/
@@ -16138,7 +16138,7 @@ Cracker : %d / %d
Battle
20140730 to 20140924
개다래 열매가 부족합니다.
-20141001 to 20180621
+20141001 to 20180711
ä»™è²ê°€ 부족합니다.
Cracker is low.
*/
@@ -16148,7 +16148,7 @@ Cracker is low.
Adventure
20140730 to 20140924
%s GD
-20141001 to 20180621
+20141001 to 20180711
%s
%s
*/
@@ -16156,7 +16156,7 @@ Adventure
/*20140723 to 20140723
결투
Duel
-20140813 to 20180621
+20140813 to 20180711
개요
Overview
*/
@@ -16164,7 +16164,7 @@ Overview
/*20140723 to 20140723
수련
Lily
-20140813 to 20180621
+20140813 to 20180711
ì¼ë°˜
General
*/
@@ -16172,7 +16172,7 @@ General
/*20140723 to 20140723
퀘스트
Quest
-20140813 to 20180621
+20140813 to 20180711
ìºë¦­í„°
Role
*/
@@ -16180,7 +16180,7 @@ Role
/*20140723 to 20140723
ì—피소드
Episode
-20140813 to 20180621
+20140813 to 20180711
í–‰ë™
Action
*/
@@ -16188,21 +16188,21 @@ Action
/*20140723 to 20140723
ì´ë²¤íŠ¸
Evt
-20140813 to 20180621
+20140813 to 20180711
기타
Other
*/
MSG_ACHIEVEMENT_TAB_GENERAL_REST = 0xa64,
/*20140723 to 20140723
활ë™
-20140813 to 20180621
+20140813 to 20180711
모험
Adventure
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE = 0xa65,
/*20140723 to 20140723
커뮤니티
-20140813 to 20180621
+20140813 to 20180711
룬미드가츠
Rune Midgarts
*/
@@ -16210,28 +16210,28 @@ Rune Midgarts
/*20140723 to 20140723
제련
Refining
-20140813 to 20180621
+20140813 to 20180711
슈발츠발드
Schwartzvald
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_SCHWARZWALD = 0xa67,
/*20140723 to 20140723
경제
-20140813 to 20180621
+20140813 to 20180711
아루나펠츠
Arunafeltz
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_ARUNAFELTZ = 0xa68,
/*20140723 to 20140723
ìƒí™œ
-20140813 to 20180621
+20140813 to 20180711
ì´ê³„
Commandment
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_ANOTHERWORLD = 0xa69,
/*20140723 to 20140723
축제
-20140813 to 20180621
+20140813 to 20180711
로컬ë¼ì´ì§•
Localizing
*/
@@ -16239,7 +16239,7 @@ Localizing
/*20140723 to 20140723
위업
Feat
-20140813 to 20180621
+20140813 to 20180711
ë˜ì „
Dungeon
*/
@@ -16247,7 +16247,7 @@ Dungeon
/*20140723 to 20140723
달성한 과제
Achieved challenge
-20140813 to 20180621
+20140813 to 20180711
전투
Battle
*/
@@ -16255,7 +16255,7 @@ Battle
/*20140723 to 20140723
진척ìƒí™©
Progress
-20140813 to 20180621
+20140813 to 20180711
결투
Duel
*/
@@ -16263,369 +16263,369 @@ Duel
/*20140723 to 20140723
최근 달성 ì—…ì 
Recent Achievements
-20140813 to 20180621
+20140813 to 20180711
수련
Lily
*/
MSG_ACHIEVEMENT_TAB_BATTLE_TRAINING = 0xa6e,
#endif
#if PACKETVER >= 20140813
-/*20140813 to 20180621
+/*20140813 to 20180711
퀘스트
Quest
*/
MSG_ACHIEVEMENT_TAB_QUEST = 0xa6f,
-/*20140813 to 20180621
+/*20140813 to 20180711
ì—피소드
Episode
*/
MSG_ACHIEVEMENT_TAB_QUEST_EPISODE = 0xa70,
-/*20140813 to 20180621
+/*20140813 to 20180711
ì¼ë°˜
General
*/
MSG_ACHIEVEMENT_TAB_QUEST_GENERAL = 0xa71,
-/*20140813 to 20180621
+/*20140813 to 20180711
메모리얼
Memorial
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL = 0xa72,
-/*20140813 to 20180621
+/*20140813 to 20180711
미드가르드
Midgard
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL_MIDGARD = 0xa73,
-/*20140813 to 20180621
+/*20140813 to 20180711
ì´ê³„
Commandment
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL_ANOTHERWORLD = 0xa74,
-/*20140813 to 20180621
+/*20140813 to 20180711
기타
Other
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL_REST = 0xa75,
-/*20140813 to 20180621
+/*20140813 to 20180711
위업
Feat
*/
MSG_ACHIEVEMENT_TAB_ACHIEVEMENT = 0xa76,
-/*20140813 to 20180621
+/*20140813 to 20180711
달성한 과제
Achieved challenge
*/
MSG_ACHIEVEMENT_TAB_TOTAL = 0xa77,
-/*20140813 to 20180621
+/*20140813 to 20180711
ë” ì´ìƒ 추가할 수 없습니다.
You cannot add anymore.
*/
MSG_FAIL_ADD_ACHIEVEMENT_TRACING = 0xa78,
-/*20140813 to 20180621
+/*20140813 to 20180711
< %s > 달성하였습니다.
< %S > achieved.
*/
MSG_NOTICE_COMPLETE_ACHIEVEMENT = 0xa79,
#endif
#if PACKETVER >= 20140827
-/*20140827 to 20180621
+/*20140827 to 20180711
only otp user login allow
Only OTP users are allowed
*/
MSG_OTPUSER_ONLY = 0xa7a,
#endif
#if PACKETVER >= 20140917
-/*20140917 to 20180621
+/*20140917 to 20180711
ì´ ë²„íŠ¼ì„ ëˆ„ë¥¼ ì‹œ, ì§€ì •ëœ ìƒí’ˆì„ 받게ë˜ë©° ë£°ë ›ì€ ì´ˆê¸°í™” ë©ë‹ˆë‹¤.
When this button pressed, you will receive a specified initialized roulette item.
*/
MSG_GET_ROULLETE_PRIZE = 0xa7b,
-/*20140917 to 20180621
+/*20140917 to 20180711
ì´ ë²„íŠ¼ì„ ëˆ„ë¥¼ ì‹œ, 깜빡ì´ëŠ” í™”ì‚´í‘œì˜ ë¼ì¸ë¶€í„° ë£°ë ›ì„ ì‹œìž‘ 합니다.
When this button pressed, the flashing arrows from the lines of the roulette wheel begins.
*/
MSG_NOTICE_NEXT_ROULLETE_STAGE = 0xa7c,
-/*20140917 to 20180621
+/*20140917 to 20180711
칭호
Style
*/
MSG_TITLE_EQUIPMENT = 0xa7d,
-/*20140917 to 20180621
+/*20140917 to 20180711
칭호 해제
Title release
*/
MSG_TAKEOFF_TITLE = 0xa7e,
-/*20140917 to 20180621
+/*20140917 to 20180711
길드 ìƒì„±ì„ í•  수 없는 지역입니다.
Can't create a Guild in this area.
*/
MSG_GUILD_MAKE_GUILD_NOT_PERMITTED_MAP = 0xa7f,
-/*20140917 to 20180621
+/*20140917 to 20180711
길드 해체를 할 수 없는 지역입니다.
Can't disband a Guild in this area.
*/
MSG_GUILD_DISORGANIZE_GUILD_NOT_PERMITTED_MAP = 0xa80,
-/*20140917 to 20180621
+/*20140917 to 20180711
길드 ê°€ìž…ì„ í•  수 없는 지역입니다.
Can't join a Guild in this area.
*/
MSG_GUILD_JOIN_GUILD_NOT_PERMITTED_MAP = 0xa81,
-/*20140917 to 20180621
+/*20140917 to 20180711
길드 탈퇴를 할 수 없는 지역입니다.
Can't leave a Guild in this area.
*/
MSG_GUILD_LEAVE_GUILD_NOT_PERMITTED_MAP = 0xa82,
-/*20140917 to 20180621
+/*20140917 to 20180711
ê¸¸ë“œì› ì¶”ë°©ì„ í•  수 없는 지역입니다.
Can't deport a Guild in this area.
*/
MSG_GUILD_EXPEL_GUILD_NOT_PERMITTED_MAP = 0xa83,
-/*20140917 to 20180621
+/*20140917 to 20180711
길드ì§ìœ„ ë³€ê²½ì„ í•  수 없는 지역입니다.
Can't change a Guild title in this area
*/
MSG_GUILD_POSITION_CHANGE_NOT_PERMITTED_MAP = 0xa84,
-/*20140917 to 20180621
+/*20140917 to 20180711
ì•„ì´í…œ ì†Œì§€ëŸ‰ì„ 5칸ì´ìƒ 비워주세요
Please empty at least 5 amount of possession in item window.
*/
MSG_NOT_ENOUGH_SPACE_IN_ITEM_BODY = 0xa85,
-/*20140917 to 20180621
+/*20140917 to 20180711
E X P : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
EXP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
*/
MSG_JPN_PERSONALINFO_EXPMSG = 0xa86,
-/*20140917 to 20180621
+/*20140917 to 20180711
DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
*/
MSG_JPN_PERSONALINFO_DROPMSG = 0xa87,
-/*20140917 to 20180621
+/*20140917 to 20180711
DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
*/
MSG_JPN_PERSONALINFO_DEATHMSG = 0xa88,
-/*20140917 to 20180621
+/*20140917 to 20180711
첨부할 수 있는 ì•„ì´í…œì˜ 갯수가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
The number of items that can be attached is exceeded.
*/
MSG_SET_ITEMS_TO_MAIL_OVERCOUNT = 0xa89,
-/*20140917 to 20180621
+/*20140917 to 20180711
ì•„ì´í…œ 구매 ì‹œ 소리로 알림
Notify when item purchased
*/
MSG_SOUNDEFFECT_ITEMBUYWND = 0xa8a,
#endif
#if PACKETVER >= 20140924
-/*20140924 to 20180621
+/*20140924 to 20180711
첨부할 수 없는 ì•„ì´í…œìž…니다.
Unable to attach the items.
*/
MSG_ID_A8B = 0xa8b,
#endif
#if PACKETVER >= 20141001
-/*20141001 to 20180621
+/*20141001 to 20180711
ê½ì— 당첨ë˜ì—ˆìœ¼ë¯€ë¡œ ë‹¤ìŒ ìƒìœ„ ë‹¨ê³„ì˜ ë£°ë ›ì„ ëŒë¦¬ì‹¤ 수 없습니다.
Because you can not win a slam room and turn the roulette of the next higher step.
*/
MSG_ID_A8C = 0xa8c,
-/*20141001 to 20180621
+/*20141001 to 20180711
답장쓰기
Replying
*/
MSG_ID_A8D = 0xa8d,
-/*20141001 to 20180621
+/*20141001 to 20180711
ë‚´ìš©ì½ê¸°
Read more
*/
MSG_ID_A8E = 0xa8e,
-/*20141001 to 20180621
+/*20141001 to 20180711
ë©”ì¼ì‚­ì œ
Delete message
*/
MSG_ID_A8F = 0xa8f,
-/*20141001 to 20180621
+/*20141001 to 20180711
ä»™è² : %d
Crackers : %d
*/
MSG_ID_A90 = 0xa90,
-/*20141001 to 20180621
+/*20141001 to 20180711
%s %s ä»™è²
%s %s crackers
*/
MSG_ID_A91 = 0xa91,
-/*20141001 to 20180621
+/*20141001 to 20180711
ä»™è²
Crackers
*/
MSG_ID_A92 = 0xa92,
-/*20141001 to 20180621
+/*20141001 to 20180711
Total : %d ä»™è²
Total : %d Crackers
*/
MSG_ID_A93 = 0xa93,
-/*20141001 to 20180621
+/*20141001 to 20180711
%d -> %s ä»™è²
%d -> %s Crackers
*/
MSG_ID_A94 = 0xa94,
-/*20141001 to 20180621
+/*20141001 to 20180711
%s ä»™è²
%s Crackers
*/
MSG_ID_A95 = 0xa95,
-/*20141001 to 20180621
+/*20141001 to 20180711
Current ä»™è² : %s
Current Crackers : %s
*/
MSG_ID_A96 = 0xa96,
-/*20141001 to 20180621
+/*20141001 to 20180711
%s : %s ä»™è²
%s : %s Crackers
*/
MSG_ID_A97 = 0xa97,
-/*20141001 to 20180621
+/*20141001 to 20180711
%10s ä»™è²
%10s Crackers
*/
MSG_ID_A98 = 0xa98,
-/*20141001 to 20180621
+/*20141001 to 20180711
Total : %s ä»™è²
Total : %s Crackers
*/
MSG_ID_A99 = 0xa99,
-/*20141001 to 20180621
+/*20141001 to 20180711
※수수료 3% / 최소 1ä»™è²ì˜ 수수료 ì°¨ê°
* Commission 3% / Minimum 1 Crackers comission deducted
*/
MSG_ID_A9A = 0xa9a,
-/*20141001 to 20180621
+/*20141001 to 20180711
ä»™è² ìž…ë‹ˆë‹¤.
The Crackers.
*/
MSG_ID_A9B = 0xa9b,
-/*20141001 to 20180621
+/*20141001 to 20180711
^0000ffä»™è² ì´ìƒ^000000입니다.
ìž…ë ¥ê¸ˆì•¡ì´ ë§žìŠµë‹ˆê¹Œ?
^0000ff more than crackers^000000Did you enter the correct amount?
*/
MSG_ID_A9C = 0xa9c,
-/*20141001 to 20180621
+/*20141001 to 20180711
10억仙è²ì´ìƒ 안전 확ì¸
Over than 10billions secure check
*/
MSG_ID_A9D = 0xa9d,
-/*20141001 to 20180621
+/*20141001 to 20180711
10ì–µ ä»™è² ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 10ì–µ ä»™è²ë¡œ íŒë§¤ë©ë‹ˆë‹¤.
If you fill over 1 billion, the price will be automatically set as 10 billion Xianbei.
*/
MSG_ID_A9E = 0xa9e,
-/*20141001 to 20180621
+/*20141001 to 20180711
9,999ä»™è² ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 9,999ä»™è²ë¡œ íŒë§¤ë©ë‹ˆë‹¤.
If you fill over 9,999 Xianbei, the price will automatically set as 9,999 Xianbei.
*/
MSG_ID_A9F = 0xa9f,
-/*20141001 to 20180621
+/*20141001 to 20180711
ê°€ê²©ì´ 0 ä»™è²ì¸ ì•„ì´í…œì´ 존재 합니다. ìƒì ì„ 열수 없습니다!
There are items priced 0 Xianbei. You cannot open vending.
*/
MSG_ID_AA0 = 0xaa0,
-/*20141001 to 20180621
+/*20141001 to 20180711
ìƒëŒ€ ìºë¦­í„°ê°€ 최대 보유 ä»™è²ëŸ‰ì„ 초과하여 거래가 불가능 합니다.
The opponent is over the Xianbei limit. Trade failed.
*/
MSG_ID_AA1 = 0xaa1,
-/*20141001 to 20180621
+/*20141001 to 20180711
%s ì•„ì´í…œì˜ ê°€ê²©ì„ 10ì–µä»™è² ì´í•˜ë¡œ 입력해 주세요.
Please fill out %s item price less than 1 billion Xianbei.
*/
MSG_ID_AA2 = 0xaa2,
-/*20141001 to 20180621
+/*20141001 to 20180711
%s : %s ä»™è² => %s EA
%s: %s Xianbei => %s ea
*/
MSG_ID_AA3 = 0xaa3,
-/*20141001 to 20180621
+/*20141001 to 20180711
제한 금액 : %s ä»™è²
Limited price: %s Xianbei
*/
MSG_ID_AA4 = 0xaa4,
-/*20141001 to 20180621
+/*20141001 to 20180711
%s %s ä»™è² %d ê°œ
%s %s %d Xianbei
*/
MSG_ID_AA5 = 0xaa5,
-/*20141001 to 20180621
+/*20141001 to 20180711
%s %d개를 %d ä»™è²ì— íŒë§¤ 하였습니다. 수수료는 3%% 입니다.
%d %s are sold. In total %d Xianbei. 3%% charge will be imposed.
*/
MSG_ID_AA6 = 0xaa6,
#endif
#if PACKETVER >= 20141008
-/*20141008 to 20180621
+/*20141008 to 20180711
RODEX
*/
MSG_ID_AA7 = 0xaa7,
-/*20141008 to 20180621
+/*20141008 to 20180711
SEND
*/
MSG_ID_AA8 = 0xaa8,
-/*20141008 to 20180621
+/*20141008 to 20180711
RECEIVE
*/
MSG_ID_AA9 = 0xaa9,
#endif
#if PACKETVER >= 20141015
-/*20141015 to 20180621
+/*20141015 to 20180711
ë©”ì¼ ìž‘ì„±ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Please close the mail compose window.
*/
MSG_ID_AAA = 0xaaa,
#endif
#if PACKETVER >= 20141022
-/*20141022 to 20180621
+/*20141022 to 20180711
서버접근거부(A)
Server access denied(A)
*/
MSG_ID_AAB = 0xaab,
-/*20141022 to 20180621
+/*20141022 to 20180711
서버접근거부(B)
Server access denied(B)
*/
MSG_ID_AAC = 0xaac,
#endif
#if PACKETVER >= 20141112
-/*20141112 to 20180621
+/*20141112 to 20180711
ìž¥ì°©ëœ í™”ì‚´/탄환 ì„ í•´ì œí•´ì•¼í•©ë‹ˆë‹¤.
Unequipped Arrow/Ammunition.
*/
MSG_ID_AAD = 0xaad,
#endif
#if PACKETVER >= 20141119
-/*20141119 to 20180621
+/*20141119 to 20180711
ì¸ë²¤í† ë¦¬ì˜ ì•„ì´í…œì´ 소모ë˜ì–´ ë¡œë±ìŠ¤ ì“°ê¸°ì°½ì„ ë‹«ìŠµë‹ˆë‹¤.
Consuming item in inventory will close mail compose window.
*/
MSG_ID_AAE = 0xaae,
-/*20141119 to 20180621
+/*20141119 to 20180711
소지하신 ë‹ë³´ê¸°ê°€ 없습니다.
Do not have Magnifier.
*/
MSG_ID_AAF = 0xaaf,
#endif
#if PACKETVER >= 20141210
-/*20141210 to 20180621
+/*20141210 to 20180711
ì•„ì´í…œì„ 버릴려면 ë©”ì¼ ì“°ê¸°ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Close email window if you want to discard item.
*/
MSG_ID_AB0 = 0xab0,
-/*20141210 to 20180621
+/*20141210 to 20180711
ìƒëŒ€ë°©ì´ 친구 요청중입니다
The opponent has already requested you to be a friend.
*/
MSG_ID_AB1 = 0xab1,
#endif
#if PACKETVER >= 20141217
-/*20141217 to 20180621
+/*20141217 to 20180711
SCRIPT ERROR AID
*/
MSG_ID_AB2 = 0xab2,
@@ -16634,7 +16634,7 @@ SCRIPT ERROR AID
Errorfile : %s
ErrorLine : %d 줄
ErrorContext: %s
-20150107 to 20180621
+20150107 to 20180711
Errorfile : %s
ErrorLine : %d 줄
@@ -16651,152 +16651,152 @@ ErrorContext: %s
MSG_ID_AB3 = 0xab3,
#endif
#if PACKETVER >= 20141223
-/*20141223 to 20180621
+/*20141223 to 20180711
^ff0000해당 ì•„ì´í…œì„ 구매 하시겠습니까? %dí¬ì¸íŠ¸ ë° %d ä»™è²ê°€ ì°¨ê° ë©ë‹ˆë‹¤.
^ff0000Are you sure want to purchase the item? after confirmation will consume %d point and %d crackers.
*/
MSG_ID_AB4 = 0xab4,
-/*20141223 to 20180621
+/*20141223 to 20180711
닫기
Close
*/
MSG_ID_AB5 = 0xab5,
-/*20141223 to 20180621
+/*20141223 to 20180711
퀘스트
Quest
*/
MSG_ID_AB6 = 0xab6,
-/*20141223 to 20180621
+/*20141223 to 20180711
퀘스트 ì•„ì´ì½˜ 보기
View Quest icon
*/
MSG_ID_AB7 = 0xab7,
-/*20141223 to 20180621
+/*20141223 to 20180711
편ì˜ì‹œì„¤
Facility
*/
MSG_ID_AB8 = 0xab8,
-/*20141223 to 20180621
+/*20141223 to 20180711
편ì˜ì‹œì„¤ ì•„ì´ì½˜ 보기
View Facility icon
*/
MSG_ID_AB9 = 0xab9,
-/*20141223 to 20180621
+/*20141223 to 20180711
길드ì›/파티ì›
Guild/Party
*/
MSG_ID_ABA = 0xaba,
/*20141223 to 20150311
길드ì›/íŒŒí‹°ì› í‘œì‹œ
-20150318 to 20180621
+20150318 to 20180711
길드ì›/íŒŒí‹°ì› ë³´ê¸°
Show Guild/Party
*/
MSG_ID_ABB = 0xabb,
-/*20141223 to 20180621
+/*20141223 to 20180711
기ë¡í•˜ê¸°
Record
*/
MSG_ID_ABC = 0xabc,
-/*20141223 to 20180621
+/*20141223 to 20180711
보스몬스터
Boss Monster
*/
MSG_ID_ABD = 0xabd,
-/*20141223 to 20180621
+/*20141223 to 20180711
나
I
*/
MSG_ID_ABE = 0xabe,
-/*20141223 to 20180621
+/*20141223 to 20180711
삭제 하시겠습니까?
Are you sure want to delete it?
*/
MSG_ID_ABF = 0xabf,
-/*20141223 to 20180621
+/*20141223 to 20180711
퀘스트 NPC
Quest NPC
*/
MSG_ID_AC0 = 0xac0,
-/*20141223 to 20180621
+/*20141223 to 20180711
메모할 ë‚´ìš©ì„ ê¸°ë¡í•©ë‹ˆë‹¤
Record content
*/
MSG_ID_AC1 = 0xac1,
-/*20141223 to 20180621
+/*20141223 to 20180711
저장하기
Store
*/
MSG_ID_AC2 = 0xac2,
-/*20141223 to 20180621
+/*20141223 to 20180711
메모하기
Record
*/
MSG_ID_AC3 = 0xac3,
-/*20141223 to 20180621
+/*20141223 to 20180711
%s [%d옵션] %d개
%s [%d Property] %d ea
*/
MSG_ID_AC4 = 0xac4,
-/*20141223 to 20180621
+/*20141223 to 20180711
%s [%d옵션] %s Zeny
%s [%d Property] %s Zeny
*/
MSG_ID_AC5 = 0xac5,
#endif
#if PACKETVER >= 20141231
-/*20141231 to 20180621
+/*20141231 to 20180711
%s [%d옵션] %d %s %d -> %s %s
%s [%d Property] %d %s %d -> %s %s
*/
MSG_ID_AC6 = 0xac6,
-/*20141231 to 20180621
+/*20141231 to 20180711
%s [%d옵션] %d %s %s %s
%s [%d Property] %d %s %s %s
*/
MSG_ID_AC7 = 0xac7,
-/*20141231 to 20180621
+/*20141231 to 20180711
%s [%d옵션] %d -> %s %s
%s [%d Property] %d -> %s %s
*/
MSG_ID_AC8 = 0xac8,
-/*20141231 to 20180621
+/*20141231 to 20180711
%s [%d옵션] %s %s
%s [%d Property] %s %s
*/
MSG_ID_AC9 = 0xac9,
#endif
#if PACKETVER >= 20150107
-/*20150107 to 20180621
+/*20150107 to 20180711
최소 거래 단위 100 ä»™è² ì´ìƒìœ¼ë¡œ 설정 하셔야 합니다.
The minimum trading unit must be 100 crackers or more.
*/
MSG_ID_ACA = 0xaca,
#endif
#if PACKETVER >= 20150114
-/*20150114 to 20180621
+/*20150114 to 20180711
머리 색
Hair color
*/
MSG_ID_ACB = 0xacb,
-/*20150114 to 20180621
+/*20150114 to 20180711
머리 모양
Hair style
*/
MSG_ID_ACC = 0xacc,
-/*20150114 to 20180621
+/*20150114 to 20180711
옷 색
Cloth color
*/
MSG_ID_ACD = 0xacd,
-/*20150114 to 20180621
+/*20150114 to 20180711
옷 모양
Cloth pattern
*/
MSG_ID_ACE = 0xace,
#endif
#if PACKETVER >= 20150217
-/*20150217 to 20180621
+/*20150217 to 20180711
지ì›ë˜ì§€ 않는 맵 입니다.
Unsupported Map.
*/
@@ -16805,251 +16805,251 @@ Unsupported Map.
#if PACKETVER >= 20150304
/*20150304 to 20150318
2147483647 Zeny ì´í•˜ë¡œ ìž…ë ¥ 하십시오.
-20150325 to 20180621
+20150325 to 20180711
2,147,483,647 Zeny ì´í•˜ë¡œ ìž…ë ¥ 하십시오.
Enter Zeny Below 2,147,483,647.
*/
MSG_ID_AD0 = 0xad0,
-/*20150304 to 20180621
+/*20150304 to 20180711
1 Zeny ì´ìƒ ìž…ë ¥ 하십시오.
Please Enter atleast 1 zeny.
*/
MSG_ID_AD1 = 0xad1,
-/*20150304 to 20180621
+/*20150304 to 20180711
보유한 Zeny 가 없습니다.
You do not hold any zeny.
*/
MSG_ID_AD2 = 0xad2,
-/*20150304 to 20180621
+/*20150304 to 20180711
제니 창고
Zeny Storage
*/
MSG_ID_AD3 = 0xad3,
-/*20150304 to 20180621
+/*20150304 to 20180711
창고보유액
in Bank
*/
MSG_ID_AD4 = 0xad4,
-/*20150304 to 20180621
+/*20150304 to 20180711
소지금
on hand
*/
MSG_ID_AD5 = 0xad5,
-/*20150304 to 20180621
+/*20150304 to 20180711
입금
Deposit
*/
MSG_ID_AD6 = 0xad6,
-/*20150304 to 20180621
+/*20150304 to 20180711
출금
Withdraw
*/
MSG_ID_AD7 = 0xad7,
-/*20150304 to 20180621
+/*20150304 to 20180711
1 z UP
1z UP
*/
MSG_ID_AD8 = 0xad8,
-/*20150304 to 20180621
+/*20150304 to 20180711
1 z Down
1z Down
*/
MSG_ID_AD9 = 0xad9,
-/*20150304 to 20180621
+/*20150304 to 20180711
Max
*/
MSG_ID_ADA = 0xada,
-/*20150304 to 20180621
+/*20150304 to 20180711
ìž…ë ¥ê°’ì´ ì—†ìŠµë‹ˆë‹¤
There is no Input value
*/
MSG_ID_ADB = 0xadb,
-/*20150304 to 20180621
+/*20150304 to 20180711
보유 Zeny 부족
Not enough zeny
*/
MSG_ID_ADC = 0xadc,
-/*20150304 to 20180621
+/*20150304 to 20180711
입력값 필요
Input Required
*/
MSG_ID_ADD = 0xadd,
-/*20150304 to 20180621
+/*20150304 to 20180711
ë¬¸ìž ìž…ë ¥ 불가
Numbers only
*/
MSG_ID_ADE = 0xade,
-/*20150304 to 20180621
+/*20150304 to 20180711
최대 입력 초과
Exceeded max input
*/
MSG_ID_ADF = 0xadf,
-/*20150304 to 20180621
+/*20150304 to 20180711
최소 입력 미만
Below Minimum Input
*/
MSG_ID_AE0 = 0xae0,
-/*20150304 to 20180621
+/*20150304 to 20180711
보유 Zeny 부족
Not enough zeny
*/
MSG_ID_AE1 = 0xae1,
-/*20150304 to 20180621
+/*20150304 to 20180711
ì€í–‰ 잔고 부족
Insufficient funds
*/
MSG_ID_AE2 = 0xae2,
-/*20150304 to 20180621
+/*20150304 to 20180711
최대 보유 Zeny 초과
Exceeded max zeny
*/
MSG_ID_AE3 = 0xae3,
#endif
#if PACKETVER >= 20150311
-/*20150311 to 20180621
+/*20150311 to 20180711
드롭 X
Drop X
*/
MSG_ID_AE4 = 0xae4,
-/*20150311 to 20180621
+/*20150311 to 20180711
창고 X
Storage X
*/
MSG_ID_AE5 = 0xae5,
-/*20150311 to 20180621
+/*20150311 to 20180711
카트 X
Cart X
*/
MSG_ID_AE6 = 0xae6,
-/*20150311 to 20180621
+/*20150311 to 20180711
ë©”ì¼ X
Mail X
*/
MSG_ID_AE7 = 0xae7,
-/*20150311 to 20180621
+/*20150311 to 20180711
êµí™˜ì°½ X
Trade X
*/
MSG_ID_AE8 = 0xae8,
-/*20150311 to 20180621
+/*20150311 to 20180711
경매장 X
Auction X
*/
MSG_ID_AE9 = 0xae9,
-/*20150311 to 20180621
+/*20150311 to 20180711
길드창고 X
Guild Storage X
*/
MSG_ID_AEA = 0xaea,
-/*20150311 to 20180621
+/*20150311 to 20180711
NPCì—게 íŒë§¤ X
Sell to NPC X
*/
MSG_ID_AEB = 0xaeb,
-/*20150311 to 20180621
+/*20150311 to 20180711
ì´ë™ì œí•œì´ 있는 ì•„ì´í…œìž…니다.
Item moves restriction.
*/
MSG_ID_AEC = 0xaec,
#endif
#if PACKETVER >= 20150401
-/*20150401 to 20180621
+/*20150401 to 20180711
ìºë¦­í„°ë¥¼ ìƒì„±í•´ì£¼ì„¸ìš”!
Please Create a Character!
*/
MSG_ID_AED = 0xaed,
#endif
#if PACKETVER >= 20150415
-/*20150415 to 20180621
+/*20150415 to 20180711
ìž¥ì°©ëœ íˆ¬ì‚¬ì²´ ì•„ì´í…œì„ 해제해야 합니다.
You need to disarm the equipped projectiles.
*/
MSG_ID_AEE = 0xaee,
#endif
#if PACKETVER >= 20150513
-/*20150513 to 20180621
+/*20150513 to 20180711
ì¸ì› 초과로 메모리얼 ë˜ì „ì— ìž…ìž¥ í•  수 없습니다
You cannot enter Memorial Dungeon with excess members
*/
MSG_ID_AEF = 0xaef,
-/*20150513 to 20180621
+/*20150513 to 20180711
ì¸ì›ìˆ˜ 초과로 ì¸í•´ 메모리얼 ë˜ì „ ìž…ìž¥ì´ ê±°ë¶€ë˜ì—ˆìŠµë‹ˆë‹¤
Memorial Dungeon Access was denied due to exceeding number of players
*/
MSG_ID_AF0 = 0xaf0,
#endif
#if PACKETVER >= 20150603
-/*20150603 to 20180621
+/*20150603 to 20180711
%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
*/
MSG_ID_AF1 = 0xaf1,
-/*20150603 to 20180621
+/*20150603 to 20180711
%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
*/
MSG_ID_AF2 = 0xaf2,
-/*20150603 to 20180621
+/*20150603 to 20180711
ì¤‘ë³µëœ ì•„ì´í…œì´ 존재하여 ì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥ 합니다.
Consuming Item denied due to multiple same item.
*/
MSG_ID_AF3 = 0xaf3,
-/*20150603 to 20180621
+/*20150603 to 20180711
ì¤‘ë³µëœ íš¨ê³¼ê°€ 존재하여 ì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥ 합니다.
Consuming Item denied due to effect of same consumed item.
*/
MSG_ID_AF4 = 0xaf4,
#endif
#if PACKETVER >= 20150701
-/*20150701 to 20180621
+/*20150701 to 20180711
화면 í”들림 효과 ON
Flicker Effect ON
*/
MSG_ID_AF5 = 0xaf5,
-/*20150701 to 20180621
+/*20150701 to 20180711
화면 í”들림 효과 OFF
Flicker Effect OFF
*/
MSG_ID_AF6 = 0xaf6,
#endif
#if PACKETVER >= 20150708
-/*20150708 to 20180621
+/*20150708 to 20180711
불법 프로그램 발견ë˜ì—ˆìŠµë‹ˆë‹¤
Illegal Programs has been detected
*/
MSG_ID_AF7 = 0xaf7,
#endif
#if PACKETVER >= 20150722
-/*20150722 to 20180621
+/*20150722 to 20180711
ë©”ì¼ ë³´ë‚´ê¸°
Send Mail
*/
MSG_ID_AF8 = 0xaf8,
#endif
#if PACKETVER >= 20150729
-/*20150729 to 20180621
+/*20150729 to 20180711
E X P : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
E X P: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
*/
MSG_ID_AF9 = 0xaf9,
-/*20150729 to 20180621
+/*20150729 to 20180711
DROP : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
DROP : %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
*/
MSG_ID_AFA = 0xafa,
-/*20150729 to 20180621
+/*20150729 to 20180711
DEATH : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
DEATH: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
*/
MSG_ID_AFB = 0xafb,
#endif
#if PACKETVER >= 20150826
-/*20150826 to 20180621
+/*20150826 to 20180711
해당 태그는 ì´ë¦„으로 사용하실 수 없습니다.
Name with this tag cannot be used.
*/
MSG_ID_AFC = 0xafc,
#endif
#if PACKETVER >= 20150916
-/*20150916 to 20180621
+/*20150916 to 20180711
???? bdbac5b8c0cfb8b52098de
Style Shop
*/
@@ -17058,14 +17058,14 @@ Style Shop
#if PACKETVER >= 20151028
/*20151028 to 20151125
ì¿ í° ì—†ìŒ, ìƒì ì—ì„œ 구매해야해요.
-20151202 to 20180621
+20151202 to 20180711
ì¿ í° ì—†ìŒ. Cash Shopì—ì„œ ì•„ì´í…œì„ 구매해 주세요.
No serial number, Please visit the store to buy.
*/
MSG_ID_AFE = 0xafe,
/*20151028 to 20151125
ì•„ì´í…œì°½ì˜ ì¿ í° ìƒìžë¥¼ 열어주세요
-20151202 to 20180621
+20151202 to 20180711
ì¸ë²¤í† ë¦¬ì—ì„œ ì•„ì´í…œ ì¿ í° ìƒìžë¥¼ 열어주세요.
Please turn on Serial item number window box.
*/
@@ -17073,21 +17073,21 @@ Please turn on Serial item number window box.
/*20151028 to 20151125
ì€í–‰
Bank
-20151202 to 20180621
+20151202 to 20180711
해당 ìŠ¤íƒ€ì¼ ì •ë³´ë¥¼ 삭제하시겠습니까?
Bank
*/
MSG_ID_B00 = 0xb00,
/*20151028 to 20151125
ìŠ¬ë¡¯ì´ ê½‰ 찼습니다. ìºë¦­í„°ë¥¼ ì‚­ì œ 후 사용해 주시기 ë°”ëžë‹ˆë‹¤
-20151202 to 20180621
+20151202 to 20180711
ìŠ¬ë¡¯ì´ ê½‰ 찼습니다. ë‚´ 스타ì¼ì—ì„œ ìºë¦­í„° ì‚­ì œ 후 사용해 주십시오.
Slot is full, please delete a character.
*/
MSG_ID_B01 = 0xb01,
/*20151028 to 20151125
사용하신 ì•„ì´í…œì€ ë˜ëŒë¦´ 수 없습니다. ì ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
-20151202 to 20180621
+20151202 to 20180711
ë¹„ìš©ì„ ì§€ë¶ˆí•˜ê³  현재 스타ì¼ì„ ì ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
(※ ë¹„ìš©ì€ ë°˜í™˜ë˜ì§€ 않습니다.)
Item cannot be restored, are you sure want to apply it?
@@ -17097,68 +17097,68 @@ Item cannot be restored, are you sure want to apply it?
#if PACKETVER >= 20151104
/*20151104 to 20151125
관심 스타ì¼ë¡œ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤
-20151202 to 20180621
+20151202 to 20180711
현재 스타ì¼ì„ 저장하였습니다.
Registered as the following style.
*/
MSG_ID_B03 = 0xb03,
/*20151104 to 20151125
ì€í–‰ì— 충분한 제니가 있습니다. 먼저 ì€í–‰ìœ¼ë¡œ 가세요.
-20151202 to 20180621
+20151202 to 20180711
보유 Zeny 부족. ì€í–‰ì— 충분한 Zenyê°€ 있습니다.
There are plenty of golds in the bank, Please go to the bank now.
*/
MSG_ID_B04 = 0xb04,
#endif
#if PACKETVER >= 20151118
-/*20151118 to 20180621
+/*20151118 to 20180711
으로 ì´ë™í•©ë‹ˆë‹¤.
moving...
*/
MSG_ID_B05 = 0xb05,
-/*20151118 to 20180621
+/*20151118 to 20180711
해당 êµ­ê°€ì˜ ì˜ê³µí†µê³¼ì— 대한 허가가 나지 않았습니다.
You are not allowed to fly over the sovereign airspace of the country.
*/
MSG_ID_B06 = 0xb06,
-/*20151118 to 20180621
+/*20151118 to 20180711
마나로 ëŒ€ê¸°ë¶ˆì•ˆì •ì´ ê³„ì†ë˜ì–´ 비공정 ìš´í–‰ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Airship flight is temporarily unavailable due to atmospheric instability caused by magic.
*/
MSG_ID_B07 = 0xb07,
-/*20151118 to 20180621
+/*20151118 to 20180711
ê°œì¸ ë¹„ê³µì •
Private airship
*/
MSG_ID_B08 = 0xb08,
-/*20151118 to 20180621
+/*20151118 to 20180711
ìž ì‹œ 후 다시 ì‹œë„해주세요.
Please try again in a moment.
*/
MSG_ID_B09 = 0xb09,
-/*20151118 to 20180621
+/*20151118 to 20180711
ê°œì¸ ë¹„ê³µì • ì´ìš©ì— 필요한 제니가 부족합니다.
Not enough Zeny to use the private airship.
*/
MSG_ID_B0A = 0xb0a,
/*20151118 to 20170920
ê°œì¸ ë¹„ê³µì • ì´ìš©ì— 필요한 í†µì¡°ë¦¼ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
-20170927 to 20180621
+20170927 to 20180711
ê°œì¸ ë¹„ê³µì • ì´ìš©ì— 필요한 ì•„ì´í…œì´ 부족합니다.
Not enough Cans to use the private airship.
*/
MSG_ID_B0B = 0xb0b,
-/*20151118 to 20180621
+/*20151118 to 20180711
ê°œì¸ ë¹„ê³µì •ì„ ì´ìš©í•  수 있는 ë ˆë²¨ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot meet the level to use the private airship.
*/
MSG_ID_B0C = 0xb0c,
-/*20151118 to 20180621
+/*20151118 to 20180711
ì„ íƒí•œ 지ì ìœ¼ë¡  ê°œì¸ë¹„ê³µì •ì´ ì´ë™í•  수 없습니다.
You cannot move to the selected point by the private airship.
*/
MSG_ID_B0D = 0xb0d,
-/*20151118 to 20180621
+/*20151118 to 20180711
현 지ì ì—ì„  ê°œì¸ë¹„ê³µì •ì„ ì´ìš©í•  수 없습니다.
You cannot use the private airship where you are now.
*/
@@ -17168,33 +17168,33 @@ You cannot use the private airship where you are now.
/*20151125 to 20151125
악세사리
Accessory
-20151202 to 20180621
+20151202 to 20180711
액세서리
Accessory
*/
MSG_ID_B0F = 0xb0f,
-/*20151125 to 20180621
+/*20151125 to 20180711
세컨드코스튬
Second costume
*/
MSG_ID_B10 = 0xb10,
/*20151125 to 20151125
ì¦ê²¨ì°¾ê¸°
-20151202 to 20180621
+20151202 to 20180711
ë‚´ 스타ì¼
Wardrobe
*/
MSG_ID_B11 = 0xb11,
/*20151125 to 20151125
ì—¼ìƒ‰ì„ í•  수 없는 머리스타ì¼ìž…니다.
-20151202 to 20180621
+20151202 to 20180711
염색할 수 없는 헤어스타ì¼ìž…니다.
This hairstyle cannot be dyed.
*/
MSG_ID_B12 = 0xb12,
/*20151125 to 20151125
화살표를 눌러 마ìŒì— 드는 스타ì¼ì„ ì„ íƒí•  수 있어요.
-20151202 to 20180621
+20151202 to 20180711
화살표를 눌러 마ìŒì— 드는 스타ì¼ì„ ì„ íƒí•´ 보세요.
Press an arrow to choose the style you want.
*/
@@ -17204,7 +17204,7 @@ Press an arrow to choose the style you want.
/*20151202 to 20151202
ìŠ¤íƒ€ì¼ ìƒˆë¡œìš´ 스타ì¼ì„ 확ì¸í•´ 보세요.
(※ 액세서리 구매 ì‹œ RODEXë¡œ 발송ë©ë‹ˆë‹¤.)
-20151209 to 20180621
+20151209 to 20180711
새로운 스타ì¼ì„ 확ì¸í•´ 보세요.
(※ 액세서리 구매 ì‹œ RODEXë¡œ 발송ë©ë‹ˆë‹¤.)
Come and see the new styles.
@@ -17213,50 +17213,50 @@ Come and see the new styles.
MSG_ID_B14 = 0xb14,
#endif
#if PACKETVER >= 20151223
-/*20151223 to 20180621
+/*20151223 to 20180711
기본 스타ì¼
Basic style
*/
MSG_ID_B15 = 0xb15,
#endif
#if PACKETVER >= 20160106
-/*20160106 to 20180621
+/*20160106 to 20180711
해당 ìŠ¤í‚¬ì€ BaseLv %d ì´ìƒë¶€í„° 스킬 í¬ì¸íŠ¸ 투ìžê°€ 가능합니다.
You can level up the skill from the base Lv. %d.
*/
MSG_ID_B16 = 0xb16,
#endif
#if PACKETVER >= 20160113
-/*20160113 to 20180621
+/*20160113 to 20180711
해당 특수기호는 ì´ë¦„ì— ì‚¬ìš©í•˜ì‹¤ 수 없습니다.
Special symbol can't be used in name
*/
MSG_ID_B17 = 0xb17,
-/*20160113 to 20180621
+/*20160113 to 20180711
MHPê°€ 너무 낮아, 해당 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다
MaxHP is to low to use this skill
*/
MSG_ID_B18 = 0xb18,
-/*20160113 to 20180621
+/*20160113 to 20180711
MSPê°€ 너무 낮아, 해당 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다
MaxSP is to low to use this skill
*/
MSG_ID_B19 = 0xb19,
#endif
#if PACKETVER >= 20160203
-/*20160203 to 20180621
+/*20160203 to 20180711
ì•„ì´í…œ 비êµí•˜ê¸°
Compare items
*/
MSG_ID_B1A = 0xb1a,
-/*20160203 to 20180621
+/*20160203 to 20180711
ì•„ì´í…œ 버리기 잠금
Drop lock
*/
MSG_ID_B1B = 0xb1b,
#endif
#if PACKETVER >= 20160224
-/*20160224 to 20180621
+/*20160224 to 20180711
스í¬ë¦°ìƒ· 파ì¼ì´ 첨부 ë˜ì§€ 않았습니다.
Screenshots are not attached
*/
@@ -17265,465 +17265,465 @@ Screenshots are not attached
SNS통신
20160518 to 20160817
TWITTER
-20160824 to 20180621
+20160824 to 20180711
Twitter
TWITTER
*/
MSG_ID_B1D = 0xb1d,
-/*20160224 to 20180621
+/*20160224 to 20180711
ì¼ë°˜
General
*/
MSG_ID_B1E = 0xb1e,
-/*20160224 to 20180621
+/*20160224 to 20180711
공지
Notice
*/
MSG_ID_B1F = 0xb1f,
-/*20160224 to 20180621
+/*20160224 to 20180711
반송
Clear
*/
MSG_ID_B20 = 0xb20,
-/*20160224 to 20180621
+/*20160224 to 20180711
새로고침
Refresh
*/
MSG_ID_B21 = 0xb21,
-/*20160224 to 20180621
+/*20160224 to 20180711
%d분
%d minute
*/
MSG_ID_B22 = 0xb22,
-/*20160224 to 20180621
+/*20160224 to 20180711
%d시간
%d hour
*/
MSG_ID_B23 = 0xb23,
-/*20160224 to 20180621
+/*20160224 to 20180711
%dì¼
%d day
*/
MSG_ID_B24 = 0xb24,
-/*20160224 to 20180621
+/*20160224 to 20180711
반송ë¨
Returned
*/
MSG_ID_B25 = 0xb25,
-/*20160224 to 20180621
+/*20160224 to 20180711
ì„ íƒí•œ ë©”ì¼ì„ 삭제하시겠습니까?
Do you want to delete the message?
*/
MSG_ID_B26 = 0xb26,
#endif
#if PACKETVER >= 20160302
-/*20160302 to 20180621
+/*20160302 to 20180711
위치표시
Show information
*/
MSG_ID_B27 = 0xb27,
-/*20160302 to 20180621
+/*20160302 to 20180711
확대
Zoom In
*/
MSG_ID_B28 = 0xb28,
-/*20160302 to 20180621
+/*20160302 to 20180711
축소
Zoom Out
*/
MSG_ID_B29 = 0xb29,
-/*20160302 to 20180621
+/*20160302 to 20180711
맵보기
Maximize
*/
MSG_ID_B2A = 0xb2a,
-/*20160302 to 20180621
+/*20160302 to 20180711
월드보기
Show world map
*/
MSG_ID_B2B = 0xb2b,
-/*20160302 to 20180621
+/*20160302 to 20180711
ì•„ì´í…œ 소지 종류수
Total possession item type
*/
MSG_ID_B2C = 0xb2c,
#endif
#if PACKETVER >= 20160309
-/*20160309 to 20180621
+/*20160309 to 20180711
/minimap
*/
MSG_ID_B2D = 0xb2d,
-/*20160309 to 20180621
+/*20160309 to 20180711
미니맵 ë²„íŠ¼ì„ í‘œì‹œí•©ë‹ˆë‹¤
Show minimap buttons
*/
MSG_ID_B2E = 0xb2e,
-/*20160309 to 20180621
+/*20160309 to 20180711
미니맵 ë²„íŠ¼ì„ í‘œì‹œí•˜ì§€ 않습니다
Hide minimap buttons
*/
MSG_ID_B2F = 0xb2f,
-/*20160309 to 20180621
+/*20160309 to 20180711
길드 ì ‘ì†ìž ì •ë ¬
Show guild member login status
*/
MSG_ID_B30 = 0xb30,
#endif
#if PACKETVER >= 20160323
-/*20160323 to 20180621
+/*20160323 to 20180711
ì¹œë°€ë„ : %s
Intimacy: %s
*/
MSG_ID_B31 = 0xb31,
-/*20160323 to 20180621
+/*20160323 to 20180711
í™•ì¸ ì „
Confirmation
*/
MSG_ID_B32 = 0xb32,
#endif
#if PACKETVER >= 20160330
-/*20160330 to 20180621
+/*20160330 to 20180711
파티 ì´ë¦„
Team name
*/
MSG_ID_B33 = 0xb33,
-/*20160330 to 20180621
+/*20160330 to 20180711
파티장
Leader
*/
MSG_ID_B34 = 0xb34,
-/*20160330 to 20180621
+/*20160330 to 20180711
제한 시간 초과. í´ë¼ì´ì–¸íŠ¸ë¥¼ 종료합니다.
Time limit exceeded. Closing the client
*/
MSG_ID_B35 = 0xb35,
-/*20160330 to 20180621
+/*20160330 to 20180711
ìž˜ëª»ëœ ìž…ë ¥ìž…ë‹ˆë‹¤. í´ë¼ì´ì–¸íŠ¸ë¥¼ 종료합니다.
Input error. Closing the client
*/
MSG_ID_B36 = 0xb36,
-/*20160330 to 20180621
+/*20160330 to 20180711
정답 입니다. ë³´ìƒìœ¼ë¡œ ì†Œì •ì˜ ë²„í”„ê°€ 주어집니다.
Incorrect input. A small buff has given to you
*/
MSG_ID_B37 = 0xb37,
-/*20160330 to 20180621
+/*20160330 to 20180711
ì˜ë¬¸ 4ìž, 한글 2ìž ì´ìƒìœ¼ë¡œ 입력해야 합니다.
Enter 4 english words and 2 chinese words
*/
MSG_ID_B38 = 0xb38,
-/*20160330 to 20180621
+/*20160330 to 20180711
입력한 ë‹µì´ [%s]ê°€ 맞습니까?
Your entered answer is [%s]. Is it right?
*/
MSG_ID_B39 = 0xb39,
-/*20160330 to 20180621
+/*20160330 to 20180711
ì„ íƒëœ ì´ë¯¸ì§€ê°€ 없습니다.
Icon is unchecked
*/
MSG_ID_B3A = 0xb3a,
-/*20160330 to 20180621
+/*20160330 to 20180711
ìž˜ëª»ëœ ìž…ë ¥ìž…ë‹ˆë‹¤. (ë‚¨ì€ ê¸°íšŒ %d번)
Incorrect input (Remaining chance: %d)
*/
MSG_ID_B3B = 0xb3b,
-/*20160330 to 20180621
+/*20160330 to 20180711
ì´ %dëª…ì˜ ìœ ì €ë¥¼ 신고하시겠습니까?
Do you want to announce %d to player?
*/
MSG_ID_B3C = 0xb3c,
-/*20160330 to 20180621
+/*20160330 to 20180711
유저ì—게 메시지를 보냈습니다.
Message has been sent to player
*/
MSG_ID_B3D = 0xb3d,
-/*20160330 to 20180621
+/*20160330 to 20180711
불법 프로그램 단ì†ì— 필요한 ë°ì´í„°ê°€ ë¯¸ë“±ë¡ ìƒíƒœìž…니다.
Needed Data for Query illegal software are not signed.
*/
MSG_ID_B3E = 0xb3e,
-/*20160330 to 20180621
+/*20160330 to 20180711
ì´ë¯¸ 매í¬ë¡œ ê°ì‹œì¤‘ì¸ ìœ ì €ìž…ë‹ˆë‹¤.
The player is being monitored.
*/
MSG_ID_B3F = 0xb3f,
-/*20160330 to 20180621
+/*20160330 to 20180711
매í¬ë¡œê°€ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤..
Already signed in investigation system.
*/
MSG_ID_B40 = 0xb40,
-/*20160330 to 20180621
+/*20160330 to 20180711
ì´ë¯¸ì§€ 등ë¡ì— 실패하였습니다.
Failed to store icon.
*/
MSG_ID_B41 = 0xb41,
-/*20160330 to 20180621
+/*20160330 to 20180711
정답 등ë¡ì— 실패하였습니다.
Failed to store replied answer.
*/
MSG_ID_B42 = 0xb42,
-/*20160330 to 20180621
+/*20160330 to 20180711
안녕하세요. 불법프로그램 단ì†ì¤‘입니다.
Hello, illegal software is being monitored.
*/
MSG_ID_B43 = 0xb43,
-/*20160330 to 20180621
+/*20160330 to 20180711
ì§€ì •ëœ ì‹œê°„ë‚´ì— ì•„ëž˜ì˜ ë¬¸ìžë¥¼ 입력해주세요.
Please enter the text below within the specified time.
*/
MSG_ID_B44 = 0xb44,
-/*20160330 to 20180621
+/*20160330 to 20180711
3회 오류시 ìš´ì˜ì •ì±…ì— ì˜ê±°í•˜ì—¬ ì˜êµ¬ë¸”ë¡ë©ë‹ˆë‹¤.
According to game regulation, when you enter the wrong text three times, you will get banned.
*/
MSG_ID_B45 = 0xb45,
-/*20160330 to 20180621
+/*20160330 to 20180711
ë‚¨ì€ íšŸìˆ˜ : %d
Remaining chance : %d
*/
MSG_ID_B46 = 0xb46,
-/*20160330 to 20180621
+/*20160330 to 20180711
ìºë¦­í„°
Role
*/
MSG_ID_B47 = 0xb47,
-/*20160330 to 20180621
+/*20160330 to 20180711
범위
Range
*/
MSG_ID_B48 = 0xb48,
-/*20160330 to 20180621
+/*20160330 to 20180711
ìºë¦­í„° ì„ íƒì€ 좌í´ë¦­ìœ¼ë¡œ 합니다.
You use the left mouse button to specify the role
*/
MSG_ID_B49 = 0xb49,
-/*20160330 to 20180621
+/*20160330 to 20180711
범위 ì„ íƒì€ ìš°í´ë¦­ìœ¼ë¡œ 합니다.
You use the left mouse button to specify the range
*/
MSG_ID_B4A = 0xb4a,
-/*20160330 to 20180621
+/*20160330 to 20180711
범위 í¬ê¸°ë¥¼ 지정하기 위해서는 엔터를 입력해주세요
Not a valid range, please press Enter
*/
MSG_ID_B4B = 0xb4b,
-/*20160330 to 20180621
+/*20160330 to 20180711
E X P : %.1f%% ( basic %.1f%% %s %.1f%%)
*/
MSG_ID_B4C = 0xb4c,
-/*20160330 to 20180621
+/*20160330 to 20180711
DROP : %.1f%% ( basic %.1f%% %s %.1f%%)
*/
MSG_ID_B4D = 0xb4d,
-/*20160330 to 20180621
+/*20160330 to 20180711
DEATH : %.1f%% ( basic %.1f%% %s %.1f%%)
*/
MSG_ID_B4E = 0xb4e,
/*20160330 to 20160330
ë³€ê²½ëœ ìºë¦­ëª… %s ë¡œ 전송했습니다. í™•ì¸ ë°”ëžë‹ˆë‹¤
-20160406 to 20180621
+20160406 to 20180711
ë³€ê²½ëœ ìºë¦­ëª…으로 발송했습니다. ë³€ê²½ëœ ìºë¦­ëª… : %s
The role name will be sent: %s
*/
MSG_ID_B4F = 0xb4f,
#endif
#if PACKETVER >= 20160427
-/*20160427 to 20180621
+/*20160427 to 20180711
í•©ì„±ì— í•„ìš”í•œ 재료
Synthesis of the required materials
*/
MSG_ID_B50 = 0xb50,
-/*20160427 to 20180621
+/*20160427 to 20180711
조합 재료가 부족해서 조합할 수 없습니다.
Insufficient synthesis materials
*/
MSG_ID_B51 = 0xb51,
#endif
#if PACKETVER >= 20160504
-/*20160504 to 20180621
+/*20160504 to 20180711
해당 재료는 %d개가 필요합니다.
Required material %d ea.
*/
MSG_ID_B52 = 0xb52,
-/*20160504 to 20180621
+/*20160504 to 20180711
제련ë„ê°€ 낮아서 ì¡°í•©í•  수 없습니다.
Refine value is to low for synthesis
*/
MSG_ID_B53 = 0xb53,
-/*20160504 to 20180621
+/*20160504 to 20180711
ëª¨í—˜ê°€ì¤‘ê°œì†Œì— ë“±ë¡ í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you want to sign in to the adventurers?
*/
MSG_ID_B54 = 0xb54,
#endif
#if PACKETVER >= 20160511
-/*20160511 to 20180621
+/*20160511 to 20180711
ìžìœ ë¡­ê²Œ 코멘트를 남겨보세요.
Please leave a message
*/
MSG_ID_B55 = 0xb55,
#endif
#if PACKETVER >= 20160518
-/*20160518 to 20180621
+/*20160518 to 20180711
ê·¸ë¦¼ì— ë³´ì´ëŠ” 문ìžë¥¼ 입력해주세요.
Please enter the text on the graph
*/
MSG_ID_B56 = 0xb56,
-/*20160518 to 20180621
+/*20160518 to 20180711
%d초 남았습니다
%d second left
*/
MSG_ID_B57 = 0xb57,
-/*20160518 to 20180621
+/*20160518 to 20180711
OTP ì¸ì¦ë²ˆí˜¸ 6ìžë¦¬ë¥¼ 입력해 주세요
Please enter your 6 identification number.
*/
MSG_ID_B58 = 0xb58,
-/*20160518 to 20180621
+/*20160518 to 20180711
ì¸ì¦ë²ˆí˜¸
Identification number.
*/
MSG_ID_B59 = 0xb59,
-/*20160518 to 20180621
+/*20160518 to 20180711
6ìžë¦¬ì˜ 숫ìžê°€ 아닙니다. 다시 확ì¸í•´ 주세요
It's not a 6 identification number. Please try again
*/
MSG_ID_B5A = 0xb5a,
#endif
#if PACKETVER >= 20160601
-/*20160601 to 20180621
+/*20160601 to 20180711
ì´ë¯¸ ì‚­ì œëœ ë©”ì¼ìž…니다.
The message has been deleted
*/
MSG_ID_B5B = 0xb5b,
#endif
#if PACKETVER >= 20160615
-/*20160615 to 20180621
+/*20160615 to 20180711
ê°œì¸ ë¹„ê³µì •ìœ¼ë¡œ ì´ë™í•  ì§€ì—­ì„ ì„ íƒí•´ì£¼ì„¸ìš”.
Please select the area where the private airship will move
*/
MSG_ID_B5C = 0xb5c,
-/*20160615 to 20180621
+/*20160615 to 20180711
E X P : %d%% ( basic 100.0%% %s %d%%)
*/
MSG_ID_B5D = 0xb5d,
-/*20160615 to 20180621
+/*20160615 to 20180711
DROP : %d%% ( basic 100.0%% %s %d%%)
*/
MSG_ID_B5E = 0xb5e,
-/*20160615 to 20180621
+/*20160615 to 20180711
DEATH : %d%% ( basic 100.0%% %s %d%%)
*/
MSG_ID_B5F = 0xb5f,
-/*20160615 to 20180621
+/*20160615 to 20180711
목ì ì§€ë¡œ ì´ë™ì¤‘입니다.
Move to the destination
*/
MSG_ID_B60 = 0xb60,
#endif
#if PACKETVER >= 20160629
-/*20160629 to 20180621
+/*20160629 to 20180711
[%s] 파ì¼ì´ 존재하지 ì•Šì•„ default AI ë¡œ ë™ìž‘합니다
The [%s] is not present, the default AI will be used instead.
*/
MSG_ID_B61 = 0xb61,
/*20160629 to 20160630
%.1f%% ( Premium %.1f%% + %s %.1f%%)
-20160706 to 20180621
+20160706 to 20180711
%.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
%.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
*/
MSG_ID_B62 = 0xb62,
#endif
#if PACKETVER >= 20160706
-/*20160706 to 20180621
+/*20160706 to 20180711
ì´ ìžë¦¬ì— ë…¸ì ì„ 세우시겠습니까?
Would you like to open a shop at this location?
*/
MSG_ID_B63 = 0xb63,
#endif
#if PACKETVER >= 20160713
-/*20160713 to 20180621
+/*20160713 to 20180711
ë„ëžŒì¡±ì€ í•´ë‹¹ ì˜ìƒì„ ìž…ì„ ìˆ˜ 없습니다.
Doram race can't wear this clothes
*/
MSG_ID_B64 = 0xb64,
/*20160713 to 20160727
구입한 ë¬¼ê±´ì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤.
-20160803 to 20180621
+20160803 to 20180711
íŒë§¤ ë…¸ì ì—ì„œ 거래한 ì•„ì´í…œì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤.
Props open-air store sales will be traded in RODEX
*/
MSG_ID_B65 = 0xb65,
-/*20160713 to 20180621
+/*20160713 to 20180711
30,000 z
*/
MSG_ID_B66 = 0xb66,
-/*20160713 to 20180621
+/*20160713 to 20180711
ë§ëž‘ë„ íŠ¹ì‚° 통조림 100ê°œ
Malangdo Special Can 100 pc
*/
MSG_ID_B67 = 0xb67,
#endif
#if PACKETVER >= 20160720
-/*20160720 to 20180621
+/*20160720 to 20180711
무게가 80%를 초과하여 진행할 수 없습니다.
Cannot carry anymore because weight limit over 80%
*/
MSG_ID_B68 = 0xb68,
-/*20160720 to 20180621
+/*20160720 to 20180711
íŒë§¤ë˜ì§€ 못한 ìƒí’ˆì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤.
Unsold items are sent to RODEX
*/
MSG_ID_B69 = 0xb69,
#endif
#if PACKETVER >= 20160727
-/*20160727 to 20180621
+/*20160727 to 20180711
장착 모습
Preview
*/
MSG_ID_B6A = 0xb6a,
-/*20160727 to 20180621
+/*20160727 to 20180711
길드마스터 위임
Assign Guild Leader
*/
MSG_ID_B6B = 0xb6b,
-/*20160727 to 20180621
+/*20160727 to 20180711
ì •ë§ë¡œ %s님께 길드마스터를 위임하시겠습니까? 위임 후 ë‹¹ì‹ ì˜ ì§€ìœ„ëŠ” %s님과 지위가 바뀌게 ë©ë‹ˆë‹¤.
Are sure want to assign %s as guild leader? After assigned your position will become %s
*/
MSG_ID_B6C = 0xb6c,
-/*20160727 to 20180621
+/*20160727 to 20180711
철회
Cancel
*/
MSG_ID_B6D = 0xb6d,
-/*20160727 to 20180621
+/*20160727 to 20180711
ë…¸ì ì„ 철수하시겠습니까?
Do you want to close the shop?
*/
MSG_ID_B6E = 0xb6e,
-/*20160727 to 20180621
+/*20160727 to 20180711
%02dì¼ %02d시간 %02d분 %02dì´ˆ
%02d day %02d hour %02d minute %02d second
*/
MSG_ID_B6F = 0xb6f,
-/*20160727 to 20180621
+/*20160727 to 20180711
ì ‘ì†ë¶ˆê°€
Unable to sign in
*/
MSG_ID_B70 = 0xb70,
-/*20160727 to 20180621
+/*20160727 to 20180711
ì ‘ì†ê°€ëŠ¥ì¸ì›ì„ 초과하여 ì ‘ì†ì´ 불가능 합니다.
Unable to sign in because the maximum number of sign-in is exceeded
*/
MSG_ID_B71 = 0xb71,
-/*20160727 to 20180621
+/*20160727 to 20180711
ë…¸ì ì„ 설치할 위치를 ì„ íƒí•´ì£¼ì„¸ìš”.
Please select a location for your shop
*/
MSG_ID_B72 = 0xb72,
-/*20160727 to 20180621
+/*20160727 to 20180711
펫 ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Pet name will be changed to ^0000ff^0000ff %s^000000^000000, do you want to continue?
*/
@@ -17732,154 +17732,154 @@ Pet name will be changed to ^0000ff^0000ff %s^000000^000000, do you want to cont
#if PACKETVER >= 20160803
/*20160803 to 20160803
íŒë§¤ ì¼ì‹œ :
-20160810 to 20180621
+20160810 to 20180711
거래 ì¼ì‹œ :
Trade date :
*/
MSG_ID_B74 = 0xb74,
/*20160803 to 20160803
íŒë§¤ ì•„ì´í…œ :
-20160810 to 20180621
+20160810 to 20180711
거래 ì•„ì´í…œ :
Trade item :
*/
MSG_ID_B75 = 0xb75,
/*20160803 to 20160803
íŒë§¤ 수량 :
-20160810 to 20180621
+20160810 to 20180711
거래 수량 :
Trade quantity :
*/
MSG_ID_B76 = 0xb76,
/*20160803 to 20160803
íŒë§¤ 단가 :
-20160810 to 20180621
+20160810 to 20180711
거래 단가 :
Trade price :
*/
MSG_ID_B77 = 0xb77,
/*20160803 to 20160803
íŒë§¤ 금액 :
-20160810 to 20180621
+20160810 to 20180711
거래 금액 :
Total trade :
*/
MSG_ID_B78 = 0xb78,
-/*20160803 to 20180621
+/*20160803 to 20180711
ë…¸ì  íŒë§¤ ì•„ì´í…œ
Open vending sales agent
*/
MSG_ID_B79 = 0xb79,
-/*20160803 to 20180621
+/*20160803 to 20180711
ë…¸ì  êµ¬ë§¤ ì•„ì´í…œ
Open vending purchase agent
*/
MSG_ID_B7A = 0xb7a,
-/*20160803 to 20180621
+/*20160803 to 20180711
íŒë§¤ ë…¸ì  ì•„ë¥´ë°”ì´íŠ¸ 종료
Close vending sales agent
*/
MSG_ID_B7B = 0xb7b,
-/*20160803 to 20180621
+/*20160803 to 20180711
구매 ë…¸ì  ì•„ë¥´ë°”ì´íŠ¸ 종료
Close vending purchase agent
*/
MSG_ID_B7C = 0xb7c,
-/*20160803 to 20180621
+/*20160803 to 20180711
ë‚¨ì€ ê¸ˆì•¡:
Balance:
*/
MSG_ID_B7D = 0xb7d,
-/*20160803 to 20180621
+/*20160803 to 20180711
ì•„ì´í…œ 리스트:
Item list:
*/
MSG_ID_B7E = 0xb7e,
-/*20160803 to 20180621
+/*20160803 to 20180711
ë…¸ì  ì•„ë¥´ë°”ì´íŠ¸ìƒ
Vending agent
*/
MSG_ID_B7F = 0xb7f,
-/*20160803 to 20180621
+/*20160803 to 20180711
반환 ì•„ì´í…œ:
Returned item:
*/
MSG_ID_B80 = 0xb80,
-/*20160803 to 20180621
+/*20160803 to 20180711
반환 수량:
Returned quantity:
*/
MSG_ID_B81 = 0xb81,
-/*20160803 to 20180621
+/*20160803 to 20180711
반환 ì¼ì‹œ:
Returned date:
*/
MSG_ID_B82 = 0xb82,
-/*20160803 to 20180621
+/*20160803 to 20180711
구매 ë…¸ì ì—ì„œ 거래한 ê¸ˆì•¡ì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤
Total trade will be sent to RODEX
*/
MSG_ID_B83 = 0xb83,
-/*20160803 to 20180621
+/*20160803 to 20180711
사용할 수 없는 ì´ë¦„입니다.
Name isn't available
*/
MSG_ID_B84 = 0xb84,
#endif
#if PACKETVER >= 20160817
-/*20160817 to 20180621
+/*20160817 to 20180711
ìƒí’ˆì´ ë„착했습니다.
Item has been delivered
*/
MSG_ID_B85 = 0xb85,
-/*20160817 to 20180621
+/*20160817 to 20180711
구입해주셔서 ê°ì‚¬í•©ë‹ˆë‹¤.
Thank you for purchasing
*/
MSG_ID_B86 = 0xb86,
#endif
#if PACKETVER >= 20160824
-/*20160824 to 20180621
+/*20160824 to 20180711
NPCì—게 ì•„ì´í…œì„ íŒë§¤í•˜ì§€ 않습니다.
Press again to unlock
*/
MSG_ID_B87 = 0xb87,
-/*20160824 to 20180621
+/*20160824 to 20180711
ì•„ì´í…œ íŒë§¤ 잠금
Lock from NPC selling
*/
MSG_ID_B88 = 0xb88,
-/*20160824 to 20180621
+/*20160824 to 20180711
근처ì—ì„œ 소환가능 위치를 ì°¾ì„수 없습니다.
There is no callable location nearby
*/
MSG_ID_B89 = 0xb89,
-/*20160824 to 20180621
+/*20160824 to 20180711
ì „ì²´ 화면 캡ì³
Capture full screens
*/
MSG_ID_B8A = 0xb8a,
-/*20160824 to 20180621
+/*20160824 to 20180711
부분 화면 캡ì³
Capture part of screen
*/
MSG_ID_B8B = 0xb8b,
-/*20160824 to 20180621
+/*20160824 to 20180711
보내기
Send
*/
MSG_ID_B8C = 0xb8c,
-/*20160824 to 20180621
+/*20160824 to 20180711
가족 분과 담당ìž
Family Affairs agent
*/
MSG_ID_B8D = 0xb8d,
-/*20160824 to 20180621
+/*20160824 to 20180711
가족 사항 ë³€ë™ ì•ˆë‚´
Acknowledgement of family member registrations.
*/
MSG_ID_B8E = 0xb8e,
-/*20160824 to 20180621
+/*20160824 to 20180711
안녕하십니까.
ê¸ˆì¼ "%s"님과 "%s"ë‹˜ì˜ ìžë…€ì¸ "%s"ë‹˜ì´ ë…립하여 ë‹¨ë… ì„¸ëŒ€ë¥¼ 구성하였습니다.
@@ -17902,12 +17902,12 @@ Thank you.
MSG_ID_B8F = 0xb8f,
#endif
#if PACKETVER >= 20160831
-/*20160831 to 20180621
+/*20160831 to 20180711
장착
Equip
*/
MSG_ID_B90 = 0xb90,
-/*20160831 to 20180621
+/*20160831 to 20180711
ì´ë¯¸ì§€ ì—†ìŒ
No image
*/
@@ -17916,367 +17916,367 @@ No image
#if PACKETVER >= 20160907
/*20160907 to 20160921
%sì€(는) 현재 í˜¸ì¶œì„ ì°¨ë‹¨í•œ ìƒíƒœìž…니다.
-20160928 to 20180621
+20160928 to 20180711
[%s]ì€(는) 현재 í˜¸ì¶œì„ ì°¨ë‹¨í•œ ìƒíƒœìž…니다.
[%s] is blocking Call Massage.
*/
MSG_ID_B92 = 0xb92,
#endif
#if PACKETVER >= 20160913
-/*20160913 to 20180621
+/*20160913 to 20180711
현재 ê³µì„±ì „ì´ ì§„í–‰ì¤‘ì´ë¯€ë¡œ, 길드마스터를 위임 í•  수 없습니다.
Currently in WoE hours, unable to delegate Guild leader
*/
MSG_ID_B93 = 0xb93,
-/*20160913 to 20180621
+/*20160913 to 20180711
현재 길드장 ìœ„ìž„ì„ ë°›ì€ì§€ 만 하루가 지나지 ì•Šì•„, ê¸¸ë“œìž¥ì„ ìœ„ìž„í•  수 없습니다.
You have to wait for one day before delegating a new Guild leader
*/
MSG_ID_B94 = 0xb94,
-/*20160913 to 20180621
+/*20160913 to 20180711
ì•„ì´ê°€ ë˜ë©´ ì „ìŠ¹ì„ í•  수 없고 ìŠ¤í…Ÿì˜ ì œí•œì´ ìžˆìœ¼ë©° HP와 SPê°€ 줄어듭니다.
ê·¸ëž˜ë„ ê´œì°®ìŠµë‹ˆê¹Œ?
When adopted, character will not able to transcend, maximum stats will be limited, MaxHP and MaxSP will be reduced.
Are you sure you want to continue?
*/
MSG_ID_B95 = 0xb95,
-/*20160913 to 20180621
+/*20160913 to 20180711
제련
Refining
*/
MSG_ID_B96 = 0xb96,
-/*20160913 to 20180621
+/*20160913 to 20180711
대장장ì´ì˜ ì¶•ë³µì„ ì‚¬ìš©ì¤‘ìž…ë‹ˆë‹¤.
Use Blacksmith's Blessing
*/
MSG_ID_B97 = 0xb97,
-/*20160913 to 20180621
+/*20160913 to 20180711
제니가 부족합니다.
Insufficient zeny
*/
MSG_ID_B98 = 0xb98,
-/*20160913 to 20180621
+/*20160913 to 20180711
대장장ì´ì˜ 축복 개수가 부족합니다.
Not enough Blacksmith's Blessing
*/
MSG_ID_B99 = 0xb99,
-/*20160913 to 20180621
+/*20160913 to 20180711
해당 장비는 ì œë ¨ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
This equipment can not be refined
*/
MSG_ID_B9A = 0xb9a,
/*20160913 to 20170621
제련 성공!
-20170628 to 20180621
+20170628 to 20180711
제련 성공
Upgrade success!
*/
MSG_ID_B9B = 0xb9b,
/*20160913 to 20170621
제련 실패!
-20170628 to 20180621
+20170628 to 20180711
제련 실패
Upgrade failed!
*/
MSG_ID_B9C = 0xb9c,
-/*20160913 to 20180621
+/*20160913 to 20180711
ëŒì•„가기
Back
*/
MSG_ID_B9D = 0xb9d,
-/*20160913 to 20180621
+/*20160913 to 20180711
성공
Success
*/
MSG_ID_B9E = 0xb9e,
-/*20160913 to 20180621
+/*20160913 to 20180711
ì›ëž˜ëŒ€ë¡œ
Return
*/
MSG_ID_B9F = 0xb9f,
#endif
#if PACKETVER >= 20160921
-/*20160921 to 20180621
+/*20160921 to 20180711
씨와ì˜
With Mr/Miss
*/
MSG_ID_BA0 = 0xba0,
-/*20160921 to 20180621
+/*20160921 to 20180711
호문í´ë£¨ìŠ¤ì˜ ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
The Homunculus's name will be changed to^0000ff^0000ff %s^000000^000000, Are you sure?
*/
MSG_ID_BA1 = 0xba1,
#endif
#if PACKETVER >= 20160928
-/*20160928 to 20180621
+/*20160928 to 20180711
í˜¸ì¶œì´ í—ˆìš©ëœ ìƒíƒœìž…니다. (호출 기능 ON)
Call function is ON
*/
MSG_ID_BA2 = 0xba2,
-/*20160928 to 20180621
+/*20160928 to 20180711
í˜¸ì¶œì´ ì°¨ë‹¨ëœ ìƒíƒœìž…니다. (호출 기능 OFF)
Call function is OFF
*/
MSG_ID_BA3 = 0xba3,
-/*20160928 to 20180621
+/*20160928 to 20180711
호출 메시지 표시
Display Call messages
*/
MSG_ID_BA4 = 0xba4,
-/*20160928 to 20180621
+/*20160928 to 20180711
해당 ìºë¦­í„°ê°€ 현재 ë…¸ì  ì•„ì´í…œì„ 사용 중ì´ë¯€ë¡œ 삭제할 수 없습니다.
This character is currently opening a shop and can't be deleted
*/
MSG_ID_BA5 = 0xba5,
-/*20160928 to 20180621
+/*20160928 to 20180711
ì´ë¯¸ ë™ì¼í•œ ë…¸ì  NPCê°€ 설치 중입니다.
The same vend shop NPC has been set up
*/
MSG_ID_BA6 = 0xba6,
-/*20160928 to 20180621
+/*20160928 to 20180711
ë…¸ì ì„ 설치할 수 없는 위치입니다.
Opening shop is not allowed on this location
*/
MSG_ID_BA7 = 0xba7,
-/*20160928 to 20180621
+/*20160928 to 20180711
다른 ìºë¦­í„°ê°€ 있는 위치ì—는 ë…¸ì ì„ 설치할 수 없습니다.
Opening shop is not allowed when there is other character
*/
MSG_ID_BA8 = 0xba8,
#endif
#if PACKETVER >= 20161005
-/*20161005 to 20180621
+/*20161005 to 20180711
펫 먹ì´ì£¼ê¸°ê°€ 실패했습니다. ë¡œë±ìŠ¤ ìž‘ì„±ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Failed to feed pet, please close RODEX window
*/
MSG_ID_BA9 = 0xba9,
-/*20161005 to 20180621
+/*20161005 to 20180711
장비 세트 설정
Set item setting
*/
MSG_ID_BAA = 0xbaa,
-/*20161005 to 20180621
+/*20161005 to 20180711
장착 하기
Equip
*/
MSG_ID_BAB = 0xbab,
#endif
#if PACKETVER >= 20161019
-/*20161019 to 20180621
+/*20161019 to 20180711
제련 실패시 장비가 사ë¼ì§‘니다.
Equipment will dissapear when refine fails
*/
MSG_ID_BAC = 0xbac,
-/*20161019 to 20180621
+/*20161019 to 20180711
제련 실패시 ìž¥ë¹„ì˜ ì œë ¨ë„ê°€ 내려갑니다.
Equipment's refine level will decreased when refine fails
*/
MSG_ID_BAD = 0xbad,
-/*20161019 to 20180621
+/*20161019 to 20180711
제련 실패시 ìž¥ë¹„ì˜ ì œë ¨ë„ê°€ 내려가거나 사ë¼ì§ˆ 수 있습니다.
Equipment will dissapear or refine level will decreased when refine fails
*/
MSG_ID_BAE = 0xbae,
#endif
#if PACKETVER >= 20161026
-/*20161026 to 20180621
+/*20161026 to 20180711
제련 중ì—는 ë¡œë±ìŠ¤ë¥¼ 사용할 수 없습니다. ë¡œë±ìŠ¤ë¥¼ ê°•ì œ 종료하였습니다.
You cannot use RODEX while refining. RODEX has closed.
*/
MSG_ID_BAF = 0xbaf,
-/*20161026 to 20180621
+/*20161026 to 20180711
제련 중ì—는 ë¡œë±ìŠ¤ë¥¼ 사용할 수 없습니다.
You cannot use RODEX while refining.
*/
MSG_ID_BB0 = 0xbb0,
-/*20161026 to 20180621
+/*20161026 to 20180711
ì œë ¨ì„ ì§„í–‰í•˜ë ¤ë©´ 다른 ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Please close other windows to continue.
*/
MSG_ID_BB1 = 0xbb1,
-/*20161026 to 20180621
+/*20161026 to 20180711
오오ë¼ê°€ ì •ìƒì ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤ [ì˜¤ì˜¤ë¼ ON]
Turn On Aura [Aura ON]
*/
MSG_ID_BB2 = 0xbb2,
-/*20161026 to 20180621
+/*20161026 to 20180711
오오ë¼ê°€ 표시ë˜ì§€ 않습니다 [ì˜¤ì˜¤ë¼ OFF]
Turn Off Aura [Auta OFF]
*/
MSG_ID_BB3 = 0xbb3,
-/*20161026 to 20180621
+/*20161026 to 20180711
오오ë¼ê°€ Off ìƒíƒœìž…니다. Off 를 해제하고 ì‹œë„í•´ 주세요
Aura is turned off. Please turn it on and try again
*/
MSG_ID_BB4 = 0xbb4,
-/*20161026 to 20180621
+/*20161026 to 20180711
스킬 ë°œë™ì‹œ 최소 %dê°œì˜ íƒ„ì•Œì´ í•„ìš”í•©ë‹ˆë‹¤.
You need %d bullet(s) to activate the skill.
*/
MSG_ID_BB5 = 0xbb5,
-/*20161026 to 20180621
+/*20161026 to 20180711
장비 세트를 변경하시겠습니까?
Do you want to change the equipment set?
*/
MSG_ID_BB6 = 0xbb6,
-/*20161026 to 20180621
+/*20161026 to 20180711
ì£½ì€ ìƒíƒœì—서는 í•  수 없습니다
You can not do it while you are dead.
*/
MSG_ID_BB7 = 0xbb7,
-/*20161026 to 20180621
+/*20161026 to 20180711
ìºìŠ¤íŒ… ë„중ì—는 í•  수 없습니다
You can not do it while casting
*/
MSG_ID_BB8 = 0xbb8,
-/*20161026 to 20180621
+/*20161026 to 20180711
거래 ë„중ì—는 í•  수 없습니다
You can not do it while trading
*/
MSG_ID_BB9 = 0xbb9,
-/*20161026 to 20180621
+/*20161026 to 20180711
ë…¸ì  ê°œì„¤ ë„중ì—는 í•  수 없습니다
You can not do it while opening vendor
*/
MSG_ID_BBA = 0xbba,
-/*20161026 to 20180621
+/*20161026 to 20180711
NPC ì´ìš©ì¤‘ì—는 í•  수 없습니다
You can not do it while using NPC
*/
MSG_ID_BBB = 0xbbb,
-/*20161026 to 20180621
+/*20161026 to 20180711
채팅방 ì´ìš©ì¤‘ì—는 í•  수 없습니다
You can not do it while using chatting room
*/
MSG_ID_BBC = 0xbbc,
-/*20161026 to 20180621
+/*20161026 to 20180711
íŒŒí‹°ì› ì „ì›ì´ ì ‘ì† ìƒíƒœê°€ 아닙니다.
Party members are not connected.
*/
MSG_ID_BBD = 0xbbd,
-/*20161026 to 20180621
+/*20161026 to 20180711
스킬 ë°œë™ì‹œ 최소 %dê°œì˜ í™”ì‚´ì´ í•„ìš”í•©ë‹ˆë‹¤.
You need %d arrow(s) to activate the skill.
*/
MSG_ID_BBE = 0xbbe,
#endif
#if PACKETVER >= 20161102
-/*20161102 to 20180621
+/*20161102 to 20180711
ì•„ì´í…œ ì •ë ¬
Align items
*/
MSG_ID_BBF = 0xbbf,
-/*20161102 to 20180621
+/*20161102 to 20180711
ì•„ì´í…œì„ 버리려면 장비 설정 ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Please close item setting window to dump item.
*/
MSG_ID_BC0 = 0xbc0,
#endif
#if PACKETVER >= 20161109
-/*20161109 to 20180621
+/*20161109 to 20180711
êµì²´ í•  수 있는 ì•„ì´í…œì´ 없습니다.
There is no item to replace.
*/
MSG_ID_BC1 = 0xbc1,
-/*20161109 to 20180621
+/*20161109 to 20180711
ì‚­ì œëœ ìºë¦­í„°
Deleted character
*/
MSG_ID_BC2 = 0xbc2,
/*20161109 to 20161109
제련 중ì—는 ì€í–‰ì„ 사용할 수 없습니다. ë¡œë±ìŠ¤ë¥¼ ê°•ì œ 종료하였습니다.
-20161116 to 20180621
+20161116 to 20180711
%Y.%m.%d
*/
MSG_ID_BC3 = 0xbc3,
/*20161109 to 20161109
제련 중ì—는 ì€í–‰ì„ 사용할 수 없습니다.
You can not use bank while refining.
-20161116 to 20180621
+20161116 to 20180711
ì ‘ì†ì¼: %s
Access date: %s
*/
MSG_ID_BC4 = 0xbc4,
#endif
#if PACKETVER >= 20161116
-/*20161116 to 20180621
+/*20161116 to 20180711
제련 중ì—는 ì€í–‰ì„ 사용할 수 없습니다. ì€í–‰ì„ ê°•ì œ 종료하였습니다.
You can not use bank while refining. Bank has closed.
*/
MSG_ID_BC5 = 0xbc5,
-/*20161116 to 20180621
+/*20161116 to 20180711
제련 중ì—는 ì€í–‰ì„ 사용할 수 없습니다.
You can not use bank while refining.
*/
MSG_ID_BC6 = 0xbc6,
-/*20161116 to 20180621
+/*20161116 to 20180711
장비 세트 설정 ì¤‘ì¸ ì•„ì´í…œìž…니다.
The item has bind to set equipment.
*/
MSG_ID_BC7 = 0xbc7,
#endif
#if PACKETVER >= 20161123
-/*20161123 to 20180621
+/*20161123 to 20180711
ì¸ê°„
Human
*/
MSG_ID_BC8 = 0xbc8,
-/*20161123 to 20180621
+/*20161123 to 20180711
검사, 법사, ìƒì¸, 복사, ë„ë‘‘, ê¶ìˆ˜
Swordman, Mage, Merchant, Acolyte, Thief, Archer
*/
MSG_ID_BC9 = 0xbc9,
-/*20161123 to 20180621
+/*20161123 to 20180711
ë„람
Doram
*/
MSG_ID_BCA = 0xbca,
-/*20161123 to 20180621
+/*20161123 to 20180711
소환사
Summoner
*/
MSG_ID_BCB = 0xbcb,
-/*20161123 to 20180621
+/*20161123 to 20180711
미드가르드 ëŒ€ë¥™ì˜ ëŒ€í‘œ 종족. 무한한 잠재력과 ë›°ì–´ë‚œ ì ì‘력으로 문제 í•´ê²°ì— íƒì›”í•œ ê²ƒì´ íŠ¹ì§•ì´ë‹¤.
Delegate race of Midgard. Very talented race to solve a problem with inifite potential and great adaptability.
*/
MSG_ID_BCC = 0xbcc,
-/*20161123 to 20180621
+/*20161123 to 20180711
파-스타 ëŒ€ë¥™ì˜ ëŒ€í‘œì ì¸ 종족 중 하나로, 선천ì ìœ¼ë¡œ í˜¸ê¸°ì‹¬ì´ ê°•í•˜ê³  발랄한 ì„±ê²©ì„ ì§€ë…”ë‹¤.
One of delegate race of Far-star continent with natural born curiosity and sparky character.
*/
MSG_ID_BCD = 0xbcd,
-/*20161123 to 20180621
+/*20161123 to 20180711
소지 í•œê³„ëŸ‰ì´ 70%를 초과하거나, ì¸ë²¤í† ë¦¬ì— 10칸 ì´ìƒì˜ 여유 ê³µê°„ì´ ë¶€ì¡±í•œ ìƒíƒœìž…니다.
Weight limit has reached toover 70%. Or less then 10 invenrory space.
*/
MSG_ID_BCE = 0xbce,
-/*20161123 to 20180621
+/*20161123 to 20180711
C
*/
MSG_ID_BCF = 0xbcf,
-/*20161123 to 20180621
+/*20161123 to 20180711
C
*/
MSG_ID_BD0 = 0xbd0,
-/*20161123 to 20180621
+/*20161123 to 20180711
다른 ì¼ì„ 하는 중입니다.
Doing in other activity.
*/
MSG_ID_BD1 = 0xbd1,
-/*20161123 to 20180621
+/*20161123 to 20180711
오버히트 리미트 : %d
Overheat limit : %d
*/
MSG_ID_BD2 = 0xbd2,
#endif
#if PACKETVER >= 20161130
-/*20161130 to 20180621
+/*20161130 to 20180711
메모리얼 ë˜ì „ ì´ìš© 중엔 초대 ë° íƒˆí‡´ê°€ ë˜ì§€ 않습니다.
You cannot invite or withdraw while in memorial dungeon.
*/
MSG_ID_BD3 = 0xbd3,
-/*20161130 to 20180621
+/*20161130 to 20180711
비ì†ì–´ê°€ í¬í•¨ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
다시 한번 확ì¸í•´ì£¼ì„¸ìš”.
Expletive has detected.
@@ -18285,131 +18285,131 @@ Please check again.
MSG_ID_BD4 = 0xbd4,
#endif
#if PACKETVER >= 20161207
-/*20161207 to 20180621
+/*20161207 to 20180711
ì•„ì´ë””는 %dìž ì´ìƒ 입력해주세요. ì‚¬ìš©ìž ê³„ì •ì´ ì—†ìœ¼ì‹ ë¶„ë“¤ì€ ì™¼ìª½ í•˜ë‹¨ì˜ [ì‹ ì²­] ë²„íŠ¼ì„ ëˆŒëŸ¬ ê³„ì •ì„ ë§Œë“œì‹œê¸° ë°”ëžë‹ˆë‹¤.
Please enter over %d characters. If you don't have user account, please click [Register] button on the bottom left.
*/
MSG_ID_BD5 = 0xbd5,
-/*20161207 to 20180621
+/*20161207 to 20180711
비밀번호는 %dìž ì´ìƒ 입력해주세요.
Please enter the password over %d characters.
*/
MSG_ID_BD6 = 0xbd6,
-/*20161207 to 20180621
+/*20161207 to 20180711
진행중ì´ë˜ ìž‘ì—…ì„ ì¢…ë£Œí›„ 다시 ì‹œë„하세요.
Please finish your current work and try it again.
*/
MSG_ID_BD7 = 0xbd7,
-/*20161207 to 20180621
+/*20161207 to 20180711
%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + %s서버 %.1f%%)
%.1f%% (Internet-Cafe %.1f%% + TPLUS %.1f%% + %sServer %.1f%%)
*/
MSG_ID_BD8 = 0xbd8,
-/*20161207 to 20180621
+/*20161207 to 20180711
ì•„ì´í…œì„ 등ë¡í•  수 없습니다
The item cannot be registered.
*/
MSG_ID_BD9 = 0xbd9,
#endif
#if PACKETVER >= 20161214
-/*20161214 to 20180621
+/*20161214 to 20180711
/100
/300
*/
MSG_ID_BDA = 0xbda,
-/*20161214 to 20180621
+/*20161214 to 20180711
/2000
/4000
*/
MSG_ID_BDB = 0xbdb,
-/*20161214 to 20180621
+/*20161214 to 20180711
https://member.gnjoy.com.tw/mRO_SecPwd.aspx
*/
MSG_ID_BDC = 0xbdc,
-/*20161214 to 20180621
+/*20161214 to 20180711
등ë¡í•  emblemì´ ì¡´ìž¬í•˜ì§€ 않습니다. emblem í´ë”ì— íŒŒì¼ì„ 넣고 ì‹œë„í•´ 주세요
The emblem you want to register does not exist. Insert it in the emblem file and try again
*/
MSG_ID_BDD = 0xbdd,
/*20161214 to 20170315
#ë¼ê·¸ë‚˜ë¡œí¬ #Ragnarok
-20170322 to 20180621
+20170322 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬
Ragnarok Ragnarok
*/
MSG_ID_BDE = 0xbde,
/*20161214 to 20161214
스í¬ë¦°ìƒ·ì— ìžì‹  ì´ì™¸ì˜ ìºë¦¬í„°ëª…ì´ í‘œì‹œë˜ëŠ” 경우나 ì±„íŒ…ì°½ì— ìžì‹  ì´ì™¸ì˜ ìºë¦­í„° 대화가 표시ë˜ëŠ” 경우, 해당 사용ìžì—게 반드시 양해를 구한 후 사용 í•´ 주시기 ë°”ëžë‹ˆë‹¤.
-20161221 to 20180621
+20161221 to 20180711
스í¬ë¦°ìƒ·ì— ìžì‹  ì´ì™¸ì˜ ìºë¦­í„°ëª…ì´ í‘œì‹œë˜ëŠ” 경우나 ì±„íŒ…ì°½ì— ìžì‹  ì´ì™¸ì˜ ìºë¦­í„° 대화가 표시ë˜ëŠ” 경우, 해당 사용ìžì—게 반드시 양해를 구한 후 사용 í•´ 주시기 ë°”ëžë‹ˆë‹¤.
If your screenshot or chat box includes other users besides yourself, first ask permission from the other users before using it.
*/
MSG_ID_BDF = 0xbdf,
#endif
#if PACKETVER >= 20161221
-/*20161221 to 20180621
+/*20161221 to 20180711
현재 ìƒíƒœì—ì„  장비를 êµì²´í•  수 없습니다
You cannot change equipment in current condition
*/
MSG_ID_BE0 = 0xbe0,
-/*20161221 to 20180621
+/*20161221 to 20180711
해당 ìœ ì €ì˜ ì´ë¦„ì„ ê°€ì ¸ì˜¤ê³  있습니다
Getting the user's name
*/
MSG_ID_BE1 = 0xbe1,
-/*20161221 to 20180621
+/*20161221 to 20180711
해당 메시지는 사용 í•  수 없는 ë‚´ìš©ì„ í¬í•¨í•˜ê³  있습니다.
This message includes contents you are not able to use.
*/
MSG_ID_BE2 = 0xbe2,
-/*20161221 to 20180621
+/*20161221 to 20180711
ì•„ì´í…œ êµ¬ìž…ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Failed to purchase item.
*/
MSG_ID_BE3 = 0xbe3,
-/*20161221 to 20180621
+/*20161221 to 20180711
신분ì¦ë²ˆí˜¸ 하위 7ìžë¦¬ê°€ ì¼ì¹˜í•˜ì§€ 않습니다.
The lower numbers of the identification number does not match.
*/
MSG_ID_BE4 = 0xbe4,
#endif
#if PACKETVER >= 20161228
-/*20161228 to 20180621
+/*20161228 to 20180711
닫기
Close
*/
MSG_ID_BE5 = 0xbe5,
-/*20161228 to 20180621
+/*20161228 to 20180711
규칙
Rule
*/
MSG_ID_BE6 = 0xbe6,
-/*20161228 to 20180621
+/*20161228 to 20180711
1회 구매
Purchase 1x
*/
MSG_ID_BE7 = 0xbe7,
-/*20161228 to 20180621
+/*20161228 to 20180711
10회 구매
Purchase 10x
*/
MSG_ID_BE8 = 0xbe8,
-/*20161228 to 20180621
+/*20161228 to 20180711
100회 구매
Purchase 100x
*/
MSG_ID_BE9 = 0xbe9,
-/*20161228 to 20180621
+/*20161228 to 20180711
1등 당첨
Win 1st prize
*/
MSG_ID_BEA = 0xbea,
-/*20161228 to 20180621
+/*20161228 to 20180711
2등 당첨
Win 2nd prize
*/
MSG_ID_BEB = 0xbeb,
-/*20161228 to 20180621
+/*20161228 to 20180711
3등 당첨
Win 3rd prize
*/
@@ -18417,7 +18417,7 @@ Win 3rd prize
/*20161228 to 20170111
복권 구매 금액
Lottery purchase amount
-20170118 to 20180621
+20170118 to 20180711
현재 사용하지 ì•ŠìŒ
Currently not in use
*/
@@ -18425,49 +18425,49 @@ Currently not in use
/*20161228 to 20170111
참여 ìºë¦­í„°
Participating character
-20170118 to 20180621
+20170118 to 20180711
현재 사용하지 ì•ŠìŒ
Currently not in use
*/
MSG_ID_BEE = 0xbee,
-/*20161228 to 20180621
+/*20161228 to 20180711
제니 ë¡œë˜ ë‹¹ì²¨ìž
Zeny Lottery winner
*/
MSG_ID_BEF = 0xbef,
/*20161228 to 20170111
복권 진행ì¼
-20170118 to 20180621
+20170118 to 20180711
복권 구매 금액
Lottery purchase amount
*/
MSG_ID_BF0 = 0xbf0,
-/*20161228 to 20180621
+/*20161228 to 20180711
참여 ìºë¦­í„°
Participating character
*/
MSG_ID_BF1 = 0xbf1,
-/*20161228 to 20180621
+/*20161228 to 20180711
1등
1st Price
*/
MSG_ID_BF2 = 0xbf2,
-/*20161228 to 20180621
+/*20161228 to 20180711
2등
2nd Price
*/
MSG_ID_BF3 = 0xbf3,
-/*20161228 to 20180621
+/*20161228 to 20180711
3등
3rd Price
*/
MSG_ID_BF4 = 0xbf4,
-/*20161228 to 20180621
+/*20161228 to 20180711
구매 ë³´ìƒ ì•„ì´í…œ
Purchase Reward Item
*/
MSG_ID_BF5 = 0xbf5,
-/*20161228 to 20180621
+/*20161228 to 20180711
^1a1a1a복권 ^b%d개^/b를
^4435b2%dZeny^1a1a1a로
구매하시겠습니까?
@@ -18475,165 +18475,165 @@ Purchase Reward Item
^4435b2%dZeny^1a1a1a?
*/
MSG_ID_BF6 = 0xbf6,
-/*20161228 to 20180621
+/*20161228 to 20180711
ë³µê¶Œì„ ì„±ê³µì ìœ¼ë¡œ 구매하였습니다.
You have successfully purchased the lottery ticket.
*/
MSG_ID_BF7 = 0xbf7,
-/*20161228 to 20180621
+/*20161228 to 20180711
소지 제니가 부족하여 ë³µê¶Œì„ êµ¬ë§¤ í•  수 없습니다.
Not enough Zeny to purchase lottey ticket.
*/
MSG_ID_BF8 = 0xbf8,
-/*20161228 to 20180621
+/*20161228 to 20180711
최대 복권 구매 횟수는 1000회를 초과 할 수 없습니다.
You are only able to purchase the tickets upto 1000 times.
*/
MSG_ID_BF9 = 0xbf9,
-/*20161228 to 20180621
+/*20161228 to 20180711
예
Yes
*/
MSG_ID_BFA = 0xbfa,
-/*20161228 to 20180621
+/*20161228 to 20180711
아니요
No
*/
MSG_ID_BFB = 0xbfb,
-/*20161228 to 20180621
+/*20161228 to 20180711
HP
*/
MSG_ID_BFC = 0xbfc,
-/*20161228 to 20180621
+/*20161228 to 20180711
SP
*/
MSG_ID_BFD = 0xbfd,
-/*20161228 to 20180621
+/*20161228 to 20180711
Lv
*/
MSG_ID_BFE = 0xbfe,
-/*20161228 to 20180621
+/*20161228 to 20180711
Lv
*/
MSG_ID_BFF = 0xbff,
-/*20161228 to 20180621
+/*20161228 to 20180711
Exp
*/
MSG_ID_C00 = 0xc00,
-/*20161228 to 20180621
+/*20161228 to 20180711
all on
*/
MSG_ID_C01 = 0xc01,
-/*20161228 to 20180621
+/*20161228 to 20180711
Play Replay Flie
*/
MSG_ID_C02 = 0xc02,
-/*20161228 to 20180621
+/*20161228 to 20180711
P
*/
MSG_ID_C03 = 0xc03,
-/*20161228 to 20180621
+/*20161228 to 20180711
Total
*/
MSG_ID_C04 = 0xc04,
-/*20161228 to 20180621
+/*20161228 to 20180711
Basicinfo
*/
MSG_ID_C05 = 0xc05,
-/*20161228 to 20180621
+/*20161228 to 20180711
Equip
*/
MSG_ID_C06 = 0xc06,
-/*20161228 to 20180621
+/*20161228 to 20180711
Item
*/
MSG_ID_C07 = 0xc07,
-/*20161228 to 20180621
+/*20161228 to 20180711
Skill
*/
MSG_ID_C08 = 0xc08,
-/*20161228 to 20180621
+/*20161228 to 20180711
Guild
*/
MSG_ID_C09 = 0xc09,
-/*20161228 to 20180621
+/*20161228 to 20180711
Party
*/
MSG_ID_C0A = 0xc0a,
-/*20161228 to 20180621
+/*20161228 to 20180711
Chatting
*/
MSG_ID_C0B = 0xc0b,
-/*20161228 to 20180621
+/*20161228 to 20180711
Shortcut
*/
MSG_ID_C0C = 0xc0c,
-/*20161228 to 20180621
+/*20161228 to 20180711
Status
*/
MSG_ID_C0D = 0xc0d,
-/*20161228 to 20180621
+/*20161228 to 20180711
ALL
All
*/
MSG_ID_C0E = 0xc0e,
-/*20161228 to 20180621
+/*20161228 to 20180711
User Defined File Name
*/
MSG_ID_C0F = 0xc0f,
-/*20161228 to 20180621
+/*20161228 to 20180711
Repeated File Check
*/
MSG_ID_C10 = 0xc10,
-/*20161228 to 20180621
+/*20161228 to 20180711
on
*/
MSG_ID_C11 = 0xc11,
-/*20161228 to 20180621
+/*20161228 to 20180711
<Basic Skin>
*/
MSG_ID_C12 = 0xc12,
-/*20161228 to 20180621
+/*20161228 to 20180711
Select Skin
*/
MSG_ID_C13 = 0xc13,
#endif
#if PACKETVER >= 20170111
-/*20170111 to 20180621
+/*20170111 to 20180711
현재 ë³µê¶Œì— ì°¸ì—¬ 중ì´ë¼ 삭제할 수 없습니다
You cannot delete it because you are currently participating in the lottery
*/
MSG_ID_C14 = 0xc14,
-/*20170111 to 20180621
+/*20170111 to 20180711
/achievement
*/
MSG_ID_C15 = 0xc15,
-/*20170111 to 20180621
+/*20170111 to 20180711
제니 복권
Zeny Lottery ticket
*/
MSG_ID_C16 = 0xc16,
-/*20170111 to 20180621
+/*20170111 to 20180711
제니 복권 %d등 당첨 ë³´ìƒ
Zenyy Lottery %dprize reward
*/
MSG_ID_C17 = 0xc17,
-/*20170111 to 20180621
+/*20170111 to 20180711
%d등 당첨 ë³´ìƒ: %s
%dprize reward: %s
*/
MSG_ID_C18 = 0xc18,
-/*20170111 to 20180621
+/*20170111 to 20180711
제니 복권 ëˆ„ì  êµ¬ë§¤ ë³´ìƒ
Zeny Lottery Cumulative purchase reward
*/
MSG_ID_C19 = 0xc19,
-/*20170111 to 20180621
+/*20170111 to 20180711
ëˆ„ì  %d회 ë³´ìƒ: %s
Cumulative %d times reward: %s
*/
MSG_ID_C1A = 0xc1a,
-/*20170111 to 20180621
+/*20170111 to 20180711
제니 복권 구매 환불
Zeny Lottery Refund
*/
@@ -18641,282 +18641,282 @@ Zeny Lottery Refund
/*20170111 to 20170111
환불 금액: %d Zeny
환불 사유: 서버 내 복권 추첨 달성 실패
-20170118 to 20180621
+20170118 to 20180711
환불 금액: %d Zeny
환불 사유: 서버 내 복권 추첨 달성 실패
Refund amount: %d Zeny
Reason for Refund: Failed to draw lottery in the server
*/
MSG_ID_C1C = 0xc1c,
-/*20170111 to 20180621
+/*20170111 to 20180711
미니 파티창 추가
Add Mini Party Chat
*/
MSG_ID_C1D = 0xc1d,
-/*20170111 to 20180621
+/*20170111 to 20180711
미니 파티창 삭제
Delete Mini Party Chat
*/
MSG_ID_C1E = 0xc1e,
#endif
#if PACKETVER >= 20170118
-/*20170118 to 20180621
+/*20170118 to 20180711
복권 ì¶”ì²¨ì´ ëª¨ë‘ ì¢…ë£Œ ë˜ì—ˆìŠµë‹ˆë‹¤! 당첨ìžë¥¼ 확ì¸í•´ì£¼ì„¸ìš”
The lottery draw had ended! Check the winner!
*/
MSG_ID_C1F = 0xc1f,
-/*20170118 to 20180621
+/*20170118 to 20180711
%dì›” %dì¼
%dMonth %dDay
*/
MSG_ID_C20 = 0xc20,
-/*20170118 to 20180621
+/*20170118 to 20180711
ë‹¤ìŒ ë“±ê¸‰ê¹Œì§€
Till the next grade
*/
MSG_ID_C21 = 0xc21,
-/*20170118 to 20180621
+/*20170118 to 20180711
ì „ì²´
All
*/
MSG_ID_C22 = 0xc22,
-/*20170118 to 20180621
+/*20170118 to 20180711
미완료
Incomplete
*/
MSG_ID_C23 = 0xc23,
-/*20170118 to 20180621
+/*20170118 to 20180711
(달성!)
(Accomplished!)
*/
MSG_ID_C24 = 0xc24,
-/*20170118 to 20180621
+/*20170118 to 20180711
(미달성)
(Not Accomplished)
*/
MSG_ID_C25 = 0xc25,
#endif
#if PACKETVER >= 20170208
-/*20170208 to 20180621
+/*20170208 to 20180711
장비 êµì²´
Change equipment
*/
MSG_ID_C26 = 0xc26,
-/*20170208 to 20180621
+/*20170208 to 20180711
CHANGE
*/
MSG_ID_C27 = 0xc27,
-/*20170208 to 20180621
+/*20170208 to 20180711
힘 파ë¼ë©”í„°
^cc0000근접 물리 공격력^ffffff, 소지무게
Power Parameter
^cc0000Melee PhysicalAttack^ffffff, Carrying Weight
*/
MSG_ID_C28 = 0xc28,
-/*20170208 to 20180621
+/*20170208 to 20180711
민첩성 파ë¼ë©”í„°
^cc0000공격 ì†ë„^ffffff, 회피율, 물리 ë°©ì–´ë ¥
Agility Parameter
^cc0000Attack Speed^ffffff, Dodge, Physical Defense
*/
MSG_ID_C29 = 0xc29,
-/*20170208 to 20180621
+/*20170208 to 20180711
ì²´ë ¥ 파ë¼ë©”í„°
^cc0000최대 체력^ffffff, 물리 방어력, 마법 방어력
HP Parameter
^cc0000Max HP^ffffff, Physical Defense, Magic Defense
*/
MSG_ID_C2A = 0xc2a,
-/*20170208 to 20180621
+/*20170208 to 20180711
지력 파ë¼ë©”í„°
^cc0000마법 공격력^ffffff, ìºìŠ¤íŒ… 시간, 마법 ë°©ì–´ë ¥
Intellect Parameter
^cc0000Magic Attack^ffffff, Casting Time, Magic Defense
*/
MSG_ID_C2B = 0xc2b,
-/*20170208 to 20180621
+/*20170208 to 20180711
ì†ìž¬ì£¼ 파ë¼ë©”í„°
^cc0000ì›ê±°ë¦¬ 물리 공격력^ffffff, 명중률, ìºìŠ¤íŒ… 시간, 마법 공격력
Handcraft Parameter
^cc0000Long Range Physical Attack^ffffff, Accuracy, Casting Time, Magic Attack
*/
MSG_ID_C2C = 0xc2c,
-/*20170208 to 20180621
+/*20170208 to 20180711
ìš´ 파ë¼ë©”í„°
^cc0000치명타율^ffffff, 명중률, 물리공격력, 마법공격력, 회피율
Moon Parameter
^cc0000Critical Rate^ffffff, Accuracy, Physical Attack, Magic Attack, Dodge
*/
MSG_ID_C2D = 0xc2d,
-/*20170208 to 20180621
+/*20170208 to 20180711
물리 공격력
Physical Attack
*/
MSG_ID_C2E = 0xc2e,
-/*20170208 to 20180621
+/*20170208 to 20180711
물리 방어력
Physical Defense
*/
MSG_ID_C2F = 0xc2f,
-/*20170208 to 20180621
+/*20170208 to 20180711
명중률
Accuracy
*/
MSG_ID_C30 = 0xc30,
-/*20170208 to 20180621
+/*20170208 to 20180711
치명타율
Critical Rate
*/
MSG_ID_C31 = 0xc31,
-/*20170208 to 20180621
+/*20170208 to 20180711
소ì†ê¸¸ë“œ
Affiliated Guild
*/
MSG_ID_C32 = 0xc32,
-/*20170208 to 20180621
+/*20170208 to 20180711
ê° íŒŒë¼ë©”í„° ë ˆë²¨ì—…ì— ì‚¬ìš©ë˜ëŠ” í¬ì¸íŠ¸
Points to level up each Parameter
*/
MSG_ID_C33 = 0xc33,
-/*20170208 to 20180621
+/*20170208 to 20180711
마법공격력
Magic Attack
*/
MSG_ID_C34 = 0xc34,
-/*20170208 to 20180621
+/*20170208 to 20180711
마법방어력
Magic Defense
*/
MSG_ID_C35 = 0xc35,
-/*20170208 to 20180621
+/*20170208 to 20180711
회피율
Dodge
*/
MSG_ID_C36 = 0xc36,
-/*20170208 to 20180621
+/*20170208 to 20180711
공격 ì†ë„
Attack Speed
*/
MSG_ID_C37 = 0xc37,
#endif
#if PACKETVER >= 20170215
-/*20170215 to 20180621
+/*20170215 to 20180711
단축키 안내
Shortcut
*/
MSG_ID_C38 = 0xc38,
-/*20170215 to 20180621
+/*20170215 to 20180711
옵션
Option
*/
MSG_ID_C39 = 0xc39,
-/*20170215 to 20180621
+/*20170215 to 20180711
스킬 단축키 (F1 ~ F9)
Skill Shortcut Key (F1 ~ F9)
*/
MSG_ID_C3A = 0xc3a,
-/*20170215 to 20180621
+/*20170215 to 20180711
ì´ë¯¸ì§€ 캡ì³
Capture Image
*/
MSG_ID_C3B = 0xc3b,
-/*20170215 to 20180621
+/*20170215 to 20180711
확대
Zoom In
*/
MSG_ID_C3C = 0xc3c,
-/*20170215 to 20180621
+/*20170215 to 20180711
축소
Zoom Out
*/
MSG_ID_C3D = 0xc3d,
-/*20170215 to 20180621
+/*20170215 to 20180711
길드
Guild
*/
MSG_ID_C3E = 0xc3e,
-/*20170215 to 20180621
+/*20170215 to 20180711
ì€í–‰
Bank
*/
MSG_ID_C3F = 0xc3f,
-/*20170215 to 20180621
+/*20170215 to 20180711
우편
Mail
*/
MSG_ID_C40 = 0xc40,
-/*20170215 to 20180621
+/*20170215 to 20180711
ìºì‹œ ìƒì 
Cash Shop
*/
MSG_ID_C41 = 0xc41,
-/*20170215 to 20180621
+/*20170215 to 20180711
앉기
Sit
*/
MSG_ID_C42 = 0xc42,
-/*20170215 to 20180621
+/*20170215 to 20180711
ì´ë™
Move
*/
MSG_ID_C43 = 0xc43,
-/*20170215 to 20180621
+/*20170215 to 20180711
회전
Rotate
*/
MSG_ID_C44 = 0xc44,
-/*20170215 to 20180621
+/*20170215 to 20180711
íŒŒí‹°ìž¥ì€ íŒŒí‹°ìž¥ì„ ë‹¤ë¥¸ 파티ì›ì—게 위임 후 탈퇴 가능합니다.
The Party Leader can be dropped out only after another party member becomes a Party Leader.
*/
MSG_ID_C45 = 0xc45,
-/*20170215 to 20180621
+/*20170215 to 20180711
ì´ ë™ì˜ìƒì„ 그만 보시겠습니까?
Do you want to stop viewing this video?
*/
MSG_ID_C46 = 0xc46,
-/*20170215 to 20180621
+/*20170215 to 20180711
장비가 장비 êµì²´ ì°½ì— ìž¥ì°© ë˜ì—ˆìŠµë‹ˆë‹¤.
gear has been equipped in the gear equipment pop-up.
*/
MSG_ID_C47 = 0xc47,
-/*20170215 to 20180621
+/*20170215 to 20180711
장비가 장비 êµì²´ ì°½ì—ì„œ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
gear has been removed in the gear equipment pop-up.
*/
MSG_ID_C48 = 0xc48,
#endif
#if PACKETVER >= 20170222
-/*20170222 to 20180621
+/*20170222 to 20180711
현재가 마지막 ë¼ì¸ìž…니다.
This is the last line.
*/
MSG_ID_C49 = 0xc49,
-/*20170222 to 20180621
+/*20170222 to 20180711
%.1f%% ( 기본 100%% + 프리미엄 %.1f%%+ %s서버 %.1f%% )
%.1f%% ( Base 100%% + Premium %.1f%%+ %sServer %.1f%% )
*/
MSG_ID_C4A = 0xc4a,
#endif
#if PACKETVER >= 20170228
-/*20170228 to 20180621
+/*20170228 to 20180711
í•œìž
Chinese character
*/
MSG_ID_C4B = 0xc4b,
-/*20170228 to 20180621
+/*20170228 to 20180711
단축키 설정
Shortcut Settings
*/
MSG_ID_C4C = 0xc4c,
#endif
#if PACKETVER >= 20170308
-/*20170308 to 20180621
+/*20170308 to 20180711
ë‹¹ì‹ ì˜ ì •ì•¡ì œ ê¸°ê°„ì€ %sì— ì¢…ë£Œë©ë‹ˆë‹¤.
Your subscription will be ended on%s.
*/
MSG_ID_C4D = 0xc4d,
-/*20170308 to 20180621
+/*20170308 to 20180711
ë¦¬í”Œë ˆì´ íŒŒì¼ì„ 찾지 못하였습니다.
Cannot find the replay file.
*/
@@ -18924,7 +18924,7 @@ Cannot find the replay file.
/*20170308 to 20170801
신발
Head
-20170809 to 20180621
+20170809 to 20180711
ì˜ìƒ
Shoes
*/
@@ -18932,22 +18932,22 @@ Shoes
/*20170308 to 20170801
머리
Costume
-20170809 to 20180621
+20170809 to 20180711
신발
Head
*/
MSG_ID_C50 = 0xc50,
-/*20170308 to 20180621
+/*20170308 to 20180711
갑옷
Armor
*/
MSG_ID_C51 = 0xc51,
-/*20170308 to 20180621
+/*20170308 to 20180711
어깨
Shoulders
*/
MSG_ID_C52 = 0xc52,
-/*20170308 to 20180621
+/*20170308 to 20180711
악세
Accessory
*/
@@ -18955,12 +18955,12 @@ Accessory
/*20170308 to 20170801
ì˜ìƒ
Shoes
-20170809 to 20180621
+20170809 to 20180711
머리
Costume
*/
MSG_ID_C54 = 0xc54,
-/*20170308 to 20180621
+/*20170308 to 20180711
차순정렬
Sort Order
*/
@@ -18968,7 +18968,7 @@ Sort Order
/*20170308 to 20170308
Current admission application state.
-20170315 to 20180621
+20170315 to 20180711
ì¼ë°˜ 장비
Normal Gear
*/
@@ -18976,7 +18976,7 @@ Normal Gear
/*20170308 to 20170308
Current admission application state.
-20170315 to 20180621
+20170315 to 20180711
특수 장비
Special Gear
*/
@@ -18984,291 +18984,291 @@ Special Gear
/*20170308 to 20170308
Current admission application state.
-20170315 to 20180621
+20170315 to 20180711
칭호
Style
*/
MSG_ID_C58 = 0xc58,
#endif
#if PACKETVER >= 20170315
-/*20170315 to 20180621
+/*20170315 to 20180711
/quake : 화면 í”들림 효과 On/Off
/quake : Screen Shaking Effect On/Off
*/
MSG_ID_C59 = 0xc59,
-/*20170315 to 20180621
+/*20170315 to 20180711
/aura2 : 오오ë¼ë¥¼ 완전히 Off 시킬 수 있습니다 On Off
/aura2 : You can completely turn off the aurora On/Off
*/
MSG_ID_C5A = 0xc5a,
-/*20170315 to 20180621
+/*20170315 to 20180711
기본 설정
Default Settings
*/
MSG_ID_C5B = 0xc5b,
-/*20170315 to 20180621
+/*20170315 to 20180711
고급 설정
Advanced Settings
*/
MSG_ID_C5C = 0xc5c,
-/*20170315 to 20180621
+/*20170315 to 20180711
ê¸°ë³¸ì„¤ì •ê°’ì´ ì ìš©ë©ë‹ˆë‹¤.
The Default Settings will be applied.
*/
MSG_ID_C5D = 0xc5d,
-/*20170315 to 20180621
+/*20170315 to 20180711
기본 ì„¤ì •ê°’ì´ ì ìš©ë©ë‹ˆë‹¤. ë™ì˜í•˜ì‹­ë‹ˆê¹Œ?
The Default Settings will be applied. Do you agree?
*/
MSG_ID_C5E = 0xc5e,
-/*20170315 to 20180621
+/*20170315 to 20180711
ì„¤ì •ê°’ì´ ì ìš©ë©ë‹ˆë‹¤. ë™ì˜í•˜ì‹­ë‹ˆê¹Œ?
The settings will be applied. Do you agree?
*/
MSG_ID_C5F = 0xc5f,
-/*20170315 to 20180621
+/*20170315 to 20180711
ì„¤ì •ê°’ì„ ì ìš©í•˜ë ¤ë©´ ìž¬ì‹œìž‘ì´ í•„ìš”í•©ë‹ˆë‹¤. ë™ì˜í•˜ì‹­ë‹ˆê¹Œ?
Need to restart to apply the settings. Do you agree?
*/
MSG_ID_C60 = 0xc60,
-/*20170315 to 20180621
+/*20170315 to 20180711
안개
Fog
*/
MSG_ID_C61 = 0xc61,
-/*20170315 to 20180621
+/*20170315 to 20180711
ì˜¤ì˜¤ë¼ ê°„ëžµí™”
Simplified aurora
*/
MSG_ID_C62 = 0xc62,
-/*20170315 to 20180621
+/*20170315 to 20180711
오오ë¼ì¼œê¸°
Turn on aurora
*/
MSG_ID_C63 = 0xc63,
-/*20170315 to 20180621
+/*20170315 to 20180711
ì´íŽ™íŠ¸ 표시
Show Effect
*/
MSG_ID_C64 = 0xc64,
-/*20170315 to 20180621
+/*20170315 to 20180711
ìŒì˜ 표시
Show Shadows
*/
MSG_ID_C65 = 0xc65,
-/*20170315 to 20180621
+/*20170315 to 20180711
No Shift
*/
MSG_ID_C66 = 0xc66,
-/*20170315 to 20180621
+/*20170315 to 20180711
하드웨어 T&L ê°€ì†ê¸°ëŠ¥ì„ ì„ íƒí•©ë‹ˆë‹¤
Select Hardware T&L Acceleration Function
*/
MSG_ID_C67 = 0xc67,
-/*20170315 to 20180621
+/*20170315 to 20180711
ê²Œìž„ì˜ í•´ìƒë„를 ì„ íƒí•©ë‹ˆë‹¤
Select Game Resolution
*/
MSG_ID_C68 = 0xc68,
-/*20170315 to 20180621
+/*20170315 to 20180711
전체화면 사용
Use full screen
*/
MSG_ID_C69 = 0xc69,
-/*20170315 to 20180621
+/*20170315 to 20180711
마우스 고정
Fix mouse
*/
MSG_ID_C6A = 0xc6a,
-/*20170315 to 20180621
+/*20170315 to 20180711
ì´íŽ™íŠ¸ 설정
Effect Settings
*/
MSG_ID_C6B = 0xc6b,
-/*20170315 to 20180621
+/*20170315 to 20180711
Control 설정
Control Settings
*/
MSG_ID_C6C = 0xc6c,
-/*20170315 to 20180621
+/*20170315 to 20180711
그래픽 장치 설정
Graphic Device Settings
*/
MSG_ID_C6D = 0xc6d,
-/*20170315 to 20180621
+/*20170315 to 20180711
그래픽 í•´ìƒë„ 설정
Graphic Resolution Settings
*/
MSG_ID_C6E = 0xc6e,
-/*20170315 to 20180621
+/*20170315 to 20180711
전체 화면 유무 설정
Full Screen Settings
*/
MSG_ID_C6F = 0xc6f,
-/*20170315 to 20180621
+/*20170315 to 20180711
마우스 고정 여부 설정
Fix mouse Settings
*/
MSG_ID_C70 = 0xc70,
-/*20170315 to 20180621
+/*20170315 to 20180711
수수료 :
Commission :
*/
MSG_ID_C71 = 0xc71,
-/*20170315 to 20180621
+/*20170315 to 20180711
수수료 ì´ì•¡ :
Total commission amount :
*/
MSG_ID_C72 = 0xc72,
-/*20170315 to 20180621
+/*20170315 to 20180711
ìˆ˜ì‹ ì¸ ì„¤ì •
Select receiver
*/
MSG_ID_C73 = 0xc73,
-/*20170315 to 20180621
+/*20170315 to 20180711
수신그룹 설정
Select receiving group
*/
MSG_ID_C74 = 0xc74,
-/*20170315 to 20180621
+/*20170315 to 20180711
í¬ê¸° 변경(F10)
Change size(F10)
*/
MSG_ID_C75 = 0xc75,
-/*20170315 to 20180621
+/*20170315 to 20180711
ë©”ì¼í•¨ì„ 불러오는 중 입니다.
불필요한 ë©”ì¼ì€ ^c92114ì‚­ì œ^000000í•´ 주세요~!!
Loading the mailbox.
^c92114Delete^000000unnecessary emails!!
*/
MSG_ID_C76 = 0xc76,
-/*20170315 to 20180621
+/*20170315 to 20180711
NOW LOADING..
*/
MSG_ID_C77 = 0xc77,
-/*20170315 to 20180621
+/*20170315 to 20180711
제목
Title
*/
MSG_ID_C78 = 0xc78,
-/*20170315 to 20180621
+/*20170315 to 20180711
보낸ì´
Sender
*/
MSG_ID_C79 = 0xc79,
#endif
#if PACKETVER >= 20170322
-/*20170322 to 20180621
+/*20170322 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬ í´ë¼ì´ì–¸íŠ¸ì™€ ë™ì‹œì— ì‹¤í–‰ì´ ë¶ˆê°€ëŠ¥ 합니다. setupì„ ì¢…ë£Œí•©ë‹ˆë‹¤
*/
MSG_ID_C7A = 0xc7a,
-/*20170322 to 20180621
+/*20170322 to 20180711
추가 기능 설정
*/
MSG_ID_C7B = 0xc7b,
-/*20170322 to 20180621
+/*20170322 to 20180711
This account does not exist.
*/
MSG_ID_C7C = 0xc7c,
-/*20170322 to 20180621
+/*20170322 to 20180711
Passwords do not match.
*/
MSG_ID_C7D = 0xc7d,
-/*20170322 to 20180621
+/*20170322 to 20180711
Failed to pass IP authentication
*/
MSG_ID_C7E = 0xc7e,
-/*20170322 to 20180621
+/*20170322 to 20180711
No identification number, supplement your registration information
*/
MSG_ID_C7F = 0xc7f,
-/*20170322 to 20180621
+/*20170322 to 20180711
Account block
*/
MSG_ID_C80 = 0xc80,
-/*20170322 to 20180621
+/*20170322 to 20180711
System error
*/
MSG_ID_C81 = 0xc81,
-/*20170322 to 20180621
+/*20170322 to 20180711
unknown error found.
*/
MSG_ID_C82 = 0xc82,
#endif
#if PACKETVER >= 20170329
-/*20170329 to 20180621
+/*20170329 to 20180711
길안내 ì•„ì´ì½˜ 설정
*/
MSG_ID_C83 = 0xc83,
-/*20170329 to 20180621
+/*20170329 to 20180711
길 안내 정보 UI
*/
MSG_ID_C84 = 0xc84,
-/*20170329 to 20180621
+/*20170329 to 20180711
길 안내 정보 열기
*/
MSG_ID_C85 = 0xc85,
-/*20170329 to 20180621
+/*20170329 to 20180711
현재 위치 공유
*/
MSG_ID_C86 = 0xc86,
-/*20170329 to 20180621
+/*20170329 to 20180711
검색결과[0]
*/
MSG_ID_C87 = 0xc87,
-/*20170329 to 20180621
+/*20170329 to 20180711
검색&안내
*/
MSG_ID_C88 = 0xc88,
/*20170329 to 20170329
위치 ê°’ì€ ìŒìˆ˜ ê°’ì´ ë“¤ì–´ 올 수 없습니다.
-20170405 to 20180621
+20170405 to 20180711
위치가 올바르지 않습니다.
*/
MSG_ID_C89 = 0xc89,
-/*20170329 to 20180621
+/*20170329 to 20180711
검색결과[%d]
*/
MSG_ID_C8A = 0xc8a,
-/*20170329 to 20180621
+/*20170329 to 20180711
길안내 표시를 위한 ì•„ì´ì½˜ 설정
*/
MSG_ID_C8B = 0xc8b,
-/*20170329 to 20180621
+/*20170329 to 20180711
길 ì°¾ê¸°ì— zeny 허용
*/
MSG_ID_C8C = 0xc8c,
-/*20170329 to 20180621
+/*20170329 to 20180711
내비게ì´ì…˜ ë„킹 í•´ì œ
*/
MSG_ID_C8D = 0xc8d,
-/*20170329 to 20180621
+/*20170329 to 20180711
활성화 하지 ì•Šì€ ê³„ì •ìž…ë‹ˆë‹¤.
*/
MSG_ID_C8E = 0xc8e,
#endif
#if PACKETVER >= 20170405
-/*20170405 to 20180621
+/*20170405 to 20180711
í´ë¦­í•œ 위치가 ì±„íŒ…ì°½ì— ê³µìœ  ë©ë‹ˆë‹¤.
*/
MSG_ID_C8F = 0xc8f,
-/*20170405 to 20180621
+/*20170405 to 20180711
4. Service í•­ëª©ì„ ì„ íƒí•˜ë©´ Zeny&비공정 ì´ìš©ì„ 고려하여 안내 한다.
*/
MSG_ID_C90 = 0xc90,
-/*20170405 to 20180621
+/*20170405 to 20180711
5. [<-] 버튼 : 길안내 모드 <-> 검색 모드를 바꾸거나
*/
MSG_ID_C91 = 0xc91,
-/*20170405 to 20180621
+/*20170405 to 20180711
공유하기 모드 -> 서치 모드로 ëŒì•„갈때 사용 ëœë‹¤.
*/
MSG_ID_C92 = 0xc92,
-/*20170405 to 20180621
+/*20170405 to 20180711
경험치 %lld ì–»ìŒ
*/
MSG_ID_C93 = 0xc93,
-/*20170405 to 20180621
+/*20170405 to 20180711
'%lld'ì˜ ê²½í—˜ì¹˜ë¥¼
*/
MSG_ID_C94 = 0xc94,
@@ -19291,7 +19291,7 @@ unknown error found.
= 수수료율 : ^1567fe8%^000000
100,000,001 z ì´ìƒ
= 수수료율 : ^1567fe10%^000000
-20170524 to 20180621
+20170524 to 20180711
^b- ë…¸ì  ìˆ˜ìˆ˜ë£Œ 안내^/b
ë…¸ì  ì„¤ì • ê°€ê²©ì— ë”°ë¼ ì¼ì • ë¹„ìœ¨ì˜ ìˆ˜ìˆ˜ë£Œê°€ 부가ë©ë‹ˆë‹¤.
@@ -19312,745 +19312,745 @@ unknown error found.
= 수수료율 : ^1567fe5%^000000
*/
MSG_ID_C95 = 0xc95,
-/*20170405 to 20180621
+/*20170405 to 20180711
실거래가 :
*/
MSG_ID_C96 = 0xc96,
-/*20170405 to 20180621
+/*20170405 to 20180711
※ ì•„ì´í…œ íŒë§¤ì‹œ, ì‹¤ê±°ëž˜ê°€ë§Œí¼ ì œë‹ˆë¥¼ íšë“합니다.
*/
MSG_ID_C97 = 0xc97,
-/*20170405 to 20180621
+/*20170405 to 20180711
※ ì•„ì´í…œ 구매시, ì‹¤ê±°ëž˜ê°€ë§Œí¼ ì œë‹ˆê°€ ì°¨ê°ë©ë‹ˆë‹¤.
*/
MSG_ID_C98 = 0xc98,
-/*20170405 to 20180621
+/*20170405 to 20180711
채팅방 개설
*/
MSG_ID_C99 = 0xc99,
#endif
#if PACKETVER >= 20170412
-/*20170412 to 20180621
+/*20170412 to 20180711
해당 ìºë¦­í„°ëŠ” íŒŒí‹°ê°€ìž…ì´ ê°€ëŠ¥í•˜ì§€ ì•Šì€ ë ˆë²¨ìž…ë‹ˆë‹¤.
*/
MSG_ID_C9A = 0xc9a,
-/*20170412 to 20180621
+/*20170412 to 20180711
'%lld'ì˜ ìž¡ê²½í—˜ì¹˜ë¥¼
*/
MSG_ID_C9B = 0xc9b,
-/*20170412 to 20180621
+/*20170412 to 20180711
잡경험치 %lld ì–»ìŒ
*/
MSG_ID_C9C = 0xc9c,
#endif
#if PACKETVER >= 20170419
-/*20170419 to 20180621
+/*20170419 to 20180711
현재위치(대로)ì—는 ë…¸ì ì„ 개설할 수 없습니다.
*/
MSG_ID_C9D = 0xc9d,
#endif
#if PACKETVER >= 20170426
-/*20170426 to 20180621
+/*20170426 to 20180711
초 후 가능합니다.
*/
MSG_ID_C9E = 0xc9e,
#endif
#if PACKETVER >= 20170517
-/*20170517 to 20180621
+/*20170517 to 20180711
파티ì›
*/
MSG_ID_C9F = 0xc9f,
-/*20170517 to 20180621
+/*20170517 to 20180711
SNS 전송실패(%d)
*/
MSG_ID_CA0 = 0xca0,
-/*20170517 to 20180621
+/*20170517 to 20180711
SNS 서버 연결실패
*/
MSG_ID_CA1 = 0xca1,
-/*20170517 to 20180621
+/*20170517 to 20180711
SNS ë¡œê·¸ì¸ í›„ 사용 가능합니다.
*/
MSG_ID_CA2 = 0xca2,
-/*20170517 to 20180621
+/*20170517 to 20180711
ì ‘ì† í•  수 있는 주소가 존재하지 않습니다.
*/
MSG_ID_CA3 = 0xca3,
#endif
#if PACKETVER >= 20170531
-/*20170531 to 20180621
+/*20170531 to 20180711
ë¯¸ë‹ˆíŒŒí‹°ì°½ì´ ê²¹ì³ì ¸ 있어 사용하실 수 없습니다.
*/
MSG_ID_CA4 = 0xca4,
-/*20170531 to 20180621
+/*20170531 to 20180711
ë‚˜ì˜ íŒë§¤ë…¸ì 
*/
MSG_ID_CA5 = 0xca5,
#endif
#if PACKETVER >= 20170614
-/*20170614 to 20180621
+/*20170614 to 20180711
BOX
*/
MSG_ID_CA6 = 0xca6,
-/*20170614 to 20180621
+/*20170614 to 20180711
íŒë°•ìŠ¤
*/
MSG_ID_CA7 = 0xca7,
#endif
#if PACKETVER >= 20170621
-/*20170621 to 20180621
+/*20170621 to 20180711
íŠ¸ìœ—ì„ ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CA8 = 0xca8,
#endif
#if PACKETVER >= 20170628
-/*20170628 to 20180621
+/*20170628 to 20180711
다시하기
*/
MSG_ID_CA9 = 0xca9,
/*20170628 to 20170809
제련재료가 변경ë˜ì–´ 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
-20170816 to 20180621
+20170816 to 20180711
다시하기가 비활성화ë˜ì—ˆìŠµë‹ˆë‹¤. 제련 재료를 다시 ì„ íƒí•´ì£¼ì„¸ìš”.
*/
MSG_ID_CAA = 0xcaa,
-/*20170628 to 20180621
+/*20170628 to 20180711
제련ì„ì´ ë¶€ì¡±í•˜ì—¬ 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAB = 0xcab,
-/*20170628 to 20180621
+/*20170628 to 20180711
제니가 부족하여 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAC = 0xcac,
-/*20170628 to 20180621
+/*20170628 to 20180711
대장장ì´ì˜ ì¶•ë³µì´ ë¶€ì¡±í•˜ì—¬ 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAD = 0xcad,
-/*20170628 to 20180621
+/*20170628 to 20180711
ì•„ì´í…œì´ 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAE = 0xcae,
-/*20170628 to 20180621
+/*20170628 to 20180711
모든 스테ì´í„°ìŠ¤ê°€ ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAF = 0xcaf,
-/*20170628 to 20180621
+/*20170628 to 20180711
모든 스테ì´í„°ìŠ¤ ê°ì†Œ 효과가 í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CB0 = 0xcb0,
-/*20170628 to 20180621
+/*20170628 to 20180711
OTP 비밀번호는 8ìžë¦¬ 입니다.
*/
MSG_ID_CB1 = 0xcb1,
#endif
#if PACKETVER >= 20170705
-/*20170705 to 20180621
+/*20170705 to 20180711
통합계정
*/
MSG_ID_CB2 = 0xcb2,
-/*20170705 to 20180621
+/*20170705 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬
*/
MSG_ID_CB3 = 0xcb3,
-/*20170705 to 20180621
+/*20170705 to 20180711
서비스 ì ê²€ 중입니다.
*/
MSG_ID_CB4 = 0xcb4,
-/*20170705 to 20180621
+/*20170705 to 20180711
검색어를 입력해주세요
*/
MSG_ID_CB5 = 0xcb5,
-/*20170705 to 20180621
+/*20170705 to 20180711
MOTP
*/
MSG_ID_CB6 = 0xcb6,
-/*20170705 to 20180621
+/*20170705 to 20180711
ì¸ì¦ë²ˆí˜¸
Identification number.
*/
MSG_ID_CB7 = 0xcb7,
-/*20170705 to 20180621
+/*20170705 to 20180711
휴대í°ì— ë‹¤ìš´ë°›ì€ GNJOY MOTP를 실행하여 ì¸ì¦ë²ˆí˜¸ë¥¼ 입력해 주세요.
*/
MSG_ID_CB8 = 0xcb8,
#endif
#if PACKETVER >= 20170712
-/*20170712 to 20180621
+/*20170712 to 20180711
íŒŒí‹°ìž¥ì„ ìœ„ìž„í•  파티ì›ì´ 존재하지 않습니다. 파티를 해산하시겠습니까?
*/
MSG_ID_CB9 = 0xcb9,
#endif
#if PACKETVER >= 20170719
-/*20170719 to 20180621
+/*20170719 to 20180711
- 만18세ì´ìƒ
*/
MSG_ID_CBA = 0xcba,
-/*20170719 to 20180621
+/*20170719 to 20180711
- 유료서버
*/
MSG_ID_CBB = 0xcbb,
-/*20170719 to 20180621
+/*20170719 to 20180711
- 무료서버
*/
MSG_ID_CBC = 0xcbc,
-/*20170719 to 20180621
+/*20170719 to 20180711
쾌ì 
*/
MSG_ID_CBD = 0xcbd,
-/*20170719 to 20180621
+/*20170719 to 20180711
보통
Normal
*/
MSG_ID_CBE = 0xcbe,
-/*20170719 to 20180621
+/*20170719 to 20180711
혼잡
*/
MSG_ID_CBF = 0xcbf,
-/*20170719 to 20180621
+/*20170719 to 20180711
í¬í™”
*/
MSG_ID_CC0 = 0xcc0,
-/*20170719 to 20180621
+/*20170719 to 20180711
map
*/
MSG_ID_CC1 = 0xcc1,
-/*20170719 to 20180621
+/*20170719 to 20180711
월드창고는 ì¸ë²¤í† ë¦¬ ì•„ì´í…œë§Œ 입출고 í•  수 있습니다.
*/
MSG_ID_CC2 = 0xcc2,
-/*20170719 to 20180621
+/*20170719 to 20180711
월드창고ì—는 íŽ«ì•Œì„ ìž…ê³ í•  수 없습니다.
*/
MSG_ID_CC3 = 0xcc3,
-/*20170719 to 20180621
+/*20170719 to 20180711
월드창고ì—는 제작아ì´í…œì„ ìž…ê³ í•  수 없습니다.
*/
MSG_ID_CC4 = 0xcc4,
-/*20170719 to 20180621
+/*20170719 to 20180711
%s ì—서는 출고 í•  수 없는 ì•„ì´í…œìž…니다.
*/
MSG_ID_CC5 = 0xcc5,
#endif
#if PACKETVER >= 20170726
-/*20170726 to 20180621
+/*20170726 to 20180711
ë˜ì „ 파괴
*/
MSG_ID_CC6 = 0xcc6,
-/*20170726 to 20180621
+/*20170726 to 20180711
[%s] ë‹˜ì´ ì œë ¨ì„ ì„±ê³µí•˜ì—¬, [+%d %s] ì•„ì´í…œì„ íšë“하였습니다.
*/
MSG_ID_CC7 = 0xcc7,
-/*20170726 to 20180621
+/*20170726 to 20180711
[%s] ë‹˜ì´ [+%d %s] ì•„ì´í…œì˜ ì œë ¨ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
*/
MSG_ID_CC8 = 0xcc8,
-/*20170726 to 20180621
+/*20170726 to 20180711
íŒŒí‹°ìž¥ì„ ìœ„ìž„í•œ ì´í›„ì— íƒˆí‡´í•  수 있습니다.
*/
MSG_ID_CC9 = 0xcc9,
#endif
#if PACKETVER >= 20170809
-/*20170809 to 20180621
+/*20170809 to 20180711
오름
*/
MSG_ID_CCA = 0xcca,
-/*20170809 to 20180621
+/*20170809 to 20180711
내림
*/
MSG_ID_CCB = 0xccb,
-/*20170809 to 20180621
+/*20170809 to 20180711
기본
*/
MSG_ID_CCC = 0xccc,
-/*20170809 to 20180621
+/*20170809 to 20180711
ë³€ì¡°ëœ íŒŒì¼ì´ 발견ë˜ì—ˆìŠµë‹ˆë‹¤. ê²Œìž„ì„ ë‹¤ì‹œ 실행시켜주세요.
*/
MSG_ID_CCD = 0xccd,
#endif
#if PACKETVER >= 20170823
-/*20170823 to 20180621
+/*20170823 to 20180711
%s ì€(는) ì´ë§µì—ì„œ ì´ë™ì´ ì œí•œëœ ì•„ì´í…œìž…니다.
*/
MSG_ID_CCE = 0xcce,
#endif
#if PACKETVER >= 20170906
-/*20170906 to 20180621
+/*20170906 to 20180711
스스로
먹ì´ë¨¹ê¸°
*/
MSG_ID_CCF = 0xccf,
-/*20170906 to 20180621
+/*20170906 to 20180711
ë¡œë±ìŠ¤ ìž‘ì„±ì°½ì´ ì—´ë ¤ìžˆëŠ” ë™ì•ˆ 호문í´ë£¨ìŠ¤ê°€ 먹ì´ë¥¼ 먹지 못합니다.
*/
MSG_ID_CD0 = 0xcd0,
-/*20170906 to 20180621
+/*20170906 to 20180711
호문í´ë£¨ìŠ¤ê°€ 먹ì´ë¥¼ 먹었습니다. '%s' 잔여량 %dê°œ
*/
MSG_ID_CD1 = 0xcd1,
-/*20170906 to 20180621
+/*20170906 to 20180711
호문í´ë£¨ìŠ¤ 스스로 ë¨¹ì´ ë¨¹ê¸° 활성화 On
*/
MSG_ID_CD2 = 0xcd2,
-/*20170906 to 20180621
+/*20170906 to 20180711
호문í´ë£¨ìŠ¤ 스스로 ë¨¹ì´ ë¨¹ê¸° 활성화 Off
*/
MSG_ID_CD3 = 0xcd3,
-/*20170906 to 20180621
+/*20170906 to 20180711
호문í´ë£¨ìŠ¤ëŠ” 주ì¸ì´ íšë“하는 경험치ì˜
10%만í¼ì„ ìžì‹ ì˜ 경험치로 분배 받습니다.
*/
MSG_ID_CD4 = 0xcd4,
-/*20170906 to 20180621
+/*20170906 to 20180711
확률 : %d%%
*/
MSG_ID_CD5 = 0xcd5,
-/*20170906 to 20180621
+/*20170906 to 20180711
해당 대ìƒì€ í˜¸ë¬¸ì˜ ê³µê²©ëŒ€ìƒì´ 아닙니다. 'Alt + ìš°í´ë¦­'ì„ í†µí•´ 호문í´ë£¨ìŠ¤ì˜ 공격대ìƒì„ 지정해주세요.
*/
MSG_ID_CD6 = 0xcd6,
-/*20170906 to 20180621
+/*20170906 to 20180711
í˜¸ë¬¸ì˜ ê³µê²©ëŒ€ìƒì´ 존재하지 않습니다. 'Alt + ìš°í´ë¦­'ì„ í†µí•´ 호문í´ë£¨ìŠ¤ì˜ 공격대ìƒì„ 지정해주세요.
*/
MSG_ID_CD7 = 0xcd7,
#endif
#if PACKETVER >= 20170913
-/*20170913 to 20180621
+/*20170913 to 20180711
íŒë§¤ 리스트
*/
MSG_ID_CD8 = 0xcd8,
-/*20170913 to 20180621
+/*20170913 to 20180711
구입 리스트
*/
MSG_ID_CD9 = 0xcd9,
-/*20170913 to 20180621
+/*20170913 to 20180711
신규
New
*/
MSG_ID_CDA = 0xcda,
-/*20170913 to 20180621
+/*20170913 to 20180711
ì¸ê¸°
Headgears
*/
MSG_ID_CDB = 0xcdb,
-/*20170913 to 20180621
+/*20170913 to 20180711
한정
Limited
*/
MSG_ID_CDC = 0xcdc,
-/*20170913 to 20180621
+/*20170913 to 20180711
임대장비
Rental Items
*/
MSG_ID_CDD = 0xcdd,
-/*20170913 to 20180621
+/*20170913 to 20180711
ì˜êµ¬ìž¥ë¹„
Equipments
*/
MSG_ID_CDE = 0xcde,
-/*20170913 to 20180621
+/*20170913 to 20180711
버프
Scrolls
*/
MSG_ID_CDF = 0xcdf,
-/*20170913 to 20180621
+/*20170913 to 20180711
회복
Consumables
*/
MSG_ID_CE0 = 0xce0,
-/*20170913 to 20180621
+/*20170913 to 20180711
기타
Other
*/
MSG_ID_CE1 = 0xce1,
-/*20170913 to 20180621
+/*20170913 to 20180711
특가
Special
*/
MSG_ID_CE2 = 0xce2,
-/*20170913 to 20180621
+/*20170913 to 20180711
충전하기
*/
MSG_ID_CE3 = 0xce3,
-/*20170913 to 20180621
+/*20170913 to 20180711
구입하기
*/
MSG_ID_CE4 = 0xce4,
/*20170913 to 20171206
https://payment.gnjoy.com/bill/login.grv
-20171213 to 20180621
+20171213 to 20180711
http://member.gnjoy.com/user/pay/chargelist.asp
*/
MSG_ID_CE5 = 0xce5,
-/*20170913 to 20180621
+/*20170913 to 20180711
ì•„ì´í…œ 검색
*/
MSG_ID_CE6 = 0xce6,
-/*20170913 to 20180621
+/*20170913 to 20180711
무료ìºì‹œ
*/
MSG_ID_CE7 = 0xce7,
-/*20170913 to 20180621
+/*20170913 to 20180711
무료ìºì‹œ 사용
*/
MSG_ID_CE8 = 0xce8,
-/*20170913 to 20180621
+/*20170913 to 20180711
소지ìºì‹œ
*/
MSG_ID_CE9 = 0xce9,
-/*20170913 to 20180621
+/*20170913 to 20180711
수량갱신
*/
MSG_ID_CEA = 0xcea,
-/*20170913 to 20180621
+/*20170913 to 20180711
성제(여)
*/
MSG_ID_CEB = 0xceb,
-/*20170913 to 20180621
+/*20170913 to 20180711
소울리í¼(ì—¬)
*/
MSG_ID_CEC = 0xcec,
-/*20170913 to 20180621
+/*20170913 to 20180711
성제(남)
*/
MSG_ID_CED = 0xced,
-/*20170913 to 20180621
+/*20170913 to 20180711
소울리í¼(남)
*/
MSG_ID_CEE = 0xcee,
#endif
#if PACKETVER >= 20170920
-/*20170920 to 20180621
+/*20170920 to 20180711
무게가 %d í¼ì„¼íŠ¸ ì´ìƒì¼ë•ŒëŠ” HP SPê°€ ìžì—°ì ìœ¼ë¡œ íšŒë³µì´ ë˜ì§€ 않습니다.
*/
MSG_ID_CEF = 0xcef,
-/*20170920 to 20180621
+/*20170920 to 20180711
í•œ ë²ˆì— êµ¬ìž… 가능한 ì•„ì´í…œì˜ 가짓수는 8개입니다.
*/
MSG_ID_CF0 = 0xcf0,
-/*20170920 to 20180621
+/*20170920 to 20180711
http://gift.zhaouc.com/#/index
http://gift.zhaouc.com/
*/
MSG_ID_CF1 = 0xcf1,
#endif
#if PACKETVER >= 20170927
-/*20170927 to 20180621
+/*20170927 to 20180711
UNKNOWN ERROR:%d
*/
MSG_ID_CF2 = 0xcf2,
-/*20170927 to 20180621
+/*20170927 to 20180711
NOT USER
*/
MSG_ID_CF3 = 0xcf3,
-/*20170927 to 20180621
+/*20170927 to 20180711
THIS ACCOUNT ID IS BLOCKED
*/
MSG_ID_CF4 = 0xcf4,
-/*20170927 to 20180621
+/*20170927 to 20180711
COUNTRY REJECT (OR NOT AVALIABLE USER )
*/
MSG_ID_CF5 = 0xcf5,
-/*20170927 to 20180621
+/*20170927 to 20180711
NOT MATCH PASSWORD
*/
MSG_ID_CF6 = 0xcf6,
-/*20170927 to 20180621
+/*20170927 to 20180711
NOT EMAIL CERT
*/
MSG_ID_CF7 = 0xcf7,
-/*20170927 to 20180621
+/*20170927 to 20180711
PAYPAL BLOCK
*/
MSG_ID_CF8 = 0xcf8,
-/*20170927 to 20180621
+/*20170927 to 20180711
COUNTRY REJECT
*/
MSG_ID_CF9 = 0xcf9,
-/*20170927 to 20180621
+/*20170927 to 20180711
PAYPAL BLOCK
*/
MSG_ID_CFA = 0xcfa,
-/*20170927 to 20180621
+/*20170927 to 20180711
WEB BLOCK
*/
MSG_ID_CFB = 0xcfb,
-/*20170927 to 20180621
+/*20170927 to 20180711
AGE LIMIT USER
*/
MSG_ID_CFC = 0xcfc,
-/*20170927 to 20180621
+/*20170927 to 20180711
PASSWORD HAS NOT BEEN CHANGED FOR MORE THAN 90DAYS
*/
MSG_ID_CFD = 0xcfd,
-/*20170927 to 20180621
+/*20170927 to 20180711
INPUT DATA ERROR
*/
MSG_ID_CFE = 0xcfe,
-/*20170927 to 20180621
+/*20170927 to 20180711
ERROR DATABASE
*/
MSG_ID_CFF = 0xcff,
-/*20170927 to 20180621
+/*20170927 to 20180711
ERROR SYSTEM
*/
MSG_ID_D00 = 0xd00,
/*20170927 to 20171025
%s 지불
-20171101 to 20180621
+20171101 to 20180711
%s 소모
*/
MSG_ID_D01 = 0xd01,
-/*20170927 to 20180621
+/*20170927 to 20180711
비용지불
*/
MSG_ID_D02 = 0xd02,
-/*20170927 to 20180621
+/*20170927 to 20180711
출발 가능한 ë§µì´ ì•„ë‹™ë‹ˆë‹¤.
*/
MSG_ID_D03 = 0xd03,
-/*20170927 to 20180621
+/*20170927 to 20180711
ì´ë™ 불가능한 맵입니다
*/
MSG_ID_D04 = 0xd04,
-/*20170927 to 20180621
+/*20170927 to 20180711
ì•„ì´í…œì´ 부족합니다.
*/
MSG_ID_D05 = 0xd05,
-/*20170927 to 20180621
+/*20170927 to 20180711
줄 바꿈 ì—†ì´ í•œ 줄로 입력해주세요.
*/
MSG_ID_D06 = 0xd06,
#endif
#if PACKETVER >= 20171011
-/*20171011 to 20180621
+/*20171011 to 20180711
불량 단어가 í¬í•¨ëœ ì´ë¦„ì€ ë“±ë¡í•  수 없습니다.
*/
MSG_ID_D07 = 0xd07,
#endif
#if PACKETVER >= 20171018
-/*20171018 to 20180621
+/*20171018 to 20180711
íšŒì› ê°€ìž…ì„ ìœ„í•´ ê³µì‹ í™ˆíŽ˜ì´ì§€ë¡œ ì´ë™ë©ë‹ˆë‹¤.
*/
MSG_ID_D08 = 0xd08,
#endif
#if PACKETVER >= 20171025
-/*20171025 to 20180621
+/*20171025 to 20180711
TokenAgency 서버 연결 실패
*/
MSG_ID_D09 = 0xd09,
-/*20171025 to 20180621
+/*20171025 to 20180711
과금정보
*/
MSG_ID_D0A = 0xd0a,
-/*20171025 to 20180621
+/*20171025 to 20180711
삭제예약
*/
MSG_ID_D0B = 0xd0b,
-/*20171025 to 20180621
+/*20171025 to 20180711
예약취소
*/
MSG_ID_D0C = 0xd0c,
-/*20171025 to 20180621
+/*20171025 to 20180711
게임시작
*/
MSG_ID_D0D = 0xd0d,
-/*20171025 to 20180621
+/*20171025 to 20180711
삭제
*/
MSG_ID_D0E = 0xd0e,
-/*20171025 to 20180621
+/*20171025 to 20180711
Character List
*/
MSG_ID_D0F = 0xd0f,
-/*20171025 to 20180621
+/*20171025 to 20180711
공지
Notice
*/
MSG_ID_D10 = 0xd10,
-/*20171025 to 20180621
+/*20171025 to 20180711
ìƒì„±
*/
MSG_ID_D11 = 0xd11,
-/*20171025 to 20180621
+/*20171025 to 20180711
Hair Style
*/
MSG_ID_D12 = 0xd12,
-/*20171025 to 20180621
+/*20171025 to 20180711
Hair Color
*/
MSG_ID_D13 = 0xd13,
-/*20171025 to 20180621
+/*20171025 to 20180711
중복확ì¸
*/
MSG_ID_D14 = 0xd14,
-/*20171025 to 20180621
+/*20171025 to 20180711
%d시 %d분 %d초
*/
MSG_ID_D15 = 0xd15,
-/*20171025 to 20180621
+/*20171025 to 20180711
MOTP ìž…ë ¥ ì‹œê°„ì´ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤. 처ìŒë¶€í„° 다시 로그ì¸í•´ì£¼ì‹­ì‹œì˜¤.
*/
MSG_ID_D16 = 0xd16,
-/*20171025 to 20180621
+/*20171025 to 20180711
뒤로가기
*/
MSG_ID_D17 = 0xd17,
#endif
#if PACKETVER >= 20171101
-/*20171101 to 20180621
+/*20171101 to 20180711
ì•„ì´í…œì„ 사용할 수 없습니다.
*/
MSG_ID_D18 = 0xd18,
-/*20171101 to 20180621
+/*20171101 to 20180711
ë™ì¼í•œ 맵으로 ì´ë™í•  수 없습니다.
*/
MSG_ID_D19 = 0xd19,
-/*20171101 to 20180621
+/*20171101 to 20180711
사ë§ì‹œ ì´ë™ì´ 불가능합니다.
*/
MSG_ID_D1A = 0xd1a,
-/*20171101 to 20180621
+/*20171101 to 20180711
ìºë¦­í„° ìƒì„±
*/
MSG_ID_D1B = 0xd1b,
#endif
#if PACKETVER >= 20171108
-/*20171108 to 20180621
+/*20171108 to 20180711
모험가 중개소 등ë¡
*/
MSG_ID_D1C = 0xd1c,
-/*20171108 to 20180621
+/*20171108 to 20180711
모집 중단
*/
MSG_ID_D1D = 0xd1d,
-/*20171108 to 20180621
+/*20171108 to 20180711
모험가 중개소 설정
*/
MSG_ID_D1E = 0xd1e,
-/*20171108 to 20180621
+/*20171108 to 20180711
전 지역
*/
MSG_ID_D1F = 0xd1f,
-/*20171108 to 20180621
+/*20171108 to 20180711
ì§ì ‘기재
*/
MSG_ID_D20 = 0xd20,
-/*20171108 to 20180621
+/*20171108 to 20180711
검사계열
*/
MSG_ID_D21 = 0xd21,
-/*20171108 to 20180621
+/*20171108 to 20180711
법사계열
*/
MSG_ID_D22 = 0xd22,
-/*20171108 to 20180621
+/*20171108 to 20180711
ê¶ìˆ˜ê³„ì—´
*/
MSG_ID_D23 = 0xd23,
-/*20171108 to 20180621
+/*20171108 to 20180711
복사계열
*/
MSG_ID_D24 = 0xd24,
-/*20171108 to 20180621
+/*20171108 to 20180711
ìƒì¸ê³„ì—´
*/
MSG_ID_D25 = 0xd25,
-/*20171108 to 20180621
+/*20171108 to 20180711
ë„둑계열
*/
MSG_ID_D26 = 0xd26,
-/*20171108 to 20180621
+/*20171108 to 20180711
태권계열
*/
MSG_ID_D27 = 0xd27,
-/*20171108 to 20180621
+/*20171108 to 20180711
ë‹Œìžê³„ì—´
*/
MSG_ID_D28 = 0xd28,
-/*20171108 to 20180621
+/*20171108 to 20180711
건슬ë§ê±°ê³„ì—´
*/
MSG_ID_D29 = 0xd29,
-/*20171108 to 20180621
+/*20171108 to 20180711
ë„람족계열
*/
MSG_ID_D2A = 0xd2a,
-/*20171108 to 20180621
+/*20171108 to 20180711
지역명
*/
MSG_ID_D2B = 0xd2b,
-/*20171108 to 20180621
+/*20171108 to 20180711
지역명 검색
*/
MSG_ID_D2C = 0xd2c,
-/*20171108 to 20180621
+/*20171108 to 20180711
가입 요청하기
*/
MSG_ID_D2D = 0xd2d,
-/*20171108 to 20180621
+/*20171108 to 20180711
신고하기
*/
MSG_ID_D2E = 0xd2e,
-/*20171108 to 20180621
+/*20171108 to 20180711
파티 모집 중단
*/
MSG_ID_D2F = 0xd2f,
-/*20171108 to 20180621
+/*20171108 to 20180711
ì§€ì—­ëª…ì„ ìž…ë ¥í•´ì£¼ì„¸ìš”.
*/
MSG_ID_D30 = 0xd30,
-/*20171108 to 20180621
+/*20171108 to 20180711
지역
*/
MSG_ID_D31 = 0xd31,
-/*20171108 to 20180621
+/*20171108 to 20180711
ì „ ì§ì—…
*/
MSG_ID_D32 = 0xd32,
-/*20171108 to 20180621
+/*20171108 to 20180711
로그ì¸
*/
MSG_ID_D33 = 0xd33,
-/*20171108 to 20180621
+/*20171108 to 20180711
계정
*/
MSG_ID_D34 = 0xd34,
-/*20171108 to 20180621
+/*20171108 to 20180711
종료
Exit
*/
MSG_ID_D35 = 0xd35,
-/*20171108 to 20180621
+/*20171108 to 20180711
ì‹ ì²­
*/
MSG_ID_D36 = 0xd36,
-/*20171108 to 20180621
+/*20171108 to 20180711
ì ‘ì†
*/
MSG_ID_D37 = 0xd37,
-/*20171108 to 20180621
+/*20171108 to 20180711
확ì¸
*/
MSG_ID_D38 = 0xd38,
-/*20171108 to 20180621
+/*20171108 to 20180711
휴대í°ì— ë‹¤ìš´ë°›ì€ GNJOY MOTP를
*/
MSG_ID_D39 = 0xd39,
-/*20171108 to 20180621
+/*20171108 to 20180711
실행하여 ì¸ì¦ë²ˆí˜¸ë¥¼ 입력해 주세요.
*/
MSG_ID_D3A = 0xd3a,
-/*20171108 to 20180621
+/*20171108 to 20180711
NPCê°€ 있는 ë§µì˜ ëžœë¤ ì¢Œí‘œë¡œ ì´ë™ ë©ë‹ˆë‹¤.
*/
MSG_ID_D3B = 0xd3b,
-/*20171108 to 20180621
+/*20171108 to 20180711
태권
*/
MSG_ID_D3C = 0xd3c,
/*20171108 to 20171115
ë‹˜ì´ ì°¨ë‹¨ ìƒíƒœë¡œ 설정ë˜ì—ˆìŠµë‹ˆë‹¤.
-20171122 to 20180621
+20171122 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ìƒíƒœ
*/
MSG_ID_D3D = 0xd3d,
@@ -20058,346 +20058,346 @@ NPCê°€ 있는 ë§µì˜ ëžœë¤ ì¢Œí‘œë¡œ ì´ë™ ë©ë‹ˆë‹¤.
#if PACKETVER >= 20171115
/*20171115 to 20171115
ë‹˜ì„ ì°¨ë‹¨ ìƒíƒœë¡œ ì„¤ì •í•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
-20171122 to 20180621
+20171122 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ 요청 실패
*/
MSG_ID_D3E = 0xd3e,
/*20171115 to 20171115
ë‹˜ì„ ì°¨ë‹¨ ìƒíƒœë¡œ ì„¤ì •í•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.(ì¸ì› 초과)
-20171122 to 20180621
+20171122 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ 요청실패 (ì¸ì›ì´ˆê³¼)
*/
MSG_ID_D3F = 0xd3f,
/*20171115 to 20171115
ë‹˜ì´ ì°¨ë‹¨ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
-20171122 to 20180621
+20171122 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ìƒíƒœ
*/
MSG_ID_D40 = 0xd40,
/*20171115 to 20171115
ë‹˜ì„ ì°¨ë‹¨ í•´ì œí•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
-20171122 to 20180621
+20171122 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ 요청실패
*/
MSG_ID_D41 = 0xd41,
/*20171115 to 20171115
ë‹˜ì„ ì°¨ë‹¨ í•´ì œí•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.(ì¸ì› 초과)
-20171122 to 20180621
+20171122 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ 요청실패 (ì¸ì›ì´ˆê³¼)
*/
MSG_ID_D42 = 0xd42,
-/*20171115 to 20180621
+/*20171115 to 20180711
차단 리스트가 없습니다
*/
MSG_ID_D43 = 0xd43,
-/*20171115 to 20180621
+/*20171115 to 20180711
-차단 리스트-
*/
MSG_ID_D44 = 0xd44,
-/*20171115 to 20180621
+/*20171115 to 20180711
진행중
Act
*/
MSG_ID_D45 = 0xd45,
-/*20171115 to 20180621
+/*20171115 to 20180711
추천
Rec
*/
MSG_ID_D46 = 0xd46,
-/*20171115 to 20180621
+/*20171115 to 20180711
보류중
Pen
*/
MSG_ID_D47 = 0xd47,
-/*20171115 to 20180621
+/*20171115 to 20180711
QUEST
*/
MSG_ID_D48 = 0xd48,
-/*20171115 to 20180621
+/*20171115 to 20180711
ë‚´ìš©
For
*/
MSG_ID_D49 = 0xd49,
-/*20171115 to 20180621
+/*20171115 to 20180711
몬스터
*/
MSG_ID_D4A = 0xd4a,
-/*20171115 to 20180621
+/*20171115 to 20180711
ë³´ìƒ
*/
MSG_ID_D4B = 0xd4b,
-/*20171115 to 20180621
+/*20171115 to 20180711
EXP
*/
MSG_ID_D4C = 0xd4c,
-/*20171115 to 20180621
+/*20171115 to 20180711
JEXP
*/
MSG_ID_D4D = 0xd4d,
-/*20171115 to 20180621
+/*20171115 to 20180711
ì•„ì´í…œ
Item
*/
MSG_ID_D4E = 0xd4e,
-/*20171115 to 20180621
+/*20171115 to 20180711
진행/보류
*/
MSG_ID_D4F = 0xd4f,
-/*20171115 to 20180621
+/*20171115 to 20180711
하단으로 ì´ë™
*/
MSG_ID_D50 = 0xd50,
-/*20171115 to 20180621
+/*20171115 to 20180711
간편 í€˜ìŠ¤íŠ¸ì°½ì— í‘œì‹œ
*/
MSG_ID_D51 = 0xd51,
-/*20171115 to 20180621
+/*20171115 to 20180711
입력시간
*/
MSG_ID_D52 = 0xd52,
#endif
#if PACKETVER >= 20171122
-/*20171122 to 20180621
+/*20171122 to 20180711
ì•„ì´ë”” 저장
*/
MSG_ID_D53 = 0xd53,
-/*20171122 to 20180621
+/*20171122 to 20180711
비밀번호
Password
*/
MSG_ID_D54 = 0xd54,
-/*20171122 to 20180621
+/*20171122 to 20180711
ì•„ì´ë””
*/
MSG_ID_D55 = 0xd55,
-/*20171122 to 20180621
+/*20171122 to 20180711
회ì›ê°€ìž…
*/
MSG_ID_D56 = 0xd56,
-/*20171122 to 20180621
+/*20171122 to 20180711
노비스계열
*/
MSG_ID_D57 = 0xd57,
-/*20171122 to 20180621
+/*20171122 to 20180711
슈í¼ë…¸ë¹„스계열
*/
MSG_ID_D58 = 0xd58,
-/*20171122 to 20180621
+/*20171122 to 20180711
모험가 중개소 등ë¡ì— 실패했습니다.
*/
MSG_ID_D59 = 0xd59,
-/*20171122 to 20180621
+/*20171122 to 20180711
모험가 ì¤‘ê°œì†Œì— ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D5A = 0xd5a,
/*20171122 to 20180328
ì§ì—…ì„ í•œ ê°œ ì´ìƒ ì„ íƒí•´ì£¼ì„¸ìš”.
-20180404 to 20180621
+20180404 to 20180711
ëª¨ì§‘ì„ í¬ë§í•˜ëŠ” 파티ì›ì˜ ì§ì—…ì„ í•œ ê°œ ì´ìƒ ì„ íƒí•´ 주세요.
*/
MSG_ID_D5B = 0xd5b,
-/*20171122 to 20180621
+/*20171122 to 20180711
ì§€ì—­ëª…ì„ ë‘ ê¸€ìž ì´ìƒ 입력해주세요.
*/
MSG_ID_D5C = 0xd5c,
-/*20171122 to 20180621
+/*20171122 to 20180711
%.1f%% (+ %s서버 %.1f%%)
*/
MSG_ID_D5D = 0xd5d,
-/*20171122 to 20180621
+/*20171122 to 20180711
/ex (ìºë¦­í„°ì´ë¦„) or /차단 (ìºë¦­í„°ì´ë¦„) : 해당 ìºë¦­í„°ì— 대해 전체채팅 ë° ê·“ë§ ì°¨ë‹¨
*/
MSG_ID_D5E = 0xd5e,
-/*20171122 to 20180621
+/*20171122 to 20180711
/in (ìºë¦­í„°ì´ë¦„) or /í•´ì œ (ìºë¦­í„°ì´ë¦„) : 해당 ìºë¦­í„°ì— 대해 전체채팅 ë° ê·“ë§ í—ˆìš©
*/
MSG_ID_D5F = 0xd5f,
-/*20171122 to 20180621
+/*20171122 to 20180711
/ex or /차단 : 전체채팅 ë° ê·“ë§ ì°¨ë‹¨ ìºë¦­í„° 리스트
*/
MSG_ID_D60 = 0xd60,
-/*20171122 to 20180621
+/*20171122 to 20180711
/exall or /차단전부 : 모ë‘ì—게 전체채팅 ë° ê·“ë§ ì°¨ë‹¨
*/
MSG_ID_D61 = 0xd61,
-/*20171122 to 20180621
+/*20171122 to 20180711
/inall or /해제전부 : 모ë‘ì—게 전체채팅 ë° ê·“ë§ í—ˆìš©
*/
MSG_ID_D62 = 0xd62,
-/*20171122 to 20180621
+/*20171122 to 20180711
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ìƒíƒœ
*/
MSG_ID_D63 = 0xd63,
-/*20171122 to 20180621
+/*20171122 to 20180711
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ìš”ì²­ 실패
*/
MSG_ID_D64 = 0xd64,
-/*20171122 to 20180621
+/*20171122 to 20180711
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ìƒíƒœ
*/
MSG_ID_D65 = 0xd65,
-/*20171122 to 20180621
+/*20171122 to 20180711
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ìš”ì²­ 실패
*/
MSG_ID_D66 = 0xd66,
-/*20171122 to 20180621
+/*20171122 to 20180711
오프ë‹
*/
MSG_ID_D67 = 0xd67,
#endif
#if PACKETVER >= 20171206
-/*20171206 to 20180621
+/*20171206 to 20180711
ë¡œê·¸ì¸ í™”ë©´ìœ¼ë¡œ ëŒì•„가시겠습니까?
*/
MSG_ID_D68 = 0xd68,
-/*20171206 to 20180621
+/*20171206 to 20180711
힘과 ê³µê²©ë ¥ì´ ê°•í•´ì¡ŒìŠµë‹ˆë‹¤.
*/
MSG_ID_D69 = 0xd69,
-/*20171206 to 20180621
+/*20171206 to 20180711
힘, 지능, ì†ìž¬ì£¼ ë° ëª…ì¤‘ë¥ ì´ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
*/
MSG_ID_D6A = 0xd6a,
-/*20171206 to 20180621
+/*20171206 to 20180711
ë°©ì–´ë ¥ ë° HPê°€ ì¦ê°€ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D6B = 0xd6b,
-/*20171206 to 20180621
+/*20171206 to 20180711
젤스타
*/
MSG_ID_D6C = 0xd6c,
-/*20171206 to 20180621
+/*20171206 to 20180711
계정버프
*/
MSG_ID_D6D = 0xd6d,
-/*20171206 to 20180621
+/*20171206 to 20180711
정액서비스
*/
MSG_ID_D6E = 0xd6e,
#endif
#if PACKETVER >= 20171213
-/*20171213 to 20180621
+/*20171213 to 20180711
현재 ì ‘ì†ì´ 지연ë˜ê³  있습니다. 순차ì ìœ¼ë¡œ ì ‘ì†ì´ 가능하니 ìž ì‹œ 후 ìž¬ì ‘ì† ë¶€íƒë“œë¦½ë‹ˆë‹¤.
*/
MSG_ID_D6F = 0xd6f,
-/*20171213 to 20180621
+/*20171213 to 20180711
현재 ì ‘ì†ì´ 지연ë˜ê³  있으니 ìž ì‹œ 후 ìž¬ì ‘ì† ë¶€íƒë“œë¦½ë‹ˆë‹¤.
*/
MSG_ID_D70 = 0xd70,
-/*20171213 to 20180621
+/*20171213 to 20180711
불량 단어가 í¬í•¨ëœ ì´ë¦„ì€ ê²€ìƒ‰í•  수 없습니다.
*/
MSG_ID_D71 = 0xd71,
-/*20171213 to 20180621
+/*20171213 to 20180711
파티 마스터가 ìš”ì²­ì„ ë°›ì„ ìˆ˜ 없는 ë§µì— ìžˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D72 = 0xd72,
-/*20171213 to 20180621
+/*20171213 to 20180711
파티를 ì°¾ì„ ìˆ˜ 없습니다.
*/
MSG_ID_D73 = 0xd73,
/*20171213 to 20180328
ë‹˜ì˜ íŒŒí‹°ìš”ì²­ìž…ë‹ˆë‹¤.
-20180404 to 20180621
+20180404 to 20180711
ë‹˜ì˜ íŒŒí‹° 가입 요청입니다.
*/
MSG_ID_D74 = 0xd74,
#endif
#if PACKETVER >= 20171220
-/*20171220 to 20180621
+/*20171220 to 20180711
http://ro.gnjoy.com
*/
MSG_ID_D75 = 0xd75,
-/*20171220 to 20180621
+/*20171220 to 20180711
â–²
*/
MSG_ID_D76 = 0xd76,
-/*20171220 to 20180621
+/*20171220 to 20180711
â–¼
*/
MSG_ID_D77 = 0xd77,
#endif
#if PACKETVER >= 20171227
-/*20171227 to 20180621
+/*20171227 to 20180711
ì´ë¯¸ 친구입니다
*/
MSG_ID_D78 = 0xd78,
-/*20171227 to 20180621
+/*20171227 to 20180711
ìƒëŒ€ë°©ì„ ì°¾ì„ ìˆ˜ 없습니다
*/
MSG_ID_D79 = 0xd79,
-/*20171227 to 20180621
+/*20171227 to 20180711
ì´ë¯¸ 다른 ìºë¦­í„°ê°€ 친구 ì‹ ì²­ 중입니다.
*/
MSG_ID_D7A = 0xd7a,
-/*20171227 to 20180621
+/*20171227 to 20180711
혼구슬 표시 ON
*/
MSG_ID_D7B = 0xd7b,
-/*20171227 to 20180621
+/*20171227 to 20180711
혼구슬 표시 OFF
*/
MSG_ID_D7C = 0xd7c,
#endif
#if PACKETVER >= 20180117
-/*20180117 to 20180621
+/*20180117 to 20180711
해당 ê³„ì •ì€ 2ì°¨ 비밀번호 오입력으로 ì¸í•´ 게임내 ì ‘ì†ì´ ì œí•œëœ ìƒíƒœìž…니다.
%02d시간 %02d분 í›„ì— ì ‘ì†ì œí•œì´ í•´ì œë˜ë©°, ì ‘ì†ì œí•œì˜ 해제는 홈페ì´ì§€ -> ê°œì¸ì •ë³´ë³€ê²½ -> 2ì°¨ 비밀번호 ì—ì„œ 본ì¸ì¸ì¦ 후 진행해주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_D7D = 0xd7d,
-/*20180117 to 20180621
+/*20180117 to 20180711
보안패스워드를 3회ì´ìƒ 틀리셨습니다. 계정 ë³´ì•ˆì„ ìœ„í•´ 24시간ë™ì•ˆ 게임내 ì ‘ì†ì´ 제한ë©ë‹ˆë‹¤.
ì ‘ì†ì œí•œì˜ 해제는 홈페ì´ì§€ -> ê°œì¸ì •ë³´ë³€ê²½ -> 2ì°¨ 비밀번호 ì—ì„œ 본ì¸ì¸ì¦ 후 진행해주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_D7E = 0xd7e,
-/*20180117 to 20180621
+/*20180117 to 20180711
ìš´ì˜ì§„
*/
MSG_ID_D7F = 0xd7f,
-/*20180117 to 20180621
+/*20180117 to 20180711
%dì¼ì°¨ ì¶œì„ ë³´ìƒì´ 지급ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D80 = 0xd80,
/*20180117 to 20180117
계정설정정보 ë°›ì•„ì˜¤ëŠ”ë° ì‹¤íŒ¨ 했습니다.( 재시ë„를 위해서는 재시작 해야 합니다. )
-20180124 to 20180621
+20180124 to 20180711
계정 설정 ë°ì´í„°ë¥¼ 불러오는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. ( 재시ë„를 위해서는 재시작 해야 합니다. )
*/
MSG_ID_D81 = 0xd81,
-/*20180117 to 20180621
+/*20180117 to 20180711
해당 ìŠ¤í‚¬ì€ íŒŒí‹° ìƒíƒœì—ì„œ 사용 가능합니다.
*/
MSG_ID_D82 = 0xd82,
#endif
#if PACKETVER >= 20180124
-/*20180124 to 20180621
+/*20180124 to 20180711
파티 ëª¨ì§‘ì„ ì¤‘ë‹¨í•˜ì˜€ìŠµë‹ˆë‹¤.
*/
MSG_ID_D83 = 0xd83,
-/*20180124 to 20180621
+/*20180124 to 20180711
길드 ìƒë‚© 경험치는 최대 %d%%까지 가능합니다.
*/
MSG_ID_D84 = 0xd84,
-/*20180124 to 20180621
+/*20180124 to 20180711
길드 ë ˆë²¨ì´ ìµœëŒ€ì—¬ì„œ ë” ì´ìƒ 경험치를 ìƒë‚©í•  수 없습니다.
*/
MSG_ID_D85 = 0xd85,
#endif
#if PACKETVER >= 20180207
-/*20180207 to 20180621
+/*20180207 to 20180711
ê³„ì •ë³´ì•ˆì„ ìœ„í•˜ì—¬ MOTP미사용ìžëŠ” 홈페ì´ì§€ 로그ì¸ë§Œ 가능합니다.
홈페ì´ì§€ë¡œ 로그ì¸ì„ ì‹œë„해주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_D86 = 0xd86,
-/*20180207 to 20180621
+/*20180207 to 20180711
물리 공격력과 마법 ê³µê²©ë ¥ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D87 = 0xd87,
-/*20180207 to 20180621
+/*20180207 to 20180711
물리 공격력과 마법 ê³µê²©ë ¥ì´ ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D88 = 0xd88,
-/*20180207 to 20180621
+/*20180207 to 20180711
%s 출ì„ì²´í¬ ë³´ìƒ
%s Attendance Check Reward
*/
@@ -20405,324 +20405,330 @@ http://ro.gnjoy.com
/*20180207 to 20180502
ì´ë²¤íŠ¸ 기간 : %02dì›” %02dì¼ ~ %2dì›” %2dì¼ 24:00까지
Event period : From %02d/%02d ~ Until %2d/%2d (Month/Day) 24:00
-20180516 to 20180621
+20180516 to 20180711
ì´ë²¤íŠ¸ 기간 : %02dì›” %02dì¼ ~ %02dì›” %02dì¼ 24:00까지
*/
MSG_ID_D8A = 0xd8a,
-/*20180207 to 20180621
+/*20180207 to 20180711
%dì¼ì°¨
%d Day
*/
MSG_ID_D8B = 0xd8b,
-/*20180207 to 20180621
+/*20180207 to 20180711
%dì¼ì°¨ 출ì„ì²´í¬
í´ë¦­í•´ì£¼ì„¸ìš”~!
%d Day attendance check
Please click~!
*/
MSG_ID_D8C = 0xd8c,
-/*20180207 to 20180621
+/*20180207 to 20180711
%dì¼ì°¨ ì¶œì„ ì„±ê³µ!
%d Day attendance success!
*/
MSG_ID_D8D = 0xd8d,
-/*20180207 to 20180621
+/*20180207 to 20180711
D-day
*/
MSG_ID_D8E = 0xd8e,
-/*20180207 to 20180621
+/*20180207 to 20180711
ì¼
Day
*/
MSG_ID_D8F = 0xd8f,
-/*20180207 to 20180621
+/*20180207 to 20180711
출ì„ì²´í¬ì— 실패하였습니다. 다시 실행해주세요.
Attendance Check failed. Please run again.
*/
MSG_ID_D90 = 0xd90,
-/*20180207 to 20180621
+/*20180207 to 20180711
출ì„ì²´í¬
Attendance Check
*/
MSG_ID_D91 = 0xd91,
-/*20180207 to 20180621
+/*20180207 to 20180711
현재 출ì„ì²´í¬ ì´ë²¤íŠ¸ ê¸°ê°„ì´ ì•„ë‹™ë‹ˆë‹¤
This is not the current attendance check event
*/
MSG_ATTENDANCE_UNAVAILABLE = 0xd92,
/*20180207 to 20180328
길드 ìƒë‚© 경험치가 maxì— ë„달하여, ë” ì´ìƒ 길드 경험치를 누ì í•  수 없습니다
-20180404 to 20180621
+20180404 to 20180711
길드 ìƒë‚© 경험치가 maxì— ë„달하여, ë” ì´ìƒ 길드 경험치를 누ì í•  수 없습니다.
*/
MSG_ID_D93 = 0xd93,
-/*20180207 to 20180621
+/*20180207 to 20180711
ê°œì¸ ìƒë‚© 경험치가 maxì— ë„달하여, ë” ì´ìƒ 길드 경험치를 누ì í•  수 없습니다.
*/
MSG_ID_D94 = 0xd94,
#endif
#if PACKETVER >= 20180213
-/*20180213 to 20180621
+/*20180213 to 20180711
메시지
*/
MSG_ID_D95 = 0xd95,
-/*20180213 to 20180621
+/*20180213 to 20180711
íŠ¸ìœ„í„°ì— ë©”ì„¸ì§€ ì „ì†¡ì„ ì‹¤íŒ¨ 했습니다.
*/
MSG_ID_D96 = 0xd96,
-/*20180213 to 20180621
+/*20180213 to 20180711
ì˜ë¬¸ 4ìž, 한글 2ìž ì´ìƒìœ¼ë¡œ 입력해야 합니다.
Enter 4 english words and 2 chinese words
*/
MSG_ID_D97 = 0xd97,
#endif
#if PACKETVER >= 20180307
-/*20180307 to 20180621
+/*20180307 to 20180711
ëª¬ìŠ¤í„°ì˜ í…Œì´ë°ì´ 불가능한 지역입니다.
*/
MSG_ID_D98 = 0xd98,
#endif
#if PACKETVER >= 20180321
-/*20180321 to 20180621
+/*20180321 to 20180711
순위를 가져오고 있습니다...
*/
MSG_ID_D99 = 0xd99,
-/*20180321 to 20180621
+/*20180321 to 20180711
해당 ìŠ¤í‚¬ì€ íŒŒí‹°ìž¥ì¼ë•Œë§Œ 사용 가능합니다.
*/
MSG_ID_D9A = 0xd9a,
#endif
#if PACKETVER >= 20180404
-/*20180404 to 20180621
+/*20180404 to 20180711
íŒŒíŠ¸ë„ˆì˜ SPê°€ 부족하거나, 스킬 사용 불가 ìƒíƒœìž…니다.
*/
MSG_ID_D9B = 0xd9b,
-/*20180404 to 20180621
+/*20180404 to 20180711
아르바ì´íŠ¸ ë…¸ì  ê°•ì œ 종료 알림메ì¼
*/
MSG_ID_D9C = 0xd9c,
-/*20180404 to 20180621
+/*20180404 to 20180711
안녕하세요. ìš´ì˜íŒ€ìž…니다.
해당 아르바ì´íŠ¸ ë…¸ì ì€ ìš´ì˜ì •ì±… 위배ë˜ëŠ” ì‚¬í•­ì´ í™•ì¸ë˜ì–´ ê°•ì œ 종료ë˜ì—ˆìŠµë‹ˆë‹¤.
ìžì„¸í•œ 확ì¸ì„ ì›í•˜ì‹œëŠ” 경우ì—는 1:1 문ì˜ë¥¼ 접수해 주시기 ë°”ëžë‹ˆë‹¤.
ê°ì‚¬í•©ë‹ˆë‹¤
*/
MSG_ID_D9D = 0xd9d,
-/*20180404 to 20180621
+/*20180404 to 20180711
50% ì´ìƒì˜ ê°’ì„ ìž…ë ¥í•  수 없습니다.
*/
MSG_ID_D9E = 0xd9e,
-/*20180404 to 20180621
+/*20180404 to 20180711
파티 가입 ìš”ì²­ì„ ë³´ëƒˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D9F = 0xd9f,
-/*20180404 to 20180621
+/*20180404 to 20180711
모험가 ì¤‘ê°œì†Œì— íŒŒí‹°ë¥¼ 등ë¡í•  수 없습니다
*/
MSG_ID_DA0 = 0xda0,
-/*20180404 to 20180621
+/*20180404 to 20180711
수ë½
*/
MSG_ID_DA1 = 0xda1,
-/*20180404 to 20180621
+/*20180404 to 20180711
ê±°ì ˆ
*/
MSG_ID_DA2 = 0xda2,
-/*20180404 to 20180621
+/*20180404 to 20180711
설정 ê¶Œí•œì€ íŒŒí‹°ìž¥ì—게 있습니다.
*/
MSG_ID_DA3 = 0xda3,
-/*20180404 to 20180621
+/*20180404 to 20180711
해당 ìºë¦­í„°ë¥¼ ì°¾ì„ ìˆ˜ 없습니다.
*/
MSG_ID_DA4 = 0xda4,
-/*20180404 to 20180621
+/*20180404 to 20180711
ë…¸ì  ê°•ì œ ì² ê±°
*/
MSG_ID_DA5 = 0xda5,
-/*20180404 to 20180621
+/*20180404 to 20180711
해당 íŒŒí‹°ì˜ íŒŒí‹°ìž¥ì„ ì°¾ì„ ìˆ˜ 없습니다.
*/
MSG_ID_DA6 = 0xda6,
-/*20180404 to 20180621
+/*20180404 to 20180711
ìž¡ë ˆë²¨ì´ ë‚®ì•„ íŒŒí‹°ì— ê°€ìž… í•  수 없습니다.
*/
MSG_ID_DA7 = 0xda7,
-/*20180404 to 20180621
+/*20180404 to 20180711
현재 요청ìžê°€ íŒŒí‹°ê°€ìž…ì´ ë¶ˆê°€ëŠ¥í•œ ì§€ì—­ì— ìžˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DA8 = 0xda8,
-/*20180404 to 20180621
+/*20180404 to 20180711
파티 ì¸ì›ìˆ˜ê°€ 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DA9 = 0xda9,
-/*20180404 to 20180621
+/*20180404 to 20180711
%s íŒŒí‹°ì˜ íŒŒí‹°ìž¥ì´ íŒŒí‹° ê°€ìž…ì„ ìŠ¹ì¸í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAA = 0xdaa,
-/*20180404 to 20180621
+/*20180404 to 20180711
%s íŒŒí‹°ì˜ íŒŒí‹°ìž¥ì´ íŒŒí‹° ê°€ìž…ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAB = 0xdab,
-/*20180404 to 20180621
+/*20180404 to 20180711
%s ë‹˜ì´ ì´ë¯¸ íŒŒí‹°ì— ê°€ìž… 중입니다.
*/
MSG_ID_DAC = 0xdac,
-/*20180404 to 20180621
+/*20180404 to 20180711
%s ë‹˜ì˜ íŒŒí‹° ê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAD = 0xdad,
-/*20180404 to 20180621
+/*20180404 to 20180711
%s ë‹˜ì˜ íŒŒí‹° ê°€ìž…ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAE = 0xdae,
-/*20180404 to 20180621
+/*20180404 to 20180711
파티 ìš”ì²­ì„ ë°›ì„ ìˆ˜ 없는 ìƒíƒœì—¬ì„œ %së‹˜ì˜ ì‹ ì²­ì´ ê±°ì ˆë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAF = 0xdaf,
-/*20180404 to 20180621
+/*20180404 to 20180711
모험가 중개소 리스트
*/
MSG_ID_DB0 = 0xdb0,
-/*20180404 to 20180621
+/*20180404 to 20180711
파티 가입 요청
*/
MSG_ID_DB1 = 0xdb1,
-/*20180404 to 20180621
+/*20180404 to 20180711
íŒŒí‹°ìž¥ì´ ì•„ë‹Œ 경우, 모험가 ì¤‘ê°œì†Œì— íŒŒí‹°ë¥¼ 등ë¡í•  수 없습니다.
*/
MSG_ID_DB2 = 0xdb2,
/*20180404 to 20180404
파티 모집 ì¤‘ë‹¨ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
-20180418 to 20180621
+20180418 to 20180711
파티 ëª¨ì§‘ì„ ì¤‘ë‹¨í•  수 없습니다.
*/
MSG_ID_DB3 = 0xdb3,
#endif
#if PACKETVER >= 20180418
-/*20180418 to 20180621
+/*20180418 to 20180711
존재하지 않는 파티 글입니다.
*/
MSG_ID_DB4 = 0xdb4,
/*20180418 to 20180418
시야 확장
-20180425 to 20180621
+20180425 to 20180711
Zoom Out
*/
MSG_ID_DB5 = 0xdb5,
/*20180418 to 20180418
%s : ì‹œì•¼í™•ìž¥ì„ ì¼œê±°ë‚˜ ëŒìˆ˜ 있습니다 On Off
-20180425 to 20180621
+20180425 to 20180711
%s : Zoom Outì„ ì¼œê±°ë‚˜ ëŒìˆ˜ 있습니다 On Off
*/
MSG_ID_DB6 = 0xdb6,
/*20180418 to 20180418
시야를 확장합니다(On)
-20180425 to 20180621
+20180425 to 20180711
Zoom Out ê¸°ëŠ¥ì„ ì¼­ë‹ˆë‹¤ (On)
*/
MSG_ID_DB7 = 0xdb7,
/*20180418 to 20180418
ì‹œì•¼í™•ìž¥ì„ í•´ì œí•©ë‹ˆë‹¤(Off)
-20180425 to 20180621
+20180425 to 20180711
Zoom Out ê¸°ëŠ¥ì„ í•´ì œí•©ë‹ˆë‹¤ (Off)
*/
MSG_ID_DB8 = 0xdb8,
/*20180418 to 20180418
/expandsight
-20180425 to 20180621
+20180425 to 20180711
/zoom
*/
MSG_ID_DB9 = 0xdb9,
-/*20180418 to 20180621
+/*20180418 to 20180711
모험가 중개소
*/
MSG_ID_DBA = 0xdba,
-/*20180418 to 20180621
+/*20180418 to 20180711
íŒŒí‹°ìž¥ì¸ ê²½ìš°, 가입 ìš”ì²­ì„ í•  수 없습니다.
*/
MSG_ID_DBB = 0xdbb,
-/*20180418 to 20180621
+/*20180418 to 20180711
모험가 ì¤‘ê°œì†Œì— ë“±ë¡ ì¤‘ìž…ë‹ˆë‹¤. 잠시만 기다려 주세요.
*/
MSG_ID_DBC = 0xdbc,
-/*20180418 to 20180621
+/*20180418 to 20180711
ë” ì´ìƒ ì§ì—…ì„ ì„ íƒí•  수 없습니다.
*/
MSG_ID_DBD = 0xdbd,
-/*20180418 to 20180621
+/*20180418 to 20180711
게임 중 해당 ìœ ì €ì˜ ê°€ìž… ìš”ì²­ì„ ë°›ì§€ 않습니다.
*/
MSG_ID_DBE = 0xdbe,
#endif
#if PACKETVER >= 20180502
-/*20180502 to 20180621
+/*20180502 to 20180711
ìž ì‹œ 후 다시 열어주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_DBF = 0xdbf,
-/*20180502 to 20180621
+/*20180502 to 20180711
공성시작 ì „ %d분 ë™ì•ˆì€ 해당 ê¸°ëŠ¥ì„ ì´ìš©í•˜ì‹¤ 수 없습니다.
*/
MSG_ID_DC0 = 0xdc0,
#endif
#if PACKETVER >= 20180516
-/*20180516 to 20180621
+/*20180516 to 20180711
/viewclear
*/
MSG_ID_DC1 = 0xdc1,
-/*20180516 to 20180621
+/*20180516 to 20180711
건물 반 투명화 ON
*/
MSG_ID_DC2 = 0xdc2,
-/*20180516 to 20180621
+/*20180516 to 20180711
건물 반 투명화 OFF
*/
MSG_ID_DC3 = 0xdc3,
-/*20180516 to 20180621
+/*20180516 to 20180711
건물 투명화
*/
MSG_ID_DC4 = 0xdc4,
-/*20180516 to 20180621
+/*20180516 to 20180711
알로 ë˜ëŒë¦¬ê¸°ê°€ 실패했습니다. ë¡œë±ìŠ¤ ìž‘ì„±ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
*/
MSG_ID_DC5 = 0xdc5,
-/*20180516 to 20180621
+/*20180516 to 20180711
Emblem Frame
*/
MSG_ID_DC6 = 0xdc6,
-/*20180516 to 20180621
+/*20180516 to 20180711
Emblem í…Œë‘리를 그려ì¤ë‹ˆë‹¤
*/
MSG_ID_DC7 = 0xdc7,
-/*20180516 to 20180621
+/*20180516 to 20180711
Emblem í…Œë‘리를 그려주지 않습니다
*/
MSG_ID_DC8 = 0xdc8,
#endif
#if PACKETVER >= 20180605
-/*20180605 to 20180621
+/*20180605 to 20180711
ìž¥ì°©ëœ ë¬´ê¸°ê°€ 없습니다.
*/
MSG_ID_DC9 = 0xdc9,
-/*20180605 to 20180621
+/*20180605 to 20180711
ì—너지 구체가 부족합니다.
*/
MSG_ID_DCA = 0xdca,
-/*20180605 to 20180621
+/*20180605 to 20180711
배울 수 없는 스킬(%s)ì´ í¬í•¨ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DCB = 0xdcb,
-/*20180605 to 20180621
+/*20180605 to 20180711
/frame
*/
MSG_ID_DCC = 0xdcc,
#endif
#if PACKETVER >= 20180620
-/*20180620 to 20180621
+/*20180620 to 20180711
ì›¨í° ë¸”ë¡œí‚¹ ë°œë™í›„ 제한시간 ë‚´ì— ì‚¬ìš©ê°€ëŠ¥í•œ 스킬입니다.
*/
MSG_ID_DCD = 0xdcd,
#endif
+#if PACKETVER >= 20180704
+/*20180704 to 20180711
+ì•„ì´ë””í˜¹ì€ íŒ¨ìŠ¤ì›Œë“œê°€ 잘못ë˜ì—ˆì니다.
+*/
+ MSG_ID_DCE = 0xdce,
+#endif
};
#endif /* MAP_MESSAGES_RE_H */
diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h
index 7b9a07974..2ef3d2635 100644
--- a/src/map/messages_zero.h
+++ b/src/map/messages_zero.h
@@ -24,3708 +24,3708 @@
/* This file is autogenerated, please do not commit manual changes */
enum clif_messages {
-/*20171018 to 20180627
+/*20171018 to 20180711
ë™ì˜ 하십니까?
Do you agree?
*/
MSG_DO_YOU_AGREE = 0x0,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버 연결 실패
Failed to Connect to Server.
*/
MSG_SERVER_CONNECTION_FAILED = 0x1,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버와 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤.
Disconnected from Server.
*/
MSG_UNABLE_TO_CONNECT_SERVER = 0x2,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버와 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤!
Disconnected from Server!
*/
MSG_BANNED = 0x3,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버 종료ë¨
Server Closed.
*/
MSG_SERVER_OFF = 0x4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ ê³„ì •ìœ¼ë¡œ 다른 사용ìžê°€ ë¡œê·¸ì¸ í•˜ì˜€ìŠµë‹ˆë‹¤.
Someone has Logged in with this ID.
*/
MSG_DOUBLE_LOGIN_PROHIBITED = 0x5,
-/*20171018 to 20180627
+/*20171018 to 20180711
등ë¡ë˜ì§€ ì•Šì€ ê³„ì •ìž…ë‹ˆë‹¤. 다시 í™•ì¸ ë°”ëžë‹ˆë‹¤.
Unregistered ID. Please make sure you have a registered account and you have correctly typed in the user ID.
*/
MSG_INCORRECT_USERID = 0x6,
-/*20171018 to 20180627
+/*20171018 to 20180711
입력하신 비밀번호가 올바르지 않습니다.
Incorrect User ID or Password. Please try again.
*/
MSG_INCORRECT_PASSWORD = 0x7,
-/*20171018 to 20180627
+/*20171018 to 20180711
본 ID 는 ì‚¬ìš©ê¸°ê°„ì´ ë§Œë£Œ ë˜ì—ˆìŠµë‹ˆë‹¤
This ID is expired.
*/
MSG_ID_EXPIRED = 0x8,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버 접근 거부
Rejected from Server.
20171117 to 20171117
2017ë…„ 11ì›” 20ì¼ 11:00 부터 ì ‘ì†ì´ 가능합니다.
*/
MSG_ACCESS_DENIED = 0x9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ ìºë¦­í„° ì´ë¦„ì´ ìžˆìŠµë‹ˆë‹¤.
Character Name already exists.
*/
MSG_CHARACTER_NAME_ALREADY_EXISTS = 0xa,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ìƒì„± 거부ë¨
Character Creation is denied.
*/
MSG_CHARACTER_CREATION_DENIED = 0xb,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ì‚­ì œ 거부
Character Deletion is denied.
*/
MSG_CANNOT_DELETE_CHARACTER = 0xc,
-/*20171018 to 20180627
+/*20171018 to 20180711
방제목를 입력하세요.
Please Enter Room Title.
*/
MSG_ENTER_ROOM_TITLE = 0xd,
-/*20171018 to 20180627
+/*20171018 to 20180711
불량단어가 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
Foul Language Detected.
*/
MSG_BAD_SENTANGE = 0xe,
-/*20171018 to 20180627
+/*20171018 to 20180711
암호를 입력하세요.
Please enter Password.
*/
MSG_ENTER_PASSWORD = 0xf,
-/*20171018 to 20180627
+/*20171018 to 20180711
암호를 ì˜ë¬¸ 4ìž ì´ìƒ 입력하세요.
Please enter Password. Passwords must be at least 4 characters long.
*/
MSG_Enter_Password_more_than_4_char = 0x10,
-/*20171018 to 20180627
+/*20171018 to 20180711
종료 하시겠습니까?
Are you sure that you want to quit?
*/
MSG_DO_YOU_REALLY_WANT_TO_QUIT = 0x11,
-/*20171018 to 20180627
+/*20171018 to 20180711
4ìž ì´ìƒ 입력해주세요. ì‚¬ìš©ìž ê³„ì •ì´ ì—†ìœ¼ì‹ ë¶„ë“¤ì€ ì™¼ìª½ í•˜ë‹¨ì˜ [ì‹ ì²­] ë²„íŠ¼ì„ ëˆŒëŸ¬ ê³„ì •ì„ ë§Œë“œì‹œê¸° ë°”ëžë‹ˆë‹¤.
Passwords are at least 4 characters long. Please try again.
*/
MSG_NAME_MUST_EXCEED_4_CHAR = 0x12,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•œ 번 ì‚­ì œëœ ìºë¦­í„° ë° ê´€ë ¨ 정보는 다시 복구ë˜ì§€ 않습니다. ìºë¦­í„°ë¥¼ 삭제하시겠습니까?
Are you sure that you want to delete this character?
*/
MSG_DELETE_CHARACTER = 0x13,
-/*20171018 to 20180627
+/*20171018 to 20180711
불량단어가 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
Foul Language Detected.
*/
MSG_BAD_NAME = 0x14,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„ì„ ìž…ë ¥í•´ 주세요.(한글 2ìž ì˜ë¬¸ 4ìž ì´ìƒ)
Character Name must be at least 4 characters long.
*/
MSG_ENTER_NAME_MORE_THAN_4_CHAR = 0x15,
-/*20171018 to 20180627
+/*20171018 to 20180711
명령어 ì¼ëžŒ: /h
Command List: /h | /help
*/
MSG_LIST_COMMAND = 0x16,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´íŽ™íŠ¸ On
Effects On
*/
MSG_EFFECT_ON = 0x17,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´íŽ™íŠ¸ Off
Effects Off
*/
MSG_EFFECT_OFF = 0x18,
-/*20171018 to 20180627
+/*20171018 to 20180711
사운드 볼륨
Sound Volume
*/
MSG_VOLUME_OF_SOUND = 0x19,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°°ê²½ìŒì•… 볼륨
BGM Volume
*/
MSG_VOLUME_OF_BGM = 0x1a,
-/*20171018 to 20180627
+/*20171018 to 20180711
íš¨ê³¼ìŒ On
Sound Effects On
*/
MSG_SOUND_ON = 0x1b,
-/*20171018 to 20180627
+/*20171018 to 20180711
íš¨ê³¼ìŒ Off
Sound Effects Off
*/
MSG_SOUND_OFF = 0x1c,
-/*20171018 to 20180627
+/*20171018 to 20180711
프레임스킵 On
Frame Skip On
*/
MSG_FRAME_SKIP_ON = 0x1d,
-/*20171018 to 20180627
+/*20171018 to 20180711
프레임스킵 Off
Frame Skip Off
*/
MSG_FRAME_SKIP_OFF = 0x1e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°°ê²½ìŒì•… On
BGM On
*/
MSG_BGM_ON = 0x1f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°°ê²½ìŒì•… Off
BGM Off
*/
MSG_BGM_OFF = 0x20,
-/*20171018 to 20180627
+/*20171018 to 20180711
/h or /help: 명령어 ì¼ëžŒ
/h or /help: Shows this Command Help List
*/
MSG_EXPLAIN_HELP = 0x21,
-/*20171018 to 20180627
+/*20171018 to 20180711
/w or /who or /ì ‘ì†ìž or /누구: 현재 ì ‘ì†ìžìˆ˜ 보기
/w or /who or /player or /who: wiew current the number of player
*/
MSG_EXPLAIN_WHO = 0x22,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ìŒì•… : ë°°ê²½ìŒì•… On Off
/music: Turns BGM On or Off
*/
MSG_EXPLAIN_MUSIC = 0x23,
-/*20171018 to 20180627
+/*20171018 to 20180711
/íš¨ê³¼ìŒ : íš¨ê³¼ìŒ On Off
/sound: Turns Sound Effects On or Off
*/
MSG_EXPLAIN_SOUND = 0x24,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ì´íŽ™íŠ¸ : ì´íŽ™íŠ¸ On Off
/effect: Effects On or Off
*/
MSG_EXPLAIN_EFFECT = 0x25,
-/*20171018 to 20180627
+/*20171018 to 20180711
/좌표 or /장소: 현재 위치 표시
/where: Shows your present location
*/
MSG_EXPLAIN_POS = 0x26,
-/*20171018 to 20180627
+/*20171018 to 20180711
/skip : 프래임스킵 On Off
/skip: Turns Frame Skip On or Off
*/
MSG_EXPLAIN_FRAMESKIP = 0x27,
-/*20171018 to 20180627
+/*20171018 to 20180711
/v (0~127): íš¨ê³¼ìŒ ë³¼ë¥¨ì¡°ì •
/v (0~127): Controls the volume of the Sound Effects
*/
MSG_EXPLAIN_SOUNDVOLUME = 0x28,
-/*20171018 to 20180627
+/*20171018 to 20180711
/bv (0~127): ë°°ê²½ìŒì•… 볼륨조정
/bv (0~127): Controls the volume of the BGM
*/
MSG_EXPLAIN_BGMVOLUME = 0x29,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ex (ìºë¦­í„°ì´ë¦„) or /차단 (ìºë¦­í„°ì´ë¦„) : 해당ìºë¦­í„°ì— 대해 ê·“ë§ì°¨ë‹¨
/ex (Character Name): Blocks whispering from the Character
*/
MSG_EXPLAIN_SAYISOLATION = 0x2a,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ex or /차단 : ê·“ë§ì°¨ë‹¨ ìºë¦­í„° 리스트
/ex: View a list of Characters you have Blocked
*/
MSG_EXPLAIN_LIST_SAYISOLATION_CHAR = 0x2b,
-/*20171018 to 20180627
+/*20171018 to 20180711
/in (ìºë¦­í„°ì´ë¦„) or /í•´ì œ (ìºë¦­í„°ì´ë¦„) : 해당ìºë¦­í„°ì— 대해 ê·“ë§í—ˆìš©
/in (Character Name): Allows whispering from the Character
*/
MSG_EXPLAIN_SAY_PERMIT = 0x2c,
-/*20171018 to 20180627
+/*20171018 to 20180711
/inall or /해제전부 : 모ë‘ì—게 ê·“ë§í—ˆìš©
/inall: Allows whispers from anyone
*/
MSG_EXPLAIN_SAY_PERMITALL = 0x2d,
-/*20171018 to 20180627
+/*20171018 to 20180711
/exall or /차단전부 : 모ë‘ì—게 ê·“ë§ì°¨ë‹¨
/exall: Blocks whispers from everyone
*/
MSG_EXPLAIN_SAY_ISOLATEALL = 0x2e,
-/*20171018 to 20180627
+/*20171018 to 20180711
다른유저 ìºë¦­í„°ë¥¼ 마우스 ì˜¤ë¥¸ë²„íŠ¼ì„ ëˆ„ë¥´ê³  있는 ìƒíƒœì—ì„œ 왼버튼으로 í´ë¦­í•˜ë©´ ê·¸ìºë¦­í„°ì´ë¦„ì´ ê·“ë§ì½¤ë³´ë°•ìŠ¤ì— 저장ë©ë‹ˆë‹¤.
Right click on a character and select [Register as a Friend] to add a person to your Friend List.
*/
MSG_EXPLAIN_TIP1 = 0x2f,
-/*20171018 to 20180627
+/*20171018 to 20180711
단축아ì´íƒ¬ì°½(F12) 소비장비 ì•„ì´í…œì„ 드래그한후 사용하세요. 사용키(F1F2F3F4F5F6F7F8F9)
F12 Brings up a Hotkey Window which allows you to drag and drop Recovery Items, Equipment and Skills into it for faster access.
*/
MSG_EXPLAIN_TIP2 = 0x30,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ë§ì„ 3번ì´ìƒ ì—°ì†í•´ì„œ 전송할 수 없습니다.
You can't type the same word/phrase more than 3 times.
*/
MSG_NO_SAME_SENTANCE = 0x31,
-/*20171018 to 20180627
+/*20171018 to 20180711
불량단어 검출로 ì „ì†¡ì´ ì¤‘ë‹¨ ë˜ì—ˆìŠµë‹ˆë‹¤.
Chat Filter: Yeah, uh, I don't think so buddy...
*/
MSG_NO_SEND_BECAUSE_INSULT = 0x32,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ì•„ì´í…œì€ 한번만 올릴수 있습니다.
You cannot overlap items on a window.
*/
MSG_CAN_DRAG_ITEM_OLNY_ONETIME = 0x33,
-/*20171018 to 20180627
+/*20171018 to 20180711
무게가 초과하여 ì•„ì´í…œì„ 가질 수 없습니다.
You cannot carry more items because you are overweight.
*/
MSG_CANT_GET_ITEM_BECAUSE_WEIGHT = 0x34,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ 가질 수 없습니다.
You cannot get the item.
*/
MSG_CANT_GET_ITEM = 0x35,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래가 잘 ì´ë£¨ì–´ì¡ŒìŠµë‹ˆë‹¤.
The deal has successfully completed.
*/
MSG_DEAL_SECCESS = 0x36,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëˆì´ 부족합니다.
You do not have enough zeny.
*/
MSG_INSUFFICIENT_MONEY = 0x37,
-/*20171018 to 20180627
+/*20171018 to 20180711
무게가 초과 ë˜ì—ˆìŠµë‹ˆë‹¤.
You are over your Weight Limit.
*/
MSG_OVER_WEIGHT = 0x38,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래가 실패 했습니다.
The deal has failed.
*/
MSG_DEAL_FAIL = 0x39,
-/*20171018 to 20180627
+/*20171018 to 20180711
모ë‘ì—게 ê·“ë§ê±°ë¶€ìƒíƒœë¡œë¨
You've blocked whispers from everyone.
*/
MSG_REFUSE_HEAR_ALL = 0x3a,
-/*20171018 to 20180627
+/*20171018 to 20180711
모ë‘ì—게 ê·“ë§ê±°ë¶€ìš”ì²­ 실패함
You've failed to block all whispers.
*/
MSG_REQ_REFUSE_HEAR_ALL_FAIL = 0x3b,
-/*20171018 to 20180627
+/*20171018 to 20180711
모ë‘ì—게 ê·“ë§ê°€ëŠ¥ìƒíƒœê°€ë¨
You've allowed whispers from everyone.
*/
MSG_HEAR_ALL = 0x3c,
-/*20171018 to 20180627
+/*20171018 to 20180711
모ë‘ì—게 ê·“ë§ê°€ëŠ¥ìš”ì²­ 실패함
You've failed to allow all whispers.
*/
MSG_REQ_HEAR_ALL_FAIL = 0x3d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·“ë§ ê±°ë¶€ 리스트가 없습니다
You have no Block List.
*/
MSG_NO_REFUSE_HEAR_LIST = 0x3e,
-/*20171018 to 20180627
+/*20171018 to 20180711
-ê·“ë§ ê±°ë¶€ 리스트-
[ Character Block List ]
*/
MSG_REFUSE_HEAR_LIST = 0x3f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°©ì´ ìž˜ 만들어 졌습니다.
Room has been successfully created.
*/
MSG_ROOM_IS_MADE = 0x40,
-/*20171018 to 20180627
+/*20171018 to 20180711
방갯수가 허용갯수를 초과 하였습니다.
Room Limit Exceeded.
*/
MSG_TOO_MANY_ROOM = 0x41,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ ë°©ì œëª©ì´ ìžˆìŠµë‹ˆë‹¤.
Same Room exists.
*/
MSG_SAME_ROOM_TITLE = 0x42,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ì›ì´ˆê³¼ë¡œ ë°©ì— ë“¤ì–´ê°ˆ 수 없습니다.
The Room is full.
*/
MSG_TOO_MANY_PEOPLE_IN_ROOM = 0x43,
-/*20171018 to 20180627
+/*20171018 to 20180711
강제로 í‡´ìž¥ëœ ë°©ìž…ë‹ˆë‹¤.
You have been kicked out of this room.
*/
MSG_YOU_HAVE_BANNED_FROM_THE_ROOM = 0x44,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµí™˜ìš”ì²­ì„ ê±°ì ˆ 했습니다.
The deal has been rejected.
*/
MSG_REJECT_DEAL = 0x45,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµí™˜ê°€ëŠ¥ê±°ë¦¬ë¥¼ 벗어났습니다.
You are too far away from the person to trade.
*/
MSG_TOO_FAR_TO_DEAL = 0x46,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ìºë¦­í„°ê°€ 없습니다.
The Character is not currently online or does not exist.
*/
MSG_CHARACTER_IS_NOT_EXIST = 0x47,
-/*20171018 to 20180627
+/*20171018 to 20180711
다른ìºë¦­í„°ì™€ êµí™˜ì¤‘입니다.
The person is in another deal.
*/
MSG_CHARACTER_IS_DEALING = 0x48,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒëŒ€ ìºë¦­í„° 중량초과로 ì˜¬ë ¤ë†“ì„ ìˆ˜ 없습니다.
You cannot trade because this character will exceed his weight limit.
*/
MSG_CHARACTER_IS_OVER_WEIGHT = 0x49,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래가 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
The deal has been canceled.
*/
MSG_DEAL_IS_CANCELED = 0x4a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ êµí™˜ì´ 잘 ë˜ì—ˆìŠµë‹ˆë‹¤.
The deal has successfully completed.
*/
MSG_DEAL_SUCCESS = 0x4b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ êµí™˜ì´ 실패 하였습니다.
The deal has failed.
*/
MSG_DEAL_FAILED = 0x4c,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티가 만들어졌습니다.
Party has successfully been organized.
*/
MSG_PARTY_MAKE_SUCCEED = 0x4d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ íŒŒí‹°ì´ë¦„ì´ ìžˆìŠµë‹ˆë‹¤.
That Party Name already exists.
*/
MSG_SAME_PARTY_NAME = 0x4e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ íŒŒí‹°ì— ì†í•´ìžˆìŠµë‹ˆë‹¤.
The Character is already in a party.
*/
MSG_YOU_ARE_ALREADY_IN_PARTY = 0x4f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹¤ë¥¸íŒŒí‹°ì— ê°€ìž…ë˜ì–´ 있습니다.
The Character already joined another party.
*/
MSG_CHARACTER_IS_ALREADY_IN_PARTY = 0x50,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ê°€ìž…ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.
Request for party rejected.
*/
MSG_CHARACTER_REJECT_JOIN = 0x51,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
Request for party accepted.
*/
MSG_CHARACTER_ACCEPT_JOIN = 0x52,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티정ì›ì„ 초과했습니다.
Party Capacity exceeded.
*/
MSG_TOO_MANY_PEOPLE_IN_PARTY = 0x53,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì—ì„œ 탈퇴하였습니다.
You left the party.
*/
MSG_YOU_LEAVE_FROM_PARTY = 0x54,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ì²´ì—게 보냄
Send to All
*/
MSG_SEND_TO_ALL = 0x55,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì—게 보냄
Send to Party
*/
MSG_SEND_TO_PARTY = 0x56,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹˜ê³¼ì˜ ê±°ëž˜ìš”ì²­
Request a deal with %s
*/
MSG_REQ_DEAL_WITH = 0x57,
-/*20171018 to 20180627
+/*20171018 to 20180711
님 íŒŒí‹°ì— ê°€ìž…ìš”ì²­
Ask %s to join your party
*/
MSG_REQ_JOIN_PARTY = 0x58,
-/*20171018 to 20180627
+/*20171018 to 20180711
비공개 :
Pri:
*/
MSG_ROOM_PRIVATE = 0x59,
-/*20171018 to 20180627
+/*20171018 to 20180711
공개 :
Pub:
*/
MSG_ROOM_PUBLIC = 0x5a,
-/*20171018 to 20180627
+/*20171018 to 20180711
마지막 ì²´í¬ì§€ì ë¶€í„° 시작하려면 '재시작'ì„ ìºë¦­í„° ì„ íƒìœ¼ë¡œ ëŒì•„가려면 '종료'를 눌러주세요.
Click ''Restart'' to go back to your save point or click ''Exit'' to select another character.
*/
MSG_RESTART_MSG = 0x5b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì›í•˜ëŠ” 거래를 ì„ íƒí•˜ì„¸ìš”.
Please select a Deal Type.
*/
MSG_SELECT_DEAL_TYPE = 0x5c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹˜ì´ ê±°ëž˜ë¥¼ 요청했습니다.
requests a deal.
*/
MSG_SUGGEST_DEAL = 0x5d,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì—ì„œ 초청 메시지가 왔습니다. 합류하겠습니까?
Party has sent you an invitation. Would you like to join?
*/
MSG_SUGGEST_JOIN_PARTY = 0x5e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëª…ë ¹ì´ í‹€ë ¸ìŠµë‹ˆë‹¤.
Invalid Command
*/
MSG_INVALID_COMMAND = 0x5f,
-/*20171018 to 20180627
+/*20171018 to 20180711
탈퇴하기
Leave party
*/
MSG_LEAVE_PARTY = 0x60,
-/*20171018 to 20180627
+/*20171018 to 20180711
제명시키기
Expel
*/
MSG_EXPEL = 0x61,
-/*20171018 to 20180627
+/*20171018 to 20180711
쪽지보내기
Send Message
*/
MSG_MSG = 0x62,
-/*20171018 to 20180627
+/*20171018 to 20180711
1:1 대화
1:1 Chat
*/
MSG_1ON1 = 0x63,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ë³´
Information
*/
MSG_CHARACTER_INFO = 0x64,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티설정
Party Setup
*/
MSG_PARTY_SETTING = 0x65,
-/*20171018 to 20180627
+/*20171018 to 20180711
친구
Friend
*/
MSG_FRIEND = 0x66,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티
Party
*/
MSG_PARTY = 0x67,
-/*20171018 to 20180627
+/*20171018 to 20180711
장착아ì´í…œ
Equipment
*/
MSG_EQUIPED_ITEM = 0x68,
-/*20171018 to 20180627
+/*20171018 to 20180711
스테ì´í„°ìŠ¤
Status
*/
MSG_STATUS_ = 0x69,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지아ì´í…œ
Inventory
*/
MSG_ITEM = 0x6a,
-/*20171018 to 20180627
+/*20171018 to 20180711
/결성 [파티ì´ë¦„] : 파티결성 /탈퇴 : 파티탈퇴
/organize ''Party Name'' To organize a party. Type /leave To leave a Party.
*/
MSG_EXPLAIN_PARTY = 0x6b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìžì‹ ì´ 파티리ë”ì¼ë•Œ ìºë¦­í„°ë¥¼ 오른버튼으로 í´ë¦­í•˜ë©´ íŒŒí‹°ì— ê°€ìž…ìš”ì²­í•˜ê¸° 메뉴가 뜹니다.
If you are the party master, you can invite someone into your party by right-clicking on a Character.
*/
MSG_EXPLAIN_TIP3 = 0x6c,
-/*20171018 to 20180627
+/*20171018 to 20180711
회복
Consumables
*/
MSG_RESTORE = 0x6d,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격
Attack
*/
MSG_ATTACK = 0x6e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³´ì¡°
Support
*/
MSG_SUPPORT = 0x6f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ì²´
All
*/
MSG_ALL = 0x70,
-/*20171018 to 20180627
+/*20171018 to 20180711
무기
Weapons
*/
MSG_WEAPON = 0x71,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°©ì–´
Defense
*/
MSG_DEFENCE = 0x72,
-/*20171018 to 20180627
+/*20171018 to 20180711
수
Water
*/
MSG_WATER = 0x73,
-/*20171018 to 20180627
+/*20171018 to 20180711
지
Earth
*/
MSG_EARTH = 0x74,
-/*20171018 to 20180627
+/*20171018 to 20180711
í™”
Fire
*/
MSG_FIRE = 0x75,
-/*20171018 to 20180627
+/*20171018 to 20180711
í’
Wind
*/
MSG_WIND = 0x76,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ì¢…ë¥˜ì˜ ìž¥ë¹„ì•„ì´í…œì€ í•œë²ˆì— í•œê°œë§Œ ì‚´ 수 있습니다.
Please avoid buying 2 of the same items at one time.
*/
MSG_EQUIPITEM_OLNY_ONE = 0x77,
-/*20171018 to 20180627
+/*20171018 to 20180711
창모드ì—ì„œ 실행 할때는 16비트 컬러로 맞춰주세요.
Please change your desktop Color Depth to 16-bit when running Ragnarok in windowed mode.
*/
MSG_ONLY_16BIT_WHEN_WINDOWMODE = 0x78,
-/*20171018 to 20180627
+/*20171018 to 20180711
잠시만 기다려 주세요.
Please wait...
*/
MSG_PLEASE_BE_PATIENT = 0x79,
-/*20171018 to 20180627
+/*20171018 to 20180711
잠시만 기다려 주세요.
Please wait...
*/
MSG_WAITING_RESPONSE_FROM_SERVER = 0x7a,
-/*20171018 to 20180627
+/*20171018 to 20180711
잠시만 기다려 주세요.
Please wait...
*/
MSG_MAKING_CHARACTER = 0x7b,
-/*20171018 to 20180627
+/*20171018 to 20180711
잠시만 기다려 주세요.
Please wait...
*/
MSG_DELETING_CHARACTER = 0x7c,
-/*20171018 to 20180627
+/*20171018 to 20180711
방 만들기
Make a Room
*/
MSG_MAKING_ROOM = 0x7d,
-/*20171018 to 20180627
+/*20171018 to 20180711
방셋팅 바꾸기
Room Setup
*/
MSG_CHANGE_ROOM_SETTING = 0x7e,
-/*20171018 to 20180627
+/*20171018 to 20180711
강퇴시키기
Kick Character Out
*/
MSG_BAN = 0x7f,
-/*20171018 to 20180627
+/*20171018 to 20180711
방장권한 주기
Give Master Authority
*/
MSG_GIVE_GIVE_ROOM_POWER = 0x80,
-/*20171018 to 20180627
+/*20171018 to 20180711
정보보기
View Information
*/
MSG_SEE_INFORMATION_OF_CHARACTER = 0x81,
-/*20171018 to 20180627
+/*20171018 to 20180711
대화방
Chat Room
*/
MSG_CHAT_ROOM = 0x82,
-/*20171018 to 20180627
+/*20171018 to 20180711
명
Ppl
*/
MSG_COUNT_UNIT_OF_PEOPLE = 0x83,
-/*20171018 to 20180627
+/*20171018 to 20180711
/앉기 or /sit : 앉기. 앉아있ì„ë•Œ 서기
/sit: Sit command. If you are sitting, you will stand instead.
*/
MSG_EXPLAIN_SIT = 0x84,
-/*20171018 to 20180627
+/*20171018 to 20180711
/서기 or /stand : 서기. 서있ì„ë•Œ 앉기
/stand: Stand command. If you are standing, you will sit instead.
*/
MSG_EXPLAIN_STAND = 0x85,
-/*20171018 to 20180627
+/*20171018 to 20180711
/채팅방 or /chat : 채팅방 만들기창 ë„우기
/chat: Creates a Chat Room
*/
MSG_EXPLAIN_MAKE_CHAT = 0x86,
-/*20171018 to 20180627
+/*20171018 to 20180711
/q : 채팅방 나가기.
/q: Leaves a Chat Room
*/
MSG_EXPLAIN_EXIT_CHAT_ROOM = 0x87,
-/*20171018 to 20180627
+/*20171018 to 20180711
/거래 [ìºë¦­í„°ì´ë¦„] or /êµí™˜ [ìºë¦­í„°ì´ë¦„] or /deal [ìºë¦­í„°ì´ë¦„] : 해당 ìºë¦­í„°ì™€ 거래요청
/deal ''Character Name'' Requests a deal with a character
*/
MSG_EXPLAIN_DEAL = 0x88,
-/*20171018 to 20180627
+/*20171018 to 20180711
/결성 [파티ì´ë¦„] or /organize [파티ì´ë¦„] : 파티결성
/organize ''Party Name'' Organizes a party
*/
MSG_EXPLAIN_ORGANIZE_PARTY = 0x89,
-/*20171018 to 20180627
+/*20171018 to 20180711
/탈퇴 or /leave : 파티 탈퇴
/leave: Leaves a party
*/
MSG_EXPLAIN_LEAVE_PARTY = 0x8a,
-/*20171018 to 20180627
+/*20171018 to 20180711
/제명 [ìºë¦­í„°ì´ë¦„] or /expel [ìºë¦­í„°ì´ë¦„] : 해당ìºë¦­í„°ë¥¼ 파티ì—ì„œ 제명시킴
/expel ''Character Name'' kicks a Character out of your party
*/
MSG_EXPLAIN_EXPEL_PARTY_MEMBER = 0x8b,
-/*20171018 to 20180627
+/*20171018 to 20180711
[Alt] + [End] : 플레ì´ì–´ hp/sp 게ì´ì§€ On Off
[Alt] + [End]: Turns HP/SP Bar On or Off
*/
MSG_EXPLAIN_TIP4 = 0x8c,
-/*20171018 to 20180627
+/*20171018 to 20180711
[Alt] + [Home] : 지면 커서 표시 On Off
[Alt] + [Home]: Turns Ground Cursor On or Off
*/
MSG_EXPLAIN_TIP5 = 0x8d,
-/*20171018 to 20180627
+/*20171018 to 20180711
[Insert] : 앉기 서기
[Insert]: Makes you sit or stand. (Hotkey to toggle between /sit and /stand)
*/
MSG_EXPLAIN_TIP6 = 0x8e,
-/*20171018 to 20180627
+/*20171018 to 20180711
MVPê°€ ë˜ì…¨ìŠµë‹ˆë‹¤!! MVP ì•„ì´í…œì€
Congratulations! You are the MVP! Your reward item is
*/
MSG_YOU_RECEIVE_MVP_ITEM = 0x8f,
-/*20171018 to 20180627
+/*20171018 to 20180711
!!
!!
*/
MSG_YOU_RECEIVE_MVP_ITEM2 = 0x90,
-/*20171018 to 20180627
+/*20171018 to 20180711
MVPê°€ ë˜ì…¨ìŠµë‹ˆë‹¤!! 특별경험치
Congratulations! You are the MVP! Your reward EXP Points are
*/
MSG_YOU_RECEIVE_MVP_EXP = 0x91,
-/*20171018 to 20180627
+/*20171018 to 20180711
íšë“!!
!!
*/
MSG_YOU_RECEIVE_MVP_EXP2 = 0x92,
-/*20171018 to 20180627
+/*20171018 to 20180711
MVPê°€ ë˜ì…¨ìŠµë‹ˆë‹¤ë§Œ 무게초과로 MVP ì•„ì´í…œì„ 가질 수 없었습니다!!
You are the MVP, but you can't take the reward because you are over your weight limit.
*/
MSG_YOU_THROW_MVPITEM = 0x93,
-/*20171018 to 20180627
+/*20171018 to 20180711
없는 ìºë¦­í„° ì´ë¦„ 입니다.
There is no such character name or the user is offline.
*/
MSG_NOT_EXIST_CHARACTER = 0x94,
-/*20171018 to 20180627
+/*20171018 to 20180711
수신 거부 ìƒíƒœìž…니다.
doesn't want to receive your messages.
*/
MSG_NO_RECEIVE_MODE = 0x95,
-/*20171018 to 20180627
+/*20171018 to 20180711
모든 ìºë¦­í„°ì— 대해 수신 거부 ìƒíƒœ 입니다.
is not in the mood to talk with anyone.
*/
MSG_NO_RECEIVE_MODE_FOR_ALL = 0x96,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ì ‘ì†ëŠê¸° 성공.
Killed/Disconnected User.
*/
MSG_SUCCESS_DISCONNECT_CHARACTER = 0x97,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ì ‘ì†ëŠê¸° 실패.
Kill has failed.
*/
MSG_FAIL_DISCONNECT_CHARACTER = 0x98,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s %d ê°œ íšë“
You got %s (%d).
*/
MSG_GET_ITEM = 0x99,
-/*20171018 to 20180627
+/*20171018 to 20180711
[Alt] + [=] : 알파벳 ê°„ê²©ì´ ë„“ì–´ì¡Œì„ë•Œ ë˜ëŒë¦¬ê¸°.
[Alt] + [=]: Fix the interval error between letters.
*/
MSG_EXPLAIN_TIP7 = 0x9a,
-/*20171018 to 20180627
+/*20171018 to 20180711
[F10] : 채팅창 í¬ê¸°ì¡°ì • [Alt] + [F10] : 채팅창 On Off
[F10]: To toggle Chat Window size; [Alt] + [F10]: Toggle Chat Window On or Off
*/
MSG_EXPLAIN_TIP8 = 0x9b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·“ì†ë§ 하는법 : 채팅창 왼쪽 ìž…ë ¥ëž€ì— ìºë¦­í„°ì´ë¦„ì„ ìž…ë ¥í•˜ê³  오른쪽 ìž…ë ¥ëž€ì— ë§ì„ 입력하면 ë©ë‹ˆë‹¤. TAB키로 ë‘입력란 사ì´ë¡œ 커서를 ì´ë™í•  수 있습니다.
How to Whisper: Enter a Character's Name on the left side of chat window and type your message on the right side. The Tab key helps you move between these boxes.
*/
MSG_EXPLAIN_TIP9 = 0x9c,
-/*20171018 to 20180627
+/*20171018 to 20180711
/! /? /ê¸°ì¨ /하트 /ë•€ /아하 /ì§œì¦ /í™” /ëˆ /... /가위 /바위 /ë³´ : Alt + (1~9) Ctrl + (-=\) ì— ëŒ€ì‘ë˜ëŠ” 명령어 입니다.
/!,/?,/ho,/lv,/lv2,/swt,/ic,/an,/ag,/$,/….,/thx,/wah,/sry,/heh,/swt2,/hmm,/no1,/??,/omg,/oh,/X,/hp,/go,/sob,/gg,/kis,/kis2,/pif,/ok: Emotion icons corresponding to Alt + (1~9) Ctrl + (-=\\)
*/
MSG_EXPLAIN_TIP10 = 0x9d,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì›ì—게 ë§í•˜ëŠ”법 : ë§ì˜ ì œì¼ì•žì— '%'를 붙ì´ë©´ 파티ì›ì—게 ë§ì´ 갑니다. (예: "%안녕")
How to Speak to Party: Add % in front of every message.(Example: \%Hello\)
*/
MSG_EXPLAIN_TIP11 = 0x9e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. êµí™˜ 불능.
You haven't learned enough Basic Skills to Trade.
*/
MSG_NOT_ENOUGH_SKILLLEVE1 = 0x9f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. ì´ëª¨ì…˜ 불능.
You haven't learned enough Basic Skills to use Emotion icons.
*/
MSG_NOT_ENOUGH_SKILLLEVE2 = 0xa0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 앉기 불능.
You haven't learned enough Basic Skills to Sit.
*/
MSG_NOT_ENOUGH_SKILLLEVE3 = 0xa1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 채팅방만들기 불능.
You haven't learned enough Basic Skills to create a chat room.
*/
MSG_NOT_ENOUGH_SKILLLEVE4 = 0xa2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 파티만들기 불능
You haven't learned enough Basic Skills to Party.
*/
MSG_NOT_ENOUGH_SKILLLEVE5 = 0xa3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 외치기 불능
You haven't learned enough skills to Shout.
*/
MSG_NOT_ENOUGH_SKILLLEVE6 = 0xa4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. pk 불능
You haven't learned enough skills for Pking.
*/
MSG_NOT_ENOUGH_SKILLLEVE7 = 0xa5,
-/*20171018 to 20180627
+/*20171018 to 20180711
사고ìží•˜ëŠ” 품목
Buying Items
*/
MSG_ITEMS_FOR_BUY = 0xa6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ìƒì 
Item Shop
*/
MSG_ITEM_STORE = 0xa7,
-/*20171018 to 20180627
+/*20171018 to 20180711
팔고ìží•˜ëŠ” 품목
Selling Items
*/
MSG_ITEMS_FOR_SELL = 0xa8,
-/*20171018 to 20180627
+/*20171018 to 20180711
보관아ì´í…œ
Storage
*/
MSG_ITEMS_THAT_IS_STORED = 0xa9,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비가 장착 ë˜ì—ˆìŠµë‹ˆë‹¤.
is put on.
*/
MSG_ITEM_IS_EQUIPED = 0xaa,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비가 í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
is taken off.
*/
MSG_ITEM_IS_REMOVED = 0xab,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·“ë§ë¦¬ìŠ¤íŠ¸ì— ì´ë¦„넣기
To add names on the Whispering List
*/
MSG_ADD_TO_WHISPER_CHAR_LIST = 0xac,
-/*20171018 to 20180627
+/*20171018 to 20180711
스í¬ë¦°ìƒ· ì°ëŠ”법 : [Print Screen]키나 [Scroll Lock]키를 누르면 ë©ë‹ˆë‹¤.
How to Take Screen Shots: Press [Print Screen] or [Scroll Lock]
*/
MSG_EXPLAIN_TIP12 = 0xad,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜¤ëŠ˜ì˜ íŒ
Tip of the Day
*/
MSG_TIPOFTHEDAY = 0xae,
-/*20171018 to 20180627
+/*20171018 to 20180711
^3850a0알고 계셨습니까... ^000000 //^709fed
^3850a0Did you know...?^709fed
*/
MSG_DIDYOUKNOW = 0xaf,
-/*20171018 to 20180627
+/*20171018 to 20180711
시작할때 열기
Display at startup
*/
MSG_SHOWTIPSATSTARTUP = 0xb0,
-/*20171018 to 20180627
+/*20171018 to 20180711
/tip : 오늘ì˜íŒ 열기
/tip: Opens ''Tip of the Day''
*/
MSG_EXPLAIN_OPENTIP = 0xb1,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ì ‘ì†ìž %d명
There are %d Players Currently Connected.
*/
MSG_NUMPEOPLE = 0xb2,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ì´ ìž…ìž¥ 하였습니다.
(%s) has entered.
*/
MSG_USERGETINTHEROOM = 0xb3,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ì´ í‡´ìž¥ 하였습니다.
(%s) has left.
*/
MSG_USERGETOUTOFTHEROOM = 0xb4,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ì´ ê°•ì œ 퇴장 ë˜ì—ˆìŠµë‹ˆë‹¤.
(%s) was kicked out.
*/
MSG_USERGETOUTOFTHEROOMBYFORCE = 0xb5,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d 개
%d ea.
*/
MSG_EA = 0xb6,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s : %d 개
%s: %d ea.
*/
MSG_EA2 = 0xb7,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s %s : %d 개
%s %s: %d
*/
MSG_EA3 = 0xb8,
-/*20171018 to 20180627
+/*20171018 to 20180711
팔 수 있는 품목
Available Items to sell
*/
MSG_ITEMSYOUCANSELL = 0xb9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì ì—ì„œ 파는 품목
Shop Items
*/
MSG_SHOPITEMS = 0xba,
-/*20171018 to 20180627
+/*20171018 to 20180711
알 수 없는곳
Unknown Area
*/
MSG_NOWHERE = 0xbb,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버와 언어가 맞지 않습니다.
Your Client language doesn't match the Server language.
*/
MSG_CLIENTTYPEMISMATCH = 0xbc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ 버릴려면 ìž¥ë¹„ì°½ì„ ë‹«ìœ¼ì„¸ìš”.
Please move your equipment to the inventory. And close the equipment window.
*/
MSG_CLOSEEQUIPWND = 0xbd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ì–´ë§Œ ë©ë‹ˆë‹¤.
This server provides English Text Characters Only.
*/
MSG_ENGLISHONLY = 0xbe,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§€ê¸ˆì€ ì§€ì›ë˜ì§€ 않습니다.
This is not implemented yet.
*/
MSG_NOTSUPPORTEDYET = 0xbf,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·“ë§ ë¦¬ìŠ¤íŠ¸ê°€ 없습니다.
No Whisper List.
*/
MSG_NOWHISPERLIST = 0xc0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—게 ê·“ë§ê±°ë¶€ìƒíƒœë¡œë¨
: Whispering Blocked.
*/
MSG_WHISPERIGNORESUCCESS = 0xc1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—게 ê·“ë§ê±°ë¶€ 요청실패함
: Whispering Block has failed.
*/
MSG_WHISPERIGNOREFAILED1 = 0xc2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—게 ê·“ë§ê±°ë¶€ 요청실패함 (ì¸ì›ì´ˆê³¼)
: Whispering Block has failed. Block List is full.
*/
MSG_WHISPERIGNOREFAILED2 = 0xc3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—게 ê·“ë§ê°€ëŠ¥ìƒíƒœë¡œë¨
: Whispering accepted.
*/
MSG_WHISPERNOIGNORESUCCESS = 0xc4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—게 ê·“ë§ê°€ëŠ¥ 요청실패함
: Command has failed.
*/
MSG_WHISPERNOIGNOREFAILED1 = 0xc5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—게 ê·“ë§ê°€ëŠ¥ 요청실패함 (ì¸ì›ì´ˆê³¼)
: Command has failed. Block List is full.
*/
MSG_WHISPERNOIGNOREFAILED2 = 0xc6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„ì˜ ì²˜ìŒê³¼ 마지막ì—는 공백문ìžë¥¼ 사용할 수 없습니다.
You cannot put a space at the beginning or end of a name.
*/
MSG_NO_SPACE_IN_NAME = 0xc7,
-/*20171018 to 20180627
+/*20171018 to 20180711
비공개
Private
*/
MSG_ROOM_PRIVATE2 = 0xc8,
-/*20171018 to 20180627
+/*20171018 to 20180711
공개
Public
*/
MSG_ROOM_PUBLIC2 = 0xc9,
-/*20171018 to 20180627
+/*20171018 to 20180711
SP가 부족합니다.
Not Enough SP
*/
MSG_USESKILL_FAIL_SP_INSUFFICIENT = 0xca,
-/*20171018 to 20180627
+/*20171018 to 20180711
HP가 부족합니다.
Not Enough HP
*/
MSG_USESKILL_FAIL_HP_INSUFFICIENT = 0xcb,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬사용 실패.
Skill has failed.
*/
MSG_NOT_ENOUGH_SKILLLEVE8 = 0xcc,
-/*20171018 to 20180627
+/*20171018 to 20180711
훔치기 실패.
Steal has failed.
*/
MSG_FAIL_STEAL = 0xcd,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµí™˜ì°½
Trade
*/
MSG_EXCHANGE = 0xce,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…걸기 실패.
Envenom skill has failed.
*/
MSG_FAIL_POISON = 0xcf,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ì•„ì´ë””로는 ì´ ì„œë²„ì— ì ‘ì†í•  수 없습니다.
You cannot use this ID on this server.
*/
MSG_ID_MISMATCH = 0xd0,
-/*20171018 to 20180627
+/*20171018 to 20180711
스피드가 í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Your Speed has increased.
*/
MSG_SPEEDUP = 0xd1,
-/*20171018 to 20180627
+/*20171018 to 20180711
스피드가 ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
Your Speed has decreased.
*/
MSG_SPEEDDOWN = 0xd2,
-/*20171018 to 20180627
+/*20171018 to 20180711
/기억 : 워프할 장소 기억(워프 ìŠ¤í‚¬ì´ ìžˆëŠ”ê²½ìš°)
/memo: To memorize a place as Warp Point (If you are an Acolyte Class character)
*/
MSG_EXPLAIN_TIP13 = 0xd3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž„ì˜ì˜ 위치
Random Area
*/
MSG_RANDOM_POS = 0xd4,
-/*20171018 to 20180627
+/*20171018 to 20180711
워프 í•  위치를 ì„ íƒí•˜ì„¸ìš”.
Select an Area to Warp
*/
MSG_SELECTWHERETOWARP = 0xd5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
Skill Level is not high enough
*/
MSG_NOTENOUGHSKILLLEVEL = 0xd6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì €ìž¥ëœ ì›Œí”„í•  장소가 없습니다.
There are no memorized locations (Memo Points).
*/
MSG_NO_STORED_PLACE_TO_WARP = 0xd7,
-/*20171018 to 20180627
+/*20171018 to 20180711
워프 관련 ìŠ¤í‚¬ì´ ì—†ìŠµë‹ˆë‹¤.
You haven't learned Warp.
*/
MSG_NOWARPSKILL = 0xd8,
-/*20171018 to 20180627
+/*20171018 to 20180711
워프 장소로 저장ë¨.
Saved location as a Memo Point for Warp Skill.
*/
MSG_WARPPOINTSTORED = 0xd9,
-/*20171018 to 20180627
+/*20171018 to 20180711
취소
Cancel
*/
MSG_CANCEL = 0xda,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬 사용후 ì‹œê°„ì´ ì¶©ë¶„ížˆ 지나지 않았습니다.
There is a Delay after using a Skill.
*/
MSG_SKILLINTERVAL = 0xdb,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•œë²ˆì— ê°€ì§ˆ 수 있는 ì•„ì´í…œ 종류수를 초과하여 ì•„ì´í…œì„ 가질 수 없습니다.
You can't have this item because you will exceed the weight limit.
*/
MSG_CANT_GET_ITEM_BECAUSE_COUNT = 0xdc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 최대 종류수를 초과 하였습니다.
Out of the maximum capacity
*/
MSG_INSUFFICIENT_OVER_COUNT = 0xdd,
-/*20171018 to 20180627
+/*20171018 to 20180711
수레아ì´í…œ
Cart Items
*/
MSG_MERCHANTITEM = 0xde,
-/*20171018 to 20180627
+/*20171018 to 20180711
수레 벗기
Take off Cart
*/
MSG_CARTOFF = 0xdf,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì  ê°œì„¤
Opening a stall
*/
MSG_MERCHANTSHOPMAKER = 0xe0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”.
Please Name your Shop.
*/
MSG_ENTER_SHOP_TITLE = 0xe1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚˜ì˜ ë…¸ì 
My Shop
*/
MSG_ITEM_MY_STORE = 0xe2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì¸ ì•„ì´í…œ ìƒì 
Merchant Shop
*/
MSG_ITEM_MERCHANT_STORE = 0xe3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì¸ì—게 사고ìží•˜ëŠ” 품목
Buying Items
*/
MSG_ITEMS_FOR_BUY_FROM_MERCHANT = 0xe4,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 구입 실패 %s
%s Purchase Failed %s
*/
MSG_FAIL_BUY_ITEM_FROM_MERCHANT = 0xe5,
-/*20171018 to 20180627
+/*20171018 to 20180711
재고 부족.
Out of Stock
*/
MSG_INSUFFICIENT_STOCK = 0xe6,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s %d 개 팔림.
%s %d sold.
*/
MSG_ITEM_IS_SOLD = 0xe7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì ì—ì„œ 팔 수 있는 ì•„ì´í…œ
Available Items for Vending
*/
MSG_MERCHANTMIRRORITEM = 0xe8,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니가 부족해서 ìŠ¤í‚¬ì„ ì‚¬ìš© í•  수 없습니다.
Skill has failed because you do not have enough zeny.
*/
MSG_SKILL_FAIL_MONEY = 0xe9,
-/*20171018 to 20180627
+/*20171018 to 20180711
사용할 대ìƒì„ ì„ íƒí•˜ì„¸ìš”
Select a Target.
*/
MSG_SELECTTARGET = 0xea,
-/*20171018 to 20180627
+/*20171018 to 20180711
/pk on : pk On /pk off : pk Off
/pk on: Turns PK On. /pk off: Turns PK Off.
*/
MSG_EXPLAIN_TIP14 = 0xeb,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì 
Shop
*/
MSG_STREETSHOP = 0xec,
-/*20171018 to 20180627
+/*20171018 to 20180711
수레 ì•„ì´í…œ [Alt+W]
Cart Items [Alt+W]
*/
MSG_OPENCARTWINDOW = 0xed,
-/*20171018 to 20180627
+/*20171018 to 20180711
기본정보
Basic Information
*/
MSG_BASICINFOWND = 0xee,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¬´ê¸°ë¡œëŠ” ì´ìŠ¤í‚¬ì„ 사용할수 없습니다.
The skill cannot be used with this weapon.
*/
MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 사기 실패 재고 부족 현재 재고 %d 개.
Buying %s has been failed. Out of Stock. Current Stock %d.
*/
MSG_FAIL_BUY_ITEM_FROM_MERCHANT_NO_STOCK = 0xf0,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버와 ë™ê¸°í™”ê°€ 틀려 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤.
You've been disconnected due to a time gap between you and the server.
*/
MSG_SPEEDHACK = 0xf1,
-/*20171018 to 20180627
+/*20171018 to 20180711
í™”ì‚´ì„ ìž¥ì°©í•˜ì„¸ìš”
Please equip the proper ammunition first.
*/
MSG_ERR_ATTACK_ARROW = 0xf2,
-/*20171018 to 20180627
+/*20171018 to 20180711
중량과다로 공격ì´ë‚˜ ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't attack or use skills because you've exceeded the Weight Limit.
*/
MSG_ERR_ATTACK_WEIGHT = 0xf3,
-/*20171018 to 20180627
+/*20171018 to 20180711
중량과다로 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use skills because you've exceeded the Weight Limit.
*/
MSG_ERR_SKILL_WEIGHT = 0xf4,
-/*20171018 to 20180627
+/*20171018 to 20180711
í™”ì‚´ì´ ìž¥ì°©ë˜ì—ˆìŠµë‹ˆë‹¤.
Ammunition has been equipped.
*/
MSG_MSG_ARROW_EQUIPMENT_SUCCESS = 0xf5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë ˆë“œì ¬ìŠ¤í†¤ì´ í•„ìš”í•©ë‹ˆë‹¤.
Red Gemstone required.
*/
MSG_NEED_REDJAMSTONE = 0xf6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¸”ë£¨ì ¬ìŠ¤í†¤ì´ í•„ìš”í•©ë‹ˆë‹¤.
Blue Gemstone required.
*/
MSG_NEED_BLUEJAMSTONE = 0xf7,
-/*20171018 to 20180627
+/*20171018 to 20180711
힘 파ë¼ë©”í„°
Strength
*/
MSG_DESC_STR = 0xf8,
-/*20171018 to 20180627
+/*20171018 to 20180711
민첩성 파ë¼ë©”í„°
Agility
*/
MSG_DESC_AGI = 0xf9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì²´ë ¥ 파ë¼ë©”í„°
Vitality
*/
MSG_DESC_VIT = 0xfa,
-/*20171018 to 20180627
+/*20171018 to 20180711
지력 파ë¼ë©”í„°
Intelligence
*/
MSG_DESC_INT = 0xfb,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì†ìž¬ì£¼ 파ë¼ë©”í„°
Dexterity
*/
MSG_DESC_DEX = 0xfc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìš´ 파ë¼ë©”í„°
Luck
*/
MSG_DESC_LUK = 0xfd,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격력
Hit Point
*/
MSG_DESC_ATK = 0xfe,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°©ì–´ë ¥
Defence Rate
*/
MSG_DESC_DEF = 0xff,
-/*20171018 to 20180627
+/*20171018 to 20180711
명중률
Accuracy
*/
MSG_DESC_HIT = 0x100,
-/*20171018 to 20180627
+/*20171018 to 20180711
필살공격률
Critical Attack
*/
MSG_DESC_CRI = 0x101,
-/*20171018 to 20180627
+/*20171018 to 20180711
소ì†ê¸¸ë“œ
Affiliated Guild
*/
MSG_DESC_GUILD = 0x102,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê° íŒŒë¼ë©”í„° ë ˆë²¨ì—…ì— ì‚¬ìš©ë˜ëŠ” í¬ì¸íŠ¸
Points to level up each Parameter
*/
MSG_DESC_POINT = 0x103,
-/*20171018 to 20180627
+/*20171018 to 20180711
마법공격력
Magic Attack
*/
MSG_DESC_MATK = 0x104,
-/*20171018 to 20180627
+/*20171018 to 20180711
마법방어력
Magic Defense
*/
MSG_DESC_MDEF = 0x105,
-/*20171018 to 20180627
+/*20171018 to 20180711
회피율
Dodge
*/
MSG_DESC_FLEE = 0x106,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격스피드
Attack Speed
*/
MSG_DESC_ASPD = 0x107,
-/*20171018 to 20180627
+/*20171018 to 20180711
지역당 수용ì¸ì› 초과로 ì ‘ì†í•  수 없습니다.
Server is jammed due to over population. Please try again shortly.
*/
MSG_PC_OVERFLOW = 0x108,
-/*20171018 to 20180627
+/*20171018 to 20180711
옵션
Option
*/
MSG_OPTIONWND = 0x109,
-/*20171018 to 20180627
+/*20171018 to 20180711
E-MAIL ì¸ì¦ì´ ë˜ì§€ì•Šì•˜ê±°ë‚˜ ë¸”ëŸ­ëœ ê³„ì •ìž…ë‹ˆë‹¤.
Account ID blocked by the Game Master Team.
*/
MSG_ID_EMAIL_CONFIRM_NEEDED = 0x10a,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호가 틀립니다.
Incorrect User ID or Password. Please try again.
*/
MSG_INCORRECT_LOGIN_PASSWORD = 0x10b,
-/*20171018 to 20180627
+/*20171018 to 20180711
머리모양 ì„ íƒ
Choose Hairstyle
*/
MSG_SELECT_HAIR_STYLE = 0x10c,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격력
Hit Point
*/
MSG_ATK = 0x10d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°©ì–´ë ¥
Defence Rate
*/
MSG_DEF = 0x10e,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격스냅 On
Attack Snap On
*/
MSG_ATTACK_SNAP_ON = 0x10f,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격스냅 Off
Attack Snap Off
*/
MSG_ATTACK_SNAP_OFF = 0x110,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬스냅 On
Skill Snap On
*/
MSG_SKILL_SNAP_ON = 0x111,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬스냅 Off
Skill Snap Off
*/
MSG_SKILL_SNAP_OFF = 0x112,
-/*20171018 to 20180627
+/*20171018 to 20180711
/스냅 or /snap: 몬스터 공격시 스냅 On Off /스킬스냅 or /skillsnap: 스킬로 몬스터 공격시 스냅 On Off /ì•„ì´í…œìŠ¤ëƒ… or /itemsnap: ì•„ì´í…œ 주울때 스냅 On Off
/snap: Turns snap On | Off for fights, /skillsnap: Turns snap On | Off for skills. /itemsnap: Turns snap On | Off for items on the grounds.
*/
MSG_EXPLAIN_SNAP = 0x113,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œìŠ¤ëƒ… On
Item Snap On
*/
MSG_ITEM_SNAP_ON = 0x114,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œìŠ¤ëƒ… Off
Item Snap Off
*/
MSG_ITEM_SNAP_OFF = 0x115,
-/*20171018 to 20180627
+/*20171018 to 20180711
스냅
Snap
*/
MSG_SNAP = 0x116,
-/*20171018 to 20180627
+/*20171018 to 20180711
한가지 ì•„ì´í…œì„ 3만개 ì´ìƒ 가질수 없습니다.
You cannot carry more than 30,000 of one kind of item.
*/
MSG_CANT_GET_ITEM_OVERCOUNT_ONEITEM = 0x117,
-/*20171018 to 20180627
+/*20171018 to 20180711
레벨 30ì´ìƒì˜ ìºë¦­í„°ëŠ” 삭제할 수 없습니다. 삭제를 ì›í•˜ì‹œë©´ 관계ìžì—게 ë¬¸ì˜ í•˜ì„¸ìš”.
You cannot delete a Character with a level greater than 30. If you want to delete the character please contact a Game Master.
*/
MSG_CANT_DELETE_CHARACTER_OVER_30_LEVEL = 0x118,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ êµí™˜ì¤‘ì—는 ì•„ì´í…œì„ 사고 팔 수 없습니다.
You cannot use an NPC shop while in a trade.
*/
MSG_FAIL_BUY_ITEM_ITEM_EXCHANGING = 0x119,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì ëª…
Shop Name
*/
MSG_STALL_NAME = 0x11a,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬목ë¡
Skill Tree
*/
MSG_SKILLLIST = 0x11b,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬í¬ì¸íŠ¸ : %d
Skill Point: %d
*/
MSG_SKILLPOINT = 0x11c,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬사용 실패
Skill has failed.
*/
MSG_USESKILL_FAIL = 0x11d,
-/*20171018 to 20180627
+/*20171018 to 20180711
패시브
Passive
*/
MSG_PASSIVE = 0x11e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°ìž ì·¨ë“
Individual
*/
MSG_EXPDIV1 = 0x11f,
-/*20171018 to 20180627
+/*20171018 to 20180711
균등하게 분배
Shared
*/
MSG_EXPDIV2 = 0x120,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°ìž ì·¨ë“
Individual
*/
MSG_ITEMCOLLECT1 = 0x121,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 전체 공유
Party Share
*/
MSG_ITEMCOLLECT2 = 0x122,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 설정
Party Setup
*/
MSG_PARTYSETTING = 0x123,
-/*20171018 to 20180627
+/*20171018 to 20180711
경험치 분배방ì‹
How to share EXP
*/
MSG_HOWEXPDIV = 0x124,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 수집방ì‹
How to share Items
*/
MSG_HOWITEMCOLLECT = 0x125,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 리ë”만 설정할 수 있습니다.
Only the Party Leader can change this setting.
*/
MSG_ONLY_PARTYMASTER = 0x126,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 갯수 안물어보기
Toggle Item Amount.
*/
MSG_NOQUESTION_ITEMCOUNT = 0x127,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000%d^000000 ì´ˆ í›„ì— ìºë¦­í„°ê°€ 지워집니다. 취소 하려면 취소 ë²„íŠ¼ì„ ëˆ„ë¥´ì„¸ìš”.
Character will be deleted after ^ff0000%d^000000 seconds. Press Cancel to quit.
*/
MSG_CHARARATER_DELETE_COUNT = 0x128,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµí™˜í•  수 있는 최대 ì•„ì´í…œ 갯수는 10가지 입니다.
You cannot trade more than 10 types of items per trade.
*/
MSG_MAXEXCHANGE_IS_10_KIND = 0x129,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì„œë²„를 ì´ìš©í•  수 없는 나ì´ìž…니다.
You are underaged.
*/
MSG_LIMIT_AGE = 0x12a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë©”ì¼ ì£¼ì†Œë¥¼ 입력하세요.
Please enter the deletion password.
*/
MSG_ENTER_EMAIL = 0x12b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë©”ì¼ ì£¼ì†Œ 입력하기
E-mail Address (Case Sensitive).
*/
MSG_ENTER_EMAIL_TOOLTIP = 0x12c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë©”ì¼ ì£¼ì†Œê°€ 틀려서 ìºë¦­í„°ê°€ ì‚­ì œ ë˜ì§€ 않았습니다.
Character Deletion has failed because you have entered an incorrect e-mail address.
*/
MSG_CANNOT_DELETE_CHARACTER_EMAIL = 0x12d,
-/*20171018 to 20180627
+/*20171018 to 20180711
계정 비밀번호를 입력하세요.
Enter Second Serial Cord of your Social Security number.
*/
MSG_ENTER_PEOPLE_REG_NUMBER = 0x12e,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호가 틀려서 ìºë¦­í„°ê°€ ì‚­ì œ ë˜ì§€ 않았습니다.
Character Deletion has failed because you have entered an incorrect SSN.
*/
MSG_CANNOT_DELETE_CHARACTER_PEOPLE_REG_NUMBER = 0x12f,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•œë²ˆì— 15가지 ì´ìƒì˜ ì•„ì´í…œì„ 팔 수 없습니다.
You can't sell more than 15 types of Items at one time.
*/
MSG_CANT_SELL_OVER_15 = 0x130,
-/*20171018 to 20180627
+/*20171018 to 20180711
나ì´ì œí•œ ë•Œë¬¸ì— ì´ê³„정으로 ì´ì„œë²„ì— ì ‘ì†í•  수 없습니다.
The age limit from commandment tables cannot connect to this server.
*/
MSG_UNDER_AGE = 0x131,
-/*20171018 to 20180627
+/*20171018 to 20180711
무게가 50 í¼ì„¼íŠ¸ ì´ìƒì¼ë•ŒëŠ” HP SPê°€ ìžì—°ì ìœ¼ë¡œ íšŒë³µì´ ë˜ì§€ 않습니다.
HP/SP will not be restored when your carried weight is over 50% of the Weight Limit.
*/
MSG_NO_RECOVER_OVERWEIGHT = 0x132,
-/*20171018 to 20180627
+/*20171018 to 20180711
무게가 90 í¼ì„¼íŠ¸ ì´ìƒì¼ë•ŒëŠ” 공격과 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use Skills or Attack while your carried weight is over 90% of your Weight Limit.
*/
MSG_NO_ATTACK_OVERWEIGHT = 0x133,
-/*20171018 to 20180627
+/*20171018 to 20180711
HP SPê°€ ìžì—°ì ìœ¼ë¡œ íšŒë³µì´ ê°€ëŠ¥í•œ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Your HP/SP are now being restored naturally.
*/
MSG_NO_RECOVER_OVERWEIGHT_RELEASED = 0x134,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격과 ìŠ¤í‚¬ì´ ê°€ëŠ¥í•œ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Attack and Skills are now available.
*/
MSG_NO_ATTACK_OVERWEIGHT_RELEASED = 0x135,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버 ì ê²€ì¤‘입니다.
Your Game's Exe File is not the latest version.
*/
MSG_INVALID_VERSION = 0x136,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì´ ëª¨ë‘ íŒ”ë ¸ìŠµë‹ˆë‹¤.
Items are sold out.
*/
MSG_ITEM_IS_SOLD_OUT = 0x137,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅내용 파ì¼ë¡œ 저장하기
Save Chat as Text File
*/
MSG_WRITE_CHAT_TO_FILE = 0x138,
-/*20171018 to 20180627
+/*20171018 to 20180711
/갈무리 or /savechat : 채팅 ë‚´ìš© 파ì¼ë¡œ 저장하기.
/savechat: Save a Chat Log
*/
MSG_EXPLAIN_SAVE_CHAT = 0x139,
-/*20171018 to 20180627
+/*20171018 to 20180711
계정 만들기
Register
*/
MSG_MAKEACCOUNT = 0x13a,
-/*20171018 to 20180627
+/*20171018 to 20180711
수신거부하기
Reject Whispering
*/
MSG_REQ_EX_LIST = 0x13b,
-/*20171018 to 20180627
+/*20171018 to 20180711
수신거부해제하기
Allow Whispering
*/
MSG_REQ_IN = 0x13c,
-/*20171018 to 20180627
+/*20171018 to 20180711
미스표시 On
Shows ''Miss''
*/
MSG_MISS_EFFECT_ON = 0x13d,
-/*20171018 to 20180627
+/*20171018 to 20180711
미스표시 Off
Shows ''Miss''
*/
MSG_MISS_EFFECT_OFF = 0x13e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¹´ë©”ë¼ê³ ì • On
Camera Zooming On
*/
MSG_FIXED_CAMERA_ON = 0x13f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¹´ë©”ë¼ê³ ì • Off
Camera Zooming Off
*/
MSG_FIXED_CAMERA_OFF = 0x140,
-/*20171018 to 20180627
+/*20171018 to 20180711
/camera : 플레ì´ì–´ì—게 ì¹´ë©”ë¼ê³ ì • On Off /miss : 미스ì´íŽ™íŠ¸ On Off
/camera: Camera Zooming On or Off. /miss: Toggle ''Miss'' display
*/
MSG_EXPLAIN_CAMERA_MISS = 0x141,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬정보보기
View Skill Info
*/
MSG_SEE_INFORMATION_OF_SKILL = 0x142,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬ì´ë¦„바꾸기
Change Skill
*/
MSG_CHANGE_SKILL_NAME = 0x143,
-/*20171018 to 20180627
+/*20171018 to 20180711
스프ë¼ì´íŠ¸ í•´ìƒë„
Sprite Resolution
*/
MSG_SPRITE_RESOLUTION = 0x144,
-/*20171018 to 20180627
+/*20171018 to 20180711
í…ìŠ¤ì³ í•´ìƒë„
Texture Resolution
*/
MSG_TEXTURE_RESOLUTION = 0x145,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë””í…Œì¼ ì¡°ì •
Arrange Detail
*/
MSG_DETAILLEVELWND = 0x146,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s Zeny íšë“
You got %s Zeny
*/
MSG_GET_ZENY = 0x147,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드명
Guild Name
*/
MSG_GUILDNAME = 0x148,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드레벨
Guild lvl
*/
MSG_GUILDLEVEL = 0x149,
-/*20171018 to 20180627
+/*20171018 to 20180711
마스터ì´ë¦„
ClanMaster Name
*/
MSG_GUILD_MASTER_NAME = 0x14a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¡°í•©ì›ìˆ˜
Number of Members
*/
MSG_GUILD_NUM_MEMBER = 0x14b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¡°í•©ì› í‰ê· ë ˆë²¨
Avg.lvl of Guildsmen
*/
MSG_GUILD_AVG_MEMBER_LEVEL = 0x14c,
-/*20171018 to 20180627
+/*20171018 to 20180711
관리ì˜ì§€
Castles Owned
*/
MSG_GUILD_MANAGE_LAND = 0x14d,
-/*20171018 to 20180627
+/*20171018 to 20180711
성향
Tendency
*/
MSG_GUILD_FAIR = 0x14e,
-/*20171018 to 20180627
+/*20171018 to 20180711
경험치
EXP
*/
MSG_GUILD_EXP = 0x14f,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드엠블렘
Emblem
*/
MSG_GUILD_EMBLEM = 0x150,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ìƒë‚©í¬ì¸íŠ¸
Tax Point
*/
MSG_GUILD_POINT = 0x151,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë™ë§¹ê¸¸ë“œ
Alliances
*/
MSG_ALLY_GUILD = 0x152,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ëŒ€ê¸¸ë“œ
Antagonists
*/
MSG_HOSTILITY_GUILD = 0x153,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드정보
Guild Info
*/
MSG_GUILDINFOMANAGE = 0x154,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¡°í•©ì›ì •ë³´
Guildsmen Info
*/
MSG_GUILDMEMBERMANAGE = 0x155,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§ìœ„설정
Position
*/
MSG_GUILDPOSITIONMANAGE = 0x156,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드스킬
Guild Skill
*/
MSG_GUILDSKILL = 0x157,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¶”ë°©ìž ë¦¬ìŠ¤íŠ¸
Expel History
*/
MSG_GUILDBANISHEDMEMBER = 0x158,
-/*20171018 to 20180627
+/*20171018 to 20180711
공지사항
Guild Notice
*/
MSG_GUILDNOTICE = 0x159,
-/*20171018 to 20180627
+/*20171018 to 20180711
전체길드 리스트
Entire Guild List
*/
MSG_GUILDTOTALINFO = 0x15a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·“ë§ ë¦¬ìŠ¤íŠ¸
Whispering List
*/
MSG_WHISPERLISTWND = 0x15b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·“ë§ì°½ 열기
Open Whispering Window
*/
MSG_OPENWHISPERLISTWND = 0x15c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·“ë§ ë¦¬ìŠ¤íŠ¸ ì°½ 여는법 : [Alt] + [H] 를 누르면 ê·“ë§ ë¦¬ìŠ¤íŠ¸ ì°½ì´ ì—´ë¦½ë‹ˆë‹¤.
How to Open Whispering List: Press [Alt] + [H]
*/
MSG_EXPLAIN_WHISPER_LIST_WND = 0x15d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìžë™ìœ¼ë¡œ ê·“ë§ì°½ 열기
Open Whispering List Automatically
*/
MSG_AUTOOPENWHISPERLISTWND = 0x15e,
-/*20171018 to 20180627
+/*20171018 to 20180711
지우기
Delete
*/
MSG_DELETE = 0x15f,
-/*20171018 to 20180627
+/*20171018 to 20180711
다ìŒë¶€í„° 열리지 ì•ŠìŒ
Close since next
*/
MSG_DONTOPEN = 0x160,
-/*20171018 to 20180627
+/*20171018 to 20180711
마지막으로 ì ‘ì†í•œ 시간
Last Log-in Time
*/
MSG_LAST_LOGIN_TIME = 0x161,
-/*20171018 to 20180627
+/*20171018 to 20180711
마지막으로 ì ‘ì†í•œ IP
Last Log-in IP
*/
MSG_LAST_LOGIN_IP = 0x162,
-/*20171018 to 20180627
+/*20171018 to 20180711
친구 설정
Friend Setup
*/
MSG_FRIEND_SETTING = 0x163,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ë§ ì§€ìš°ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure that you want to delete?
*/
MSG_DO_YOU_REALLY_WANT_DELETE = 0x164,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ë§ íƒˆí‡´í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure that you want to leave?
*/
MSG_DO_YOU_REALLY_WANT_LEAVE = 0x165,
-/*20171018 to 20180627
+/*20171018 to 20180711
친구로 등ë¡í•˜ê¸°
Register as a Friend
*/
MSG_ADD_TO_FRIEND_CHAR_LIST = 0x166,
-/*20171018 to 20180627
+/*20171018 to 20180711
친구ì¼ë•Œ ìžë™ìœ¼ë¡œ 1:1ì°½ 열기
Open 1:1 Chat between Friends
*/
MSG_AUTOOPENWHISPERLISTWND_FRIEND = 0x167,
-/*20171018 to 20180627
+/*20171018 to 20180711
1:1창 열기
Open 1:1 Chat
*/
MSG_OPEN_1ON1_WINDOW = 0x168,
-/*20171018 to 20180627
+/*20171018 to 20180711
친구가 ì•„ë‹ë•Œ ìžë™ìœ¼ë¡œ 1:1ì°½ 열기
Open 1:1 Chat between Strangers
*/
MSG_AUTOOPEN_1ON1_WINDOW = 0x169,
-/*20171018 to 20180627
+/*20171018 to 20180711
1:1창 열릴때 소리로 알림
Alarm when you recieve a 1:1 Chat
*/
MSG_WHISPER_OPEN_SOUND = 0x16a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ë§ ì œëª…ì‹œí‚¤ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure that you want to expel?
*/
MSG_DO_YOU_REALLY_WANT_EXPEL = 0x16b,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ë‹˜ì´ ê¸¸ë“œë¥¼ 탈퇴했습니다.
%s has withdrawn from the guild.
*/
MSG_USER_LEFT_GUILD = 0x16c,
-/*20171018 to 20180627
+/*20171018 to 20180711
탈퇴사유 : %s
Secession Reason: %s
*/
MSG_REASON_LEAVE_GUILD = 0x16d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸¸ë“œëª…ì´ ì¼ì¹˜í•˜ì§€ 않습니다
You have failed to disband the guild.
*/
MSG_DISORGANIZE_GUILD_FAILURE = 0x16e,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드해체사유 : %s
Disband Reason: %s
*/
MSG_DISORGANIZATION_REASON = 0x16f,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ê³„ì •ì€ ì‚­ì œëœ ì•„ì´ë”” 입니다.
This ID has been removed.
*/
MSG_DELETED_ACCOUNT = 0x170,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ê°€ :
Price:
*/
MSG_SELLPRICE = 0x171,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ë‹˜ì´ ê¸¸ë“œì—ì„œ 추방ë˜ì—ˆìŠµë‹ˆë‹¤.
%s has been expelled from our guild.
*/
MSG_BAN_GUILD = 0x172,
-/*20171018 to 20180627
+/*20171018 to 20180711
추방사유 : %s
Expulsion Reason: %s
*/
MSG_REASON_BAN_GUILD = 0x173,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ ì°©ìš©í•  수 없습니다.
You can't put this item on.
*/
MSG_CAN_NOT_EQUIP_ITEM = 0x174,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ì„¤ì •ì„ ë³€ê²½í•  수 없습니다.
You can't modify Party Setup.
*/
MSG_PARTYSETTING_CHANGE_IMPOSSIBLE = 0x175,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드가 만들어 졌습니다.
Guild has been Created.
*/
MSG_GUILD_MAKE_SUCCESS = 0x176,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ ê¸¸ë“œì— ì†í•´ìžˆìŠµë‹ˆë‹¤.
You are already in a Guild.
*/
MSG_GUILD_MAKE_ALREADY_MEMBER = 0x177,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ì´ë¦„ì˜ ê¸¸ë“œê°€ 존재합니다.
That Guild Name already exists.
*/
MSG_GUILD_MAKE_GUILD_EXIST = 0x178,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì—ì„œ 초청 메시지가 왔습니다. 가입하겠습니까?
Guild has sent you an invitation. Would you like to join this Guild?
*/
MSG_SUGGEST_JOIN_GUILD = 0x179,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹¤ë¥¸ê¸¸ë“œì— ê°€ìž…ë˜ì–´ 있습니다.
He/She is already in a Guild.
*/
MSG_CHARACTER_IS_ALREADY_IN_GUILD = 0x17a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸¸ë“œê°€ìž…ì„ ê±°ì ˆ 했습니다.
Offer Rejected
*/
MSG_CHARACTER_REJECT_JOIN_GUILD = 0x17b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸¸ë“œê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
Offer Accepted
*/
MSG_CHARACTER_ACCEPT_JOIN_GUILD = 0x17c,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드정ì›ì„ 초과했습니다.
Your Guild is Full.
*/
MSG_TOO_MANY_PEOPLE_IN_GUILD = 0x17d,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)님 ê¸¸ë“œì— ê°€ìž…ìš”ì²­
Send (%s) a Guild invitation
*/
MSG_REQ_JOIN_GUILD = 0x17e,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬 ë ˆë²¨ì´ ëª¨ìžë¼ì„œ 매너í¬ì¸íŠ¸ë¥¼ 줄 수 없습니다.
You haven't learned enough skills for aligning.
*/
MSG_NOT_ENOUGH_FOR_MANNER_POINT = 0x17f,
-/*20171018 to 20180627
+/*20171018 to 20180711
매너 í¬ì¸íŠ¸ 주기 성공
Aligning completed.
*/
MSG_GIVING_MANNER_POINT_SUCCESS = 0x180,
-/*20171018 to 20180627
+/*20171018 to 20180711
오늘 ì´ë¯¸ 사용했습니다.
You already spent your point for today.
*/
MSG_YOU_USE_TODAY_ALREADY = 0x181,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ìºë¦­í„°ì—게 지급한지 í•œë‹¬ì´ ì§€ë‚˜ì§€ 않았습니다.
Hasn't been a month yet since you aligned this person.
*/
MSG_ONE_MONTH_NOT_PASSED = 0x182,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 님으로부터 플러스 매너 í¬ì¸íŠ¸ë¥¼ 받았습니다.
Remember, Spamming isn't nice.
*/
MSG_RECEIVE_PLUS_MANNER_POINT = 0x183,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 님으로부터 마ì´ë„ˆìŠ¤ 매너 í¬ì¸íŠ¸ë¥¼ 받았습니다.
Please refrain from ill-mannered conduct, thank you.
*/
MSG_RECEIVE_MINUS_MANNER_POINT = 0x184,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅 금지 시간 줄ì´ê¸°(풀기)
Align with a Good Point
*/
MSG_GIVE_PLUS_MANNER_POINT = 0x185,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅 금지 시간 늘ì´ê¸°(걸기)
Align with a Bad Point
*/
MSG_GIVE_MINUS_MANNER_POINT = 0x186,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ê³¼ì˜ ê±°ëž˜ìš”ì²­
Request a deal with (%s)
*/
MSG_REQ_DEAL_WITH2 = 0x187,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)님 íŒŒí‹°ì— ê°€ìž…ìš”ì²­
Ask (%s) to join your party
*/
MSG_REQ_JOIN_PARTY2 = 0x188,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì—ì„œ ë™ë§¹ìš”ì²­ 메시지가 왔습니다. ë™ë§¹í•˜ê² ìŠµë‹ˆê¹Œ?
Guild is asking you to agree to an Alliance with them. Do you accept?
*/
MSG_SUGGEST_ALLY_GUILD = 0x189,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ ë™ë§¹ë˜ì–´ 있습니다.
This Guild is already your Ally.
*/
MSG_REQALLYGUILD_ALREADY_ALLIED = 0x18a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë™ë§¹ì„ ê±°ì ˆ 했습니다.
You reject the offer
*/
MSG_REQALLYGUILD_REJECT = 0x18b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë™ë§¹ì„ ìˆ˜ë½ í–ˆìŠµë‹ˆë‹¤.
You accept the offer
*/
MSG_REQALLYGUILD_ACCEPT = 0x18c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒëŒ€ê¸¸ë“œì˜ ë™ë§¹ê¸¸ë“œì˜ 수가 초과 ë˜ì—ˆìŠµë‹ˆë‹¤.
They have too many Alliances.
*/
MSG_REQALLYGUILD_OVERSIZE = 0x18d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸¸ë“œì˜ ë™ë§¹ê¸¸ë“œì˜ 수가 초과 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have too many Alliances.
*/
MSG_REQALLYMYGUILD_OVERSIZE = 0x18e,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 ë™ë§¹ 요청
Set this guild as an Alliance
*/
MSG_REQ_ALLY_GUILD = 0x18f,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드가 성공ì ìœ¼ë¡œ í•´ì²´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Guild was successfully disbanded.
*/
MSG_DISORGANIZE_GUILD_SUCCESS = 0x190,
-/*20171018 to 20180627
+/*20171018 to 20180711
주민등ë¡ë²ˆí˜¸ê°€ 틀려서 길드가 í•´ì²´ë˜ì§€ 않았습니다.
You have failed to disband the guild due to your incorrect SSN.
*/
MSG_DISORGANIZE_GUILD_INVALIDKEY = 0x191,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드맴버가 존재해서 길드가 í•´ì²´ë˜ì§€ 않았습니다.
You have failed to disband the guild because there are guildsmen still present.
*/
MSG_DISORGANIZE_GUILD_MEMBEREXIST = 0x192,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 ì ëŒ€ 요청
Set this guild as an Antagonist
*/
MSG_REQ_HOSTILE_GUILD = 0x193,
-/*20171018 to 20180627
+/*20171018 to 20180711
머리색깔 ì„ íƒ
Choose Hair Color
*/
MSG_SELECT_HAIR_COLOR = 0x194,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드결성시 필요한 ì•„ì´í…œì´ 없습니다.
You don't have necessary item to create a Guild.
*/
MSG_GUILD_MAKE_GUILD_NONE_ITEM = 0x195,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터 정보
Monster Info
*/
MSG_MONSTER_INFO_WINDOW = 0x196,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„
Name
*/
MSG_NAME = 0x197,
-/*20171018 to 20180627
+/*20171018 to 20180711
레벨
Level
*/
MSG_LEVEL = 0x198,
-/*20171018 to 20180627
+/*20171018 to 20180711
HP
*/
MSG_HP = 0x199,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¬ê¸°
Size
*/
MSG_SIZE = 0x19a,
-/*20171018 to 20180627
+/*20171018 to 20180711
종족
Type
*/
MSG_RACETYPE = 0x19b,
-/*20171018 to 20180627
+/*20171018 to 20180711
MDEF
*/
MSG_MDEFPOWER = 0x19c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì†ì„±
Attribute
*/
MSG_PROPERTY = 0x19d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ç„¡
Neutral
*/
MSG_PROPERTY_NEUTURAL = 0x19e,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ°´
Water
*/
MSG_PROPERTY_WATER = 0x19f,
-/*20171018 to 20180627
+/*20171018 to 20180711
地
Earth
*/
MSG_PROPERTY_EARTH = 0x1a0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ç«
Fire
*/
MSG_PROPERTY_FIRE = 0x1a1,
-/*20171018 to 20180627
+/*20171018 to 20180711
風
Wind
*/
MSG_PROPERTY_WIND = 0x1a2,
-/*20171018 to 20180627
+/*20171018 to 20180711
毒
Poison
*/
MSG_PROPERTY_POISON = 0x1a3,
-/*20171018 to 20180627
+/*20171018 to 20180711
è–
Holy
*/
MSG_PROPERTY_SAINT = 0x1a4,
-/*20171018 to 20180627
+/*20171018 to 20180711
æš—
Shadow
*/
MSG_PROPERTY_DARK = 0x1a5,
-/*20171018 to 20180627
+/*20171018 to 20180711
念
Ghost
*/
MSG_PROPERTY_MENTAL = 0x1a6,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ­»
Undead
*/
MSG_PROPERTY_UNDEAD = 0x1a7,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재는 ì•„ì´í…œì„ 만들 수 없습니다.
You can't create items yet.
*/
MSG_CANT_MAKE_ITEM = 0x1a8,
-/*20171018 to 20180627
+/*20171018 to 20180711
제조 목ë¡
Item List you can craft
*/
MSG_MAKE_LIST = 0x1a9,
-/*20171018 to 20180627
+/*20171018 to 20180711
만들기
Create
*/
MSG_MAKE_TARGET = 0x1aa,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì— í•„ìš”í•œ 재료:
's materials
*/
MSG_REQUIRE_FOR_MAKE_TARGET = 0x1ab,
-/*20171018 to 20180627
+/*20171018 to 20180711
만들기 실패
item creation failed.
*/
MSG_MAKE_TARGET_FAIL = 0x1ac,
-/*20171018 to 20180627
+/*20171018 to 20180711
만들기 성공
item created successfully.
*/
MSG_MAKE_TARGET_SUCCEESS = 0x1ad,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 만들기를 실패하였습니다.
item creation failed.
*/
MSG_MAKE_TARGET_FAIL_MSG = 0x1ae,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 만들기를 성공했습니다.
item created successfully.
*/
MSG_MAKE_TARGET_SUCCEESS_MSG = 0x1af,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
You are not the required lvl.
*/
MSG_NOT_ENOUGH_LEVEL = 0x1b0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë ˆë²¨ì´ ë„ˆë¬´ 높습니다.
Too high lvl for this job.
*/
MSG_TOO_HIGH_LEVEL = 0x1b1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§ì—…ì´ ì í•©í•˜ì§€ 않습니다.
Not the suitable job for this type of work.
*/
MSG_NOT_ACCEPTABLE_JOB = 0x1b2,
-/*20171018 to 20180627
+/*20171018 to 20180711
토키 박스 트랩 메세지
Record a message in the Talkie Box
*/
MSG_TALKBOX_WINDOW = 0x1b3,
-/*20171018 to 20180627
+/*20171018 to 20180711
기ë¡í•  메세지를 입력하시기 ë°”ëžë‹ˆë‹¤.
Please type a message for the Talkie Box
*/
MSG_TALKBOX_WINDOW_MSG = 0x1b4,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì—게 보냄
Send to Guild
*/
MSG_SEND_TO_GUILD = 0x1b5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê²°ì œëœ ê³„ì •ì´ ì•„ë‹™ë‹ˆë‹¤. ê²°ì œ 페ì´ì§€ë¡œ ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You didn't pay for this ID. Would you like to pay for it now?
*/
MSG_NOT_SETTLED = 0x1b6,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버가 혼잡한 관계로 잠시후 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Server is jammed due to overpopulation. Please try again after few minutes.
*/
MSG_ACCOUNT_BUSY = 0x1b7,
-/*20171018 to 20180627
+/*20171018 to 20180711
지난 ì ‘ì† ì •ë³´ê°€ 남아 있습니다. 30ì´ˆì •ë„ ì§€ë‚œë’¤ì— ë‹¤ì‹œ ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Server still recognizes your last log-in. Please try again after a few minutes.
*/
MSG_INFORMATION_REMAINED = 0x1b8,
-/*20171018 to 20180627
+/*20171018 to 20180711
매 풀어주기
Release Falcon
*/
MSG_BIRDOFF = 0x1b9,
-/*20171018 to 20180627
+/*20171018 to 20180711
페코페코 내리기
Dismount
*/
MSG_CHIKENOFF = 0x1ba,
-/*20171018 to 20180627
+/*20171018 to 20180711
å°
Small
*/
MSG_SIZE_SMALL = 0x1bb,
-/*20171018 to 20180627
+/*20171018 to 20180711
中
Med
*/
MSG_SIZE_MIDDLE = 0x1bc,
-/*20171018 to 20180627
+/*20171018 to 20180711
大
Big
*/
MSG_SIZE_BIG = 0x1bd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë”블
Double
*/
MSG_DOUBLE = 0x1be,
-/*20171018 to 20180627
+/*20171018 to 20180711
트리플
Triple
*/
MSG_TRIPLE = 0x1bf,
-/*20171018 to 20180627
+/*20171018 to 20180711
쿼드로플
Quadruple
*/
MSG_QUADROPLE = 0x1c0,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 까지 로그ì¸ì„ 금지하고 있습니다.
You are prohibited to log in until %s.
*/
MSG_LOGIN_REFUSE_BLOCKED_UNTIL = 0x1c1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜
's
*/
MSG_MANUFACTURED_NORMAL_ITEM = 0x1c2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ íŒŒì´ì–´
's Fire
*/
MSG_MANUFACTURED_FIRE_ITEM = 0x1c3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ ì•„ì´ìŠ¤
's Ice
*/
MSG_MANUFACTURED_ICE_ITEM = 0x1c4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ ìœˆë“œ
's Wind
*/
MSG_MANUFACTURED_WIND_ITEM = 0x1c5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ ì–´ìŠ¤
's Earth
*/
MSG_MANUFACTURED_EARTH_ITEM = 0x1c6,
-/*20171018 to 20180627
+/*20171018 to 20180711
211.239.161.246
38.144.194.2
*/
MSG_ACCOUNT_ADDRESS = 0x1c7,
-/*20171018 to 20180627
+/*20171018 to 20180711
6900
*/
MSG_ACCOUNT_PORT = 0x1c8,
/*20171018 to 20171206
http://www.ragnarok.co.kr
-20171208 to 20180627
+20171208 to 20180711
http://roz.gnjoy.com/
http://www.ragnarok.co.kr
*/
MSG_REGISTRATION_WEB_URL = 0x1c9,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì‚¬ìš©ìž ê°•ì œ 종료
Kill %s
*/
MSG_BAN_USER = 0x1ca,
-/*20171018 to 20180627
+/*20171018 to 20180711
무지쎈
Very Strong
*/
MSG_ONE_STARPIECE = 0x1cb,
-/*20171018 to 20180627
+/*20171018 to 20180711
무지무지쎈
Very Very Strong
*/
MSG_TWO_STARPIECE = 0x1cc,
-/*20171018 to 20180627
+/*20171018 to 20180711
무무무쎈
Very Very Very Strong
*/
MSG_THREE_STARPIECE = 0x1cd,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 추방 사유
The Reason of Expulsion
*/
MSG_GUILD_KICK_REASON = 0x1ce,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격 ì†ë„ê°€ ì¦ê°€í–ˆìŠµë‹ˆë‹¤.
Attack Speed is up.
*/
MSG_INCATTACKSPEED = 0x1cf,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격 ì†ë„ê°€ ê°ì†Œí–ˆìŠµë‹ˆë‹¤.
Attack Speed is down.
*/
MSG_DECATTACKSPEED = 0x1d0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¬´ê¸°ì˜ ê³µê²©ë ¥ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon Damage is improved.
*/
MSG_INCWEAPONATTACK = 0x1d1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¬´ê¸°ì˜ ê³µê²©ë ¥ì´ ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon Damage is reduced.
*/
MSG_DECWEAPONATTACK = 0x1d2,
-/*20171018 to 20180627
+/*20171018 to 20180711
시전 딜레ì´ê°€ 줄었습니다.
Cast Delay is reduced.
*/
MSG_FASTPREDELAY = 0x1d3,
-/*20171018 to 20180627
+/*20171018 to 20180711
시전 딜레ì´ê°€ ì •ìƒìœ¼ë¡œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Cast Delay has returned to normal.
*/
MSG_NORMALPREDELAY = 0x1d4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¬´ê¸°ì— ë…ì†ì„±ì´ 부여ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon is temporarily enchanted with Poison.
*/
MSG_WEAPONPROPERTYPOISON = 0x1d5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¬´ê¸°ì— ì„±ì†ì„±ì´ 부여ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon is temporarily enchanted with an elemental property.
*/
MSG_WEAPONPROPERTYSAINT = 0x1d6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¬´ê¸°ì˜ ì›ëž˜ì†ì„±ì´ ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon has changed back to normal.
*/
MSG_WEAPONPROPERTYORIGINAL = 0x1d7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°©ì–´êµ¬ì— ì„±ì†ì„±ì´ 부여ë˜ì—ˆìŠµë‹ˆë‹¤.
Armor has been enchanted with the Holy Ghost.
*/
MSG_ARMORPROPERTYSAINT = 0x1d8,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°©ì–´êµ¬ì˜ ì›ëž˜ì†ì„±ì´ ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
Armor has changed back to normal.
*/
MSG_ARMORPROPERTYORIGINAL = 0x1d9,
-/*20171018 to 20180627
+/*20171018 to 20180711
배리어 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Barrier Formed.
*/
MSG_BARRIOR = 0x1da,
-/*20171018 to 20180627
+/*20171018 to 20180711
배리어 ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Barrier Canceled.
*/
MSG_DISAPPEARBARRIOR = 0x1db,
-/*20171018 to 20180627
+/*20171018 to 20180711
소형, 중형, 대형 몬스터ì—게 100% ê³µê²©ë ¥ì„ ì¤ë‹ˆë‹¤.
Weapon Perfection Initiated.
*/
MSG_PERFECTDAMAGE = 0x1dc,
-/*20171018 to 20180627
+/*20171018 to 20180711
웨í°í¼íŽ™ì…˜ 모드가 í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Weapon perfection Canceled.
*/
MSG_DISAPPEARPERFECTDAMAGE = 0x1dd,
-/*20171018 to 20180627
+/*20171018 to 20180711
무기가 íŒŒê´´ë  ê°€ëŠ¥ì„±ì´ ë†’ì•„ì§„ 대신 ë¬´ê¸°ì˜ ê³µê²©ë ¥ì´ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
Power-Thrust Initiated.
*/
MSG_OVERTHRUSTING = 0x1de,
-/*20171018 to 20180627
+/*20171018 to 20180711
오버트러스트 ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Power-Thrust Canceled.
*/
MSG_DISAPPEAROVERTHRUSTING = 0x1df,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¬´ê¸°ì˜ ìµœëŒ€ ì„±ëŠ¥ì„ ëŒì–´ëƒ…니다.
Maximize-Power Initiated.
*/
MSG_MAXIMIZE = 0x1e0,
-/*20171018 to 20180627
+/*20171018 to 20180711
맥시마ì´ì¦ˆ ìƒíƒœê°€ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Maximize-Power Canceled.
*/
MSG_DISAPPEARMAXIMIZE = 0x1e1,
-/*20171018 to 20180627
+/*20171018 to 20180711
[신서버]
[New Server]
*/
MSG_SERVER_PROPERTY_NEW = 0x1e2,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%d 명)
(%d players)
*/
MSG_SERVER_USER_COUNT = 0x1e3,
-/*20171018 to 20180627
+/*20171018 to 20180711
(ì ê²€ì¤‘)
(On the maintenance)
*/
MSG_SERVER_INSPECTING = 0x1e4,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드멤버 %së‹˜ì´ ì ‘ì†í•˜ì…¨ìŠµë‹ˆë‹¤.
Guild member %s has connected.
*/
MSG_GUILD_MEMBER_STATUS_ONLINE = 0x1e5,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드멤버 %së‹˜ì´ ì¢…ë£Œí•˜ì…¨ìŠµë‹ˆë‹¤.
Guild member %s has disconnected.
*/
MSG_GUILD_MEMBER_STATUS_OFFLINE = 0x1e6,
-/*20171018 to 20180627
+/*20171018 to 20180711
경험치 %d ì–»ìŒ
You got %d Base EXP.
*/
MSG_GOT_EXPERIENCE_POINT = 0x1e7,
-/*20171018 to 20180627
+/*20171018 to 20180711
잡경험치 %d ì–»ìŒ
You got %d Job EXP.
*/
MSG_GOT_JOB_EXPERIENCE_POINT = 0x1e8,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì—ì„œ 탈퇴 했습니다.
You left the guild.
*/
MSG_LEFT_GUILD = 0x1e9,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì—ì„œ 추방 당했습니다.
You have been expelled from the Guild.
*/
MSG_BAN_FROM_GUILD = 0x1ea,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ê°ì • 성공
Item Appraisal has completed successfully.
*/
MSG_ITEM_IDENTIFY_SUCCEESS = 0x1eb,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ê°ì • 실패
Item appraisal has failed.
*/
MSG_ITEM_IDENTIFY_FAIL = 0x1ec,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ì¡°í•© 성공
Compounding has completed successfully.
*/
MSG_ITEM_COMPOUNDING_SUCCEESS = 0x1ed,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ì¡°í•© 실패
Compounding has failed.
*/
MSG_ITEM_COMPOUNDING_FAIL = 0x1ee,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 ì ëŒ€ 성공
Antagonist has been set.
*/
MSG_HOSTILE_GUILD_SUCCEESS = 0x1ef,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ëŒ€ 길드수 초과로 길드 ì ëŒ€ 실패
Guild has too many Antagonists.
*/
MSG_TOO_MANY_HOSTILE_GUILD = 0x1f0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ ì ëŒ€ 길드 입니다
Already set as an Antagonist
*/
MSG_ALREADY_REGISTERED_HOSTILE_GUILD = 0x1f1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì œë ¨ì´ ì„±ê³µì ìœ¼ë¡œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Upgrade has been completed successfully.
*/
MSG_ITEM_REFINING_SUCCEESS = 0x1f2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì œë ¨ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Upgrade has failed.
*/
MSG_ITEM_REFINING_FAIL = 0x1f3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ê³³ì—서는 순간ì´ë™ì´ 불가능합니다.
Unavailable Area to Teleport
*/
MSG_IMPOSSIBLE_TELEPORT_AREA = 0x1f4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìž¥ì†ŒëŠ” 기억할 수 없습니다.
Unable to memorize this place as Warp Point
*/
MSG_POSSIBLE_TELEPORT_AREA = 0x1f5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§€ê¸ˆì€ ì¢…ë£Œí•  수 없습니다.
Please wait 10 seconds before trying to log out.
*/
MSG_CANT_EXIT_NOW = 0x1f6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§ìœ„
Position
*/
MSG_POSITION = 0x1f7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§ì—…
Job
*/
MSG_JOB = 0x1f8,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모
Note
*/
MSG_MEMO = 0x1f9,
-/*20171018 to 20180627
+/*20171018 to 20180711
기여
Devotion
*/
MSG_CONTRIBUTION = 0x1fa,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒë‚©ê²½í—˜ì¹˜
Tax Point
*/
MSG_EXP_CONTIRIBUTION = 0x1fb,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드탈퇴
Leave Guild
*/
MSG_LEAVE_GUILD = 0x1fc,
-/*20171018 to 20180627
+/*20171018 to 20180711
제명시키기
Expel
*/
MSG_EXPEL_GUILD = 0x1fd,
-/*20171018 to 20180627
+/*20171018 to 20180711
서열
Rank
*/
MSG_GRADE = 0x1fe,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§ìœ„명
Position Title
*/
MSG_POSITION_NAME = 0x1ff,
-/*20171018 to 20180627
+/*20171018 to 20180711
가입권한
Invitation
*/
MSG_JOIN_AUTHORITY = 0x200,
-/*20171018 to 20180627
+/*20171018 to 20180711
처벌권한
Punish
*/
MSG_PENALTY_AUTORITY = 0x201,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒë‚©%
Tax %
*/
MSG_CONTRIBUTION_PERCENT = 0x202,
-/*20171018 to 20180627
+/*20171018 to 20180711
제목
Title
*/
MSG_TITLE = 0x203,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚´ìš©
For
*/
MSG_CONTENTS = 0x204,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì´ë¦„
Guild Name
*/
MSG_GUILD_NAME = 0x205,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드레벨
Guild lvl
*/
MSG_GUILD_LEVEL = 0x206,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¡°í•©ì›ìˆ˜
Number of Members
*/
MSG_GUILD_PEOPLE_COUNT = 0x207,
-/*20171018 to 20180627
+/*20171018 to 20180711
랭킹
Ranking
*/
MSG_RANKING = 0x208,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ê°ì •
Item Appraisal
*/
MSG_ITEM_IDENTIFY = 0x209,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ì¡°í•©
Insert Card
*/
MSG_ITEM_COMPOUNDING = 0x20a,
-/*20171018 to 20180627
+/*20171018 to 20180711
탈퇴 사유를 입력해주세요.
Please enter the reason of Secession.
*/
MSG_PLEASE_INPUT_WHY_LEAVING = 0x20b,
-/*20171018 to 20180627
+/*20171018 to 20180711
추방 사유를 입력해주세요.
Please enter the reason of Expulsion.
*/
MSG_PELASE_INPUT_WHY_EXPEL = 0x20c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì ì„ 닫으세요.
Please close Shop.
*/
MSG_PLEASE_CLOSE_STORE = 0x20d,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬 ì´ë¦„
Skill
*/
MSG_SKILL_NAME = 0x20e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ì´ë¦„
Item Name
*/
MSG_ITEM_NAME = 0x20f,
-/*20171018 to 20180627
+/*20171018 to 20180711
https://payment.ragnarok.co.kr
https://pay.ragnarok.co.kr (Billing Web)
*/
MSG_SETTLE_WEB_URL = 0x210,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임방ì—ì„œ 사용가능한 IP개수가 ëª¨ë‘ ì‚¬ìš©ì¤‘ìž…ë‹ˆë‹¤. ê°œì¸ ê³„ì •ìœ¼ë¡œ ê²°ì œ 하시겠습니까?
IP capacity of this Internet Cafe is full. Would you like to pay the personal base?
*/
MSG_BAN_IP_OVERFLOW = 0x211,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê²°ì œì‹œê°„ì´ ë‹¤ë˜ì–´ ê²Œìž„ì„ ì¢…ë£Œí•©ë‹ˆë‹¤.
You are out of available paid playing time. Game will be shut down automatically.
*/
MSG_BAN_PAY_OUT = 0x212,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. 한글 11ìž ì˜ë¬¸ 23ìž ì´ë‚´ë¡œ ì¨ì£¼ì‹­ì‹œì˜¤.
Name is too long. Please enter a name no greater than 23 english characters.
*/
MSG_NAMELENGTH_TOO_LONG = 0x213,
-/*20171018 to 20180627
+/*20171018 to 20180711
deleted
Character will be deleted in %d seconds.
*/
MSG_DELETE_AFTER_10_SECOND = 0x214,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 ê°œì¸ ì •ì•¡ì œ 사용ìžìž…니다.
You paid with the personal regular base.
*/
MSG_BILLING_100 = 0x215,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 ê°œì¸ì •ëŸ‰ì œ 사용ìžìž…니다.
You paid with the personal regular base. Available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_200 = 0x216,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 ê°œì¸ ë¬´ë£Œ 사용ìžìž…니다.
You are free!
*/
MSG_BILLING_300 = 0x217,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 ê°œì¸ ë¬´ë£Œ 허용기간 사용ìžìž…니다.
You are free for the test, your available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_400 = 0x218,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 게임방 ì •ì•¡ì œ 사용ìžìž…니다.
You paid with the Internet Cafe regular base. Available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_500 = 0x219,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 게임방 정량제 사용ìžìž…니다.
You paid with the Time Limit for Internet Cafe. Available time is xx hrs xx mins xx secs.
*/
MSG_BILLING_501 = 0x21a,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 게임방 무료 허용기간 사용ìžìž…니다.
You are free for the test of Internet Cafe version .
*/
MSG_BILLING_600 = 0x21b,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 게임방 무료 사용ìžìž…니다.
You are free for the Internet Cafe version.
*/
MSG_BILLING_700 = 0x21c,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 종량제 사ì´íŠ¸ ì´ìš©ìžìž…니다.
You paid on the Time Limit Website.
*/
MSG_BILLING_800 = 0x21d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ëª¨ì…˜ 목ë¡
Emotion icon List
*/
MSG_EMOTION_LIST = 0x21e,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ì´ëª¨ì…˜
/emo
*/
MSG_VIEW_EMOTION = 0x21f,
-/*20171018 to 20180627
+/*20171018 to 20180711
/!
*/
MSG_EMOTION_SURPRISE = 0x220,
-/*20171018 to 20180627
+/*20171018 to 20180711
/?
*/
MSG_EMOTION_QUESTION = 0x221,
-/*20171018 to 20180627
+/*20171018 to 20180711
/기ì¨
/ho
*/
MSG_EMOTION_DELIGHT = 0x222,
-/*20171018 to 20180627
+/*20171018 to 20180711
/하트
/lv
*/
MSG_EMOTION_THROB = 0x223,
-/*20171018 to 20180627
+/*20171018 to 20180711
/왕하트
/lv2
*/
MSG_EMOTION_BIGTHROB = 0x224,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ë•€
/swt
*/
MSG_EMOTION_SWEAT = 0x225,
-/*20171018 to 20180627
+/*20171018 to 20180711
/아하
/ic
*/
MSG_EMOTION_AHA = 0x226,
-/*20171018 to 20180627
+/*20171018 to 20180711
/짜ì¦
/an
*/
MSG_EMOTION_FRET = 0x227,
-/*20171018 to 20180627
+/*20171018 to 20180711
/í™”
/ag
*/
MSG_EMOTION_ANGER = 0x228,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ëˆ
/$
*/
MSG_EMOTION_MONEY = 0x229,
-/*20171018 to 20180627
+/*20171018 to 20180711
/...
*/
MSG_EMOTION_THINK = 0x22a,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ê°ì‚¬
/thx
*/
MSG_EMOTION_THANKS = 0x22b,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ê½¥
/wah
*/
MSG_EMOTION_KEK = 0x22c,
-/*20171018 to 20180627
+/*20171018 to 20180711
/죄송
/sry
*/
MSG_EMOTION_SORRY = 0x22d,
-/*20171018 to 20180627
+/*20171018 to 20180711
/웃ìŒ
/heh
*/
MSG_EMOTION_SMILE = 0x22e,
-/*20171018 to 20180627
+/*20171018 to 20180711
/뻘뻘
/swt2
*/
MSG_EMOTION_PROFUSELY_SWEAT = 0x22f,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ê¸ì 
/hmm
*/
MSG_EMOTION_SCRATCH = 0x230,
-/*20171018 to 20180627
+/*20171018 to 20180711
/최고
/no1
*/
MSG_EMOTION_BEST = 0x231,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ë‘리번
/??
*/
MSG_EMOTION_STARE_ABOUT = 0x232,
-/*20171018 to 20180627
+/*20171018 to 20180711
/í—‰
/omg
*/
MSG_EMOTION_HUK = 0x233,
-/*20171018 to 20180627
+/*20171018 to 20180711
/오
/oh
*/
MSG_EMOTION_O = 0x234,
-/*20171018 to 20180627
+/*20171018 to 20180711
/엑스
/X
*/
MSG_EMOTION_X = 0x235,
-/*20171018 to 20180627
+/*20171018 to 20180711
/헬프
/hlp
*/
MSG_EMOTION_HELP = 0x236,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ê°€
/go
*/
MSG_EMOTION_GO = 0x237,
-/*20171018 to 20180627
+/*20171018 to 20180711
/엉엉
/sob
*/
MSG_EMOTION_CRY = 0x238,
-/*20171018 to 20180627
+/*20171018 to 20180711
/킥킥
/gg
*/
MSG_EMOTION_KIK = 0x239,
-/*20171018 to 20180627
+/*20171018 to 20180711
/쪽
/kis
*/
MSG_EMOTION_CHUP = 0x23a,
-/*20171018 to 20180627
+/*20171018 to 20180711
/쪽쪽
/kis2
*/
MSG_EMOTION_CHUPCHUP = 0x23b,
-/*20171018 to 20180627
+/*20171018 to 20180711
/í¥
/pif
*/
MSG_EMOTION_HNG = 0x23c,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ì‘
/ok
*/
MSG_EMOTION_OK = 0x23d,
-/*20171018 to 20180627
+/*20171018 to 20180711
단축키 목ë¡
Shortcut List
*/
MSG_SHORTCUT_LIST = 0x23e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·€í•˜ì˜ ê³„ì •ì€ ë³´ë¥˜ë˜ì—ˆìŠµë‹ˆë‹¤.
Your account is suspended.
*/
MSG_BAN_PAY_SUSPEND = 0x23f,
-/*20171018 to 20180627
+/*20171018 to 20180711
과금 ì •ì±… 변경으로 ì¸í•´ ì¼ì‹œ 종료ë©ë‹ˆë‹¤. 다시 ì ‘ì†í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.
Your connection is terminated due to change in the billing policy. Please connect again.
*/
MSG_BAN_PAY_CHANGE = 0x240,
-/*20171018 to 20180627
+/*20171018 to 20180711
어카운트 ì„œë²„ì— ì¸ì¦ëœ IP와 ê·€í•˜ì˜ IPê°€ ë‹¬ë¼ ì—°ê²°ì„ ì¢…ë£Œí•©ë‹ˆë‹¤.
Your connection is terminated because your IP doesn't match the authorized IP from the account server.
*/
MSG_BAN_PAY_WRONGIP = 0x241,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임방 IPì—ì„œ ê°œì¸ ì¢…ëŸ‰ì œ ê³¼ê¸ˆì„ ë§‰ê¸° 위해 ì—°ê²°ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. ê°œì¸ ì¢…ëŸ‰ì œ ê³¼ê¸ˆì„ ì‚¬ìš©í•˜ê¸° 위해서는 게임방IPë¡œ 등ë¡ì´ ë˜ì§€ ì•Šì€ IP를 사용해 주세요.
Your connection is terminated to prevent charging from your account's play time.
*/
MSG_BAN_PAY_PNGAMEROOM = 0x242,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 ìš´ì˜ìžì— ì˜í•´ ê°•ì œ 종료 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been forced to disconnect by the Game Master Team.
*/
MSG_BAN_OP_FORCE = 0x243,
-/*20171018 to 20180627
+/*20171018 to 20180711
무게가 90%를 초과하여 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use this Skill because you are over your Weight Limit.
*/
MSG_USESKILL_FAIL_WEIGHTOVER = 0x244,
-/*20171018 to 20180627
+/*20171018 to 20180711
무명
Nameless
*/
MSG_NAMELESS_USER = 0x245,
-/*20171018 to 20180627
+/*20171018 to 20180711
축하합니다. %së‹˜ì˜ í˜„ìž¬ ëž­í‚¹ì´ %d위로 ìƒìŠ¹í•˜ì˜€ìŠµë‹ˆë‹¤.
Congratulations! %s ranking has gone up to %d.
*/
MSG_RANK_IN_TEN = 0x246,
-/*20171018 to 20180627
+/*20171018 to 20180711
안타ê¹ê²Œë„ %së‹˜ì˜ í˜„ìž¬ ëž­í‚¹ì´ %d위로 하ë½í•˜ì˜€ìŠµë‹ˆë‹¤.
What a pity! %s ranking has gone down to %d.
*/
MSG_RANK_OUT_TEN = 0x247,
-/*20171018 to 20180627
+/*20171018 to 20180711
Pet Info
*/
MSG_PET_INFO = 0x248,
-/*20171018 to 20180627
+/*20171018 to 20180711
만복ë„
Hunger
*/
MSG_PET_HUNGRY = 0x249,
-/*20171018 to 20180627
+/*20171018 to 20180711
친밀ë„
Intimacy
*/
MSG_PET_FRIENDLY = 0x24a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì ê³¼ ì±„íŒ…ë°©ì„ ë™ì‹œì— 열수 없습니다.
Please avoid opening a chatroom while vending.
*/
MSG_CANT_OPEN_STORE_WHILE_CHAT = 0x24b,
-/*20171018 to 20180627
+/*20171018 to 20180711
개
Total
*/
MSG_EA4 = 0x24c,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 를 전투불능으로 만들었습니다.
You have knocked down %s.
*/
MSG_SLAIN = 0x24d,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ë‹˜ì— ì˜í•´ 전투불능 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been knocked down by %s.
*/
MSG_SLAINBY = 0x24e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¨¹ì´ - '%s' ì•„ì´í…œì´ 존재하지 않습니다..
Feed - "%s" is not available.
*/
MSG_NOT_EXIST_PET_FOOD = 0x24f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¨¹ì´ ì£¼ê¸°
Feed Pet
*/
MSG_PET_FEEDING = 0x250,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¼í¬ë¨¼ìŠ¤
Performance
*/
MSG_PET_PERFORMANCE = 0x251,
-/*20171018 to 20180627
+/*20171018 to 20180711
알로 ë˜ëŒë¦¬ê¸°
Return to Egg Shell
*/
MSG_PET_RETURN_EGG = 0x252,
-/*20171018 to 20180627
+/*20171018 to 20180711
악세사리 해제
Unequip Accessory
*/
MSG_PET_ACC_OFF = 0x253,
-/*20171018 to 20180627
+/*20171018 to 20180711
Pet ìƒíƒœ 보기
Check Pet Status
*/
MSG_PET_SHOWINFO = 0x254,
-/*20171018 to 20180627
+/*20171018 to 20180711
악세사리
Accessory
*/
MSG_PET_ACCESSARY = 0x255,
-/*20171018 to 20180627
+/*20171018 to 20180711
장착ë¨
Equipped
*/
MSG_ITEM_EQUIPED = 0x256,
-/*20171018 to 20180627
+/*20171018 to 20180711
펫 리스트
Pet List
*/
MSG_PET_EGG_LIST = 0x257,
-/*20171018 to 20180627
+/*20171018 to 20180711
장착 안ë¨
Unequipped
*/
MSG_ITEM_UNEQUIPED = 0x258,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ë§ë¡œ 먹ì´ë¥¼ 주시겠습니까?
Are you sure that you want to feed your pet?
*/
MSG_SURE_TO_FEED_PET = 0x259,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°€ê²©ì„ ì“°ì‹¤ë• ìˆ«ìž(0~9)만 ì¨ì£¼ì‹­ì‹œì˜¤.
Only the numbers (0~9) are available.
*/
MSG_CAN_INPUT_NUMBER_ONLY = 0x25a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°ì •ë˜ì§€ ì•Šì€ ì•„ì´í…œì€ íŒë§¤í•  수 없습니다.
You cannot sell unidentified items.
*/
MSG_CANT_SELL_UNIDENTIFIED_ITEM = 0x25b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°€ê²©ì´ 0 Zenyì¸ ì•„ì´í…œì´ 존재합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Item at 0 Zeny exists. Do you wish to continue?
*/
MSG_YOU_HAVE_FREE_ITEM_ON_SHOP = 0x25c,
-/*20171018 to 20180627
+/*20171018 to 20180711
[새로 ì¶”ê°€ëœ ì´ëª¨ì…˜ 리스트]
[New Emotion List]
*/
MSG_NEW_EMOTION_LIST = 0x25d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë³¸ìª½ 베타 사용ìžë“¤ì—게 전하는 메세지. -> 겅호ì—ì„œ 재가입 하세요.
N/A
*/
MSG_BAN_JAPAN_REFUSE1 = 0x25e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë³¸ìª½ ê³¼ê¸ˆì´ ì¢…ë£Œëœ ì‚¬ìš©ìžë“¤ì—게 전하는 메세지. -> ëˆë‚´ë¼. ë‘ ë²ˆë‚´ë¼.
N/A
*/
MSG_BAN_JAPAN_REFUSE2 = 0x25f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ ê³„ì •ì˜ ìºë¦­í„°ê°€ ì´ë¯¸ 가입ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
Character in the same account already joined.
*/
MSG_ALREADY_SAME_AID_JOINED = 0x260,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%d 명) - 만18세ì´ìƒ
(%d ppl) - over the age 18
*/
MSG_SERVER_PROPERTY_ADULT = 0x261,
-/*20171018 to 20180627
+/*20171018 to 20180711
í”„ë¡œë³´í¬ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Provoke initiated.
*/
MSG_ENST_PROVOKE = 0x262,
-/*20171018 to 20180627
+/*20171018 to 20180711
í”„ë¡œë³´í¬ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Provoke canceled.
*/
MSG_DSST_PROVOKE = 0x263,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ë“€ì–´ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Endure initiated.
*/
MSG_ENST_ENDURE = 0x264,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ë“€ì–´ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Endure canceled.
*/
MSG_DSST_ENDURE = 0x265,
-/*20171018 to 20180627
+/*20171018 to 20180711
집중력 í–¥ìƒ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Improve Concentration initiated.
*/
MSG_ENST_CONCENTRATION = 0x266,
-/*20171018 to 20180627
+/*20171018 to 20180711
집중력 í–¥ìƒ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Improve Concentration canceled.
*/
MSG_DSST_CONCENTRATION = 0x267,
-/*20171018 to 20180627
+/*20171018 to 20180711
하ì´ë”© ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Hiding Initiated.
*/
MSG_ENST_HIDING = 0x268,
-/*20171018 to 20180627
+/*20171018 to 20180711
하ì´ë”© ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Hiding Canceled.
*/
MSG_DSST_HIDING = 0x269,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ë¡œí‚¹ ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Cloaking initiated.
*/
MSG_ENST_CLOAKING = 0x26a,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ë¡œí‚¹ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Cloaking canceled.
*/
MSG_DSST_CLOAKING = 0x26b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…ì„ ë°˜ì‚¬ í•  수 있는 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Poison React initiated.
*/
MSG_ENST_POISONREACT = 0x26c,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¬ì´ì¦Œ 리액트 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Poison React canceled.
*/
MSG_DSST_POISONREACT = 0x26d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë™ì†ë„ê°€ ê°ì†Œí•˜ì˜€ìŠµë‹ˆë‹¤.
Speed reduced.
*/
MSG_ENST_QUAGMIRE = 0x26e,
-/*20171018 to 20180627
+/*20171018 to 20180711
콰그마ì´ì–´ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Quagmire canceled.
*/
MSG_DSST_QUAGMIRE = 0x26f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°©ì–´ë ¥ì´ ì¦ê°€ë˜ì—ˆìŠµë‹ˆë‹¤.
Defense increased.
*/
MSG_ENST_ANGELUS = 0x270,
-/*20171018 to 20180627
+/*20171018 to 20180711
안젤루스 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Angelus canceled.
*/
MSG_DSST_ANGELUS = 0x271,
-/*20171018 to 20180627
+/*20171018 to 20180711
힘과 지능, ë±ìŠ¤ê°€ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
Blessing aligned.
*/
MSG_ENST_BLESSING = 0x272,
-/*20171018 to 20180627
+/*20171018 to 20180711
블레싱 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Blessing canceled.
*/
MSG_DSST_BLESSING = 0x273,
-/*20171018 to 20180627
+/*20171018 to 20180711
시그넘 í¬ë£¨ì‹œìŠ¤ë¥¼ 사용하였습니다.
Signum Crusis initiated.
*/
MSG_ENST_CRUCIS = 0x274,
-/*20171018 to 20180627
+/*20171018 to 20180711
시그넘 í¬ë£¨ì‹œìŠ¤ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Signum Crusis canceled.
*/
MSG_DSST_CRUCIS = 0x275,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…ì´ í¼ì§€ëŠ” ì†ë„ê°€ ëŠë ¤ì¡ŒìŠµë‹ˆë‹¤.
Slow Poison initiated.
*/
MSG_ENST_SLOWPOISON = 0x276,
-/*20171018 to 20180627
+/*20171018 to 20180711
슬로우 í¬ì´ì¦Œ ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Slow Poison Canceled.
*/
MSG_DSST_SLOWPOISON = 0x277,
-/*20171018 to 20180627
+/*20171018 to 20180711
SPì˜ íšŒë³µ ì†ë„ê°€ í–¥ìƒ ë˜ì—ˆìŠµë‹ˆë‹¤.
HP/SP recovery increased.
*/
MSG_ENST_MAGNIFICAT = 0x278,
-/*20171018 to 20180627
+/*20171018 to 20180711
마니피캇 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Magnificat canceled.
*/
MSG_DSST_MAGNIFICAT = 0x279,
-/*20171018 to 20180627
+/*20171018 to 20180711
í–‰ìš´ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Luck increased.
*/
MSG_ENST_GLORIA = 0x27a,
-/*20171018 to 20180627
+/*20171018 to 20180711
글로리아 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Gloria canceled.
*/
MSG_DSST_GLORIA = 0x27b,
-/*20171018 to 20180627
+/*20171018 to 20180711
1회 ê³µê²©ì— ë‘ ë°° ë°ë¯¸ì§€ë¥¼ 받는 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
You will received double damage from all attacking opponents.
*/
MSG_ENST_LEXAETERNA = 0x27c,
-/*20171018 to 20180627
+/*20171018 to 20180711
렉스ì—테르나 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Lex Eterna canceled.
*/
MSG_DSST_LEXAETERNA = 0x27d,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격ì†ë„ê°€ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
Attack Speed increased.
*/
MSG_ENST_ADRENALINE = 0x27e,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격ì†ë„ê°€ ê°ì†Œí•˜ì˜€ìŠµë‹ˆë‹¤.
Attack Speed reduced.
*/
MSG_DSST_ADRENALINE = 0x27f,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŽ˜ì½”ì— ì˜¬ë¼ íƒ”ìŠµë‹ˆë‹¤.
You've just been on a Peco Peco.
*/
MSG_ENST_RIDING = 0x280,
-/*20171018 to 20180627
+/*20171018 to 20180711
페코ì—ì„œ 내렸습니다.
You've just got off of a Peco Peco.
*/
MSG_DSST_RIDING = 0x281,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒ”ì½˜ì„ ìž¥ì°©í•˜ì˜€ìŠµë‹ˆë‹¤.
You've just carried a Falcon with.
*/
MSG_ENST_FALCON = 0x282,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒ”ì½˜ì„ í’€ì–´ì£¼ì—ˆìŠµë‹ˆë‹¤.
You've just released a Falcon.
*/
MSG_DSST_FALCON = 0x283,
-/*20171018 to 20180627
+/*20171018 to 20180711
죽ì€ì²™í•˜ê¸° ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Play Dead initiated.
*/
MSG_ENST_TRICKDEAD = 0x284,
-/*20171018 to 20180627
+/*20171018 to 20180711
죽ì€ì²™í•˜ê¸° ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Play Dead canceled.
*/
MSG_DSST_TRICKDEAD = 0x285,
-/*20171018 to 20180627
+/*20171018 to 20180711
íž˜ì´ ê°•í•´ì¡ŒìŠµë‹ˆë‹¤.
STR improved.
*/
MSG_ENST_SHOUT = 0x286,
-/*20171018 to 20180627
+/*20171018 to 20180711
íž˜ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
STR turned back to normal.
*/
MSG_DSST_SHOUT = 0x287,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—너지코트 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Energy Coat initiated.
*/
MSG_ENST_ENERGYCOAT = 0x288,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—너지코트 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Energy Coat canceled.
*/
MSG_DSST_ENERGYCOAT = 0x289,
-/*20171018 to 20180627
+/*20171018 to 20180711
방어구가 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
Armor destroyed.
*/
MSG_ENST_BROKENAMOR = 0x28a,
-/*20171018 to 20180627
+/*20171018 to 20180711
...
Weapon has just been released from destroyed status.
*/
MSG_DSST_BROKENAMOR = 0x28b,
-/*20171018 to 20180627
+/*20171018 to 20180711
무기가 파괴ë˜ì—ˆë‹ˆë‹¤.
Weapon destroyed.
*/
MSG_ENST_BROKENWEAPON = 0x28c,
-/*20171018 to 20180627
+/*20171018 to 20180711
...
Weapon has just been released from destroyed status.
*/
MSG_DSST_BROKENWEAPON = 0x28d,
-/*20171018 to 20180627
+/*20171018 to 20180711
환ì˜ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Invisibility initiated.
*/
MSG_ENST_ILLUSION = 0x28e,
-/*20171018 to 20180627
+/*20171018 to 20180711
환ì˜ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Invisibility canceled.
*/
MSG_DSST_ILLUSION = 0x28f,
-/*20171018 to 20180627
+/*20171018 to 20180711
과금 ì •ë³´ 처리가 늦어지고 있어 ì ‘ì†ì´ 지연ë˜ê³  있습니다. ìž ì‹œ í›„ì— ë‹¤ì‹œ ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Sorry. It is delayed due to the process of payment. Please re-connect in a minute.
*/
MSG_REFUSE_BLOCK_TEMPORARY = 0x290,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž¥ì°©ëœ í™”ì‚´/탄환/수리검 ì„ í•´ì œí•´ì•¼í•©ë‹ˆë‹¤.
You must unequip ammunition first.
*/
MSG_UNEQUIP_ARROW = 0x291,
-/*20171018 to 20180627
+/*20171018 to 20180711
화살 목ë¡
Arrow List
*/
MSG_ARROW_LIST = 0x292,
-/*20171018 to 20180627
+/*20171018 to 20180711
카트 목ë¡
Cart List
*/
MSG_CART_LIST = 0x293,
-/*20171018 to 20180627
+/*20171018 to 20180711
카트를 장착한 ìƒíƒœì—¬ì•¼ 합니다.
You must have a Pushcart.
*/
MSG_MUST_EQUIP_CART = 0x294,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì±„íŒ…ë°©ì„ ê°œì„¤ í•  수 없습니다.
You cannot open a Chat Window.
*/
MSG_CANT_MAKE_CHAT_ROOM = 0x295,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬ 홈페ì´ì§€ë¡œ ì ‘ì†í•˜ì—¬ ê³„ì •ì„ ë§Œë“­ë‹ˆë‹¤. ì²˜ìŒ ê³„ì •ì„ ë§Œë“œì‹œë©´ 3ì¼ ë™ì•ˆì€ 무료로 ì´ìš©í•˜ì‹¤ 수 있습니다.
Registering an account is the first step to accessing the game. Do you want to visit the registration page now?
*/
MSG_3DAY_FREE = 0x296,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•‰ì€ ìƒíƒœì—서는 ì´ ì•„ì´í…œì„ 사용할 수 없습니다.
You cannot use this item while sitting.
*/
MSG_CANT_USE_WHEN_SITDOWN = 0x297,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅, 스킬, ì•„ì´í…œ 사용금지가 %d 분간 남아 있습니다.
Your use of skills and chat will be blocked for the next %d minutes.
*/
MSG_BAD_MANNER_REMAIN = 0x298,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅, 스킬, ì•„ì´í…œ 사용금지가 해지 ë˜ì—ˆìŠµë‹ˆë‹¤.
Your use of skills and chat have been reinstated.
*/
MSG_BAD_MANNER_END = 0x299,
-/*20171018 to 20180627
+/*20171018 to 20180711
-[장착안ë¨]
- [Not equipped]
*/
MSG_REF_UNEQUIP = 0x29a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°°ê³ í””
Very Hungry
*/
MSG_VERY_HUNGRY = 0x29b,
-/*20171018 to 20180627
+/*20171018 to 20180711
출출함
Hungry
*/
MSG_HUNGRY = 0x29c,
-/*20171018 to 20180627
+/*20171018 to 20180711
보통
Normal
*/
MSG_NORMAL = 0x29d,
-/*20171018 to 20180627
+/*20171018 to 20180711
배부름
Satisfied
*/
MSG_REPLETE = 0x29e,
-/*20171018 to 20180627
+/*20171018 to 20180711
아주 배부름
Stuffed
*/
MSG_VERY_REPLETE = 0x29f,
-/*20171018 to 20180627
+/*20171018 to 20180711
서먹서먹함
Awkward
*/
MSG_VERY_AWKWARD = 0x2a0,
-/*20171018 to 20180627
+/*20171018 to 20180711
어색함
Shy
*/
MSG_AWKWARD = 0x2a1,
-/*20171018 to 20180627
+/*20171018 to 20180711
친함
Cordial
*/
MSG_FRIENDLY = 0x2a2,
-/*20171018 to 20180627
+/*20171018 to 20180711
절친함
Loyal
*/
MSG_VERY_FRIENDLY = 0x2a3,
-/*20171018 to 20180627
+/*20171018 to 20180711
알수 ì—†ìŒ
Unknown
*/
MSG_UNKNOWN = 0x2a4,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 앞으로 %ì¼ %d시간 %d분 ì‚¬ìš©ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
Your account has play time of %d day %d hour %d minute.
*/
MSG_BILLING_DAY_HOUR_MINUTES = 0x2a5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ê³„ì •ì€ ì´ë¯¸ 다른 어카운트 서버로 ì ‘ì†í•œ ìƒíƒœìž…니다.
Your account is already connected to account server.
*/
MSG_BAN_INFORMATION_REMAINED_ANOTHER_ACCOUNT = 0x2a6,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 앞으로 %d시간 %d분 ì‚¬ìš©ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
Your account has play time of %d hour %d minute.
*/
MSG_BILLING_HOUR_MINUTES = 0x2a7,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 무료 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤.
Your account is a free account.
*/
MSG_BILLING_FREE_USER = 0x2a8,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ê³„ì •ìœ¼ë¡œ 사í¬ë¼ì´ì— ì ‘ì†í• ìˆ˜ 없습니다.
This account can't connect the Sakray server.
*/
MSG_REFUSE_NONSAKRAY_ID_BLOCKED = 0x2a9,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŽ«ì˜ ì´ë¦„ì€ ì˜ë¬¸ 23, 한글 11ìž ì´ë‚´ë¡œ ì •í•´ 주세요.
Your pet name must be 23 characters or less.
*/
MSG_PETNAME_IN23 = 0x2aa,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„ì€ ë‹¨ 한번만 바꿀수 있습니다. 펫 ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You may change your pet's name only once. Your pet's name will be changed to ^0000ff^0000ff %s^000000^000000. Do you wish to continue?
*/
MSG_PETNAME_CHANGE_ONLYONCE = 0x2ab,
-/*20171018 to 20180627
+/*20171018 to 20180711
/í°íŠ¸
/font
*/
MSG_NAMEBALLOON_TYPE = 0x2ac,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸¸ë“œì— ë‚¨ì€ ì œë‹ˆê°€ 부족하여 ìž‘ì—…ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Your guild lacks the funds to pay for this venture.
*/
MSG_GUILDZENY_NOT_ENOUGH = 0x2ad,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드가 소유할 수 있는 최대 ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì—¬ ìž‘ì—…ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Your guild zeny limit prevents you from performing this action.
*/
MSG_GUILDZENY_OVER = 0x2ae,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´íŽ™íŠ¸ 간략화 On
Simplified effects have been activated.
*/
MSG_MINEFFECT_ON = 0x2af,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´íŽ™íŠ¸ 간략화 Off
Simplified effects have been deactivated.
*/
MSG_MINEFFECT_OFF = 0x2b0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìžë³¸ê¸ˆ
Required Fee
*/
MSG_CAPITAL = 0x2b1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ ë°”ë‹¥ì— ë²„ë¦¬ë ¤ë©´, ì•„ì´í…œ ì°½ì„ ì—´ì–´ 주십시오.
If you wish to drop an item, you must first open your Item Window (alt+e).
*/
MSG_OPEN_ITEMWND_TO_THROW = 0x2b2,
-/*20171018 to 20180627
+/*20171018 to 20180711
PCë°© ìš”ê¸ˆì´ ì¢…ë£Œí•˜ì—¬ ê°œì¸ ìš”ê¸ˆì œë¡œ 전환합니다. ê°œì¸ ìš”ê¸ˆìœ¼ë¡œ ê²Œìž„ì„ ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Internet Cafe Time Plan has been ended. Would you like to continue the game with your personal play time?
*/
MSG_ASK_PNGAMEROOM = 0x2b3,
-/*20171018 to 20180627
+/*20171018 to 20180711
Current admission application state.
*/
MSG_REPLY_REMAINTIME = 0x2b4,
-/*20171018 to 20180627
+/*20171018 to 20180711
Current admission application state.
*/
MSG_INFO_REMAINTIME = 0x2b5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëˆì´ 모ìžë¼ê±°ë‚˜, 가질 수 있는 최대 ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
Your lack of zeny or your zeny limit have prevented you from performing this action.
*/
MSG_OVER_OR_LOW_MONEY = 0x2b6,
-/*20171018 to 20180627
+/*20171018 to 20180711
전투불능 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤. esc키를 누르시면 ì„ íƒì°½ì´ 뜹니다.
Your character has fainted. Push the ESC key to restart.
*/
MSG_PRESS_ESC_TO_RESTART = 0x2b7,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d ê°œ íšë“
- %d obtained.
*/
MSG_EA_OBTAIN = 0x2b8,
-/*20171018 to 20180627
+/*20171018 to 20180711
스펠 리스트
Spell List
*/
MSG_SPELL_LIST = 0x2b9,
-/*20171018 to 20180627
+/*20171018 to 20180711
/최소화
/minimize
*/
MSG_MINEFFECT = 0x2ba,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ì•„ì´í…œì€ ì†ìƒë˜ì–´ 있습니다..
This item has been damaged.
*/
MSG_DAMAGED_ITEM = 0x2bb,
-/*20171018 to 20180627
+/*20171018 to 20180711
/noshift : 쉬프트를 누르지않고 ížë¡œ ì ì„ 공격할수있게ë©ë‹ˆë‹¤ On Off
/noshift: You may use your ''force heal'' ability without the Shift key. On | Off
*/
MSG_EXPLAIN_NOSHIFT = 0x2bc,
-/*20171018 to 20180627
+/*20171018 to 20180711
시프트를 누르지 ì•Šê³ ë„ ížë¡œ ì–¸ë°ë“œë¥¼ 공격할수 있습니다 [/ns ON]
[no shift] option activated. [ON]
*/
MSG_NOSHIFT_ON = 0x2bd,
-/*20171018 to 20180627
+/*20171018 to 20180711
시프트를 눌러야 ížë¡œ ì–¸ë°ë“œë¥¼ 공격할수 있습니다 [/ns OFF]
[no shift] option deactivated. [OFF]
*/
MSG_NOSHIFT_OFF = 0x2be,
-/*20171018 to 20180627
+/*20171018 to 20180711
MSI_REFUSE_BAN_BY_DBA
*/
MSG_REFUSE_BAN_BY_DBA = 0x2bf,
-/*20171018 to 20180627
+/*20171018 to 20180711
MSI_REFUSE_EMAIL_NOT_CONFIRMED
*/
MSG_REFUSE_EMAIL_NOT_CONFIRMED = 0x2c0,
-/*20171018 to 20180627
+/*20171018 to 20180711
MSI_REFUSE_BAN_BY_GM
*/
MSG_REFUSE_BAN_BY_GM = 0x2c1,
-/*20171018 to 20180627
+/*20171018 to 20180711
MSI_REFUSE_TEMP_BAN_FOR_DBWORK
*/
MSG_REFUSE_TEMP_BAN_FOR_DBWORK = 0x2c2,
-/*20171018 to 20180627
+/*20171018 to 20180711
MSI_REFUSE_SELF_LOCK
*/
MSG_REFUSE_SELF_LOCK = 0x2c3,
-/*20171018 to 20180627
+/*20171018 to 20180711
MSI_REFUSE_NOT_PERMITTED_GROUP
*/
MSG_REFUSE_NOT_PERMITTED_GROUP = 0x2c4,
-/*20171018 to 20180627
+/*20171018 to 20180711
MSI_REFUSE_WAIT_FOR_SAKRAY_ACTIVE
*/
MSG_REFUSE_WAIT_FOR_SAKRAY_ACTIVE = 0x2c5,
-/*20171018 to 20180627
+/*20171018 to 20180711
/aura : 오오ë¼ë¥¼ 간략화 시킬수있습니다 On Off
/aura: Simplify Aura effect On | Off
*/
MSG_EXPLAIN_AURA = 0x2c6,
-/*20171018 to 20180627
+/*20171018 to 20180711
오오ë¼ê°€ ì •ìƒì ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤ [ì˜¤ì˜¤ë¼ ON]
Turn On Aura [Aura ON]
*/
MSG_AURA_ON = 0x2c7,
-/*20171018 to 20180627
+/*20171018 to 20180711
오오ë¼ê°€ 간략화ë˜ì„œ 표시ë©ë‹ˆë‹¤ [ì˜¤ì˜¤ë¼ OFF]
Simplify Aura enabled. [ON]
*/
MSG_AURA_OFF = 0x2c8,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅금지 ê¸°ë¡ %d 회
Chat block record %d times
*/
MSG_PROHIBIT_LOG = 0x2c9,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅 금지 리스트
Chat block list
*/
MSG_PROHIBIT_LIST = 0x2ca,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ì´ë¦„표시 or /showname : ìºë¦­í„°ì˜ ì´ë¦„ 표시 ë°©ì‹ì„ 변경합니다.
/showname: Change the name font type.
*/
MSG_EXPLAIN_SHOWNAMETYPE = 0x2cb,
-/*20171018 to 20180627
+/*20171018 to 20180711
/noctrl : ì½˜íŠ¸ë¡¤ì„ ëˆ„ë¥´ì§€ì•Šì•„ë„ ìžë™ê³µê²©ì´ ë©ë‹ˆë‹¤. On Off
/noctrl | /nc: Auto attack without pressing ctrl key. On | Off
*/
MSG_EXPLAIN_NOCTRL = 0x2cc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì½˜íŠ¸ë¡¤ì„ ëˆ„ë¥´ì§€ ì•Šì•„ë„ ìžë™ê³µê²©ì„ 합니다 [/nc ON]
Use auto attack without Ctrl. [Auto attack ON]
*/
MSG_NOCTRL_ON = 0x2cd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì½˜íŠ¸ë¡¤ì„ ëˆŒëŸ¬ì•¼ ìžë™ê³µê²©ì„ 합니다 [/nc OFF]
Use auto attack with Ctrl. [Auto attack OFF]
*/
MSG_NOCTRL_OFF = 0x2ce,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅 금지 주기
Mute this player.
*/
MSG_APPEND_PROHIBIT = 0x2cf,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅 금지 완전 풀기 & 로그 삭제
Unmute player & Erase mute time.
*/
MSG_ERASE_PROHIBIT = 0x2d0,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅 금지 시간 줄ì´ê¸°(로그 ì‚­ì œ 안ë¨)
Decrease Player Mute time.
*/
MSG_REDUCE_PROHIBIT = 0x2d1,
-/*20171018 to 20180627
+/*20171018 to 20180711
í°íŠ¸ê°€ ì •ìƒì ìœ¼ë¡œ 바뀌었습니다 [ì´ë¦„í‘œì‹œë°©ì‹ 1]
Normal Font Displayed. [showname type 1]
*/
MSG_SHOWNAME_ON = 0x2d2,
-/*20171018 to 20180627
+/*20171018 to 20180711
í°íŠ¸ê°€ 가늘게 바뀌면서 íŒŒí‹°ëª…ë„ í‘œì‹œë©ë‹ˆë‹¤ [ì´ë¦„í‘œì‹œë°©ì‹ 2]
Font will be thin and party name will be shown [showname type 2]
*/
MSG_SHOWNAME_OFF = 0x2d3,
-/*20171018 to 20180627
+/*20171018 to 20180711
/doridori : ì—°ì†í•´ì„œ ì´ ëª…ë ¹ì–´ë¥¼ ì³ì£¼ë©´ ìºë¦­í„°ê°€ ë„리ë„리 ^^;;
/doridori: Shake head
*/
MSG_EXPLAIN_DORIDORI = 0x2d4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸í„°ë„· 카페ì—ì„œ ê³¼ê¸ˆì„ í•˜ê³  있습니다.
Internet room is paying now.
*/
MSG_BILLING_INTERNET_CAFE = 0x2d5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ì•¡ì œ ê³¼ê¸ˆì€ %dì¼ %d시간 %dë¶„ì´ ë‚¨ì•˜ìŠµë‹ˆë‹¤.
종량제 ê³¼ê¸ˆì€ %d시간 %dë¶„ì´ ë‚¨ì•˜ìŠµë‹ˆë‹¤.
Prepaid voucher validate until %d days %d hours %d minutes later.
Time limit voucher validate untill %d hours %d minutes later.
*/
MSG_BILLING_BOTH = 0x2d6,
-/*20171018 to 20180627
+/*20171018 to 20180711
/bingbing : ì—°ì†í•´ì„œ ì´ ëª…ë ¹ì–´ë¥¼ ì³ì£¼ë©´ ìºë¦­í„°ê°€ 빙글빙글 ^^;;
/bingbing: Rotates player counter clockwise.
*/
MSG_EXPLAIN_BINGBING = 0x2d7,
-/*20171018 to 20180627
+/*20171018 to 20180711
/bangbang : ì—°ì†í•´ì„œ ì´ ëª…ë ¹ì–´ë¥¼ ì³ì£¼ë©´ ìºë¦­í„°ê°€ 뱅글뱅글 ^^;;
/bangbang: Rotates player clockwise.
*/
MSG_EXPLAIN_BANGBANG = 0x2d8,
-/*20171018 to 20180627
+/*20171018 to 20180711
/skillfail : ë¹¨ê°„ìƒ‰ì˜ ìŠ¤í‚¬ì‚¬ìš© 실패 메세지를 표시하지 않습니다 On Off
/skillfail: Display red font message when skill fails. On | Off
*/
MSG_EXPLAIN_SKILLFAIL = 0x2d9,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬사용 실패 메세지를 표시합니다 [/sf ON]
Skill fail messages will be displayed. [Display On]
*/
MSG_SKILLFAIL_ON = 0x2da,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬사용 실패 메세지를 표시하지 않습니다 [/sf OFF]
Skill fail messages will not be displayed. [Display OFF]
*/
MSG_SKILLFAIL_OFF = 0x2db,
-/*20171018 to 20180627
+/*20171018 to 20180711
/notalkmsg : ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ 않습니다 On Off
/notalkmsg: Chat will not be displayed in chat window. On | Off
*/
MSG_EXPLAIN_NOTALKMSG = 0x2dc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤ [/nm ON]
Chat content will be displayed in the chat window. [Display ON]
*/
MSG_NOTALKMSG_ON = 0x2dd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤ [/nm OFF]
Chat content will not be displayed in the chat window. [Display OFF]
*/
MSG_NOTALKMSG_OFF = 0x2de,
-/*20171018 to 20180627
+/*20171018 to 20180711
/set1 : /nc + /showname + /sf + /wi, /set2 : + /q3
/set1: /noctrl + /showname + /skillfail
*/
MSG_EXPLAIN_SET1 = 0x2df,
-/*20171018 to 20180627
+/*20171018 to 20180711
/fog : FOGì´íŽ™íŠ¸ë¥¼ 키거나 ëŒìˆ˜ìžˆìŠµë‹ˆë‹¤ On Off
/fog: Fog effect. On | Off
*/
MSG_EXPLAIN_FOG = 0x2e0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì²­í˜¼ì„ í•´ì™”ìŠµë‹ˆë‹¤. 승낙하시겠습니까?
You have received a marriage proposal. Do you accept?
*/
MSG_SUGGEST_COUPLE = 0x2e1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 분배 ë°©ì‹
Item sharing type
*/
MSG_HOWITEMDIV = 0x2e2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°ìž ì·¨ë“
Individual
*/
MSG_ITEMDIV1 = 0x2e3,
-/*20171018 to 20180627
+/*20171018 to 20180711
균등하게 분배
Shared
*/
MSG_ITEMDIV2 = 0x2e4,
-/*20171018 to 20180627
+/*20171018 to 20180711
nProtect KeyCrypt
*/
MSG_KEYCRYPT = 0x2e5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Keyboard Driverê°€ 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
키보드 보안 ìž…ë ¥ì„ ìœ„í•´ ì¶”ê°€ê¸°ëŠ¥ì„ ì„¤ì¹˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
@@ -3738,7 +3738,7 @@ Do you want to install a program for keyboard security?
(After installation, System Reboot is required)
*/
MSG_KEYCRYPT_INSTALL_KEYDRIVER = 0x2e6,
-/*20171018 to 20180627
+/*20171018 to 20180711
설치가 완료 ë˜ì—ˆìŠµë‹ˆë‹¤.
ì‹œìŠ¤í…œì„ Reboot 합니다.
@@ -3747,17 +3747,17 @@ Installation has been completed.
System will be rebooted.
*/
MSG_KEYCRYPT_REBOOT = 0x2e7,
-/*20171018 to 20180627
+/*20171018 to 20180711
설치 실패.
Installation has been failed.
*/
MSG_KEYCRYPT_INSTALLFAIL = 0x2e8,
-/*20171018 to 20180627
+/*20171018 to 20180711
키보드 ë³´ì•ˆì„ ì ìš©í•˜ì§€ ì•Šê³  계ì†í•©ë‹ˆë‹¤.
Keyboard Security will be skipped.
*/
MSG_KEYCRYPT_SKIPKEYCRYPT = 0x2e9,
-/*20171018 to 20180627
+/*20171018 to 20180711
키보드 ë³´ì•ˆì— í•„ìš”í•œ 파ì¼ì´ 존재하지 않습니다.
(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
@@ -3766,7 +3766,7 @@ Required file for Keyboard Security is not existing.
(npkeyc.vxd, npkeyc.sys, npkeycs.sys)
*/
MSG_KEYCRYPT_NOKEYCRYPTFILE = 0x2ea,
-/*20171018 to 20180627
+/*20171018 to 20180711
USB Keyboardê°€ 검출ë˜ì—ˆìŠµë‹ˆë‹¤.
키보드 보안 ìž…ë ¥ì„ ìœ„í•´ ì¶”ê°€ê¸°ëŠ¥ì„ ì„¤ì¹˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
@@ -3779,56 +3779,56 @@ Do you want to install a program for keyboard security?
(After installation, System Reboot is required)
*/
MSG_KEYCRYPT_USBKEYBOARD = 0x2eb,
-/*20171018 to 20180627
+/*20171018 to 20180711
ftp://ragnarok.nefficient.co.kr/pub/ragnarok/ragnarok0526.exe
*/
MSG_FINDHACK_PATH = 0x2ec,
-/*20171018 to 20180627
+/*20171018 to 20180711
FindHackì´ ì •ìƒì ìœ¼ë¡œ 설치가 ë˜ì–´ìžˆì§€ 않습니다. ragnarok0226.exe 를 다운로드 하여 ë¼ê·¸ë‚˜ë¡œí¬ê°€ ì„¤ì¹˜ëœ í´ë”ì— ì„¤ì¹˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.(%d).
FindHack is not installed correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.(%d).
*/
MSG_FINDHACK_NOTINSTALLED = 0x2ed,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•´í‚¹íˆ´ì´ ì¡´ìž¬í•˜ì§€ë§Œ 치료가 ì •ìƒì ìœ¼ë¡œ ë˜ì§€ 않았습니다. ë¼ê·¸ë‚˜ë¡œí¬ê°€ 실행ë˜ì§€ 않습니다.
Hacking tool is existing but it hasn't been cleaned. Rangarok Online will not be executed.
*/
MSG_FINDHACK_HACKTOOLEXIST = 0x2ee,
-/*20171018 to 20180627
+/*20171018 to 20180711
해킹툴 진단 í”„ë¡œê·¸ëž¨ì´ ì •ìƒì ìœ¼ë¡œ 다운로드 ë˜ì§€ 않았습니다. ragnarok0226.exe 를 다운로드 하여 ë¼ê·¸ë‚˜ë¡œí¬ê°€ ì„¤ì¹˜ëœ í´ë”ì— ì„¤ì¹˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Hacking tool scan program has not been downloaded correctly. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
*/
MSG_FINDHACK_CANTDOWNLOAD = 0x2ef,
-/*20171018 to 20180627
+/*20171018 to 20180711
NPX.DLL 등ë¡ì—러 ì´ê±°ë‚˜ FindHack 구ë™ì— 필요한 파ì¼ì´ 없습니다. ragnarok0226.exe 를 다운로드 하여 ë¼ê·¸ë‚˜ë¡œí¬ê°€ ì„¤ì¹˜ëœ í´ë”ì— ì„¤ì¹˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.
NPX.DLL register error or there is no necessary file to run FindHack. Please download ragnarok0226.exe and install it in RagnarokOnline directory.
*/
MSG_FINDHACK_NOFILE = 0x2f0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ˆì™¸ì‚¬í•­ì´ ë°œìƒí–ˆìŠµë‹ˆë‹¤. (02-3281-0361)ë¡œ 문ì˜í•´ì£¼ì„¸ìš”. 리턴값(%d)
Exceptional Error. Please contact the customer support. Return Value: (%d)
*/
MSG_FINDHACK_EXCEPTION = 0x2f1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¢…ë£Œë²„íŠ¼ì„ í´ë¦­ 하셨습니다.
Exit button has been clicked.
*/
MSG_FINDHACK_EXITPRESSED = 0x2f2,
-/*20171018 to 20180627
+/*20171018 to 20180711
Findhack ì—…ë°ì´íŠ¸ 서버접근 실패하였습니다. ìž ì‹œ í›„ì— ë‹¤ì‹œ ì‹œë„í•´ 주시거나 ê·¸ë¼ë¹„í‹° ìš´ì˜íŒ€ìœ¼ë¡œ ì—°ë½í•´ì£¼ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Unable to connect Findhack Update Server. Please try again or contact the customer support.
*/
MSG_FINDHACK_UPDATEFAILED = 0x2f3,
-/*20171018 to 20180627
+/*20171018 to 20180711
사랑받고있는
Beloved
*/
MSG_NAMED_PET = 0x2f4,
-/*20171018 to 20180627
+/*20171018 to 20180711
/report or /ì‹ ê³  : ì‹ ê³ ìš© 갈무리 파ì¼ì„ 저장합니다.
/report: Save a chat log file.
*/
MSG_REPORTCOMMAND_EXPLANATION = 0x2f5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ íŒŒì¼ì€ (주)ê·¸ë¼ë¹„í‹°ì˜ ìš´ì˜íŒ€ì—ì„œ ê²Œìž„ë‚´ì˜ ë¶€ì •í–‰ìœ„ë‚˜ 비매너 í–‰ìœ„ì— ëŒ€í•œ
ì¦ê±°ìžë£Œë¡œ 사용하게 ë©ë‹ˆë‹¤.
문서를 다른 문서 형ì‹ìœ¼ë¡œ 저장하거나 ë‚´ìš©ì„ ë³€ê²½í•˜ì—¬ ì›ë³¸ê³¼ ì¼ì¹˜í•˜ì§€ 않게
@@ -3836,9722 +3836,9722 @@ Beloved
Chat logs are not accepted as evidence for any ill-mannered violation on account of possible file modifications. However this feature is provided for players' personal reference.
*/
MSG_REPORTTEXT_HEADER = 0x2f6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹¹ì‹ ì„ ì‚¬ëž‘í•´ìš” ♡
I love you.
*/
MSG_LOVE_SKILL = 0x2f7,
-/*20171018 to 20180627
+/*20171018 to 20180711
화면 ë˜ëŠ” ì´íŽ™íŠ¸ê°€ ë°ì•„ì„œ ëˆˆì— ë¶€ë‹´ì´ ë˜ì‹œëŠ”ë¶„ë“¤ì€ ëª¨ë‹ˆí„°ì˜ ë°ê¸°ë¥¼ 조정해주시기바ëžë‹ˆë‹¤.
Please adjust your monitor/video brightness if effects appear too bright.
*/
MSG_EXPLAIN_BRIGHT = 0x2f8,
-/*20171018 to 20180627
+/*20171018 to 20180711
전체화면모드가 잘안ë˜ëŠ” ê²½ìš°ì— ê²Œìž„ì‹¤í–‰í›„ ALT+TAB으로 í™”ë©´ì„ ì „í™˜í•˜ë©´ 잘ë˜ëŠ” ê¸°ì¢…ë„ ìžˆìŠµë‹ˆë‹¤
If full screen mode fails to work, it is suggested you alt+tab [or ctrl+esc] to inactivate and reactivate the Ragnarok Client.
*/
MSG_EXPLAIN_ALTTAB = 0x2f9,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%d 명) - 유료서버
(%d players) - Pay to Play Server
*/
MSG_SERVER_PROPERTY_PAY = 0x2fa,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%d 명) - 무료서버
(%d players) - Free Server
*/
MSG_SERVER_PROPERTY_FREE = 0x2fb,
-/*20171018 to 20180627
+/*20171018 to 20180711
무료 회ì›ì€ 유료 서버로 ì ‘ì†í•  수 없습니다.
Trial players can't connect Pay to Play Server.
*/
MSG_CANT_CONNECT_TO_PAY_SERVER = 0x2fc,
-/*20171018 to 20180627
+/*20171018 to 20180711
마우스 ìš°í´ë¦­ìœ¼ë¡œ F9ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì“¸ìˆ˜ìžˆìŠµë‹ˆë‹¤ [/q1 ON]
Right click menu skills for F9 are Enabled.[/q1 ON]
*/
MSG_QUICKSPELL_ON = 0x2fd,
-/*20171018 to 20180627
+/*20171018 to 20180711
마우스 ìš°í´ë¦­ìœ¼ë¡œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ì§€ 못합니다 [/q1 OFF]
Right click menu skills for F9 are Disabled.[/q1 OFF]
*/
MSG_QUICKSPELL_OFF = 0x2fe,
-/*20171018 to 20180627
+/*20171018 to 20180711
/quickspell : 마우스 ìš°í´ë¦­ìœ¼ë¡œ F9ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ On Off
/quickspell: Right-click menu enables you to use skills assigned to the F9 hotkey. On | Off
*/
MSG_EXPLAIN_QUICKSPELL = 0x2ff,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë§ˆìš°ìŠ¤ì˜ WHEELì„ ì‚¬ìš©í•´ì„œ F7 ê³¼ F8ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ [/q2 ON]
Mouse wheel skills for F7 and F8 are Enabled.[/q2 ON]
*/
MSG_QUICKSPELL2_ON = 0x300,
-/*20171018 to 20180627
+/*20171018 to 20180711
마우스 WHEELë¡œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ì§€ 못합니다 [/q2 OFF]
Mouse wheel skills for F7 and F8 are Disabled.[/q2 OFF]
*/
MSG_QUICKSPELL2_OFF = 0x301,
-/*20171018 to 20180627
+/*20171018 to 20180711
/quickspell2 : 마우스 WHEELì„ ìœ„,아래로 굴려서 F7ê³¼F8ì— ì €ìž¥í•œ ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ On Off
/quickspell2: By rolling the mouse wheel up and down, you are able to use skills registered on F7 and F8 hotkeys. On | Off
*/
MSG_EXPLAIN_QUICKSPELL2 = 0x302,
-/*20171018 to 20180627
+/*20171018 to 20180711
/q3 : /quickspell (/q1) + /quickspell2 (/q2)
/q3: /quickspell (/q1) + /quickspell2 (/q2)
*/
MSG_EXPLAIN_QUICKSPELL3 = 0x303,
-/*20171018 to 20180627
+/*20171018 to 20180711
/찌릿
/bzz
*/
MSG_EMOTION_STARE = 0x304,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ë°¥
/rice
*/
MSG_EMOTION_HUNGRY = 0x305,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ë©‹ì ¸
/awsm
*/
MSG_EMOTION_COOL = 0x306,
-/*20171018 to 20180627
+/*20171018 to 20180711
/메롱
/meh
*/
MSG_EMOTION_MERONG = 0x307,
-/*20171018 to 20180627
+/*20171018 to 20180711
/부ë„
/shy
*/
MSG_EMOTION_SHY = 0x308,
-/*20171018 to 20180627
+/*20171018 to 20180711
/쓱쓱
/pat
*/
MSG_EMOTION_GOODBOY = 0x309,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ì— íƒ
/mp
*/
MSG_EMOTION_SPTIME = 0x30a,
-/*20171018 to 20180627
+/*20171018 to 20180711
/질질
/slur
*/
MSG_EMOTION_SEXY = 0x30b,
-/*20171018 to 20180627
+/*20171018 to 20180711
/컴온
/com
*/
MSG_EMOTION_COMEON = 0x30c,
-/*20171018 to 20180627
+/*20171018 to 20180711
/하품
/yawn
*/
MSG_EMOTION_SLEEPY = 0x30d,
-/*20171018 to 20180627
+/*20171018 to 20180711
/축하
/grat
*/
MSG_EMOTION_CONGRATULATION = 0x30e,
-/*20171018 to 20180627
+/*20171018 to 20180711
/피íƒ
/hp
*/
MSG_EMOTION_HPTIME = 0x30f,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ì´ëª¨ì…˜ : 현재 사용가능한 ì´ëª¨ì…˜ì˜ 리스트를 ë³´ì—¬ì¤ë‹ˆë‹¤.
/emotion: views the emoticon list.
*/
MSG_EXPLAIN_EMOTION = 0x310,
-/*20171018 to 20180627
+/*20171018 to 20180711
키보드를 ì´ìš©í•´ì„œ 스킬단축창 1,2,3ì˜ ìŠ¤í‚¬ë“¤ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. [/bm ON]
Skills assigned to shortcut windows 1, 2, 3 are Enabled. [/bm ON]
*/
MSG_BATTLE_ON = 0x311,
-/*20171018 to 20180627
+/*20171018 to 20180711
키보드를 ì´ìš©í•´ì„œ 스킬단축창 1,2,3ì˜ ìŠ¤í‚¬ë“¤ì„ ì‚¬ìš©í•˜ì§€ëª»í•©ë‹ˆë‹¤. [/bm OFF]
Skills assigned to shortcut windows 1, 2, 3 are Disabled. [/bm OFF]
*/
MSG_BATTLE_OFF = 0x312,
-/*20171018 to 20180627
+/*20171018 to 20180711
/battlemode : Q ~ O 를 누르면 스킬단축창2ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤.
/battlemode: allows you to use skills assigned to Shortcut Window 2 by pressing Q ~ O keys.
*/
MSG_EXPLAIN_BATTLE = 0x313,
-/*20171018 to 20180627
+/*20171018 to 20180711
A ~ L ì„ ëˆ„ë¥´ë©´ 스킬단축창3ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤.
A ~ L keys allow you to use skills assigned to Shortcut Window 3.
*/
MSG_EXPLAIN_BATTLE2 = 0x314,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬ë¥¼ 실행하실때 다른 í”„ë¡œê·¸ëž¨ì„ ë„우시면 ê²Œìž„ì´ ëŠë ¤ì§ˆìˆ˜ë„있습니다.
Please remember, programs running in the background while playing may affect the game's performance.
*/
MSG_EXPLAIN_LAG = 0x315,
-/*20171018 to 20180627
+/*20171018 to 20180711
천사님 제 목소리 들리세요? ^^;
Dear angel, can you hear my voice?
*/
MSG_SUPERNOVICE1 = 0x316,
-/*20171018 to 20180627
+/*20171018 to 20180711
슈í¼ë…¸ë¹„스
Super Novice
*/
MSG_SUPERNOVICE2 = 0x317,
-/*20171018 to 20180627
+/*20171018 to 20180711
예요~
Super Novice~
*/
MSG_SUPERNOVICE3 = 0x318,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì € 좀 ë„와주세요~ ã… _ã… 
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE4 = 0x319,
-/*20171018 to 20180627
+/*20171018 to 20180711
님께서 ë‹¹ì‹ ì„ ìž…ì–‘ì‹œí‚¤ê³  싶어하십니다. 승낙하시겠습니까?
wishes to adopt you. Do you accept?
*/
MSG_SUGGEST_BABY = 0x31a,
-/*20171018 to 20180627
+/*20171018 to 20180711
Z ~ > ì„ ëˆ„ë¥´ë©´ 스킬단축창1ì˜ ìŠ¤í‚¬ë“¤ì´ ì‚¬ìš©ë©ë‹ˆë‹¤. On Off
Z ~ > keys allow you to use skills assigned on shortcut window 1. On | Off
*/
MSG_EXPLAIN_BATTLE3 = 0x31b,
-/*20171018 to 20180627
+/*20171018 to 20180711
Space를 한번 ëˆ„ë¥¸ë’¤ì— ê¸€ìžë¥¼ 입력하면 ì±„íŒ…ì„ í• ìˆ˜ìžˆìŠµë‹ˆë‹¤.
Press the space bar to Chat when in Battle mode [/battlemode | /bm].
*/
MSG_EXPLAIN_BATTLE4 = 0x31c,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드 파ì¼ì´ 없거나 변조ë˜ì—ˆìŠµë‹ˆë‹¤. 게임가드 ì…‹ì—… 파ì¼ì„ 설치해보시기 ë°”ëžë‹ˆë‹¤.
"Either there's no Game Guard installed on the program or Game Guard is cracked. Please, try to reinstall Game Guard from its setup file."
*/
MSG_NPGAMEMON_ERROR_AUTH_GAMEGUARD = 0x31d,
-/*20171018 to 20180627
+/*20171018 to 20180711
윈ë„ìš°ì˜ ì¼ë¶€ 시스템 파ì¼ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤. ì¸í„°ë„· ìµìŠ¤í”Œë¡œëŸ¬(IE)를 다시 설치해보시기 ë°”ëžë‹ˆë‹¤.
Some of Windows system files have been damaged. Please re-install your Internet Explorer.
*/
MSG_NPGAMEMON_ERROR_CRYPTOAPI = 0x31e,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드 ì‹¤í–‰ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. 게임가드 ì…‹ì—… 파ì¼ì„ 다시 설치해보시기 ë°”ëžë‹ˆë‹¤.
"Failed to run Game Guard. Please, try to reinstall Game Guard from its setup file."
*/
MSG_NPGAMEMON_ERROR_EXECUTE = 0x31f,
-/*20171018 to 20180627
+/*20171018 to 20180711
불법 í”„ë¡œê·¸ëž¨ì´ ë°œê²¬ë˜ì—ˆìŠµë‹ˆë‹¤. 불필요한 í”„ë¡œê·¸ëž¨ì„ ì¢…ë£Œí•œ 후 다시 실행해보시기 ë°”ëžë‹ˆë‹¤.
"At least one hazardous program has been detected. Please, terminate all the unnecessary programs before executing Game Guard."
*/
MSG_NPGAMEMON_ERROR_ILLEGAL_PRG = 0x320,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드 ì—…ë°ì´íŠ¸ë¥¼ 취소하셨습니다. ì ‘ì†ì´ ê³„ì† ë˜ì§€ ì•Šì„ ê²½ìš° ì¸í„°ë„· ë° ë°©í™”ë²½ ìƒíƒœë¥¼ ì ê²€í•´ë³´ì‹œê¸° ë°”ëžë‹ˆë‹¤.
"Game Guard update is canceled. If the disconnection continues, please, check your internet or firewall settings."
*/
MSG_NPGMUP_ERROR_ABORT = 0x321,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드 ì—…ë°ì´íŠ¸ 서버 ì ‘ì†ì— 실패하였습니다. ìž ì‹œ 후 ìž¬ì‹œë„ í•´ë³´ê±°ë‚˜, ì¸í„°ë„· ë° ë°©í™”ë²½ ìƒíƒœë¥¼ ì ê²€í•´ 보시기 ë°”ëžë‹ˆë‹¤.
"Failed to connect to Game Guard update server. Try to connect again later, or try to check the internet or firewall settings."
*/
MSG_NPGMUP_ERROR_CONNECT = 0x322,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드 ì—…ë°ì´íŠ¸ë¥¼ 완료하지 못 했습니다. ë°”ì´ëŸ¬ìŠ¤ 검사를 해보시거나, PC 관리 í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•˜ì‹œë©´ ì„¤ì •ì„ ì¡°ì •í•œ 후 ê²Œìž„ì„ ì‹¤í–‰í•´ 보시기 ë°”ëžë‹ˆë‹¤.
"Can't complete Game Guard update process. Please, try to execute a vaccine program to remove viruses. Or, please try to modify the settings of your PC managing tool if you are using any."
*/
MSG_NPGMUP_ERROR_AUTH = 0x323,
-/*20171018 to 20180627
+/*20171018 to 20180711
/notrade : ê±°ëž˜ì‹ ì²­ì„ ìžë™ìœ¼ë¡œ 거절합니다 On Off
/notrade: Declines trade offers automatically. On | Off
*/
MSG_EXPLAIN_NOTRADE = 0x324,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래신청과 친구등ë¡ìš”ì²­ì„ ìžë™ìœ¼ë¡œ 거절합니다 [/nt ON]
Auto decline trade offers has been Enabled. [/nt ON]
*/
MSG_NOTRADE_ON = 0x325,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래신청과 친구등ë¡ìš”ì²­ì„ ì •ìƒì ìœ¼ë¡œ 받습니다 [/nt OFF]
Auto decline trade offers has been Disabled. [/nt OFF]
*/
MSG_NOTRADE_OFF = 0x326,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— 30000ê°œ ì´ìƒì€ 살수 없습니다.
You cannot buy more than 30,000ea items at once.
*/
MSG_LIMIT_BUY_ITEM = 0x327,
-/*20171018 to 20180627
+/*20171018 to 20180711
재료가 충분하지 않습니다.
You do not have enough ingredients.
*/
MSG_NOT_ENOUGH_SOURCE = 0x328,
-/*20171018 to 20180627
+/*20171018 to 20180711
%sì— ê³„ì •ì •ë³´ê°€ 남아있습니다.
Login information remains at %s.
*/
MSG_ALREADY_CONNECT = 0x329,
-/*20171018 to 20180627
+/*20171018 to 20180711
계정ë„ìš© 조사를 위해 로그ì¸ì´ 금지ë˜ì—ˆìŠµë‹ˆë‹¤. ìžì„¸í•œ 문ì˜ëŠ” 계정ë„ìš© 관련 ë¬¸ì˜ ë©”ì¼ë¡œ 해주시기 ë°”ëžë‹ˆë‹¤.
Account has been locked for a hacking investigation. Please contact the GM Team for more information.
*/
MSG_HACKING_INVESTIGATION = 0x32a,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 버그관련 조사중ì´ë¯€ë¡œ ì¼ì‹œì ìœ¼ë¡œ ì ‘ì†ì„ 금합니다
This account has been temporarily prohibited from login due to a bug-related investigation.
*/
MSG_BUG_INVESTIGATION = 0x32b,
-/*20171018 to 20180627
+/*20171018 to 20180711
수리가능한 ì•„ì´í…œ
Repairable items
*/
MSG_REPAIRITEMLIST = 0x32c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 수리 성공
Item has been successfully repaired.
*/
MSG_ITEM_REPAIR_SUCCEESS = 0x32d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 수리 실패 (재료 ë˜ëŠ” ìƒëŒ€ì™€ì˜ ê±°ë¦¬ë“±ì„ í™•ì¸í•´ì£¼ì‹­ì‹œìš”)
You have failed to repair this item. Please check the distance between you and opponent.
*/
MSG_ITEM_REPAIR_FAIL = 0x32e,
-/*20171018 to 20180627
+/*20171018 to 20180711
시스템 ìƒí™©ì„ 지ì†ì ìœ¼ë¡œ ì²´í¬ í•©ë‹ˆë‹¤.[ìš´ì˜ìžëª¨ë“œ] [/sc ON]
System process enabled [GM mode] [/sc ON]
*/
MSG_SYSTEM_CHECK_ON = 0x32f,
-/*20171018 to 20180627
+/*20171018 to 20180711
시스템 ìƒí™©ì„ 지ì†ì ìœ¼ë¡œ ì²´í¬ í•˜ì§€ 않습니다.[ìš´ì˜ìžëª¨ë“œ] [/sc OFF]
System process disabled [GM mode] [/sc OFF]
*/
MSG_SYSTEM_CHECK_OFF = 0x330,
-/*20171018 to 20180627
+/*20171018 to 20180711
/systemcheck : 시스템 ìƒí™©ì„ 지ì†ì ìœ¼ë¡œ ì²´í¬ í•©ë‹ˆë‹¤.[ìš´ì˜ìžëª¨ë“œ]
/systemcheck: Check the system process [GM mode] On | Off
*/
MSG_EXPLAIN_SYSTEM_CHECK = 0x331,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ì´ ì¹œêµ¬ ì‹ ì²­ì„ í•˜ì…¨ìŠµë‹ˆë‹¤. 친구가 ë˜ì‹œê² ìŠµë‹ˆê¹Œ?
(%s) wishes to be friends with you. Would you like to accept?
*/
MSG_SUGGEST_JOIN_FRIEND = 0x332,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë” ì´ìƒ 친구 등ë¡ì„ 하실수 없습니다.
Your Friend List is full.
*/
MSG_FRIEND_ADD_ME_OVERSIZE = 0x333,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ì´ ë” ì´ìƒ 친구 등ë¡ì„ 하실수 없습니다.
(%s)'s Friend List is full.
*/
MSG_FRIEND_ADD_OTHER_OVERSIZE = 0x334,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)님과 친구가 ë˜ì…¨ìŠµë‹ˆë‹¤.
You have become friends with (%s).
*/
MSG_FRIEND_ADD_SUCCEED = 0x335,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ì´ ì¹œêµ¬ ë˜ê¸°ë¥¼ ì›í•˜ì§€ 않습니다.
(%s) does not want to be friends with you.
*/
MSG_FRIEND_ADD_FALSE = 0x336,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìºë¦­í„°ëŠ” %s 까지 블럭ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
This character will be blocked to use until %s.
*/
MSG_BLOCKED = 0x337,
-/*20171018 to 20180627
+/*20171018 to 20180711
천만제니 ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ ì²œë§Œì œë‹ˆë¡œ íŒë§¤ë©ë‹ˆë‹¤.
Price will be fixed at 10,000,000 zeny, even if you enter higher price.
*/
MSG_OVERPRICE = 0x338,
-/*20171018 to 20180627
+/*20171018 to 20180711
(ì ìŒ)
(Very low)
*/
MSG_LITTLEUSER = 0x339,
-/*20171018 to 20180627
+/*20171018 to 20180711
(약간 ì ìŒ)
(Low)
*/
MSG_ALITTLEUSER = 0x33a,
-/*20171018 to 20180627
+/*20171018 to 20180711
(보통)
(Normal)
*/
MSG_NORMLEUSER = 0x33b,
-/*20171018 to 20180627
+/*20171018 to 20180711
(많ìŒ)
(High)
*/
MSG_MANYUSER = 0x33c,
-/*20171018 to 20180627
+/*20171018 to 20180711
(매우 많ìŒ)
(Very high)
*/
MSG_VERYMANYUSER = 0x33d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¹„ë§¤ë„ˆì— ì˜í•´ ìš´ì˜ìžë¡œë¶€í„° 채팅금지가 ì ìš©ë©ë‹ˆë‹¤.
You have been blocked from using chat and skills for %d minutes by the GM Team.
*/
MSG_GM_BAD_MANNER_START = 0x33e,
-/*20171018 to 20180627
+/*20171018 to 20180711
GMì— ì˜í•œ 채팅금지가 %d 분 남아 있습니다.
%d minutes remain until release from the GM penalty.
*/
MSG_GM_BAD_MANNER_REMAIN = 0x33f,
-/*20171018 to 20180627
+/*20171018 to 20180711
GMì— ì˜í•œ 채팅금지가 해지 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been released from the GM penalty.
*/
MSG_GM_BAD_MANNER_END = 0x340,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„ë°° 방지 시스템으로 ì¸í•œ ìžë™ 채팅금지가 ì ìš©ë©ë‹ˆë‹¤.
You have been blocked from using chat and skills for %d as an automatic penalty.
*/
MSG_AUTO_BAD_MANNER_START = 0x341,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„ë°° 방지 시스템으로 ì¸í•œ 채팅금지가 %d 분 남아 있습니다.
%d minutes remain until release from auto penalty.
*/
MSG_AUTO_BAD_MANNER_REMAIN = 0x342,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„ë°° 방지 시스템으로 ì¸í•œ 채팅금지가 해지ë˜ì—ˆìŠµë‹ˆë‹¤. 게임진행 ì‹œì—는 ë„ë°°ì— ëŒ€í•´ì„œ 주ì˜í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.
You have been released from the auto penalty. Please refrain from spamming in-game.
*/
MSG_AUTO_BAD_MANNER_END = 0x343,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s님과 %së‹˜ì´ ì´í˜¼í•˜ì…¨ìŠµë‹ˆë‹¤.
%s and %s have divorced from each other.
*/
MSG_DIVORCE = 0x344,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ íƒœì–‘ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Solar Space.
*/
MSG_STARPLACE1 = 0x345,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ ë‹¬ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Luna Space.
*/
MSG_STARPLACE2 = 0x346,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ ë³„ì˜ ìž¥ì†Œë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Stellar Space.
*/
MSG_STARPLACE3 = 0x347,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ íƒœì–‘ì˜ ìž¥ì†ŒëŠ” %s 입니다
Gravity %s's Solar Space: %s
*/
MSG_STARPLACE4 = 0x348,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ ë‹¬ì˜ ìž¥ì†ŒëŠ” %s 입니다
Gravity %s's Luna Space: %s
*/
MSG_STARPLACE5 = 0x349,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ ë³„ì˜ ìž¥ì†ŒëŠ” %s 입니다
Gravity %s's Stellar Space: %s
*/
MSG_STARPLACE6 = 0x34a,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ íƒœì–‘ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Solar Monster.
*/
MSG_STARMONSTER1 = 0x34b,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ ë‹¬ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Luna Monster.
*/
MSG_STARMONSTER2 = 0x34c,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ ë³„ì˜ ëª¬ìŠ¤í„°ë¡œ %s ê°€ 지정ë습니다.
%s has been designated as Gravity %s's Stellar Monster.
*/
MSG_STARMONSTER3 = 0x34d,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ íƒœì–‘ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
Gravity %s's Solar Monster: %s
*/
MSG_STARMONSTER4 = 0x34e,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ ë‹¬ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
Gravity %s's Luna Monster: %s
*/
MSG_STARMONSTER5 = 0x34f,
-/*20171018 to 20180627
+/*20171018 to 20180711
æ‹³è– %sì˜ ë³„ì˜ ëª¬ìŠ¤í„°ëŠ” %s 입니다
Gravity %s's Stellar Monster: %s
*/
MSG_STARMONSTER6 = 0x350,
-/*20171018 to 20180627
+/*20171018 to 20180711
/window : ì°½ 위치 ì´ë™ì‹œ 다른 창과 달ë¼ë¶™ëŠ” ì†ì„±ì´ 들어갑니다 On Off
/window: Display windows will snap/dock together. On | Off
*/
MSG_EXPLAIN_WINDOW = 0x351,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì°½ 위치 ì´ë™ì‹œ 다른 창과 잘 붙습니다 [/wi ON]
Display window docking enabled. [/wi ON]
*/
MSG_WINDOW_ON = 0x352,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì°½ 위치 ì´ë™ì‹œ 다른 창과 붙으려는 ì†ì„±ì„ 가지지 않습니다 [/wi OFF]
Display window docking disabled. [/wi OFF]
*/
MSG_WINDOW_OFF = 0x353,
-/*20171018 to 20180627
+/*20171018 to 20180711
/pvpinfo : ìžì‹ ì˜ PVP 승패와 PVP í¬ì¸íŠ¸ë¥¼ ì•Œ 수 있습니다.
/pvpinfo: shows your PVP result and PVP points.
*/
MSG_EXPLAIN_PVP_INFO = 0x354,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 %d승, %d패, PVPí¬ì¸íŠ¸ëŠ” %d입니다.
You have won %d times and have lost %d times in PVP. Current points %d.
*/
MSG_PVP_INFO = 0x355,
-/*20171018 to 20180627
+/*20171018 to 20180711
매너 í¬ì¸íŠ¸ë¥¼ 성공ì ìœ¼ë¡œ 보냈습니다.
A manner point has been successfully aligned.
*/
MSG_SEND_MANNER_POINT = 0x356,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ì´ê³³ì€ PK 가능 지역입니다. 불ì˜ì˜ ê³µê²©ì— ìœ ì˜ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
You are in a PK area. Please beware of sudden attack.
*/
MSG_PKZONE = 0x357,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드 ì—…ë°ì´íŠ¸ê°€ ë°”ì´ëŸ¬ìŠ¤ë‚˜ 스파ì´ì›¨ì–´ì™€ì˜ 충ëŒë¡œ 실패했습니다. 백신 프로그램/스파ì´ì›¨ì–´ 제거 í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•œ 후 ì ‘ì†í•´ 주십시기 ë°”ëžë‹ˆë‹¤
Game Guard update has been failed when either Virus or Spyware conflicted with. Please, Uninstall Spyware and Virus protection program before you log in.
*/
MSG_NPGAMEMON_ERROR_100ERROR = 0x358,
-/*20171018 to 20180627
+/*20171018 to 20180711
윈ë„ìš° 호환성 문제로 í”„ë¡œê·¸ëž¨ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. ê²Œìž„ì„ ë‹¤ì‹œ 실행해 주시기 ë°”ëžë‹ˆë‹¤
Program has encountered an error related to Windows compatibility. Please start the game again.
*/
MSG_NPGAMEMON_XP_COMPATIBILITY = 0x359,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅, 스킬, ì•„ì´í…œì„ 사용할수없게 ë˜ì—ˆìŠµë‹ˆë‹¤.
You have been blocked from chatting, using skills and items.
*/
MSG_PK_HONOR = 0x35a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ì‚­ì œ 작업중ì´ë¯€ë¡œ ì ‘ì†ì´ ì¼ì‹œì ìœ¼ë¡œ 제한ë©ë‹ˆë‹¤.
Login is temporarily unavailable while this character is being deleted.
*/
MSG_DELETING_CHAR = 0x35b,
-/*20171018 to 20180627
+/*20171018 to 20180711
결혼 ìƒëŒ€ìžì˜ ìºë¦­í„° ì‚­ì œ 작업중ì´ë¯€ë¡œ ì ‘ì†ì´ ì¼ì‹œì ìœ¼ë¡œ 제한ë©ë‹ˆë‹¤.
Login is temporarily unavailable while your spouse character is being deleted.
*/
MSG_DELETING_SPOUSE_CHAR = 0x35c,
-/*20171018 to 20180627
+/*20171018 to 20180711
Novice
*/
MSG_NOVICE = 0x35d,
-/*20171018 to 20180627
+/*20171018 to 20180711
Swordman
*/
MSG_SWORDMAN = 0x35e,
-/*20171018 to 20180627
+/*20171018 to 20180711
Magician
Mage
*/
MSG_MAGICIAN = 0x35f,
-/*20171018 to 20180627
+/*20171018 to 20180711
Archer
*/
MSG_ARCHER = 0x360,
-/*20171018 to 20180627
+/*20171018 to 20180711
Acolyte
*/
MSG_ACOLYTE = 0x361,
-/*20171018 to 20180627
+/*20171018 to 20180711
Merchant
*/
MSG_MERCHANT = 0x362,
-/*20171018 to 20180627
+/*20171018 to 20180711
Thief
*/
MSG_THIEF = 0x363,
-/*20171018 to 20180627
+/*20171018 to 20180711
Knight
*/
MSG_KNIGHT = 0x364,
-/*20171018 to 20180627
+/*20171018 to 20180711
Prieset
Priest
*/
MSG_PRIEST = 0x365,
-/*20171018 to 20180627
+/*20171018 to 20180711
Wizerd
Wizard
*/
MSG_WIZARD = 0x366,
-/*20171018 to 20180627
+/*20171018 to 20180711
Blacksmith
*/
MSG_BLACKSMITH = 0x367,
-/*20171018 to 20180627
+/*20171018 to 20180711
Hunter
*/
MSG_HUNTER = 0x368,
-/*20171018 to 20180627
+/*20171018 to 20180711
Assassin
*/
MSG_ASSASSIN = 0x369,
-/*20171018 to 20180627
+/*20171018 to 20180711
Novice
*/
MSG_NOVICE_W = 0x36a,
-/*20171018 to 20180627
+/*20171018 to 20180711
Swordman
*/
MSG_SWORDMAN_W = 0x36b,
-/*20171018 to 20180627
+/*20171018 to 20180711
Magician
Mage
*/
MSG_MAGICIAN_W = 0x36c,
-/*20171018 to 20180627
+/*20171018 to 20180711
Archer
*/
MSG_ARCHER_W = 0x36d,
-/*20171018 to 20180627
+/*20171018 to 20180711
Acolyte
*/
MSG_ACOLYTE_W = 0x36e,
-/*20171018 to 20180627
+/*20171018 to 20180711
Merchant
*/
MSG_MERCHANT_W = 0x36f,
-/*20171018 to 20180627
+/*20171018 to 20180711
Thief
*/
MSG_THIEF_W = 0x370,
-/*20171018 to 20180627
+/*20171018 to 20180711
Knight
*/
MSG_KNIGHT_W = 0x371,
-/*20171018 to 20180627
+/*20171018 to 20180711
Prieset
Priest
*/
MSG_PRIEST_W = 0x372,
-/*20171018 to 20180627
+/*20171018 to 20180711
Wizerd
Wizard
*/
MSG_WIZARD_W = 0x373,
-/*20171018 to 20180627
+/*20171018 to 20180711
Blacksmith
*/
MSG_BLACKSMITH_W = 0x374,
-/*20171018 to 20180627
+/*20171018 to 20180711
Hunter
*/
MSG_HUNTER_W = 0x375,
-/*20171018 to 20180627
+/*20171018 to 20180711
Assassin
*/
MSG_ASSASSIN_W = 0x376,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ì„ ì•„ì´ë¡œ ìž…ì–‘ì‹ ì²­
Send an adoption request to %s
*/
MSG_REQ_JOIN_BABY = 0x377,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´ê°€ ë˜ë©´ ì „ìŠ¹ì„ í• ìˆ˜ì—†ê³  ìŠ¤í…Ÿì€ 80ì´ìƒ 올릴수없게ë˜ë©° HP와 SPê°€ 줄어듭니다. ê·¸ëž˜ë„ ê´œì°®ìŠµë‹ˆê¹Œ?
When you become a child, you will be unable to become a Transcendent Class character, all stats will be limited to a maximum of 80, and Max HP/SP will be reduced. Are you sure that you want to be adopted?
*/
MSG_SUGGEST_BABY2 = 0x378,
-/*20171018 to 20180627
+/*20171018 to 20180711
모든 ë‚˜ìœ ìƒíƒœì´ìƒì´ 제거 ë˜ì—ˆìŠµë‹ˆë‹¤.
All abnormal status effects have been removed.
*/
MSG_GOSPEL1 = 0x379,
-/*20171018 to 20180627
+/*20171018 to 20180711
1분간 모든 ìƒíƒœì´ìƒì— 대해 ë©´ì—­ì´ ë©ë‹ˆë‹¤.
You will be immune to abnormal status effects for the next minute.
*/
MSG_GOSPEL2 = 0x37a,
-/*20171018 to 20180627
+/*20171018 to 20180711
1분간 최대 ìƒëª…ë ¥ì´ í¬ê²Œ 늘어납니다.
Your Max HP will stay increased for the next minute.
*/
MSG_GOSPEL3 = 0x37b,
-/*20171018 to 20180627
+/*20171018 to 20180711
1분간 최대 ë§ˆë²•ë ¥ì´ í¬ê²Œ 늘어납니다.
Your Max SP will stay increased for the next minute.
*/
MSG_GOSPEL4 = 0x37c,
-/*20171018 to 20180627
+/*20171018 to 20180711
1분간 모든 ëŠ¥ë ¥ì´ í¬ê²Œ ìƒìŠ¹í•©ë‹ˆë‹¤.
All of your Stats will stay increased for the next minute.
*/
MSG_GOSPEL5 = 0x37d,
-/*20171018 to 20180627
+/*20171018 to 20180711
1분간 사용하는 ë¬´ê¸°ì— ì„±ìŠ¤ëŸ¬ìš´ ì†ì„±ì´ 부여ë©ë‹ˆë‹¤.
Your weapon will remain blessed with Holy power for the next minute.
*/
MSG_GOSPEL6 = 0x37e,
-/*20171018 to 20180627
+/*20171018 to 20180711
1분간 사용하는 ê°‘ì˜·ì— ì„±ìŠ¤ëŸ¬ìš´ ì†ì„±ì´ 부여ë©ë‹ˆë‹¤.
Your armor will remain blessed with Holy power for the next minute.
*/
MSG_GOSPEL7 = 0x37f,
-/*20171018 to 20180627
+/*20171018 to 20180711
10초간 ë°©ì–´ë ¥ì´ í¬ê²Œ ìƒìŠ¹í•©ë‹ˆë‹¤.
Your Defense will stay increased for the next 10 seconds.
*/
MSG_GOSPEL8 = 0x380,
-/*20171018 to 20180627
+/*20171018 to 20180711
1분간 ê³µê²©ë ¥ì´ í¬ê²Œ ì¦ê°€í•©ë‹ˆë‹¤.
Your Attack strength will be increased for the next minute.
*/
MSG_GOSPEL9 = 0x381,
-/*20171018 to 20180627
+/*20171018 to 20180711
1분간 명중률과 íšŒí”¼ìœ¨ì´ í¬ê²Œ ìƒìŠ¹í•©ë‹ˆë‹¤.
Your Accuracy and Flee Rate will be increased for the next minute.
*/
MSG_GOSPEL10 = 0x382,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´ë¥¼ 한번 ìž…ì–‘í–ˆë˜ ë¶€ë¶€ëŠ” 추가 ìž…ì–‘ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
You cannot adopt more than 1 child.
*/
MSG_BABY1 = 0x383,
-/*20171018 to 20180627
+/*20171018 to 20180711
부부가 둘다 레벨70ì´ ë„˜ì–´ì•¼ ì•„ì´ë¥¼ 입양할수있습니다.
You must be at least character level 70 in order to adopt someone.
*/
MSG_BABY2 = 0x384,
-/*20171018 to 20180627
+/*20171018 to 20180711
[POINT] 블랙스미스 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You have been rewarded with %d Blacksmith rank points. Your point total is %d.
*/
MSG_BLACKSMITH_POINT = 0x385,
-/*20171018 to 20180627
+/*20171018 to 20180711
[POINT] 알케미스트 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You have been rewarded with %d Alchemist rank points. Your point total is %d.
*/
MSG_ALCHEMIST_POINT = 0x386,
-/*20171018 to 20180627
+/*20171018 to 20180711
X
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE11 = 0x387,
-/*20171018 to 20180627
+/*20171018 to 20180711
X
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE12 = 0x388,
-/*20171018 to 20180627
+/*20171018 to 20180711
X
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE13 = 0x389,
-/*20171018 to 20180627
+/*20171018 to 20180711
X
Help me out~ Please~ T_T
*/
MSG_SUPERNOVICE14 = 0x38a,
-/*20171018 to 20180627
+/*20171018 to 20180711
/notalkmsg2 : ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ 않습니다 (ê¸¸ë“œë§ í¬í•¨) On Off
/notalkmsg2: Hides chat messages(including guild chat). On Off
*/
MSG_EXPLAIN_NOTALKMSG2 = 0x38b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤ [/nm2 ON]
Show chat messages. [/nm2 ON]
*/
MSG_NOTALKMSG2_ON = 0x38c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì±„íŒ…ë‚´ìš©ì„ ì±„íŒ…ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤ (ê¸¸ë“œë§ í¬í•¨) [/nm2 OFF]
Hide chat messages(including guild chat) [/nm2 OFF]
*/
MSG_NOTALKMSG2_OFF = 0x38d,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련가능한 ì•„ì´í…œ
Upgradable Weapons
*/
MSG_REFINEITEMLIST = 0x38e,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련한 무기 : %s
Weapons upgraded: %s
*/
MSG_ITEM_REFINE_SUCCEESS = 0x38f,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련한 무기 : %s
Weapons upgraded: %s
*/
MSG_ITEM_REFINE_FAIL = 0x390,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¬´ê¸°ì œë ¨ìŠ¤í‚¬ì˜ ë ˆë²¨ì´ ë¶€ì¡±í•´ì„œ %s ì œë ¨ì„ í• ìˆ˜ì—†ìŠµë‹ˆë‹¤.
You cannot upgrade %s until you level up your Upgrade Weapon skill.
*/
MSG_ITEM_REFINE_FAIL_LEVEL = 0x391,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì œë ¨ì— í•„ìš”í•œ ì•„ì´í…œ (%s) ì´ ì—†ìœ¼ë¯€ë¡œ 제련할수없습니다.
You lack a necessary item %s to upgrade this weapon.
*/
MSG_ITEM_REFINE_FAIL_MATERIAL = 0x392,
-/*20171018 to 20180627
+/*20171018 to 20180711
완벽하게 코팅ë˜ì–´ìžˆì–´ì„œ í’€ìŠ¤íŠ¸ë¦½ì´ í†µí•˜ì§€ 않습니다.
Full Divestment cannot pierce the target. The target is fully shielded.
*/
MSG_FULLSTRIP = 0x393,
-/*20171018 to 20180627
+/*20171018 to 20180711
결혼한 ìºë¦­í„°ëŠ” 입양시킬수 없습니다.
You cannot adopt a married person.
*/
MSG_BABY3 = 0x394,
-/*20171018 to 20180627
+/*20171018 to 20180711
친구로 등ë¡ëœ ì´ë¦„ê³¼ 비슷하지만 등ë¡ëœ ì´ë¦„ì´ ì•„ë‹™ë‹ˆë‹¤. 아는사람ì¸ì§€ 확ì¸í•˜ì‹­ì‹œìš”.
This name is not registered in your Friend List. Please check the name again.
*/
MSG_ID_WARNING = 0x395,
-/*20171018 to 20180627
+/*20171018 to 20180711
/hi ë˜ëŠ” /hi 문장 : 친구로 등ë¡ëœ ìºë¦­í„°ë“¤ì—게 ì¸ì‚¬ë¥¼ 합니다.
/hi or /hi message: Send greetings to people who are online and registered on your Friend List.
*/
MSG_EXPLAIN_HI = 0x396,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì›ì˜ ì´ë¦„ê³¼ 비슷하지만 길드ì›ì´ 아닙니다. 길드ì›ì¸ì§€ 확ì¸í•˜ì‹­ì‹œìš”.
This character is not your guildsman. Please check the name again.
*/
MSG_ID_WARNING_GUILD = 0x397,
-/*20171018 to 20180627
+/*20171018 to 20180711
9999만제니 ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 9999만제니로 íŒë§¤ë©ë‹ˆë‹¤.
Please be aware that the maximum selling price is fixed as 2 Billion. You cannot sell an item higher than that.
*/
MSG_OVERPRICE9999 = 0x398,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¹œêµ¬ì˜ ê·“ì†ë§ì€ [ Friend ] , 길드ì›ì€ [ Member ] ë¡œ 표시ë©ë‹ˆë‹¤.
Whispers from friends are displayed as [ Friend ], and ones from guildsmen are displayed as [ Member ].
*/
MSG_EXPLAIN_SACHING1 = 0x399,
-/*20171018 to 20180627
+/*20171018 to 20180711
( From ìºë¦­í„°ì´ë¦„ : ) ì´ë¼ê³  표시 ë˜ëŠ” ê·“ì†ë§ì€ 친구나 길드ì›ì´ 아닙니다.
( From character name: ) is from an anonymous character who is neither your friend nor guildsman.
*/
MSG_EXPLAIN_SACHING2 = 0x39a,
-/*20171018 to 20180627
+/*20171018 to 20180711
/blacksmith : ë¸”ëž™ìŠ¤ë¯¸ìŠ¤ì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/blacksmith: Shows top 10 Blacksmiths in the server.
*/
MSG_EXPLAIN_BLACKSMITH = 0x39b,
-/*20171018 to 20180627
+/*20171018 to 20180711
/alchemist : ì•Œì¼€ë¯¸ìŠ¤íŠ¸ì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/alchemist: Shows top 10 Alchemists in the server.
*/
MSG_EXPLAIN_ALCHEMIST = 0x39c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ALT+Y : 여러가지 명령어를 쉽게 쓸수있는 윈ë„ìš°ê°€ 열립니다.
ALT+Y: Opens a window which allows you to use various commands with ease.
*/
MSG_EXPLAIN_ALTY = 0x39d,
-/*20171018 to 20180627
+/*20171018 to 20180711
[POINT] 태권미션 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[POINT] You have been rewarded with %d Tae-Kwon Mission rank points. Your point total is %d.
*/
MSG_TAEKWON_POINT = 0x39e,
-/*20171018 to 20180627
+/*20171018 to 20180711
[태권미션] Target Monster : %s (%d%%)
[Taekwon Mission] Target Monster: %s (%d%%)
*/
MSG_TAEKWON_MISSION = 0x39f,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드 초기화 ì—러 : %lu
Error - Failed to initialize GameGuard: %lu
*/
MSG_INIT_ERROR = 0x3a0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í”¼ë“œí•µì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Speed Hack has been detected.
*/
MSG_SPEEDHACK_DETECT = 0x3a1,
-/*20171018 to 20180627
+/*20171018 to 20180711
불법 프로그램 (%s) ê°€ 발견ë˜ì—ˆìŠµë‹ˆë‹¤
The illegal program, (%s) has been detected.
*/
MSG_GAMEHACK_DETECT = 0x3a2,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임ì´ë‚˜ 게임가드가 변조ë˜ì—ˆìŠµë‹ˆë‹¤.
The Game or Gameguard has been cracked.
*/
MSG_GAMEHACK_DOUBT = 0x3a3,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드가 실행 중 입니다. ìž ì‹œ í›„ì— ë‹¤ì‹œ 실행해보시기 ë°”ëžë‹ˆë‹¤.
GameGuard is currently running. Please wait for sometime and restart the game.
*/
MSG_ERROR_EXIST = 0x3a4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê²Œìž„ì´ ì¤‘ë³µ 실행ë˜ì—ˆê±°ë‚˜ 게임가드가 ì´ë¯¸ 실행 중 입니다. 게임 종료 후 다시 실행해보시기 ë°”ëžë‹ˆë‹¤.
The Game or GameGuard is already running. Please close the game and restart the game.
*/
MSG_GAME_EXIST = 0x3a5,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드 초기화 ì—러입니다. 재부팅 후 다시 실행해보거나 충ëŒí•  수 있는 다른 í”„ë¡œê·¸ëž¨ë“¤ì„ ì¢…ë£Œí•œ 후 실행해 보시기 ë°”ëžë‹ˆë‹¤.
Failed to intialize GameGuard. Please try again after rebooting the system or closing other programs.
*/
MSG_ERROR_INIT = 0x3a6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°”ì´ëŸ¬ìŠ¤ ë° í•´í‚¹íˆ´ 검사 모듈 ë¡œë”©ì— ì‹¤íŒ¨ 했습니다. 메모리 부족ì´ê±°ë‚˜ ë°”ì´ëŸ¬ìŠ¤ì— ì˜í•œ ê°ì—¼ì¼ 수 있습니다.
Failed to load the scan module of virus and hacking tool. It's caused by lack of memory or PC virus infection.
*/
MSG_ERROR_NPSCAN = 0x3a7,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ ì •ë³´
Homunculus Info
*/
MSG_HOMUN_INFO = 0x3a8,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ 스킬목ë¡
Homunculus Skill List
*/
MSG_HOMUN_SKILLLIST = 0x3a9,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ì˜ ì´ë¦„ì€ ì˜ë¬¸ 23, 한글 11ìž ì´ë‚´ë¡œ ì •í•´ 주세요.
Please give your Homunculus a name no longer than 23 letters.
*/
MSG_HOMUN_NAME_IN23 = 0x3aa,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„ì€ ë‹¨ 한번만 바꿀수 있습니다. 호문í´ë£¨ìŠ¤ì˜ ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You can name a Homunculus only once. You have entered the name, ^0000ff%s^000000. Would you like to continue?
*/
MSG_HOMUN_NAME_CHANGE_ONLYONCE = 0x3ab,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§€ê¸ˆì€ ë¶€ìž¬ì¤‘~
(Away)
*/
MSG_AUTO_MSG = 0x3ac,
-/*20171018 to 20180627
+/*20171018 to 20180711
[ìžë™ì‘답]
[Automated Message]
*/
MSG_AUTO_MSG2 = 0x3ad,
-/*20171018 to 20180627
+/*20171018 to 20180711
부재시 타ì¸ì˜ ê·“ë§ì— ìžë™ì‘답합니다.
Send an automated message while you are away.
*/
MSG_AUTO_MSG_ON = 0x3ae,
-/*20171018 to 20180627
+/*20171018 to 20180711
부재시 타ì¸ì˜ ê·“ë§ì— ìžë™ì‘답하지 않습니다.
Cancel automated away message.
*/
MSG_AUTO_MSG_OFF = 0x3af,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìžë™ ì‘답 메시지를 입력하세요.
Please enter Away Message.
*/
MSG_ENTER_AUTO_MSG = 0x3b0,
-/*20171018 to 20180627
+/*20171018 to 20180711
/번ì©
/fsh
*/
MSG_EMOTION_SPARK = 0x3b1,
-/*20171018 to 20180627
+/*20171018 to 20180711
/빙빙
/spin
*/
MSG_EMOTION_CONFUSE = 0x3b2,
-/*20171018 to 20180627
+/*20171018 to 20180711
/하아
/sigh
*/
MSG_EMOTION_OHNO = 0x3b3,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ë¤ë¤
/dum
*/
MSG_EMOTION_HUM = 0x3b4,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ì‹œëŒ
/crwd
*/
MSG_EMOTION_BLABLA = 0x3b5,
-/*20171018 to 20180627
+/*20171018 to 20180711
/좌절
/desp
*/
MSG_EMOTION_OTL = 0x3b6,
-/*20171018 to 20180627
+/*20171018 to 20180711
/주사위
/dice
*/
MSG_EMOTION_DICE = 0x3b7,
-/*20171018 to 20180627
+/*20171018 to 20180711
/pk : 학살ìžì˜ ìƒìœ„ 10위권 ëž­í‚¹ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/pk: Shows top 10 Slayers in the server.
*/
MSG_EXPLAIN_KILLER_RANK = 0x3b8,
-/*20171018 to 20180627
+/*20171018 to 20180711
[POINT] í•™ì‚´ìž ëž­í‚¹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[POINT] You have been rewarded with %d Slayer rank points. Your point total is %d.
*/
MSG_KILLER_POINT = 0x3b9,
-/*20171018 to 20180627
+/*20171018 to 20180711
진화 가능
Evolution Available
*/
MSG_HOMUN_EVOLVE = 0x3ba,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000^ff0000호문í´ë£¨ìŠ¤ë¥¼ 삭제합니다.^000000^000000 삭제하실 경우 지금까지 키운 ë‚´ì—­ì´ ëª¨ë‘ ì‚­ì œë©ë‹ˆë‹¤. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
You have decided to delete this Homunculus ^ff0000^ff0000. When deleted, the homunculus and its history will be deleted and they cannot be restored in the future. Would you like to continue?
*/
MSG_DELETE_HOMUN = 0x3bb,
-/*20171018 to 20180627
+/*20171018 to 20180711
í˜¸ë¬¸ì˜ ìƒíƒœë¥¼ 파ì¼ì— 저장합니다.
Save Homunculus status as a file.
*/
MSG_TRACE_AI_ON = 0x3bc,
-/*20171018 to 20180627
+/*20171018 to 20180711
í˜¸ë¬¸ì˜ ìƒíƒœë¥¼ 파ì¼ì— 저장하지 않습니다.
Do not save Homunculus status as a file.
*/
MSG_TRACE_AI_OFF = 0x3bd,
-/*20171018 to 20180627
+/*20171018 to 20180711
Crusader
*/
MSG_CRUSADER = 0x3be,
-/*20171018 to 20180627
+/*20171018 to 20180711
Monk
*/
MSG_MONK = 0x3bf,
-/*20171018 to 20180627
+/*20171018 to 20180711
Sage
*/
MSG_SAGE = 0x3c0,
-/*20171018 to 20180627
+/*20171018 to 20180711
Rouge
Rogue
*/
MSG_ROGUE = 0x3c1,
-/*20171018 to 20180627
+/*20171018 to 20180711
Alchemist
*/
MSG_ALCHEMIST = 0x3c2,
-/*20171018 to 20180627
+/*20171018 to 20180711
Bard
*/
MSG_BARD = 0x3c3,
-/*20171018 to 20180627
+/*20171018 to 20180711
Crusader_W
Crusader
*/
MSG_CRUSADER_W = 0x3c4,
-/*20171018 to 20180627
+/*20171018 to 20180711
Monk_W
Monk
*/
MSG_MONK_W = 0x3c5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Sage_W
Sage
*/
MSG_SAGE_W = 0x3c6,
-/*20171018 to 20180627
+/*20171018 to 20180711
Rouge_W
Rogue
*/
MSG_ROGUE_W = 0x3c7,
-/*20171018 to 20180627
+/*20171018 to 20180711
Alchemist_W
Alchemist
*/
MSG_ALCHEMIST_W = 0x3c8,
-/*20171018 to 20180627
+/*20171018 to 20180711
Dancer
*/
MSG_DANCER = 0x3c9,
-/*20171018 to 20180627
+/*20171018 to 20180711
Novice High
High Novice
*/
MSG_NOVICE_H = 0x3ca,
-/*20171018 to 20180627
+/*20171018 to 20180711
Swordman High
High Swordman
*/
MSG_SWORDMAN_H = 0x3cb,
-/*20171018 to 20180627
+/*20171018 to 20180711
Magician High
High Mage
*/
MSG_MAGICIAN_H = 0x3cc,
-/*20171018 to 20180627
+/*20171018 to 20180711
Archer High
High Archer
*/
MSG_ARCHER_H = 0x3cd,
-/*20171018 to 20180627
+/*20171018 to 20180711
Acolyte High
High Acolyte
*/
MSG_ACOLYTE_H = 0x3ce,
-/*20171018 to 20180627
+/*20171018 to 20180711
Merchant High
High Merchant
*/
MSG_MERCHANT_H = 0x3cf,
-/*20171018 to 20180627
+/*20171018 to 20180711
Thief High
High Thief
*/
MSG_THIEF_H = 0x3d0,
-/*20171018 to 20180627
+/*20171018 to 20180711
Novice High_W
High Novice
*/
MSG_NOVICE_H_W = 0x3d1,
-/*20171018 to 20180627
+/*20171018 to 20180711
Swordman High_W
High Swordman
*/
MSG_SWORDMAN_H_W = 0x3d2,
-/*20171018 to 20180627
+/*20171018 to 20180711
Magician High_W
High Mage
*/
MSG_MAGICIAN_H_W = 0x3d3,
-/*20171018 to 20180627
+/*20171018 to 20180711
Archer High_W
High Archer
*/
MSG_ARCHER_H_W = 0x3d4,
-/*20171018 to 20180627
+/*20171018 to 20180711
Acolyte High_W
High Acolyte
*/
MSG_ACOLYTE_H_W = 0x3d5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Merchant High_W
High Merchant
*/
MSG_MERCHANT_H_W = 0x3d6,
-/*20171018 to 20180627
+/*20171018 to 20180711
Thief High_W
High Thief
*/
MSG_THIEF_H_W = 0x3d7,
-/*20171018 to 20180627
+/*20171018 to 20180711
Lord Knight
*/
MSG_KNIGHT_H = 0x3d8,
-/*20171018 to 20180627
+/*20171018 to 20180711
High Priest
*/
MSG_PRIEST_H = 0x3d9,
-/*20171018 to 20180627
+/*20171018 to 20180711
High Wizard
*/
MSG_WIZARD_H = 0x3da,
-/*20171018 to 20180627
+/*20171018 to 20180711
White Smith
WhiteSmith
*/
MSG_BLACKSMITH_H = 0x3db,
-/*20171018 to 20180627
+/*20171018 to 20180711
Sniper
*/
MSG_HUNTER_H = 0x3dc,
-/*20171018 to 20180627
+/*20171018 to 20180711
Saaassin Cross
Assassin Cross
*/
MSG_ASSASSIN_H = 0x3dd,
-/*20171018 to 20180627
+/*20171018 to 20180711
Lord Knight_W
Lord Knight
*/
MSG_KNIGHT_H_W = 0x3de,
-/*20171018 to 20180627
+/*20171018 to 20180711
High Priest_W
High Priest
*/
MSG_PRIEST_H_W = 0x3df,
-/*20171018 to 20180627
+/*20171018 to 20180711
High Wizard_W
High Wizard
*/
MSG_WIZARD_H_W = 0x3e0,
-/*20171018 to 20180627
+/*20171018 to 20180711
White Smith_W
WhiteSmith
*/
MSG_BLACKSMITH_H_W = 0x3e1,
-/*20171018 to 20180627
+/*20171018 to 20180711
Sniper_W
Sniper
*/
MSG_HUNTER_H_W = 0x3e2,
-/*20171018 to 20180627
+/*20171018 to 20180711
Saaassin Cross_W
Assassin Cross
*/
MSG_ASSASSIN_H_W = 0x3e3,
-/*20171018 to 20180627
+/*20171018 to 20180711
Paladin
*/
MSG_CRUSADER_H = 0x3e4,
-/*20171018 to 20180627
+/*20171018 to 20180711
Champion
*/
MSG_MONK_H = 0x3e5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Professor
Scholar
*/
MSG_SAGE_H = 0x3e6,
-/*20171018 to 20180627
+/*20171018 to 20180711
Stalker
*/
MSG_ROGUE_H = 0x3e7,
-/*20171018 to 20180627
+/*20171018 to 20180711
Creator
Biochemist
*/
MSG_ALCHEMIST_H = 0x3e8,
-/*20171018 to 20180627
+/*20171018 to 20180711
Clown
Minstrel
*/
MSG_BARD_H = 0x3e9,
-/*20171018 to 20180627
+/*20171018 to 20180711
Paladin_W
Paladin
*/
MSG_CRUSADER_H_W = 0x3ea,
-/*20171018 to 20180627
+/*20171018 to 20180711
Champion_W
Champion
*/
MSG_MONK_H_W = 0x3eb,
-/*20171018 to 20180627
+/*20171018 to 20180711
Professor_W
Professor
*/
MSG_SAGE_H_W = 0x3ec,
-/*20171018 to 20180627
+/*20171018 to 20180711
Stalker_W
Stalker
*/
MSG_ROGUE_H_W = 0x3ed,
-/*20171018 to 20180627
+/*20171018 to 20180711
Creator_W
Creator
*/
MSG_ALCHEMIST_H_W = 0x3ee,
-/*20171018 to 20180627
+/*20171018 to 20180711
Gypsy
*/
MSG_DANCER_H = 0x3ef,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호가 지정ë˜ì–´ 있지 않습니다. 새로운 비밀번호를 지정하시겠습니까?
You have not set a password yet. Would you like to create one now?
*/
MSG_STORE_PASSWORD_REQ = 0x3f0,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호를 3회 틀려셨습니다. ë‚˜ì¤‘ì— ë‹¤ì‹œ ì‹œë„í•´ 주세요.
You have incorrectly entered the password 3 times. Please try again later.
*/
MSG_STORE_PASSWORD_PENALTY = 0x3f1,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호 ë³€ê²½ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Password creation has failed.
*/
MSG_STORE_PASSWORD_CHANGE_NG = 0x3f2,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호는 4ìžë¦¬ ì´ìƒ 8ìžë¦¬ì´í•˜ì—¬ì•¼ë§Œ 합니다.
Password must be 4~8 letters long.
*/
MSG_STORE_PASSWORD_4_8 = 0x3f3,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호
Password
*/
MSG_STORE_PASSWORD = 0x3f4,
-/*20171018 to 20180627
+/*20171018 to 20180711
신규 비밀번호
New Password
*/
MSG_STORE_NEW_PASSWORD = 0x3f5,
-/*20171018 to 20180627
+/*20171018 to 20180711
í™•ì¸ ë¹„ë°€ë²ˆí˜¸
Confirm Password
*/
MSG_STORE_RENEW_PASSWORD = 0x3f6,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호 ë³€ê²½ì´ ì™„ë£Œë˜ì—ˆìŠµë‹ˆë‹¤.
Password has been changed.
*/
MSG_STORE_PASSWORD_CHANGE_OK = 0x3f7,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호가 서로 다릅니다.
Password does not match.
*/
MSG_STORE_PASSWORD_MISMATCH = 0x3f8,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호 입력
Enter Password
*/
MSG_STORE_PASSWORD_INPUT = 0x3f9,
-/*20171018 to 20180627
+/*20171018 to 20180711
í˜¸ë¬¸ì´ ì•„ì‚¬ ì§ì „입니다! 먹ì´ë¥¼ 주지 않으면 가출하게ë©ë‹ˆë‹¤.
Your Homunculus is starving. Please feed it, otherwise it will leave you.
*/
MSG_HOMUN_HUNGRY = 0x3fa,
-/*20171018 to 20180627
+/*20171018 to 20180711
경험치
EXP
*/
MSG_HOMUN_EXP = 0x3fb,
-/*20171018 to 20180627
+/*20171018 to 20180711
수령하지 ì•Šì€ ì•„ì´í…œì´ 존재합니다. ì•Œë² ë¥´íƒ€ì˜ ì¡´ë‹¤ 기íšì‚¬ ì§ì›ì„ 찾아주세요. ^ff0000※ ì•„ì´í…œ 수령 ê¸°ê°„ì´ ì§€ë‚˜ë©´ ì•„ì´í…œì´ 소실 ë©ë‹ˆë‹¤!^000000
[EVENT] You have won an event prize. Please claim your prize in game.
*/
MSG_EVENT_RESULT = 0x3fc,
-/*20171018 to 20180627
+/*20171018 to 20180711
싫어함
Hate
*/
MSG_HATE = 0x3fd,
-/*20171018 to 20180627
+/*20171018 to 20180711
매우싫어함
Hate with a Passion
*/
MSG_VERYHATE = 0x3fe,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ê°€ ì‚¬ìš©ìž ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Homunculus has been customized.
*/
MSG_HOMUN_USERAI_ON = 0x3ff,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ê°€ 기본 ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Homunculus has been activated with the basic AI.
*/
MSG_HOMUN_USERAI_OFF = 0x400,
-/*20171018 to 20180627
+/*20171018 to 20180711
편지목ë¡
Mail List
*/
MSG_MAIL_LIST = 0x401,
-/*20171018 to 20180627
+/*20171018 to 20180711
편지쓰기
Write Mail
*/
MSG_MAIL_WRITE = 0x402,
-/*20171018 to 20180627
+/*20171018 to 20180711
편지ì½ê¸°
Read Mail
*/
MSG_MAIL_READ = 0x403,
-/*20171018 to 20180627
+/*20171018 to 20180711
한번 지정하시면 ë³€ê²½ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤! ì´ ë§µìœ¼ë¡œ 지정하시겠습니까?
You cannot change a map's designation once it is designated. Are you sure that you want to designate this map?
*/
MSG_STARPLACE_ACCEPT = 0x404,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ì•„ì´í…œì„ 수령했습니다.
Item has been added in the Item Window.
*/
MSG_MAIL_ADD_ITEM_SUCCESS = 0x405,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ì•„ì´í…œì„ 수령하지 못했습니다.
You have failed to add the item in the Item Window.
*/
MSG_MAIL_ADD_ITEM_FAILURE = 0x406,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ë³´ë‚´ê¸°ê°€ 성공하였습니다.
You have successfully mailed a message.
*/
MSG_MAIL_SEND_SUCCESS = 0x407,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ë³´ë‚´ê¸°ê°€ 실패하였습니다. 받는 ì‚¬ëžŒì´ ì¡´ìž¬í•˜ì§€ 않습니다.
You have failed to mail a message. Recipient does not exist.
*/
MSG_MAIL_USER_NOT_FOUND = 0x408,
-/*20171018 to 20180627
+/*20171018 to 20180711
[태양과 달과 ë³„ì˜ ì²œì‚¬] ì§€ì •í–ˆë˜ ìž¥ì†Œë“¤ê³¼ ëª¬ìŠ¤í„°ë“¤ì´ ì´ˆê¸°í™”ë습니다!
[Solar, Lunar and Stellar Angel] Designated places and monsters have been reset.
*/
MSG_STAR_ANGEL = 0x409,
-/*20171018 to 20180627
+/*20171018 to 20180711
경매 등ë¡ì´ 실패했습니다.
The minimum starting bid for auctions is 10,000,000 zeny.
*/
MSG_AUCTION_ADD_FALSE = 0x40a,
-/*20171018 to 20180627
+/*20171018 to 20180711
경매 등ë¡ì´ 성공했습니다.
You have successfully started a new auction.
*/
MSG_AUCTION_ADD_TRUE = 0x40b,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 경매가 취소ë˜ì—ˆìŠµë‹ˆë‹¤.
The auction has been canceled.
*/
MSG_AUCTION_ADD_CANCEL = 0x40c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž…ì°°ìžê°€ 있는 경매는 취소할 수 없습니다.
An auction with at least one bidder cannot be canceled.
*/
MSG_AUCTION_ADD_CANCEL_FALSE = 0x40d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ì‚­ì œê°€ 성공하였습니다.
Mail has been successfully deleted.
*/
MSG_MAIL_DELETE_SUCCESS = 0x40e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ì‚­ì œê°€ 실패하였습니다.
You have failed to delete the mail.
*/
MSG_MAIL_DELETE_FAILURE = 0x40f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë˜ì§€ëŠ” ë‹¨ê²€ì´ ìž¥ì°©ë˜ì—ˆìŠµë‹ˆë‹¤.
You have equipped throwing daggers.
*/
MSG_MSG_KNIFE_EQUIPMENT_SUCCESS = 0x410,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ë‹˜ì´ ë¡œê·¸ì¸í–ˆìŠµë‹ˆë‹¤.
%s has logged in.
*/
MSG_LOGIN_FRIEND = 0x411,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ë‹˜ì´ ë¡œê·¸ì•„ì›ƒí–ˆìŠµë‹ˆë‹¤.
%s has logged out.
*/
MSG_LOGOUT_FRIEND = 0x412,
-/*20171018 to 20180627
+/*20171018 to 20180711
/loginout : 길드ì›ê³¼ ì¹œêµ¬ë“¤ì˜ ì ‘ì†ê´€ë ¨ 메세지를 ë³´ì—¬ì¤ë‹ˆë‹¤. On Off
/loginout: Shows guildsmen and friends online status. On Off
*/
MSG_EXPLAIN_LOGINOUT = 0x413,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¹œêµ¬ë“¤ì˜ ì ‘ì†ê´€ë ¨ 메세지를 ëŒ€í™”ì°½ì— í‘œì‹œí•©ë‹ˆë‹¤. [/li ON]
Display online status of friends in Chat Window. [/li ON]
*/
MSG_LOGINOUT_ON = 0x414,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¹œêµ¬ë“¤ì˜ ì ‘ì†ê´€ë ¨ 메세지를 ëŒ€í™”ì°½ì— í‘œì‹œí•˜ì§€ì•ŠìŠµë‹ˆë‹¤. [/li OFF]
Do not display online status of friends in Chat Window. [/li OFF]
*/
MSG_LOGINOUT_OFF = 0x415,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ 실행중입니다.
It is already running.
*/
MSG_SGP_CODE_ALREADY_RUNNING = 0x416,
-/*20171018 to 20180627
+/*20171018 to 20180711
매í¬ë¡œ ì‚¬ìš©ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Use of Macro program has been detected.
*/
MSG_SGP_CODE_DETECTED_MACRO = 0x417,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í”¼ë“œí•´í‚¹ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Use of Speed hack has been detected.
*/
MSG_SGP_CODE_DETECTED_SPEEDHACK = 0x418,
-/*20171018 to 20180627
+/*20171018 to 20180711
API í›„í‚¹ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
API Hooking has been detected.
*/
MSG_SGP_CODE_DETECTED_APIHOOK = 0x419,
-/*20171018 to 20180627
+/*20171018 to 20180711
메시지 í›„í‚¹ì´ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
Message Hooking has been detected.
*/
MSG_SGP_CODE_DETECTED_MSGHOOK = 0x41a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëª¨ë“ˆì´ ë³€ì¡° ë˜ëŠ” ì†ìƒë˜ì—ˆê±°ë‚˜ ë²„ì „ì´ ì¼ì¹˜í•˜ì§€ 않습니다.
Module has been modified or damaged or its version does not match.
*/
MSG_SGP_CODE_NOT_EQUALENCRYPTEDDATA = 0x41b,
-/*20171018 to 20180627
+/*20171018 to 20180711
(태국)귀하는 게임방 과금으로 ë¡œê·¸ì¸ í•˜ì…¨ìŠµë‹ˆë‹¤.
(Thailand) You have logged in game with PC cafe payment.
*/
MSG_BILLING_PCB = 0x41c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì „
Prev
*/
MSG_PREV_PAGE = 0x41d,
-/*20171018 to 20180627
+/*20171018 to 20180711
다ìŒ
Next
*/
MSG_NEXT_PAGE = 0x41e,
-/*20171018 to 20180627
+/*20171018 to 20180711
경매
Auction
*/
MSG_AUCTION = 0x41f,
-/*20171018 to 20180627
+/*20171018 to 20180711
물품보기
Product List
*/
MSG_AUCTION_VIEW = 0x420,
-/*20171018 to 20180627
+/*20171018 to 20180711
등ë¡í•˜ê¸°
Register
*/
MSG_AUCTION_ADD = 0x421,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ 진행ìƒíƒœ
Sale Status
*/
MSG_AUCTION_SELL = 0x422,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매 진행ìƒíƒœ
Purchase Status
*/
MSG_AUCTION_BUY = 0x423,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ
Item
*/
MSG_ITEM2 = 0x424,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œëª…
Name
*/
MSG_ITEM_NAME2 = 0x425,
-/*20171018 to 20180627
+/*20171018 to 20180711
가격 / 즉시구입가격
Current Bid / Max Bid
*/
MSG_ITEM_PRICE = 0x426,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ìž
Seller
*/
MSG_SELLER = 0x427,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매ìž
Buyer
*/
MSG_BUYER = 0x428,
-/*20171018 to 20180627
+/*20171018 to 20180711
종료시간
End Time
*/
MSG_FINISH_TIME = 0x429,
-/*20171018 to 20180627
+/*20171018 to 20180711
%mì›” %dì¼ %Hì‹œ
%m %d %H
*/
MSG_TIME_TYPE = 0x42a,
-/*20171018 to 20180627
+/*20171018 to 20180711
시간설정
Time (Hr)
*/
MSG_SET_TIME = 0x42b,
-/*20171018 to 20180627
+/*20171018 to 20180711
수수료
Fee
*/
MSG_CHARGE = 0x42c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê²€ìƒ‰ëœ ì•„ì´í…œì´ 없습니다.
No items found in search.
*/
MSG_NOTHING_SEARCH_ITEM = 0x42d,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 íŒë§¤ì¤‘ì¸ ì•„ì´í…œì´ 없습니다.
Your Sale List is empty.
*/
MSG_NOTHING_SEARCH_SELL_ITEM = 0x42e,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 êµ¬ë§¤ì¤‘ì¸ ì•„ì´í…œì´ 없습니다.
Your Purchase List is empty.
*/
MSG_NOTHING_SEARCH_BUY_ITEM = 0x42f,
-/*20171018 to 20180627
+/*20171018 to 20180711
경매정보가 정확하지 않습니다.
Auction Information is incorrect or incomplete.
*/
MSG_ERROR_AUCTION_ITEM_INFO = 0x430,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê²½ë§¤ì— ë“±ë¡í•  ì•„ì´í…œ ì •ë³´ê°€ 없습니다.
You must drag and drop an item from your Inventory into the Register Window to begin a new auction.
*/
MSG_NOTHING_AUCTION_ITEM_INFO = 0x431,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ 등ë¡ëœ 경매입니다.
The auction has already been registered.
*/
MSG_ERROR_ADD_AUCTION = 0x432,
-/*20171018 to 20180627
+/*20171018 to 20180711
제시가격
Starting Bid
*/
MSG_PRICE = 0x433,
-/*20171018 to 20180627
+/*20171018 to 20180711
구입í¬ë§ê°€ê²©
Current Bid
*/
MSG_PRICE2 = 0x434,
-/*20171018 to 20180627
+/*20171018 to 20180711
즉시구입가격
Buy Now Price
*/
MSG_PRICE3 = 0x435,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재소지제니
Your Current Zeny
*/
MSG_PRICE4 = 0x436,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재최고가격
Highest Bid
*/
MSG_PRICE5 = 0x437,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì „입찰가격
Previous Bid
*/
MSG_PRICE6 = 0x438,
-/*20171018 to 20180627
+/*20171018 to 20180711
추가입찰가격
Next Bid
*/
MSG_PRICE7 = 0x439,
-/*20171018 to 20180627
+/*20171018 to 20180711
구입하시겠습니까?
Press buy to confirm.
*/
MSG_BUY_ACTION_ITEM = 0x43a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ê°€ê²©ì— íŒë§¤í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Would you like to sell this item?
*/
MSG_SELL_ACTION_ITEM = 0x43b,
-/*20171018 to 20180627
+/*20171018 to 20180711
입찰하기
Place Bid
*/
MSG_BUY_AUCTION = 0x43c,
-/*20171018 to 20180627
+/*20171018 to 20180711
즉시구매하기
Buy Now
*/
MSG_BUY_AUCTION2 = 0x43d,
-/*20171018 to 20180627
+/*20171018 to 20180711
경매종료하기
End the Auction
*/
MSG_BUY_AUCTION3 = 0x43e,
-/*20171018 to 20180627
+/*20171018 to 20180711
재입찰하기
Place another Bid
*/
MSG_FINISH_AUCTION = 0x43f,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ê²½ë§¤ì— ëŒ€í•œ ìž…ì°°ì´ ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
You have placed a bid.
*/
MSG_RESULT_BUY_TRUE = 0x440,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ê²½ë§¤ì— ëŒ€í•œ ìž…ì°°ì´ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
You have failed to place a bid.
*/
MSG_RESULT_BUY_FALSE = 0x441,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니가 충분하지 않습니다.
You do not have enough zeny.
*/
MSG_RESULT_BUY_FALSE_MONEY = 0x442,
-/*20171018 to 20180627
+/*20171018 to 20180711
방어구
Armors
*/
MSG_EQUIP = 0x443,
-/*20171018 to 20180627
+/*20171018 to 20180711
카드
Card
*/
MSG_CARD = 0x444,
-/*20171018 to 20180627
+/*20171018 to 20180711
기타
Other
*/
MSG_ETC = 0x445,
-/*20171018 to 20180627
+/*20171018 to 20180711
경매번호
Bid
*/
MSG_AUCTION_NUM = 0x446,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색
Search
*/
MSG_AUCTION_SEARCH = 0x447,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 경매를 종료했습니다.
You have ended the auction.
*/
MSG_RESULT_MY_SELL_STOP_TRUE = 0x448,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 경매를 종료 할 수 없습니다.
You cannot end the auction.
*/
MSG_RESULT_MY_SELL_STOP_FALSE = 0x449,
-/*20171018 to 20180627
+/*20171018 to 20180711
경매 번호가 정확하지 않습니다.
Bid Number is incorrect.
*/
MSG_RESULT_AUCTION_ID_FALSE = 0x44a,
-/*20171018 to 20180627
+/*20171018 to 20180711
받는ì´
To
*/
MSG_SENDER = 0x44b,
-/*20171018 to 20180627
+/*20171018 to 20180711
제 목
Title
*/
MSG_TITLE2 = 0x44c,
-/*20171018 to 20180627
+/*20171018 to 20180711
새 ë©”ì¼ì´ ë„착하였습니다.
You have received a message in the mail.
*/
MSG_NEW_MAIL = 0x44d,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색중입니다.
Searching...
*/
MSG_SEARCHING_ITEM = 0x44e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë” ì´ìƒ 경매 등ë¡í•  수 없습니다. 경매 등ë¡ì€ 최대 5개까지 가능합니다.
You cannot register more than 5 items in an auction at a time.
*/
MSG_AUCTION_ADD_OVER = 0x44f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë” ì´ìƒ 경매 ë¬¼í’ˆì— ìž…ì°°í•  수 없습니다. 경매 물품 ìž…ì°°ì€ ìµœëŒ€ 5개까지 가능합니다.
You cannot place more than 5 bids at a time.
*/
MSG_RESULT_BUY_OVER = 0x450,
-/*20171018 to 20180627
+/*20171018 to 20180711
삭제하려는 ë©”ì¼ì— 수령하지 ì•Šì€ ì•„ì´í…œì´ 있습니다.
Please accept all items from your mail before deleting.
*/
MSG_MAIL_DELETE_ERROR = 0x451,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ì œëª©ì„ ìž…ë ¥í•˜ì—¬ 주십시오.
Please enter a title.
*/
MSG_MAIL_SEND_ERROR = 0x452,
-/*20171018 to 20180627
+/*20171018 to 20180711
/shopping : í´ë¦­ 한번으로 ìƒì ì„ ì—´ê³  ìƒì ì´ë¦„ 오른쪽 í´ë¦­ìœ¼ë¡œ ìƒì ì„ 닫습니다 On Off
/shopping: Enables you to open a shop with a single left-click and close your shop with a single right-click. On Off
*/
MSG_EXPLAIN_SHOPPING = 0x453,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ë¦­ 한번으로 ìƒì ì„ ì—´ê³  ìƒì ì´ë¦„ì„ ì˜¤ë¥¸ìª½ í´ë¦­í•´ì„œ ìƒì ì„ ë‹«ì„수있습니다. [/sh ON]
You can now open a shop with a single left-click and close your shop with a single right-click. [sh ON].
*/
MSG_SHOPPING_ON = 0x454,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë”블í´ë¦­ 으로 ìƒì ì„ 열게ë©ë‹ˆë‹¤. [/sh OFF]
You can open a shop by double-clicking. [/sh OFF]
*/
MSG_SHOPPING_OFF = 0x455,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ì„ 보내려면, 제니 ìž…ë ¥ì„ ì™„ë£Œí•´ì•¼ 합니다.
Please enter zeny amount before sending mail.
*/
MSG_MAIL_SEND_ERROR2 = 0x456,
-/*20171018 to 20180627
+/*20171018 to 20180711
경매 수수료가 부족합니다.
You do not have enough zeny to pay the Auction Fee.
*/
MSG_ADD_MONEY_FALSE = 0x457,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒíƒœë³´ê¸°
View Status
*/
MSG_HOMUN_SHOWINFO = 0x458,
-/*20171018 to 20180627
+/*20171018 to 20180711
먹ì´ì£¼ê¸°
Feed
*/
MSG_HOMUN_FEEDING = 0x459,
-/*20171018 to 20180627
+/*20171018 to 20180711
대기
Stand By
*/
MSG_HOMUN_WAITING = 0x45a,
-/*20171018 to 20180627
+/*20171018 to 20180711
슈í¼ë…¸ë¹„스(남)
Super Novice (Male)
*/
MSG_JOB_SUPERNOVICE_M = 0x45b,
-/*20171018 to 20180627
+/*20171018 to 20180711
슈í¼ë…¸ë¹„스(ì—¬)
Super Novice (Female)
*/
MSG_JOB_SUPERNOVICE_F = 0x45c,
-/*20171018 to 20180627
+/*20171018 to 20180711
태권소년
Taekwon Boy
*/
MSG_JOB_TAEKWON_M = 0x45d,
-/*20171018 to 20180627
+/*20171018 to 20180711
태권소녀
Taekwon Girl
*/
MSG_JOB_TAEKWON_F = 0x45e,
-/*20171018 to 20180627
+/*20171018 to 20180711
권성(남)
Taekwon Master (Male)
*/
MSG_KWONSUNG_M = 0x45f,
-/*20171018 to 20180627
+/*20171018 to 20180711
권성(여)
Taekwon Master (Female)
*/
MSG_KWONSUNG_F = 0x460,
-/*20171018 to 20180627
+/*20171018 to 20180711
소울ë§ì»¤(남)
Soul Linker (Male)
*/
MSG_SOULLINGKER_M = 0x461,
-/*20171018 to 20180627
+/*20171018 to 20180711
소울ë§ì»¤(ì—¬)
Soul Linker (Female)
*/
MSG_SOULLINGKER_F = 0x462,
-/*20171018 to 20180627
+/*20171018 to 20180711
PC방요금제로 2ê°œì´ìƒì˜ ê³„ì •ì´ ì ‘ì†ë˜ê³ ìžˆìŠµë‹ˆë‹¤. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
Please check the connection, more than 2 accounts are connected with Internet Cafe Time Plan.
*/
MSG_BAN_PC_IP_UNFAIR = 0x463,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 월정액 요금제 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤. (남ì€ê¸°ê°„ : %dì¼)
Your account is using monthly payment. (Remaining day: %d day)
*/
MSG_BILLING_1 = 0x464,
-/*20171018 to 20180627
+/*20171018 to 20180711
귀하는 정량 요금제 ì‚¬ìš©ìž ìž…ë‹ˆë‹¤. (남ì€ì‹œê°„ : %d시간 %분 %ì´ˆ)
Your account is using time limited. (Remaining time: %d hour %d minute %d second)
*/
MSG_BILLING_2 = 0x465,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì•„ì´í…œì€ ë©”ì¼ì— 첨부 할수 없는 ì•„ì´í…œìž…니다.
This item cannot be mailed.
*/
MSG_MAIL_ITEM_ADD_FAILED = 0x466,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë”ì´ìƒ ì•„ì´í…œì„ 가질수 없습니다. ì•„ì´í…œì€ ë©”ì¼ë¡œ 보관하겠습니다.
You cannot accept any more items. Please try again later.
*/
MSG_MAIL_ADD_ITEM_OVER_FAILURE = 0x467,
-/*20171018 to 20180627
+/*20171018 to 20180711
남성
Male
*/
MSG_PTSEX1 = 0x468,
-/*20171018 to 20180627
+/*20171018 to 20180711
여성
Female
*/
MSG_PTSEX2 = 0x469,
-/*20171018 to 20180627
+/*20171018 to 20180711
새로운 유저입니다
New User.
*/
MSG_PT_NEWUSER = 0x46a,
-/*20171018 to 20180627
+/*20171018 to 20180711
E-mailì€ ìºë¦­í„°ë¥¼ 지울때 필요합니다.
E-mail address is required to delete a character.
*/
MSG_PT_ACINFO = 0x46b,
-/*20171018 to 20180627
+/*20171018 to 20180711
정확한 형ì‹ìœ¼ë¡œ 입력해 주세요.
Please enter the correct information.
*/
MSG_PT_ACINFO2 = 0x46c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ í‚¤ë¥¼ 사용하세요
Please use this key.
*/
MSG_PT_NEWKEYINFO = 0x46d,
-/*20171018 to 20180627
+/*20171018 to 20180711
정확한 카드 패스워드를 다시 입력해주세요
Please enter the correct card password.
*/
MSG_PT_FAIL_CARDPASS = 0x46e,
-/*20171018 to 20180627
+/*20171018 to 20180711
PTì •ë³´
PT Info
*/
MSG_PTID1 = 0x46f,
-/*20171018 to 20180627
+/*20171018 to 20180711
PT_ID는 %s
PT_ID is %s
*/
MSG_PTID2 = 0x470,
-/*20171018 to 20180627
+/*20171018 to 20180711
NUM_ID는 %s
NUM_ID is %s
*/
MSG_PTID3 = 0x471,
-/*20171018 to 20180627
+/*20171018 to 20180711
잊지않게 주ì˜í•˜ì„¸ìš”
Please don't forget this information.
*/
MSG_PTID4 = 0x472,
-/*20171018 to 20180627
+/*20171018 to 20180711
1001
*/
MSG_PT_ERROR_1001 = 0x473,
-/*20171018 to 20180627
+/*20171018 to 20180711
1002
*/
MSG_PT_ERROR_1002 = 0x474,
-/*20171018 to 20180627
+/*20171018 to 20180711
1003
*/
MSG_PT_ERROR_1003 = 0x475,
-/*20171018 to 20180627
+/*20171018 to 20180711
1004
*/
MSG_PT_ERROR_1004 = 0x476,
-/*20171018 to 20180627
+/*20171018 to 20180711
1006
*/
MSG_PT_ERROR_1006 = 0x477,
-/*20171018 to 20180627
+/*20171018 to 20180711
1007
*/
MSG_PT_ERROR_1007 = 0x478,
-/*20171018 to 20180627
+/*20171018 to 20180711
1008
*/
MSG_PT_ERROR_1008 = 0x479,
-/*20171018 to 20180627
+/*20171018 to 20180711
1009
*/
MSG_PT_ERROR_1009 = 0x47a,
-/*20171018 to 20180627
+/*20171018 to 20180711
1012
*/
MSG_PT_ERROR_1012 = 0x47b,
-/*20171018 to 20180627
+/*20171018 to 20180711
1013
*/
MSG_PT_ERROR_1013 = 0x47c,
-/*20171018 to 20180627
+/*20171018 to 20180711
1014
*/
MSG_PT_ERROR_1014 = 0x47d,
-/*20171018 to 20180627
+/*20171018 to 20180711
1015
*/
MSG_PT_ERROR_1015 = 0x47e,
-/*20171018 to 20180627
+/*20171018 to 20180711
1019
*/
MSG_PT_ERROR_1019 = 0x47f,
-/*20171018 to 20180627
+/*20171018 to 20180711
1020
Navigation
*/
MSG_PT_ERROR_1020 = 0x480,
-/*20171018 to 20180627
+/*20171018 to 20180711
1021
*/
MSG_PT_ERROR_1021 = 0x481,
-/*20171018 to 20180627
+/*20171018 to 20180711
1023
*/
MSG_PT_ERROR_1023 = 0x482,
-/*20171018 to 20180627
+/*20171018 to 20180711
1024
*/
MSG_PT_ERROR_1024 = 0x483,
-/*20171018 to 20180627
+/*20171018 to 20180711
1025
*/
MSG_PT_ERROR_1025 = 0x484,
-/*20171018 to 20180627
+/*20171018 to 20180711
1027
*/
MSG_PT_ERROR_1027 = 0x485,
-/*20171018 to 20180627
+/*20171018 to 20180711
1028
*/
MSG_PT_ERROR_1028 = 0x486,
-/*20171018 to 20180627
+/*20171018 to 20180711
10
*/
MSG_PT_ERROR_10 = 0x487,
-/*20171018 to 20180627
+/*20171018 to 20180711
20
*/
MSG_PT_ERROR_20 = 0x488,
-/*20171018 to 20180627
+/*20171018 to 20180711
40
*/
MSG_PT_ERROR_40 = 0x489,
-/*20171018 to 20180627
+/*20171018 to 20180711
50
*/
MSG_PT_ERROR_50 = 0x48a,
-/*20171018 to 20180627
+/*20171018 to 20180711
60
*/
MSG_PT_ERROR_60 = 0x48b,
-/*20171018 to 20180627
+/*20171018 to 20180711
70
*/
MSG_PT_ERROR_70 = 0x48c,
-/*20171018 to 20180627
+/*20171018 to 20180711
80
*/
MSG_PT_ERROR_80 = 0x48d,
-/*20171018 to 20180627
+/*20171018 to 20180711
90
*/
MSG_PT_ERROR_90 = 0x48e,
-/*20171018 to 20180627
+/*20171018 to 20180711
100
*/
MSG_PT_ERROR_100 = 0x48f,
-/*20171018 to 20180627
+/*20171018 to 20180711
110
*/
MSG_PT_ERROR_110 = 0x490,
-/*20171018 to 20180627
+/*20171018 to 20180711
30í¬ì¸íŠ¸ë¥¼ 받으시겠습니까?
Do you want to receive 30 points?
*/
MSG_PT_POINT1 = 0x491,
-/*20171018 to 20180627
+/*20171018 to 20180711
30í¬ì¸íŠ¸(5시간)ì´ ì¶©ì „ë˜ì—ˆìŠµë‹ˆë‹¤
30 points (5 hours) have been added.
*/
MSG_PT_POINT2 = 0x492,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°ì •ë˜ì§€ ì•Šì€ ì•„ì´í…œì€ ê²½ë§¤ì— ë“±ë¡í•  수 없습니다.
You cannot register Unidentified Items in auctions.
*/
MSG_AUCTION_ADD_ITEM_FAILURE = 0x493,
-/*20171018 to 20180627
+/*20171018 to 20180711
소비 ì•„ì´í…œì€ ê²½ë§¤ì— ë“±ë¡í•  수 없습니다.
You cannot register this Consumable Item in an auction.
*/
MSG_AUCTION_ADD_ITEM_FAILURE2 = 0x494,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ì°½ì„ 열려면 ì¹´íŠ¸ì°½ì„ ë‹«ì•„ 주십시요.
Please close the Cart Window to open the Mail Window.
*/
MSG_CLOSE_MERCHANTITEMWND = 0x495,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¹´íŠ¸ì°½ì„ ì—´ë ¤ë©´ ë©”ì¼ì°½ì„ ë‹«ì•„ 주십시요.
Please close the Mail Window to open the Cart Window.
*/
MSG_CLOSE_MAILWND = 0x496,
-/*20171018 to 20180627
+/*20171018 to 20180711
íƒ„í™˜ì´ ìž¥ì°©ë˜ì—ˆìŠµë‹ˆë‹¤.
Bullets have been equipped.
*/
MSG_MSG_BULLET_EQUIPMENT_SUCCESS = 0x497,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ì´ 반송ë˜ì—ˆìŠµë‹ˆë‹¤.
The mail has been returned to sender.
*/
MSG_MAIL_RETURN_SUCCESS = 0x498,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ì´ 존재하지 않습니다.
The mail no longer exists.
*/
MSG_MAIL_RETURN_FAILURE = 0x499,
-/*20171018 to 20180627
+/*20171018 to 20180711
한시간 ë™ì•ˆ, ë™ì¼í•œ IPë¡œ ì ‘ì†í•œ 유저가 30ê±´ ì´ìƒìž…니다. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
More than 30 players sharing the same IP have logged into the game for an hour. Please check this matter.
*/
MSG_BAN_PC_IP_COUNT_ALL = 0x49a,
-/*20171018 to 20180627
+/*20171018 to 20180711
한시간 ë™ì•ˆ, ë™ì¼í•œ IPë¡œ 10번 ì´ìƒ ì ‘ì†ë˜ì—ˆìŠµë‹ˆë‹¤. 확ì¸í›„ 다시 사용하시기 ë°”ëžë‹ˆë‹¤.
More than 10 connections sharing the same IP have logged into the game for an hour. Please check this matter.
*/
MSG_BAN_PC_IP_COUNT = 0x49b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê²Œìž„ì„ ìž¬ì‹œìž‘ 하십시오
Please restart the game.
*/
MSG_GAMEGUARD_RESTART = 0x49c,
-/*20171018 to 20180627
+/*20171018 to 20180711
용병정보 - ì•„ì³íƒ€ìž…
Mercenary: Archer
*/
MSG_MER_INFO_TYPE_ARCHER = 0x49d,
-/*20171018 to 20180627
+/*20171018 to 20180711
용병정보 - 검사타입
Mercenary: Swordman
*/
MSG_MER_INFO_TYPE_SWORDMAN = 0x49e,
-/*20171018 to 20180627
+/*20171018 to 20180711
용병정보 - 창병타입
Mercenary: Spearman
*/
MSG_MER_INFO_TYPE_LANCER = 0x49f,
-/*20171018 to 20180627
+/*20171018 to 20180711
삭제시간
Expiration
*/
MSG_LEFT_TIME = 0x4a0,
-/*20171018 to 20180627
+/*20171018 to 20180711
신뢰ë„
Loyalty
*/
MSG_MER_FRIENDLY = 0x4a1,
-/*20171018 to 20180627
+/*20171018 to 20180711
소환횟수
Summons
*/
MSG_MER_CALLCOUNT = 0x4a2,
-/*20171018 to 20180627
+/*20171018 to 20180711
Kill
*/
MSG_MER_KILL = 0x4a3,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŽ«ì´ ë°°ê°€ 고파서 ë‹¹ì‹ ì„ ì›ë§í•˜ê³  있다는 ëŠë‚Œì´ 든다.
You can feel hatred from your pet for neglecting to feed it.
*/
MSG_PET_STARVING = 0x4a4,
-/*20171018 to 20180627
+/*20171018 to 20180711
[POINT] í…Œì´ë°ë¯¸ì…˜ 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[POINT] You earned %d Taming Mission Ranking Points, giving you a total of %d points.
*/
MSG_GANGSI_POINT = 0x4a5,
-/*20171018 to 20180627
+/*20171018 to 20180711
[í…Œì´ë°ë¯¸ì…˜] Target Monster : %s
[Taming Mission] Target Monster: %s
*/
MSG_GANGSI_MISSION = 0x4a6,
-/*20171018 to 20180627
+/*20171018 to 20180711
/hunting : 사냥 목ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
/hunting: You can check the your hunting list.
*/
MSG_EXPLAIN_HUNTING = 0x4a7,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. %s는 몇 스킬 ì°ìœ¼ì…¨ë‚˜ìš”?
[Angel's Question] Please tell me, how many %s skills do you have?
*/
MSG_DEATH_Q01 = 0x4a8,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. 소지하시고있는 제니를 십만으로 나누면 얼마가 ë˜ì‹œë‚˜ìš”?
[Angel's Question] Please tell me, how much zeny you'll have if you divide it by 100,000?
*/
MSG_DEATH_Q02 = 0x4a9,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. ì˜¤ëŠ˜ì´ ëª‡ì¼ì´ì‹ ì§€ 아시나요?
[Angel's Question] Please tell me, what is today's date?
*/
MSG_DEATH_Q03 = 0x4aa,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] 소녀ì—게 가르ì³ì£¼ì‹œì–´ìš”. %sì€ ì§€ê¸ˆ 몇ì´ì‹ ê°€ìš”?
[Angel's Question] Please tell me, how many %s do you have?
*/
MSG_DEATH_Q04 = 0x4ab,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 슈노, 태권계열, ë¬´ë‚™ê³„ì—´ì„ ë‹´ë‹¹í•˜ê³ ìžˆëŠ” SiYeonì”¨ì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in SiYeon's name?
*/
MSG_DEATH_Q05 = 0x4ac,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 귀엽고 ì–´ì—¬ìœ ë¼ê·¸ë‚˜ë¡œí¬ì˜ ížˆë¡œì¸ Munakì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Munak's name?
*/
MSG_DEATH_Q06 = 0x4ad,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 제가 ì–´ì—¬ë»í•˜ëŠ” Bongunì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in Bongun's name?
*/
MSG_DEATH_Q07 = 0x4ae,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ì €í¬ê°€ 존재하는 온ë¼ì¸ì„¸ê³„ Ragnarokì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, Ragnarok?
*/
MSG_DEATH_Q08 = 0x4af,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 언제나 Onlineìƒíƒœì¸ 천사ë™ë£Œë“¤ì€ í°íž˜ì´ ë˜ì–´ì£¼ì£ . Onlineì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, online?
*/
MSG_DEATH_Q09 = 0x4b0,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. 죽ìŒë„ ë‘려워하지않는 ê¸°ì‚¬ë“¤ì„ ìƒì§•í•˜ëŠ” ë‹¨ì–´ì¸ Deathì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, death?
*/
MSG_DEATH_Q10 = 0x4b1,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ê¸°ì‚¬ë“¤ì€ ë„ˆë¬´ 멋진다고 ìƒê°í•´ìš”. Knightì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, knight?
*/
MSG_DEATH_Q11 = 0x4b2,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ì¤‘ë ¥ì„ ëœ»í•˜ëŠ” ë‹¨ì–´ì¸ Gravityì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, gravity?
*/
MSG_DEATH_Q12 = 0x4b3,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ì–´ë‘ ì†ì—ì„œë„ ë°ê²Œ 사는게 중요하지요. Darkì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, dark?
*/
MSG_DEATH_Q13 = 0x4b4,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ì§ˆë¬¸] A는 1ì´ê³  Z는 26ì´ì–´ìš”. ë­ë“ ì§€ 수집하는 Collectorì˜ ì•ŒíŒŒë²³ì„ ë”하면 ëª‡ì´ ë˜ë‚˜ìš”?
[Angel's Question] If A is 1, B is 2, and so on, and if Z is 26, what number do you get if you add the letters in the word, collecter?
*/
MSG_DEATH_Q14 = 0x4b5,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ëŒ€ë‹µ] 소녀ì—게 정확한 ì‚¬ì‹¤ì„ ê°€ë¥´ì³ì£¼ì…”ì„œ ê°ì‚¬í•˜ì˜µë‹ˆë‹¤.
[Angel's Answer] Thank you for letting me know~
*/
MSG_DEATH_R01 = 0x4b6,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ëŒ€ë‹µ] 사랑스러우신 분ì´ì‹œêµ°ìš”. 소녀 ê°íƒ„했사옵니다.
[Angel's Answer] I'm very pleased with your answer. You are a splendid adventurer.
*/
MSG_DEATH_R02 = 0x4b7,
-/*20171018 to 20180627
+/*20171018 to 20180711
[천사ì˜ëŒ€ë‹µ] 소녀 실ë§í–ˆì‚¬ì˜µë‹ˆë‹¤.
[Angel's Answer] You've disappointed me...
*/
MSG_DEATH_R05 = 0x4b8,
-/*20171018 to 20180627
+/*20171018 to 20180711
[POINT] 랭킹í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You earned %d Ranking Points, giving you a total of %d Ranking Points.
*/
MSG_DEATH_POINT = 0x4b9,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ì˜ ì†Œì§€ ìºì‹œ : %d ìºì‹œ
[%s]'s Points: %d Points
*/
MSG_POINT_SHOP = 0x4ba,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì„ íƒí•˜ì§€ ì•Šì€ ìºë¦­í„°ëŠ” ì‚­ì œ ë©ë‹ˆë‹¤. 완료하시겠습니까?
Unselected Characters will be deleted. Continue?
*/
MSG_CONFIRM_SELECT_CHARACTERS = 0x4bb,
-/*20171018 to 20180627
+/*20171018 to 20180711
9ê°œ ì´ìƒ ì„ íƒí•˜ì‹¤ 수 없습니다.
You cannot select more than 8.
*/
MSG_ERROR_SELECT_CHARACTERS = 0x4bc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°ëª…ì„ '%s' (으)ë¡œ 변경하시겠습니까?
Do you want to change your name to '%s'?
*/
MSG_CONFIRM_TO_CHANGE_NAME = 0x4bd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°ëª…ì´ ì„±ê³µì ìœ¼ë¡œ 변경ë˜ì—ˆìŠµë‹ˆë‹¤.
Character Name has been changed successfully.
*/
MSG_CHANGE_NAME_SUCCESS = 0x4be,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°ëª… ë³€ê²½ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
You have failed to change this character's name.
*/
MSG_CHANGE_NAME_FAILURE = 0x4bf,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•œ ë²ˆì— í•œ ì¢…ë¥˜ì˜ ì•„ì´í…œë§Œ 구매할 수 있습니다.
You can purchase only one kind of item at a time.
*/
MSG_CAN_BUY_ONLY_ONEITEM = 0x4c0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°ê°€ í•œê°œë„ ì„ íƒë˜ì§€ 않았습니다. 반드시 한개 ì´ìƒì˜ ìºë¦­í„°ë¥¼ ì„ íƒí•˜ì—¬ì•¼ 합니다.
No characters were selected. You must select at least one character.
*/
MSG_NO_SELECT_CHARACTERS = 0x4c1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ ìºë¦­í„°ëª…ì„ ë³€ê²½í•œ ì ì´ 있습니다. ë” ì´ìƒ 변경 í•  수 없습니다.
This character's name has already been changed. You cannot change a character's name more than once.
*/
MSG_ALREADY_CHANGED_NAME = 0x4c2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì‚¬ìš©ìž ì •ë³´ê°€ 정확하지 않습니다.
User Information is not correct.
*/
MSG_NOTREGISTED_USER = 0x4c3,
-/*20171018 to 20180627
+/*20171018 to 20180711
다른 사용ìžê°€ ê°™ì€ ìºë¦­í„° ëª…ì„ ë¨¼ì € 사용하였습니다. 다른 ìºë¦­í„°ëª…ì„ ì‚¬ìš©í•˜ì—¬ 주십시요.
Another user is using this character name, so please select another one.
*/
MSG_DUPLICATED_CHAR_NAME = 0x4c4,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티장 ê¶Œí•œì´ ì—†ì–´ 파티ì›ì„ 소환하지 못했습니다.
The party member was not summoned because you are not the party leader.
*/
MSG_CANNOT_PARTYCALL = 0x4c5,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 맵ì—는 ì†Œí™˜ë  íŒŒí‹°ì›ì´ 존재하지 않습니다.
There is no party member to summon in the current map.
*/
MSG_NO_PARTYMEM_ON_THISMAP = 0x4c6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ì§€ì—­ì—ì„  ë³´ìŠ¤ëª¬ìŠ¤í„°ì˜ í”ì ì„ ì°¾ì„ ìˆ˜ê°€ 없습니다.
You cannot find any trace of a Boss Monster in this area.
*/
MSG_NOTFIND_BOSSMON = 0x4c7,
-/*20171018 to 20180627
+/*20171018 to 20180711
보스 몬스터 '%s'(ì´)ê°€ %d시간 %d분 í›„ì— ë“±ìž¥í•©ë‹ˆë‹¤.
Boss Monster, '%s' will appear in %02d hour(s) and %02d minute(s).
*/
MSG_APPEARANCE_TIME_OF_BOSSMON = 0x4c8,
-/*20171018 to 20180627
+/*20171018 to 20180711
보스 몬스터 '%s'ì˜ ìœ„ì¹˜ê°€ ë¯¸ë‹ˆë§µì— í‘œì‹œë©ë‹ˆë‹¤.
The location of Boss Monster, '%s', will be displayed on your Mini-Map.
*/
MSG_SHOW_POSITION_OF_BOSSMON = 0x4c9,
-/*20171018 to 20180627
+/*20171018 to 20180711
'%s'를 개봉 하시겠습니까? ^ff0000ìƒìžë¥¼ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.^000000 한번 개봉 ëœ ì•„ì´í…œì€ 창고 저장 ì™¸ì˜ ë‹¤ë¥¸ ì´ë™ì€ 불가하며 임대 ì•„ì´í…œì€ 창고 ì €ìž¥ë„ ë¶ˆê°€í•©ë‹ˆë‹¤. 한정 ì•„ì´í…œì€ 거래 ë° ì´ë™ì´ 가능 합니다. ë™ì¼í•œ ì•„ì´í…œì„ 중복 사용하ë”ë¼ë„ 효과가 중첩ë˜ì§€ 않습니다.
Do you want to open '%s'? Once opened, the contents cannot be moved to other locations aside from the Kafra Storage. The item effect isn't doubled, even if the same items are used more than once.
*/
MSG_CONFIRM_TO_OPEN_CASH_ITEM = 0x4ca,
-/*20171018 to 20180627
+/*20171018 to 20180711
NPC가 존재하지 않아 구매가 실패하였습니다.
The Purchase has failed because the NPC does not exist.
*/
MSG_BUY_CASH_FAIL_NPC = 0x4cb,
-/*20171018 to 20180627
+/*20171018 to 20180711
부분 유료화 ì‹œìŠ¤í…œì´ ì •ìƒ ìž‘ë™í•˜ì§€ ì•Šì•„ 구매가 실패하였습니다.
The Purchase has failed because the Kafra Shop System is not working correctly.
*/
MSG_BUY_CASH_FAIL_SYSTEM = 0x4cc,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµí™˜ì¤‘ì—는 ì•„ì´í…œì„ 구매 í•  수 없습니다.
You cannot purchase items while you are in a trade.
*/
MSG_BUY_CASH_FAIL_EXCHANGE = 0x4cd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ì •ë³´ê°€ 정확하지 ì•Šì•„ 구매가 실패하였습니다.
The Purchase has failed because the Item Information was incorrect.
*/
MSG_BUY_CASH_FAIL_ITEM_ID = 0x4ce,
-/*20171018 to 20180627
+/*20171018 to 20180711
STRì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
STR has increased.
*/
MSG_ENST_STR = 0x4cf,
-/*20171018 to 20180627
+/*20171018 to 20180711
STRì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
STR has returned to normal.
*/
MSG_DSST_STR = 0x4d0,
-/*20171018 to 20180627
+/*20171018 to 20180711
AGIì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
AGI has increased.
*/
MSG_ENST_AGI = 0x4d1,
-/*20171018 to 20180627
+/*20171018 to 20180711
AGIì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
AGI has returned to normal.
*/
MSG_DSST_AGI = 0x4d2,
-/*20171018 to 20180627
+/*20171018 to 20180711
VITì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
VIT has increased.
*/
MSG_ENST_VIT = 0x4d3,
-/*20171018 to 20180627
+/*20171018 to 20180711
VITì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
VIT has returned to normal.
*/
MSG_DSST_VIT = 0x4d4,
-/*20171018 to 20180627
+/*20171018 to 20180711
INTì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
INT has increased.
*/
MSG_ENST_INT = 0x4d5,
-/*20171018 to 20180627
+/*20171018 to 20180711
INTì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
INT has returned to normal.
*/
MSG_DSST_INT = 0x4d6,
-/*20171018 to 20180627
+/*20171018 to 20180711
DEXì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
DEX has increased.
*/
MSG_ENST_DEX = 0x4d7,
-/*20171018 to 20180627
+/*20171018 to 20180711
DEXì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
DEX has returned to normal.
*/
MSG_DSST_DEX = 0x4d8,
-/*20171018 to 20180627
+/*20171018 to 20180711
LUKì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
LUK has increased.
*/
MSG_ENST_LUK = 0x4d9,
-/*20171018 to 20180627
+/*20171018 to 20180711
LUKì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
LUK has returned to normal.
*/
MSG_DSST_LUK = 0x4da,
-/*20171018 to 20180627
+/*20171018 to 20180711
íšŒí”¼ìœ¨ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Flee Rate (Flee) has increased.
*/
MSG_ENST_AVOIDANCE = 0x4db,
-/*20171018 to 20180627
+/*20171018 to 20180711
íšŒí”¼ìœ¨ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
Flee Rate has returned to normal.
*/
MSG_DSST_AVOIDANCE = 0x4dc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëª…ì¤‘ë¥ ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Accuracy Rate (Hit) has increased.
*/
MSG_ENST_HIT = 0x4dd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëª…ì¤‘ë¥ ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
Accuracy Rate has returned to normal.
*/
MSG_DSST_HIT = 0x4de,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¬ë¦¬í‹°ì»¬ í™•ë¥ ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
Critical Attack (Critical) has increased.
*/
MSG_ENST_CRITICALSUCCESSVALUE = 0x4df,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¬ë¦¬í‹°ì»¬ í™•ë¥ ì´ ì›ëž˜ëŒ€ë¡œ ëŒì•„왔습니다.
Critical Attack has returned to normal.
*/
MSG_DSST_CRITICALSUCCESSVALUE = 0x4e0,
-/*20171018 to 20180627
+/*20171018 to 20180711
30분간 ì–»ì„ ìˆ˜ 있는 경험치가 50%% ì¦ê°€í•©ë‹ˆë‹¤.
You will receive 1.5 times more EXP from hunting monsters for the next 30 minutes.
*/
MSG_PLUSEXP = 0x4e1,
-/*20171018 to 20180627
+/*20171018 to 20180711
30분내 사ë§ì‹œ 1íšŒì— í•œí•´ 경험치 ê°ì†Œê°€ ì¼ì–´ë‚˜ì§€ 않습니다.
This character will not receive any EXP penalty if killed within the next 30 minutes.
*/
MSG_DDEATHPENALTY = 0x4e2,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ 30분간 2ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Regular item drops from monsters will be doubled for the next 30 minutes.
*/
MSG_RECEIVEITEM = 0x4e3,
-/*20171018 to 20180627
+/*20171018 to 20180711
10분간 맵 ë‚´ì— ì¶œí˜„ 가능한 보스 ëª¬ìŠ¤í„°ì— ëŒ€í•œ 정보를 안내해 드립니다.
Boss Monster Map Information for the next 10 minutes.
*/
MSG_BOSS_ALARM = 0x4e4,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.ë˜í•œ 구매시 ì‚¬ìš©ëœ ë¬´ë£Œìºì‹œëŠ” 청약철회시 반환ë˜ì§€ 않습니다.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
Do you really want to purchase this item? %d points will be deducted from your total Kafra Credit Points.
*/
MSG_BUY_RECONFIRM = 0x4e5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºì‹œê°€ 부족합니다.
You do not have enough Kafra Credit Points.
*/
MSG_BUY_CASH_FAIL_MONEY = 0x4e6,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000파기ì¼ì‹œ: %s^000000
^ff0000Expiration Date: %s^000000
*/
MSG_NOTICE_TO_DELETE_TIME = 0x4e7,
-/*20171018 to 20180627
+/*20171018 to 20180711
'%s'ì•„ì´í…œì˜ ì‚¬ìš©ì‹œê°„ì´ %d분 남았습니다.
The '%s' item will disappear in %d minutes.
*/
MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e8,
-/*20171018 to 20180627
+/*20171018 to 20180711
1분 후, '%s'ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ì—ì„œ ì‚­ì œë©ë‹ˆë‹¤.
'%s' item will be deleted from the Inventory in 1 minute.
*/
MSG_LAST_NOTICE_TO_REMAIN_ITEMUSINGTIME = 0x4e9,
-/*20171018 to 20180627
+/*20171018 to 20180711
'%s'ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ì—ì„œ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.
'%s' item has been deleted from the Inventory.
*/
MSG_NOTICE_TO_DELETE_ITEM = 0x4ea,
-/*20171018 to 20180627
+/*20171018 to 20180711
Input Number
*/
MSG_INPUT_NUMBER = 0x4eb,
-/*20171018 to 20180627
+/*20171018 to 20180711
%mì›” %dì¼ %Hì‹œ %M분
%m/%d %H:%M
*/
MSG_TIME_TYPE2 = 0x4ec,
-/*20171018 to 20180627
+/*20171018 to 20180711
보스 몬스터 '%s'(ì´)ê°€ ìž ì‹œ í›„ì— ë“±ìž¥í•©ë‹ˆë‹¤.
Boss Monster '%s' will appear within 1 minute.
*/
MSG_APPEARANCE_TIME_OF_BOSSMON2 = 0x4ed,
-/*20171018 to 20180627
+/*20171018 to 20180711
용병 스킬목ë¡
Mercenary Soldier Skill List
*/
MSG_MER_SKILLLIST = 0x4ee,
-/*20171018 to 20180627
+/*20171018 to 20180711
블랙젬스톤 1개와 백만제니를 소모하는 ë§ˆë²•ì˜ ì‹¤í–‰ì— ë™ì˜í•©ë‹ˆê¹Œ?
Do you agree to cast the magic spell that consumes 1 Black Gemstone and 1,000,000 Zeny?
*/
MSG_DA_EXP_ACCEPT = 0x4ef,
-/*20171018 to 20180627
+/*20171018 to 20180711
[POINT] 콜렉터랭킹 í¬ì¸íŠ¸ê°€ %d ìƒìŠ¹í•´ì„œ %d í¬ì¸íŠ¸ê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
[Point] You have gained %d Collector Rank Points; you now have a total of %d Collector Rank Points.
*/
MSG_COLLECTOR_POINT = 0x4f0,
-/*20171018 to 20180627
+/*20171018 to 20180711
[콜렉터랭킹] Target Item : %s
[Collector Rank] Target Item: %s
*/
MSG_COLLECTOR_MISSION = 0x4f1,
-/*20171018 to 20180627
+/*20171018 to 20180711
용병 ì‚¬ìš©ì‹œê°„ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤.
The mercenary contract has expired.
*/
MSG_MER_FINISH = 0x4f2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìš©ë³‘ì´ ì‚¬ë§í•˜ì˜€ìŠµë‹ˆë‹¤.
The mercenary has died.
*/
MSG_MER_DIE = 0x4f3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìš©ë³‘ì´ í•´ê³ ë˜ì—ˆìŠµë‹ˆë‹¤.
You have released the mercenary.
*/
MSG_MER_RETIRE = 0x4f4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìš©ë³‘ì´ ë„ë§ê°”습니다.
The mercenary has run away.
*/
MSG_MER_RUNAWAY = 0x4f5,
-/*20171018 to 20180627
+/*20171018 to 20180711
'%s'ì•„ì´í…œì˜ ì‚¬ìš©ì‹œê°„ì´ %dì´ˆ 남았습니다.
The '%s' item will disappear in %d seconds.
*/
MSG_NOTICE_TO_REMAIN_ITEMUSINGTIME2 = 0x4f6,
-/*20171018 to 20180627
+/*20171018 to 20180711
PCë°© 프리미엄 서비스 : 경험치 %d%% ì¦ê°€, ì‚¬ë§ íŽ˜ë„í‹° %d%% ê°ì†Œ, 드롭율 %d%% ì¦ê°€
IP Bonus: EXP/JEXP %d%%, Death Penalty %d%%, Item Drop %d%%
*/
MSG_PCBANG_EVENT = 0x4f7,
-/*20171018 to 20180627
+/*20171018 to 20180711
24시간 ì´í›„ì— ì‹œë„하세요
Symbols in Character Names are forbidden.
*/
MSG_LIMIT_CHAR_DELETE = 0x4f8,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìš©ë³‘ì´ ì‚¬ìš©ìž ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Mercenary will follow custom AI.
*/
MSG_MER_USERAI_ON = 0x4f9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìš©ë³‘ì´ ê¸°ë³¸ ì¸ê³µì§€ëŠ¥ìœ¼ë¡œ ë™ìž‘합니다.
Mercenary will follow basic AI.
*/
MSG_MER_USERAI_OFF = 0x4fa,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s님ì˜
%s's
*/
MSG_CHARACTER_NAME = 0x4fb,
-/*20171018 to 20180627
+/*20171018 to 20180711
%së‹˜ì´ %s ì•„ì´í…œì„ íšë“하셨습니다.
%s has acquired %s.
*/
MSG_ITEM_PICKUP_PARTY = 0x4fc,
-/*20171018 to 20180627
+/*20171018 to 20180711
공개 채팅 메시지 표시
Public Chat Display
*/
MSG_VIEW_CHAT_MSG = 0x4fd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·“ì†ë§ 채팅 메시지 표시
Whisper Display
*/
MSG_VIEW_WHISPER_MSG = 0x4fe,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 채팅 메시지 표시
Party Chat Display
*/
MSG_VIEW_PARTY_MSG = 0x4ff,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 채팅 메시지 표시
Guild Chat Display
*/
MSG_VIEW_GUILD_MSG = 0x500,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ íšë“/드롭 메시지 표시
Item Get/Drop Message Display
*/
MSG_VIEW_GET_ITEM_MSG = 0x501,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비 장착/해제 메시지 표시
Equipment On/Off Message Display
*/
MSG_VIEW_EQUIP_MSG = 0x502,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒíƒœì´ìƒ 메시지 표시
Abnormal Status Message Display
*/
MSG_VIEW_CHANGE_STATUS_MSG = 0x503,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì›ì˜ 주요 ì•„ì´í…œ íšë“ 메시지 표시
Party Member's Obtained Item Message Display
*/
MSG_VIEW_GET_ITEM_PARTY_MSG = 0x504,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì›ì˜ ìƒíƒœì´ìƒ 메시지 표시
Party Member's Abnormal Status Message Display
*/
MSG_VIEW_CHANGE_STATUS_PARTY_MSG = 0x505,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬 사용 실패 메시지 표시
Skill Failure Message Display
*/
MSG_VIEW_FAIL_SKILL_MSG = 0x506,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 설정 메시지 표시
Party Configuration Message Display
*/
MSG_VIEW_PARTY_SETUP_MSG = 0x507,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비 ì†ìƒ 메시지 표시
Damaged Equipment Message Display
*/
MSG_VIEW_DAMAGED_EQUIP_MSG = 0x508,
-/*20171018 to 20180627
+/*20171018 to 20180711
배틀 메시지 창 표시 정보
Battle Message Window Display
*/
MSG_BATTLE_CHAT_WND_OPTION = 0x509,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ì˜ ì†Œì§€ í•œì½”ì¸ : %d 한코ì¸
[%s]'s Han Coin: %d Han Coin
*/
MSG_POINT_SHOP_NHN = 0x50a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë°˜ 메시지
Public Log
*/
MSG_ST_CHAT = 0x50b,
-/*20171018 to 20180627
+/*20171018 to 20180711
배틀 메시지
Battle Log
*/
MSG_BT_CHAT = 0x50c,
-/*20171018 to 20180627
+/*20171018 to 20180711
íœ´ëŒ€í° ì¸ì¦.
Mobile Authentication
*/
MSG_PHONE_CONFIRM = 0x50d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì½ê¸°
Read
*/
MSG_BOOK_READ = 0x50e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìžë™ë‚­ë…
Auto Read
*/
MSG_BOOK_AUTOREAD = 0x50f,
-/*20171018 to 20180627
+/*20171018 to 20180711
책갈피
Bookmark
*/
MSG_BOOK_KEEP = 0x510,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì „페ì´ì§€
Previous
*/
MSG_BOOK_PREV = 0x511,
-/*20171018 to 20180627
+/*20171018 to 20180711
다ìŒíŽ˜ì´ì§€
Next
*/
MSG_BOOK_NEXT = 0x512,
-/*20171018 to 20180627
+/*20171018 to 20180711
닫기
Close
*/
MSG_BOOK_CLOSE = 0x513,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 장비가 ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
%s's Equipment has been damaged.
*/
MSG_DAMAGED_EQUIP = 0x514,
-/*20171018 to 20180627
+/*20171018 to 20180711
%së‹˜ì˜ %s ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
%s's %s was damaged.
*/
MSG_DAMAGED_EQUIP_PARTY = 0x515,
-/*20171018 to 20180627
+/*20171018 to 20180711
무기가
Weapon
*/
MSG_DAMAGED_WEAPON = 0x516,
-/*20171018 to 20180627
+/*20171018 to 20180711
갑옷ì´
Armor
*/
MSG_DAMAGED_BODY = 0x517,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ë ˆë²¨ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. 파티가입 불능
Insufficient Skill Level for joining a Party
*/
MSG_NOT_ENOUGH_SKILLLEVE5_2 = 0x518,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ì˜ ë¬´ë£Œ ìºì‹œ : %d ìºì‹œ
[%s]'s Free Cash: %d Cash
*/
MSG_POINT_SHOP2 = 0x519,
-/*20171018 to 20180627
+/*20171018 to 20180711
무료 ìºì‹œ 사용 :
Use Free Cash:
*/
MSG_USE_FREE_POINT = 0x51a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºì‹œ
Cash
*/
MSG_CASH = 0x51b,
-/*20171018 to 20180627
+/*20171018 to 20180711
http://payment.ro.hangame.com/index.asp
*/
MSG_SETTLE_WEB_URL_HANGAME = 0x51c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·¸ë¼ë¹„í‹° íšŒì› ì •ë³´ë™ì˜ë¥¼ 하셔야 사용할 수 있습니다.
You need to accept the Privacy Policy from Gravity in order to use the service.
*/
MSG_BAN_GRAVITY_MEM_AGREE = 0x51d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ìš©ì•½ê´€ì— ë™ì˜ë¥¼ 하셔야 본 서비스를 ì´ìš©í•˜ì‹¤ 수 있습니다.
You need to accept the User Agreement in order to use the service.
*/
MSG_BAN_GAME_MEM_AGREE = 0x51e,
-/*20171018 to 20180627
+/*20171018 to 20180711
입력하신 ì•„ì´ë””와 비밀번호가 등ë¡ëœ 정보와 ì¼ì¹˜í•˜ì§€ 않습니다.
Incorrect or nonexistent ID.
*/
MSG_BAN_HAN_VALID = 0x51f,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000본 ì•„ì´í…œì„ 구매 후 7ì¼ ì´ë‚´ì—는 청약 철회가 가능합니다. 다만, 7ì¼ì´ 지났거나 ì•„ì´í…œì„ 개봉하시면 청약 철회 대ìƒì—ì„œ 제외 ë©ë‹ˆë‹¤.ë˜í•œ 구매시 ì‚¬ìš©ëœ ë¬´ë£Œìºì‹œëŠ” 청약철회시 반환ë˜ì§€ 않습니다.^000000 ì •ë§ë¡œ ì•„ì´í…œì„ 구매하시겠습니까? 구매하실 경우 ì¼ë°˜ %dìºì‹œ, 무료 %dìºì‹œê°€ ì°¨ê°ë©ë‹ˆë‹¤.
Do you really want to purchase these items? You will spend %d Regular Cash Points and %d Free Cash Points.
*/
MSG_BUY_RECONFIRM2 = 0x520,
-/*20171018 to 20180627
+/*20171018 to 20180711
%dì‹œê°„ì´ ê²½ê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
%d hour(s) has passed.
*/
MSG_NOTIFY_PLAYTIME1 = 0x521,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d시간 %dë¶„ì´ ê²½ê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
%d hour(s) %d minute(s) has passed.
*/
MSG_NOTIFY_PLAYTIME2 = 0x522,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê²Œìž„ì„ ì¢…ë£Œí•˜ì„¸ìš”, 경험치 ë° ëª¨ë“ ê²Œ 50%ë¡œ ì¡°ì •ë©ë‹ˆë‹¤
Please stop playing the game, and take a break. Exp and other features will be reduced to 50%.
*/
MSG_WARNING_MSG1 = 0x523,
-/*20171018 to 20180627
+/*20171018 to 20180711
불건전 ì‹œê°„ëŒ€ì— ì ‘ì–´ë“¤ì—ˆìŠµë‹ˆë‹¤. ê²Œìž„ì„ ì¢…ë£Œí•˜ì„¸ìš”, 경험치 ë° ëª¨ë“ ê²Œ 0%ë¡œ ì¡°ì •ë©ë‹ˆë‹¤
Please stop playing the game since you'll need to rest. Exp and other features will be fixed to 0%.
*/
MSG_WARNING_MSG2 = 0x524,
-/*20171018 to 20180627
+/*20171018 to 20180711
퀘스트 목ë¡
Quest List
*/
MSG_QUESTWIN = 0x525,
-/*20171018 to 20180627
+/*20171018 to 20180711
RO SHOP
RO Shop
*/
MSG_RO_SHOP = 0x526,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì•Œìˆ˜ì—†ëŠ” ì´ìœ ë¡œ 실패 하였습니다.
Memorial Dungeon, '%s' is booked.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN = 0x527,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì˜ˆì•½ì¤‘ë³µìœ¼ë¡œ 실패 하였습니다.
Failed to book Memorial Dungeon, '%s'.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE = 0x528,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ê¶Œí•œë¬¸ì œë¡œ 실패 하였습니다.
Memorial Dungeon, '%s' is already booked.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_RIGHT = 0x529,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì¤‘ë³µìƒì„±ìš”청으로 실패하였습니다.
Memorial Dungeon, '%s' is created.
Please enter in 5 minutes.
*/
MSG_MDUNGEON_SUBSCRIPTION_ERROR_EXIST = 0x52a,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì·¨ì†Œê°€ 실패 하였습니다.
Failed to create Memorial Dungeon, '%s'.
Please try again.
*/
MSG_MDUNGEON_SUBSCRIPTION_CANCEL_FAIL = 0x52b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒëŒ€ë°©ì´ 파티 초대 거부 ìƒíƒœìž…니다.
The character blocked the party invitation.
*/
MSG_JOINMSG_REFUSE = 0x52c,
-/*20171018 to 20180627
+/*20171018 to 20180711
모든 파티 초대를 거부합니다.
Block all party invitations.
*/
MSG_INVITE_PARTY_REFUSE = 0x52d,
-/*20171018 to 20180627
+/*20171018 to 20180711
모든 파티 초대를 수ë½í•©ë‹ˆë‹¤.
Allow all party invitations.
*/
MSG_INVITE_PARTY_ACCEPT = 0x52e,
-/*20171018 to 20180627
+/*20171018 to 20180711
착용하시면 ì´ ì•„ì´í…œì€ ì˜êµ¬ ê·€ì†ë©ë‹ˆë‹¤. 착용하시겠습니까?
This item will be permanently bound to this character once it is equipped. Do you really want to equip this item?
*/
MSG_YOURITEM_EQUIP = 0x52f,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì´ ê·€ì†ë˜ì—ˆìŠµë‹ˆë‹¤.
%s is now permanently bound to this character.
*/
MSG_YOURITEM_EQUIPED = 0x530,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºì‹œê°€ 부족합니다. 무료 ìºì‹œ í¬ì¸íŠ¸ë¥¼ 입력해 주시기 ë°”ëžë‹ˆë‹¤.
You do not have enough Kafra Credit Points. Please enter whether you have free credit points.
*/
MSG_BUY_TO_FREE_POINT = 0x531,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 가입요청
Request to Join Party
*/
MSG_REQ_JOIN_PARTY3 = 0x532,
-/*20171018 to 20180627
+/*20171018 to 20180711
공성 정보 메시지 표시
Display WOE Info
*/
MSG_VIEW_SIEGE_INFO_MSG = 0x533,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼ë˜ì ¼ '%s'ì˜ ì˜ˆì•½ì´ ì·¨ì†Œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Memorial Dungeon %s's reservation has been canceled.
*/
MSG_MDUNGEON_SUBSCRIPTION_CANCEL_SUCCESS = 0x534,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼ë˜ì ¼ '%s' ìƒì„±ì— 실패하였습니다. 다시 ì‹œë„ í•˜ì„¸ìš”.
Failed to create Memorial Dungeon %s. Please try again.
*/
MSG_MDUNGEON_CREATE_FAIL = 0x535,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìž¥ì†Œì—서는 사용할 수 없는 스킬입니다.
This skill cannot be used within this area.
*/
MSG_IMPOSSIBLE_SKILL_AREA = 0x536,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìž¥ì†Œì—서는 사용할 수 없는 ì•„ì´í…œìž…니다.
This item cannot be used within this area.
*/
MSG_IMPOSSIBLE_USEITEM_AREA = 0x537,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼 ë˜ì „
Memorial Dungeon
*/
MSG_MEMORIAL_DUN = 0x538,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 대기중
%s in Standby
*/
MSG_MEMORIAL_DUN_WAITING = 0x539,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 입장 가능
%s Available
*/
MSG_MEMORIAL_DUN_READY = 0x53a,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 진행중
%s in Progress
*/
MSG_MEMORIAL_DUN_IN = 0x53b,
-/*20171018 to 20180627
+/*20171018 to 20180711
시간 ì•ˆì— ìž…ìž¥í•˜ì§€ ì•Šì•„ 메모리얼 ë˜ì „ì´ ì‚¬ë¼ì¡ŒìŠµë‹ˆë‹¤.
No one entered the Memorial Dungeon within its duration; the dungeon has disappeared.
*/
MSG_MEMORIAL_DUN_OUT1 = 0x53c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ìš©í•˜ì‹œë ¤ë©´ ì´ìš© ì‹ ì²­ì„ ì²˜ìŒë¶€í„° 다시 해주시기 ë°”ëžë‹ˆë‹¤.
Please apply for dungeon entry again to play in this dungeon.
*/
MSG_MEMORIAL_DUN_OUT2 = 0x53d,
-/*20171018 to 20180627
+/*20171018 to 20180711
대기 순위 : ^ff0000%d^000000
Your Standby Priority: ^ff0000%d^000000
*/
MSG_MEMORIAL_DUN_PRIORITY = 0x53e,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000%s^000000 ë‚´ì— ìž…ìž¥í•˜ì§€ ì•Šì„ ê²½ìš° 신청하신 ë˜ì „ì´ ì‚­ì œ ë©ë‹ˆë‹¤.
The requested dungeon will be removed if you do not enter within ^ff0000%s^000000.
*/
MSG_MEMORIAL_DUN_NOTIFY = 0x53f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë˜ì „ 미션 제한 시간 :
Dungeon Mission Time Limit:
*/
MSG_MEMORIAL_DUN_NOTIFY2 = 0x540,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼 ë˜ì „ ì˜ˆì•½ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon reservation has been canceled.
*/
MSG_MEMORIAL_DUN_CANCEL = 0x541,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼 ë˜ì „ì´ ìœ ì§€ 시간 ì œí•œì— ì˜í•´ 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon duration expired; it has been destroyed.
*/
MSG_MEMORIAL_DUN_LIVE_TIME_OUT = 0x542,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼 ë˜ì „ì´ ìž…ìž¥ 시간 ì œí•œì— ì˜í•´ 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon's entry time limit expired; it has been destroyed.
*/
MSG_MEMORIAL_DUN_ENTER_TIME_OUT = 0x543,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼 ë˜ì „ì´ ì‚­ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
The Memorial Dungeon has been removed.
*/
MSG_MEMORIAL_DUN_DESTROY_REQUEST = 0x544,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼 ë˜ì „ì— ì‹œìŠ¤í…œ 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤. ì •ìƒì ì¸ 게임 ì§„í–‰ì„ ìœ„í•´ 재접ì†ì„ 해주십시오.
A system error has occurred in the Memorial Dungeon. Please relog in to the game to continue playing.
*/
MSG_MEMORIAL_DUN_ERROR = 0x545,
-/*20171018 to 20180627
+/*20171018 to 20180711
사용할 수 없는 슬롯입니다.
This slot is not usable.
*/
MSG_FR_INVALID_SLOT = 0x546,
-/*20171018 to 20180627
+/*20171018 to 20180711
Base Levelì´ 15를 넘었습니다.
Your Base Level is over 15.
*/
MSG_FR_BASELVL = 0x547,
-/*20171018 to 20180627
+/*20171018 to 20180711
Job Levelì´ 15를 넘었습니다.
Your Job Level is over 15.
*/
MSG_FR_INVALID_JOBLV = 0x548,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당슬롯 ìºë¦­í„°ì— ì§ì—…êµ°ì˜ ìƒì¸ì´ë¯€ë¡œ ê²Œìž„ì„ í•  수 없습니다.
You cannot play the Merchant class character in this slot.
*/
MSG_FR_JOB = 0x549,
-/*20171018 to 20180627
+/*20171018 to 20180711
추후 사용예정
Not Yet Implemented
*/
MSG_FR_MAP = 0x54a,
-/*20171018 to 20180627
+/*20171018 to 20180711
만들수 있는 케릭터 ìŠ¬ë¡¯ì´ ì•„ë‹™ë‹ˆë‹¤.
You are not eligible to open the Character Slot.
*/
MSG_FR_ERR_MKCHAR_INVALID_SLOT = 0x54b,
-/*20171018 to 20180627
+/*20171018 to 20180711
삭제할 수 없는 케릭터 입니다.
This character cannot be deleted.
*/
MSG_FR_ERR_DELCHAR_INVALID_SLOT = 0x54c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒëŒ€ë°©ì˜ ìž¥ë¹„ì°½ì´ ê³µê°œë˜ì–´ 있지 않습니다.
This character's equipment information is not open to the public.
*/
MSG_OPEN_EQUIPEDITEM_REFUSED = 0x54d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž¥ë¹„ì°½ì„ ê³µê°œí•˜ì§€ 않습니다.
Equipment information not open to the public.
*/
MSG_OPEN_EQUIPEDITEM_REFUSE = 0x54e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž¥ë¹„ì°½ì„ ê³µê°œí•©ë‹ˆë‹¤.
Equipment information open to the public.
*/
MSG_OPEN_EQUIPEDITEM_ACCEPT = 0x54f,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)님 장비창 보기
Check %s's Equipment Info
*/
MSG_REQ_VIEW_OTHERUSER = 0x550,
-/*20171018 to 20180627
+/*20171018 to 20180711
%sì˜ ìž¥ì°©ì•„ì´í…œ
'%s's Equipment
*/
MSG_OTHERUSER_EQUIPED_ITEM = 0x551,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비창 공개
Show Equip
*/
MSG_OPEN_EQUIPED_ITEM = 0x552,
-/*20171018 to 20180627
+/*20171018 to 20180711
프리미엄 서비스를 ì´ìš©í•´ 주시기 ë°”ëžë‹ˆë‹¤.
This service is only available for premium users.
*/
MSG_NEED_PREMIUM_SERVICE = 0x553,
-/*20171018 to 20180627
+/*20171018 to 20180711
무료 사용ìžëŠ” 최대 50000제니까지 소유할 수 있습니다.
Free Trial users can only hold up to 50,000 zeny.
*/
MSG_FR_INVALID_MONEY = 0x554,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장채팅 ìƒíƒœê°€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Battlefield Chat has been activated.
*/
MSG_BATTLECHAT_ON = 0x555,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장채팅 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
Battlefield Chat has been deactivated.
*/
MSG_BATTLECHAT_OFF = 0x556,
-/*20171018 to 20180627
+/*20171018 to 20180711
용병정보 - 몬스터타입
Mercenary Info - Monster Type
*/
MSG_MER_INFO_TYPE_MONSTER = 0x557,
-/*20171018 to 20180627
+/*20171018 to 20180711
전체 맵 보기
World Map
*/
MSG_RO_MAP = 0x558,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼ë˜ì ¼ì´ CLOSE ìƒíƒœìž…니다.
The Memorial Dungeon is now closed.
*/
MSG_MEMORIAL_DUN_CLOSE = 0x559,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000^ff0000ìš©ë³‘ì„ ì‚­ì œí•©ë‹ˆë‹¤.^000000^000000 삭제하실 경우 지금까지 키운 ë‚´ì—­ì´ ëª¨ë‘ ì‚­ì œë©ë‹ˆë‹¤. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
^ff0000Deleting a Mercenary Soldier^000000 will also delete his growth history. Do you really want to proceed with the deletion?
*/
MSG_DELETE_MER = 0x55a,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼ë˜ì ¼ì´ OPEN ìƒíƒœìž…니다.
The Memorial Dungeon is now open.
*/
MSG_MEMORIAL_DUN_OPEN = 0x55b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìœ„ì˜ ê³„ì •ì€ ì•„ì§ í†µì‹  안전 í‚¤ì— ì—°ê²°ë˜ì§€ 않았습니다. 먼저 안전 키를 해제하신 ë’¤ ê²Œìž„ì— ì ‘ì†í•´ 주십시오.
This account has not been confirmed by connecting to the safe communication key. Please connect to the key first, and then log into the game.
*/
MSG_PHONE_BLOCK = 0x55c,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•œ ì•„ì´í”¼ë¡œ ì ‘ì† ê°€ëŠ¥í•œ 유저수를 초과하였습니다.
The number of accounts connected to this IP has exceeded the limit.
*/
MSG_BAN_PC_IP_LIMIT_ACCESS = 0x55d,
-/*20171018 to 20180627
+/*20171018 to 20180711
새로운 퀘스트를 받았습니다
You have received a new quest.
*/
MSG_QUESTGET = 0x55e,
-/*20171018 to 20180627
+/*20171018 to 20180711
^777777습ë“ì¡°ê±´ :
^CC3399Requirement:
*/
MSG_FINDTEXT_TO_SKILLDES = 0x55f,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬 설명 보기
View Skill Info
*/
MSG_VIEW_SKILL_DESCRIPT = 0x560,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì‚¬ìš©ëœ ìŠ¤í‚¬ í¬ì¸íŠ¸ëŠ” 다시 ë˜ëŒë¦´ 수 없습니다. ì ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Once used, skill points cannot be re-allocated. Would you like to use the skill points?
*/
MSG_APPLY_SKILL_UP = 0x561,
-/*20171018 to 20180627
+/*20171018 to 20180711
노비스·1ì°¨ì§ì—…
1st
*/
MSG_1TABNAME_SKILLWND = 0x562,
-/*20171018 to 20180627
+/*20171018 to 20180711
2차·전승ì§ì—…
2nd
*/
MSG_2TABNAME_SKILLWND = 0x563,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¶ˆë²•í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•˜ì˜€ê±°ë‚˜ í˜¹ì€ í•´í‚¹ì„ ì‹œë„í•œ 계정입니다. 블럭종료시간 : %s
This account has been used for illegal program or hacking program. Block Time: %s
*/
MSG_RE17 = 0x564,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¶ˆë²•í”„ë¡œê·¸ëž¨ì´ ì‹¤í–‰, ë°”ì´ëŸ¬ìŠ¤ ê°ì—¼, ë˜ëŠ” í•´í‚¹íˆ´ì´ ì„¤ì¹˜ë˜ì–´ ìžˆì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤. ì •ìƒ í´ë¼ì´ì–¸íŠ¸ë¥¼ 실행하여 주시기 ë°”ëžë‹ˆë‹¤. 함께 만드는 ë°ì€ ë¼ê·¸ë‚˜ë¡œí¬ê°€ ë  ìˆ˜ 있ë„ë¡ ë…¸ë ¥í•˜ê³  있습니다.
The possibility of exposure to illegal program, PC virus infection or Hacking Tool has been detected. Please execute licensed client. Our team is trying to make a best environment for Ro players.
*/
MSG_RE18 = 0x565,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹¹ì‹ ì€ ì§€ê¸ˆ ê±´ê°•í•œ 게임 시간 ëŒ€ì— ìžˆìŠµë‹ˆë‹¤, ì¦ê±°ìš´ ê²Œìž„ì´ ë˜ì‹œê¸¸ ë°”ëžë‹ˆë‹¤
You are currently playing in the best game environment. Please enjoy the Ragnarok.
*/
MSG_WARNING_MSG3 = 0x566,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Job경험치가 30분간 1.25ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Job Exp points from hunting monsters are increased by 50% for 30 minutes.
*/
MSG_PLUSONLYJOBEXP = 0x567,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 1.2ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Exp points from hunting monsters are increased by 25% for 30 minutes.
*/
MSG_PLUSEXP14532 = 0x568,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 30분간 2ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
EXP points from hunting monsters are increased by 100%% for 30 minutes.
*/
MSG_PLUSEXP14533 = 0x569,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 경험치가 60분간 1.5ë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
EXP points from hunting monsters are increased by 50% for 60 minutes.
*/
MSG_PLUSEXP12312 = 0x56a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ë§µì—서는 파티를 결성할 수 없습니다.
Unable to organize a party in this map.
*/
MSG_NOPARTY = 0x56b,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ì€ íŒŒí‹°ì— ì°¸ì—¬í•  수 없는 ë§µì— ìžˆìŠµë‹ˆë‹¤.
(%s) are currently in restricted map to join a party.
*/
MSG_NOPARTY2 = 0x56c,
-/*20171018 to 20180627
+/*20171018 to 20180711
간편아ì´í…œìƒµ
Simple Item Shop
*/
MSG_SIMPLE_CASH_SHOP = 0x56d,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지 í•œì½”ì¸ : %d 한코ì¸
Han Coin: %d Han Coin
*/
MSG_SIMPLE_POINT_SHOP_NHN = 0x56e,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지 ìºì‹œ : %d ìºì‹œ
RoK Point: %d RoK Point
*/
MSG_SIMPLE_POINT_SHOP = 0x56f,
-/*20171018 to 20180627
+/*20171018 to 20180711
무료 ìºì‹œ : %d ìºì‹œ
Free Cash: %d Cash
*/
MSG_SIMPLE_POINT_SHOP2 = 0x570,
-/*20171018 to 20180627
+/*20171018 to 20180711
본서버 유저는 í”„ë¦¬ì„œë²„ì— ì ‘ì†í• ìˆ˜ 없습니다.
An user of this server cannot connect to free server
*/
MSG_MAIN_USER_CANONT_LOGIN_FREE_SERVER = 0x571,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìœ íš¨ê¸°ê°„ì´ ì§€ë‚œ 비밀번호 입니다. 다시 로그ì¸í•˜ì—¬ì£¼ì‹­ì‹œì˜¤.
Your password has expired. Please log in again
*/
MSG_INVALID_ONETIMELIMIT = 0x572,
-/*20171018 to 20180627
+/*20171018 to 20180711
3ì°¨ì§ì—…
3rd
*/
MSG_3TABNAME_SKILLWND = 0x573,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없는 대ìƒìž…니다.
This skill can't be used on that target.
*/
MSG_USESKILL_FAIL_TOTARGET = 0x574,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•ˆì‹¤ë¼ ì†Œìœ  개수가 초과하여 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다.
You can't use skill because you have exceeded the number Ancilla possession limit
*/
MSG_USESKILL_FAIL_ANCILLA_NUMOVER = 0x575,
-/*20171018 to 20180627
+/*20171018 to 20180711
성수가 필요합니다.
Unable to use the skill to exceed the number of Ancilla.
*/
MSG_USESKILL_FAIL_HOLYWATER = 0x576,
-/*20171018 to 20180627
+/*20171018 to 20180711
안실ë¼ê°€ 필요합니다.
Holy water is required.
*/
MSG_USESKILL_FAIL_ANCILLA = 0x577,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ì •ê±°ë¦¬ ë‚´ì— ì¤‘ë³µë  ìˆ˜ 없습니다.
Ancilla is required.
*/
MSG_USESKILL_FAIL_DUPLICATE_RANGEIN = 0x578,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìŠ¤í‚¬ì„ ì‚¬ìš©í•˜ê¸° 위해서는 다른 ìŠ¤í‚¬ì´ í•„ìš”í•©ë‹ˆë‹¤.
Cannot be duplicated within a certain distance.
*/
MSG_USESKILL_FAIL_NEED_OTHER_SKILL = 0x579,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ë§µì—서는 ì±„íŒ…ì„ í•  수 없습니다.
This skill requires other skills to be used.
*/
MSG_NO_CHATTING = 0x57a,
-/*20171018 to 20180627
+/*20171018 to 20180711
3ì‹œê°„ì´ ì§€ë‚¬ìŠµë‹ˆë‹¤.
Chat is not allowed in this map
*/
MSG_VET_3HOUR = 0x57b,
-/*20171018 to 20180627
+/*20171018 to 20180711
5ì‹œê°„ì´ ì§€ë‚¬ìŠµë‹ˆë‹¤.
3 hours have passed.
*/
MSG_VET_5HOUR = 0x57c,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드 초기화 ì—러 ë˜ëŠ” êµ¬ë²„ì „ì˜ ê²Œìž„ê°€ë“œ 파ì¼ìž…니다. 게임가드 셋업파ì¼ì„ 다시 설치하고 ê²Œìž„ì„ ì‹¤í–‰í•´ 보시기 ë°”ëžë‹ˆë‹¤.
5 hours have passed.
*/
MSG_NPGAMEMON_ERROR_GAMEGUARD = 0x57d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ini 파ì¼ì´ 없거나 변조ë˜ì—ˆìŠµë‹ˆë‹¤. 게임가드 셋업파ì¼ì„ 설치하면 í•´ê²° í•  수 있습니다.
Game guard initialization error or previous version game guard file is installed. Please re-install the setup file and try again
*/
MSG_NPGMUP_ERROR_PARAM = 0x57e,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임가드와 ì¶©ëŒ í”„ë¡œê·¸ëž¨ì´ ë°œê²¬ë˜ì—ˆìŠµë‹ˆë‹¤.
Either ini file is missing or altered. Install game guard setup file to fix the problem
*/
MSG_NPGG_ERROR_COLLISION = 0x57f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž˜ëª»ëœ í´ë¼ì´ì–¸íŠ¸ìž…니다. ì •ìƒì ì¸ í´ë¼ì´ì–¸íŠ¸ë¥¼ 실행하여 주십시요.
There is a program found that conflicts with game guard
*/
MSG_PROOF_ERROR = 0x580,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëª¨ë°”ì¼ ì¸ì¦ì„ 받아주시기 ë°”ëžë‹ˆë‹¤.
Incorrect client. Please run a normal client
*/
MSG_MOBILE_LOCKSERVER = 0x581,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëª¨ë°”ì¼ ì¸ì¦ì— 실패하였습니다.
Thank you to accept mobile authentication.
*/
MSG_FAILED_MOBILE_LOCKSERVER = 0x582,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ìŠ¤í‚¬ì€ 혼ìžì„œ 사용할수 없습니다.
This skill can't be used alone
*/
MSG_USESKILL_FAIL_NEED_HELPER = 0x583,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ìŠ¤í‚¬ì€ 특정방향으로만 사용할수 있습니다.
This skill can be used to certain direction only
*/
MSG_USESKILL_FAIL_INVALID_DIR = 0x584,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë”ì´ìƒ 소환할수 없습니다.
Cannot summon spheres anymore.
*/
MSG_USESKILL_FAIL_SUMMON = 0x585,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì†Œí™˜ëœ êµ¬ì²´ê°€ 존재하지 않거나 부족합니다.
There is no summoned sphere or you do not have enough sphere.
*/
MSG_USESKILL_FAIL_SUMMON_NONE = 0x586,
-/*20171018 to 20180627
+/*20171018 to 20180711
사용가능한 ëª¨ë°©ìŠ¤í‚¬ì´ ì¡´ìž¬í•˜ì§€ 않습니다.
There is no imitation skills available.
*/
MSG_USESKILL_FAIL_IMITATION_SKILL_NONE = 0x587,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìŠ¤í‚¬ì€ ì¤‘ë³µí•´ì„œ 사용할수 없습니다.
You can't reuse this skill
*/
MSG_USESKILL_FAIL_DUPLICATE = 0x588,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¤í‚¬ì„ ì‚¬ìš©í• ìˆ˜ 없는 ìƒíƒœìž…니다.
Skill can't be used in this state
*/
MSG_USESKILL_FAIL_CONDITION = 0x589,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œë³„ 최대 ì†Œì§€ëŸ‰ì„ ì´ˆê³¼í•˜ì—¬ 가질 수 없습니다.
You have exceeded the maximum amount of possession of another item.
*/
MSG_PICKUP_MAXCOUNT_LIMIT = 0x58a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê´€ë¦¬ìž ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. 프로그램 최초 ì‹¤í–‰ì€ ê´€ë¦¬ìž ê¶Œí•œìœ¼ë¡œ 실행하셔야 합니다.
No administrative privileges. Must first run the program with administrator privileges.
*/
MSG_NPK_ERROR_NOTADMIN = 0x58b,
-/*20171018 to 20180627
+/*20171018 to 20180711
nProtect KeyCrypt ë“œë¼ì´ë²„ ë²„ì „ì´ ë§žì§€ 않습니다. 시스템 재 부팅 í›„ì— ìƒˆë¡œ 실행 시켜 주십시오.
nProtect KeyCrypt not the same. Please restart the program and the computer first.
*/
MSG_NPK_ERROR_DRIVERVERSION = 0x58c,
-/*20171018 to 20180627
+/*20171018 to 20180711
WindowXP 호환성 모드를 사용하고 계십니다. 현재 프로그램ì—ì„œ 호환성 모드를 제거하였습니다. í”„ë¡œê·¸ëž¨ì„ ìƒˆë¡œ 시작해 주십시오.
Currently wearing WindowXP Compatibility Mode. The program now removes Compatibility Mode. Please restart the program.
*/
MSG_NPK_ERROR_VERIFYVERSION = 0x58d,
-/*20171018 to 20180627
+/*20171018 to 20180711
PS/2 키로거가 존재합니다.
PS/2 keyloggers exist.
*/
MSG_DETECT_PS2KEYLOGGER = 0x58e,
-/*20171018 to 20180627
+/*20171018 to 20180711
USB 키보드 ë“œë¼ì´ë²„ 해킹 ì‹œë„ê°€ íƒì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
USB Keylogging attempt was detected.
*/
MSG_DETECT_USBKEYLOGGER = 0x58f,
-/*20171018 to 20180627
+/*20171018 to 20180711
HHD ëª¨ë‹ˆí„°ë§ íˆ´ì´ íƒì§€ë˜ì—ˆìŠµë‹ˆë‹¤.
HHD monitoring tool has been detected.
*/
MSG_DETECT_HHDUSBH = 0x590,
-/*20171018 to 20180627
+/*20171018 to 20180711
페ì¸íŠ¸ë¶“ì´ í•„ìš”í•©ë‹ˆë‹¤.
Paintbrush is required.
*/
MSG_USESKILL_FAIL_PAINTBRUSH = 0x591,
-/*20171018 to 20180627
+/*20171018 to 20180711
서페ì´ìŠ¤íŽ˜ì¸íŠ¸ê°€ 필요합니다.
Paint is required.
*/
MSG_USESKILL_FAIL_II_SURFACE_PAINTS = 0x592,
-/*20171018 to 20180627
+/*20171018 to 20180711
지정한 ìœ„ì¹˜ì— ìŠ¤í‚¬ì„ ì‚¬ìš©í• ìˆ˜ 없습니다.
Use the skills that are not at the specified location.
*/
MSG_USESKILL_FAIL_POS = 0x593,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„ìš°ë¯¸ì˜ SPê°€ 부족합니다.
Not enough SP.
*/
MSG_USESKILL_FAIL_HELPER_SP_INSUFFICIENT = 0x594,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ì„ íƒì°½ì˜ ìºë¦­í„°ê°€ %d개를 초과하면 ê²Œìž„ì— ì ‘ì†í•  수 없습니다. 불필요한 ìºë¦­í„°ë¥¼ 삭제해주십시오.
Character %d is character selection window cannot connect to the game that exceeds the total. Please remove unwanted characters.
*/
MSG_BAN_OVER_CHARACTER_LIST = 0x595,
-/*20171018 to 20180627
+/*20171018 to 20180711
목캔디가 필요합니다.
Throat Lozenge is required.
*/
MSG_USESKILL_FAIL_II_NECK_CANDY = 0x596,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•ˆíƒ€ê¹Œìš´ëˆˆë¬¼ì´ í•„ìš”í•©ë‹ˆë‹¤.
Painful Tears is required.
*/
MSG_USESKILL_FAIL_II_MISERABLE_TEAR = 0x597,
-/*20171018 to 20180627
+/*20171018 to 20180711
목 보호 캔디가 필요합니다.
Throat Lozenge is required.
*/
MSG_USESKILL_FAIL_II_PROTECT_NECK_CANDY = 0x598,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì›¨í° ë¸”ë¡œí‚¹ì˜ ì—°ê³„ë¡œë§Œ 사용가능합니다.
Cooperation is only available with Weapon Blocking.
*/
MSG_USESKILL_FAIL_GC_WEAPONBLOCKING = 0x599,
-/*20171018 to 20180627
+/*20171018 to 20180711
길로틴í¬ë¡œìŠ¤ì˜ ë…ì„ ë°”ë¥¸ 무기가 필요합니다.
Poisoned weapons is required.
*/
MSG_USESKILL_FAIL_GC_POISONINGWEAPON = 0x59a,
-/*20171018 to 20180627
+/*20171018 to 20180711
마ë„기어 탑승시ì—만 사용가능합니다.
Item can only be used when Mado Gear is mounted.
*/
MSG_USESKILL_FAIL_MADOGEAR = 0x59b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°œì¹¸ë¸”ë¦¿ì´ í•„ìš”í•©ë‹ˆë‹¤.
Vulcan Bullet is required.
*/
MSG_USESKILL_FAIL_II_VULCANBULLET = 0x59c,
-/*20171018 to 20180627
+/*20171018 to 20180711
마ë„기어 연료가 필요합니다.
Mado Gear Fuel is required.
*/
MSG_USESKILL_FAIL_II_FUELGAS = 0x59d,
-/*20171018 to 20180627
+/*20171018 to 20180711
액체냉ê°íƒ„ì´ í•„ìš”í•©ë‹ˆë‹¤.
Liquid Cold Bullet is required.
*/
MSG_USESKILL_FAIL_II_COLDSLOWERBULLET = 0x59e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë…¼ë³¼ì„ 장전 하세요.
Please load a Cannon Ball.
*/
MSG_USESKILL_FAIL_CANONBALL = 0x59f,
-/*20171018 to 20180627
+/*20171018 to 20180711
미ë„기어 ê°€ì†ìž¥ì¹˜ë¥¼ 착용하세요.
Please equipped with a Mado Gear Accelerator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_ACCELERATION = 0x5a0,
-/*20171018 to 20180627
+/*20171018 to 20180711
호버ë§ë¶€ìŠ¤í„°ë¥¼ 착용하세요.
Please equipped with a Hovering Booster.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_HOVERING_BOOSTER = 0x5a1,
-/*20171018 to 20180627
+/*20171018 to 20180711
[톡신] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Toxin] Poison effect was applied to the weapon.
*/
MSG_TOXIN = 0x5a2,
-/*20171018 to 20180627
+/*20171018 to 20180711
[패럴ë¼ì´ì¦ˆ] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Paralysis] Poison effect was applied to the weapon.
*/
MSG_PARALYZE = 0x5a3,
-/*20171018 to 20180627
+/*20171018 to 20180711
[베놈블리드] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Fatigue] Poison effect was applied to the weapon.
*/
MSG_VENOMBLEED = 0x5a4,
-/*20171018 to 20180627
+/*20171018 to 20180711
[ë§¤ì§ ë¨¸ì‰¬ë£¸] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Laughing] Poison effect was applied to the weapon.
*/
MSG_MAGICMUSHROOM = 0x5a5,
-/*20171018 to 20180627
+/*20171018 to 20180711
[ë°ìŠ¤ 허트] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Disheart] Poison effect was applied to the weapon.
*/
MSG_DEATHHURT = 0x5a6,
-/*20171018 to 20180627
+/*20171018 to 20180711
[파ì´ë ‰ì‹œì•„] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Pyrexia] Poison effect was applied to the weapon.
*/
MSG_PHYREXIA = 0x5a7,
-/*20171018 to 20180627
+/*20171018 to 20180711
[오블리비언 커즈] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Oblivion] Poison effect was applied to the weapon.
*/
MSG_OBLIANCURSE = 0x5a8,
-/*20171018 to 20180627
+/*20171018 to 20180711
[리치 엔드] ë… íš¨ê³¼ê°€ ë¬´ê¸°ì— ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤.
[Leech] Poison effect was applied to the weapon.
*/
MSG_RICHEND = 0x5a9,
-/*20171018 to 20180627
+/*20171018 to 20180711
호버ë§ìƒíƒœì—서만 사용가능합니다.
Can only be used in Hovering state.
*/
MSG_USESKILL_FAIL_MADOGEAR_HOVERING = 0x5aa,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìží­ìž¥ì¹˜ë¥¼ 장착하세요.
Please equip a Self-Destruct Mechanism.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_SELFDESTRUCTION_DEVICE = 0x5ab,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì…°ì´í”„쉬프터를 장착하세요.
Please equip a Shape Shift.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_SHAPESHIFTER = 0x5ac,
-/*20171018 to 20180627
+/*20171018 to 20180711
길로틴ë…ì´ í•„ìš”í•©ë‹ˆë‹¤.
Guillotine Cross Poison is required.
*/
MSG_USESKILL_FAIL_GUILLONTINE_POISON = 0x5ad,
-/*20171018 to 20180627
+/*20171018 to 20180711
냉ê°ìž¥ì¹˜ë¥¼ 장착하세요.
Please equipped with a Cooling System.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_COOLING_DEVICE = 0x5ae,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìžê¸°ìž¥í•„ë“œìƒì„±ê¸°ë¥¼ 착용하세요.
Please equipped with a Magnetic Field Generator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_MAGNETICFIELD_GENERATOR = 0x5af,
-/*20171018 to 20180627
+/*20171018 to 20180711
베리어ìƒì„±ê¸°ë¥¼ 착용하세요.
Please equipped with a Barrier Generator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_BARRIER_GENERATOR = 0x5b0,
-/*20171018 to 20180627
+/*20171018 to 20180711
광학미채발ìƒê¸°ë¥¼ 착용하세요.
Please equipped with a Optical Camouflage Generator.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_OPTICALCAMOUFLAGE_GENERATOR = 0x5b1,
-/*20171018 to 20180627
+/*20171018 to 20180711
리페어키트를 착용하세요.
Please equipped with a Repair Kit.
*/
MSG_USESKILL_FAIL_II_MADOGEAR_REPAIRKIT = 0x5b2,
-/*20171018 to 20180627
+/*20171018 to 20180711
몽키 스패너가 필요합니다.
Monkey Wrench is required.
*/
MSG_USESKILL_FAIL_II_MONKEY_SPANNER = 0x5b3,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s] ìŠ¤í‚¬ì„ ì‹œì „ í•  수 없습니다.
[%s] Cannot use the skills due to cooldown delay.
*/
MSG_SKILLINTERVAL2 = 0x5b4,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d레벨 ì´ìƒì€ 삭제가 불가능합니다.
Deletion is impossible for over level %d
*/
MSG_LEMIT_DELETE_LEVEL = 0x5b5,
-/*20171018 to 20180627
+/*20171018 to 20180711
마ë„기어 탑승시ì—는 사용 í•  수 없습니다.
Can't be used while on Magic Gear.
*/
MSG_USESKILL_FAIL_MADOGEAR_RIDE = 0x5b6,
-/*20171018 to 20180627
+/*20171018 to 20180711
드래곤 내리기
Dismount Dragon
*/
MSG_DRAGONOFF = 0x5b7,
-/*20171018 to 20180627
+/*20171018 to 20180711
마ë„기어 내리기
Dismount Magic Gear
*/
MSG_MADOOFF = 0x5b8,
-/*20171018 to 20180627
+/*20171018 to 20180711
소비
I
*/
MSG_STORE_TABNAME_0 = 0x5b9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºì‰¬
Cash
*/
MSG_STORE_TABNAME_1 = 0x5ba,
-/*20171018 to 20180627
+/*20171018 to 20180711
방어구
Armors
*/
MSG_STORE_TABNAME_2 = 0x5bb,
-/*20171018 to 20180627
+/*20171018 to 20180711
무기
Weapons
*/
MSG_STORE_TABNAME_3 = 0x5bc,
-/*20171018 to 20180627
+/*20171018 to 20180711
투사체
Ammo
*/
MSG_STORE_TABNAME_4 = 0x5bd,
-/*20171018 to 20180627
+/*20171018 to 20180711
카드
Card
*/
MSG_STORE_TABNAME_5 = 0x5be,
-/*20171018 to 20180627
+/*20171018 to 20180711
기타
Other
*/
MSG_STORE_TABNAME_6 = 0x5bf,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ë¼ì´ì–¸íŠ¸ ì‘ë‹µì‹œê°„ì´ ì´ˆê³¼ë˜ì–´ ì—°ê²°ì´ ëŠì–´ì§‘니다.
Client response time has passed so connection is terminated
*/
MSG_ERROR_HS_TIMEOUT = 0x5c0,
-/*20171018 to 20180627
+/*20171018 to 20180711
핵쉴드 파ì¼ì˜ ë²„ì „ì´ ë§žì§€ 않습니다. í´ë¼ì´ì–¸íŠ¸ë¥¼ 재설치 해주십시오.
Incorrect version of hack shield file. Please reinstall the client
*/
MSG_ERROR_DIFF_CLIENT = 0x5c1,
-/*20171018 to 20180627
+/*20171018 to 20180711
마법서가 필요합니다.
[Magic Book] is required.
*/
MSG_USESKILL_FAIL_SPELLBOOK = 0x5c2,
-/*20171018 to 20180627
+/*20171018 to 20180711
마법서가 너무 어려워서 졸ìŒì´ 몰려온다.
Feel sleepy since Magic Book is too difficult to understand.
*/
MSG_USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP = 0x5c3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³´ì¡´í¬ì¸íŠ¸ê°€ 부족합니다.
Not enough saved point.
*/
MSG_USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT = 0x5c4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë”ì´ìƒ 마법서를 ì½ì„수 없습니다.
Can't read a Magic Book anymore.
*/
MSG_USESKILL_FAIL_SPELLBOOK_READING = 0x5c5,
-/*20171018 to 20180627
+/*20171018 to 20180711
페ì´ìŠ¤íŽ˜ì¸íŠ¸ê°€ 필요합니다.
Face Paint is required.
*/
MSG_USESKILL_FAIL_II_FACE_PAINTS = 0x5c6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¶„ìž¥ìš©ë¶“ì´ í•„ìš”í•©ë‹ˆë‹¤.
Brush is required.
*/
MSG_USESKILL_FAIL_II_MAKEUP_BRUSH = 0x5c7,
-/*20171018 to 20180627
+/*20171018 to 20180711
대기 ì‹œê°„ì´ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤. 다시 ë¡œê·¸ì¸ í•´ì£¼ì‹­ì‹œì˜¤.
Waiting time has passed. Please log in again
*/
MSG_MOBILE_TIMEOVER = 0x5c8,
-/*20171018 to 20180627
+/*20171018 to 20180711
위험! ì´ë¯¸ ë™ì¼í•œ ê³„ì •ì´ ë¡œê·¸ì¸ ì¤‘ì— ìžˆìŠµë‹ˆë‹¤. ìž ì‹œ ëª¨ë°”ì¼ ì¸ì¦ ì§„í–‰ì„ ë©ˆì¶”ì‹œê³  ë¹„ë²ˆì„ ìˆ˜ì •í•œ ë’¤ 재 ë¡œê·¸ì¸ í•´ì£¼ì‹­ì‹œì˜¤.
Watch out! Same account is already logged in. Stop mobile verification and log in again after changing your password
*/
MSG_MOBILE_ANOTHER_LOGIN = 0x5c9,
-/*20171018 to 20180627
+/*20171018 to 20180711
위험! 현재 ë™ì¼í•œ ê³„ì •ì´ ëª¨ë°”ì¼ ì¸ì¦ 대기 ì¤‘ì— ìžˆìŠµë‹ˆë‹¤. ìž ì‹œ ëª¨ë°”ì¼ ì¸ì¦ ì§„í–‰ì„ ë©ˆì¶”ì‹œê³  ë¹„ë²ˆì„ ìˆ˜ì •í•œ ë’¤ 재 ë¡œê·¸ì¸ í•´ì£¼ì‹­ì‹œì˜¤.
Watch out! Same account is waiting for mobile verification. Stop mobile verification and log in again after changing your password
*/
MSG_MOBILE_WAITING_STATE = 0x5ca,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임 옵션창
Game setting window
*/
MSG_ESC_OPTIONWND = 0x5cb,
-/*20171018 to 20180627
+/*20171018 to 20180711
그래픽 설정
Graphics Settings
*/
MSG_GRAPHIC_OPTIONWND = 0x5cc,
-/*20171018 to 20180627
+/*20171018 to 20180711
사운드 설정
Sound Settings
*/
MSG_SOUND_OPTIONWND = 0x5cd,
-/*20171018 to 20180627
+/*20171018 to 20180711
변경 할 단축키를 누르거나, 'ESC'키를 눌러 삭제 해 주세요.
Press a key to assign. Pressing 'ESC' will remove the assigned key.
*/
MSG_HOTKEYWND_NOTICE1 = 0x5ce,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹¨ì¼ í‚¤ë¡œ 지정 í•  수 없는 키입니다.
Unable to specify a single key.
*/
MSG_HOTKEYWND_NOTICE2 = 0x5cf,
-/*20171018 to 20180627
+/*20171018 to 20180711
지정 할 수 없는 키입니다.
Unable to specify the key assigned.
*/
MSG_HOTKEYWND_NOTICE3 = 0x5d0,
-/*20171018 to 20180627
+/*20171018 to 20180711
'%s'ì— ì‚¬ìš©ëœ ë‹¨ì¶•í‚¤ì™€ 중복ë©ë‹ˆë‹¤. 바꾸시겠습니까?
Duplicated with ['%s']. Do you still want to change?
*/
MSG_HOTKEYWND_NOTICE4 = 0x5d1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì €ìž¥ëœ ë‹¨ì¶•í‚¤ ì¡°í•©ì´ ì´ˆê¸°í™” ë©ë‹ˆë‹¤. 초기화 하시겠습니까?
Initialization is stored in the shortcut key settings. Do you want to initialized?
*/
MSG_HOTKEYWND_NOTICE5 = 0x5d2,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬바
Skill Bar
*/
MSG_HOTKEYWND_TAB1 = 0x5d3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸í„°íŽ˜ì´ìŠ¤
Interface
*/
MSG_HOTKEYWND_TAB2 = 0x5d4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ëª¨ì…˜
Macros
*/
MSG_HOTKEYWND_TAB3 = 0x5d5,
-/*20171018 to 20180627
+/*20171018 to 20180711
단축키 설정 창
Shortcut Settings
*/
MSG_HOTKEYWND_TITLE = 0x5d6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°°ê²½ìŒ
BGM
*/
MSG_BGM = 0x5d7,
-/*20171018 to 20180627
+/*20171018 to 20180711
효과ìŒ
Effect
*/
MSG_SOUND = 0x5d8,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킨
Skin
*/
MSG_SKIN = 0x5d9,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅방 입장ìŒë§Œ 소리남 On
Chat room entrance sound on
*/
MSG_TINGONLY_ON = 0x5da,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅방 입장ìŒë§Œ 소리남 Off
Chat room entrance sound off
*/
MSG_TINGONLY_OFF = 0x5db,
-/*20171018 to 20180627
+/*20171018 to 20180711
/tingonly : 채팅방 입장ìŒë§Œ 들ì„수있게ë©ë‹ˆë‹¤
/tingonly: you can hear only sound like a chat room entry.
*/
MSG_EXPLAIN_TINGONLY = 0x5dc,
-/*20171018 to 20180627
+/*20171018 to 20180711
/주먹
/rock
*/
MSG_EMOTION_ROCK = 0x5dd,
-/*20171018 to 20180627
+/*20171018 to 20180711
/가위
/scissors
*/
MSG_EMOTION_SCISSOR = 0x5de,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ë³´
/paper
*/
MSG_EMOTION_WRAP = 0x5df,
-/*20171018 to 20180627
+/*20171018 to 20180711
/러브
/love
*/
MSG_EMOTION_LUV = 0x5e0,
-/*20171018 to 20180627
+/*20171018 to 20180711
/mobile
*/
MSG_EMOTION_MOBILE = 0x5e1,
-/*20171018 to 20180627
+/*20171018 to 20180711
/mail
*/
MSG_EMOTION_MAIL = 0x5e2,
-/*20171018 to 20180627
+/*20171018 to 20180711
/antenna0
*/
MSG_EMOTION_ANTENNA0 = 0x5e3,
-/*20171018 to 20180627
+/*20171018 to 20180711
/antenna1
*/
MSG_EMOTION_ANTENNA1 = 0x5e4,
-/*20171018 to 20180627
+/*20171018 to 20180711
/antenna2
*/
MSG_EMOTION_ANTENNA2 = 0x5e5,
-/*20171018 to 20180627
+/*20171018 to 20180711
/antenna3
*/
MSG_EMOTION_ANTENNA3 = 0x5e6,
-/*20171018 to 20180627
+/*20171018 to 20180711
/hum
*/
MSG_EMOTION_HUM2 = 0x5e7,
-/*20171018 to 20180627
+/*20171018 to 20180711
/abs
*/
MSG_EMOTION_ABS = 0x5e8,
-/*20171018 to 20180627
+/*20171018 to 20180711
/oops
*/
MSG_EMOTION_OOPS = 0x5e9,
-/*20171018 to 20180627
+/*20171018 to 20180711
/spit
*/
MSG_EMOTION_SPIT = 0x5ea,
-/*20171018 to 20180627
+/*20171018 to 20180711
/ene
*/
MSG_EMOTION_ENE = 0x5eb,
-/*20171018 to 20180627
+/*20171018 to 20180711
/panic
*/
MSG_EMOTION_PANIC = 0x5ec,
-/*20171018 to 20180627
+/*20171018 to 20180711
/whisp
*/
MSG_EMOTION_WHISP = 0x5ed,
-/*20171018 to 20180627
+/*20171018 to 20180711
지정안함
Not Assigned
*/
MSG_HOTKEY_NOTHING = 0x5ee,
-/*20171018 to 20180627
+/*20171018 to 20180711
카트장착시ì—만 사용가능합니다.
Only available when cart is mounted.
*/
MSG_USESKILL_FAIL_CART = 0x5ef,
-/*20171018 to 20180627
+/*20171018 to 20180711
[가시나무 씨앗]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Thorny Seed] is required.
*/
MSG_USESKILL_FAIL_II_THORNS_SEED = 0x5f0,
-/*20171018 to 20180627
+/*20171018 to 20180711
[í¡í˜ˆ ì‹ë¬¼ 씨앗]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Bloodsucker Seed] is required.
*/
MSG_USESKILL_FAIL_II_BLOOD_SUCKER_SEED = 0x5f1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë”ì´ìƒ 시전할수 없습니다.
Cannot be used anymore.
*/
MSG_USESKILL_FAIL_NO_MORE_SPELL = 0x5f2,
-/*20171018 to 20180627
+/*20171018 to 20180711
[í­íƒ„버섯í¬ìž]ê°€ 필요합니다.
[Bomb Mushroom Spore] is required.
*/
MSG_USESKILL_FAIL_II_BOMB_MUSHROOM_SPORE = 0x5f3,
-/*20171018 to 20180627
+/*20171018 to 20180711
[화염병]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Fire Bottle] is required.
*/
MSG_USESKILL_FAIL_II_GASOLINE_BOOMB = 0x5f4,
-/*20171018 to 20180627
+/*20171018 to 20180711
[기름병]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Oil Bottle] is required.
*/
MSG_USESKILL_FAIL_II_OIL_BOTTLE = 0x5f5,
-/*20171018 to 20180627
+/*20171018 to 20180711
[í­ë°œê°€ë£¨]ê°€ 필요합니다.
[Explosive Powder] is required.
*/
MSG_USESKILL_FAIL_II_EXPLOSION_POWDER = 0x5f6,
-/*20171018 to 20180627
+/*20171018 to 20180711
[연막가루]가 필요합니다.
[Smokescreen Powder] is required.
*/
MSG_USESKILL_FAIL_II_SMOKE_POWDER = 0x5f7,
-/*20171018 to 20180627
+/*20171018 to 20180711
[최루가스]가 필요합니다.
[Tear Gas] is required.
*/
MSG_USESKILL_FAIL_II_TEAR_GAS = 0x5f8,
-/*20171018 to 20180627
+/*20171018 to 20180711
[염산병]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Acid Bottle] is required.
*/
MSG_USESKILL_FAIL_II_HYDROCHLORIC_ACID_BOTTLE = 0x5f9,
-/*20171018 to 20180627
+/*20171018 to 20180711
[ì‹ì¸ì‹ë¬¼ë³‘]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Bottom Man-Eating Plant] is required.
*/
MSG_USESKILL_FAIL_II_HELLS_PLANT_BOTTLE = 0x5fa,
-/*20171018 to 20180627
+/*20171018 to 20180711
[만드ë¼ê³ ë¼ì˜ 화분]ì´ í•„ìš”í•©ë‹ˆë‹¤.
[Pot of Mandragora] is required.
*/
MSG_USESKILL_FAIL_II_MANDRAGORA_FLOWERPOT = 0x5fb,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티장 위임
Party delegation
*/
MSG_YIELD_PARTYMASTER = 0x5fc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ë§ íŒŒí‹°ìž¥ì„ ìœ„ìž„í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you want to delegate the real party?
*/
MSG_DO_YOU_REALLY_WANT_YIELD_PARTYMASTER = 0x5fd,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ìž¥ì„ ìœ„ìž„ í•  수 없습니다.
Party cannot be delegated.
*/
MSG_CANNOT_YIELD_PARTYMASTER = 0x5fe,
-/*20171018 to 20180627
+/*20171018 to 20180711
변경불가
Immutable
*/
MSG_FAILED_CHANGE = 0x5ff,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]가 %d개 필요합니다.
[%s] required '%d' amount.
*/
MSG_USESKILL_FAIL_NEED_ITEM = 0x600,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 수치가 하향 ì¡°ì • ë˜ì—ˆìŠµë‹ˆë‹¤.
Is now refining the value lowered.
*/
MSG_ITEM_REFINING_DOWNGRADE = 0x601,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]를 장비하고 있어야 사용할 수 있습니다
Need to put on [%s] in order to use.
*/
MSG_USESKILL_FAIL_NEED_EQUIPMENT = 0x602,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 입장 설정
Battle field entrance setting
*/
MSG_BATTLEFIELD_LIST = 0x603,
-/*20171018 to 20180627
+/*20171018 to 20180711
% 전장으로 ì´ë™ í•  수 없는 ìƒíƒœê°€ ë˜ì–´ 전장 ì‹ ì²­ì´ ì·¨ì†Œ ë˜ì—ˆìŠµë‹ˆë‹¤.
Battlefield - [%s] you sign up?
*/
MSG_CANNOT_JOINTO_BATTLEFIELD = 0x604,
-/*20171018 to 20180627
+/*20171018 to 20180711
Current admission application state.
*/
MSG_COMPLETED_JOINTO_BATTLEFIELD = 0x605,
-/*20171018 to 20180627
+/*20171018 to 20180711
% 전장 ìž…ìž¥ì´ ë³´ë¥˜ ë˜ì—ˆìŠµë‹ˆë‹¤. 다른 플레ì´ì–´ë¥¼ 기다립니다.
It was unregistered and not be able to enter the state.
*/
MSG_DIFFER_JOINTO_BATTLEFIELD = 0x606,
-/*20171018 to 20180627
+/*20171018 to 20180711
Current admission application state.
*/
MSG_STATUS_JOINTO_BATTLEFIELD = 0x607,
-/*20171018 to 20180627
+/*20171018 to 20180711
í™•ì¸ ë‹¨ì¶”ë¥¼ 누르면 전장 ì‹ ì²­ì´ ì·¨ì†Œë©ë‹ˆë‹¤. 아래 단추를 í´ë¦­í•´ 주세요.
Do you want to cancel the admission application?
*/
MSG_REQ_CANCEL_JOINTO_BATTLEFIELD = 0x608,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 전장 입장 ì‹ ì²­ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
Admission request has been cancelled.
*/
MSG_CANCEL_JOINTO_BATTLEFIELD = 0x609,
-/*20171018 to 20180627
+/*20171018 to 20180711
잠시후 %s 전장으로 ì´ë™ 합니다. 공간 ì´ë™ì„ 위한 안정ì ì¸ ìƒíƒœë¥¼ 확보해 주시길 ë°”ëžë‹ˆë‹¤. (거래 ë° ê³µê°„ ì´ë™ 기능 ì¼ì‹œ 중지ë¨)
Go to the battlefield quickly.
*/
MSG_MOVETO_BATTLEFIELD = 0x60a,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 명칭
Battlefield - [%s]
*/
MSG_BATTLEFIELD_NAME = 0x60b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ë§ ì´ë™ 하시겠습니까?
Do you really want to go back to your savepoint?
*/
MSG_MOVETO_SAVEPOINT = 0x60c,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ì› ì°¾ê¸° 메세지
Search Message for Party Members
*/
MSG_VIEW_SEEK_PARTY = 0x60d,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ì› ì°¾ê¸° 메세지 ì˜µì…˜ì´ êº¼ì ¸ìžˆìŠµë‹ˆë‹¤.
Message option is off the search party members.
*/
MSG_UNVIEW_SEEK_PARTY = 0x60e,
-/*20171018 to 20180627
+/*20171018 to 20180711
10초간 파티 ì§€ì› ë”œë ˆì´ê°€ 걸려있습니다.
10 seconds delay of party support is in effect
*/
MSG_SEEK_PARTY_DEALY = 0x60f,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ìž¥ì€ '%s' 님 입니다.
Party leader is '%s'.
*/
MSG_NOTIFY_PARTY_ROLE_MASTER = 0x610,
-/*20171018 to 20180627
+/*20171018 to 20180711
시스템 오류로 입장 할 수 없습니다.
Unable to enter due to system error.
*/
MSG_ERROR_SYSTEM_ERROR_BATTLEFIELD = 0x611,
-/*20171018 to 20180627
+/*20171018 to 20180711
대기 ì¸ì› 수 초과로 입장 í•  수 없습니다.
Cannot wait to enter the number of excess.
*/
MSG_ERROR_FULL_ESROOM_BATTLEFIELD = 0x612,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ ì‹ ì²­ ë˜ì—ˆìŠµë‹ˆë‹¤.
Has already been applied.
*/
MSG_ERROR_DOUBLE_OFFER_BATTLEFIELD = 0x613,
-/*20171018 to 20180627
+/*20171018 to 20180711
대기 ì‹œê°„ì´ ì´ˆê³¼ë˜ì–´ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
Registration has been cancelled because of the excessive waiting time.
*/
MSG_ERROR_WAIT_TIMEOUT_BATTLEFIELD = 0x614,
-/*20171018 to 20180627
+/*20171018 to 20180711
입장 ì¡°ê±´ì´ ë§žì§€ ì•Šì•„, 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
Unregistered because admission requirements are not matching.
*/
MSG_ERROR_BATTLEFILD_ENTER_BATTLEFIELD = 0x615,
-/*20171018 to 20180627
+/*20171018 to 20180711
오류가 ë°œìƒí•˜ì—¬ 등ë¡ì´ 취소 ë˜ì—ˆìŠµë‹ˆë‹¤.
Was unregistered and error.
*/
MSG_ERROR_DROP_ENTRANCESTATION_BATTLEFIELD = 0x616,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ì˜ ì—°ê³„ 스킬입니다.
The skill need [%s].
*/
MSG_USESKILL_FAIL_COMBOSKILL = 0x617,
-/*20171018 to 20180627
+/*20171018 to 20180711
특정스킬 ì˜ ì—°ê³„ 스킬입니다.
The skill need a particular skill.
*/
MSG_USESKILL_FAIL_COMBOSKILL2 = 0x618,
-/*20171018 to 20180627
+/*20171018 to 20180711
기구체 %d 개가 필요합니다
Requires %d mind bullets
*/
MSG_USESKILL_FAIL_SPIRITS = 0x619,
-/*20171018 to 20180627
+/*20171018 to 20180711
기구체가 필요합니다
Mind Bullet is required.
*/
MSG_USESKILL_FAIL_SPIRITS2 = 0x61a,
-/*20171018 to 20180627
+/*20171018 to 20180711
최대 소지량 보다 ë§Žì€ ë£¬ìŠ¤í†¤ì„ ì œìž‘í•  수 없습니다.
Cannot create rune stone more than the maximum amount.
*/
MSG_RUNESTONE_MAKEERROR_OVERCOUNT = 0x61b,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 리스트를 ë°›ì„ ìˆ˜ 없는 ìƒíƒœìž…니다. í™•ì¸ í›„ 다시 ì‹œë„ í•´ 주세요.
Not able to receive battle field list. Please check and try again
*/
MSG_ERROR_LIST_OPEN_BATTLEFIELD = 0x61c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë ˆë²¨ì´ ë¶€ì¡±í•˜ì—¬ 입장 í•  수 없습니다.
Level is not high enough to enter
*/
MSG_ERROR_LEVEL_LIMIT_BATTLEFIELD = 0x61d,
-/*20171018 to 20180627
+/*20171018 to 20180711
1ì°¨ ì§ì—… 스킬 %d개를 ë” ì˜¬ë ¤ 주십시오.
You must consume all '%d' points in your 1st Tab.
*/
MSG_UPGRADESKILLERROR_MORE_FIRSTJOBSKILL = 0x61e,
-/*20171018 to 20180627
+/*20171018 to 20180711
1ì°¨ í˜¹ì€ 2ì°¨ ì§ì—… 스킬 %d개를 ë” ì˜¬ë ¤ 주십시오.
You must consume all '%d' remaining points in your 2nd Tab. 1st Tab is already done.
*/
MSG_UPGRADESKILLERROR_MORE_SECONDJOBSKILL = 0x61f,
-/*20171018 to 20180627
+/*20171018 to 20180711
변환 가능한 ì•„ì´í…œ
Items available for conversion
*/
MSG_ITEMSYOUCANCHANGE = 0x620,
-/*20171018 to 20180627
+/*20171018 to 20180711
변환할 ì•„ì´í…œ
Insert items to convert
*/
MSG_ITEMS_FOR_CHANGE = 0x621,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³€í™˜ì´ ë¶ˆê°€ëŠ¥í•œ ì¡°í•© 입니다.
Inconvertible combination
*/
MSG_SKILL_RECIPE_NOTEXIST = 0x622,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ë²¤í† ë¦¬ì˜ 무게가 너무 무ê²ìŠµë‹ˆë‹¤.
Inventory weight is too much
*/
MSG_SKILL_INVENTORY_WEIGHT_OVER = 0x623,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ë²¤í† ë¦¬ë¥¼ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
Please secure some room in the inventory
*/
MSG_SKILL_INVENTORY_KINDCNT_OVER = 0x624,
-/*20171018 to 20180627
+/*20171018 to 20180711
재료가 존재하지 않습니다.
Material doesn't exist
*/
MSG_SKILL_MATERIAL_FAIL = 0x625,
-/*20171018 to 20180627
+/*20171018 to 20180711
성공하였습니다.
Successful.
*/
MSG_SKILL_SUCCESS = 0x626,
-/*20171018 to 20180627
+/*20171018 to 20180711
실패 하였습니다.
Failed.
*/
MSG_SKILL_FAIL = 0x627,
-/*20171018 to 20180627
+/*20171018 to 20180711
실패하여 모든 재료가 사ë¼ì¡ŒìŠµë‹ˆë‹¤.
all materials are gone due to failure
*/
MSG_SKILL_FAIL_MATERIAL_DESTROY = 0x628,
-/*20171018 to 20180627
+/*20171018 to 20180711
지정하신 탭 ì´ë¦„ì´ ë„ˆë¬´ 길어 변경 í•  수 없습니다.
unable to change the name of the specified tab, because it's too long.
*/
MSG_FAILED_CHANGE_TABNAME = 0x629,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë” ì´ìƒ 추가 í•  수 없습니다.
Cannot add more.
*/
MSG_FAILED_ADD_TAB = 0x62a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ì¦ì— 실패 했습니다.
Authentication failed.
*/
MSG_FAILED_LOCKSERVER = 0x62b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìžë™ ìž…ë ¥ 방지
Bot checks
*/
MSG_BOT_CHECK = 0x62c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°ì •ì´ ì•Šëœ ì•„ì´í…œì€ 재료로 사용할 수 없습니다.
Items cannot be used in materials cannot be emotional.
*/
MSG_SKILL_FAIL_MATERIAL_IDENTITY = 0x62d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì†í•˜ì‹  IP는 ë¼ê·¸ë‚˜ë¡œí¬ 온ë¼ì¸ ì´ìš©ì´ 불가능 합니다. ê³ ê° ì§€ì› ì„¼í„° ë˜ëŠ” 홈페ì´ì§€ë¡œ ë¬¸ì˜ í•´ 주십시오.
It is impossible to connect using this IP in Ragnarok Online. Please contact the customer support center or home.
*/
MSG_BAN_IP_BLOCK = 0x62e,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호가 6회 ì´ìƒ 잘못 ìž…ë ¥ë˜ì–´ ìž ì‹œ ë™ì•ˆ ì ‘ì†ì´ 제한ë©ë‹ˆë‹¤. ê³ ê°ë‹˜ì˜ ê°œì¸ì •ë³´ë¥¼ 다시 í•œ 번 확ì¸í•´ 주시길 ë°”ëžë‹ˆë‹¤.
You have entered a wrong password for more than six times, please check your personal information again.
*/
MSG_BAN_INVALID_PWD_CNT = 0x62f,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•©ì„±ì— ì‚¬ìš©í•œ ì•„ì´í…œì€ 소모ë©ë‹ˆë‹¤. 괜찮겠습니까?
Consumption items are used in the synthesis. Are you sure?
*/
MSG_MIX_ACCEPT = 0x630,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì™¼ìª½ì— ë³´ì´ëŠ” ê¸€ìž ë° ìˆ«ìžì¡°í•©ì„ 입력해주세요.
Please input the captcha code found at your left side.
*/
MSG_BOT_CHECK_NOTIC = 0x631,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 설명 -
Describes the battlefield --
*/
MSG_DESCRIBE_BATTLEFIELD = 0x632,
-/*20171018 to 20180627
+/*20171018 to 20180711
입장 대기 ìƒíƒœ -
Waiting for admission --
*/
MSG_BATTLEFIELD_STATUS = 0x633,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 입장 ì‹ ì²­ ë„움ë§
Request help battle position
*/
MSG_BATTLEFIELD_HELP = 0x634,
-/*20171018 to 20180627
+/*20171018 to 20180711
죄송합니다. 해당 ì§ì—…ì˜ ìºë¦­í„°ëŠ” 현재 테스트를 위해서 ì ‘ì†ì´ 금지ë©ë‹ˆë‹¤.
Sorry the character you are trying to use is banned for testing connection.
*/
MSG_BAN_NOT_ALLOWED_JOBCLASS = 0x635,
-/*20171018 to 20180627
+/*20171018 to 20180711
모든 장비 해제
Remove all equipment
*/
MSG_REMOVE_EQUIPEDITEM = 0x636,
-/*20171018 to 20180627
+/*20171018 to 20180711
미니 ì•„ì´ì½˜
Mini Icon
*/
MSG_MINI_ICON = 0x637,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§„ì˜ A : ì§„ì˜ B
Camp A: Camp B
*/
MSG_BATTLEFIELD_TEAM = 0x638,
-/*20171018 to 20180627
+/*20171018 to 20180711
대기열
Wait
*/
MSG_WAIT_STATUS = 0x639,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 신청 취소 알림
cancellation notice of Battlefield registration.
*/
MSG_NOTIFY_BATTLEFIELD_CANCEL = 0x63a,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 í•„ìš” ì¸ì›
Required field for staff
*/
MSG_BATTLEFIELD_COUNT = 0x63b,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 A 대기 ì¸ì›
Battlefield staff A is waiting.
*/
MSG_BATTLEFIELD_ATEAM_COUNT = 0x63c,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 B 대기 ì¸ì›
Battlefield staff B is waiting.
*/
MSG_BATTLEFIELD_BTEAM_COUNT = 0x63d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚´ 대기 ìƒí™© : %d(ì§„ì˜ A)
Waiting for my situation: %d (Camp A)
*/
MSG_BATTLEFIELD_ATEAM_WAIT = 0x63e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚´ 대기 ìƒí™© : %d(ì§„ì˜ B)
Waiting for my situation: %d (Camp B)
*/
MSG_BATTLEFIELD_BTEAM_WAIT = 0x63f,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 ì•„ì´ì½˜ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.
Battlefield display icon.
*/
MSG_SHOW_BATTLEFIELD_ICON = 0x640,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 ì•„ì´ì½˜ì„ 보여주지 않습니다.
Does not display the icon field.
*/
MSG_DONT_SHOW_BATTLEFIELD_ICON = 0x641,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 ì´ë™ 알림
Field notification was moved.
*/
MSG_NOTIFY_BATTLEFIELD_MOVE = 0x642,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 입장 보류 알림
Admission pending notification of the battlefield
*/
MSG_NOTIFY_BATTLEFIELD_DEFER = 0x643,
-/*20171018 to 20180627
+/*20171018 to 20180711
누군가
Anyone
*/
MSG_WHO_IS = 0x644,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s](으)로부터 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 받았습니다.
[%s] deal '%d' damage on you.
*/
MSG_I_RECEIVED_DAMAGE = 0x645,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ë‹˜ì´ [%s](으)로부터 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 받았습니다.
[%s] received damage from [%s] with '%d' damage.
*/
MSG_PARTY_RECEIVED_DAMAGE = 0x646,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ì—게 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 주었습니다.
[%s] received '%d' damage.
*/
MSG_I_GAVE_DAMAGE = 0x647,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ë‹˜ì´ [%s]ì—게 '%d'ì˜ ë°ë¯¸ì§€ë¥¼ 주었습니다.
[%s] deal damage to [%s] with '%d' damage.
*/
MSG_PARTY_GAVE_DAMAGE = 0x648,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s %d 개 드롭
You dropped '%s' (%d).
*/
MSG_DROP_ITEM = 0x649,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]í€˜ìŠ¤íŠ¸ì˜ [%s]몬스터를 처치하였습니다. (%d/%d)
[%s] Quest - defeated [%s] progress (%d/%d)
*/
MSG_CLEAR_QUEST_MONSTER = 0x64a,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s 퀘스트가 ì‚­ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
The Quest '%s' has been removed.
*/
MSG_DELETE_QUEST = 0x64b,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]님ì´
[%s] has
*/
MSG_NOTIFY_WHO = 0x64c,
-/*20171018 to 20180627
+/*20171018 to 20180711
'%d'ì˜ ê²½í—˜ì¹˜ë¥¼
You acquired '%d' Experience Points
*/
MSG_NOTIFY_EXP = 0x64d,
-/*20171018 to 20180627
+/*20171018 to 20180711
'%d'ì˜ ìž¡ê²½í—˜ì¹˜ë¥¼
You acquired '%d' Job Experience Points
*/
MSG_NOTIFY_JOBEXP = 0x64e,
-/*20171018 to 20180627
+/*20171018 to 20180711
íšë“했습니다.
gained.
*/
MSG_GET = 0x64f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì‹¤í–ˆìŠµë‹ˆë‹¤.
has lost.
*/
MSG_LOSS = 0x650,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s](으)로부터 '%d'ì˜ ì½”ì¸ì„ 스틸했습니다.
From [%s], '%d' coins were stolen.
*/
MSG_NOTIFY_STEAL_COIN = 0x651,
-/*20171018 to 20180627
+/*20171018 to 20180711
전투 메시지
Battle Message
*/
MSG_VIEW_COMBAT_MSG = 0x652,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ì› ì „íˆ¬ 메시지
Display Party Battle Message
*/
MSG_VIEW_PARTY_COMBAT_MSG = 0x653,
-/*20171018 to 20180627
+/*20171018 to 20180711
íšë“ 경험치
Display Experience Message
*/
MSG_VIEW_GETTING_EXP_MSG = 0x654,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì›ì˜ íšë“ 경험치
Display Party Experience Message
*/
MSG_VIEW_PARTY_GETTING_EXP_MSG = 0x655,
-/*20171018 to 20180627
+/*20171018 to 20180711
퀘스트 정보 표시
Display Quest Info Message
*/
MSG_VIEW_QUEST_INFO_MSG = 0x656,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 정보 표시
Display Battlefield Message
*/
MSG_VIEW_BATTLEFIELD_INFO_MSG = 0x657,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ì—게
[%s]
*/
MSG_NOTIFY_TARGET_WHO = 0x658,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s] ìŠ¤í‚¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
Casts [%s] skill.
*/
MSG_NOTIFY_SKILL_TO_TARGET = 0x659,
-/*20171018 to 20180627
+/*20171018 to 20180711
기능제한ìƒíƒœ
Activate lock function
*/
MSG_LOCK_MOUSE = 0x65a,
-/*20171018 to 20180627
+/*20171018 to 20180711
기능제한해제ìƒíƒœ
Deactivate lock function
*/
MSG_UNLOCK_MOUSE = 0x65b,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ë‹˜ì´ [%s](으)로부터 '%s' 를 íšë“ 했습니다.
Citizens of Midgard, Lady Luck shines upon [%s] !! [%s] has awarded the player with '%s' !!
*/
MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN = 0x65c,
-/*20171018 to 20180627
+/*20171018 to 20180711
소드맨
Swordman
*/
MSG_JOB_SWORDMAN = 0x65d,
-/*20171018 to 20180627
+/*20171018 to 20180711
매지션
Magician
*/
MSG_JOB_MAGICIAN = 0x65e,
-/*20171018 to 20180627
+/*20171018 to 20180711
아처
Archer
*/
MSG_JOB_ARCHER = 0x65f,
-/*20171018 to 20180627
+/*20171018 to 20180711
어콜ë¼ì´íŠ¸
Acolyte
*/
MSG_JOB_ACOLYTE = 0x660,
-/*20171018 to 20180627
+/*20171018 to 20180711
머첸트
Merchant
*/
MSG_JOB_MERCHANT = 0x661,
-/*20171018 to 20180627
+/*20171018 to 20180711
씨프
Thief
*/
MSG_JOB_THIEF = 0x662,
-/*20171018 to 20180627
+/*20171018 to 20180711
나ì´íŠ¸
Knight
*/
MSG_JOB_KNIGHT = 0x663,
-/*20171018 to 20180627
+/*20171018 to 20180711
프리스트
Priest
*/
MSG_JOB_PRIEST = 0x664,
-/*20171018 to 20180627
+/*20171018 to 20180711
위저드
Wizard
*/
MSG_JOB_WIZARD = 0x665,
-/*20171018 to 20180627
+/*20171018 to 20180711
블랙스미스
Black Smith
*/
MSG_JOB_BLACKSMITH = 0x666,
-/*20171018 to 20180627
+/*20171018 to 20180711
헌터
Hunter
*/
MSG_JOB_HUNTER = 0x667,
-/*20171018 to 20180627
+/*20171018 to 20180711
어새신
Assasin
*/
MSG_JOB_ASSASSIN = 0x668,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¬ë£¨ì„¸ì´ë”
Crusader
*/
MSG_JOB_CRUSADER = 0x669,
-/*20171018 to 20180627
+/*20171018 to 20180711
몽í¬
Monk
*/
MSG_JOB_MONK = 0x66a,
-/*20171018 to 20180627
+/*20171018 to 20180711
세ì´ì§€
Sage
*/
MSG_JOB_SAGE = 0x66b,
-/*20171018 to 20180627
+/*20171018 to 20180711
로그
Rogue
*/
MSG_JOB_ROGUE = 0x66c,
-/*20171018 to 20180627
+/*20171018 to 20180711
알케미스트
Alchemist
*/
MSG_JOB_ALCHEMIST = 0x66d,
-/*20171018 to 20180627
+/*20171018 to 20180711
바드
Bard
*/
MSG_JOB_BARD = 0x66e,
-/*20171018 to 20180627
+/*20171018 to 20180711
댄서
Dancer
*/
MSG_JOB_DANCER = 0x66f,
-/*20171018 to 20180627
+/*20171018 to 20180711
룬 나ì´íŠ¸
Rune Knight
*/
MSG_JOB_RUNE_KNIGHT = 0x670,
-/*20171018 to 20180627
+/*20171018 to 20180711
워ë¡
Warlock
*/
MSG_JOB_WARLOCK = 0x671,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë ˆì¸ì ¸
Ranger
*/
MSG_JOB_RANGER = 0x672,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„í¬ ë¹„ìˆ
Arc Bishop
*/
MSG_JOB_ARCHBISHOP = 0x673,
-/*20171018 to 20180627
+/*20171018 to 20180711
미케닉
Mechanic
*/
MSG_JOB_MECHANIC = 0x674,
-/*20171018 to 20180627
+/*20171018 to 20180711
길로틴 í¬ë¡œìŠ¤
Guillotine Cross
*/
MSG_JOB_GUILLOTINE_CROSS = 0x675,
-/*20171018 to 20180627
+/*20171018 to 20180711
로얄가드
Royal Guard
*/
MSG_JOB_ROYAL_GUARD = 0x676,
-/*20171018 to 20180627
+/*20171018 to 20180711
소서러
Sorcerer
*/
MSG_JOB_SORCERER = 0x677,
-/*20171018 to 20180627
+/*20171018 to 20180711
민스트럴
Minstrel
*/
MSG_JOB_MINSTREL = 0x678,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì›ë”러
Wanderer
*/
MSG_JOB_WANDERER = 0x679,
-/*20171018 to 20180627
+/*20171018 to 20180711
수ë¼
Sura
*/
MSG_JOB_SURA = 0x67a,
-/*20171018 to 20180627
+/*20171018 to 20180711
제네릭
Genetic
*/
MSG_JOB_GENETIC = 0x67b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì‰ë„ìš° ì²´ì´ì„œ
Shadow Chaser
*/
MSG_JOB_SHADOW_CHASER = 0x67c,
-/*20171018 to 20180627
+/*20171018 to 20180711
소드맨 하ì´
High Swordman
*/
MSG_JOB_SWORDMAN_H = 0x67d,
-/*20171018 to 20180627
+/*20171018 to 20180711
매지션 하ì´
High Magician
*/
MSG_JOB_MAGICIAN_H = 0x67e,
-/*20171018 to 20180627
+/*20171018 to 20180711
아처 하ì´
High Archer
*/
MSG_JOB_ARCHER_H = 0x67f,
-/*20171018 to 20180627
+/*20171018 to 20180711
어콜ë¼ì´íŠ¸ 하ì´
High Acolyte
*/
MSG_JOB_ACOLYTE_H = 0x680,
-/*20171018 to 20180627
+/*20171018 to 20180711
머첸트 하ì´
High Merchant
*/
MSG_JOB_MERCHANT_H = 0x681,
-/*20171018 to 20180627
+/*20171018 to 20180711
씨프 하ì´
High Thief
*/
MSG_JOB_THIEF_H = 0x682,
-/*20171018 to 20180627
+/*20171018 to 20180711
로드나ì´íŠ¸
Lord Knight
*/
MSG_JOB_KNIGHT_H = 0x683,
-/*20171018 to 20180627
+/*20171018 to 20180711
하ì´í”„리스트
High Priest
*/
MSG_JOB_PRIEST_H = 0x684,
-/*20171018 to 20180627
+/*20171018 to 20180711
하ì´ìœ„저드
High Wizard
*/
MSG_JOB_WIZARD_H = 0x685,
-/*20171018 to 20180627
+/*20171018 to 20180711
í™”ì´íŠ¸ìŠ¤ë¯¸ìŠ¤
White Smith
*/
MSG_JOB_BLACKSMITH_H = 0x686,
-/*20171018 to 20180627
+/*20171018 to 20180711
스나ì´í¼
Sniper
*/
MSG_JOB_HUNTER_H = 0x687,
-/*20171018 to 20180627
+/*20171018 to 20180711
어새신í¬ë¡œìŠ¤
Assasin Cross
*/
MSG_JOB_ASSASSIN_H = 0x688,
-/*20171018 to 20180627
+/*20171018 to 20180711
팔ë¼ë”˜
Paladin
*/
MSG_JOB_CRUSADER_H = 0x689,
-/*20171018 to 20180627
+/*20171018 to 20180711
챔피온
Champion
*/
MSG_JOB_MONK_H = 0x68a,
-/*20171018 to 20180627
+/*20171018 to 20180711
프로페서
Professor
*/
MSG_JOB_SAGE_H = 0x68b,
-/*20171018 to 20180627
+/*20171018 to 20180711
스토커
Stalker
*/
MSG_JOB_ROGUE_H = 0x68c,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¬ë¦¬ì—ì´í„°
Creator
*/
MSG_JOB_ALCHEMIST_H = 0x68d,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ë¡œìš´
Clown
*/
MSG_JOB_BARD_H = 0x68e,
-/*20171018 to 20180627
+/*20171018 to 20180711
집시
Gypsy
*/
MSG_JOB_DANCER_H = 0x68f,
-/*20171018 to 20180627
+/*20171018 to 20180711
노비스
Wedding
*/
MSG_JOB_NOVICE = 0x690,
-/*20171018 to 20180627
+/*20171018 to 20180711
하ì´ë…¸ë¹„스
High Novice
*/
MSG_JOB_NOVICE_H = 0x691,
-/*20171018 to 20180627
+/*20171018 to 20180711
슈í¼ë…¸ë¹„스
Super Novice
*/
MSG_JOB_SUPERNOVICE = 0x692,
-/*20171018 to 20180627
+/*20171018 to 20180711
건슬ë§ê±°
Gunslinger
*/
MSG_JOB_GUNSLINGER = 0x693,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹Œìž
Ninja
*/
MSG_JOB_NINJA = 0x694,
-/*20171018 to 20180627
+/*20171018 to 20180711
태권소년/소녀
Taekwon F/M
*/
MSG_JOB_TAEKWON = 0x695,
-/*20171018 to 20180627
+/*20171018 to 20180711
권성
Star Gladiator
*/
MSG_JOB_STAR = 0x696,
-/*20171018 to 20180627
+/*20171018 to 20180711
소울ë§ì»¤
Soul Linker
*/
MSG_JOB_LINKER = 0x697,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티모집
Party Recruitment
*/
MSG_SEEK_PARTY_MEMBER = 0x698,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 모집 리스트
Party Booking List
*/
MSG_SEEK_PARTY_LIST = 0x699,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 모집 중
Recruiting Party
*/
MSG_SEEK_PARTY_CHECK = 0x69a,
-/*20171018 to 20180627
+/*20171018 to 20180711
[활]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Bow] must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_BOW = 0x69b,
-/*20171018 to 20180627
+/*20171018 to 20180711
[악기/채ì°]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Musical Instrument/Whip] must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_INSTRUMENT_WHIP = 0x69c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ë¬¸ê³¼ 숫ìžë§Œ 사용가능합니다.
Only alphanumeric characters are allowed.
*/
MSG_BAD_CHAR = 0x69d,
-/*20171018 to 20180627
+/*20171018 to 20180711
알림
Notice
*/
MSG_ALRAM = 0x69e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì  ì •ë³´ê°€ 정확하지 ì•Šì•„ ì•„ì´í…œ 구매가 실패하였습니다.
Item purchase failed due to incorrect shop information.
*/
MSG_FAIL_BUY_ITEM_INVALID_MCSTORE = 0x69f,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지 ì•„ì´í…œ ì°½ì—ì„œ 버릴 수 있습니다.
Item cannot be discarded from the window.
*/
MSG_CAN_DROP_ITEM_TO_ITEMWND = 0x6a0,
-/*20171018 to 20180627
+/*20171018 to 20180711
시간
Time
*/
MSG_TIME = 0x6a1,
-/*20171018 to 20180627
+/*20171018 to 20180711
맵
Map
*/
MSG_MAP = 0x6a2,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래 ìƒíƒœì—서는 ì•„ì´í…œ 사용 ë° ìž¥ë¹„ ì°©ìš©/해제를 í•  수 없습니다.
You can't use, equip or disarm items when you're trading.
*/
MSG_CANT_USE_WHEN_OPENED_EXCHANGEWND = 0x6a3,
-/*20171018 to 20180627
+/*20171018 to 20180711
미지정값
Unspecified value
*/
MSG_HOTKEY_UNKOWN = 0x6a4,
-/*20171018 to 20180627
+/*20171018 to 20180711
/stateinfo : ìƒíƒœ ì•„ì´ì½˜ì— 대한 ì„¤ëª…ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. On Off
/stateinfo: Shows the description of status icons. On Off
*/
MSG_EXPLAIN_STATEINFO = 0x6a5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒíƒœ ì •ë³´ On : ìƒíƒœ ì•„ì´ì½˜ì— 대한 ì„¤ëª…ì´ í‘œì‹œë©ë‹ˆë‹¤.
Status Information On: Status icon description is enabled.
*/
MSG_SHOW_STATEINFO_ON = 0x6a6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒíƒœ ì •ë³´ Off: ìƒíƒœ ì•„ì´ì½˜ì— 대한 ì„¤ëª…ì´ í‘œì‹œë˜ì§€ 않습니다.
Status Information Off: Status icon description is disabled.
*/
MSG_SHOW_STATEINFO_OFF = 0x6a7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— %dê°œ ì´ìƒì€ ì‚´ 수 없습니다.
It is not possible to purchase the same item more than %d pieces at a time
*/
MSG_LIMIT_BUY_ITEM2 = 0x6a8,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ ì•„ì´í…œì€ í•œë²ˆì— %dê°œ ì´ìƒì€ 팔 수 없습니다.
It is not possible to purchase the same item more than %d pieces at a time
*/
MSG_LIMIT_SELL_ITEM = 0x6a9,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì•„ì´í…œì˜ ì´ êµ¬ë§¤ 가능 개수는 %dê°œ 입니다.
Can purchase upto %d pieces of the same item at a time.
*/
MSG_CAN_BUY_ITEM_NUM = 0x6aa,
-/*20171018 to 20180627
+/*20171018 to 20180711
설정한 ë‚´ìš©ì€ ì •ìƒ ì¢…ë£Œ ì‹œ [%s\%s]ì— ì €ìž¥ë©ë‹ˆë‹¤.
User customized key is saved to [%s\%s]
*/
MSG_SAVE_HOTKEY_TO_FILE = 0x6ab,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s] ë‹˜ì€ í˜„ìž¬ êµí™˜ ì‹ ì²­ì„ ë°›ì„ ìˆ˜ 없는 ìƒíƒœìž…니다.
[%s] is currently on trade and cannot accept the request.
*/
MSG_CHARACTER_IS_BUSY = 0x6ac,
-/*20171018 to 20180627
+/*20171018 to 20180711
RO_HELP
RO_HELP.
*/
MSG_RO_HELP = 0x6ad,
-/*20171018 to 20180627
+/*20171018 to 20180711
모루가 존재 하지 않습니다.
Anvil does not exist.
*/
MSG_HAVENOT_ANVIL = 0x6ae,
-/*20171018 to 20180627
+/*20171018 to 20180711
노비스 레벨 10 ì´í•˜ëŠ” ê·“ì†ë§ì´ 금지ë©ë‹ˆë‹¤
Novice below level 10 is not allowed to whisper.
*/
MSG_WHISPER_BLOCK_NOVICE_LEVEL10 = 0x6af,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격
Attack
*/
MSG_JOB_ATTACKER = 0x6b0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°©ì–´
Defense
*/
MSG_JOB_TANKER = 0x6b1,
-/*20171018 to 20180627
+/*20171018 to 20180711
회복
Consumables
*/
MSG_JOB_HEALER = 0x6b2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³´ì¡°
Support
*/
MSG_JOB_ASSISTANCE = 0x6b3,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 모집 관련 명령어
Party recruitment related command
*/
MSG_DESCRIBE_PARTY_BOOKING = 0x6b4,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 ë™ë§¹ì‹ ì²­ì´ 불가능합니다
Guild alliance application is not possible.
*/
MSG_GUILD_ALLY_REQUEST_DISABLE = 0x6b5,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 ì ëŒ€ì‹ ì²­ì´ 불가능합니다
Guild hostility application is not possible.
*/
MSG_GUILD_HOSTILE_REQUEST_DISABLE = 0x6b6,
-/*20171018 to 20180627
+/*20171018 to 20180711
아지트맵ì—서는 친구추가가 불가능합니다
Adding friends is not possible in this map.
*/
MSG_FRIEND_ADD_FALSE_AGIT = 0x6b7,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµ¬ë§¤ë…¸ì  ê°œì„¤
Buying Store Window
*/
MSG_BUYINGSTORE_MAKEWND_TITLE = 0x6b8,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매가 :
Price:
*/
MSG_BUYINGSTORE_MAKEWND_PRICE = 0x6b9,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지액 :
Money:
*/
MSG_BUYINGSTORE_MAKEWND_MYZENY = 0x6ba,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매 í•œë„ì•¡
Purchase Zeny Limit
*/
MSG_BUYINGSTORE_MAKEWND_LIMITZENY = 0x6bb,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매할 ì•„ì´í…œì„ 등ë¡í•˜ì§€ 않았습니다. 구매하실 ì•„ì´í…œì„ 등ë¡í•´ 주세요
Please register the item first that has to be purchased.
*/
MSG_BUYINGSTORE_MAKEWND_ADDITEM = 0x6bc,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì˜ ê°€ê²©ì„ ìž…ë ¥í•´ 주세요.
Enter the price for item %s.
*/
MSG_BUYINGSTORE_MAKEWND_INPUTPRICE = 0x6bd,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì˜ ê°€ê²©ì„ 9999만 Zenyì´í•˜ë¡œ 입력해 주세요.
Enter the price for item %s. It has to be below 99990000 Zeny.
*/
MSG_BUYINGSTORE_MAKEWND_REINPUTPRICE = 0x6be,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì˜ êµ¬ë§¤ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
Enter the item number for %s.
*/
MSG_BUYINGSTORE_MAKEWND_INPUTNUM = 0x6bf,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì˜ 소지수량과 êµ¬ë§¤ìˆ˜ëŸ‰ì˜ í•©ì´ 9999ê°œ ì´ìƒìž…니다. 9999ê°œ ì´í•˜ì˜ ìˆ˜ëŸ‰ì„ ìž…ë ¥í•´ 주세요.
The sum of purchasing and belonging items is over 9999. The sum has to be bellow 9999.
*/
MSG_BUYINGSTORE_MAKEWND_REINPUTNUM = 0x6c0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¤‘ë³µëœ ì•„ì´í…œì´ 존재합니다.
You have duplicate items in your purchase list.
*/
MSG_BUYINGSTORE_MAKEWND_DUPLICATEITEM = 0x6c1,
-/*20171018 to 20180627
+/*20171018 to 20180711
제한 ê¸ˆì•¡ì„ ìž…ë ¥í•´ 주세요
Enter the limited price.
*/
MSG_BUYINGSTORE_MAKEWND_INPUTLIMITZENY = 0x6c2,
-/*20171018 to 20180627
+/*20171018 to 20180711
입력한 ì œí•œê¸ˆì•¡ì´ ì†Œì§€ê¸ˆì•¡ì„ ì´ˆê³¼í•©ë‹ˆë‹¤. 다시 설정해 주세요
You have entered a greater amount of zeny than you have. Please check your zeny.
*/
MSG_BUYINGSTORE_MAKEWND_REINPUTLIMITZENY = 0x6c3,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s : %s Zeny => %s EA
%s: %s Zeny => %s ea.
*/
MSG_BUYINGSTORE_MAKEWND_ITEMLIST = 0x6c4,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매 가능한 ì•„ì´í…œ 목ë¡
Available items:
*/
MSG_BUYINGSTORE_MIRRORBUYITEMLIST = 0x6c5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚˜ì˜ êµ¬ë§¤ë…¸ì 
Purchase list:
*/
MSG_BUYINGSTORE_MYSHOPWND_TITLE = 0x6c6,
-/*20171018 to 20180627
+/*20171018 to 20180711
제한금액 : %s Zeny
Price limit: %s Zeny
*/
MSG_BUYINGSTORE_MYSHOPWND_LIMITZENY = 0x6c7,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s %s Zeny %d 개
Buying %s for %s Zeny. Amount: %d.
*/
MSG_BUYINGSTORE_MYSHOPWND_ITEMINFO = 0x6c8,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매 ë…¸ì 
Wanted items
*/
MSG_BUYINGSTORE_SHOPWND_TITLE = 0x6c9,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ 가능한 ì•„ì´í…œ 목ë¡
Available items:
*/
MSG_BUYINGSTORE_MIRRORSELLWND_TITLE = 0x6ca,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì•„ì´í…œì˜ ì´ íŒë§¤ 가능 개수는 %dê°œ 입니다.
The max. number of items you can sell is %d.
*/
MSG_BUYINGSTORE_SELLWND_LIMITNUM = 0x6cb,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매노ì ì˜ ì œí•œê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì—¬ íŒë§¤í•  수 없습니다.
Buyer has insufficient money, lower the amount of items you're selling.
*/
MSG_BUYINGSTORE_SELLWND_LACKBUYERZENY = 0x6cc,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매ìƒì  ê°œì„¤ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to open purchase shop.
*/
MSG_BUYINGSTORE_OPEN_FAILED = 0x6cd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì˜ ì´ ë¬´ê²Œê°€ %d ë§Œí¼ ì†Œì§€ í•œê³„ëŸ‰ì„ ì´ˆê³¼í•©ë‹ˆë‹¤. 다시 설정해 주세요.
You exceed the total amount of items.
*/
MSG_BUYINGSTORE_OVERWEIGHT = 0x6ce,
-/*20171018 to 20180627
+/*20171018 to 20180711
제한금액만í¼ì˜ ì•„ì´í…œì„ ëª¨ë‘ êµ¬ë§¤í•˜ì˜€ìŠµë‹ˆë‹¤.
You have purchased all items within the limited price.
*/
MSG_BUYINGSTORE_TRADE_OVERLIMITZENY = 0x6cf,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ ëª¨ë‘ êµ¬ë§¤í–ˆìŠµë‹ˆë‹¤.
You purchased all items.
*/
MSG_BUYINGSTORE_TRADE_BUYCOMPLETE = 0x6d0,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매ìžì˜ ìž”ì•¡ì´ ë¶€ì¡±í•˜ì—¬ 거래가 실패하였습니다.
Failed to deal because you have not enough Zeny.
*/
MSG_BUYINGSTORE_TRADE_LACKBUYERZENY = 0x6d1,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s %d개를 %dzì— íŒë§¤í•˜ì˜€ìŠµë‹ˆë‹¤.
You have sold %s. Amount: %d. Total Zeny: %dz
*/
MSG_BUYINGSTORE_TRADE_SELLCOMPLETE = 0x6d2,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì€ í¬ë§ 구매갯수보다 ìˆ˜ëŸ‰ì´ ë§Žì•„ íŒë§¤í•˜ì§€ 못하였습니다
%s item could not be sold because you do not have the wanted amount of items.
*/
MSG_BUYINGSTORE_TRADE_OVERCOUNT = 0x6d3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì†Œí™˜ëœ ì •ë ¹ì´ ì—†ìŠµë‹ˆë‹¤.
You don't have any summoned spirits.
*/
MSG_USESKILL_FAIL_EL_SUMMON = 0x6d4,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버연합대전 제약사항 입니다.
This is a restricted server.
*/
MSG_AGAINSTSERVERSIEGEWARFARE_RESTRICTION = 0x6d5,
-/*20171018 to 20180627
+/*20171018 to 20180711
OTP 비밀번호는 6ìžë¦¬ 입니다.
OTP password is 6 digits long.
*/
MSG_OTP_MUST_6_CHAR = 0x6d6,
-/*20171018 to 20180627
+/*20171018 to 20180711
OTP ì •ë³´ê°€ 없습니다. 관리ìžì—게 문ì˜í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
OTP information is unavailable. Please contact your administrator.
*/
MSG_DB_ERROR = 0x6d7,
-/*20171018 to 20180627
+/*20171018 to 20180711
OTP ì¸ì¦ì— 실패 했습니다.
OTP authentication failed.
*/
MSG_OTP_FAILED = 0x6d8,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티광고가 추가ë˜ì—ˆìŠµë‹ˆë‹¤
Party ad has been added.
*/
MSG_PARTY_BOOKING_NOTIFY = 0x6d9,
-/*20171018 to 20180627
+/*20171018 to 20180711
모집 중
Recruit party members
*/
MSG_PARTY_BOOKING_REQURT = 0x6da,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—­í• 
Roles
*/
MSG_PARTY_BOOKING_TYPE = 0x6db,
-/*20171018 to 20180627
+/*20171018 to 20180711
1ì°¨ ì§ì—…
1st Jobs
*/
MSG_PARTY_BOOKING_TYPE_1 = 0x6dc,
-/*20171018 to 20180627
+/*20171018 to 20180711
2ì°¨ ì§ì—…
2nd Jobs
*/
MSG_PARTY_BOOKING_TYPE_2 = 0x6dd,
-/*20171018 to 20180627
+/*20171018 to 20180711
3-1ì°¨ ì§ì—…
3-1 Classes
*/
MSG_PARTY_BOOKING_TYPE_3_1 = 0x6de,
-/*20171018 to 20180627
+/*20171018 to 20180711
3-2ì°¨ ì§ì—…
3-2 Classes
*/
MSG_PARTY_BOOKING_TYPE_3_2 = 0x6df,
-/*20171018 to 20180627
+/*20171018 to 20180711
전승 1ì°¨ ì§ì—…
1st Job High
*/
MSG_PARTY_BOOKING_TYPE_1PLUS = 0x6e0,
-/*20171018 to 20180627
+/*20171018 to 20180711
전승 2ì°¨ ì§ì—…
2nd Jobs High
*/
MSG_PARTY_BOOKING_TYPE_2PLUS = 0x6e1,
-/*20171018 to 20180627
+/*20171018 to 20180711
기타 ì§ì—…êµ°
Other Jobs
*/
MSG_PARTY_BOOKING_TYPE_ETC = 0x6e2,
-/*20171018 to 20180627
+/*20171018 to 20180711
모집 하기
Recruit
*/
MSG_PARTY_BOOKING_REQURTING = 0x6e3,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì›ì„ 모집합니다.
Open party recruitment window.
*/
MSG_PARTY_BOOKING_REQURT_TIP = 0x6e4,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색 중 -
Searching -
*/
MSG_PARTY_BOOKING_SEARCH = 0x6e5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëª¨ë‘ ì„ íƒ
Select All
*/
MSG_PARTY_BOOKING_ALL_SELECT = 0x6e6,
-/*20171018 to 20180627
+/*20171018 to 20180711
최소한 í•˜ë‚˜ì˜ ì§ì—…ì´ ëª¨ì§‘ 중ì´ì–´ì•¼ 합니다.
Recruitment of at least one job must be running.
*/
MSG_PARTY_BOOKING_ERR1 = 0x6e7,
-/*20171018 to 20180627
+/*20171018 to 20180711
최소 1ê°œì´ìƒì˜ ì§ì—…ì„ ì„ íƒí•´ 주셔야 합니다.
You have to select atleast 1 or more jobs.
*/
MSG_PARTY_BOOKING_ERR2 = 0x6e8,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì„ íƒëœ ì§ì—…ì€ %d개입니다. 최대 6개까지만 ì§ì—…ì„ ì„ íƒí•  수 있습니다.
You have selected %d Jobs. You can only select up to 6 different jobs.
*/
MSG_PARTY_BOOKING_ERR3 = 0x6e9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë ˆë²¨ì— ìˆ«ìž ì´ì™¸ì˜ 문ìžëŠ” 들어갈 수 없습니다.
Only numeric characters are allowed.
*/
MSG_PARTY_BOOKING_ERR4 = 0x6ea,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë ˆë²¨ì€ 1~150 사ì´ì˜ 숫ìžë¥¼ 입력해 주세요.
Please enter levels between 1~150.
*/
MSG_PARTY_BOOKING_ERR5 = 0x6eb,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 맵ì—서는 ì˜ìƒ 장비가 ë³´ì´ì§€ 않습니다.
Nothing found in the selected map.
*/
MSG_DISABLE_COSTUMEITEM_MAP = 0x6ec,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ ì°©ìš©í•  수 있는 ë ˆë²¨ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot equip this item with your current level.
*/
MSG_CANNOT_EQUIP_ITEM_LEVEL = 0x6ed,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ 사용할 수 있는 ë ˆë²¨ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot use this item with your current level.
*/
MSG_CANNOT_USE_ITEM_LEVEL = 0x6ee,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅모드 OnOff 활성화
Enable Battlemode
*/
MSG_CHATMODE_ONOFF = 0x6ef,
-/*20171018 to 20180627
+/*20171018 to 20180711
탭사ì´ì¦ˆ í¬ê¸°ê°€ 초과ë˜ì–´ 추가할 수 없습니다.
Failed to add because you have reached the limit.
*/
MSG_OVER_TABSIZE = 0x6f0,
-/*20171018 to 20180627
+/*20171018 to 20180711
창 표시 정보
Window Sign Information
*/
MSG_SET_CHATINFO = 0x6f1,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤
Sell
*/
MSG_SELL = 0x6f2,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매
Purchase
*/
MSG_BUY = 0x6f3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì  ê²€ìƒ‰
Search for Vends
*/
MSG_SEARCH_STOREINFO = 0x6f4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì  ì´ë¦„
Shop Name
*/
MSG_STORE_NAME = 0x6f5,
-/*20171018 to 20180627
+/*20171018 to 20180711
수량
Quantity
*/
MSG_SEARCH_ITEM_COUNT = 0x6f6,
-/*20171018 to 20180627
+/*20171018 to 20180711
가격
Cost
*/
MSG_SEARCH_ITEM_PRICE = 0x6f7,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색 결과가 너무 많습니다. 검색어를 ìžì„¸ížˆ ìž…ë ¥ í•´ 주세요.
Too much results have been found. Please do a more precisely search.
*/
MSG_SSI_FAILED_OVER_MAXCOUNT = 0x6f8,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ë…¸ì ì„ 여시겠습니까?
Do you want to open a street stall?
*/
MSG_OPEN_SEARCH_STORE = 0x6f9,
-/*20171018 to 20180627
+/*20171018 to 20180711
SSO ì¸ì¦ì— 실패하였습니다.
Failed to recognize SSO.
*/
MSG_SSO_FAILED = 0x6fa,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 해당지역으로 ì´ë™ í•  수 없습니다
Cannot move to the applied area.
*/
MSG_ZONE_MOVE_FAIL = 0x6fb,
-/*20171018 to 20180627
+/*20171018 to 20180711
단어가 í¬í•¨ëœ ì•„ì´í…œ 검색
searching item including the word
*/
MSG_SEARCH_INCLUDED = 0x6fc,
-/*20171018 to 20180627
+/*20171018 to 20180711
탈퇴한 유저입니다.
User has been expelled.
*/
MSG_WITHDREW_USERS = 0x6fd,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임 ì´ìš©ì— ë™ì˜í•˜ì§€ 않았습니다.
You have not accepted the user agreements yet.
*/
MSG_DIDNOT_AGREE = 0x6fe,
-/*20171018 to 20180627
+/*20171018 to 20180711
존재 하지 않는 계정입니다.
You will not be disconnect from the game.
*/
MSG_ACCOUNT_DOESNOT_EXIST = 0x6ff,
-/*20171018 to 20180627
+/*20171018 to 20180711
본 ê²Œìž„ì€ 12세 ì´ìš©ê°€ìž…니다.
It is available only for 12 hours.
*/
MSG_AGE_RESTRICTIONS = 0x700,
-/*20171018 to 20180627
+/*20171018 to 20180711
계정ë„ìš© 조사를 위한 블럭ìƒíƒœìž…니다.
Your account is blocked due to illegal use of the game account.
*/
MSG_ACCOUNT_BLOCK = 0x701,
-/*20171018 to 20180627
+/*20171018 to 20180711
버그조사를 위한 블럭ìƒíƒœìž…니다.
Your account is blocked because there may exist a bug with your account.
*/
MSG_BUG_BLOCK = 0x702,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Base, Job 경험치가 30분간 75% ì¦ê°€í•©ë‹ˆë‹¤.
Increases base exp and job exp gained by killing monsters up to 75% for 30 minutes.
*/
MSG_PLUSEXP75 = 0x703,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Base, Job 경험치가 30분간 50% ì¦ê°€í•©ë‹ˆë‹¤.
Increases base exp and job exp gained by killing monsters up to 50% for 30 minutes.
*/
MSG_PLUSEXP50 = 0x704,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤(구매) ì •ë³´ê°€ 없습니다.
No sales information.
*/
MSG_FAIL_OPEN_STORE = 0x705,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë” ì´ìƒ 검색 í•  수 없습니다.
Failed to search any further.
*/
MSG_SSI_FAILED_SEARCH_CNT = 0x706,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì•„ì´í…œ ëª…ì€ ì¡´ìž¬í•˜ì§€ 않습니다.
The item you have entered does not exist.
*/
MSG_SSI_FAILED_ITEM_DOES_NOT_EXIST = 0x707,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì§ ê²€ìƒ‰ í•  수 없습니다.
Cannot search yet.
*/
MSG_SSI_FAILED_LIMIT_SERACH_TIME = 0x708,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¹´ë“œ ì´ë¦„ ë˜ëŠ” ì ‘ë‘사(접미사)를 입력하세요
Enter the card name or prefix/suffix.
*/
MSG_SSI_TOOLTIP_OF_SERACHING_THE_CARD = 0x709,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚¨ì€ ê²€ìƒ‰ 횟수 : %d
Searches left: %d
*/
MSG_SSI_REST_OF_NUMBER_OF_SEARCHES = 0x70a,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색 ëœ ë…¸ì ì´ 없습니다.
No result has been found.
*/
MSG_SSI_FAILED_SEARCH_STORE = 0x70b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 가격 범위가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤.
The item price is too high.
*/
MSG_SSI_FAILED_PRICE_ISNOT_VALID = 0x70c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë°˜ 장비
Normal Gear
*/
MSG_GENERAL_EQUIPMENT = 0x70d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ìƒ 장비
Costume
*/
MSG_COSTUME_EQUIPMENT = 0x70e,
-/*20171018 to 20180627
+/*20171018 to 20180711
분
minute
*/
MSG_MINUTE = 0x70f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ˆ
second
*/
MSG_SECOND = 0x710,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ëª…ì„ ìž…ë ¥í•´ 주세요.
Please enter the name of the item.
*/
MSG_SSI_FAILED_ENTER_THE_NAME_OF_ITEM = 0x711,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì•„ì´í…œ ëª…ì€ ì¡´ìž¬í•˜ì§€ 않습니다.
The item you have entered does not exist.
*/
MSG_SSI_FAILED_NAME_OF_ITEM_DOES_NOT_EXIST = 0x712,
-/*20171018 to 20180627
+/*20171018 to 20180711
진입가능한 ë§µì´ ì¡´ìž¬í•˜ì§€ 않습니다.
The map is not available.
*/
MSG_NOT_EXIST_ENTRYMAP = 0x713,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì¹´ë“œ ì´ë¦„ì´ë‚˜ ì ‘ë‘사(접미사)는 존재하지 않습니다.
The selected name or prefix/suffix does not exist.
*/
MSG_SSI_FAILED_NAME_OF_CARD_DOES_NOT_EXIST = 0x714,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•œë²ˆì— êµ¬ë§¤ 가능 종류는 10개입니다.
You can purchase up to 10 items.
*/
MSG_CASH_FAILED_TOTAL_CNT = 0x715,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë¶€ ì•„ì´í…œì˜ 구매가 실패하였습니다.
Some items could not be purchased.
*/
MSG_CASH_FAILED_BUY_SOME = 0x716,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒë…„ì›”ì¼ 6ìžë¦¬ë¥¼ 입력하세요.(예시:801122)
Enter your 6-digit DOB(YYMMDD) (e.g: 801122)
*/
MSG_ENTER_PEOPLE_BIRTH = 0x717,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•Œ 수 없는 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.
Now Logging Out.
*/
MSG_RESULT_FAIL_UNKNOWN = 0x718,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë°ì´íƒ€ ë² ì´ìŠ¤ 오류가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.
A database error has occurred.
*/
MSG_RESULT_FAIL_DATABASE = 0x719,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°ë¥¼ 삭제하기 위해서는 길드ì—ì„œ 탈퇴 해야 합니다.
Please leave your guild first in order to remove your character.
*/
MSG_RESULT_FAIL_GUILD = 0x71a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°ë¥¼ 삭제하기 위해서는 파티ì—ì„œ 탈퇴 해야 합니다.
Please leave your party first in order to remove your character.
*/
MSG_RESULT_FAIL_PARTY = 0x71b,
-/*20171018 to 20180627
+/*20171018 to 20180711
시스템 설정으로 ì¸í•´ 삭제할 수 없습니다.
You cannot delete this character because the delete time has not expired yet.
*/
MSG_RESULT_FAIL_CONFIGURATION = 0x71c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì§ ì‚­ì œ 가능 ì‹œê°„ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot delete this character at the moment.
*/
MSG_RESULT_FAIL_DATE = 0x71d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒë…„ì›”ì¼ì´ ì¼ì¹˜í•˜ì§€ 않습니다.
Your entered birthday does not match.
*/
MSG_RESULT_FAIL_BIRTH = 0x71e,
-/*20171018 to 20180627
+/*20171018 to 20180711
친밀ë„ê°€ 부족합니다.
You lack of familiarity.
*/
MSG_USESKILL_FAIL_RELATIONGRADE = 0x71f,
-/*20171018 to 20180627
+/*20171018 to 20180711
스타ì¼ì²´ì¸ì§€ 파ì´í„° ìƒíƒœì—서만 사용가능합니다.
This is only available on style change for fighting classes.
*/
MSG_USESKILL_FAIL_STYLE_CHANGE_FIGHTER = 0x720,
-/*20171018 to 20180627
+/*20171018 to 20180711
스타ì¼ì²´ì¸ì§€ 그래플러 ìƒíƒœì—서만 사용가능합니다.
This is only available on style change for novice.
*/
MSG_USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 0x721,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티등ë¡ì‹¤íŒ¨
Party Registration failed.
*/
MSG_PARTY_REGISTRATION_FAILED = 0x722,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê²€ìƒ‰ëœ ì¡°ê±´ì˜ ë¦¬ìŠ¤íŠ¸ê°€ 없습니다.
results have been found.
*/
MSG_PARTY_SEARCH_FAILED = 0x723,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê´‘ê³ ì‚­ì œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to remove result.
*/
MSG_PARTY_AD_DELETE_FAILED = 0x724,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¡°ê±´ì— ë§žëŠ” ê´‘ê³ ê°€ 없어 실패했습니다.
No results have been found.
*/
MSG_PARTY_NOT_EXIST_AD = 0x725,
-/*20171018 to 20180627
+/*20171018 to 20180711
결제 정보가 없습니다.
No payment information has been found.
*/
MSG_REFUSE_SSO_NOT_PAY_USER = 0x726,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµí™˜ ì‹œ 스í¬ë¦°ìƒ· ì°ê¸°
Screenshot Trade
*/
MSG_SCREENSHOT_FOR_EXCHANGE = 0x727,
-/*20171018 to 20180627
+/*20171018 to 20180711
[거래_%s]
[Trade_%s]
*/
MSG_SCREENSHOT_FOR_EXCHANGE_CHARNAME = 0x728,
/*20171018 to 20180131
사ë§ìœ¼ë¡œ ì¸í•´ ì‹ ìƒëª…보험서가 ìžë™ 소비ë˜ì—ˆìŠµë‹ˆë‹¤
-20180207 to 20180627
+20180207 to 20180711
ì‚¬ë§ ì‹œ 소지한 ì•„ì´í…œìœ¼ë¡œ 경험치 ì†ì‹¤ì„ 막았습니다.
Death due to the auto insurance young people are spending.
*/
MSG_NOTIFY_NEO_INSURANCE_ITEM_USE = 0x729,
-/*20171018 to 20180627
+/*20171018 to 20180711
대화
Chat Dialog
*/
MSG_TALK = 0x72a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¤‘ë³µì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Redundant is not available.
*/
MSG_MACRO_DUPLICATE = 0x72b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì‚¬ìš©ì œí•œì´ ê±¸ë ¤ìžˆìŠµë‹ˆë‹¤.
Use the limit that has been set.
*/
MSG_MACRO_POSTDELAY = 0x72c,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ì‚¬ìš©ì œí•œì´ ê±¸ë ¤ 있지 않습니다.
No user restrictions are set.
*/
MSG_MACRO_NOT_POSTDELAY = 0x72d,
-/*20171018 to 20180627
+/*20171018 to 20180711
예기치 못한 사유로 ì¸í•´ ì ‘ì†ì´ 실패하였습니다. 관리ìžì—게 문ì˜í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Connection has failed. Please contact your administrator.
*/
MSG_SSO_ERROR_MSG = 0x72e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì† ì •ë³´ ì¸ì¦ 실패하였습니다.
Failed to authenticate.
*/
MSG_REFUSE_SSO_AUTH_INVALID_TOKEN = 0x72f,
-/*20171018 to 20180627
+/*20171018 to 20180711
가입하지 ì•Šì€ ì‚¬ìš©ìžìž…니다.
User is offline.
*/
MSG_REFUSE_SSO_AUTH_INVALID_USER = 0x730,
-/*20171018 to 20180627
+/*20171018 to 20180711
나ì´ì œí•œ ë•Œë¬¸ì— ì´ê³„정으로 ì´ì„œë²„ì— ì ‘ì†í•  수 없습니다.
The age limit from commandment tables cannot connect to this server.
*/
MSG_REFUSE_SSO_AUTH_INVALID_AGE = 0x731,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매하기
Buy
*/
MSG_NC_BUY = 0x732,
-/*20171018 to 20180627
+/*20171018 to 20180711
장바구니 비우기
Cancel.
*/
MSG_NC_BLANK = 0x733,
-/*20171018 to 20180627
+/*20171018 to 20180711
첫 페ì´ì§€
First page
*/
MSG_NC_FIRSTPAGE = 0x734,
-/*20171018 to 20180627
+/*20171018 to 20180711
마지막 페ì´ì§€
Last page
*/
MSG_NC_LASTPAGE = 0x735,
-/*20171018 to 20180627
+/*20171018 to 20180711
신규
New
*/
MSG_NC_CAT1 = 0x736,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ê¸°
Headgears
*/
MSG_NC_CAT2 = 0x737,
-/*20171018 to 20180627
+/*20171018 to 20180711
한정
Limited
*/
MSG_NC_CAT3 = 0x738,
-/*20171018 to 20180627
+/*20171018 to 20180711
임대장비
Rental Items
*/
MSG_NC_CAT4 = 0x739,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜êµ¬ìž¥ë¹„
Equipments
*/
MSG_NC_CAT5 = 0x73a,
-/*20171018 to 20180627
+/*20171018 to 20180711
버프
Scrolls
*/
MSG_NC_CAT6 = 0x73b,
-/*20171018 to 20180627
+/*20171018 to 20180711
회복
Consumables
*/
MSG_NC_CAT7 = 0x73c,
-/*20171018 to 20180627
+/*20171018 to 20180711
기타
Other
*/
MSG_NC_CAT8 = 0x73d,
-/*20171018 to 20180627
+/*20171018 to 20180711
가격
Cost
*/
MSG_NC_COST = 0x73e,
-/*20171018 to 20180627
+/*20171018 to 20180711
수량
Quantity
*/
MSG_NC_NUM = 0x73f,
-/*20171018 to 20180627
+/*20171018 to 20180711
개
Total
*/
MSG_NC_COUNT = 0x740,
-/*20171018 to 20180627
+/*20171018 to 20180711
무료 ìºì‹œ : %s C
Free Cash: %s C
*/
MSG_NC_FREECASH = 0x741,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지 ìºì‹œ : %s C
CashPoints: %s C
*/
MSG_NC_CASH = 0x742,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ì§€ì—­ì—서는 몬스터 ì†Œí™˜ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
You cannot summon a monster in this area.
*/
MSG_CALLMONSTER_FAIL_AREA = 0x743,
-/*20171018 to 20180627
+/*20171018 to 20180711
무료ìºì‹œ ì‚¬ìš©ëŸ‰ì´ ì „ì²´ ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ê³ ìžˆìŠµë‹ˆë‹¤
Exceeded total free cash
*/
MSG_BUY_CASH_FAIL2 = 0x744,
-/*20171018 to 20180627
+/*20171018 to 20180711
설정한 ë‚´ìš©ì´ [SaveData_ExMacro%d]ì— ì €ìž¥ë©ë‹ˆë‹¤.
%d seconds left until you can use
*/
MSG_MACRO_SAVE_DATA = 0x745,
-/*20171018 to 20180627
+/*20171018 to 20180711
약 %d ì´ˆ í›„ì— ì‚¬ìš©í•  수 있습니다
Content has been saved in [SaveData_ExMacro%d]
*/
MSG_ITEM_REUSE_LIMIT_SECOND = 0x746,
-/*20171018 to 20180627
+/*20171018 to 20180711
[ì°½]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
~ [Windows] must be equipped with.
*/
MSG_FAIL_NEED_EQUIPPED_SPEAR = 0x747,
-/*20171018 to 20180627
+/*20171018 to 20180711
드래곤 탑승시ì—만 사용가능합니다.
Available only on the dragon.
*/
MSG_USESKILL_FAIL_DRAGON = 0x748,
-/*20171018 to 20180627
+/*20171018 to 20180711
본 ì„œë²„ì— ì ‘ì†í•  수 있는 ì •ì›ì´ 초과ë˜ì–´ ì§„ìž…ì´ ë¶ˆê°€ëŠ¥ 합니다.
Unable to proceed due to exceeding capacity.
*/
MSG_OVER_CONNECT_USER = 0x749,
-/*20171018 to 20180627
+/*20171018 to 20180711
실명 ì¸ì¦ì´ ë˜ì§€ 않았습니다. 실명ì¸ì¦ 사ì´íŠ¸ë¡œ ì´ë™í•©ë‹ˆë‹¤
Real name has not been verified. Go to name verification site.
*/
MSG_AUTHENTICATE = 0x74a,
-/*20171018 to 20180627
+/*20171018 to 20180711
저장 í•  ìŠ¬ë¡¯ì„ ì„ íƒ í•´ 주세요
Please select slot you are going to save.
*/
MSG_SELECT_SAVESLOT = 0x74b,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s, 축하드립니다. '%s' 를 얻으셨습니다!
Congratulation %s, Acquired '%s' !
*/
MSG_BROADCASTING_SPECIAL_ITEM_OBTAIN2 = 0x74c,
-/*20171018 to 20180627
+/*20171018 to 20180711
그루미ìƒíƒœì—서는 사용할 수 없습니다
Unable to use in gloomy state
*/
MSG_NOTUSE_GROOMY = 0x74d,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµ¬ë§¤ë¬¼í’ˆì˜ í•©ê³„ê¸ˆì•¡ì´ ì¼€ë¦­í„°ê°€ 소지할 수 있는 최대 ê¸ˆì•¡ì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤
Purchased products has exceeded the total price.
*/
MSG_BUYINGSTORE_OVERFLOW_MONEY = 0x74e,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 맵ì—서는 파티 ê°€ìž…ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Cannot join a party in this map.
*/
MSG_PREVENT_PARTY_JOIN = 0x74f,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 맵ì—서는 파티 탈퇴가 불가능합니다.
Cannot leave a party in this map.
*/
MSG_PREVENT_PARTY_LEAVE = 0x750,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 맵ì—서는 파티 ì¶”ë°©ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Cannot withdraw/break the party in this map.
*/
MSG_PREVENT_PARTY_EXPEL = 0x751,
-/*20171018 to 20180627
+/*20171018 to 20180711
실제 성명
Real Name
*/
MSG_SDO_REALNAME = 0x752,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì‹ ë¶„ì¦ ë²ˆí˜¸
ID Number
*/
MSG_SDO_ID_NUMBER = 0x753,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë©”ì¼
E-mail
*/
MSG_SDO_EMAIL = 0x754,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž…ë ¥ì´ ì˜¬ë°”ë¥´ì§€ 않습니다
Invalid input
*/
MSG_SDO_WRONG_VALUE = 0x755,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒëŒ€ ìºë¦­í„°ê°€ 최대 ë³´ìœ ì œë‹ˆëŸ‰ì„ ì´ˆê³¼í•˜ì—¬ 거래가 불가능합니다.
Failed to send the zeny
*/
MSG_MCSTORE_FAIL_SELLER_MONEY_GIVE = 0x756,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì§ì—…ì´ ì•„ë‹™ë‹ˆë‹¤.
This is not a relevant job
*/
MSG_INVALID_CLASS = 0x757,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì„±ë³„ì´ ì•„ë‹™ë‹ˆë‹¤.
This is not a relevant gender
*/
MSG_INVALID_GENDER = 0x758,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìœ ì €ë‹˜ì˜ ì •ë³´ê°€ ì¸ì¦ì— 성공했습니다.
User information identification was successful.
*/
MSG_SUCCESS_AUTHENTICATE = 0x759,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„ì´ ì¼ì¹˜í•˜ì§€ 않습니다. 재작성 해주세요.
Name does not match. Please retry.
*/
MSG_INVALID_REALNAME = 0x75a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì‹ ë¶„ì¦ ë²ˆí˜¸ê°€ ì¼ì¹˜í•˜ì§€ 않습니다. 재작성 해주세요.
ID number does not match. Please retry.
*/
MSG_INVALID_IDNUMBER = 0x75b,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ì„œë¹„ìŠ¤ì— ì´ìƒì´ 있으니 ìž ì‹œ 후 ìž¬ì‹œë„ í•´ì£¼ì„¸ìš”.
Service is currently unavailable. Please try again later.
*/
MSG_INVALID_AUTHENTICATE = 0x75c,
-/*20171018 to 20180627
+/*20171018 to 20180711
탑승 ìƒíƒœì—서는 ê³µê²©ì„ í•  수 없습니다.
Unable to attack while riding.
*/
MSG_CANNOT_ATTACK_IN_RIDING_STATE = 0x75d,
-/*20171018 to 20180627
+/*20171018 to 20180711
탑승 ìƒíƒœì—서는 스킬 ì‹œì „ì„ í•  수 없습니다.
Unable to cast the skill while riding.
*/
MSG_CANNOT_USE_SKILL_IN_RIDING_STATE = 0x75e,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호는 4ìžë¦¬ì´í•˜ì—¬ì•¼ë§Œ 합니다.
Pin number should be 4~6 characters.
*/
MSG_STORE_PASSWORD_4_6 = 0x75f,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 ì¸ì¦ì— 성공했습니다.
Secured authentication is successful.
*/
MSG_SECOND_PASSWORD_LOGIN_SUCCESS = 0x760,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 성공했습니다.
Succeeded in creating 2nd password.
*/
MSG_SECOND_PASSWORD_MAKE_SUCCESS = 0x761,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 패스워드를 삭제했습니다.
2nd password has been deleted.
*/
MSG_SECOND_PASSWORD_DEL_SUCCESS = 0x762,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 패스워드를 수정했습니다.
2nd password has been corrected.
*/
MSG_SECOND_PASSWORD_EDIT_SUCCESS = 0x763,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž˜ëª»ëœ íŒ¨ìŠ¤ì›Œë“œìž…ë‹ˆë‹¤.(%d회남ìŒ)
Password is incorrect.
*/
MSG_SECOND_PASSWORD_LOGIN_FAILED = 0x764,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 íŒ¨ìŠ¤ì›Œë“œì˜ ìƒì„±ì— 실패했습니다.
Failed to create 2nd password.
*/
MSG_SECOND_PASSWORD_MAKE_FAILED = 0x765,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 패스워드 ì‚­ì œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to delete 2nd password.
*/
MSG_SECOND_PASSWORD_DEL_FAILED = 0x766,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 íŒ¨ìŠ¤ì›Œë“œì˜ ìˆ˜ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Failed to correct 2nd password.
*/
MSG_SECOND_PASSWORD_EDIT_FAILED = 0x767,
-/*20171018 to 20180627
+/*20171018 to 20180711
입력하신패스워드는 사용하실수없습니다.
Unable to use restricted number in 2nd password.
*/
MSG_SECOND_PASSWORD_EDIT_RESTRICT_PW = 0x768,
-/*20171018 to 20180627
+/*20171018 to 20180711
주민등ë¡ë²ˆí˜¸ëŠ” 사용할수없습니다.
Unable to use your KSSN number.
*/
MSG_SECOND_PASSWORD_EDIT_PERSONALNUM_PW = 0x769,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ 패스워드가 존재합니다.
~There is already a password.
*/
MSG_SECOND_PASSWORD_MAKE_DUPLICATED_PW = 0x76a,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 패스워드
Security Code
*/
MSG_SECOND_PASSWORD = 0x76b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³„ì •ë³´ì•ˆì„ ìœ„í•˜ì—¬ 추가ì ì¸ 패스워드 ì„¤ì •ì„ ê¶Œìž¥í•©ë‹ˆë‹¤.
Account for the additional password security settings are recommended.
*/
MSG_SECOND_PASSWORD_INPUT = 0x76c,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 패스워드 ì‚¬ìš©ì„ í•˜ì§€ 않습니다.
Do not use secure password.
*/
MSG_SECOND_PASSWDRD_NOT_AVAILABLE_SUCCESS = 0x76d,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 패스워드 ì‚¬ìš©ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Use the set security password failed.
*/
MSG_SECOND_PASSWDRD_NOT_AVAILABLE_FAILED = 0x76e,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 패스워드를 사용합니다. 다ìŒë¡œê·¸ì¸ë¶€í„° ì ìš©ë©ë‹ˆë‹¤.
Use secure passwords. Will be applied to your next login.
*/
MSG_SECOND_PASSWDRD_AVAILABLE_SUCCESS = 0x76f,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안 패스워드 사용 ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.
Use the set security password failed.
*/
MSG_SECOND_PASSWDRD_AVAILABLE_FAILED = 0x770,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³„ì •ë³´ì•ˆì„ ìœ„í•˜ì—¬ 추가ì ì¸ 패스워드를 설정합니다.
Added to the security of your account password is set.
*/
MSG_SECOND_PASSWORD_INFO_1 = 0x771,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ëž˜ì˜ ìˆ«ìžë²„íŠ¼ì„ ë§ˆìš°ìŠ¤ë¥¼ ì´ìš©í•˜ì—¬ 4ìžë¦¬ë¥¼ í´ë¦­í•˜ì„¸ìš”.
Use the mouse to enter the 4-digit password below.
*/
MSG_SECOND_PASSWORD_INFO_2 = 0x772,
-/*20171018 to 20180627
+/*20171018 to 20180711
3회ì´ìƒ 잘못ëœíŒ¨ìŠ¤ì›Œë“œ 입력으로, 종료ë©ë‹ˆë‹¤.
Typing an incorrect password 3 times will shut down the client.
*/
MSG_SECOND_PASSWORD_INFO_3 = 0x773,
-/*20171018 to 20180627
+/*20171018 to 20180711
ITEM
*/
MSG_MACRO_ITEM = 0x774,
-/*20171018 to 20180627
+/*20171018 to 20180711
SKILL
*/
MSG_MACRO_SKILL = 0x775,
-/*20171018 to 20180627
+/*20171018 to 20180711
TACTIC
*/
MSG_MACRO_TACTIC = 0x776,
-/*20171018 to 20180627
+/*20171018 to 20180711
ETC
*/
MSG_MACRO_ETC = 0x777,
-/*20171018 to 20180627
+/*20171018 to 20180711
COMBAT
*/
MSG_MACRO_COMBAT = 0x778,
-/*20171018 to 20180627
+/*20171018 to 20180711
NON-COMBAT
*/
MSG_MACRO_NON_COMBAT = 0x779,
-/*20171018 to 20180627
+/*20171018 to 20180711
BUFF
*/
MSG_MACRO_BUFF = 0x77a,
-/*20171018 to 20180627
+/*20171018 to 20180711
AUTO EQUIPED
*/
MSG_MACRO_AUTO_EQUIPED = 0x77b,
-/*20171018 to 20180627
+/*20171018 to 20180711
1st. ATTACK
*/
MSG_MACRO_1ST_ATTACK = 0x77c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ATTACK
*/
MSG_MACRO_ATTACK = 0x77d,
-/*20171018 to 20180627
+/*20171018 to 20180711
Next attack time :
Next attack time:
*/
MSG_MACRO_NEXT_ATK_TIME = 0x77e,
-/*20171018 to 20180627
+/*20171018 to 20180711
When died
*/
MSG_MACRO_WHEN_DIED = 0x77f,
-/*20171018 to 20180627
+/*20171018 to 20180711
When invited to a party
*/
MSG_MACRO_WHEN_INVITED_PARTY = 0x780,
-/*20171018 to 20180627
+/*20171018 to 20180711
Pickup Item
*/
MSG_MACRO_PICKUP_ITEM = 0x781,
-/*20171018 to 20180627
+/*20171018 to 20180711
Over 85% Weight
*/
MSG_MACRO_OVERWEIGHT = 0x782,
-/*20171018 to 20180627
+/*20171018 to 20180711
진행중ì´ë˜ ìž‘ì—…(NPC대화,제조...)ì„ ì¢…ë£Œí›„ì— ë‹¤ì‹œ ì‹œë„하세요.
Any work in progress (NPC dialog, manufacturing ...) quit and try again.
*/
MSG_BUSY = 0x783,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 Job경험치가 %d분간 %.2fë°°ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Monster Job hunting experience that you can get through the doubling of %d is %.2f minutes.
*/
MSG_PLUSONLYJOBEXP2 = 0x784,
-/*20171018 to 20180627
+/*20171018 to 20180711
SaveData_ExMacro%d
SaveData_ExMacro %d
*/
MSG_MACRO_SAVE = 0x785,
-/*20171018 to 20180627
+/*20171018 to 20180711
설정한 ë‚´ìš©ì´ [%s]ì— ì €ìž¥ë©ë‹ˆë‹¤.
Settings for [%s] are stored in.
*/
MSG_MACRO_SAVE_DATA2 = 0x786,
-/*20171018 to 20180627
+/*20171018 to 20180711
보안레벨
Security level
*/
MSG_SECOND_PASSWORD_LEVEL = 0x787,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ìºë¦­í„°ëŠ” 파티 ë˜ëŠ” ê¸¸ë“œì— ê°€ìž…ë˜ì–´ 있어서 삭제가 불가능합니다.
The current character is a party or join the guild can not be deleted.
*/
MSG_RESULT_FAIL_CHAR_DELETE = 0x788,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë²½ì´ë‚˜ 물체 근처ì—서만 사용 í•  수 있습니다.
Objects can be used only near the wall.
*/
MSG_USESKILL_FAIL_NEER_WALL = 0x789,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s : 레벨 %d %s 파티구합니다.
%s: Level %d %s party to obtain level.
*/
MSG_SEEK_PARTY_SET = 0x78a,
-/*20171018 to 20180627
+/*20171018 to 20180711
탑승 ì¤‘ì¸ ìƒíƒœì—서는 ê³ ì‚ ì•„ì´í…œì„ 사용할 수 없습니다.
While boarding reins is not available for items.
*/
MSG_FAIELD_RIDING_OVERLAPPED = 0x78b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìŠ¤í‚¬ì€ 1%ì˜ ê²½í—˜ì¹˜ê°€ 필요합니다.
This skill requires 1% experience.
*/
MSG_USESKILL_FAIL_NEED_EXP_1PERCENT = 0x78c,
-/*20171018 to 20180627
+/*20171018 to 20180711
경 험 치 :
Experience value:
*/
MSG_EXP_MSG = 0x78d,
-/*20171018 to 20180627
+/*20171018 to 20180711
드 롭 율 :
Drop rate:
*/
MSG_DROP_MSG = 0x78e,
-/*20171018 to 20180627
+/*20171018 to 20180711
사ë§íŽ˜ë„í‹° :
Death Penalty:
*/
MSG_DEATH_MSG = 0x78f,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d%% (PC방 %d%% + TPLUS %d%% + 프리미엄 %d%% + %s서버 %d%%)
%d%% (PCroom %d%% + TPLUS %d%% + Premium %d%% + %s Server %d%%)
*/
MSG_BASIC_EXP_MSG = 0x790,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•©ì°½ìŠ¤í‚¬ì„ ì‹œì „í•  파티ì›ì˜ SPëŸ‰ì´ ë¶€ì¡±í•©ë‹ˆë‹¤.
Amount of party members to cast the skill Chorus SP is low.
*/
MSG_USESKILL_FAIL_CHORUS_SP_INSUFFICIENT = 0x791,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒëŒ€ ìºë¦­í„°ì˜ 소지 ì•„ì´í…œ ì¢…ë¥˜ì˜ í•œê³„ëŸ‰ 초과로 거래가 불가능합니다.
Relative character that has possession of the items can not trade because amount is exceeded.
*/
MSG_CHARACTER_IS_OVER_COUNT = 0x792,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒëŒ€ ìºë¦­í„°ì˜ 해당 ì•„ì´í…œì˜ 소지 한계량 초과로 거래가 불가능합니다.
Relative character that has possession of the item amount which exceeds makes it impossible to trade.
*/
MSG_CHARACTER_IS_EACHITEM_OVER_COUNT = 0x793,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì•„ì´í…œì˜ 소지 한계량 초과로 êµ¬ìž…ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Amounts are exceeded the possession of the item is not available for purchase.
*/
MSG_PURCHASE_FAIL_EACHITEM_COUNT = 0x794,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê´‘ê³  ë“±ë¡ ëŒ€ê¸°ì¤‘ìž…ë‹ˆë‹¤.
Advertising is pending registration.
*/
MSG_PARTY_FAILED_TIMEOUT = 0x795,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ëž˜ì˜ íŒŒì¼ê³¼ í…ìŠ¤íŠ¸ë‚´ìš©ì„ í•¨ê»˜
ë¼ê·¸ë‚˜ë¡œí¬ ê³µì‹í™ˆíŽ˜ì´ì§€ -> ê³ ê°ì„¼í„° -> 문ì˜í•˜ê¸°ë¥¼
ì´ìš©í•˜ì—¬ 보내주시기 ë°”ëžë‹ˆë‹¤.
With the following files and text content Ragnarok Official Website -> Support -> Contact Us to submit your comments by:
*/
MSG_UNEXCEPTION_MSG1ST = 0x796,
-/*20171018 to 20180627
+/*20171018 to 20180711
빌ë§ì‹œìŠ¤í…œì— 오류가 ë°œìƒí–‡ìŠµë‹ˆë‹¤(%d)
Has caused an error in billing system(%d)
*/
MSG_INGAMBA_BILLING_ZSVR_ERROR = 0x797,
-/*20171018 to 20180627
+/*20171018 to 20180711
룬 ì•„ì´í…œ 소유 개수가 초과 ë˜ì–´ 구매가 실패 하였습니다.
Failed purchase of runes, items exceed the maximum number that can be held.
*/
MSG_CASH_FAILED_RUNE_OVERCOUNT = 0x798,
-/*20171018 to 20180627
+/*20171018 to 20180711
개별 ì•„ì´í…œ 개수가 초과 ë˜ì–´ 구매가 실패 하였습니다.
Exceeded the number of individual items, purchase failed.
*/
MSG_CASH_FAILED_EACHITEM_OVERCOUNT = 0x799,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•Œ 수 없는 오류가 ë°œìƒí•˜ì—¬ 구매가 실패 하였습니다.
Purchase failed due to an unknown error.
*/
MSG_CASH_FAILED_UNKOWN = 0x79a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž ì‹œ 후 다시 ì‹œë„í•´ 주십시오.
Please try again later.
*/
MSG_CASH_FAILED_BUSY = 0x79b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¿ ë‚˜ì´ ì•„ì´í…œì„ 장착 í•œ ìƒíƒœì—서만 사용 가능합니다.
Kunai must be equipped to use this skill.
*/
MSG_USESKILL_FAIL_NEED_EQUIPMENT_KUNAI = 0x79c,
-/*20171018 to 20180627
+/*20171018 to 20180711
모집할 ìµœì†Œë ˆë²¨ê°’ì„ ìž…ë ¥í•´ì£¼ì„¸ìš”.
Please enter the value of the minimum level to be recruited.
*/
MSG_SEEK_PARTY_LEVEL_HELP = 0x79d,
-/*20171018 to 20180627
+/*20171018 to 20180711
존다기íšì‚¬NPC ì—게 ì•„ì´í…œì´ ìˆ˜ë ¹ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤. ì†Œì§€ì°½ì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
Jonda agency receipt of the item to the NPC is not possible. Gaining possession of the free space of the window.
*/
MSG_FAILED_GET_ITEM_FROM_ZONEDA = 0x79e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìŠ¤í‚¬ì€ ê³µì„±ì „ì—서만 사용 가능합니다.
This skill is only available in the siege.
*/
MSG_USESKILL_FAIL_SIZE = 0x79f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìŠ¤í‚¬ì€ í”Œë ˆì´ì–´ì—게만 사용 가능합니다.
This skill is available only to the player.
*/
MSG_USESKILL_FAIL_TOTARGET_PLAYER = 0x7a0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì°©ìš©ì´ ê¸ˆì§€ ëœ ìƒíƒœë¡œ ì°©ìš© í•  수 없습니다.
Forbidden to wear the state can not be worn.
*/
MSG_CAN_NOT_EQUIP_ITEM_FORBID = 0x7a1,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 위치ì—서는 ìƒì  ë° ì±„íŒ…ë°©ì˜ ìƒì„±ì´ 불가능합니다.
Current location of the shop and chat room creation is disabled.
*/
MSG_USESKILL_FAIL_THERE_ARE_NPC_AROUND = 0x7a2,
-/*20171018 to 20180627
+/*20171018 to 20180711
Elapsed time: %d:%d:%d / %d:%d:%d
*/
MSG_REPLAY_ELAPSEDTIME = 0x7a3,
-/*20171018 to 20180627
+/*20171018 to 20180711
Speed : X 1/4
Speed: X 1/4
*/
MSG_REPLAY_SPEED1_4 = 0x7a4,
-/*20171018 to 20180627
+/*20171018 to 20180711
Speed : X 1/2
Speed: X 1/2
*/
MSG_REPLAY_SPEED1_2 = 0x7a5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Speed : X 1
Speed: X 1
*/
MSG_REPLAY_SPEED1 = 0x7a6,
-/*20171018 to 20180627
+/*20171018 to 20180711
Speed : X 2
Speed: X 2
*/
MSG_REPLAY_SPEED2 = 0x7a7,
-/*20171018 to 20180627
+/*20171018 to 20180711
Speed : X 4
Speed: X 4
*/
MSG_REPLAY_SPEED4 = 0x7a8,
-/*20171018 to 20180627
+/*20171018 to 20180711
Speed : X 8
Speed: X 8
*/
MSG_REPLAY_SPEED8 = 0x7a9,
-/*20171018 to 20180627
+/*20171018 to 20180711
Speed : X 16
Speed: X 16
*/
MSG_REPLAY_SPEED16 = 0x7aa,
-/*20171018 to 20180627
+/*20171018 to 20180711
Speed : 알수없ìŒ
Speed: Unknown
*/
MSG_REPLAY_SPEEDUNKNOWN = 0x7ab,
-/*20171018 to 20180627
+/*20171018 to 20180711
Service Info : %s
Service Info: %s
*/
MSG_REPLAY_CHRVICEINFO = 0x7ac,
-/*20171018 to 20180627
+/*20171018 to 20180711
Character Name : %s
Character Name: %s
*/
MSG_REPLAY_CHARACTERNAME = 0x7ad,
-/*20171018 to 20180627
+/*20171018 to 20180711
Map Name : %s
Map Name: %s
*/
MSG_REPLAY_MAPNAME = 0x7ae,
-/*20171018 to 20180627
+/*20171018 to 20180711
Record Time: %d-%01d-%01d %d: %02d: %02d
*/
MSG_REPLAY_RECORDTIME = 0x7af,
-/*20171018 to 20180627
+/*20171018 to 20180711
Play Time: %02d: %02d: %02d
*/
MSG_REPLAY_PLAYTIME = 0x7b0,
-/*20171018 to 20180627
+/*20171018 to 20180711
No Replay File.
*/
MSG_REPLAY_NOREPLAYFILE = 0x7b1,
-/*20171018 to 20180627
+/*20171018 to 20180711
Server No Matching
*/
MSG_REPLAY_SERVERNOMATCH = 0x7b2,
-/*20171018 to 20180627
+/*20171018 to 20180711
Replay Option Setting
*/
MSG_REPLAY_REPLAYOPTIONSETTING = 0x7b3,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒì¼ ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”.
Enter File Name
*/
MSG_REPLAY_ENTERTHEFILENAME = 0x7b4,
-/*20171018 to 20180627
+/*20171018 to 20180711
Set Replay Save Data
*/
MSG_REPLAY_SETREPLAYSAVEDATA = 0x7b5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Set Rec Option
*/
MSG_REPLAY_SETRECOPTION = 0x7b6,
-/*20171018 to 20180627
+/*20171018 to 20180711
%.1f %% Pos☞:%d:%d:%d
%.1f % Pos->:%d:%d:%d
*/
MSG_REPLAY_GAGEPOS1 = 0x7b7,
-/*20171018 to 20180627
+/*20171018 to 20180711
%.1f %% Pos☞:ì´ë™ë¶ˆê°€
%.1f % Pos->:cannot move
*/
MSG_REPLAY_GAGEPOS2 = 0x7b8,
-/*20171018 to 20180627
+/*20171018 to 20180711
Start
*/
MSG_REPLAY_START = 0x7b9,
-/*20171018 to 20180627
+/*20171018 to 20180711
Stop
*/
MSG_REPLAY_STOP = 0x7ba,
-/*20171018 to 20180627
+/*20171018 to 20180711
Input FileName -> Start
*/
MSG_REPLAY_START2 = 0x7bb,
-/*20171018 to 20180627
+/*20171018 to 20180711
Open Option
*/
MSG_REPLAY_OPENOPTION = 0x7bc,
-/*20171018 to 20180627
+/*20171018 to 20180711
Close Option
*/
MSG_REPLAY_CLOSEOPION = 0x7bd,
-/*20171018 to 20180627
+/*20171018 to 20180711
End
*/
MSG_REPLAY_END = 0x7be,
-/*20171018 to 20180627
+/*20171018 to 20180711
Time
*/
MSG_REPLAY_TIME = 0x7bf,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티&친구
Party & Friends
*/
MSG_REPLAY_PARTYFRIEND = 0x7c0,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅
Chat
*/
MSG_REPLAY_CHAT = 0x7c1,
-/*20171018 to 20180627
+/*20171018 to 20180711
단축키
Shortcuts
*/
MSG_REPLAY_SHORTCUTS = 0x7c2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìžë™ 파ì¼ëª… ìƒì„±
Automatic filename generation
*/
MSG_REPLAY_AUTOMATICFILENAME = 0x7c3,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒì¼ ì¤‘ë³µ 채í¬
Checking for duplicate files
*/
MSG_REPLAY_CHECKINGFILE = 0x7c4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë™ì¼í•œ 파ì¼ì´ 존재 합니다.
The same file exists already.
*/
MSG_REPLAY_THESAMEFILEEXISTS = 0x7c5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Record Start
*/
MSG_REPLAY_RECORDSTART = 0x7c6,
-/*20171018 to 20180627
+/*20171018 to 20180711
is Saved.
*/
MSG_REPLAY_RECORDEND = 0x7c7,
-/*20171018 to 20180627
+/*20171018 to 20180711
Weight : %3d / %3d
Weight: %3d / %3d
*/
MSG_WEIGHT = 0x7c8,
-/*20171018 to 20180627
+/*20171018 to 20180711
Total : %s C
Total: %s C
*/
MSG_TOTAL = 0x7c9,
-/*20171018 to 20180627
+/*20171018 to 20180711
[수리검]ì„ ìž¥ì°©í•œ ìƒíƒœì—¬ì•¼ 합니다.
[Shuriken] must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_SYURIKEN = 0x7ca,
-/*20171018 to 20180627
+/*20171018 to 20180711
Base Lv. %d
*/
MSG__BASIC_MSG_BASE = 0x7cb,
-/*20171018 to 20180627
+/*20171018 to 20180711
Job Lv. %d
*/
MSG__BASIC_MSG_JOB = 0x7cc,
-/*20171018 to 20180627
+/*20171018 to 20180711
Zeny : %s
Zeny: %s
*/
MSG_BASIC_MSG_ZENY = 0x7cd,
-/*20171018 to 20180627
+/*20171018 to 20180711
Trilinear
*/
MSG_GRAPHIC_MSG_TRILINEAR = 0x7ce,
-/*20171018 to 20180627
+/*20171018 to 20180711
attack
*/
MSG_GRAPHIC_MSG_ATTACK = 0x7cf,
-/*20171018 to 20180627
+/*20171018 to 20180711
skill
*/
MSG_GRAPHIC_MSG_SKILL = 0x7d0,
-/*20171018 to 20180627
+/*20171018 to 20180711
item
*/
MSG_GRAPHIC_MSG_ITEM = 0x7d1,
-/*20171018 to 20180627
+/*20171018 to 20180711
NoCtrl
*/
MSG_GRAPHIC_MSG_NOCTRL = 0x7d2,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장
More
*/
MSG_GRAPHIC_MSG_BATTLE = 0x7d3,
-/*20171018 to 20180627
+/*20171018 to 20180711
(Character/Total Slot)
*/
MSG_CHARACTER_MSG_CHARACTERTOTALSLOT = 0x7d4,
-/*20171018 to 20180627
+/*20171018 to 20180711
Premium Service
VIP Service
*/
MSG_CHARACTER_MSG_PREMIUMSERVICE = 0x7d5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Premium
VIP
*/
MSG_CHARACTER_MSG_PREMIUM = 0x7d6,
-/*20171018 to 20180627
+/*20171018 to 20180711
Service
*/
MSG_CHARACTER_MSG_SERVICE = 0x7d7,
-/*20171018 to 20180627
+/*20171018 to 20180711
Billing Service
VIP
*/
MSG_CHARACTER_MSG_BILLINGSERVICE = 0x7d8,
-/*20171018 to 20180627
+/*20171018 to 20180711
Billing
VIP
*/
MSG_CHARACTER_MSG_BILLING = 0x7d9,
-/*20171018 to 20180627
+/*20171018 to 20180711
Command List
*/
MSG_MSG_COMMANDLIST = 0x7da,
-/*20171018 to 20180627
+/*20171018 to 20180711
LEVEL
*/
MSG_SEEK_PARTY_LEVEL = 0x7db,
-/*20171018 to 20180627
+/*20171018 to 20180711
MAP
*/
MSG_SEEK_PARTY_MAP = 0x7dc,
-/*20171018 to 20180627
+/*20171018 to 20180711
JOB
*/
MSG_SEEK_PARTY_JOB = 0x7dd,
-/*20171018 to 20180627
+/*20171018 to 20180711
Not Available
*/
MSG_MSG_NOTAVAILABLE = 0x7de,
-/*20171018 to 20180627
+/*20171018 to 20180711
[수호 ì²œì‚¬ì˜ ë³´í˜¸] ë§Œë ™ì¼ ê²½ìš° 사용할 수 없습니다.
[Protection of Guardian Angel] You can't use it when you reach the highest level.
*/
MSG_MSG_SUPERNOVICE_CHOPOKGI_CAPPEDLEVEL = 0x7df,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ë§ ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you really want to move?
*/
MSG_CHANGE_CHARACTER_SLOT = 0x7e0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° 슬롯 ì´ë™ì— 실패했습니다.
Failed to move Char slot.
*/
MSG_CHANGE_CHARACTER_SLOT_FAILED = 0x7e1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ì´ë¦„ì´ ìž˜ëª» ë˜ì—ˆìŠµë‹ˆë‹¤.
Character name is invalid.
*/
MSG_CHARACTERNAME_ERROR = 0x7e2,
-/*20171018 to 20180627
+/*20171018 to 20180711
퀘스트보기창
Show Quest
*/
MSG_QUEST_DISPLAY_ONOFF = 0x7e3,
-/*20171018 to 20180627
+/*20171018 to 20180711
청소년 ë³´í˜¸ë²•ì— ë”°ë¼, ìž ì‹œ 후 0ì‹œ 부터 6ì‹œ 까지 만 16세 미만 ê³ ê°ë‹˜ë“¤ì˜ 게임 ì´ìš©ì´ 제한ë©ë‹ˆë‹¤.
Depending on the protection of youth, and 0:00 to 6:00 while under the age of 16 of your game use is limited.
*/
MSG_SHUTDOWN_ALERT_MSG = 0x7e4,
-/*20171018 to 20180627
+/*20171018 to 20180711
청소년 ë³´í˜¸ë²•ì— ë”°ë¼, 0ì‹œ 부터 6ì‹œ 까지 ^ff0000만 16세 미만 ê³ ê°ë‹˜ë“¤ì˜ 게임 ì´ìš©ì´ 제한^000000ë˜ë©°, ê²Œìž„ì„ ì¢…ë£Œí•©ë‹ˆë‹¤.
Depending on the protection of youth, 0:00 to 6:00 ^ff0000 under the age of 16 ^000000 limit your use of the game and the game ends.
*/
MSG_BAN_SHUTDOWN_TEENAGER = 0x7e5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ì´ë¦„ì„ ë³€ê²½í•˜ê¸° 위해서는 길드ì—ì„œ 탈퇴 해야 합니다.
In order to change the character name, you must leave the guild.
*/
MSG_FAILED_RENAME_BELONGS_TO_GUILD = 0x7e6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ì´ë¦„ì„ ë³€ê²½í•˜ê¸° 위해서는 파티ì—ì„œ 탈퇴 해야 합니다.
In order to change the character name, you must leave the party.
*/
MSG_FAILED_RENAME_BELONGS_TO_PARTY = 0x7e7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•Œ 수 없는 오류로 ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
Character name change failed, due an unknown error.
*/
MSG_FAILED_RENAME_UNKOWN = 0x7e8,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ ìºë¦­í„° ìŠ¬ë¡¯ë³€ê²½ì´ ê°€ëŠ¥í•œ ìƒíƒœìž…니다.(%d)
Ready to change character slot in.(%d)
*/
MSG_CHARSLOT_CHANGE_DUPLICATE = 0x7e9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ ìºë¦­í„° ì´ë¦„ë³€ê²½ì´ ê°€ëŠ¥í•œ ìƒíƒœìž…니다.(%d)
Ready to change character name in.(%d)
*/
MSG_CHARNAME_CHANGE_DUPLICATE = 0x7ea,
-/*20171018 to 20180627
+/*20171018 to 20180711
변경하려는 ì´ë¦„ì˜ ê¸¸ì´ê°€ 최대í¬ê¸°ë¥¼ 초과하여 ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
Length exceeds the maximum size of the character name you want to change.
*/
MSG_FAILED_RENAME_OVER_LENGTH = 0x7eb,
-/*20171018 to 20180627
+/*20171018 to 20180711
사용할 수 없는 단어가 í¬í•¨ë˜ì–´ ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
Name contains invalid characters. Character name change failed.
*/
MSG_FAILED_RENAME_PREVENTNAM = 0x7ec,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„ ë³€ê²½ì´ ê¸ˆì§€ëœ ìƒíƒœì´ë¯€ë¡œ ìºë¦­í„° ì´ë¦„ ë³€ê²½ì´ ì‹¤íŒ¨ 하였습니다.
The name change is prohibited. Character name change failed.
*/
MSG_FAILED_RENAME_FORBIDDEN = 0x7ed,
-/*20171018 to 20180627
+/*20171018 to 20180711
완료
Complete
*/
MSG_COMPLETE_HUNTING_QUEST = 0x7ee,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d분간 ì–»ì„ ìˆ˜ 있는 경험치가 %d%% ì¦ê°€í•©ë‹ˆë‹¤.
During %d minutes your Exp will increase by %d%%.
*/
MSG_PLUSEXP_VALUE = 0x7ef,
-/*20171018 to 20180627
+/*20171018 to 20180711
소환까지 %02d초남았습니다.
%02d seconds left until summon.
*/
MSG_PARTY_RECALL_TIME = 0x7f0,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ìž¥ì´ ë‹¹ì‹ ì„ %s (%s) ë¡œ 소환합니다.소환시 %d zenyê°€ 소모ë©ë‹ˆë‹¤.
Your party leader summons you to %s (%s). Warp costs %d Zeny.
*/
MSG_PARTY_RECALL_INFO = 0x7f1,
-/*20171018 to 20180627
+/*20171018 to 20180711
소환대ìƒ
Summon target
*/
MSG_RECALL_TARGET = 0x7f2,
-/*20171018 to 20180627
+/*20171018 to 20180711
차단목ë¡
Block List
*/
MSG_PARTY_BLACKLIST = 0x7f3,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 광고를 등ë¡í•˜ê¸° 위해 %d제니가 소모ë©ë‹ˆë‹¤.
%d Zeny will be spent for making party ad.
*/
MSG_PARTY_CF_PAY = 0x7f4,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 광고를 하기 위한 제니가 부족합니다.
Insufficient Zeny for making party ad.
*/
MSG_PARTY_CF_PAY_SHORTAGE_COST = 0x7f5,
-/*20171018 to 20180627
+/*20171018 to 20180711
)님 파티 가입승ì¸
) party: accept invitation
*/
MSG_PARTY_ADD_OK = 0x7f6,
-/*20171018 to 20180627
+/*20171018 to 20180711
)님 파티 가입거부
) party: decline invitation
*/
MSG_PARTY_ADD_REFUSES = 0x7f7,
-/*20171018 to 20180627
+/*20171018 to 20180711
)님 장비창보기
) party: show equipment window
*/
MSG_PARTY_ITEM_VIEW = 0x7f8,
-/*20171018 to 20180627
+/*20171018 to 20180711
한글18글ìž,ì˜ë¬¸36ê¸€ìž ìž…ë ¥ê°€ëŠ¥
Up to 36 english letters can be entered
*/
MSG_SEEK_PARTY_MEMO_HELP = 0x7f9,
-/*20171018 to 20180627
+/*20171018 to 20180711
지ì›í•˜ê¸°
Enter
*/
MSG_PARTY_REQUEST = 0x7fa,
-/*20171018 to 20180627
+/*20171018 to 20180711
1:1대화하기
1:1 Chat
*/
MSG_DIRECT_CHAT = 0x7fb,
-/*20171018 to 20180627
+/*20171018 to 20180711
차단하기
Block
*/
MSG_ADD_BLACKLIST = 0x7fc,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티장ì—게 소환ë˜ê¸° 위한 제니가 부족합니다.
Insufficient Zeny for recall.
*/
MSG_PARTY_RECRUIT_NOT_RECALL_PAY = 0x7fd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ëª¨ëž€ì— íŒŒí‹°ê´‘ê³ ë¥¼ ì¨ì£¼ì„¸ìš”.
Input your party ad.
*/
MSG_PARTY_RECRUIT_MEMO_ERROR = 0x7fe,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ìž¥ë§Œì´ íŒŒí‹°ê´‘ê³ ë¥¼ 등ë¡í• ìˆ˜ìžˆìŠµë‹ˆë‹¤.
Only party leader can register party ad.
*/
MSG_PARTY_RECRUIT_ERROR = 0x7ff,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ 지ì›í•œ 파티광고입니다.
You have already accepted this ad.
*/
MSG_PARTY_REFUSE_ERROR = 0x800,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚´ìš©
For
*/
MSG_PARTY_RECRUIT_INFO = 0x801,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비
E
*/
MSG_INVENTORY_TABNAME_1 = 0x802,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°œì¸
F
*/
MSG_INVENTORY_TABNAME_3 = 0x803,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 버리기 잠금
Drop Lock: On/Off
*/
MSG_ITEM_DROP_LOCK = 0x804,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ì› ì°¾ê¸° 알람
Party Alarm
*/
MSG_PARTY_RECRUIT_ALRAM = 0x805,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티결성
Create Party
*/
MSG_CREATE_PARTY = 0x806,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티탈퇴
Leave Party
*/
MSG_WITHDRAW_PARTY = 0x807,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티초대
Party Invitation
*/
MSG_INVITE_PARTY = 0x808,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 ì´ë¦„ 등ë¡
Party Name:
*/
MSG_PUT_PARTY_NAME_IN = 0x809,
-/*20171018 to 20180627
+/*20171018 to 20180711
초대할 ìºë¦­í„° ì´ë¦„
Player Name:
*/
MSG_PUT_PLAYER_NAME_IN = 0x80a,
-/*20171018 to 20180627
+/*20171018 to 20180711
님께 파티가입 ìš”ì²­ì„ ë³´ëƒˆìŠµë‹ˆë‹¤.
has recieved an invitation to join your party.
*/
MSG_CHARACTER_PARTY_INVITATION_TO_JOIN = 0x80b,
-/*20171018 to 20180627
+/*20171018 to 20180711
님께서 íŒŒí‹°ê°€ìž…ì„ ê±°ì ˆí–ˆìŠµë‹ˆë‹¤.
rejected your party invitation.
*/
MSG_CHARACTER_REJECT_PARTY_INVITATION = 0x80c,
-/*20171018 to 20180627
+/*20171018 to 20180711
님께서 íŒŒí‹°ê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
accepted your party invitation.
*/
MSG_CHARACTER_ACCEPT_PARTY_INVITATION = 0x80d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ 파티모집중입니다.
Recruitment is already a party.
*/
MSG_PARTY_RECRUIT_ERROR1 = 0x80e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì „ 검색과 ê°™ì€ ì¡°ê±´ìž…ë‹ˆë‹¤.
Same conditions such as the previous search.
*/
MSG_PARTY_RECRUIT_ERROR2 = 0x80f,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 탈퇴 후 사용 가능합니다.
Guild after withdrwal.
*/
MSG_CHARNAME_CHANGE_FILED_GUILDMEMBER = 0x810,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 탈퇴 후 사용 가능합니다.
Party after secession.
*/
MSG_CHARNAME_CHANGE_FILED_PARTYMEMBER = 0x811,
-/*20171018 to 20180627
+/*20171018 to 20180711
소환 유저가 ì†Œí™˜ì´ ì•ˆë˜ëŠ” ë§µì— ìžˆìŠµë‹ˆë‹¤.
The player can not be summoned to this map.
*/
MSG_PARTY_RECRUIT_RECALL_ERR1 = 0x812,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 íŒŒí‹°ìž¥ì´ ìžˆëŠ” 맵ì—서는 ì†Œí™˜ì´ ì•ˆë©ë‹ˆë‹¤.
Party Leader is on a map that is restricted to summon players.
*/
MSG_PARTY_RECRUIT_RECALL_ERR2 = 0x813,
-/*20171018 to 20180627
+/*20171018 to 20180711
소환거부ë˜ì—ˆìŠµë‹ˆë‹¤.
Summon has been denied.
*/
MSG_PARTY_RECRUIT_RECALL_ERR3 = 0x814,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì†Œí™˜ì„ í•  수 없습니다.
Can not be summoned.
*/
MSG_PARTY_RECRUIT_RECALL_ERR4 = 0x815,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티초대는 파티장만 가능합니다.
Only the leader can invite.
*/
MSG_YOU_ARE_NOT_PARTYMASTER = 0x816,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색할 ì•„ì´í…œëª… ìž…ë ¥ :
Search item:
*/
MSG_NC_ITEM_SEARCH = 0x817,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°ëª…ì„ ìž…ë ¥í•˜ì…”ì•¼ 합니다.
You must enter a character name.
*/
MSG_PLEASE_PUT_CHARACTER_NAME_IN = 0x818,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì´ë¦„ì„ ìž…ë ¥í•˜ì…”ì•¼ 합니다.
You must enter the name of the party.
*/
MSG_PLEASE_PUT_PARTY_NAME_IN = 0x819,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 ë„우미
Guild Creation Window
*/
MSG_GUILD_HELPER = 0x81a,
-/*20171018 to 20180627
+/*20171018 to 20180711
가입ë˜ì–´ 있는 길드가 없습니다.
Join a guild or start your own!
*/
MSG_NO_GUILD_CURRENTLY_PARTICIPATED_IN = 0x81b,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 결성
Create Guild
*/
MSG_CREATE_GUILD = 0x81c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì„±í•  길드 ì´ë¦„
Guild Name
*/
MIS_PUT_GUILD_NAME_IN = 0x81d,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 결성 ë„움ë§
Guild System
*/
MIS_GUILD_TIP = 0x81e,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 시스템ì´ëž€
What is the guild system
*/
MIS_GUILD_SYSTEM = 0x81f,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì´ë¦„ì„ ìž…ë ¥í•˜ì…”ì•¼ 합니다.
You must enter the name of your guild.
*/
MSG_PLEASE_PUT_GUILD_NAME_IN = 0x820,
-/*20171018 to 20180627
+/*20171018 to 20180711
지ì›í•œ 파티ì—ì„œ 거부당했습니다.
Supported at the party was rejected.
*/
MSG_PARTY_RECRUIT_REFUSE_VOLUNTEER = 0x821,
-/*20171018 to 20180627
+/*20171018 to 20180711
서비스 ì„ íƒ.
Select Service:
*/
MSG_SERVICESELECT = 0x822,
-/*20171018 to 20180627
+/*20171018 to 20180711
탈출 가능한 지역.
Possible escape area.
*/
MSG_SHOW_MAPNAMETITLE = 0x823,
-/*20171018 to 20180627
+/*20171018 to 20180711
Replay File List
*/
MSG_REPLAY_STR_REPLAYFILELIST = 0x824,
-/*20171018 to 20180627
+/*20171018 to 20180711
File info
*/
MSG_REPLAY_STR_FILEINFO = 0x825,
-/*20171018 to 20180627
+/*20171018 to 20180711
File List
*/
MSG_REPLAY_STR_FILELIST = 0x826,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì€ 거래가 불가능 합니다.
%s Item deal not possible.
*/
MSG_NOT_MOVEABLE_TRADE = 0x827,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드해체
Disband the Guild
*/
MSG_GUILD_DISBAND = 0x828,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•´ì²´í•  길드 ì´ë¦„
Enter Guild Name
*/
MSG_PUT_DISBAND_GUILDNAME = 0x829,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì†í•˜ì§€ 않았거나 존재하지 않는 ìºë¦­í„°ìž…니다.
The character is not online or does not exist.
*/
MSG_JOINGUILD_NOTEXIST_USER = 0x82a,
-/*20171018 to 20180627
+/*20171018 to 20180711
팔콘 í˜¸ì¶œì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Failed to call Falcon.
*/
MSG_FAILED_SET_EFFECT_BIRD = 0x82b,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d%% ( 기본 100%% + 프리미엄 %d%% + %s서버 %d%% )
%d%%(default 100%%+ Premium%d%%+%s Server%d%%)
*/
MSG_BASIC_EXP_MSG_BRZ = 0x82c,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 유저는 현재 ê³µì„±ì „ì— ì°¸ê°€í•˜ê³  있습니다.
This user is currently participating in the siege.
*/
MSG_JOINGUILD_TARGET_USER_IN_SIEGEMAP = 0x82d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë™ì¼í•œ 맵ì—서만 파티장 ë³€ê²½ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
It is only possible to change the party leader while on the same map.
*/
MSG_PARTY_MASTER_CHANGE_SAME_MAP = 0x82e,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 지역ì—서는 파티장 ë³€ê²½ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
In the current region it is not possible to change the party.
*/
MSG_CANNOT_PARTY_MASTER_CHANGE_IN_MAP = 0x82f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·¸ë¦¬í° ë‚´ë¦¬ê¸°
Gryphon making
*/
MSG_ROYAL_CHIKENOFF = 0x830,
-/*20171018 to 20180627
+/*20171018 to 20180711
%dì›” %dì¼ %dì‹œ %d분 %dì´ˆ
Delete: %d/%d - %d:%d:%d
*/
MSG_TIME_TYPE3 = 0x831,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ê³µì„±ì „ì— ì°¸ì—¬ 중ì´ë¯€ë¡œ 길드초대를 하실 수 없습니다.
You can't invite characters in WoE maps.
*/
MSG_JOINGUILD_REQ_USER_IN_SIEGEMAP = 0x832,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ìž¥ì— ìž…ìž¥ 대기를 신청하셨습니다.
You are now in the battlefield queue.
*/
MSG_BATTLEFIELD_MSG_REQUEST_JOINWAIT = 0x833,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ì›ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤.
Queuing has finished.
*/
MSG_BATTLEFIELD_MSG_FULL = 0x834,
-/*20171018 to 20180627
+/*20171018 to 20180711
확ì¸ë˜ì§€ ì•Šì€ ì „ìž¥ëª…ìž…ë‹ˆë‹¤.
Invalid name of the battlefield.
*/
MSG_BATTLEFIELD_MSG_UNKNOWN_NAME = 0x835,
-/*20171018 to 20180627
+/*20171018 to 20180711
확ì¸ë˜ì§€ ì•Šì€ ì‹ ì²­íƒ€ìž…ìž…ë‹ˆë‹¤.
Invalid type of application.
*/
MSG_BATTLEFIELD_MSG_UNKNOWN_TYPE = 0x836,
-/*20171018 to 20180627
+/*20171018 to 20180711
최대 ì¸ì›ì„ 초과하였습니다.
People count exceeded.
*/
MSG_BATTLEFIELD_MSG_MAXOVER = 0x837,
-/*20171018 to 20180627
+/*20171018 to 20180711
입장 ë ˆë²¨ì´ ë§žì§€ 않습니다.
Your level doesn't fit this battlefield rules.
*/
MSG_BATTLEFIELD_MSG_JOIN_NOTLEVEL = 0x838,
-/*20171018 to 20180627
+/*20171018 to 20180711
중복 신청하셨습니다.
Duplicate application.
*/
MSG_BATTLEFIELD_MSG_JOIN_OVERLAP = 0x839,
-/*20171018 to 20180627
+/*20171018 to 20180711
재접ì†í›„ 다시 신청하여 주시기 ë°”ëžë‹ˆë‹¤.
After reconnecting, please re-apply.
*/
MSG_BATTLEFIELD_MSG_RESTART = 0x83a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§ì—…ì´ ë§žì§€ 않습니다.
Your class can't participate in this battlefield.
*/
MSG_BATTLEFIELD_MSG_NOTJOB = 0x83b,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티장ì´ë‚˜ ê¸¸ë“œìž¥ë§Œì´ ì‹ ì²­í•  수 있습니다.
Only party leader / guild master can apply.
*/
MSG_BATTLEFIELD_MSG_JOIN_ONLYBOSS = 0x83c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ìž¥ì„ ì´ìš© ì¤‘ì¸ íŒ€ì›ì´ 있어 ì‹ ì²­ì´ ë¶ˆê°€ëŠ¥ 합니다.
You can't apply while your team member is already on a battlefield.
*/
MSG_BATTLEFIELD_MSG_BUSY_PARTYMEMBER = 0x83d,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 입장 대기가 취소ë˜ì—ˆìŠµë‹ˆë‹¤.
You have left the battlefield queue.
*/
MSG_BATTLEFIELD_MSG_CANCEL_JOINWAIT = 0x83e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž˜ëª»ëœ ì „ìž¥ëª… 입니다.
Wrong battlefield name.
*/
MSG_BATTLEFIELD_MSG_WRONG_NAME = 0x83f,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 입장 대기 ìˆœìœ„ì— ì—†ìŠµë‹ˆë‹¤.
You are not in the battlefield queue list
*/
MSG_BATTLEFIELD_MSG_NOTRANK = 0x840,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì„ íƒí•˜ì‹  ì „ìž¥ì€ í˜„ìž¬ ì´ìš©í•˜ì‹¤ 수 없으므로 대기가 취소ë©ë‹ˆë‹¤.
The selected arena is unavailable; your application has been cancelled
*/
MSG_BATTLEFIELD_MSG_FAIL_CHOICE = 0x841,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 ìž…ìž¥ì„ ì·¨ì†Œí•˜ì˜€ìŠµë‹ˆë‹¤.
You have left the queue
*/
MSG_BATTLEFIELD_MSG_CANCEL_JOIN = 0x842,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ìž¥ì— ìž…ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Are you sure you want to join a battleground?
*/
MSG_BATTLEFIELD_MSG_DOYOU_JOIN = 0x843,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 입장 신청 시스템
[Battlefield application rules]
*/
MSG_BATTLEFIELD_HELP1 = 0x844,
-/*20171018 to 20180627
+/*20171018 to 20180711
입장 ì‹ ì²­ ë° ì „ìž¥ìœ¼ë¡œì˜ ê³µê°„ì´ë™ 불가 ìƒí™©
Application and position into the battlefield cannot be applied under this circumtances
*/
MSG_BATTLEFIELD_HELP2 = 0x845,
-/*20171018 to 20180627
+/*20171018 to 20180711
1. 여러 ì¢…ë¥˜ì˜ ì „ìž¥ì„ ë™ì‹œì— ì‹ ì²­í•  수 없습니다.
1. Different types of battle can not be applied simultaneously.
*/
MSG_BATTLEFIELD_HELP3 = 0x846,
-/*20171018 to 20180627
+/*20171018 to 20180711
2. ê°œì¸ / 파티 / 길드 ì „ìž¥ì„ ë™ì‹œì— ì‹ ì²­í•  수 없습니다.
2. Personal / party / guild battle can not be applied simultaneously.
*/
MSG_BATTLEFIELD_HELP4 = 0x847,
-/*20171018 to 20180627
+/*20171018 to 20180711
3. 파티 전장 ì‹ ì²­ì€ íŒŒí‹°ìž¥ë§Œ ì‹ ì²­í•  수 있으며,
3. Parties can only be applied by their party leaders.
*/
MSG_BATTLEFIELD_HELP5 = 0x848,
-/*20171018 to 20180627
+/*20171018 to 20180711
오프ë¼ì¸ì¤‘ì´ê±°ë‚˜ 오프ë¼ì¸ ëœ íŒŒí‹°ì›ì€ 대기열ì—ì„œ 누ë½ë©ë‹ˆë‹¤.
Offline party members won't proceed to the queue.
*/
MSG_BATTLEFIELD_HELP6 = 0x849,
-/*20171018 to 20180627
+/*20171018 to 20180711
4. 전장 ì‹ ì²­ì€ ì „ìž¥ ë§µì„ ì œì™¸í•œ 모든 ê³³ì—ì„œ ì‹ ì²­ 가능하나,
4. You can add request to enter the arena from any map except for those who don't allow teleport/warp.
*/
MSG_BATTLEFIELD_HELP7 = 0x84a,
-/*20171018 to 20180627
+/*20171018 to 20180711
입장한 위치가 마ì„, í•„ë“œ, ì¼ë°˜ ë˜ì „ì´ ì•„ë‹ ê²½ìš° 복귀 ì‹œ ìºë¦­í„° 저장 좌표로 ì´ë™ ë©ë‹ˆë‹¤.
When the battle is finished your character will be returned to the current spot or (if it's not possible) to the save point.
*/
MSG_BATTLEFIELD_HELP8 = 0x84b,
-/*20171018 to 20180627
+/*20171018 to 20180711
5. ì „ìž¥ì˜ ë³´ìƒ ë° ê¸°íƒ€ 서비스는 ê° ë§ˆì„ì— ìœ„ì¹˜í•œ 전장 ëª¨ë³‘ê´€ì„ í†µí•´ 전장 대기실ì—ì„œ ì´ìš©í•´ 주십시오.
5. You can view and choose rewards in the arena waiting room.
*/
MSG_BATTLEFIELD_HELP9 = 0x84c,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 입장 ì‹ ì²­ ë„움ë§
Request help battle position
*/
MSG_BATTLEFIELD_HELP10 = 0x84d,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì „ìž¥ì´ ì‹œìž‘ë©ë‹ˆë‹¤.
%s battle begins.
*/
MSG_BATTLEFIELD_START = 0x84e,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장으로 ì´ë™í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you want to enter the arena?
*/
MSG_BATTLEFIELD_DOYOU_MOVE = 0x84f,
-/*20171018 to 20180627
+/*20171018 to 20180711
[주ì˜]
[Note]
*/
MSG_BATTLEFIELD_WARNINGMSG1 = 0x850,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 위치가 마ì„, í•„ë“œ í˜¹ì€ ì¼ë°˜ë˜ì „ì´
When the battle is finished your character will
*/
MSG_BATTLEFIELD_WARNINGMSG2 = 0x851,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ë‹ ê²½ìš° 전장 종료 후 ì €ìž¥ëœ ìœ„ì¹˜ë¡œ
be returned to the current spot or (if it's not
*/
MSG_BATTLEFIELD_WARNINGMSG3 = 0x852,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë˜ëŒì•„가게 ë©ë‹ˆë‹¤.
possible) to the save point.
*/
MSG_BATTLEFIELD_WARNINGMSG4 = 0x853,
-/*20171018 to 20180627
+/*20171018 to 20180711
다른 ì´ì˜ 요청 결과를 기다리고 있습니다.
Waiting for the opponents.
*/
MSG_BATTLEFIELD_WAIT_PLAYER = 0x854,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 입장 요청
Battlefield position request
*/
MSG_BATTLEFIELD_REQUEST_JOIN = 0x855,
-/*20171018 to 20180627
+/*20171018 to 20180711
수ë½ëŒ€ê¸°ì‹œê°„:%dì´ˆ
Accept standby time:%d seconds
*/
MSG_BATTLEFIELD_WAITTIME_D = 0x856,
-/*20171018 to 20180627
+/*20171018 to 20180711
입장 대기 ìƒíƒœ
Standby position
*/
MSG_BATTLEFIELD_STATE_JOINWAIT = 0x857,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 명칭: %s
Battlefield name:%s
*/
MSG_BATTLEFIELD_NAME_S = 0x858,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 í•„ìš” ì¸ì›: %d
Persons required:%d
*/
MSG_BATTLEFIELD_MEMBER_D = 0x859,
-/*20171018 to 20180627
+/*20171018 to 20180711
내 대기순번: %d
Your position:%d
*/
MSG_BATTLEFIELD_MYRANK_D = 0x85a,
-/*20171018 to 20180627
+/*20171018 to 20180711
명칭 :
Name:
*/
MSG_BATTLEFIELD_DP_TITLE = 0x85b,
-/*20171018 to 20180627
+/*20171018 to 20180711
목표 :
Goal:
*/
MSG_BATTLEFIELD_DP_AIM = 0x85c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ìž¥ì˜ ì¸ì› 구성 :
Format:
*/
MSG_BATTLEFIELD_DP_MEMBER = 0x85d,
-/*20171018 to 20180627
+/*20171018 to 20180711
참여조건 :
Level:
*/
MSG_BATTLEFIELD_DP_REQUIRED = 0x85e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³´ìƒ(승) :
Win:
*/
MSG_BATTLEFIELD_DP_WIN = 0x85f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³´ìƒ(무) :
Draw:
*/
MSG_BATTLEFIELD_DP_DRAW = 0x860,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³´ìƒ(패) :
Loss:
*/
MSG_BATTLEFIELD_DP_LOSS = 0x861,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ìž¥ì„ ê°œì¸ìœ¼ë¡œ ì‹ ì²­ 하셨습니다. 맞습니까?
Do you want to participate in the individuals battle?
*/
MSG_BATTLEFIELD_DOYOU_SINGLE = 0x862,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ìž¥ì„ íŒŒí‹°ë¡œ ì‹ ì²­ 하셨습니다. 맞습니까?
Do you want to participate in the parties battle?
*/
MSG_BATTLEFIELD_DOYOU_PALTY = 0x863,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ìž¥ì„ ê¸¸ë“œë¡œ ì‹ ì²­ 하셨습니다. 맞습니까?
Do you want to participate in the guilds battle?
*/
MSG_BATTLEFIELD_DOYOU_GUILD = 0x864,
-/*20171018 to 20180627
+/*20171018 to 20180711
전장 목ë¡
Battleground List
*/
MSG_BATTLEFIELD_LIST2 = 0x865,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d VS %d
*/
MSG_BATTLEFIELD_D_VS_D = 0x866,
-/*20171018 to 20180627
+/*20171018 to 20180711
Base LV %d ì´í•˜
LV %d and lower
*/
MSG_BATTLEFIELD_LEVELDOWN_D = 0x867,
-/*20171018 to 20180627
+/*20171018 to 20180711
Base LV %d ì´ìƒ
LV %d and higher
*/
MSG_BATTLEFIELD_LEVELUP_D = 0x868,
-/*20171018 to 20180627
+/*20171018 to 20180711
Base LV %d ~ %d
LV %d ~ %d
*/
MSG_BATTLEFIELD_LEVEL_D_D = 0x869,
-/*20171018 to 20180627
+/*20171018 to 20180711
제한 ì—†ìŒ
No restrictions
*/
MSG_BATTLEFIELD_LIMITLESS = 0x86a,
-/*20171018 to 20180627
+/*20171018 to 20180711
[해당 맵ì—서는 신청하실 수 없습니다.]
[You can't apply on this map.]
*/
MSG_BATTLEFIELD_MSG_NOT_JOINMAP = 0x86b,
-/*20171018 to 20180627
+/*20171018 to 20180711
[전장 재신청까지 약 1ë¶„ì˜ ëŒ€ê¸°ì‹œê°„ì„ í•„ìš”ë¡œ 합니다.]
[You must wait about 1 minute to apply.]
*/
MSG_BATTLEFIELD_MSG_WAIT_1MM = 0x86c,
-/*20171018 to 20180627
+/*20171018 to 20180711
[íŒŒí‹°ì— ë¨¼ì € 가입하셔야 합니다.]
[You must be in a party.]
*/
MSG_BATTLEFIELD_MSG_PLZ_PALTYJOIN = 0x86d,
-/*20171018 to 20180627
+/*20171018 to 20180711
[파티장만 신청 가능합니다.]
[Only party leader can apply.]
*/
MSG_BATTLEFIELD_MSG_NOT_PALTYBOSS = 0x86e,
-/*20171018 to 20180627
+/*20171018 to 20180711
[ì ‘ì†ë˜ì–´ìžˆëŠ” 파티ì¸ì›ìˆ˜ê°€ 많습니다.]
[Too many party members online.]
*/
MSG_BATTLEFIELD_MSG_OVER_PARTYMEMBER = 0x86f,
-/*20171018 to 20180627
+/*20171018 to 20180711
[ê¸¸ë“œì— ë¨¼ì € 가입하셔야 합니다.]
[You must be in a guild.]
*/
MSG_BATTLEFIELD_MSG_PLZ_GUILDJOIN = 0x870,
-/*20171018 to 20180627
+/*20171018 to 20180711
[길드장만 신청 가능합니다.]
[Only guild master can apply.]
*/
MSG_BATTLEFIELD_MSG_NOT_GUILDBOSS = 0x871,
-/*20171018 to 20180627
+/*20171018 to 20180711
[ì ‘ì†ë˜ì–´ìžˆëŠ” 길드ì¸ì›ìˆ˜ê°€ 많습니다.]
[Too many guild members online.]
*/
MSG_BATTLEFIELD_MSG_OVER_GUILDMEMBER = 0x872,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë™ì˜ˆì•½
Moving Book
*/
MSG_RESERVE_CHANGE_CHARACTER_SLOT = 0x873,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë™
Move
*/
MSG_CHARACTER_SLOT_CHANGE = 0x874,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„변경
Rename
*/
MSG_CHANGE_CHARACTER_NAME = 0x875,
-/*20171018 to 20180627
+/*20171018 to 20180711
Make Character
*/
MSG_MSG_MAKECHARCTER = 0x876,
-/*20171018 to 20180627
+/*20171018 to 20180711
http://ro.game.gnjoy.com/
*/
MSG_UAE_URL = 0x877,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s) Server
*/
MSG_UAE_SERVERSTR = 0x878,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 병합(모ë‘ì„ íƒ Ctrl+í´ë¦­)
Item Merge
*/
MSG_MERGE_ITEM = 0x879,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°™ì€ ì¢…ë¥˜ì˜ ì•„ì´í…œì„ 2ê°œ ì´ìƒ ì„ íƒí•´ì£¼ì„¸ìš”.
Two or more of the same type. Please select an item.
*/
MSG_SELECT_ITEM_TO_MERGE = 0x87a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ í•©ì¹˜ê¸°ì— ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
Item merge is successful.
*/
MSG_MERGE_ITEM_SUCCESS = 0x87b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 합치기는 í•œë²ˆì— 1종류씩만 가능합니다.
Combining items will be only one kind at a time.
*/
MSG_MERGE_ITEM_FAILED_NOT_MERGE = 0x87c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì˜ 개수가 30000ê°œ 초과 했습니다.
You cannot have more than 30,000 stacked items.
*/
MSG_MERGE_ITEM_FAILED_MAX_COUNT = 0x87d,
-/*20171018 to 20180627
+/*20171018 to 20180711
좌로 회전
Rotate left
*/
MSG_CHARACTER_LEFT_ROLL = 0x87e,
-/*20171018 to 20180627
+/*20171018 to 20180711
우로 회전
Rotate right
*/
MSG_CHARACTER_RIGHT_ROLL = 0x87f,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s)ë‹˜ì˜ ì´ì „서버 정보보기
(%s) to view the old server information
*/
MSG_VIEW_BEFORE_WORLDINFO = 0x880,
-/*20171018 to 20180627
+/*20171018 to 20180711
기존 서버 정보
Existing server information
*/
MSG_VIEW_BEFORE_WORLDINFO_TITLE = 0x881,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000기존 서버 : ^0000ff
^ff0000Existing server: ^0000ff
*/
MSG_VIEW_BEFORE_SERVERINFO = 0x882,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000기존 ìºë¦­ëª… : ^0000ff
^ff0000Existing character: ^0000ff
*/
MSG_VIEW_BEFORE_CHARNAME = 0x883,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격한 ëª¬ìŠ¤í„°ì˜ HPê°€ 표시ë©ë‹ˆë‹¤.
Show monster HP bar when attacking.
*/
MSG_MONSTER_HP_ON = 0x884,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격한 ëª¬ìŠ¤í„°ì˜ HPê°€ 표시ë˜ì§€ 않습니다.
Hide monster HP bar when attacking.
*/
MSG_MONSTER_HP_OFF = 0x885,
-/*20171018 to 20180627
+/*20171018 to 20180711
병합 가능한 ì•„ì´í…œì´ 존재하지 않습니다
Merge does not exist as an item
*/
MSG_MERGE_ITEM_FAILED_NOT_EXIST = 0x886,
-/*20171018 to 20180627
+/*20171018 to 20180711
병합 가능한 ì•„ì´í…œì´ 존재하지 않습니다.
Merge items available does not exist.
*/
MSG_NOT_EXIST_MERGE_ITEM = 0x887,
-/*20171018 to 20180627
+/*20171018 to 20180711
진행중
Act
*/
MSG_QUESTUI_TAB_PROCESS = 0x888,
-/*20171018 to 20180627
+/*20171018 to 20180711
보류중
Pen
*/
MSG_QUESTUI_TAB_HOLD = 0x889,
-/*20171018 to 20180627
+/*20171018 to 20180711
추천
Rec
*/
MSG_QUESTUI_TAB_BEST = 0x88a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—피소드
Episode
*/
MSG_QUESTUI_TAB_EPISODE = 0x88b,
-/*20171018 to 20180627
+/*20171018 to 20180711
로컬
Loc
*/
MSG_QUESTUI_TAB_LOCAL = 0x88c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë²¤íŠ¸
Evt
*/
MSG_QUESTUI_TAB_EVENT = 0x88d,
-/*20171018 to 20180627
+/*20171018 to 20180711
신규
New
*/
MSG_QUESTUI_TAB_NEW = 0x88e,
-/*20171018 to 20180627
+/*20171018 to 20180711
사냥몬스터
Monsters to kill
*/
MSG_QUESTUI_HUNTMONSTER = 0x88f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³´ìƒì•„ì´í…œ
Rewards
*/
MSG_QUESTUI_REWARDITEM = 0x890,
-/*20171018 to 20180627
+/*20171018 to 20180711
필요아ì´í…œ
Required Items
*/
MSG_QUESTUI_NEEDITEM = 0x891,
-/*20171018 to 20180627
+/*20171018 to 20180711
제한시간
Time Limit
*/
MSG_QUESTUI_TIMELIMIT = 0x892,
-/*20171018 to 20180627
+/*20171018 to 20180711
마ê°ì‹œê°„
Deadline
*/
MSG_QUESTUI_CLOSINGTIME = 0x893,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색
Search
*/
MSG_NAVIGATION_SEARCH = 0x894,
-/*20171018 to 20180627
+/*20171018 to 20180711
목표로 안내
Navigation
*/
MSG_NAVIGATION_TARGETGO = 0x895,
-/*20171018 to 20180627
+/*20171018 to 20180711
길 정보
Back to Navigation
*/
MSG_NAVIGATION_ROUTEINFO = 0x896,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색 정보
Find Information
*/
MSG_NAVIGATION_SEARCHINFO = 0x897,
-/*20171018 to 20180627
+/*20171018 to 20180711
보기 모드 변경
Toggle Minimap
*/
MSG_NAVIGATION_VIEWCHANGE = 0x898,
-/*20171018 to 20180627
+/*20171018 to 20180711
외부 길정보 íŒŒì¼ ì½ê¸°
Read Information from External File
*/
MSG_NAVIGATION_LIGHTCHANGE = 0x899,
-/*20171018 to 20180627
+/*20171018 to 20180711
종료
Exit
*/
MSG_NAVIGATION_END = 0x89a,
-/*20171018 to 20180627
+/*20171018 to 20180711
기본 UI로 변경
Change the Default UI
*/
MSG_NAVIGATION_BASE = 0x89b,
-/*20171018 to 20180627
+/*20171018 to 20180711
간편 UI로 변경
Change to Default UI
*/
MSG_NAVIGATION_MINI = 0x89c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„움ë§
Help
*/
MSG_NAVIGATION_HELP = 0x89d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ALL
All
*/
MSG_NAVIGATION_ALL = 0x89e,
-/*20171018 to 20180627
+/*20171018 to 20180711
Map
*/
MSG_NAVIGATION_MAP = 0x89f,
-/*20171018 to 20180627
+/*20171018 to 20180711
Npc
*/
MSG_NAVIGATION_NPC = 0x8a0,
-/*20171018 to 20180627
+/*20171018 to 20180711
Mob
*/
MSG_NAVIGATION_MOB = 0x8a1,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색 단어 설정 (Ex: 단어 단어 ...
Enter search string... (Ex: word word ...)
*/
MSG_NAVIGATION_SETSTRING = 0x8a2,
-/*20171018 to 20180627
+/*20171018 to 20180711
Scroll
*/
MSG_NAVIGATION_SCROLL = 0x8a3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë˜ì „ì´ë™ 스í¬ë¡¤ 사용 ì ìš©
Use Scroll?
*/
MSG_NAVIGATION_USESCROLL = 0x8a4,
-/*20171018 to 20180627
+/*20171018 to 20180711
Service
*/
MSG_NAVIGATION_SERVICE = 0x8a5,
-/*20171018 to 20180627
+/*20171018 to 20180711
위치 ì´ë™ 서비스 허용
Use Kafra Warp?
*/
MSG_NAVIGATION_USESERVICE = 0x8a6,
-/*20171018 to 20180627
+/*20171018 to 20180711
Plane
*/
MSG_NAVIGATION_PLANE = 0x8a7,
-/*20171018 to 20180627
+/*20171018 to 20180711
비공정 ì´ë™ ì ìš©
Use Airship?
*/
MSG_NAVIGATION_USEPLANE = 0x8a8,
-/*20171018 to 20180627
+/*20171018 to 20180711
>> 목표 정보를 ì½ì§€ 못함!
>> Failed to read the target information.
*/
MSG_NAVIGATION_TARGETUNKNOWN = 0x8a9,
-/*20171018 to 20180627
+/*20171018 to 20180711
<< 안내중 >>
>> Destination <<
*/
MSG_NAVIGATION_GOING = 0x8aa,
-/*20171018 to 20180627
+/*20171018 to 20180711
<< 검색중... >>
<< Goal >>
*/
MSG_NAVIGATION_SEARCHING = 0x8ab,
-/*20171018 to 20180627
+/*20171018 to 20180711
-----------
*/
MSG_NAVIGATION_UN = 0x8ac,
-/*20171018 to 20180627
+/*20171018 to 20180711
Navigation
*/
MSG_NAVIGATION_NAVI = 0x8ad,
-/*20171018 to 20180627
+/*20171018 to 20180711
== 검색 결과(%d)==
= Found (%d) ==
*/
MSG_NAVIGATION_SEARCHRESULT_D = 0x8ae,
-/*20171018 to 20180627
+/*20171018 to 20180711
Npc)%s:%s
*/
MSG_NAVIGATION_NPC_S_S = 0x8af,
-/*20171018 to 20180627
+/*20171018 to 20180711
Mob)%s:%s
*/
MSG_NAVIGATION_MOB_S_S = 0x8b0,
-/*20171018 to 20180627
+/*20171018 to 20180711
Map)%s
*/
MSG_NAVIGATION_MAP_S = 0x8b1,
-/*20171018 to 20180627
+/*20171018 to 20180711
======== ê²°ê³¼ ì •ë³´ ==========
======== Results ==========
*/
MSG_NAVIGATION_RESULTINFO = 0x8b2,
-/*20171018 to 20180627
+/*20171018 to 20180711
거리 : %d Sell %d WarpMove
Dist %d Cell %d WarpMove
*/
MSG_NAVIGATION_LENGTH = 0x8b3,
-/*20171018 to 20180627
+/*20171018 to 20180711
목표맵: %s(%s)
Coords %s(%s)
*/
MSG_NAVIGATION_TARGETMAP_S_S = 0x8b4,
-/*20171018 to 20180627
+/*20171018 to 20180711
목표 : %s(%d, %d)
Goal:%s (%d,%d)
*/
MSG_NAVIGATION_TARGET_S_D_D = 0x8b5,
-/*20171018 to 20180627
+/*20171018 to 20180711
보스
Boss
*/
MSG_NAVIGATION_BOSS = 0x8b6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë°˜
General
*/
MSG_NAVIGATION_NORMAL = 0x8b7,
-/*20171018 to 20180627
+/*20171018 to 20180711
목표 : %s(%s)
Goal:
*/
MSG_NAVIGATION_TARGET_S_S = 0x8b8,
-/*20171018 to 20180627
+/*20171018 to 20180711
목표: (%d, %d)
Goal: (%d, %d)
*/
MSG_NAVIGATION_TARGET_D_D = 0x8b9,
-/*20171018 to 20180627
+/*20171018 to 20180711
======= 길 안내 정보 =======
======= Guidance =======
*/
MSG_NAVIGATION_GOINFO = 0x8ba,
-/*20171018 to 20180627
+/*20171018 to 20180711
%2d) Item:%s => %s 사용!
%2d) Item:%s => %s Use!
*/
MSG_NAVIGATION_ITEM_S_S = 0x8bb,
-/*20171018 to 20180627
+/*20171018 to 20180711
%2d) %s(%d,%d)=>(%d,%d)
*/
MSG_NAVIGATION_D_S_D_D_D_D = 0x8bc,
-/*20171018 to 20180627
+/*20171018 to 20180711
E%2d) %s(%d,%d)=>(%d,%d)
*/
MSG_NAVIGATION_E_D_S_D_D_D_D = 0x8bd,
-/*20171018 to 20180627
+/*20171018 to 20180711
E%2d) %s
*/
MSG_NAVIGATION_E_D_S = 0x8be,
-/*20171018 to 20180627
+/*20171018 to 20180711
안내중 입니다! 종료 하시겠습니까?
Do you want to cancel navigation?
*/
MSG_NAVIGATION_GOEXIT = 0x8bf,
-/*20171018 to 20180627
+/*20171018 to 20180711
내비게ì´ì…˜ ë„움ë§
How to Use Navigation
*/
MSG_NAVIGATION_HELPTITLE = 0x8c0,
-/*20171018 to 20180627
+/*20171018 to 20180711
------------------- 명령어 --------------------
------------------- Instruction --------------------
*/
MSG_NAVIGATION_HELP1 = 0x8c1,
-/*20171018 to 20180627
+/*20171018 to 20180711
1. /navigation /navi
1) /Navigation or /navi
*/
MSG_NAVIGATION_HELP2 = 0x8c2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ex)/navi prontera 100/100 -> 맵ì´ë¦„, 100/100
ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
*/
MSG_NAVIGATION_HELP3 = 0x8c3,
-/*20171018 to 20180627
+/*20171018 to 20180711
기본 명령어는 제니, 비공정 ê²€ìƒ‰ì„ ê¸°ë³¸ìœ¼ë¡œ 합니다.
2) /Navigation2 or /navi2
*/
MSG_NAVIGATION_HELP4 = 0x8c4,
-/*20171018 to 20180627
+/*20171018 to 20180711
2. /navigation2 /navi2
ex) /navi2 prontera 100 111
*/
MSG_NAVIGATION_HELP5 = 0x8c5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ex) /navi2 prontera 100/100 1/1/1
-> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
*/
MSG_NAVIGATION_HELP6 = 0x8c6,
-/*20171018 to 20180627
+/*20171018 to 20180711
-> 맵ì´ë¦„, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
*/
MSG_NAVIGATION_HELP7 = 0x8c7,
-/*20171018 to 20180627
+/*20171018 to 20180711
3. $$all 모든 항목 출력 (Type 구분 항목으로 출력 종류 구분 가능.)
3) /$$ Output all the items (Can take a while...)
*/
MSG_NAVIGATION_HELP8 = 0x8c8,
-/*20171018 to 20180627
+/*20171018 to 20180711
4. $$lv30 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력
4) /$$ Lv30 monsters are placed in the output
*/
MSG_NAVIGATION_HELP9 = 0x8c9,
-/*20171018 to 20180627
+/*20171018 to 20180711
5. $$lv20~30 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력
5) /$$ Lv20~30 monsters in that level range are placed in the output
*/
MSG_NAVIGATION_HELP10 = 0x8ca,
-/*20171018 to 20180627
+/*20171018 to 20180711
------------------- 설명 --------------------
------------------- Description --------------------
*/
MSG_NAVIGATION_HELP11 = 0x8cb,
-/*20171018 to 20180627
+/*20171018 to 20180711
1.검색 종류는 ì „ì²´, 맵, Npc, 몬스터 으로 분류 ëœë‹¤.
1) One can search for monsters, npcs, maps, or all at once
*/
MSG_NAVIGATION_HELP12 = 0x8cc,
-/*20171018 to 20180627
+/*20171018 to 20180711
2.명령어로 검색한다. ê·œì¹™ì€ ê²€ìƒ‰ 하려는 문ìžì—´ì´ ëª¨ë‘ í¬í•¨ëœ 정보를 출력 한다.
2) You can press the search button to get results. It will out put the results depending on what rule you choose
*/
MSG_NAVIGATION_HELP13 = 0x8cd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ex) 프론 카프 -> 검색 ê²°ê³¼ 프론테ë¼ì˜ 카프ë¼ë¥¼ ëª¨ë‘ ì¶œë ¥ 한다.
ex) Drop down box -> Select "Npc", then type in the box "Kafra". Results will now be displayed
*/
MSG_NAVIGATION_HELP14 = 0x8ce,
-/*20171018 to 20180627
+/*20171018 to 20180711
3.리스트ì—ì„œ í•­ëª©ì„ ì„ íƒí•˜ë©´ ì •ë³´ê°€ 출력ëœë‹¤.
3) When you select an item from a list, information about it are displayed.
*/
MSG_NAVIGATION_HELP15 = 0x8cf,
-/*20171018 to 20180627
+/*20171018 to 20180711
출력 ë˜ê³  있는 목표가 있ì„ë•Œ 안내 ë²„íŠ¼ì„ í´ë¦­í•˜ë©´ 해당 목표로 ê¸¸ì„ ì•ˆë‚´ 한다.
-> When button is clicked, it will point you towards your destination if available
*/
MSG_NAVIGATION_HELP16 = 0x8d0,
-/*20171018 to 20180627
+/*20171018 to 20180711
4.scrool/ zeny/ plane ìƒìžë¥¼ ì›í•˜ëŠ” ë§Œí¼ ì²´í¬í•˜ì—¬ ë” ë¹ ë¥¸ 경로를 안내 ë°›ì„ ìˆ˜ 있다.
4) Scroll | Zeny | Plane options can be checked to find a faster route
*/
MSG_NAVIGATION_HELP17 = 0x8d1,
-/*20171018 to 20180627
+/*20171018 to 20180711
5.안내 ë²„íŠ¼ì´ ëˆŒëŸ¬ì§€ë©´ ê²°ê³¼ ë¦¬ìŠ¤íŠ¸ì°½ì€ ê¸¸ì•ˆë‚´ 리스트 장으로 변경 ëœë‹¤.
5) Guide button is pressed, the result list window displays where routes can change direction
*/
MSG_NAVIGATION_HELP18 = 0x8d2,
-/*20171018 to 20180627
+/*20171018 to 20180711
6.검색 리스트창 하단 ë²„íŠ¼ì„ ì´ìš©í•˜ì—¬
6) Using the button below, search results can be found
*/
MSG_NAVIGATION_HELP19 = 0x8d3,
-/*20171018 to 20180627
+/*20171018 to 20180711
[결과 리스트 창] <-> [길 안내 정보 창] 으로 보기 모드 변경 가능하다.
-> [Results List Window] <-> [View Modes can be switched]
*/
MSG_NAVIGATION_HELP20 = 0x8d4,
-/*20171018 to 20180627
+/*20171018 to 20180711
Level:%d (보스)
Level:%d (Boss)
*/
MSG_NAVIGATION_LEVEL_D_BOSS = 0x8d5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Level:%d (ì¼ë°˜)
Level:%d (Mob)
*/
MSG_NAVIGATION_LEVEL_D_NORMAL = 0x8d6,
-/*20171018 to 20180627
+/*20171018 to 20180711
수ì†ì„±%d
Water %d
*/
MSG_NAVIGATION_PROPERTY1 = 0x8d7,
-/*20171018 to 20180627
+/*20171018 to 20180711
지ì†ì„±%d
Earth %d
*/
MSG_NAVIGATION_PROPERTY2 = 0x8d8,
-/*20171018 to 20180627
+/*20171018 to 20180711
í™”ì†ì„±%d
Fire %d
*/
MSG_NAVIGATION_PROPERTY3 = 0x8d9,
-/*20171018 to 20180627
+/*20171018 to 20180711
í’ì†ì„±%d
Wind %d
*/
MSG_NAVIGATION_PROPERTY4 = 0x8da,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…ì†ì„±%d
Poison %d
*/
MSG_NAVIGATION_PROPERTY5 = 0x8db,
-/*20171018 to 20180627
+/*20171018 to 20180711
성ì†ì„±%d
Holy %d
*/
MSG_NAVIGATION_PROPERTY6 = 0x8dc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•”ì†ì„±%d
Shadow %d
*/
MSG_NAVIGATION_PROPERTY7 = 0x8dd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—¼ì†ì„±%d
Ghost %d
*/
MSG_NAVIGATION_PROPERTY8 = 0x8de,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì–¸ë°ë“œ%d
Undead %d
*/
MSG_NAVIGATION_PROPERTY9 = 0x8df,
-/*20171018 to 20180627
+/*20171018 to 20180711
무ì†ì„±%d
Neutral %d
*/
MSG_NAVIGATION_PROPERTY0 = 0x8e0,
-/*20171018 to 20180627
+/*20171018 to 20180711
중형
Medium
*/
MSG_NAVIGATION_SCALE1 = 0x8e1,
-/*20171018 to 20180627
+/*20171018 to 20180711
대형
Large
*/
MSG_NAVIGATION_SCALE2 = 0x8e2,
-/*20171018 to 20180627
+/*20171018 to 20180711
소형
Small
*/
MSG_NAVIGATION_SCALE0 = 0x8e3,
-/*20171018 to 20180627
+/*20171018 to 20180711
불사형
Undead
*/
MSG_NAVIGATION_RACE1 = 0x8e4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë™ë¬¼í˜•
Brute
*/
MSG_NAVIGATION_RACE2 = 0x8e5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì‹ë¬¼í˜•
Plant
*/
MSG_NAVIGATION_RACE3 = 0x8e6,
-/*20171018 to 20180627
+/*20171018 to 20180711
곤충형
Insect
*/
MSG_NAVIGATION_RACE4 = 0x8e7,
-/*20171018 to 20180627
+/*20171018 to 20180711
어패형
Fish
*/
MSG_NAVIGATION_RACE5 = 0x8e8,
-/*20171018 to 20180627
+/*20171018 to 20180711
악마형
Demon
*/
MSG_NAVIGATION_RACE6 = 0x8e9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ê°„형
Demi-Human
*/
MSG_NAVIGATION_RACE7 = 0x8ea,
-/*20171018 to 20180627
+/*20171018 to 20180711
천사형
Angel
*/
MSG_NAVIGATION_RACE8 = 0x8eb,
-/*20171018 to 20180627
+/*20171018 to 20180711
용족
Dragon
*/
MSG_NAVIGATION_RACE9 = 0x8ec,
-/*20171018 to 20180627
+/*20171018 to 20180711
무형
Formless
*/
MSG_NAVIGATION_RACE0 = 0x8ed,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì´ë™ í´ë¦­
Click to move %s
*/
MSG_NAVIGATION_MOVECLICK = 0x8ee,
-/*20171018 to 20180627
+/*20171018 to 20180711
Npc ì´ë™ 서비스 ì´ìš©
Move to the Kafra Service Npc
*/
MSG_NAVIGATION_NPCMOVE = 0x8ef,
-/*20171018 to 20180627
+/*20171018 to 20180711
NPC í´ë¦­
Click the NPC
*/
MSG_NAVIGATION_NPCCLICK = 0x8f0,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì´ë™
Move %s
*/
MSG_NAVIGATION_S_MOVE = 0x8f1,
-/*20171018 to 20180627
+/*20171018 to 20180711
비공정 ì´ë™
Move to the Airship Service
*/
MSG_NAVIGATION_PLANEMOVE = 0x8f2,
-/*20171018 to 20180627
+/*20171018 to 20180711
워프 ì´ìš©
By Warp
*/
MSG_NAVIGATION_WARPUSE = 0x8f3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„ì°©ì  : ( %d %d )
End Points: (%d %d)
*/
MSG_NAVIGATION_TARGETPOINT_D_D = 0x8f4,
-/*20171018 to 20180627
+/*20171018 to 20180711
내비게ì´ì…˜ì´ ì§€ì› ë˜ì§€ 않는 지역 입니다.
That does not support the navigation area
*/
MSG_NAVIGATION_UNKNOWNMAP = 0x8f5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì°¾ê³ ìž í•˜ëŠ” 목ì ì´ 불분명 합니다.
The purpose is unclear
*/
MSG_NAVIGATION_RS_UNKNOWN = 0x8f6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë§¤ì¹­ì´ ë§žì§€ 않는 맵ì´ë‹¤.
Does not meet the map requirement
*/
MSG_NAVIGATION_RS_NOTSAMEMAP = 0x8f7,
-/*20171018 to 20180627
+/*20171018 to 20180711
출발 ì§€ì—­ì— ëŒ€í•œ ì •ë³´ 설정 실패!
Information Failure | Change settings
*/
MSG_NAVIGATION_RS_FAILSTARTDATA = 0x8f8,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„ì°© 지ì ì— 대한 ì •ë³´ 설정 실패!
Failed to set info for location!
*/
MSG_NAVIGATION_RS_FAILTARGET = 0x8f9,
-/*20171018 to 20180627
+/*20171018 to 20180711
길 찾기 실패
Failed to find a path
*/
MSG_NAVIGATION_RS_FAILROUTE = 0x8fa,
-/*20171018 to 20180627
+/*20171018 to 20180711
플레ì´ì–´ 위치 찾기 실패
Failed to find players
*/
MSG_NAVIGATION_RS_FAILPLAYER = 0x8fb,
-/*20171018 to 20180627
+/*20171018 to 20180711
내비게ì´ì…˜ì— ì •ë³´ê°€ 없습니다.
No Information
*/
MSG_NAVIGATION_RS_NODATA = 0x8fc,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ë§µì€ ê¸¸ì°¾ê¸°ê°€ ì§€ì› ë˜ì§€ 않는 맵입니다.
Map doesn't support directions
*/
MSG_NAVIGATION_RS_MAPNOTNAVIGATION = 0x8fd,
-/*20171018 to 20180627
+/*20171018 to 20180711
목표를 지정 하시기 ë°”ëžë‹ˆë‹¤.
Please specify target goals.
*/
MSG_NAVIGATION_RS_FAILTARGETROUTE = 0x8fe,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„ì°©.
Found
*/
MSG_NAVIGATION_RS_SUCCESS = 0x8ff,
-/*20171018 to 20180627
+/*20171018 to 20180711
길 안내가 시작 ë˜ì—ˆìŠµë‹ˆë‹¤.
Directions were started
*/
MSG_NAVIGATION_RS_START = 0x900,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì°¾ê³ ìž í•˜ëŠ” 몬스터가 있는 맵 입니다.
Is the map that your looking for mob
*/
MSG_NAVIGATION_RS_MOBTARGETMAP = 0x901,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì°¾ê³ ìž í•˜ëŠ” ë§µì´ í•´ë‹¹ 맵 입니다.
Map appears on the guide you are looking for
*/
MSG_NAVIGATION_RS_TARGETMAP = 0x902,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ 사용하여 ì´ë™í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.
Please navigate using the item
*/
MSG_NAVIGATION_RS_SCROLL = 0x903,
-/*20171018 to 20180627
+/*20171018 to 20180711
안내하는 위치로 ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Please follow the instruction to reach your destination.
*/
MSG_NAVIGATION_RS_ROUTE_SUCCESS = 0x904,
-/*20171018 to 20180627
+/*20171018 to 20180711
목표 ë§µì— ë„착하였습니다.
Arrived at the target map
*/
MSG_NAVIGATION_RS_MAPTMAP_SUCCESS = 0x905,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì°¾ê³ ìž í•˜ëŠ” Npcê°€ 있는 ë§µì— ë„ì°© 하였습니다. Npcë¡œ ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Arrived on the map that has the Npc your looking for. Go to that NPC
*/
MSG_NAVIGATION_RS_NPCTMAP_SUCCESS = 0x906,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì°¾ê³ ìž í•˜ëŠ” Mobì´ ì„œì‹í•˜ëŠ” ë§µì— ë„ì°© 하였습니다.
You have arrived at the mob you were looking for
*/
MSG_NAVIGATION_RS_MOBTMAP_SUCCESS = 0x907,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì „ê³¼ ë™ì¼í•œ 목표 입니다.
You have reached your goal
*/
MSG_NAVIGATION_RS_POSTMAP_SUCCESS = 0x908,
-/*20171018 to 20180627
+/*20171018 to 20180711
가리키는 방향으로 가시기 ë°”ëžë‹ˆë‹¤.
Please go to indicated direction.
*/
MSG_NAVIGATION_RS_SAMETARGET = 0x909,
-/*20171018 to 20180627
+/*20171018 to 20180711
목표가 여기 입니다.
The goal has been reached
*/
MSG_NAVIGATION_RS_HERE = 0x90a,
-/*20171018 to 20180627
+/*20171018 to 20180711
Navigation >: %s
*/
MSG_NAVIGATION_PRINT_S = 0x90b,
-/*20171018 to 20180627
+/*20171018 to 20180711
Navigation >: 안내하는 %s(ì„)를 ì´ìš©í•˜ì—¬
Navigation >: Talk to Guide "%s" (A)
*/
MSG_NAVIGATION_PRINT_GO_S = 0x90c,
-/*20171018 to 20180627
+/*20171018 to 20180711
Navigation >: 맵(%s)으로 ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤
Navigation >: Move to (%s) map
*/
MSG_NAVIGATION_PRINT_MAP_S = 0x90d,
-/*20171018 to 20180627
+/*20171018 to 20180711
Navigation >: 맵(%s)ì„ ì„ íƒí•˜ì—¬ ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Choose (%s) Map from Kafra
*/
MSG_NAVIGATION_PRINT_SELECTMAP_S = 0x90e,
-/*20171018 to 20180627
+/*20171018 to 20180711
Navigation >: 비공정으로 ì´ë™ 하시기 ë°”ëžë‹ˆë‹¤
Navigation >: Please go to the AirShip
*/
MSG_NAVIGATION_PRINT_PLANE = 0x90f,
-/*20171018 to 20180627
+/*20171018 to 20180711
Navigation >: 워프를 ì´ìš©í•˜ì—¬ ë‹¤ìŒ ì§€ì—­ìœ¼ë¡œ ì´ë™í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Navigation >: Get to your destination by using WarpPortal
*/
MSG_NAVIGATION_PRINT_WARP = 0x910,
-/*20171018 to 20180627
+/*20171018 to 20180711
Item:
*/
MSG_NAVIGATION_PRINT_ITEM = 0x911,
-/*20171018 to 20180627
+/*20171018 to 20180711
$$
*/
MSG_NAVIGATION_ZZ = 0x912,
-/*20171018 to 20180627
+/*20171018 to 20180711
$$lv
*/
MSG_NAVIGATION_ZZLV = 0x913,
-/*20171018 to 20180627
+/*20171018 to 20180711
~
*/
MSG_NAVIGATION_ZZLIMIT = 0x914,
-/*20171018 to 20180627
+/*20171018 to 20180711
$$all
*/
MSG_NAVIGATION_ZZALL = 0x915,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매 확ì¸ì„œ
Confirm Deal
*/
MSG_SHOP_ITEM_BAY_TITLE = 0x916,
-/*20171018 to 20180627
+/*20171018 to 20180711
구입하려는 ì•„ì´í…œë“¤ì˜ ì´ê°€ê²©ì€
Below is the total cost:
*/
MSG_SHOP_ITEM_BAY_MAG1 = 0x917,
-/*20171018 to 20180627
+/*20171018 to 20180711
Zeny 입니다.
Zeny to complete the transaction.
*/
MSG_SHOP_ITEM_BAY_MAG2 = 0x918,
-/*20171018 to 20180627
+/*20171018 to 20180711
구입하시겠습니까?
Press buy to confirm.
*/
MSG_SHOP_ITEM_BAY_MAG3 = 0x919,
-/*20171018 to 20180627
+/*20171018 to 20180711
%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + 프리미엄 %.1f%% + %s서버 %.1f%%)
%.1f% (PCRoom %.1f% + TPLUS %.1f% + Premium %.1f% + %sServer %.1f%)
*/
MSG_BASIC_EXP_MSG2 = 0x91a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¹´ë“œ ë¶
Card Book
*/
MSG_CARDWIN = 0x91b,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d%% [ ( 기본 100%% + %s서버 %d%% ) * 활성 %.1f ]
%d%% [ ( Basic 100%% + %sServer %d%% ) * Active %.1f ]
*/
MSG_PERSONAL_INFORMATION_MSG_CHN = 0x91c,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d%% [ 기본 100%% + %s서버 %d%% ]
%d%% [ Basic 100%% + %sServer %d%% ]
*/
MSG_PERSONAL_INFORMATION_MSG_CHN_DEATH = 0x91d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ê³³ì€ PK 지역입니다. 미성년ìžëŠ” ìžë°œì ìœ¼ë¡œ 떠나주시기 ë°”ëžë‹ˆë‹¤.
This is PK region. Minors,Please leave immediately.
*/
MSG_CAUTION_PKZONE = 0x91e,
-/*20171018 to 20180627
+/*20171018 to 20180711
피로ë„
Fatigue
*/
MSG_FATIGUE = 0x91f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê±´ê°•ìƒíƒœ ì´ë©° 게임수ìµì€ 100%입니다.
Health and gaming revenue is 100%%.
*/
MSG_FATIGUE_LEVEL_ZERO = 0x920,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§€ê¸ˆì€ í”¼ë¡œìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ 게임수ìµì€ 50% 떨어집니다. ê±´ê°•ì„ ìœ„í•˜ì—¬ ì ë‹¹í•œ íœ´ì‹ ë°”ëžë‹ˆë‹¤.
Fatigue because it is now a guest of the gaming revenue is down 50 percent.Hope for the proper health
*/
MSG_FATIGUE_LEVEL_HALF = 0x921,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§€ê¸ˆì€ ë¹„ê±´ê°•ìƒíƒœì´ë¯€ë¡œ ì†ë‹˜ì˜ ê±´ê°•ì„ ìœ„í•˜ì—¬ 게임오프ë¼ì¸ì„ ì›í•©ë‹ˆë‹¤. ê³„ì† ì˜¨ë¼ì¸ìƒíƒœì— 있으면 ê±´ê°•ì— ì†ìƒì„ 주므로 게임 수ìµì€ 0%으로 떨어지며 게임 오프ë¼ì¸ 5ì‹œê°„í›„ì— ë‹¤ì‹œ 회복ë©ë‹ˆë‹¤.
Now because it is a non-health to the health of the guests want to offline games. If you still are online gaming revenue because the damage to the health of the game falls to 0% again after 5 hours will be restored offline.
*/
MSG_FATIGUE_LEVEL_FULL = 0x922,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì†ì‹œê°„ %d ë¶„ì´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Online since %d minutes
*/
MSG_FATIGUE_MESSAGE0 = 0x923,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì†ì‹œê°„ %d ì‹œê°„ì´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Online Time: %d
*/
MSG_FATIGUE_MESSAGE1 = 0x924,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì†ì‹œê°„ %d 시간 %d ë¶„ì´ ë˜ì—ˆìŠµë‹ˆë‹¤.
Online since %d hours and %d minutes
*/
MSG_FATIGUE_MESSAGE2 = 0x925,
-/*20171018 to 20180627
+/*20171018 to 20180711
/monsterhp : 공격한 ëª¬ìŠ¤í„°ì˜ HP정보를 표시합니다. On Off
/monsterhp: Show the hp of attacked monster. On off
*/
MSG_EXPLAIN_MONSTERHP = 0x926,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬í¬ì¸íŠ¸ :
Skill Points:
*/
MSG_SKILLPOINT2 = 0x927,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ì¦ì„œë²„ë¡œ ë¶€í„°ì˜ ì‘ë‹µì´ ì—†ìŠµë‹ˆë‹¤. 다시 ì‹œë„í•´ 주세요
There is no response from the authentification server. Please try again
*/
MSG_BAN_BILLING_SERVER_ERROR = 0x928,
-/*20171018 to 20180627
+/*20171018 to 20180711
암호를 변경하여 주시기 ë°”ëžë‹ˆë‹¤.
Please change your password
*/
MSG_REFUSE_CHANGE_PASSWD_FORCE = 0x929,
-/*20171018 to 20180627
+/*20171018 to 20180711
http://www.ragnarok.co.kr
*/
MSG_REFUSE_CHANGE_PASSWD_SITE = 0x92a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³ ê°ë‹˜ê»˜ì„œëŠ” 현재 ì ‘ì†ê¸ˆì§€ 시간입니다.
Guest access is prohibited
*/
MSG_PLANNED_TIME_SHUTDOWN = 0x92b,
-/*20171018 to 20180627
+/*20171018 to 20180711
셧다운제ë„ì— ì˜í•´ ê³ ê°ë‹˜ì˜ 게임제한 ì‹œê°„ì€ %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2dì— ê²Œìž„ì´ ì¢…ë£Œë  ì˜ˆì •ìž…ë‹ˆë‹¤.
Your System is been Shutdown, %1.2d-%1.2d-%1.2d %1.2d:%1.2d:%1.2d is the end time.
*/
MSG_SHOUTDOWN_TIME = 0x92c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³ ê°ë‹˜ì˜ ê³„ì •ì€ ì„ íƒì  ì…§ë‹¤ìš´ì´ ì ìš©ëœ 계정ì´ë©°, ìž”ì—¬ì‹œê°„ì€ %1.2d시간 %1.2d분입니다. 게임 ì´ìš©ì— 참고해주시기 ë°”ëžë‹ˆë‹¤.
Selected System Shutdown is activated in your account,Time Left: %1.2d hours %1.2d minutes.
*/
MSG_PARTIAL_SHOUTDOWN_TIME = 0x92d,
-/*20171018 to 20180627
+/*20171018 to 20180711
리플레ì´
Replay
*/
MSG_MENU_REPLAYWND = 0x92e,
-/*20171018 to 20180627
+/*20171018 to 20180711
매í¬ë¡œ
Macro
*/
MSG_MENU_MACROWND = 0x92f,
-/*20171018 to 20180627
+/*20171018 to 20180711
Webbrowser
*/
MSG_MENU_WEBBROWSERWND = 0x930,
-/*20171018 to 20180627
+/*20171018 to 20180711
내비게ì´ì…˜
Navigation
*/
MSG_MENU_NAVIGATIONWND = 0x931,
-/*20171018 to 20180627
+/*20171018 to 20180711
UAEURL
*/
MSG_MENU_UAEURLWND = 0x932,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ëžœì •ë³´
Clan Information
*/
MSG_CLAN_INFOMANAGE = 0x933,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ëžœë ˆë²¨
Clan Level
*/
MSG_CLAN_LEVEL = 0x934,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ëžœëª…
Clan Name
*/
MSG_CLAN_NAME = 0x935,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ëžœë§ˆí¬
Clan Mark
*/
MSG_CLAN_MARK = 0x936,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë™ë§¹í´ëžœ
Ally Clan
*/
MSG_ALLY_CLAN = 0x937,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ëŒ€í´ëžœ
Antagonist Clan
*/
MSG_HOSTILITY_CLAN = 0x938,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ëžœì—게 보냄
Send to Clan
*/
MSG_SEND_TO_CLAN = 0x939,
-/*20171018 to 20180627
+/*20171018 to 20180711
마스터ì´ë¦„
ClanMaster Name
*/
MSG_CLAN_MASTER_NAME = 0x93a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¡°í•©ì›ìˆ˜
Number of Members
*/
MSG_CLAN_NUM_MEMBER = 0x93b,
-/*20171018 to 20180627
+/*20171018 to 20180711
관리ì˜ì§€
Castles Owned
*/
MSG_CLAN_MANAGE_LAND = 0x93c,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ëžœ 채팅 메시지 표시
Clan Chat Messages
*/
MSG_VIEW_CLAN_MSG = 0x93d,
-/*20171018 to 20180627
+/*20171018 to 20180711
충전 페ì´ì§€ë¡œ ì´ë™í•©ë‹ˆë‹¤.
Go to Page Charged.
*/
MSG_TWWAB_WARRING = 0x93e,
-/*20171018 to 20180627
+/*20171018 to 20180711
https://gfb.gameflier.com/Billing/ingame/index_new.asp?
*/
MSG_TWWAB_URL = 0x93f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° 만들기
Create char
*/
MSG_STR_MAKECHARACTER = 0x940,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­ëª…ì´ ì¼ì¹˜í•˜ì§€ 않습니다.
Name does not match
*/
MSG_CHR_DELETE_RESERVED_FAIL_CHARNAME = 0x941,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°ëª…ì„ ìž…ë ¥í•˜ì„¸ìš”
Enter the name of character
*/
MSG_CHR_DELETE_RESERVED_INPUTCONFIRMSTR_WND_TITLE = 0x942,
-/*20171018 to 20180627
+/*20171018 to 20180711
성별 ì„ íƒ ì°½
Sex Selection Window
*/
MSG_SELECT_SEX = 0x943,
-/*20171018 to 20180627
+/*20171018 to 20180711
파ì¼ì˜ 위변조가 ê°ì§€ ë˜ì—ˆìŠµë‹ˆë‹¤.
Editing of the File Detected
*/
MSG_SPRITE_ALTER = 0x944,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ì•„ì´í…œì„ 개봉하여 íšë“ë˜ëŠ” ì•„ì´í…œë“¤ì€ ìºë¦­í„° ê·€ì† ì•„ì´í…œ (창고ì´ë™ 불가능) 입니다. 본 ìºë¦­í„°ì— 사용하시는 ê²ƒì´ ë§žìœ¼ì‹ ì§€ 확ì¸í•´ì£¼ì‹œê¸° ë°”ëžë‹ˆë‹¤. ìƒìžë¥¼ 개봉하시겠습니까?
Items obtained by opening the item is character bounded (can not move to storage). Do you want to open the box?
*/
MSG_CONFIRM_TO_OPEN_EVENT_ITEM = 0x945,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임 설정
Game Settings
*/
MSG_GAME_SETTING = 0x946,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임 시스템
Game System
*/
MSG_SYSTEM_SETTING = 0x947,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임 커맨드
Game Commands
*/
MSG_COMMAND_SETTING = 0x948,
-/*20171018 to 20180627
+/*20171018 to 20180711
게임 커맨드 ON/OFF
Game Command ON/OFF
*/
MSG_COMMAND_LIST = 0x949,
-/*20171018 to 20180627
+/*20171018 to 20180711
매í¬ë¡œ
Macro
*/
MSG_MACRO_LIST = 0x94a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì§€ì—­ì€ ì•„ì´í…œêµí™˜ì´ 금지 ë˜ì–´ 있습니다
Trading is prohibited in this Map
*/
MSG_EXCHANGEITEM_DENY_MAP = 0x94b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì§€ì—­ì€ 카트ì´ìš©ì´ 금지 ë˜ì–´ 있습니다
Vending is prohibited in this Map
*/
MSG_CART_USE_DENY_MAP = 0x94c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì§€ì—­ì€ íƒœì–‘ê³¼ë‹¬ê³¼ë³„ì˜ ê¸°ì  íš¨ê³¼ê°€ ë°œìƒí•˜ì§€ 않습니다.
In this Map,Effect of Mirace of Sun and Moon is nullified.
*/
MSG_BLOCK_SUNMOONSTAR_MIRACLE = 0x94d,
-/*20171018 to 20180627
+/*20171018 to 20180711
랭킹 보드
Ranking Board
*/
MSG_RANKING_BOARD = 0x94e,
-/*20171018 to 20180627
+/*20171018 to 20180711
순위
Rank
*/
MSG_RANKING_NUMBER = 0x94f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„
Name
*/
MSG_RANKING_NAME = 0x950,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¬ì¸íŠ¸
Points
*/
MSG_RANKING_POINT = 0x951,
-/*20171018 to 20180627
+/*20171018 to 20180711
BlackSmith
*/
MSG_RANKING_BLACKSMITH = 0x952,
-/*20171018 to 20180627
+/*20171018 to 20180711
Alchemist
*/
MSG_RANKING_ALCHEMIST = 0x953,
-/*20171018 to 20180627
+/*20171018 to 20180711
Taekwon
*/
MSG_RANKING_TAEKWON = 0x954,
-/*20171018 to 20180627
+/*20171018 to 20180711
Killer
*/
MSG_RANKING_KILLER = 0x955,
-/*20171018 to 20180627
+/*20171018 to 20180711
7 vs 7
*/
MSG_RANKING_BATTLE_7VS7_ALL = 0x956,
-/*20171018 to 20180627
+/*20171018 to 20180711
RuneKnight
*/
MSG_RANKING_RUNE_KNIGHT = 0x957,
-/*20171018 to 20180627
+/*20171018 to 20180711
Warlock
*/
MSG_RANKING_WARLOCK = 0x958,
-/*20171018 to 20180627
+/*20171018 to 20180711
Ranger
*/
MSG_RANKING_RANGER = 0x959,
-/*20171018 to 20180627
+/*20171018 to 20180711
Mechanic
*/
MSG_RANKING_MECHANIC = 0x95a,
-/*20171018 to 20180627
+/*20171018 to 20180711
GuillotineCross
*/
MSG_RANKING_GUILLOTINE_CROSS = 0x95b,
-/*20171018 to 20180627
+/*20171018 to 20180711
Archbishop
*/
MSG_RANKING_ARCHBISHOP = 0x95c,
-/*20171018 to 20180627
+/*20171018 to 20180711
RoyalGuard
*/
MSG_RANKING_ROYAL_GUARD = 0x95d,
-/*20171018 to 20180627
+/*20171018 to 20180711
Sorcerer
*/
MSG_RANKING_SORCERER = 0x95e,
-/*20171018 to 20180627
+/*20171018 to 20180711
Minstrel
*/
MSG_RANKING_MINSTREL = 0x95f,
-/*20171018 to 20180627
+/*20171018 to 20180711
Wanderer
*/
MSG_RANKING_WANDERER = 0x960,
-/*20171018 to 20180627
+/*20171018 to 20180711
Genetic
*/
MSG_RANKING_GENETIC = 0x961,
-/*20171018 to 20180627
+/*20171018 to 20180711
ShadowChaser
*/
MSG_RANKING_SHADOW_CHASER = 0x962,
-/*20171018 to 20180627
+/*20171018 to 20180711
Sura
*/
MSG_RANKING_SURA = 0x963,
-/*20171018 to 20180627
+/*20171018 to 20180711
Kagerou
*/
MSG_RANKING_KAGEROU = 0x964,
-/*20171018 to 20180627
+/*20171018 to 20180711
Oboro
*/
MSG_RANKING_OBORO = 0x965,
-/*20171018 to 20180627
+/*20171018 to 20180711
Select Ranking Type
*/
MSG_RANKING_SELECT = 0x966,
-/*20171018 to 20180627
+/*20171018 to 20180711
Ranking Type
*/
MSG_RANKING_TYPE = 0x967,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ì ‘ì† ì¸ì›ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤. ^0000ff현재 대기순위 : %d ì˜ˆìƒ ëŒ€ê¸°ì‹œê°„ : %dì´ˆ
Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dSeconds
*/
MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_SEC = 0x968,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ì ‘ì† ì¸ì›ì´ ê°€ë“ ì°¼ìŠµë‹ˆë‹¤. ^0000ff현재 대기순위 : %d ì˜ˆìƒ ëŒ€ê¸°ì‹œê°„ : %d분 %dì´ˆ
Currently,Server is full. ^0000ffPeople Currently Waiting: %d Expected Waiting Time: %dMinutes %d Seconds
*/
MSG_WAITING_FOR_ENTER_TO_CHARACTER_SEVER_IN_MIN = 0x969,
-/*20171018 to 20180627
+/*20171018 to 20180711
CBT 초청 유저가 아닙니다
CBT is not an invited user
*/
MSG_CBT_ACTIVE_USER_CHECK = 0x96a,
-/*20171018 to 20180627
+/*20171018 to 20180711
-------------- Navigation 명령어 --------------
------------------- Instruction --------------------
*/
MSG_NAVIGATION_HELP_1 = 0x96b,
-/*20171018 to 20180627
+/*20171018 to 20180711
/navigation /navi : /navi yuno 100/100 ->> 맵ì´ë¦„, 위치(100/100)
1) /Navigation or /navi ex) /navi prontera 100 100 -> /navi "MAPNAME", 100, 100
*/
MSG_NAVIGATION_HELP_2 = 0x96c,
-/*20171018 to 20180627
+/*20171018 to 20180711
/navigation2 /navi2 : /navi2 yuno 100/100 1/1/1 ->> 맵ì´ë¦„, 위치(100/100), scrool/zeny/plane (1:사용함 0: 사용안함)
2) /Navigation2 or /navi2 ex) /navi2 prontera 100 111 -> MAPNAME location (100 90), Scroll | Zeny | Plane (1: Enable or 0: Disable)
*/
MSG_NAVIGATION_HELP_3 = 0x96d,
-/*20171018 to 20180627
+/*20171018 to 20180711
-------------- Navigation 검색창 명령어 -------
-> /navi2 goes with the case with location coordinates. They must be no less than 3 characters
*/
MSG_NAVIGATION_HELP_4 = 0x96e,
-/*20171018 to 20180627
+/*20171018 to 20180711
$$all : 모든 항목 출력 (Type 구분ìžì—ì„œ 출력 종류를 나눌수 있다.)
3) $$all Output all the items (Can take a while...)
*/
MSG_NAVIGATION_HELP_5 = 0x96f,
-/*20171018 to 20180627
+/*20171018 to 20180711
$$lv30 : 해당 ë ˆë²¨ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
4) $$lv30 monsters are placed in the output
*/
MSG_NAVIGATION_HELP_6 = 0x970,
-/*20171018 to 20180627
+/*20171018 to 20180711
$$lv20~30 : 해당 레벨 ë²”ìœ„ì˜ ëª¬ìŠ¤í„° 출력 (숫ìžëŠ” 변경 가능)
5) $$lv20~30 monsters in that level range are placed in the output
*/
MSG_NAVIGATION_HELP_7 = 0x971,
-/*20171018 to 20180627
+/*20171018 to 20180711
1 vs 1
*/
MSG_RANKING_BATTLE_1VS1_ALL = 0x972,
-/*20171018 to 20180627
+/*20171018 to 20180711
특수 장비
Special Gear
*/
MSG_SHADOW_EQUIPMENT = 0x973,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d 번째 ìºë¦­í„°ì˜ ì§ì—… ì •ë³´ê°€ ì´ìƒí•©ë‹ˆë‹¤. ê³ ê°ì„¼í„°ë¡œ ë¬¸ì˜ ë¶€íƒ ë“œë¦½ë‹ˆë‹¤. ErrorCode(%d)
%d First character of the profession is more than information. Please contact the Customer Care Center. ErrorCode(%d)
*/
MSG_CHARACTERERROR_JOB = 0x974,
-/*20171018 to 20180627
+/*20171018 to 20180711
(%s) %d / %d
*/
MSG_NAVIGATION_ALL_S = 0x975,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s-%s(%d/%d)
*/
MSG_NAVIGATION_ALL_SD = 0x976,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì†ìž 수 초과로 ì„œë²„ì— ë”ì´ìƒ ì ‘ì†í•  수 없습니다.
Server Exceeded the maximum number of users,Cannot Connect anymore users.
*/
MSG_REFUSE_OVER_USERLIMIT = 0x977,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì„œë²„ì ‘ì† ì‹¤íŒ¨ (%d)
Server Connection Failed (%d)
*/
MSG_REFUSE_ERRORCODE = 0x978,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¡œê·¸ì¸ í—ˆìš©ì‹œê°„ 초과
Login Timeout Permitted
*/
MSG_REFUSE_DISCONNECT_KEEP_TIME = 0x979,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¡œê·¸ì¸ ì¤‘ ì¸ì¦ì„œë²„로부터 ì¸ì¦ì´ 실패하였습니다.
Login Authentication Failed from Authentication Server.
*/
MSG_REFUSE_WEB_AUTH_FAILED = 0x97a,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì´ë¦„ì— ê³µë°±ë¬¸ìžë¥¼ 사용할 수 없습니다.
Guild Cannot use Space in the name.
*/
MSG_GUILDNAME_CHECK = 0x97b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³ ê°ë‹˜ 안녕하세요!
Hey,Hello There
*/
MSG_BILLING_CHN_1 = 0x97c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %dë…„ %d ì›” %dì¼ %d:%d ì— ì¢…ë£Œë©ë‹ˆë‹¤.
Available Time will End on %d month %d hour %d:%d
*/
MSG_BILLING_CHN_2 = 0x97d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ ì•„ì§ ë§Žì´ ë‚¨ì•˜ìœ¼ë‹ˆ 안심하고 플레ì´í•˜ì„¸ìš”!
You've lot of time,Play in Peace.
*/
MSG_BILLING_CHN_3 = 0x97e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ ì´ë²ˆ 주 ë‚´ë¡œ 종료 ë©ë‹ˆë‹¤. 종료 ì „ì— ì¶©ì „ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Your hours will be terminated within this week. Please Charge before termination.
*/
MSG_BILLING_CHN_4 = 0x97f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ 24시간 ë‚´ì— ì¢…ë£Œë©ë‹ˆë‹¤. 빨리 충전하시기 ë°”ëžë‹ˆë‹¤.
Your hours will be terminated within 24 hours.Please Charge Quickly.
*/
MSG_BILLING_CHN_5 = 0x980,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d시간 남았습니다. ì •ìƒì ì¸ 게임 ì´ìš©ì„ 위해 ì¶©ì „ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Current Time Left:%d hours.Charge the game for uninterrupted play.
*/
MSG_BILLING_CHN_6 = 0x981,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d분 남았습니다. ì´ìš©ì‹œê°„ì´ ëë‚œ 후 ê°•ì œì ìœ¼ë¡œ 종료ë©ë‹ˆë‹¤. ì •ìƒì ì¸ 게임 ì´ìš©ì„ 위해 ì¶©ì „ì„ í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.
Current Time Left:%d minutes.Charge the game for uninterrupted play.
*/
MSG_BILLING_CHN_7 = 0x982,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d시간 %d분 남았습니다.
Time Left: %d hours %d minutes
*/
MSG_BILLING_CHN_8 = 0x983,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d%% ( 기본 100%% + PC방 %d%% + 프리미엄 %d%% + %s서버 %d%% )
%d%% ( Basic 100%% + PCRoom %d%% + Premium %d%% + %sServer %d%% )
*/
MSG_BASIC_EXP_MSG_THAI = 0x984,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê³ ê°ë‹˜ì˜ ì´ìš© ì‹œê°„ì€ %d시간 %d분 í›„ì— ì¢…ë£Œë©ë‹ˆë‹¤.
After %d hours %d minutes, your game will be terminated.
*/
MSG_CHN_BILLING_EXPIRE_TIME = 0x985,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìœ ì €ë‹˜ì˜ ê³„ì •ì€ ì˜êµ¬ ì ‘ì†ê¸ˆì§€ ë˜ì˜€ìŠµë‹ˆë‹¤
This Account is permanently Banned.
*/
MSG_CHN_BLOCK_FOREVER = 0x986,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìœ ì €ë‹˜ì˜ ê³„ì •ì€ ì ‘ì†ê¸ˆì§€ ë˜ì˜€ìŠµë‹ˆë‹¤
해지 시간 : %04d-%02d-%02d %02d:%02d
This Account is banned.
Termination Time:%04d-%02d-%02d %02d:%02d
*/
MSG_CHN_BLOCK = 0x987,
-/*20171018 to 20180627
+/*20171018 to 20180711
몬스터(Tab)
Monster(Tab)
*/
MSG_WORLDMAP_MSG1 = 0x988,
-/*20171018 to 20180627
+/*20171018 to 20180711
맵(Alt)
Map(Alt)
*/
MSG_WORLDMAP_MSG2 = 0x989,
-/*20171018 to 20180627
+/*20171018 to 20180711
안내 정보
Product Information
*/
MSG_WORLDMAP_MSG3 = 0x98a,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색 정보
Find Information
*/
MSG_WORLDMAP_MSG4 = 0x98b,
-/*20171018 to 20180627
+/*20171018 to 20180711
비공정
AirShip
*/
MSG_WORLDMAP_MSG5 = 0x98c,
-/*20171018 to 20180627
+/*20171018 to 20180711
카프ë¼
Kafra
*/
MSG_WORLDMAP_MSG6 = 0x98d,
-/*20171018 to 20180627
+/*20171018 to 20180711
(ë„ì°©)
(Arrival)
*/
MSG_WORLDMAP_MSG7 = 0x98e,
-/*20171018 to 20180627
+/*20171018 to 20180711
Mob)%s:%s(%s)
*/
MSG_NAVIGATION_MOB_S_S_S = 0x98f,
-/*20171018 to 20180627
+/*20171018 to 20180711
분í¬ë„:%s
Distribution:%s
*/
MSG_NAVIGATION_NUM = 0x990,
-/*20171018 to 20180627
+/*20171018 to 20180711
매우많ìŒ
Very Plenty
*/
MSG_NAVIGATION_NUM1 = 0x991,
-/*20171018 to 20180627
+/*20171018 to 20180711
많ìŒ
Plenty
*/
MSG_NAVIGATION_NUM2 = 0x992,
-/*20171018 to 20180627
+/*20171018 to 20180711
보통
Normal
*/
MSG_NAVIGATION_NUM3 = 0x993,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ìŒ
Low
*/
MSG_NAVIGATION_NUM4 = 0x994,
-/*20171018 to 20180627
+/*20171018 to 20180711
매우ì ìŒ
Very Low
*/
MSG_NAVIGATION_NUM5 = 0x995,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì€í–‰ì„ ì´ìš©í•  수 없습니다. ìž ì‹œ 후 다시 ì‹œë„하세요.
The bank is not available. Please try again in a few minutes.
*/
MSG_BANK_SYSTEM_ERROR = 0x996,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì€í–‰ 잔고가 부족합니다.
Bank balance is low.
*/
MSG_BANK_WITHDRAW_NO_MONEY = 0x997,
-/*20171018 to 20180627
+/*20171018 to 20180711
보유한 Zeny 가 부족해서 입금할 수 없습니다.
You don't have enough zeny
*/
MSG_BANK_DEPOSIT_NO_MONEY = 0x998,
-/*20171018 to 20180627
+/*20171018 to 20180711
1 Zeny ì´ìƒ 입금 가능합니다.
Minimum Deposit Amount: 1 zeny
*/
MSG_BANK_DEPOSIT_ZERO = 0x999,
-/*20171018 to 20180627
+/*20171018 to 20180711
1 Zeny ì´ìƒ 출금 가능합니다.
Minimum Withdrawal Amount: 1 zeny
*/
MSG_BANK_WITHDRAW_ZERO = 0x99a,
-/*20171018 to 20180627
+/*20171018 to 20180711
보유 Zeny 는 2,147,483,647 Zeny를 ë„˜ì„ ìˆ˜ 없습니다.
You cannot hold more than 2,147,483,647 Zeny
*/
MSG_BANK_OVER_INT_MAX = 0x99b,
-/*20171018 to 20180627
+/*20171018 to 20180711
your account is lock by mobil otp
your account is lock by mobile otp
*/
MSG_REFUSE_MOTP_LOCK = 0x99c,
-/*20171018 to 20180627
+/*20171018 to 20180711
MOTP auth fail
*/
MSG_REFUSE_MOTP_AUTH_FAIL = 0x99d,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d분간 몬스터ì—게 ì–»ì„ ìˆ˜ 있는 Job경험치가 %d%% ì¦ê°€í•©ë‹ˆë‹¤.
For %d minutes,Job Experience obtained from monster is increased by %d%%
*/
MSG_JOBPLUSEXP_VALUE = 0x99e,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지 Zeny : %s Zeny
Current Zeny: %s Zeny
*/
MSG_BANK_MY_ZENY = 0x99f,
-/*20171018 to 20180627
+/*20171018 to 20180711
Zeny
*/
MSG_BANK_ZENY = 0x9a0,
-/*20171018 to 20180627
+/*20171018 to 20180711
최대 2,147,483,647 Zeny 까지만 ë³´ê´€ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤.
The Maximum amount is 2,147,483,647 Zeny
*/
MSG_BANK_WARNING = 0x9a1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ì•Œì´ 부족합니다.
Insufficient bullet
*/
MSG_NEED_MORE_BULLET = 0x9a2,
-/*20171018 to 20180627
+/*20171018 to 20180711
10억제니 ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 10ì–µ 제니로 íŒë§¤ë©ë‹ˆë‹¤.
You entered more than 1 Billion Zeny, the price will be set to 1 Billion Zeny.
*/
MSG_OVERPRICE_MAX = 0x9a3,
-/*20171018 to 20180627
+/*20171018 to 20180711
AuthTicket is Not Vaild
AuthTicket is Not Valid
*/
MSG_NOT_VALID_AUTH_TICKET = 0x9a4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ErrorCategory : %d, ErrorCode : %d (%d,%d,%d,%d)
ErrorCategory: %d, ErrorCode: %d (%d,%d,%d,%d)
*/
MSG_STEAMAGENCY_ERROR = 0x9a5,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d%% ( Basic 100%% + Premium %d%% + PCCafe %d%% + %s Server %d%% )
%d%% ( Basic 100%% + Premium %d%% + Internet cafe %d%% + %s Server %d%% )
*/
MSG_BASIC_EXP_MSG_INDONESIA = 0x9a6,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d분간 몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %d%%ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Basic item drop rate from monster hunting is increased for %dmins by %dtimes.
*/
MSG_RECEIVEITEM_VALUE = 0x9a7,
-/*20171018 to 20180627
+/*20171018 to 20180711
%dì‹œ %.2d분간 몬스터 ì‚¬ëƒ¥ì„ í†µí•´ ì–»ì„ ìˆ˜ 있는 기본 ì•„ì´í…œì˜ ë“œë¡­ë¥ ì´ %d%%ë¡œ ì¦ê°€í•©ë‹ˆë‹¤.
Basic item drop rate from monster hunting is increased for %dhour %.2dmins by %dtimes.
*/
MSG_RECEIVEITEM_VALUE_1 = 0x9a8,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì˜ ê°€ê²©ì´
The price of^0000FF %s^000000
*/
MSG_WARNING_PRICE1 = 0x9a9,
-/*20171018 to 20180627
+/*20171018 to 20180711
100000000
1000000000
*/
MSG_WARNING_PRICE2 = 0x9aa,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000%d^0000ffì–µ
is over ^FF0000%d^0000FF Billion^000000 Zeny and
*/
MSG_WARNING_PRICE3 = 0x9ab,
-/*20171018 to 20180627
+/*20171018 to 20180711
10000000
*/
MSG_WARNING_PRICE4 = 0x9ac,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000%d^0000ff천만
more than^FF0000 %d0^0000FF Million^000000 Zeny
*/
MSG_WARNING_PRICE5 = 0x9ad,
-/*20171018 to 20180627
+/*20171018 to 20180711
^0000ffZeny ì´ìƒ^000000입니다.
ìž…ë ¥ê¸ˆì•¡ì´ ë§žìŠµë‹ˆê¹Œ?
. Is this correct?
*/
MSG_WARNING_PRICE6 = 0x9ae,
-/*20171018 to 20180627
+/*20171018 to 20180711
천만Zenyì´ìƒ 안전확ì¸
Safety check for more than 10m Zeny
*/
MSG_WARNING_PRICE7 = 0x9af,
-/*20171018 to 20180627
+/*20171018 to 20180711
https://www.warpportal.com/account/login.aspx?ReturnUrl=%2faccount%2fpayment.aspx
*/
MSG_AMERICA_CASHSHOP_URL = 0x9b0,
-/*20171018 to 20180627
+/*20171018 to 20180711
https://kepler.warpportal.com/ro1/purchase/?step=1&steamid=%lld&accountname=
https://kepler.warpportal.com/ror/purchase/?step=1&steamid=%lld&accountname=
*/
MSG_AMERICA_CASHSHOP_URL_STEAM = 0x9b1,
-/*20171018 to 20180627
+/*20171018 to 20180711
지ìƒì˜ ë, 스플랑디드와 부유대륙 ì•Œí”„í—¤ìž„ì„ ìž‡ëŠ” 다리, ë¹„í”„ë¡œìŠ¤íŠ¸ì— ìƒê²¨ë‚œ 거대한 ê· ì—´, 그리고 ê·¼ì›ì„ ì•Œ 수 없는 미ê¶ìˆ².
A giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim, and you do not know the source of the labyrinth forest.
*/
MSG_QUEST_INFO_01 = 0x9b2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ê²ƒì€ ì—¬í–‰ì˜ ëì„ ì•Œë¦¬ëŠ” í‘œì‹ì¸ê°€, 새로운 세계를 여는 지표ì¸ê°€! 수호ìžëŠ” ë…¸ëž«ë§ ê°™ì€ ìœ í˜¹ì— ì ì°¨ ë„‹ì„ ìžƒì–´ê°€ê³  있었다.
This is a marker indicating the end of the trip, a new world is opening indicators! Guardian, such as the lyrics to the temptation was gradually losing the soul.
*/
MSG_QUEST_INFO_02 = 0x9b3,
-/*20171018 to 20180627
+/*20171018 to 20180711
수천 ë…„ì˜ ì„¸ì›”ì´ í르는 ë™ì•ˆ, ê·¸ 스스로가 홀로 ì•ˆê°„íž˜ì„ ì“°ë©° 지켜낸 ê²ƒì´ ë¬´ì—‡ì´ì—ˆëŠ”지, ë´‰ì¸ ë˜ì–´ 긴 ì‹œê°„ì„ ê°‡í˜€ë²„ë¦° ê²ƒì€ ì˜¤ížˆë ¤ ìžì‹ ì´ 아니었는지 í˜¼ëž€ì„ ëŠë¼ê³  있었다.
For thousands of years, a mysterious melody has mesmerized the guardian. After a millennia of slumber, the guardian became confused about what he had been protecting all these years, and began to suspect that he might be the one who has been sealed and hidden away.
*/
MSG_QUEST_INFO_03 = 0x9b4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìœ í˜¹ì˜ ë…¸ëž«ë§ì´ ìµœê³ ì¡°ì— ì´ë¥´ë €ì„ ë•Œ, 지ìƒì˜ ë 스플랑디드와 부유대륙 ì•Œí”„í—¤ìž„ì„ ìž‡ëŠ” 다리, ë¹„í”„ë¡œìŠ¤íŠ¸ì— ê±°ëŒ€í•œ ê· ì—´ì´ ìƒê²¨ë‚¬ê³ , 그로 ì¸í•´ ë‘ ì„¸ê³„ê°„ì˜ ì™•ëž˜ê°€ ëŠê¸°ë©´ì„œ ì‚¬ëžŒë“¤ì€ í° ë¶ˆíŽ¸ì„ ê²ªê²Œ ë˜ì—ˆë‹¤.
When the melody reached its peak, a giant crevice appeared in Bifrost, the bridge between Splendide, the end of the world and the floating continent of Alfheim. As a result, the two worlds were cut off from each other, causing a big problem for the people.
*/
MSG_QUEST_INFO_04 = 0x9b5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¹„í”„ë¡œìŠ¤íŠ¸ì˜ í†µë¡œëŠ” ì´ì œ 미ê¶ìˆ² ë¿. ê·¼ì›ì¡°ì°¨ ì•Œ 수 없는 ê·¸ê³³ì„ ë¬´ì‚¬ížˆ 통과 í•œ ì‚¬ëžŒì€ ì§€ê¸ˆê¹Œì§€ ì•„ë¬´ë„ ì—†ì—ˆë‹¤.
Now, the only way to get to Bifrost is through the Labyrinth Forest. Nobody knows how the forest came to exist, and nobody has ever come out of it alive...
*/
MSG_QUEST_INFO_05 = 0x9b6,
-/*20171018 to 20180627
+/*20171018 to 20180711
숱한 ëª¨í—˜ê°€ë“¤ì„ ì§‘ì–´ 삼킨 혼ëˆì˜ 지옥, 미ê¶ìˆ²ì€ ê·¸ ì†ì„ 방황하는 ì´ë¦„ 모를 ì—¬ì¸ì˜ 마ìŒì²˜ëŸ¼ ë”ìš± 깊고 혼란스럽게 확장ë˜ê³  있었다.
Swallowed countless adventurers to put a hell of confusion, wandering in the forest labyrinth of nowhere, like the heart of a woman was being extend deeper confusion.
*/
MSG_QUEST_INFO_06 = 0x9b7,
-/*20171018 to 20180627
+/*20171018 to 20180711
숫ìžë§Œ ìž…ë ¥ 가능합니다.
You can enter only numbers.
*/
MSG_BANK_CHECK_NUM = 0x9b8,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµí™˜ì°½ ë˜ëŠ” ìƒì ì´ 활성화 ëœ ìƒíƒœì—서는 ìž…ì¶œê¸ˆì„ í•˜ì‹¤ìˆ˜ 없습니다.
Exchange or store window is active and can not register the withdrawal.
*/
MSG_BANK_PROHIBIT = 0x9b9,
-/*20171018 to 20180627
+/*20171018 to 20180711
바로가기
Go to
*/
MSG_QUEST_INFO_00 = 0x9ba,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 비êµ
Item Compare
*/
MSG_ITEM_COMPARISON = 0x9bb,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 장착하려고 하는 ì´ê¸°ê°€ 장착하고 있는 íƒ„í™˜ì— ë§žì§€ 않습니다
Now you are trying to mount the gun equipped with bullet does not meet
*/
MSG_WRONG_GUN = 0x9bc,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 장착하려고 하는 íƒ„í™˜ì´ ìž¥ì°©í•˜ê³  있는 ì´ê¸°ì™€ 맞지 않습니다
Now you are trying to mount the guns and bullets will not fit mounted
*/
MSG_WRONG_BULLET = 0x9bd,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤í•  ì•„ì´í…œì„ 등ë¡í•˜ì§€ 않았습니다. íŒë§¤í•˜ì‹¤ ì•„ì´í…œì„ 등ë¡í•´ 주세요
Has not registered to sell the item. Please register to sell the item
*/
MSG_BUYINGSTORE_MAKEWND_ADD_GOODS = 0x9be,
-/*20171018 to 20180627
+/*20171018 to 20180711
ITEM
*/
MSG_ITEM_IN_MAIL_SYSTEM = 0x9bf,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 창고를 ì´ìš©í•  수 없습니다.
Guild storage is not available.
*/
MSG_GUILD_STORAGE_OPEN_ERROR = 0x9c0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸¸ë“œì— ê°€ìž…ë˜ì–´ 있지 않습니다. 가입 후 ì´ìš©í•´ì£¼ì„¸ìš”.
Guild is not subscribed to. After signing up, please use
*/
MSG_GUILD_STORAGE_OPEN_NO_JOIN_GUILD = 0x9c1,
-/*20171018 to 20180627
+/*20171018 to 20180711
다른 길드ì›ì´ 사용중입니다. ìž ì‹œ 후 ì´ìš©í•´ì£¼ì„¸ìš”.
Two other guild members are in use. Please use it after a while.
*/
MSG_GUILD_STORAGE_WARNING_USING_ANOTHER_MEMBER = 0x9c2,
-/*20171018 to 20180627
+/*20171018 to 20180711
창고권한
Storage Permission
*/
MSG_GUILD_STORAGE_PERMISSON = 0x9c3,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드창고
Guild Storage
*/
MSG_GUILD_STORAGE_TITLE = 0x9c4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸¸ë“œì°½ê³ ì˜ ì‚¬ìš© ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.
You do not have permission to use guild storage.
*/
MSG_GUILD_STORAGE_PERMISSON_WARNING_MSG = 0x9c5,
-/*20171018 to 20180627
+/*20171018 to 20180711
한정íŒë§¤ 등ë¡ì°½
Limited Sale Registration Window
*/
MSG_BARGAINSALE_TOOLWND_TITLE = 0x9c6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ DB명
Item DB Name
*/
MSG_BARGAINSALE_TOOLWND_DB_NAME = 0x9c7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ DB번호
Item DB Number
*/
MSG_BARGAINSALE_TOOLWND_DB_NUMBER = 0x9c8,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ 갯수
Number of Sale
*/
MSG_BARGAINSALE_TOOLWND_SELL_COUNT = 0x9c9,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ 시작시간
Sale Start Time
*/
MSG_BARGAINSALE_TOOLWND_SELL_STARTTIME = 0x9ca,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤í•  시간
Time to sell
*/
MSG_BARGAINSALE_TOOLWND_SELL_PERIODTIME = 0x9cb,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤í•  갯수를 입력해 주세요
Please enter number you want to sell
*/
MSG_BARGAINSALE_TOOLWND_INPUT_COUNT_MSG = 0x9cc,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ ì‹œìž‘ì‹œê°„ì„ ìž…ë ¥í•´ 주세요
Enter start time of sale
*/
MSG_BARGAINSALE_TOOLWND_INPUT_STARTTIME_MSG = 0x9cd,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ ì‹œìž‘ì‹œê°„ì˜ ë²”ìœ„ê°€ 맞지 않습니다
Start time does not match the scope of sales.
*/
MSG_BARGAINSALE_TOOLWND_WRONG_RANGE_MSG = 0x9ce,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤í•  ì‹œê°„ì„ ìž…ë ¥í•´ 주세요
Please enter the time
*/
MSG_BARGAINSALE_TOOLWND_INPUT_PERIODTIME_MSG = 0x9cf,
-/*20171018 to 20180627
+/*20171018 to 20180711
Item DB Nameì„ ìž…ë ¥í•´ 주세요
Please enter the Item DB Name
*/
MSG_BARGAINSALE_TOOLWND_INPUT_ITEMDBNAME_MSG = 0x9d0,
-/*20171018 to 20180627
+/*20171018 to 20180711
Item ID ì¡°íšŒì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤. í™•ì¸ í›„ 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤
Item ID lookup failed. Please try again later
*/
MSG_BARGAINSALE_TOOLWND_ITEMID_CHECK_FAILED_MSG = 0x9d1,
-/*20171018 to 20180627
+/*20171018 to 20180711
>> ItemName : %s / Price : %dc / 수량 : %d / íŒë§¤ê¸°ê°„ : %dì›”:%dì¼:%dì‹œ:%d분 ~ %dì›”:%dì¼:%dì‹œ:%d분
>> ItemName: %s / Price: %dc / Quantity: %d / TimeOfSale: %dMonth:%dDay:%dMinute:%dSecond ~ %dMonth:%dDay:%dMinute:%dSecond
*/
MSG_BARGAINSALE_TOOLWND_RESULT_FORMAT = 0x9d2,
-/*20171018 to 20180627
+/*20171018 to 20180711
등ë¡ì— 성공하였습니다
Registration successful
*/
MSG_BARGAINSALE_TOOLWND_APPLY_SUCCESS_MSG = 0x9d3,
-/*20171018 to 20180627
+/*20171018 to 20180711
등ë¡ì— 실패하였습니다. 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Registration failure. Please try again later.
*/
MSG_BARGAINSALE_TOOLWND_APPLY_FAILED_MSG = 0x9d4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ 등ë¡ëœ ì•„ì´í…œì´ 있습니다. 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Item has already been registered. Please try again later.
*/
MSG_BARGAINSALE_TOOLWND_ALREADY_REGISTERED_MSG = 0x9d5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ì‚­ì œì— ì‹¤íŒ¨ 하였습니다. 다시 ì‹œë„í•´ 주시기 ë°”ëžë‹ˆë‹¤.
Failed to delete the item. Please try again later.
*/
MSG_BARGAINSALE_TOOLWND_DELETE_FAILED_MSG = 0x9d6,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì´ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.
%s item has been deleted.
*/
MSG_BARGAINSALE_TOOLWND_DELETE_SUCCESS_MSG = 0x9d7,
-/*20171018 to 20180627
+/*20171018 to 20180711
특가
Special
*/
MSG_BARGAINSALE_CASHSHOP_TAB_NAME = 0x9d8,
-/*20171018 to 20180627
+/*20171018 to 20180711
한정íŒë§¤ ì•„ì´í…œ íŒë§¤ìˆ˜ëŸ‰ 갱신
Sales limited sale item update
*/
MSG_BARGAINSALE_CASHSHOP_REFRESH_BTN_TOOLTIP = 0x9d9,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ì¢…료
Discontinued
*/
MSG_BARGAINSALE_CASHSHOP_TIMER = 0x9da,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìˆ˜ëŸ‰ê°±ì‹ ì´ í•„ìš”í•©ë‹ˆë‹¤
Quantity update is required
*/
MSG_BARGAINSALE_CASHSHOP_REFRESH_MSG = 0x9db,
-/*20171018 to 20180627
+/*20171018 to 20180711
재고가 부족하여 %d ê°œ 만í¼ë§Œ 구입합니다
The %d is out of stock or to buy as much as
*/
MSG_BARGAINSALE_CASHSHOP_CHECK_COUNT_MSG = 0x9dc,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì˜ 특가íŒë§¤ê°€ 시작ë˜ì—ˆìŠµë‹ˆë‹¤
%s Items are on sale
*/
MSG_BARGAINSALE_START_MSG = 0x9dd,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì˜ 매진 ë˜ëŠ” íŒë§¤ì‹œê°„만료로 ì¸í•´ 한정íŒë§¤ê°€ 종료ë˜ì—ˆìŠµë‹ˆë‹¤
%s time-out or sale of the items sold has been shut down due to the limited sales
*/
MSG_BARGAINSALE_CLOSE_MSG = 0x9de,
-/*20171018 to 20180627
+/*20171018 to 20180711
/한정íŒë§¤
/limitedsale
*/
MSG_BARGAINSALE_TOOLWND_CALL = 0x9df,
-/*20171018 to 20180627
+/*20171018 to 20180711
http://www.ragnarokeurope.com/news/home-r70.html
*/
MSG_FRANCE_CASHSHOP_URL = 0x9e0,
-/*20171018 to 20180627
+/*20171018 to 20180711
http://www.ragnarokeurope.com/index.php?rubrique=70&Steam
*/
MSG_FRANCE_CASHSHOP_URL_STEAM = 0x9e1,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµ¬ìž…ì— ì„±ê³µí•œ 품목
Item purchase successful
*/
MSG_PARA_RESULT_TITLE = 0x9e2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì£¼ë¬¸ëŸ‰ì´ ìž¬ê³ ëŸ‰ì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.
You do not have enough items.
*/
MSG_PARA_WRONG_PURCHASE_COUNT_MSG = 0x9e3,
-/*20171018 to 20180627
+/*20171018 to 20180711
초대할수 없는 케릭터 ì´ë¦„입니다.
Name of the character that cannot be invited.
*/
MSG_PARTY_INVITE = 0x9e4,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드초대할수 없는 케릭터 ì´ë¦„입니다.
You cannot invite the character to the guild.
*/
MSG_GUILD_INVITE = 0x9e5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë¶€ í’ˆëª©ì€ ì´ë¯¸ íŒë§¤ë˜ì–´ êµ¬ìž…ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Item already Sold,Purchase Failed.
*/
MSG_PARA_PURCHASE_ITEM_FAIL = 0x9e6,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 위치ì—ì„œ 워프 장소를 기억 í•  수 없습니다.
The warp spot cannot be memorized in current position.
*/
MSG_NOWARPSKILL2 = 0x9e7,
-/*20171018 to 20180627
+/*20171018 to 20180711
무게가 초과ë˜ì–´ ì•„ì´í…œì„ 구매할 수 없습니다.
Cannot purchase item, You exceeded the weight.
*/
MSG_PARA_PURCHASE_ITEM_WEIGHT = 0x9e8,
-/*20171018 to 20180627
+/*20171018 to 20180711
No.
*/
MSG_GUILD_STORAGE_NUMBER = 0x9e9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ
Item
*/
MSG_GUILD_STORAGE_ITEM = 0x9ea,
-/*20171018 to 20180627
+/*20171018 to 20180711
개수
Number
*/
MSG_GUILD_STORAGE_ITEM_COUNT = 0x9eb,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¦„
Name
*/
MSG_GUILD_STORAGE_USER_NAME = 0x9ec,
-/*20171018 to 20180627
+/*20171018 to 20180711
시간
Time
*/
MSG_GUILD_STORAGE_LOG_TIME = 0x9ed,
-/*20171018 to 20180627
+/*20171018 to 20180711
입/출
Input/Output
*/
MSG_GUILD_STORAGE_ITEM_IN_OUT = 0x9ee,
-/*20171018 to 20180627
+/*20171018 to 20180711
로그가 존재하지 않습니다.
Log does not exist.
*/
MSG_GUILD_STORAGE_LOG_FINISH = 0x9ef,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ ì²´
Entire
*/
MSG_GUILD_STORAGE_LOG_ALL = 0x9f0,
-/*20171018 to 20180627
+/*20171018 to 20180711
넣 기
Insert Symbol
*/
MSG_GUILD_STORAGE_LOG_IN = 0x9f1,
-/*20171018 to 20180627
+/*20171018 to 20180711
빼 기
Remaining Time
*/
MSG_GUILD_STORAGE_LOG_OUT = 0x9f2,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 창고 내역
Guild Storage Logs
*/
MSG_GUILD_STORAGE_LOG_WND_NAME = 0x9f3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚´ì—­ì€ ìµœê·¼ 100개만 표시ë©ë‹ˆë‹¤.
100 entries are displayed.
*/
MSG_GUILD_STORAGE_LOG_CAUTION = 0x9f4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸¸ë“œì°½ê³ ì˜ ì‚¬ìš© 시간 2ë¶„ì´ ê²½ê³¼ë˜ì–´ ìžë™ìœ¼ë¡œ 종료ë©ë‹ˆë‹¤.
Guild Storage is open only for 2 minutes, and will close automatically.
*/
MSG_GUILD_STORAGE_CLOSE_TIMEOUT = 0x9f5,
-/*20171018 to 20180627
+/*20171018 to 20180711
Incorrect GameSamba ID. Please Try Again.
*/
MSG_INCORRECT_GAMESAMBEID = 0x9f6,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s [%d옵션] : %d 개
%s [%d Option]: %d Quantity
*/
MSG_EA5 = 0x9f7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì½”ì¸ì´ 필요합니다.
Requires a Coin.
*/
MSG_USESKILL_FAIL_COINTS = 0x9f8,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì½”ì¸ì´ %d 개가 필요합니다.
%d Coins are required.
*/
MSG_USESKILL_FAIL_COINTS_NUM = 0x9f9,
-/*20171018 to 20180627
+/*20171018 to 20180711
개틀ë§ê±´ ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Gatling Gun should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_GATLING = 0x9fa,
-/*20171018 to 20180627
+/*20171018 to 20180711
샷건 ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Shotguns should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_SHOTGUN = 0x9fb,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¼ì´í”Œ ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Rifle should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_RIFLE = 0x9fc,
-/*20171018 to 20180627
+/*20171018 to 20180711
리볼버 ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Pair of Revolver should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_HANDGUN = 0x9fd,
-/*20171018 to 20180627
+/*20171018 to 20180711
성ì†ì„± ë¸”ë¦¿ì„ ìž¥ì°©í•´ì•¼ 합니다
[Silver Bullet] weapon class must be equipped.
*/
MSG_FAIL_NEED_EQUIPPED_PROPERTY_SAINT_BULLET = 0x9fe,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ íŒë§¤ ë‚´ì—­
Item Sell History
*/
MSG_MERCHANT_SOLD_ITEM_LOG = 0x9ff,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 구매 ë‚´ì—­
Item Purchase History
*/
MSG_MERCHANT_ITEM_BUY_LOG = 0xa00,
-/*20171018 to 20180627
+/*20171018 to 20180711
그레네ì´ë“œëŸ°ì³ ê³„ì—´ì˜ ì´ê¸°ë¥˜ë¥¼ 장착한 ìƒíƒœì—¬ì•¼ 합니다.
Grenade Launcher should be equipped with bullets.
*/
MSG_FAIL_NEED_EQUIPPED_GUN_GRANADE = 0xa01,
-/*20171018 to 20180627
+/*20171018 to 20180711
[히트배럴],[매드니스 캔슬러],[플래티넘 알터] ì˜ íš¨ê³¼ë“¤ì€ ì¤‘ì²©í•˜ì—¬ 사용할 수 없습니다.
[Heat barrel],[Last Stand],[Platinum Alter] cannot be used while sitting.
*/
MSG_FAIL_DUPLICATE_HEAT_BARREL_GS_MADNESSCANCEL_P_ALTER = 0xa02,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 맵ì—서는 사용할 수 없는 스킬입니다.
Cannot use skill in this map.
*/
MSG_USESKILL_FAIL_MAP = 0xa03,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 창고를 ì´ìš©ì¤‘ì¸ ê²½ìš° ì°½ê³ ì˜ ëª¨ë“  ì•„ì´í…œì´ 사ë¼ì§€ê²Œ ë©ë‹ˆë‹¤.
If you are using a guild storage, all items inside it will disappear.
*/
MSG_GUILD_STORAGE_WARNING = 0xa04,
-/*20171018 to 20180627
+/*20171018 to 20180711
http://ragnarok.gamesamba.com/paytest.html
http://ragnarok.gamesamba.com/
*/
MSG_AMERICA_CASHSHOP_URL_GAMESAMBA = 0xa05,
-/*20171018 to 20180627
+/*20171018 to 20180711
로그ì¸ì„ 위해 패스워드를 입력해주세요.
Please enter a password to login.
*/
MSG_SECOND_PASSWORD_INFO_4 = 0xa06,
-/*20171018 to 20180627
+/*20171018 to 20180711
펫 진화
Pet Evolution
*/
MSG_PET_EVOLUTION = 0xa07,
-/*20171018 to 20180627
+/*20171018 to 20180711
진화 - %s
Evolution - %s
*/
MSG_PET_EVOLUTION_WITH_PET_NAME = 0xa08,
-/*20171018 to 20180627
+/*20171018 to 20180711
진화ì—는 다ìŒì˜ 재료가 필요합니다.
Evolution requires the following ingredients:
*/
MSG_PET_EVOLUTION_NEED_ITEM = 0xa09,
-/*20171018 to 20180627
+/*20171018 to 20180711
진화 하시겠습니까?
Are you sure you want to evolve your pet?
*/
MSG_DO_YOU_WANT_TO_EVOLVE_PET = 0xa0a,
-/*20171018 to 20180627
+/*20171018 to 20180711
알 수 없는 오류
Unknown Error
*/
MSG_PET_EVOLUTION_FAIL_UNKNOWN = 0xa0b,
-/*20171018 to 20180627
+/*20171018 to 20180711
소환ëœíŽ«ì„ ê°–ê³  있지 않습니다.
Pet Cannot be hatched.
*/
MSG_PET_EVOLUTION_FAIL_NOTEXIST_CALLPET = 0xa0c,
-/*20171018 to 20180627
+/*20171018 to 20180711
요청한 ê²ƒì´ íŽ«ì•Œì´ ì•„ë‹™ë‹ˆë‹¤.
It is not requested petal.
*/
MSG_PET_EVOLUTION_FAIL_NOT_PETEGG = 0xa0d,
-/*20171018 to 20180627
+/*20171018 to 20180711
진화 재료가 부족합니다.
Evolution material is low.
*/
MSG_PET_EVOLUTION_FAIL_RECIPE = 0xa0e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§„í™”ì— í•„ìš”í•œ 재료가 부족합니다.
Insufficient materials for evolution.
*/
MSG_PET_EVOLUTION_FAIL_MATERIAL = 0xa0f,
-/*20171018 to 20180627
+/*20171018 to 20180711
친밀ë„ê°€ ì ˆì¹œì¸ ìƒíƒœì—서만 진화가 가능합니다.
Loyal Intimacy is required to evolve.
*/
MSG_PET_EVOLUTION_FAIL_RG_FAMILIAR = 0xa10,
-/*20171018 to 20180627
+/*20171018 to 20180711
펫 ìžë™ ë¨¹ì´ ì£¼ê¸°
Automatic feeding
*/
MSG_PET_AUTO_FEEDING = 0xa11,
-/*20171018 to 20180627
+/*20171018 to 20180711
펫ì—게 먹ì´ë¥¼ 주었습니다. '%s' 잔여량 %dê°œ
Feeding the pet. %d '%d' remaining
*/
MSG_PET_AUTO_FEEDING_REST = 0xa12,
-/*20171018 to 20180627
+/*20171018 to 20180711
펫 ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 On
Automatic feeding turned On
*/
MSG_PET_AUTO_FEEDING_ON = 0xa13,
-/*20171018 to 20180627
+/*20171018 to 20180711
펫 ìžë™ ë¨¹ì´ ì£¼ê¸° 활성화 Off
Automatic feeding turned Off
*/
MSG_PET_AUTO_FEEDING_OFF = 0xa14,
-/*20171018 to 20180627
+/*20171018 to 20180711
갱신
Update
*/
MSG_REFRESH = 0xa15,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d 분 전
%d minutes ago
*/
MSG_TIME_LINE_MINUTE = 0xa16,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d 시간 전
%d hours ago
*/
MSG_TIME_LINE_HOUR = 0xa17,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d ì¼ ì „
%d days ago
*/
MSG_TIME_LINE_DAY = 0xa18,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d%% ( Premium %d%% + %s Server )
%d%%% ( Premium %d%%% + %s Server )
*/
MSG_BASIC_EXP_MSG_PH = 0xa19,
-/*20171018 to 20180627
+/*20171018 to 20180711
우편 발송
Mailed
*/
MSG_SEND_MAIL = 0xa1a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ì´ 전송ë˜ì—ˆìŠµë‹ˆë‹¤.
Your mail has been sent.
*/
MSG_MAIL_SENT = 0xa1b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì´ ì¸ë²¤í† ë¦¬ë¡œ ì´ë™ë˜ì—ˆìŠµë‹ˆë‹¤.
This item has been moved to the inventory.
*/
MSG_GET_ITEMS_FROM_MAIL_SUCCEED = 0xa1c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 받기가 실패하였습니다.
Failed to get items.
*/
MSG_GET_ITEMS_FROM_MAIL_FAILED = 0xa1d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ë²¤í† ë¦¬ë¥¼ 비워주세요
Please empty your inventory.
*/
MSG_GET_ITEMS_FROM_MAIL_OVERWEIGHT = 0xa1e,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니를 받았습니다.
Zeny received.
*/
MSG_GET_ZENY_FROM_MAIL_SUCCEED = 0xa1f,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니 받기가 실패하였습니다.
Failed to get zeny.
*/
MSG_GET_ZENY_FROM_MAIL_FAILED = 0xa20,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì œë‹ˆì˜ í•œê³„ì¹˜ë¥¼ 넘었습니다.
Exceeded the limits of zenny.
*/
MSG_GET_ZENY_FROM_MAIL_OVERAMOUNT = 0xa21,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 첨부 성공
Items attached success
*/
MSG_SET_ITEMS_TO_MAIL_SUCCEED = 0xa22,
-/*20171018 to 20180627
+/*20171018 to 20180711
받는 ì‚¬ëžŒì˜ ì´ë¦„ì´ ë°˜ë“œì‹œ 들어가야 합니다.
The name of the recipient must be included.
*/
MSG_INVALID_MAIL_RECIEVER_INFO = 0xa23,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì œëª©ì˜ ê¸¸ì´ëŠ” 한글 2ìž~25ìž, ì˜ë¬¸ 4ìž~50ìž ì´ì–´ì•¼ 합니다.
The length of the title must be 4 to 50 characters long.
*/
MSG_INVALID_MAIL_TITLE_INFO = 0xa24,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ì „ì†¡ì´ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Mail delivery failed.
*/
MSG_FAILED_SEND_MAIL = 0xa25,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ì ˆí•˜ì§€ 못한 ì•„ì´í…œìœ¼ë¡œ 전송 실패하였습니다.
Transmission has failed to inappropriate items.
*/
MSG_FAILED_SEND_MAIL_ITEM = 0xa26,
-/*20171018 to 20180627
+/*20171018 to 20180711
받는 ì‚¬ëžŒì˜ ì •ë³´ê°€ 존재하지 않습니다.
Information of the recipient does not exist.
*/
MSG_FAIELD_SEND_MAIL_TO = 0xa27,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s [%d옵션]
%s [%d Option]
*/
MSG_EA6 = 0xa28,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë ˆë²¨ì€ 1~%d 사ì´ì˜ 숫ìžë¥¼ 입력해 주세요.
Level, enter a number between 1 and %d.
*/
MSG_PARTY_BOOKING_ERR5R2 = 0xa29,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì†Œì§€ì°½ì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
Please free the window possessing space.
*/
MSG_ITEM_WND_OVERFULL = 0xa2a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ë³´ë‚´ê¸° 횟수가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
Sending mail count exceeded.
*/
MSG_FAILED_MAIL_LIMIT_CNT = 0xa2b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ì„ ì—´ 수 없습니다.
You can not open the mail.
*/
MSG_FAILED_TO_WRITE_MAIL = 0xa2c,
-/*20171018 to 20180627
+/*20171018 to 20180711
You are currently joined in CLan !!
You are currently joined in Clan !!
*/
MSG_JOINED_IN_CLAN = 0xa2d,
-/*20171018 to 20180627
+/*20171018 to 20180711
골드 PCë°© 마ì¼ë¦¬ì§€ ì •ë³´
Gold PC rooms mileage information
*/
MSG_GOLDPCCAFE_MILEAGE = 0xa2e,
-/*20171018 to 20180627
+/*20171018 to 20180711
펫 액세서리를 해제해야 진화가 가능합니다.
Unequip pet accessories first to start evolution
*/
MSG_PET_EVOLUTION_FAIL_PET_ACC_OFF = 0xa2f,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d 분 후
%d minutes later
*/
MSG_TIME_LINE_MINUTE2 = 0xa30,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d 시간 후
%d hours later
*/
MSG_TIME_LINE_HOUR2 = 0xa31,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d ì¼ í›„
%d days later
*/
MSG_TIME_LINE_DAY2 = 0xa32,
-/*20171018 to 20180627
+/*20171018 to 20180711
í™•ì¸ ë²„íŠ¼ì„ ëˆŒëŸ¬ C-CODE를 확ì¸í•˜ì„¸ìš”.
Press the OK button to confirm the C-CODE.
*/
MSG_INVALID_CCODE_INFO = 0xa33,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì²¨ë¶€ëœ ë¬¼í’ˆì„ íšë“ 후 삭제가 가능합니다.
After obtaining the attached article can be deleted.
*/
MSG_FAILED_DELETE_MAIL = 0xa34,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 보유 제니 보다 ë§Žì€ ì œë‹ˆë¥¼ 보낼 수 없습니다.
You can not send any more zeny.
*/
MSG_FAILED_SEND_MAIL_ZENY = 0xa35,
-/*20171018 to 20180627
+/*20171018 to 20180711
수수료 : %s Zeny
Fee: %s Zeny
*/
MSG_SEND_MAIL_COMMISSION = 0xa36,
-/*20171018 to 20180627
+/*20171018 to 20180711
받는 ì‚¬ëžŒì˜ ì´ë¦„ì´ ì¡´ìž¬í•˜ì§€ 않습니다.
The recipient's name does not exist.
*/
MSG_FAILE_MAIL_RECIEVER_INFO = 0xa37,
-/*20171018 to 20180627
+/*20171018 to 20180711
E X P : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
EXP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
*/
MSG_TAIWAN_PERSONALINFO_EXPMSG = 0xa38,
-/*20171018 to 20180627
+/*20171018 to 20180711
DROP : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
DROP : %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
*/
MSG_TAIWAN_PERSONALINFO_DROPMSG = 0xa39,
-/*20171018 to 20180627
+/*20171018 to 20180711
DEATH : %.1f%% ( basic %.1f%% premium %.1f%% + %s %.1f%%)
DEATH: %.1f%% (Basic %.1f%% Premium %.1f%% + %s %.1f%%)
*/
MSG_TAIWAN_PERSONALINFO_DEATHMSG = 0xa3a,
-/*20171018 to 20180627
+/*20171018 to 20180711
골드 PCë°© 마ì¼ë¦¬ì§€ëŠ” 최대 %dì ê¹Œì§€ ëª¨ì„ ìˆ˜ 있습니다.
You can accumulate points of PC Gold-club up to %d points maximum.
*/
MSG_MILEAGE_HELP = 0xa3b,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 서버ì—ì„œ 사용 í•  수 없는 기능 입니다
This function can not be used on the server.
*/
MSG_RESTRAINT_OF_TRADE_1 = 0xa3c,
-/*20171018 to 20180627
+/*20171018 to 20180711
수래 ì´ìš©ì´ 불 가능한 서버 입니다.
Imposible to use in server.
*/
MSG_RESTRAINT_OF_TRADE_2 = 0xa3d,
-/*20171018 to 20180627
+/*20171018 to 20180711
옥션 ì´ìš©ì´ 불 가능한 서버 입니다.
The auction is not available in server.
*/
MSG_RESTRAINT_OF_TRADE_3 = 0xa3e,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래가 불 가능한 서버 입니다.
The deal is imposible in server.
*/
MSG_RESTRAINT_OF_TRADE_4 = 0xa3f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 버리기가 불 가능한 서버 입니다.
Items discard is imposible in server.
*/
MSG_RESTRAINT_OF_TRADE_5 = 0xa40,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒì  íŒë§¤ ê¸°ëŠ¥ì„ ì‚¬ìš©í• ìˆ˜ 없습니다.
Stores selling features are not available.
*/
MSG_RESTRAINT_OF_TRADE_6 = 0xa41,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì†Œí™˜ë¬¼ì˜ SPê°€ 부족합니다.
The SP's summoned enough.
*/
MSG_USESKILL_FAIL_SUMMON_SP_INSUFFICIENT = 0xa42,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s/%s
*/
MSG_SEND_MAIL_WEIGHT = 0xa43,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ë‚´ìš©ì˜ ìµœëŒ€ 길ì´ëŠ” 1K ì´í•˜ 입니다.
The maximum length of the message content is 1K.
*/
MSG_INVALID_MAIL_CONTENTS_INFO = 0xa44,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 첨부 실패
Failed to attach an item.
*/
MSG_SET_ITEMS_TO_MAIL_FAILED = 0xa45,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ì— 첨부할수 있는 ì•„ì´í…œì˜ 무게가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
The weight of the items that can be attached to mail has been exceeded.
*/
MSG_SET_ITEMS_TO_MAIL_OVER_WEIGHT = 0xa46,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ 서비스 중입니다. ìž ì‹œ 후 다시 ì‹œë„í•´ 주세요.
Is already in service. Please try again in a few minutes.
*/
MSG_DYNAMICNPC_FAIL_DUPLICATENAME = 0xa47,
-/*20171018 to 20180627
+/*20171018 to 20180711
í–‰ìš´ì˜ ë£°ë ›ì°½ì„ ì—´ 수 없습니다.
Unable to open the window of Lucky Roulette.
*/
MSG_FAILED_OPEN_ROULLETTE = 0xa48,
-/*20171018 to 20180627
+/*20171018 to 20180711
í–‰ìš´ì˜ ë£°ë ›ì°½ì„ ë‹«ì„ ìˆ˜ 없습니다.
Unable to close the window of the Lucky Roulette.
*/
MSG_FAILED_CLOSE_ROULLETTE = 0xa49,
-/*20171018 to 20180627
+/*20171018 to 20180711
í–‰ìš´ì˜ ë£°ë ›ì„ ì‹œìž‘ í•  수 없습니다.
You can not start a roulette wheel of fortune.
*/
MSG_FAILED_GENERATE_ROULLETTE = 0xa4a,
-/*20171018 to 20180627
+/*20171018 to 20180711
í–‰ìš´ì˜ ë£°ë ›ì„ ì‹œìž‘í•˜ê¸° 위해서는 í¬ì¸íŠ¸ê°€ 필요합니다.
Points is required to play Lucky Roulette.
*/
MSG_NOT_ENOUGH_ROULLETTE_POINT = 0xa4b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹¹ì²¨ëœ ì•„ì´í…œì„ 수령할 수 없습니다.
You can not receive a winning items.
*/
MSG_FAILED_RECV_ITEM = 0xa4c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ë²¤í† ë¦¬ì— ì•„ì´í…œ 개수가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
The number of items in the inventory has been exceeded.
*/
MSG_FAILED_RECV_ITEM_OVERCOUNT = 0xa4d,
-/*20171018 to 20180627
+/*20171018 to 20180711
무게가 초과하였습니다. ì†Œì§€ì°½ì˜ ì—¬ìœ ê³µê°„ì„ í™•ë³´í•´ì£¼ì„¸ìš”.
The weight has been exceeded. Please free up the possesion window.
*/
MSG_FAILED_RECV_ITEM_OVERWEIGHT = 0xa4e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì  ê°œì„¤ 실패.
Failed to open stalls.
*/
MSG_MERCHANTSHOP_MAKING_FAIL = 0xa4f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë£°ë ›ì´ ëŒê³  있습니다. ê²½í’ˆì„ í™•ì¸ í›„ì— ë‹¤ì‹œ ì‹œë„해주세요.
The roulette wheel is spinning. Please try again after checking with prizes.
*/
MSG_FAILED_CLOSE_ROULLETTEWND = 0xa50,
-/*20171018 to 20180627
+/*20171018 to 20180711
í–‰ìš´ì˜ ë£°ë ›
Lucky Roulette
*/
MSG_ROULLETTE_WND = 0xa51,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ íŒë§¤ ì‹œ 소리로 알림
Notify when item sell out
*/
MSG_SOUNDEFFECT_ITEMSELLWND = 0xa52,
-/*20171018 to 20180627
+/*20171018 to 20180711
수수료를 확ì¸í•´ì£¼ì„¸ìš”.
Please check the fees.
*/
MSG_FAILED_SEND_MAIL_ITEMS = 0xa53,
-/*20171018 to 20180627
+/*20171018 to 20180711
유저ì´ë¦„ 확ì¸
Verify user name
*/
MSG_CHECK_USER_NAME = 0xa54,
-/*20171018 to 20180627
+/*20171018 to 20180711
삭제 예정
Schedule deletion
*/
MSG_DELETE_DUE_DATE = 0xa55,
-/*20171018 to 20180627
+/*20171018 to 20180711
달성과제
Achievable challenge
*/
MSG_ACHIEVEMENT_SYSTEM = 0xa56,
-/*20171018 to 20180627
+/*20171018 to 20180711
달성ì´ì 
Achieve overall
*/
MSG_ACHIEVEMENT_TOTAL_SCORE = 0xa57,
-/*20171018 to 20180627
+/*20171018 to 20180711
달성등급
Achieve rank
*/
MSG_ACHIEVEMENT_GRADE = 0xa58,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹¤ìŒ ë‹¬ì„±ë“±ê¸‰ê¹Œì§€ [%5d]ì 
The following compensation box until [% 5d] point
*/
MSG_ACHIEVEMENT_SCORE_REQUIRED_TO_REWARD = 0xa59,
-/*20171018 to 20180627
+/*20171018 to 20180711
진척ìƒí™©
Progress
*/
MSG_ACHIEVEMENT_SUMMARY_TITLE = 0xa5a,
-/*20171018 to 20180627
+/*20171018 to 20180711
최근 달성 ì—…ì 
Recent Achievements
*/
MSG_ACHIEVEMENT_RECENT_ACHIEVEMENT = 0xa5b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ä»™è² í’ˆëª©
Cracker Item
*/
MSG_CASH_GEDARE1 = 0xa5c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ä»™è² : %d / %d
Cracker : %d / %d
*/
MSG_CASH_GEDARE2 = 0xa5d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ä»™è²ê°€ 부족합니다.
Cracker is low.
*/
MSG_CASH_GEDARE_FAIL_MONEY = 0xa5e,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s
%s
*/
MSG_CASH_GEDARE_MONEY = 0xa5f,
-/*20171018 to 20180627
+/*20171018 to 20180711
개요
Overview
*/
MSG_ACHIEVEMENT_TAB_SUMMARY = 0xa60,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë°˜
General
*/
MSG_ACHIEVEMENT_TAB_GENERAL = 0xa61,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°
Role
*/
MSG_ACHIEVEMENT_TAB_GENERAL_CHARACTER = 0xa62,
-/*20171018 to 20180627
+/*20171018 to 20180711
í–‰ë™
Action
*/
MSG_ACHIEVEMENT_TAB_GENERAL_ACTION = 0xa63,
-/*20171018 to 20180627
+/*20171018 to 20180711
기타
Other
*/
MSG_ACHIEVEMENT_TAB_GENERAL_REST = 0xa64,
-/*20171018 to 20180627
+/*20171018 to 20180711
모험
Adventure
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE = 0xa65,
-/*20171018 to 20180627
+/*20171018 to 20180711
룬미드가츠
Rune Midgarts
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_RUNEMIDGARTS = 0xa66,
-/*20171018 to 20180627
+/*20171018 to 20180711
슈발츠발드
Schwartzvald
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_SCHWARZWALD = 0xa67,
-/*20171018 to 20180627
+/*20171018 to 20180711
아루나펠츠
Arunafeltz
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_ARUNAFELTZ = 0xa68,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ê³„
Commandment
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_ANOTHERWORLD = 0xa69,
-/*20171018 to 20180627
+/*20171018 to 20180711
로컬ë¼ì´ì§•
Localizing
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_LOCALIZING = 0xa6a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë˜ì „
Dungeon
*/
MSG_ACHIEVEMENT_TAB_ADVENTURE_DUNGEON = 0xa6b,
-/*20171018 to 20180627
+/*20171018 to 20180711
전투
Battle
*/
MSG_ACHIEVEMENT_TAB_BATTLE = 0xa6c,
-/*20171018 to 20180627
+/*20171018 to 20180711
결투
Duel
*/
MSG_ACHIEVEMENT_TAB_BATTLE_PVP = 0xa6d,
-/*20171018 to 20180627
+/*20171018 to 20180711
수련
Lily
*/
MSG_ACHIEVEMENT_TAB_BATTLE_TRAINING = 0xa6e,
-/*20171018 to 20180627
+/*20171018 to 20180711
퀘스트
Quest
*/
MSG_ACHIEVEMENT_TAB_QUEST = 0xa6f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì—피소드
Episode
*/
MSG_ACHIEVEMENT_TAB_QUEST_EPISODE = 0xa70,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë°˜
General
*/
MSG_ACHIEVEMENT_TAB_QUEST_GENERAL = 0xa71,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼
Memorial
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL = 0xa72,
-/*20171018 to 20180627
+/*20171018 to 20180711
미드가르드
Midgard
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL_MIDGARD = 0xa73,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ê³„
Commandment
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL_ANOTHERWORLD = 0xa74,
-/*20171018 to 20180627
+/*20171018 to 20180711
기타
Other
*/
MSG_ACHIEVEMENT_TAB_MEMORIAL_REST = 0xa75,
-/*20171018 to 20180627
+/*20171018 to 20180711
위업
Feat
*/
MSG_ACHIEVEMENT_TAB_ACHIEVEMENT = 0xa76,
-/*20171018 to 20180627
+/*20171018 to 20180711
달성한 과제
Achieved challenge
*/
MSG_ACHIEVEMENT_TAB_TOTAL = 0xa77,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë” ì´ìƒ 추가할 수 없습니다.
You cannot add anymore.
*/
MSG_FAIL_ADD_ACHIEVEMENT_TRACING = 0xa78,
-/*20171018 to 20180627
+/*20171018 to 20180711
< %s > 달성하였습니다.
< %S > achieved.
*/
MSG_NOTICE_COMPLETE_ACHIEVEMENT = 0xa79,
-/*20171018 to 20180627
+/*20171018 to 20180711
only otp user login allow
Only OTP users are allowed
*/
MSG_OTPUSER_ONLY = 0xa7a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ë²„íŠ¼ì„ ëˆ„ë¥¼ ì‹œ, ì§€ì •ëœ ìƒí’ˆì„ 받게ë˜ë©° ë£°ë ›ì€ ì´ˆê¸°í™” ë©ë‹ˆë‹¤.
When this button pressed, you will receive a specified initialized roulette item.
*/
MSG_GET_ROULLETE_PRIZE = 0xa7b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ë²„íŠ¼ì„ ëˆ„ë¥¼ ì‹œ, 깜빡ì´ëŠ” í™”ì‚´í‘œì˜ ë¼ì¸ë¶€í„° ë£°ë ›ì„ ì‹œìž‘ 합니다.
When this button pressed, the flashing arrows from the lines of the roulette wheel begins.
*/
MSG_NOTICE_NEXT_ROULLETE_STAGE = 0xa7c,
-/*20171018 to 20180627
+/*20171018 to 20180711
칭호
Style
*/
MSG_TITLE_EQUIPMENT = 0xa7d,
-/*20171018 to 20180627
+/*20171018 to 20180711
칭호 해제
Title release
*/
MSG_TAKEOFF_TITLE = 0xa7e,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 ìƒì„±ì„ í•  수 없는 지역입니다.
Can't create a Guild in this area.
*/
MSG_GUILD_MAKE_GUILD_NOT_PERMITTED_MAP = 0xa7f,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 해체를 할 수 없는 지역입니다.
Can't disband a Guild in this area.
*/
MSG_GUILD_DISORGANIZE_GUILD_NOT_PERMITTED_MAP = 0xa80,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 ê°€ìž…ì„ í•  수 없는 지역입니다.
Can't join a Guild in this area.
*/
MSG_GUILD_JOIN_GUILD_NOT_PERMITTED_MAP = 0xa81,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 탈퇴를 할 수 없는 지역입니다.
Can't leave a Guild in this area.
*/
MSG_GUILD_LEAVE_GUILD_NOT_PERMITTED_MAP = 0xa82,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸¸ë“œì› ì¶”ë°©ì„ í•  수 없는 지역입니다.
Can't deport a Guild in this area.
*/
MSG_GUILD_EXPEL_GUILD_NOT_PERMITTED_MAP = 0xa83,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì§ìœ„ ë³€ê²½ì„ í•  수 없는 지역입니다.
Can't change a Guild title in this area
*/
MSG_GUILD_POSITION_CHANGE_NOT_PERMITTED_MAP = 0xa84,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ì†Œì§€ëŸ‰ì„ 5칸ì´ìƒ 비워주세요
Please empty at least 5 amount of possession in item window.
*/
MSG_NOT_ENOUGH_SPACE_IN_ITEM_BODY = 0xa85,
-/*20171018 to 20180627
+/*20171018 to 20180711
E X P : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
EXP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
*/
MSG_JPN_PERSONALINFO_EXPMSG = 0xa86,
-/*20171018 to 20180627
+/*20171018 to 20180711
DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
DROP : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
*/
MSG_JPN_PERSONALINFO_DROPMSG = 0xa87,
-/*20171018 to 20180627
+/*20171018 to 20180711
DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%%)
DEATH : %.1f%% ( basic 100.0%% pccafe %.1f%% + %s %.1f%% )
*/
MSG_JPN_PERSONALINFO_DEATHMSG = 0xa88,
-/*20171018 to 20180627
+/*20171018 to 20180711
첨부할 수 있는 ì•„ì´í…œì˜ 갯수가 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
The number of items that can be attached is exceeded.
*/
MSG_SET_ITEMS_TO_MAIL_OVERCOUNT = 0xa89,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 구매 ì‹œ 소리로 알림
Notify when item purchased
*/
MSG_SOUNDEFFECT_ITEMBUYWND = 0xa8a,
-/*20171018 to 20180627
+/*20171018 to 20180711
첨부할 수 없는 ì•„ì´í…œìž…니다.
Unable to attach the items.
*/
MSG_ID_A8B = 0xa8b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê½ì— 당첨ë˜ì—ˆìœ¼ë¯€ë¡œ ë‹¤ìŒ ìƒìœ„ ë‹¨ê³„ì˜ ë£°ë ›ì„ ëŒë¦¬ì‹¤ 수 없습니다.
Because you can not win a slam room and turn the roulette of the next higher step.
*/
MSG_ID_A8C = 0xa8c,
-/*20171018 to 20180627
+/*20171018 to 20180711
답장쓰기
Replying
*/
MSG_ID_A8D = 0xa8d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚´ìš©ì½ê¸°
Read more
*/
MSG_ID_A8E = 0xa8e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ì‚­ì œ
Delete message
*/
MSG_ID_A8F = 0xa8f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ä»™è² : %d
Crackers : %d
*/
MSG_ID_A90 = 0xa90,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s %s ä»™è²
%s %s crackers
*/
MSG_ID_A91 = 0xa91,
-/*20171018 to 20180627
+/*20171018 to 20180711
ä»™è²
Crackers
*/
MSG_ID_A92 = 0xa92,
-/*20171018 to 20180627
+/*20171018 to 20180711
Total : %d ä»™è²
Total : %d Crackers
*/
MSG_ID_A93 = 0xa93,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d -> %s ä»™è²
%d -> %s Crackers
*/
MSG_ID_A94 = 0xa94,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ä»™è²
%s Crackers
*/
MSG_ID_A95 = 0xa95,
-/*20171018 to 20180627
+/*20171018 to 20180711
Current ä»™è² : %s
Current Crackers : %s
*/
MSG_ID_A96 = 0xa96,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s : %s ä»™è²
%s : %s Crackers
*/
MSG_ID_A97 = 0xa97,
-/*20171018 to 20180627
+/*20171018 to 20180711
%10s ä»™è²
%10s Crackers
*/
MSG_ID_A98 = 0xa98,
-/*20171018 to 20180627
+/*20171018 to 20180711
Total : %s ä»™è²
Total : %s Crackers
*/
MSG_ID_A99 = 0xa99,
-/*20171018 to 20180627
+/*20171018 to 20180711
※수수료 3% / 최소 1ä»™è²ì˜ 수수료 ì°¨ê°
* Commission 3% / Minimum 1 Crackers comission deducted
*/
MSG_ID_A9A = 0xa9a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ä»™è² ìž…ë‹ˆë‹¤.
The Crackers.
*/
MSG_ID_A9B = 0xa9b,
-/*20171018 to 20180627
+/*20171018 to 20180711
^0000ffä»™è² ì´ìƒ^000000입니다.
ìž…ë ¥ê¸ˆì•¡ì´ ë§žìŠµë‹ˆê¹Œ?
^0000ff more than crackers^000000Did you enter the correct amount?
*/
MSG_ID_A9C = 0xa9c,
-/*20171018 to 20180627
+/*20171018 to 20180711
10억仙è²ì´ìƒ 안전 확ì¸
Over than 10billions secure check
*/
MSG_ID_A9D = 0xa9d,
-/*20171018 to 20180627
+/*20171018 to 20180711
10ì–µ ä»™è² ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 10ì–µ ä»™è²ë¡œ íŒë§¤ë©ë‹ˆë‹¤.
If you fill over 1 billion, the price will be automatically set as 10 billion Xianbei.
*/
MSG_ID_A9E = 0xa9e,
-/*20171018 to 20180627
+/*20171018 to 20180711
9,999ä»™è² ì´ìƒ ìž…ë ¥í•˜ì…”ë„ ê°€ê²©ì€ 9,999ä»™è²ë¡œ íŒë§¤ë©ë‹ˆë‹¤.
If you fill over 9,999 Xianbei, the price will automatically set as 9,999 Xianbei.
*/
MSG_ID_A9F = 0xa9f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°€ê²©ì´ 0 ä»™è²ì¸ ì•„ì´í…œì´ 존재 합니다. ìƒì ì„ 열수 없습니다!
There are items priced 0 Xianbei. You cannot open vending.
*/
MSG_ID_AA0 = 0xaa0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒëŒ€ ìºë¦­í„°ê°€ 최대 보유 ä»™è²ëŸ‰ì„ 초과하여 거래가 불가능 합니다.
The opponent is over the Xianbei limit. Trade failed.
*/
MSG_ID_AA1 = 0xaa1,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì•„ì´í…œì˜ ê°€ê²©ì„ 10ì–µä»™è² ì´í•˜ë¡œ 입력해 주세요.
Please fill out %s item price less than 1 billion Xianbei.
*/
MSG_ID_AA2 = 0xaa2,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s : %s ä»™è² => %s EA
%s: %s Xianbei => %s ea
*/
MSG_ID_AA3 = 0xaa3,
-/*20171018 to 20180627
+/*20171018 to 20180711
제한 금액 : %s ä»™è²
Limited price: %s Xianbei
*/
MSG_ID_AA4 = 0xaa4,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s %s ä»™è² %d ê°œ
%s %s %d Xianbei
*/
MSG_ID_AA5 = 0xaa5,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s %d개를 %d ä»™è²ì— íŒë§¤ 하였습니다. 수수료는 3%% 입니다.
%d %s are sold. In total %d Xianbei. 3%% charge will be imposed.
*/
MSG_ID_AA6 = 0xaa6,
-/*20171018 to 20180627
+/*20171018 to 20180711
RODEX
*/
MSG_ID_AA7 = 0xaa7,
-/*20171018 to 20180627
+/*20171018 to 20180711
SEND
*/
MSG_ID_AA8 = 0xaa8,
-/*20171018 to 20180627
+/*20171018 to 20180711
RECEIVE
*/
MSG_ID_AA9 = 0xaa9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ìž‘ì„±ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Please close the mail compose window.
*/
MSG_ID_AAA = 0xaaa,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버접근거부(A)
Server access denied(A)
*/
MSG_ID_AAB = 0xaab,
-/*20171018 to 20180627
+/*20171018 to 20180711
서버접근거부(B)
Server access denied(B)
*/
MSG_ID_AAC = 0xaac,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž¥ì°©ëœ í™”ì‚´/탄환 ì„ í•´ì œí•´ì•¼í•©ë‹ˆë‹¤.
Unequipped Arrow/Ammunition.
*/
MSG_ID_AAD = 0xaad,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ë²¤í† ë¦¬ì˜ ì•„ì´í…œì´ 소모ë˜ì–´ ë¡œë±ìŠ¤ ì“°ê¸°ì°½ì„ ë‹«ìŠµë‹ˆë‹¤.
Consuming item in inventory will close mail compose window.
*/
MSG_ID_AAE = 0xaae,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지하신 ë‹ë³´ê¸°ê°€ 없습니다.
Do not have Magnifier.
*/
MSG_ID_AAF = 0xaaf,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ 버릴려면 ë©”ì¼ ì“°ê¸°ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Close email window if you want to discard item.
*/
MSG_ID_AB0 = 0xab0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒëŒ€ë°©ì´ 친구 요청중입니다
The opponent has already requested you to be a friend.
*/
MSG_ID_AB1 = 0xab1,
-/*20171018 to 20180627
+/*20171018 to 20180711
SCRIPT ERROR AID
*/
MSG_ID_AB2 = 0xab2,
-/*20171018 to 20180627
+/*20171018 to 20180711
Errorfile : %s
ErrorLine : %d 줄
@@ -13566,1094 +13566,1094 @@ ErrorLine : %d item
ErrorContext: %s
*/
MSG_ID_AB3 = 0xab3,
-/*20171018 to 20180627
+/*20171018 to 20180711
^ff0000해당 ì•„ì´í…œì„ 구매 하시겠습니까? %dí¬ì¸íŠ¸ ë° %d ä»™è²ê°€ ì°¨ê° ë©ë‹ˆë‹¤.
^ff0000Are you sure want to purchase the item? after confirmation will consume %d point and %d crackers.
*/
MSG_ID_AB4 = 0xab4,
-/*20171018 to 20180627
+/*20171018 to 20180711
닫기
Close
*/
MSG_ID_AB5 = 0xab5,
-/*20171018 to 20180627
+/*20171018 to 20180711
퀘스트
Quest
*/
MSG_ID_AB6 = 0xab6,
-/*20171018 to 20180627
+/*20171018 to 20180711
퀘스트 ì•„ì´ì½˜ 보기
View Quest icon
*/
MSG_ID_AB7 = 0xab7,
-/*20171018 to 20180627
+/*20171018 to 20180711
편ì˜ì‹œì„¤
Facility
*/
MSG_ID_AB8 = 0xab8,
-/*20171018 to 20180627
+/*20171018 to 20180711
편ì˜ì‹œì„¤ ì•„ì´ì½˜ 보기
View Facility icon
*/
MSG_ID_AB9 = 0xab9,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì›/파티ì›
Guild/Party
*/
MSG_ID_ABA = 0xaba,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드ì›/íŒŒí‹°ì› ë³´ê¸°
Show Guild/Party
*/
MSG_ID_ABB = 0xabb,
-/*20171018 to 20180627
+/*20171018 to 20180711
기ë¡í•˜ê¸°
Record
*/
MSG_ID_ABC = 0xabc,
-/*20171018 to 20180627
+/*20171018 to 20180711
보스몬스터
Boss Monster
*/
MSG_ID_ABD = 0xabd,
-/*20171018 to 20180627
+/*20171018 to 20180711
나
I
*/
MSG_ID_ABE = 0xabe,
-/*20171018 to 20180627
+/*20171018 to 20180711
삭제 하시겠습니까?
Are you sure want to delete it?
*/
MSG_ID_ABF = 0xabf,
-/*20171018 to 20180627
+/*20171018 to 20180711
퀘스트 NPC
Quest NPC
*/
MSG_ID_AC0 = 0xac0,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모할 ë‚´ìš©ì„ ê¸°ë¡í•©ë‹ˆë‹¤
Record content
*/
MSG_ID_AC1 = 0xac1,
-/*20171018 to 20180627
+/*20171018 to 20180711
저장하기
Store
*/
MSG_ID_AC2 = 0xac2,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모하기
Record
*/
MSG_ID_AC3 = 0xac3,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s [%d옵션] %d개
%s [%d Property] %d ea
*/
MSG_ID_AC4 = 0xac4,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s [%d옵션] %s Zeny
%s [%d Property] %s Zeny
*/
MSG_ID_AC5 = 0xac5,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s [%d옵션] %d %s %d -> %s %s
%s [%d Property] %d %s %d -> %s %s
*/
MSG_ID_AC6 = 0xac6,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s [%d옵션] %d %s %s %s
%s [%d Property] %d %s %s %s
*/
MSG_ID_AC7 = 0xac7,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s [%d옵션] %d -> %s %s
%s [%d Property] %d -> %s %s
*/
MSG_ID_AC8 = 0xac8,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s [%d옵션] %s %s
%s [%d Property] %s %s
*/
MSG_ID_AC9 = 0xac9,
-/*20171018 to 20180627
+/*20171018 to 20180711
최소 거래 단위 100 ä»™è² ì´ìƒìœ¼ë¡œ 설정 하셔야 합니다.
The minimum trading unit must be 100 crackers or more.
*/
MSG_ID_ACA = 0xaca,
-/*20171018 to 20180627
+/*20171018 to 20180711
머리 색
Hair color
*/
MSG_ID_ACB = 0xacb,
-/*20171018 to 20180627
+/*20171018 to 20180711
머리 모양
Hair style
*/
MSG_ID_ACC = 0xacc,
-/*20171018 to 20180627
+/*20171018 to 20180711
옷 색
Cloth color
*/
MSG_ID_ACD = 0xacd,
-/*20171018 to 20180627
+/*20171018 to 20180711
옷 모양
Cloth pattern
*/
MSG_ID_ACE = 0xace,
-/*20171018 to 20180627
+/*20171018 to 20180711
지ì›ë˜ì§€ 않는 맵 입니다.
Unsupported Map.
*/
MSG_ID_ACF = 0xacf,
-/*20171018 to 20180627
+/*20171018 to 20180711
2,147,483,647 Zeny ì´í•˜ë¡œ ìž…ë ¥ 하십시오.
Enter Zeny Below 2,147,483,647.
*/
MSG_ID_AD0 = 0xad0,
-/*20171018 to 20180627
+/*20171018 to 20180711
1 Zeny ì´ìƒ ìž…ë ¥ 하십시오.
Please Enter atleast 1 zeny.
*/
MSG_ID_AD1 = 0xad1,
-/*20171018 to 20180627
+/*20171018 to 20180711
보유한 Zeny 가 없습니다.
You do not hold any zeny.
*/
MSG_ID_AD2 = 0xad2,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니 창고
Zeny Storage
*/
MSG_ID_AD3 = 0xad3,
-/*20171018 to 20180627
+/*20171018 to 20180711
창고보유액
in Bank
*/
MSG_ID_AD4 = 0xad4,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지금
on hand
*/
MSG_ID_AD5 = 0xad5,
-/*20171018 to 20180627
+/*20171018 to 20180711
입금
Deposit
*/
MSG_ID_AD6 = 0xad6,
-/*20171018 to 20180627
+/*20171018 to 20180711
출금
Withdraw
*/
MSG_ID_AD7 = 0xad7,
-/*20171018 to 20180627
+/*20171018 to 20180711
1 z UP
1z UP
*/
MSG_ID_AD8 = 0xad8,
-/*20171018 to 20180627
+/*20171018 to 20180711
1 z Down
1z Down
*/
MSG_ID_AD9 = 0xad9,
-/*20171018 to 20180627
+/*20171018 to 20180711
Max
*/
MSG_ID_ADA = 0xada,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž…ë ¥ê°’ì´ ì—†ìŠµë‹ˆë‹¤
There is no Input value
*/
MSG_ID_ADB = 0xadb,
-/*20171018 to 20180627
+/*20171018 to 20180711
보유 Zeny 부족
Not enough zeny
*/
MSG_ID_ADC = 0xadc,
-/*20171018 to 20180627
+/*20171018 to 20180711
입력값 필요
Input Required
*/
MSG_ID_ADD = 0xadd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¬¸ìž ìž…ë ¥ 불가
Numbers only
*/
MSG_ID_ADE = 0xade,
-/*20171018 to 20180627
+/*20171018 to 20180711
최대 입력 초과
Exceeded max input
*/
MSG_ID_ADF = 0xadf,
-/*20171018 to 20180627
+/*20171018 to 20180711
최소 입력 미만
Below Minimum Input
*/
MSG_ID_AE0 = 0xae0,
-/*20171018 to 20180627
+/*20171018 to 20180711
보유 Zeny 부족
Not enough zeny
*/
MSG_ID_AE1 = 0xae1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì€í–‰ 잔고 부족
Insufficient funds
*/
MSG_ID_AE2 = 0xae2,
-/*20171018 to 20180627
+/*20171018 to 20180711
최대 보유 Zeny 초과
Exceeded max zeny
*/
MSG_ID_AE3 = 0xae3,
-/*20171018 to 20180627
+/*20171018 to 20180711
드롭 X
Drop X
*/
MSG_ID_AE4 = 0xae4,
-/*20171018 to 20180627
+/*20171018 to 20180711
창고 X
Storage X
*/
MSG_ID_AE5 = 0xae5,
-/*20171018 to 20180627
+/*20171018 to 20180711
카트 X
Cart X
*/
MSG_ID_AE6 = 0xae6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ X
Mail X
*/
MSG_ID_AE7 = 0xae7,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµí™˜ì°½ X
Trade X
*/
MSG_ID_AE8 = 0xae8,
-/*20171018 to 20180627
+/*20171018 to 20180711
경매장 X
Auction X
*/
MSG_ID_AE9 = 0xae9,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드창고 X
Guild Storage X
*/
MSG_ID_AEA = 0xaea,
-/*20171018 to 20180627
+/*20171018 to 20180711
NPCì—게 íŒë§¤ X
Sell to NPC X
*/
MSG_ID_AEB = 0xaeb,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë™ì œí•œì´ 있는 ì•„ì´í…œìž…니다.
Item moves restriction.
*/
MSG_ID_AEC = 0xaec,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°ë¥¼ ìƒì„±í•´ì£¼ì„¸ìš”!
Please Create a Character!
*/
MSG_ID_AED = 0xaed,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž¥ì°©ëœ íˆ¬ì‚¬ì²´ ì•„ì´í…œì„ 해제해야 합니다.
You need to disarm the equipped projectiles.
*/
MSG_ID_AEE = 0xaee,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ì› 초과로 메모리얼 ë˜ì „ì— ìž…ìž¥ í•  수 없습니다
You cannot enter Memorial Dungeon with excess members
*/
MSG_ID_AEF = 0xaef,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ì›ìˆ˜ 초과로 ì¸í•´ 메모리얼 ë˜ì „ ìž…ìž¥ì´ ê±°ë¶€ë˜ì—ˆìŠµë‹ˆë‹¤
Memorial Dungeon Access was denied due to exceeding number of players
*/
MSG_ID_AF0 = 0xaf0,
-/*20171018 to 20180627
+/*20171018 to 20180711
%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
*/
MSG_ID_AF1 = 0xaf1,
-/*20171018 to 20180627
+/*20171018 to 20180711
%.1f%% ( %s Server: %.1f%% + Premium:%.1f%% )
*/
MSG_ID_AF2 = 0xaf2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¤‘ë³µëœ ì•„ì´í…œì´ 존재하여 ì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥ 합니다.
Consuming Item denied due to multiple same item.
*/
MSG_ID_AF3 = 0xaf3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¤‘ë³µëœ íš¨ê³¼ê°€ 존재하여 ì‚¬ìš©ì´ ë¶ˆê°€ëŠ¥ 합니다.
Consuming Item denied due to effect of same consumed item.
*/
MSG_ID_AF4 = 0xaf4,
-/*20171018 to 20180627
+/*20171018 to 20180711
화면 í”들림 효과 ON
Flicker Effect ON
*/
MSG_ID_AF5 = 0xaf5,
-/*20171018 to 20180627
+/*20171018 to 20180711
화면 í”들림 효과 OFF
Flicker Effect OFF
*/
MSG_ID_AF6 = 0xaf6,
-/*20171018 to 20180627
+/*20171018 to 20180711
불법 프로그램 발견ë˜ì—ˆìŠµë‹ˆë‹¤
Illegal Programs has been detected
*/
MSG_ID_AF7 = 0xaf7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼ ë³´ë‚´ê¸°
Send Mail
*/
MSG_ID_AF8 = 0xaf8,
-/*20171018 to 20180627
+/*20171018 to 20180711
E X P : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
E X P: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
*/
MSG_ID_AF9 = 0xaf9,
-/*20171018 to 20180627
+/*20171018 to 20180711
DROP : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
DROP : %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
*/
MSG_ID_AFA = 0xafa,
-/*20171018 to 20180627
+/*20171018 to 20180711
DEATH : %.1f%% ( basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
DEATH: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
*/
MSG_ID_AFB = 0xafb,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 태그는 ì´ë¦„으로 사용하실 수 없습니다.
Name with this tag cannot be used.
*/
MSG_ID_AFC = 0xafc,
-/*20171018 to 20180627
+/*20171018 to 20180711
???? bdbac5b8c0cfb8b52098de
Style Shop
*/
MSG_ID_AFD = 0xafd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¿ í° ì—†ìŒ. Cash Shopì—ì„œ ì•„ì´í…œì„ 구매해 주세요.
No serial number, Please visit the store to buy.
*/
MSG_ID_AFE = 0xafe,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ë²¤í† ë¦¬ì—ì„œ ì•„ì´í…œ ì¿ í° ìƒìžë¥¼ 열어주세요.
Please turn on Serial item number window box.
*/
MSG_ID_AFF = 0xaff,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ìŠ¤íƒ€ì¼ ì •ë³´ë¥¼ 삭제하시겠습니까?
Bank
*/
MSG_ID_B00 = 0xb00,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŠ¬ë¡¯ì´ ê½‰ 찼습니다. ë‚´ 스타ì¼ì—ì„œ ìºë¦­í„° ì‚­ì œ 후 사용해 주십시오.
Slot is full, please delete a character.
*/
MSG_ID_B01 = 0xb01,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¹„ìš©ì„ ì§€ë¶ˆí•˜ê³  현재 스타ì¼ì„ ì ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
(※ ë¹„ìš©ì€ ë°˜í™˜ë˜ì§€ 않습니다.)
Item cannot be restored, are you sure want to apply it?
*/
MSG_ID_B02 = 0xb02,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 스타ì¼ì„ 저장하였습니다.
Registered as the following style.
*/
MSG_ID_B03 = 0xb03,
-/*20171018 to 20180627
+/*20171018 to 20180711
보유 Zeny 부족. ì€í–‰ì— 충분한 Zenyê°€ 있습니다.
There are plenty of golds in the bank, Please go to the bank now.
*/
MSG_ID_B04 = 0xb04,
-/*20171018 to 20180627
+/*20171018 to 20180711
으로 ì´ë™í•©ë‹ˆë‹¤.
moving...
*/
MSG_ID_B05 = 0xb05,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 êµ­ê°€ì˜ ì˜ê³µí†µê³¼ì— 대한 허가가 나지 않았습니다.
You are not allowed to fly over the sovereign airspace of the country.
*/
MSG_ID_B06 = 0xb06,
-/*20171018 to 20180627
+/*20171018 to 20180711
마나로 ëŒ€ê¸°ë¶ˆì•ˆì •ì´ ê³„ì†ë˜ì–´ 비공정 ìš´í–‰ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
Airship flight is temporarily unavailable due to atmospheric instability caused by magic.
*/
MSG_ID_B07 = 0xb07,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°œì¸ ë¹„ê³µì •
Private airship
*/
MSG_ID_B08 = 0xb08,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž ì‹œ 후 다시 ì‹œë„해주세요.
Please try again in a moment.
*/
MSG_ID_B09 = 0xb09,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°œì¸ ë¹„ê³µì • ì´ìš©ì— 필요한 제니가 부족합니다.
Not enough Zeny to use the private airship.
*/
MSG_ID_B0A = 0xb0a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°œì¸ ë¹„ê³µì • ì´ìš©ì— 필요한 ì•„ì´í…œì´ 부족합니다.
Not enough Cans to use the private airship.
*/
MSG_ID_B0B = 0xb0b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°œì¸ ë¹„ê³µì •ì„ ì´ìš©í•  수 있는 ë ˆë²¨ì´ ì•„ë‹™ë‹ˆë‹¤.
You cannot meet the level to use the private airship.
*/
MSG_ID_B0C = 0xb0c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì„ íƒí•œ 지ì ìœ¼ë¡  ê°œì¸ë¹„ê³µì •ì´ ì´ë™í•  수 없습니다.
You cannot move to the selected point by the private airship.
*/
MSG_ID_B0D = 0xb0d,
-/*20171018 to 20180627
+/*20171018 to 20180711
현 지ì ì—ì„  ê°œì¸ë¹„ê³µì •ì„ ì´ìš©í•  수 없습니다.
You cannot use the private airship where you are now.
*/
MSG_ID_B0E = 0xb0e,
-/*20171018 to 20180627
+/*20171018 to 20180711
액세서리
Accessory
*/
MSG_ID_B0F = 0xb0f,
-/*20171018 to 20180627
+/*20171018 to 20180711
세컨드코스튬
Second costume
*/
MSG_ID_B10 = 0xb10,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚´ 스타ì¼
Wardrobe
*/
MSG_ID_B11 = 0xb11,
-/*20171018 to 20180627
+/*20171018 to 20180711
염색할 수 없는 헤어스타ì¼ìž…니다.
This hairstyle cannot be dyed.
*/
MSG_ID_B12 = 0xb12,
-/*20171018 to 20180627
+/*20171018 to 20180711
화살표를 눌러 마ìŒì— 드는 스타ì¼ì„ ì„ íƒí•´ 보세요.
Press an arrow to choose the style you want.
*/
MSG_ID_B13 = 0xb13,
-/*20171018 to 20180627
+/*20171018 to 20180711
새로운 스타ì¼ì„ 확ì¸í•´ 보세요.
(※ 액세서리 구매 ì‹œ RODEXë¡œ 발송ë©ë‹ˆë‹¤.)
Come and see the new styles.
(Purchased accessories will be sent via RODEX.)
*/
MSG_ID_B14 = 0xb14,
-/*20171018 to 20180627
+/*20171018 to 20180711
기본 스타ì¼
Basic style
*/
MSG_ID_B15 = 0xb15,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ìŠ¤í‚¬ì€ BaseLv %d ì´ìƒë¶€í„° 스킬 í¬ì¸íŠ¸ 투ìžê°€ 가능합니다.
You can level up the skill from the base Lv. %d.
*/
MSG_ID_B16 = 0xb16,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 특수기호는 ì´ë¦„ì— ì‚¬ìš©í•˜ì‹¤ 수 없습니다.
Special symbol can't be used in name
*/
MSG_ID_B17 = 0xb17,
-/*20171018 to 20180627
+/*20171018 to 20180711
MHPê°€ 너무 낮아, 해당 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다
MaxHP is to low to use this skill
*/
MSG_ID_B18 = 0xb18,
-/*20171018 to 20180627
+/*20171018 to 20180711
MSPê°€ 너무 낮아, 해당 ìŠ¤í‚¬ì„ ì‚¬ìš©í•  수 없습니다
MaxSP is to low to use this skill
*/
MSG_ID_B19 = 0xb19,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 비êµí•˜ê¸°
Compare items
*/
MSG_ID_B1A = 0xb1a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 버리기 잠금
Drop lock
*/
MSG_ID_B1B = 0xb1b,
-/*20171018 to 20180627
+/*20171018 to 20180711
스í¬ë¦°ìƒ· 파ì¼ì´ 첨부 ë˜ì§€ 않았습니다.
Screenshots are not attached
*/
MSG_ID_B1C = 0xb1c,
-/*20171018 to 20180627
+/*20171018 to 20180711
Twitter
TWITTER
*/
MSG_ID_B1D = 0xb1d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë°˜
General
*/
MSG_ID_B1E = 0xb1e,
-/*20171018 to 20180627
+/*20171018 to 20180711
공지
Notice
*/
MSG_ID_B1F = 0xb1f,
-/*20171018 to 20180627
+/*20171018 to 20180711
반송
Clear
*/
MSG_ID_B20 = 0xb20,
-/*20171018 to 20180627
+/*20171018 to 20180711
새로고침
Refresh
*/
MSG_ID_B21 = 0xb21,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d분
%d minute
*/
MSG_ID_B22 = 0xb22,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d시간
%d hour
*/
MSG_ID_B23 = 0xb23,
-/*20171018 to 20180627
+/*20171018 to 20180711
%dì¼
%d day
*/
MSG_ID_B24 = 0xb24,
-/*20171018 to 20180627
+/*20171018 to 20180711
반송ë¨
Returned
*/
MSG_ID_B25 = 0xb25,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì„ íƒí•œ ë©”ì¼ì„ 삭제하시겠습니까?
Do you want to delete the message?
*/
MSG_ID_B26 = 0xb26,
-/*20171018 to 20180627
+/*20171018 to 20180711
위치표시
Show information
*/
MSG_ID_B27 = 0xb27,
-/*20171018 to 20180627
+/*20171018 to 20180711
확대
Zoom In
*/
MSG_ID_B28 = 0xb28,
-/*20171018 to 20180627
+/*20171018 to 20180711
축소
Zoom Out
*/
MSG_ID_B29 = 0xb29,
-/*20171018 to 20180627
+/*20171018 to 20180711
맵보기
Maximize
*/
MSG_ID_B2A = 0xb2a,
-/*20171018 to 20180627
+/*20171018 to 20180711
월드보기
Show world map
*/
MSG_ID_B2B = 0xb2b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 소지 종류수
Total possession item type
*/
MSG_ID_B2C = 0xb2c,
-/*20171018 to 20180627
+/*20171018 to 20180711
/minimap
*/
MSG_ID_B2D = 0xb2d,
-/*20171018 to 20180627
+/*20171018 to 20180711
미니맵 ë²„íŠ¼ì„ í‘œì‹œí•©ë‹ˆë‹¤
Show minimap buttons
*/
MSG_ID_B2E = 0xb2e,
-/*20171018 to 20180627
+/*20171018 to 20180711
미니맵 ë²„íŠ¼ì„ í‘œì‹œí•˜ì§€ 않습니다
Hide minimap buttons
*/
MSG_ID_B2F = 0xb2f,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드 ì ‘ì†ìž ì •ë ¬
Show guild member login status
*/
MSG_ID_B30 = 0xb30,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¹œë°€ë„ : %s
Intimacy: %s
*/
MSG_ID_B31 = 0xb31,
-/*20171018 to 20180627
+/*20171018 to 20180711
í™•ì¸ ì „
Confirmation
*/
MSG_ID_B32 = 0xb32,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티 ì´ë¦„
Team name
*/
MSG_ID_B33 = 0xb33,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티장
Leader
*/
MSG_ID_B34 = 0xb34,
-/*20171018 to 20180627
+/*20171018 to 20180711
제한 시간 초과. í´ë¼ì´ì–¸íŠ¸ë¥¼ 종료합니다.
Time limit exceeded. Closing the client
*/
MSG_ID_B35 = 0xb35,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž˜ëª»ëœ ìž…ë ¥ìž…ë‹ˆë‹¤. í´ë¼ì´ì–¸íŠ¸ë¥¼ 종료합니다.
Input error. Closing the client
*/
MSG_ID_B36 = 0xb36,
-/*20171018 to 20180627
+/*20171018 to 20180711
정답 입니다. ë³´ìƒìœ¼ë¡œ ì†Œì •ì˜ ë²„í”„ê°€ 주어집니다.
Incorrect input. A small buff has given to you
*/
MSG_ID_B37 = 0xb37,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ë¬¸ 4ìž, 한글 2ìž ì´ìƒìœ¼ë¡œ 입력해야 합니다.
Enter 4 english words and 2 chinese words
*/
MSG_ID_B38 = 0xb38,
-/*20171018 to 20180627
+/*20171018 to 20180711
입력한 ë‹µì´ [%s]ê°€ 맞습니까?
Your entered answer is [%s]. Is it right?
*/
MSG_ID_B39 = 0xb39,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì„ íƒëœ ì´ë¯¸ì§€ê°€ 없습니다.
Icon is unchecked
*/
MSG_ID_B3A = 0xb3a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìž˜ëª»ëœ ìž…ë ¥ìž…ë‹ˆë‹¤. (ë‚¨ì€ ê¸°íšŒ %d번)
Incorrect input (Remaining chance: %d)
*/
MSG_ID_B3B = 0xb3b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ %dëª…ì˜ ìœ ì €ë¥¼ 신고하시겠습니까?
Do you want to announce %d to player?
*/
MSG_ID_B3C = 0xb3c,
-/*20171018 to 20180627
+/*20171018 to 20180711
유저ì—게 메시지를 보냈습니다.
Message has been sent to player
*/
MSG_ID_B3D = 0xb3d,
-/*20171018 to 20180627
+/*20171018 to 20180711
불법 프로그램 단ì†ì— 필요한 ë°ì´í„°ê°€ ë¯¸ë“±ë¡ ìƒíƒœìž…니다.
Needed Data for Query illegal software are not signed.
*/
MSG_ID_B3E = 0xb3e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ 매í¬ë¡œ ê°ì‹œì¤‘ì¸ ìœ ì €ìž…ë‹ˆë‹¤.
The player is being monitored.
*/
MSG_ID_B3F = 0xb3f,
-/*20171018 to 20180627
+/*20171018 to 20180711
매í¬ë¡œê°€ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤..
Already signed in investigation system.
*/
MSG_ID_B40 = 0xb40,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ì§€ 등ë¡ì— 실패하였습니다.
Failed to store icon.
*/
MSG_ID_B41 = 0xb41,
-/*20171018 to 20180627
+/*20171018 to 20180711
정답 등ë¡ì— 실패하였습니다.
Failed to store replied answer.
*/
MSG_ID_B42 = 0xb42,
-/*20171018 to 20180627
+/*20171018 to 20180711
안녕하세요. 불법프로그램 단ì†ì¤‘입니다.
Hello, illegal software is being monitored.
*/
MSG_ID_B43 = 0xb43,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì§€ì •ëœ ì‹œê°„ë‚´ì— ì•„ëž˜ì˜ ë¬¸ìžë¥¼ 입력해주세요.
Please enter the text below within the specified time.
*/
MSG_ID_B44 = 0xb44,
-/*20171018 to 20180627
+/*20171018 to 20180711
3회 오류시 ìš´ì˜ì •ì±…ì— ì˜ê±°í•˜ì—¬ ì˜êµ¬ë¸”ë¡ë©ë‹ˆë‹¤.
According to game regulation, when you enter the wrong text three times, you will get banned.
*/
MSG_ID_B45 = 0xb45,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚¨ì€ íšŸìˆ˜ : %d
Remaining chance : %d
*/
MSG_ID_B46 = 0xb46,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„°
Role
*/
MSG_ID_B47 = 0xb47,
-/*20171018 to 20180627
+/*20171018 to 20180711
범위
Range
*/
MSG_ID_B48 = 0xb48,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºë¦­í„° ì„ íƒì€ 좌í´ë¦­ìœ¼ë¡œ 합니다.
You use the left mouse button to specify the role
*/
MSG_ID_B49 = 0xb49,
-/*20171018 to 20180627
+/*20171018 to 20180711
범위 ì„ íƒì€ ìš°í´ë¦­ìœ¼ë¡œ 합니다.
You use the left mouse button to specify the range
*/
MSG_ID_B4A = 0xb4a,
-/*20171018 to 20180627
+/*20171018 to 20180711
범위 í¬ê¸°ë¥¼ 지정하기 위해서는 엔터를 입력해주세요
Not a valid range, please press Enter
*/
MSG_ID_B4B = 0xb4b,
-/*20171018 to 20180627
+/*20171018 to 20180711
E X P : %.1f%% ( basic %.1f%% %s %.1f%%)
*/
MSG_ID_B4C = 0xb4c,
-/*20171018 to 20180627
+/*20171018 to 20180711
DROP : %.1f%% ( basic %.1f%% %s %.1f%%)
*/
MSG_ID_B4D = 0xb4d,
-/*20171018 to 20180627
+/*20171018 to 20180711
DEATH : %.1f%% ( basic %.1f%% %s %.1f%%)
*/
MSG_ID_B4E = 0xb4e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³€ê²½ëœ ìºë¦­ëª…으로 발송했습니다. ë³€ê²½ëœ ìºë¦­ëª… : %s
The role name will be sent: %s
*/
MSG_ID_B4F = 0xb4f,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•©ì„±ì— í•„ìš”í•œ 재료
Synthesis of the required materials
*/
MSG_ID_B50 = 0xb50,
-/*20171018 to 20180627
+/*20171018 to 20180711
조합 재료가 부족해서 조합할 수 없습니다.
Insufficient synthesis materials
*/
MSG_ID_B51 = 0xb51,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 재료는 %d개가 필요합니다.
Required material %d ea.
*/
MSG_ID_B52 = 0xb52,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련ë„ê°€ 낮아서 ì¡°í•©í•  수 없습니다.
Refine value is to low for synthesis
*/
MSG_ID_B53 = 0xb53,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëª¨í—˜ê°€ì¤‘ê°œì†Œì— ë“±ë¡ í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Do you want to sign in to the adventurers?
*/
MSG_ID_B54 = 0xb54,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìžìœ ë¡­ê²Œ 코멘트를 남겨보세요.
Please leave a message
*/
MSG_ID_B55 = 0xb55,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê·¸ë¦¼ì— ë³´ì´ëŠ” 문ìžë¥¼ 입력해주세요.
Please enter the text on the graph
*/
MSG_ID_B56 = 0xb56,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d초 남았습니다
%d second left
*/
MSG_ID_B57 = 0xb57,
-/*20171018 to 20180627
+/*20171018 to 20180711
OTP ì¸ì¦ë²ˆí˜¸ 6ìžë¦¬ë¥¼ 입력해 주세요
Please enter your 6 identification number.
*/
MSG_ID_B58 = 0xb58,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ì¦ë²ˆí˜¸
Identification number.
*/
MSG_ID_B59 = 0xb59,
-/*20171018 to 20180627
+/*20171018 to 20180711
6ìžë¦¬ì˜ 숫ìžê°€ 아닙니다. 다시 확ì¸í•´ 주세요
It's not a 6 identification number. Please try again
*/
MSG_ID_B5A = 0xb5a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ ì‚­ì œëœ ë©”ì¼ìž…니다.
The message has been deleted
*/
MSG_ID_B5B = 0xb5b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê°œì¸ ë¹„ê³µì •ìœ¼ë¡œ ì´ë™í•  ì§€ì—­ì„ ì„ íƒí•´ì£¼ì„¸ìš”.
Please select the area where the private airship will move
*/
MSG_ID_B5C = 0xb5c,
-/*20171018 to 20180627
+/*20171018 to 20180711
E X P : %d%% ( basic 100.0%% %s %d%%)
*/
MSG_ID_B5D = 0xb5d,
-/*20171018 to 20180627
+/*20171018 to 20180711
DROP : %d%% ( basic 100.0%% %s %d%%)
*/
MSG_ID_B5E = 0xb5e,
-/*20171018 to 20180627
+/*20171018 to 20180711
DEATH : %d%% ( basic 100.0%% %s %d%%)
*/
MSG_ID_B5F = 0xb5f,
-/*20171018 to 20180627
+/*20171018 to 20180711
목ì ì§€ë¡œ ì´ë™ì¤‘입니다.
Move to the destination
*/
MSG_ID_B60 = 0xb60,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s] 파ì¼ì´ 존재하지 ì•Šì•„ default AI ë¡œ ë™ìž‘합니다
The [%s] is not present, the default AI will be used instead.
*/
MSG_ID_B61 = 0xb61,
-/*20171018 to 20180627
+/*20171018 to 20180711
%.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
%.1f%% ( Basic 100.0%% + Premium %.1f%% + %s %.1f%%)
*/
MSG_ID_B62 = 0xb62,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ìžë¦¬ì— ë…¸ì ì„ 세우시겠습니까?
Would you like to open a shop at this location?
*/
MSG_ID_B63 = 0xb63,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„ëžŒì¡±ì€ í•´ë‹¹ ì˜ìƒì„ ìž…ì„ ìˆ˜ 없습니다.
Doram race can't wear this clothes
*/
MSG_ID_B64 = 0xb64,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ ë…¸ì ì—ì„œ 거래한 ì•„ì´í…œì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤.
Props open-air store sales will be traded in RODEX
*/
MSG_ID_B65 = 0xb65,
-/*20171018 to 20180627
+/*20171018 to 20180711
30,000 z
*/
MSG_ID_B66 = 0xb66,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë§ëž‘ë„ íŠ¹ì‚° 통조림 100ê°œ
Malangdo Special Can 100 pc
*/
MSG_ID_B67 = 0xb67,
-/*20171018 to 20180627
+/*20171018 to 20180711
무게가 80%를 초과하여 진행할 수 없습니다.
Cannot carry anymore because weight limit over 80%
*/
MSG_ID_B68 = 0xb68,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ë˜ì§€ 못한 ìƒí’ˆì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤.
Unsold items are sent to RODEX
*/
MSG_ID_B69 = 0xb69,
-/*20171018 to 20180627
+/*20171018 to 20180711
장착 모습
Preview
*/
MSG_ID_B6A = 0xb6a,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드마스터 위임
Assign Guild Leader
*/
MSG_ID_B6B = 0xb6b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì •ë§ë¡œ %s님께 길드마스터를 위임하시겠습니까? 위임 후 ë‹¹ì‹ ì˜ ì§€ìœ„ëŠ” %s님과 지위가 바뀌게 ë©ë‹ˆë‹¤.
Are sure want to assign %s as guild leader? After assigned your position will become %s
*/
MSG_ID_B6C = 0xb6c,
-/*20171018 to 20180627
+/*20171018 to 20180711
철회
Cancel
*/
MSG_ID_B6D = 0xb6d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì ì„ 철수하시겠습니까?
Do you want to close the shop?
*/
MSG_ID_B6E = 0xb6e,
-/*20171018 to 20180627
+/*20171018 to 20180711
%02dì¼ %02d시간 %02d분 %02dì´ˆ
%02d day %02d hour %02d minute %02d second
*/
MSG_ID_B6F = 0xb6f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì†ë¶ˆê°€
Unable to sign in
*/
MSG_ID_B70 = 0xb70,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì†ê°€ëŠ¥ì¸ì›ì„ 초과하여 ì ‘ì†ì´ 불가능 합니다.
Unable to sign in because the maximum number of sign-in is exceeded
*/
MSG_ID_B71 = 0xb71,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì ì„ 설치할 위치를 ì„ íƒí•´ì£¼ì„¸ìš”.
Please select a location for your shop
*/
MSG_ID_B72 = 0xb72,
-/*20171018 to 20180627
+/*20171018 to 20180711
펫 ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
Pet name will be changed to ^0000ff^0000ff %s^000000^000000, do you want to continue?
*/
MSG_ID_B73 = 0xb73,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래 ì¼ì‹œ :
Trade date :
*/
MSG_ID_B74 = 0xb74,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래 ì•„ì´í…œ :
Trade item :
*/
MSG_ID_B75 = 0xb75,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래 수량 :
Trade quantity :
*/
MSG_ID_B76 = 0xb76,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래 단가 :
Trade price :
*/
MSG_ID_B77 = 0xb77,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래 금액 :
Total trade :
*/
MSG_ID_B78 = 0xb78,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì  íŒë§¤ ì•„ì´í…œ
Open vending sales agent
*/
MSG_ID_B79 = 0xb79,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì  êµ¬ë§¤ ì•„ì´í…œ
Open vending purchase agent
*/
MSG_ID_B7A = 0xb7a,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ ë…¸ì  ì•„ë¥´ë°”ì´íŠ¸ 종료
Close vending sales agent
*/
MSG_ID_B7B = 0xb7b,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매 ë…¸ì  ì•„ë¥´ë°”ì´íŠ¸ 종료
Close vending purchase agent
*/
MSG_ID_B7C = 0xb7c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚¨ì€ ê¸ˆì•¡:
Balance:
*/
MSG_ID_B7D = 0xb7d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 리스트:
Item list:
*/
MSG_ID_B7E = 0xb7e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì  ì•„ë¥´ë°”ì´íŠ¸ìƒ
Vending agent
*/
MSG_ID_B7F = 0xb7f,
-/*20171018 to 20180627
+/*20171018 to 20180711
반환 ì•„ì´í…œ:
Returned item:
*/
MSG_ID_B80 = 0xb80,
-/*20171018 to 20180627
+/*20171018 to 20180711
반환 수량:
Returned quantity:
*/
MSG_ID_B81 = 0xb81,
-/*20171018 to 20180627
+/*20171018 to 20180711
반환 ì¼ì‹œ:
Returned date:
*/
MSG_ID_B82 = 0xb82,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매 ë…¸ì ì—ì„œ 거래한 ê¸ˆì•¡ì´ ë¡œë±ìŠ¤ë¡œ 배송ë˜ì—ˆìŠµë‹ˆë‹¤
Total trade will be sent to RODEX
*/
MSG_ID_B83 = 0xb83,
-/*20171018 to 20180627
+/*20171018 to 20180711
사용할 수 없는 ì´ë¦„입니다.
Name isn't available
*/
MSG_ID_B84 = 0xb84,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìƒí’ˆì´ ë„착했습니다.
Item has been delivered
*/
MSG_ID_B85 = 0xb85,
-/*20171018 to 20180627
+/*20171018 to 20180711
구입해주셔서 ê°ì‚¬í•©ë‹ˆë‹¤.
Thank you for purchasing
*/
MSG_ID_B86 = 0xb86,
-/*20171018 to 20180627
+/*20171018 to 20180711
NPCì—게 ì•„ì´í…œì„ íŒë§¤í•˜ì§€ 않습니다.
Press again to unlock
*/
MSG_ID_B87 = 0xb87,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ íŒë§¤ 잠금
Lock from NPC selling
*/
MSG_ID_B88 = 0xb88,
-/*20171018 to 20180627
+/*20171018 to 20180711
근처ì—ì„œ 소환가능 위치를 ì°¾ì„수 없습니다.
There is no callable location nearby
*/
MSG_ID_B89 = 0xb89,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ì²´ 화면 캡ì³
Capture full screens
*/
MSG_ID_B8A = 0xb8a,
-/*20171018 to 20180627
+/*20171018 to 20180711
부분 화면 캡ì³
Capture part of screen
*/
MSG_ID_B8B = 0xb8b,
-/*20171018 to 20180627
+/*20171018 to 20180711
보내기
Send
*/
MSG_ID_B8C = 0xb8c,
-/*20171018 to 20180627
+/*20171018 to 20180711
가족 분과 담당ìž
Family Affairs agent
*/
MSG_ID_B8D = 0xb8d,
-/*20171018 to 20180627
+/*20171018 to 20180711
가족 사항 ë³€ë™ ì•ˆë‚´
Acknowledgement of family member registrations.
*/
MSG_ID_B8E = 0xb8e,
-/*20171018 to 20180627
+/*20171018 to 20180711
안녕하십니까.
ê¸ˆì¼ "%s"님과 "%s"ë‹˜ì˜ ìžë…€ì¸ "%s"ë‹˜ì´ ë…립하여 ë‹¨ë… ì„¸ëŒ€ë¥¼ 구성하였습니다.
@@ -14674,517 +14674,517 @@ Please contact to Prontera Family Affairs if you have any enquiries.
Thank you.
*/
MSG_ID_B8F = 0xb8f,
-/*20171018 to 20180627
+/*20171018 to 20180711
장착
Equip
*/
MSG_ID_B90 = 0xb90,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ì§€ ì—†ìŒ
No image
*/
MSG_ID_B91 = 0xb91,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s]ì€(는) 현재 í˜¸ì¶œì„ ì°¨ë‹¨í•œ ìƒíƒœìž…니다.
[%s] is blocking Call Massage.
*/
MSG_ID_B92 = 0xb92,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ê³µì„±ì „ì´ ì§„í–‰ì¤‘ì´ë¯€ë¡œ, 길드마스터를 위임 í•  수 없습니다.
Currently in WoE hours, unable to delegate Guild leader
*/
MSG_ID_B93 = 0xb93,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 길드장 ìœ„ìž„ì„ ë°›ì€ì§€ 만 하루가 지나지 ì•Šì•„, ê¸¸ë“œìž¥ì„ ìœ„ìž„í•  수 없습니다.
You have to wait for one day before delegating a new Guild leader
*/
MSG_ID_B94 = 0xb94,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´ê°€ ë˜ë©´ ì „ìŠ¹ì„ í•  수 없고 ìŠ¤í…Ÿì˜ ì œí•œì´ ìžˆìœ¼ë©° HP와 SPê°€ 줄어듭니다.
ê·¸ëž˜ë„ ê´œì°®ìŠµë‹ˆê¹Œ?
When adopted, character will not able to transcend, maximum stats will be limited, MaxHP and MaxSP will be reduced.
Are you sure you want to continue?
*/
MSG_ID_B95 = 0xb95,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련
Refining
*/
MSG_ID_B96 = 0xb96,
-/*20171018 to 20180627
+/*20171018 to 20180711
대장장ì´ì˜ ì¶•ë³µì„ ì‚¬ìš©ì¤‘ìž…ë‹ˆë‹¤.
Use Blacksmith's Blessing
*/
MSG_ID_B97 = 0xb97,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니가 부족합니다.
Insufficient zeny
*/
MSG_ID_B98 = 0xb98,
-/*20171018 to 20180627
+/*20171018 to 20180711
대장장ì´ì˜ 축복 개수가 부족합니다.
Not enough Blacksmith's Blessing
*/
MSG_ID_B99 = 0xb99,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 장비는 ì œë ¨ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤.
This equipment can not be refined
*/
MSG_ID_B9A = 0xb9a,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 성공
Upgrade success!
*/
MSG_ID_B9B = 0xb9b,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 실패
Upgrade failed!
*/
MSG_ID_B9C = 0xb9c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëŒì•„가기
Back
*/
MSG_ID_B9D = 0xb9d,
-/*20171018 to 20180627
+/*20171018 to 20180711
성공
Success
*/
MSG_ID_B9E = 0xb9e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì›ëž˜ëŒ€ë¡œ
Return
*/
MSG_ID_B9F = 0xb9f,
-/*20171018 to 20180627
+/*20171018 to 20180711
씨와ì˜
With Mr/Miss
*/
MSG_ID_BA0 = 0xba0,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ì˜ ì´ë¦„ì„ ^0000ff^0000ff %s^000000^000000 ë¡œ 수정합니다. ê³„ì† í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
The Homunculus's name will be changed to^0000ff^0000ff %s^000000^000000, Are you sure?
*/
MSG_ID_BA1 = 0xba1,
-/*20171018 to 20180627
+/*20171018 to 20180711
í˜¸ì¶œì´ í—ˆìš©ëœ ìƒíƒœìž…니다. (호출 기능 ON)
Call function is ON
*/
MSG_ID_BA2 = 0xba2,
-/*20171018 to 20180627
+/*20171018 to 20180711
í˜¸ì¶œì´ ì°¨ë‹¨ëœ ìƒíƒœìž…니다. (호출 기능 OFF)
Call function is OFF
*/
MSG_ID_BA3 = 0xba3,
-/*20171018 to 20180627
+/*20171018 to 20180711
호출 메시지 표시
Display Call messages
*/
MSG_ID_BA4 = 0xba4,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ìºë¦­í„°ê°€ 현재 ë…¸ì  ì•„ì´í…œì„ 사용 중ì´ë¯€ë¡œ 삭제할 수 없습니다.
This character is currently opening a shop and can't be deleted
*/
MSG_ID_BA5 = 0xba5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ ë™ì¼í•œ ë…¸ì  NPCê°€ 설치 중입니다.
The same vend shop NPC has been set up
*/
MSG_ID_BA6 = 0xba6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì ì„ 설치할 수 없는 위치입니다.
Opening shop is not allowed on this location
*/
MSG_ID_BA7 = 0xba7,
-/*20171018 to 20180627
+/*20171018 to 20180711
다른 ìºë¦­í„°ê°€ 있는 위치ì—는 ë…¸ì ì„ 설치할 수 없습니다.
Opening shop is not allowed when there is other character
*/
MSG_ID_BA8 = 0xba8,
-/*20171018 to 20180627
+/*20171018 to 20180711
펫 먹ì´ì£¼ê¸°ê°€ 실패했습니다. ë¡œë±ìŠ¤ ìž‘ì„±ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Failed to feed pet, please close RODEX window
*/
MSG_ID_BA9 = 0xba9,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비 세트 설정
Set item setting
*/
MSG_ID_BAA = 0xbaa,
-/*20171018 to 20180627
+/*20171018 to 20180711
장착 하기
Equip
*/
MSG_ID_BAB = 0xbab,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 실패시 장비가 사ë¼ì§‘니다.
Equipment will dissapear when refine fails
*/
MSG_ID_BAC = 0xbac,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 실패시 ìž¥ë¹„ì˜ ì œë ¨ë„ê°€ 내려갑니다.
Equipment's refine level will decreased when refine fails
*/
MSG_ID_BAD = 0xbad,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 실패시 ìž¥ë¹„ì˜ ì œë ¨ë„ê°€ 내려가거나 사ë¼ì§ˆ 수 있습니다.
Equipment will dissapear or refine level will decreased when refine fails
*/
MSG_ID_BAE = 0xbae,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 중ì—는 ë¡œë±ìŠ¤ë¥¼ 사용할 수 없습니다. ë¡œë±ìŠ¤ë¥¼ ê°•ì œ 종료하였습니다.
You cannot use RODEX while refining. RODEX has closed.
*/
MSG_ID_BAF = 0xbaf,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 중ì—는 ë¡œë±ìŠ¤ë¥¼ 사용할 수 없습니다.
You cannot use RODEX while refining.
*/
MSG_ID_BB0 = 0xbb0,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì œë ¨ì„ ì§„í–‰í•˜ë ¤ë©´ 다른 ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Please close other windows to continue.
*/
MSG_ID_BB1 = 0xbb1,
-/*20171018 to 20180627
+/*20171018 to 20180711
오오ë¼ê°€ ì •ìƒì ìœ¼ë¡œ 표시ë©ë‹ˆë‹¤ [ì˜¤ì˜¤ë¼ ON]
Turn On Aura [Aura ON]
*/
MSG_ID_BB2 = 0xbb2,
-/*20171018 to 20180627
+/*20171018 to 20180711
오오ë¼ê°€ 표시ë˜ì§€ 않습니다 [ì˜¤ì˜¤ë¼ OFF]
Turn Off Aura [Auta OFF]
*/
MSG_ID_BB3 = 0xbb3,
-/*20171018 to 20180627
+/*20171018 to 20180711
오오ë¼ê°€ Off ìƒíƒœìž…니다. Off 를 해제하고 ì‹œë„í•´ 주세요
Aura is turned off. Please turn it on and try again
*/
MSG_ID_BB4 = 0xbb4,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬 ë°œë™ì‹œ 최소 %dê°œì˜ íƒ„ì•Œì´ í•„ìš”í•©ë‹ˆë‹¤.
You need %d bullet(s) to activate the skill.
*/
MSG_ID_BB5 = 0xbb5,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비 세트를 변경하시겠습니까?
Do you want to change the equipment set?
*/
MSG_ID_BB6 = 0xbb6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì£½ì€ ìƒíƒœì—서는 í•  수 없습니다
You can not do it while you are dead.
*/
MSG_ID_BB7 = 0xbb7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºìŠ¤íŒ… ë„중ì—는 í•  수 없습니다
You can not do it while casting
*/
MSG_ID_BB8 = 0xbb8,
-/*20171018 to 20180627
+/*20171018 to 20180711
거래 ë„중ì—는 í•  수 없습니다
You can not do it while trading
*/
MSG_ID_BB9 = 0xbb9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë…¸ì  ê°œì„¤ ë„중ì—는 í•  수 없습니다
You can not do it while opening vendor
*/
MSG_ID_BBA = 0xbba,
-/*20171018 to 20180627
+/*20171018 to 20180711
NPC ì´ìš©ì¤‘ì—는 í•  수 없습니다
You can not do it while using NPC
*/
MSG_ID_BBB = 0xbbb,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅방 ì´ìš©ì¤‘ì—는 í•  수 없습니다
You can not do it while using chatting room
*/
MSG_ID_BBC = 0xbbc,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ì› ì „ì›ì´ ì ‘ì† ìƒíƒœê°€ 아닙니다.
Party members are not connected.
*/
MSG_ID_BBD = 0xbbd,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬 ë°œë™ì‹œ 최소 %dê°œì˜ í™”ì‚´ì´ í•„ìš”í•©ë‹ˆë‹¤.
You need %d arrow(s) to activate the skill.
*/
MSG_ID_BBE = 0xbbe,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ ì •ë ¬
Align items
*/
MSG_ID_BBF = 0xbbf,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ 버리려면 장비 설정 ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
Please close item setting window to dump item.
*/
MSG_ID_BC0 = 0xbc0,
-/*20171018 to 20180627
+/*20171018 to 20180711
êµì²´ í•  수 있는 ì•„ì´í…œì´ 없습니다.
There is no item to replace.
*/
MSG_ID_BC1 = 0xbc1,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì‚­ì œëœ ìºë¦­í„°
Deleted character
*/
MSG_ID_BC2 = 0xbc2,
-/*20171018 to 20180627
+/*20171018 to 20180711
%Y.%m.%d
*/
MSG_ID_BC3 = 0xbc3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì†ì¼: %s
Access date: %s
*/
MSG_ID_BC4 = 0xbc4,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 중ì—는 ì€í–‰ì„ 사용할 수 없습니다. ì€í–‰ì„ ê°•ì œ 종료하였습니다.
You can not use bank while refining. Bank has closed.
*/
MSG_ID_BC5 = 0xbc5,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련 중ì—는 ì€í–‰ì„ 사용할 수 없습니다.
You can not use bank while refining.
*/
MSG_ID_BC6 = 0xbc6,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비 세트 설정 ì¤‘ì¸ ì•„ì´í…œìž…니다.
The item has bind to set equipment.
*/
MSG_ID_BC7 = 0xbc7,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ê°„
Human
*/
MSG_ID_BC8 = 0xbc8,
-/*20171018 to 20180627
+/*20171018 to 20180711
검사, 법사, ìƒì¸, 복사, ë„ë‘‘, ê¶ìˆ˜
Swordman, Mage, Merchant, Acolyte, Thief, Archer
*/
MSG_ID_BC9 = 0xbc9,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë„람
Doram
*/
MSG_ID_BCA = 0xbca,
-/*20171018 to 20180627
+/*20171018 to 20180711
소환사
Summoner
*/
MSG_ID_BCB = 0xbcb,
-/*20171018 to 20180627
+/*20171018 to 20180711
미드가르드 ëŒ€ë¥™ì˜ ëŒ€í‘œ 종족. 무한한 잠재력과 ë›°ì–´ë‚œ ì ì‘력으로 문제 í•´ê²°ì— íƒì›”í•œ ê²ƒì´ íŠ¹ì§•ì´ë‹¤.
Delegate race of Midgard. Very talented race to solve a problem with inifite potential and great adaptability.
*/
MSG_ID_BCC = 0xbcc,
-/*20171018 to 20180627
+/*20171018 to 20180711
파-스타 ëŒ€ë¥™ì˜ ëŒ€í‘œì ì¸ 종족 중 하나로, 선천ì ìœ¼ë¡œ í˜¸ê¸°ì‹¬ì´ ê°•í•˜ê³  발랄한 ì„±ê²©ì„ ì§€ë…”ë‹¤.
One of delegate race of Far-star continent with natural born curiosity and sparky character.
*/
MSG_ID_BCD = 0xbcd,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지 í•œê³„ëŸ‰ì´ 70%를 초과하거나, ì¸ë²¤í† ë¦¬ì— 10칸 ì´ìƒì˜ 여유 ê³µê°„ì´ ë¶€ì¡±í•œ ìƒíƒœìž…니다.
Weight limit has reached toover 70%. Or less then 10 invenrory space.
*/
MSG_ID_BCE = 0xbce,
-/*20171018 to 20180627
+/*20171018 to 20180711
C
*/
MSG_ID_BCF = 0xbcf,
-/*20171018 to 20180627
+/*20171018 to 20180711
C
*/
MSG_ID_BD0 = 0xbd0,
-/*20171018 to 20180627
+/*20171018 to 20180711
다른 ì¼ì„ 하는 중입니다.
Doing in other activity.
*/
MSG_ID_BD1 = 0xbd1,
-/*20171018 to 20180627
+/*20171018 to 20180711
오버히트 리미트 : %d
Overheat limit : %d
*/
MSG_ID_BD2 = 0xbd2,
-/*20171018 to 20180627
+/*20171018 to 20180711
메모리얼 ë˜ì „ ì´ìš© 중엔 초대 ë° íƒˆí‡´ê°€ ë˜ì§€ 않습니다.
You cannot invite or withdraw while in memorial dungeon.
*/
MSG_ID_BD3 = 0xbd3,
-/*20171018 to 20180627
+/*20171018 to 20180711
비ì†ì–´ê°€ í¬í•¨ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
다시 한번 확ì¸í•´ì£¼ì„¸ìš”.
Expletive has detected.
Please check again.
*/
MSG_ID_BD4 = 0xbd4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´ë””는 %dìž ì´ìƒ 입력해주세요. ì‚¬ìš©ìž ê³„ì •ì´ ì—†ìœ¼ì‹ ë¶„ë“¤ì€ ì™¼ìª½ í•˜ë‹¨ì˜ [ì‹ ì²­] ë²„íŠ¼ì„ ëˆŒëŸ¬ ê³„ì •ì„ ë§Œë“œì‹œê¸° ë°”ëžë‹ˆë‹¤.
Please enter over %d characters. If you don't have user account, please click [Register] button on the bottom left.
*/
MSG_ID_BD5 = 0xbd5,
-/*20171018 to 20180627
+/*20171018 to 20180711
비밀번호는 %dìž ì´ìƒ 입력해주세요.
Please enter the password over %d characters.
*/
MSG_ID_BD6 = 0xbd6,
-/*20171018 to 20180627
+/*20171018 to 20180711
진행중ì´ë˜ ìž‘ì—…ì„ ì¢…ë£Œí›„ 다시 ì‹œë„하세요.
Please finish your current work and try it again.
*/
MSG_ID_BD7 = 0xbd7,
-/*20171018 to 20180627
+/*20171018 to 20180711
%.1f%% (PC방 %.1f%% + TPLUS %.1f%% + %s서버 %.1f%%)
%.1f%% (Internet-Cafe %.1f%% + TPLUS %.1f%% + %sServer %.1f%%)
*/
MSG_ID_BD8 = 0xbd8,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì„ 등ë¡í•  수 없습니다
The item cannot be registered.
*/
MSG_ID_BD9 = 0xbd9,
-/*20171018 to 20180627
+/*20171018 to 20180711
/100
/300
*/
MSG_ID_BDA = 0xbda,
-/*20171018 to 20180627
+/*20171018 to 20180711
/2000
/4000
*/
MSG_ID_BDB = 0xbdb,
-/*20171018 to 20180627
+/*20171018 to 20180711
https://member.gnjoy.com.tw/mRO_SecPwd.aspx
*/
MSG_ID_BDC = 0xbdc,
-/*20171018 to 20180627
+/*20171018 to 20180711
등ë¡í•  emblemì´ ì¡´ìž¬í•˜ì§€ 않습니다. emblem í´ë”ì— íŒŒì¼ì„ 넣고 ì‹œë„í•´ 주세요
The emblem you want to register does not exist. Insert it in the emblem file and try again
*/
MSG_ID_BDD = 0xbdd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬
Ragnarok Ragnarok
*/
MSG_ID_BDE = 0xbde,
-/*20171018 to 20180627
+/*20171018 to 20180711
스í¬ë¦°ìƒ·ì— ìžì‹  ì´ì™¸ì˜ ìºë¦­í„°ëª…ì´ í‘œì‹œë˜ëŠ” 경우나 ì±„íŒ…ì°½ì— ìžì‹  ì´ì™¸ì˜ ìºë¦­í„° 대화가 표시ë˜ëŠ” 경우, 해당 사용ìžì—게 반드시 양해를 구한 후 사용 í•´ 주시기 ë°”ëžë‹ˆë‹¤.
If your screenshot or chat box includes other users besides yourself, first ask permission from the other users before using it.
*/
MSG_ID_BDF = 0xbdf,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ìƒíƒœì—ì„  장비를 êµì²´í•  수 없습니다
You cannot change equipment in current condition
*/
MSG_ID_BE0 = 0xbe0,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ìœ ì €ì˜ ì´ë¦„ì„ ê°€ì ¸ì˜¤ê³  있습니다
Getting the user's name
*/
MSG_ID_BE1 = 0xbe1,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 메시지는 사용 í•  수 없는 ë‚´ìš©ì„ í¬í•¨í•˜ê³  있습니다.
This message includes contents you are not able to use.
*/
MSG_ID_BE2 = 0xbe2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ êµ¬ìž…ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
Failed to purchase item.
*/
MSG_ID_BE3 = 0xbe3,
-/*20171018 to 20180627
+/*20171018 to 20180711
신분ì¦ë²ˆí˜¸ 하위 7ìžë¦¬ê°€ ì¼ì¹˜í•˜ì§€ 않습니다.
The lower numbers of the identification number does not match.
*/
MSG_ID_BE4 = 0xbe4,
-/*20171018 to 20180627
+/*20171018 to 20180711
닫기
Close
*/
MSG_ID_BE5 = 0xbe5,
-/*20171018 to 20180627
+/*20171018 to 20180711
규칙
Rule
*/
MSG_ID_BE6 = 0xbe6,
-/*20171018 to 20180627
+/*20171018 to 20180711
1회 구매
Purchase 1x
*/
MSG_ID_BE7 = 0xbe7,
-/*20171018 to 20180627
+/*20171018 to 20180711
10회 구매
Purchase 10x
*/
MSG_ID_BE8 = 0xbe8,
-/*20171018 to 20180627
+/*20171018 to 20180711
100회 구매
Purchase 100x
*/
MSG_ID_BE9 = 0xbe9,
-/*20171018 to 20180627
+/*20171018 to 20180711
1등 당첨
Win 1st prize
*/
MSG_ID_BEA = 0xbea,
-/*20171018 to 20180627
+/*20171018 to 20180711
2등 당첨
Win 2nd prize
*/
MSG_ID_BEB = 0xbeb,
-/*20171018 to 20180627
+/*20171018 to 20180711
3등 당첨
Win 3rd prize
*/
MSG_ID_BEC = 0xbec,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 사용하지 ì•ŠìŒ
Currently not in use
*/
MSG_ID_BED = 0xbed,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 사용하지 ì•ŠìŒ
Currently not in use
*/
MSG_ID_BEE = 0xbee,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니 ë¡œë˜ ë‹¹ì²¨ìž
Zeny Lottery winner
*/
MSG_ID_BEF = 0xbef,
-/*20171018 to 20180627
+/*20171018 to 20180711
복권 구매 금액
Lottery purchase amount
*/
MSG_ID_BF0 = 0xbf0,
-/*20171018 to 20180627
+/*20171018 to 20180711
참여 ìºë¦­í„°
Participating character
*/
MSG_ID_BF1 = 0xbf1,
-/*20171018 to 20180627
+/*20171018 to 20180711
1등
1st Price
*/
MSG_ID_BF2 = 0xbf2,
-/*20171018 to 20180627
+/*20171018 to 20180711
2등
2nd Price
*/
MSG_ID_BF3 = 0xbf3,
-/*20171018 to 20180627
+/*20171018 to 20180711
3등
3rd Price
*/
MSG_ID_BF4 = 0xbf4,
-/*20171018 to 20180627
+/*20171018 to 20180711
구매 ë³´ìƒ ì•„ì´í…œ
Purchase Reward Item
*/
MSG_ID_BF5 = 0xbf5,
-/*20171018 to 20180627
+/*20171018 to 20180711
^1a1a1a복권 ^b%d개^/b를
^4435b2%dZeny^1a1a1a로
구매하시겠습니까?
@@ -15192,759 +15192,759 @@ Purchase Reward Item
^4435b2%dZeny^1a1a1a?
*/
MSG_ID_BF6 = 0xbf6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³µê¶Œì„ ì„±ê³µì ìœ¼ë¡œ 구매하였습니다.
You have successfully purchased the lottery ticket.
*/
MSG_ID_BF7 = 0xbf7,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지 제니가 부족하여 ë³µê¶Œì„ êµ¬ë§¤ í•  수 없습니다.
Not enough Zeny to purchase lottey ticket.
*/
MSG_ID_BF8 = 0xbf8,
-/*20171018 to 20180627
+/*20171018 to 20180711
최대 복권 구매 횟수는 1000회를 초과 할 수 없습니다.
You are only able to purchase the tickets upto 1000 times.
*/
MSG_ID_BF9 = 0xbf9,
-/*20171018 to 20180627
+/*20171018 to 20180711
예
Yes
*/
MSG_ID_BFA = 0xbfa,
-/*20171018 to 20180627
+/*20171018 to 20180711
아니요
No
*/
MSG_ID_BFB = 0xbfb,
-/*20171018 to 20180627
+/*20171018 to 20180711
HP
*/
MSG_ID_BFC = 0xbfc,
-/*20171018 to 20180627
+/*20171018 to 20180711
SP
*/
MSG_ID_BFD = 0xbfd,
-/*20171018 to 20180627
+/*20171018 to 20180711
Lv
*/
MSG_ID_BFE = 0xbfe,
-/*20171018 to 20180627
+/*20171018 to 20180711
Lv
*/
MSG_ID_BFF = 0xbff,
-/*20171018 to 20180627
+/*20171018 to 20180711
Exp
*/
MSG_ID_C00 = 0xc00,
-/*20171018 to 20180627
+/*20171018 to 20180711
all on
*/
MSG_ID_C01 = 0xc01,
-/*20171018 to 20180627
+/*20171018 to 20180711
Play Replay Flie
*/
MSG_ID_C02 = 0xc02,
-/*20171018 to 20180627
+/*20171018 to 20180711
P
*/
MSG_ID_C03 = 0xc03,
-/*20171018 to 20180627
+/*20171018 to 20180711
Total
*/
MSG_ID_C04 = 0xc04,
-/*20171018 to 20180627
+/*20171018 to 20180711
Basicinfo
*/
MSG_ID_C05 = 0xc05,
-/*20171018 to 20180627
+/*20171018 to 20180711
Equip
*/
MSG_ID_C06 = 0xc06,
-/*20171018 to 20180627
+/*20171018 to 20180711
Item
*/
MSG_ID_C07 = 0xc07,
-/*20171018 to 20180627
+/*20171018 to 20180711
Skill
*/
MSG_ID_C08 = 0xc08,
-/*20171018 to 20180627
+/*20171018 to 20180711
Guild
*/
MSG_ID_C09 = 0xc09,
-/*20171018 to 20180627
+/*20171018 to 20180711
Party
*/
MSG_ID_C0A = 0xc0a,
-/*20171018 to 20180627
+/*20171018 to 20180711
Chatting
*/
MSG_ID_C0B = 0xc0b,
-/*20171018 to 20180627
+/*20171018 to 20180711
Shortcut
*/
MSG_ID_C0C = 0xc0c,
-/*20171018 to 20180627
+/*20171018 to 20180711
Status
*/
MSG_ID_C0D = 0xc0d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ALL
All
*/
MSG_ID_C0E = 0xc0e,
-/*20171018 to 20180627
+/*20171018 to 20180711
User Defined File Name
*/
MSG_ID_C0F = 0xc0f,
-/*20171018 to 20180627
+/*20171018 to 20180711
Repeated File Check
*/
MSG_ID_C10 = 0xc10,
-/*20171018 to 20180627
+/*20171018 to 20180711
on
*/
MSG_ID_C11 = 0xc11,
-/*20171018 to 20180627
+/*20171018 to 20180711
<Basic Skin>
*/
MSG_ID_C12 = 0xc12,
-/*20171018 to 20180627
+/*20171018 to 20180711
Select Skin
*/
MSG_ID_C13 = 0xc13,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 ë³µê¶Œì— ì°¸ì—¬ 중ì´ë¼ 삭제할 수 없습니다
You cannot delete it because you are currently participating in the lottery
*/
MSG_ID_C14 = 0xc14,
-/*20171018 to 20180627
+/*20171018 to 20180711
/achievement
*/
MSG_ID_C15 = 0xc15,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니 복권
Zeny Lottery ticket
*/
MSG_ID_C16 = 0xc16,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니 복권 %d등 당첨 ë³´ìƒ
Zenyy Lottery %dprize reward
*/
MSG_ID_C17 = 0xc17,
-/*20171018 to 20180627
+/*20171018 to 20180711
%d등 당첨 ë³´ìƒ: %s
%dprize reward: %s
*/
MSG_ID_C18 = 0xc18,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니 복권 ëˆ„ì  êµ¬ë§¤ ë³´ìƒ
Zeny Lottery Cumulative purchase reward
*/
MSG_ID_C19 = 0xc19,
-/*20171018 to 20180627
+/*20171018 to 20180711
ëˆ„ì  %d회 ë³´ìƒ: %s
Cumulative %d times reward: %s
*/
MSG_ID_C1A = 0xc1a,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니 복권 구매 환불
Zeny Lottery Refund
*/
MSG_ID_C1B = 0xc1b,
-/*20171018 to 20180627
+/*20171018 to 20180711
환불 금액: %d Zeny
환불 사유: 서버 내 복권 추첨 달성 실패
Refund amount: %d Zeny
Reason for Refund: Failed to draw lottery in the server
*/
MSG_ID_C1C = 0xc1c,
-/*20171018 to 20180627
+/*20171018 to 20180711
미니 파티창 추가
Add Mini Party Chat
*/
MSG_ID_C1D = 0xc1d,
-/*20171018 to 20180627
+/*20171018 to 20180711
미니 파티창 삭제
Delete Mini Party Chat
*/
MSG_ID_C1E = 0xc1e,
-/*20171018 to 20180627
+/*20171018 to 20180711
복권 ì¶”ì²¨ì´ ëª¨ë‘ ì¢…ë£Œ ë˜ì—ˆìŠµë‹ˆë‹¤! 당첨ìžë¥¼ 확ì¸í•´ì£¼ì„¸ìš”
The lottery draw had ended! Check the winner!
*/
MSG_ID_C1F = 0xc1f,
-/*20171018 to 20180627
+/*20171018 to 20180711
%dì›” %dì¼
%dMonth %dDay
*/
MSG_ID_C20 = 0xc20,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹¤ìŒ ë“±ê¸‰ê¹Œì§€
Till the next grade
*/
MSG_ID_C21 = 0xc21,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì „ì²´
All
*/
MSG_ID_C22 = 0xc22,
-/*20171018 to 20180627
+/*20171018 to 20180711
미완료
Incomplete
*/
MSG_ID_C23 = 0xc23,
-/*20171018 to 20180627
+/*20171018 to 20180711
(달성!)
(Accomplished!)
*/
MSG_ID_C24 = 0xc24,
-/*20171018 to 20180627
+/*20171018 to 20180711
(미달성)
(Not Accomplished)
*/
MSG_ID_C25 = 0xc25,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비 êµì²´
Change equipment
*/
MSG_ID_C26 = 0xc26,
-/*20171018 to 20180627
+/*20171018 to 20180711
CHANGE
*/
MSG_ID_C27 = 0xc27,
-/*20171018 to 20180627
+/*20171018 to 20180711
힘 파ë¼ë©”í„°
^cc0000근접 물리 공격력^ffffff, 소지무게
Power Parameter
^cc0000Melee PhysicalAttack^ffffff, Carrying Weight
*/
MSG_ID_C28 = 0xc28,
-/*20171018 to 20180627
+/*20171018 to 20180711
민첩성 파ë¼ë©”í„°
^cc0000공격 ì†ë„^ffffff, 회피율, 물리 ë°©ì–´ë ¥
Agility Parameter
^cc0000Attack Speed^ffffff, Dodge, Physical Defense
*/
MSG_ID_C29 = 0xc29,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì²´ë ¥ 파ë¼ë©”í„°
^cc0000최대 체력^ffffff, 물리 방어력, 마법 방어력
HP Parameter
^cc0000Max HP^ffffff, Physical Defense, Magic Defense
*/
MSG_ID_C2A = 0xc2a,
-/*20171018 to 20180627
+/*20171018 to 20180711
지력 파ë¼ë©”í„°
^cc0000마법 공격력^ffffff, ìºìŠ¤íŒ… 시간, 마법 ë°©ì–´ë ¥
Intellect Parameter
^cc0000Magic Attack^ffffff, Casting Time, Magic Defense
*/
MSG_ID_C2B = 0xc2b,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì†ìž¬ì£¼ 파ë¼ë©”í„°
^cc0000ì›ê±°ë¦¬ 물리 공격력^ffffff, 명중률, ìºìŠ¤íŒ… 시간, 마법 공격력
Handcraft Parameter
^cc0000Long Range Physical Attack^ffffff, Accuracy, Casting Time, Magic Attack
*/
MSG_ID_C2C = 0xc2c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìš´ 파ë¼ë©”í„°
^cc0000치명타율^ffffff, 명중률, 물리공격력, 마법공격력, 회피율
Moon Parameter
^cc0000Critical Rate^ffffff, Accuracy, Physical Attack, Magic Attack, Dodge
*/
MSG_ID_C2D = 0xc2d,
-/*20171018 to 20180627
+/*20171018 to 20180711
물리 공격력
Physical Attack
*/
MSG_ID_C2E = 0xc2e,
-/*20171018 to 20180627
+/*20171018 to 20180711
물리 방어력
Physical Defense
*/
MSG_ID_C2F = 0xc2f,
-/*20171018 to 20180627
+/*20171018 to 20180711
명중률
Accuracy
*/
MSG_ID_C30 = 0xc30,
-/*20171018 to 20180627
+/*20171018 to 20180711
치명타율
Critical Rate
*/
MSG_ID_C31 = 0xc31,
-/*20171018 to 20180627
+/*20171018 to 20180711
소ì†ê¸¸ë“œ
Affiliated Guild
*/
MSG_ID_C32 = 0xc32,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê° íŒŒë¼ë©”í„° ë ˆë²¨ì—…ì— ì‚¬ìš©ë˜ëŠ” í¬ì¸íŠ¸
Points to level up each Parameter
*/
MSG_ID_C33 = 0xc33,
-/*20171018 to 20180627
+/*20171018 to 20180711
마법공격력
Magic Attack
*/
MSG_ID_C34 = 0xc34,
-/*20171018 to 20180627
+/*20171018 to 20180711
마법방어력
Magic Defense
*/
MSG_ID_C35 = 0xc35,
-/*20171018 to 20180627
+/*20171018 to 20180711
회피율
Dodge
*/
MSG_ID_C36 = 0xc36,
-/*20171018 to 20180627
+/*20171018 to 20180711
공격 ì†ë„
Attack Speed
*/
MSG_ID_C37 = 0xc37,
-/*20171018 to 20180627
+/*20171018 to 20180711
단축키 안내
Shortcut
*/
MSG_ID_C38 = 0xc38,
-/*20171018 to 20180627
+/*20171018 to 20180711
옵션
Option
*/
MSG_ID_C39 = 0xc39,
-/*20171018 to 20180627
+/*20171018 to 20180711
스킬 단축키 (F1 ~ F9)
Skill Shortcut Key (F1 ~ F9)
*/
MSG_ID_C3A = 0xc3a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë¯¸ì§€ 캡ì³
Capture Image
*/
MSG_ID_C3B = 0xc3b,
-/*20171018 to 20180627
+/*20171018 to 20180711
확대
Zoom In
*/
MSG_ID_C3C = 0xc3c,
-/*20171018 to 20180627
+/*20171018 to 20180711
축소
Zoom Out
*/
MSG_ID_C3D = 0xc3d,
-/*20171018 to 20180627
+/*20171018 to 20180711
길드
Guild
*/
MSG_ID_C3E = 0xc3e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì€í–‰
Bank
*/
MSG_ID_C3F = 0xc3f,
-/*20171018 to 20180627
+/*20171018 to 20180711
우편
Mail
*/
MSG_ID_C40 = 0xc40,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìºì‹œ ìƒì 
Cash Shop
*/
MSG_ID_C41 = 0xc41,
-/*20171018 to 20180627
+/*20171018 to 20180711
앉기
Sit
*/
MSG_ID_C42 = 0xc42,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë™
Move
*/
MSG_ID_C43 = 0xc43,
-/*20171018 to 20180627
+/*20171018 to 20180711
회전
Rotate
*/
MSG_ID_C44 = 0xc44,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ìž¥ì€ íŒŒí‹°ìž¥ì„ ë‹¤ë¥¸ 파티ì›ì—게 위임 후 탈퇴 가능합니다.
The Party Leader can be dropped out only after another party member becomes a Party Leader.
*/
MSG_ID_C45 = 0xc45,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ ë™ì˜ìƒì„ 그만 보시겠습니까?
Do you want to stop viewing this video?
*/
MSG_ID_C46 = 0xc46,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비가 장비 êµì²´ ì°½ì— ìž¥ì°© ë˜ì—ˆìŠµë‹ˆë‹¤.
gear has been equipped in the gear equipment pop-up.
*/
MSG_ID_C47 = 0xc47,
-/*20171018 to 20180627
+/*20171018 to 20180711
장비가 장비 êµì²´ ì°½ì—ì„œ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
gear has been removed in the gear equipment pop-up.
*/
MSG_ID_C48 = 0xc48,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재가 마지막 ë¼ì¸ìž…니다.
This is the last line.
*/
MSG_ID_C49 = 0xc49,
-/*20171018 to 20180627
+/*20171018 to 20180711
%.1f%% ( 기본 100%% + 프리미엄 %.1f%%+ %s서버 %.1f%% )
%.1f%% ( Base 100%% + Premium %.1f%%+ %sServer %.1f%% )
*/
MSG_ID_C4A = 0xc4a,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•œìž
Chinese character
*/
MSG_ID_C4B = 0xc4b,
-/*20171018 to 20180627
+/*20171018 to 20180711
단축키 설정
Shortcut Settings
*/
MSG_ID_C4C = 0xc4c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‹¹ì‹ ì˜ ì •ì•¡ì œ ê¸°ê°„ì€ %sì— ì¢…ë£Œë©ë‹ˆë‹¤.
Your subscription will be ended on%s.
*/
MSG_ID_C4D = 0xc4d,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¦¬í”Œë ˆì´ íŒŒì¼ì„ 찾지 못하였습니다.
Cannot find the replay file.
*/
MSG_ID_C4E = 0xc4e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜ìƒ
Shoes
*/
MSG_ID_C4F = 0xc4f,
-/*20171018 to 20180627
+/*20171018 to 20180711
신발
Head
*/
MSG_ID_C50 = 0xc50,
-/*20171018 to 20180627
+/*20171018 to 20180711
갑옷
Armor
*/
MSG_ID_C51 = 0xc51,
-/*20171018 to 20180627
+/*20171018 to 20180711
어깨
Shoulders
*/
MSG_ID_C52 = 0xc52,
-/*20171018 to 20180627
+/*20171018 to 20180711
악세
Accessory
*/
MSG_ID_C53 = 0xc53,
-/*20171018 to 20180627
+/*20171018 to 20180711
머리
Costume
*/
MSG_ID_C54 = 0xc54,
-/*20171018 to 20180627
+/*20171018 to 20180711
차순정렬
Sort Order
*/
MSG_ID_C55 = 0xc55,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¼ë°˜ 장비
Normal Gear
*/
MSG_ID_C56 = 0xc56,
-/*20171018 to 20180627
+/*20171018 to 20180711
특수 장비
Special Gear
*/
MSG_ID_C57 = 0xc57,
-/*20171018 to 20180627
+/*20171018 to 20180711
칭호
Style
*/
MSG_ID_C58 = 0xc58,
-/*20171018 to 20180627
+/*20171018 to 20180711
/quake : 화면 í”들림 효과 On/Off
/quake : Screen Shaking Effect On/Off
*/
MSG_ID_C59 = 0xc59,
-/*20171018 to 20180627
+/*20171018 to 20180711
/aura2 : 오오ë¼ë¥¼ 완전히 Off 시킬 수 있습니다 On Off
/aura2 : You can completely turn off the aurora On/Off
*/
MSG_ID_C5A = 0xc5a,
-/*20171018 to 20180627
+/*20171018 to 20180711
기본 설정
Default Settings
*/
MSG_ID_C5B = 0xc5b,
-/*20171018 to 20180627
+/*20171018 to 20180711
고급 설정
Advanced Settings
*/
MSG_ID_C5C = 0xc5c,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê¸°ë³¸ì„¤ì •ê°’ì´ ì ìš©ë©ë‹ˆë‹¤.
The Default Settings will be applied.
*/
MSG_ID_C5D = 0xc5d,
-/*20171018 to 20180627
+/*20171018 to 20180711
기본 ì„¤ì •ê°’ì´ ì ìš©ë©ë‹ˆë‹¤. ë™ì˜í•˜ì‹­ë‹ˆê¹Œ?
The Default Settings will be applied. Do you agree?
*/
MSG_ID_C5E = 0xc5e,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì„¤ì •ê°’ì´ ì ìš©ë©ë‹ˆë‹¤. ë™ì˜í•˜ì‹­ë‹ˆê¹Œ?
The settings will be applied. Do you agree?
*/
MSG_ID_C5F = 0xc5f,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì„¤ì •ê°’ì„ ì ìš©í•˜ë ¤ë©´ ìž¬ì‹œìž‘ì´ í•„ìš”í•©ë‹ˆë‹¤. ë™ì˜í•˜ì‹­ë‹ˆê¹Œ?
Need to restart to apply the settings. Do you agree?
*/
MSG_ID_C60 = 0xc60,
-/*20171018 to 20180627
+/*20171018 to 20180711
안개
Fog
*/
MSG_ID_C61 = 0xc61,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜¤ì˜¤ë¼ ê°„ëžµí™”
Simplified aurora
*/
MSG_ID_C62 = 0xc62,
-/*20171018 to 20180627
+/*20171018 to 20180711
오오ë¼ì¼œê¸°
Turn on aurora
*/
MSG_ID_C63 = 0xc63,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´íŽ™íŠ¸ 표시
Show Effect
*/
MSG_ID_C64 = 0xc64,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìŒì˜ 표시
Show Shadows
*/
MSG_ID_C65 = 0xc65,
-/*20171018 to 20180627
+/*20171018 to 20180711
No Shift
*/
MSG_ID_C66 = 0xc66,
-/*20171018 to 20180627
+/*20171018 to 20180711
하드웨어 T&L ê°€ì†ê¸°ëŠ¥ì„ ì„ íƒí•©ë‹ˆë‹¤
Select Hardware T&L Acceleration Function
*/
MSG_ID_C67 = 0xc67,
-/*20171018 to 20180627
+/*20171018 to 20180711
ê²Œìž„ì˜ í•´ìƒë„를 ì„ íƒí•©ë‹ˆë‹¤
Select Game Resolution
*/
MSG_ID_C68 = 0xc68,
-/*20171018 to 20180627
+/*20171018 to 20180711
전체화면 사용
Use full screen
*/
MSG_ID_C69 = 0xc69,
-/*20171018 to 20180627
+/*20171018 to 20180711
마우스 고정
Fix mouse
*/
MSG_ID_C6A = 0xc6a,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´íŽ™íŠ¸ 설정
Effect Settings
*/
MSG_ID_C6B = 0xc6b,
-/*20171018 to 20180627
+/*20171018 to 20180711
Control 설정
Control Settings
*/
MSG_ID_C6C = 0xc6c,
-/*20171018 to 20180627
+/*20171018 to 20180711
그래픽 장치 설정
Graphic Device Settings
*/
MSG_ID_C6D = 0xc6d,
-/*20171018 to 20180627
+/*20171018 to 20180711
그래픽 í•´ìƒë„ 설정
Graphic Resolution Settings
*/
MSG_ID_C6E = 0xc6e,
-/*20171018 to 20180627
+/*20171018 to 20180711
전체 화면 유무 설정
Full Screen Settings
*/
MSG_ID_C6F = 0xc6f,
-/*20171018 to 20180627
+/*20171018 to 20180711
마우스 고정 여부 설정
Fix mouse Settings
*/
MSG_ID_C70 = 0xc70,
-/*20171018 to 20180627
+/*20171018 to 20180711
수수료 :
Commission :
*/
MSG_ID_C71 = 0xc71,
-/*20171018 to 20180627
+/*20171018 to 20180711
수수료 ì´ì•¡ :
Total commission amount :
*/
MSG_ID_C72 = 0xc72,
-/*20171018 to 20180627
+/*20171018 to 20180711
ìˆ˜ì‹ ì¸ ì„¤ì •
Select receiver
*/
MSG_ID_C73 = 0xc73,
-/*20171018 to 20180627
+/*20171018 to 20180711
수신그룹 설정
Select receiving group
*/
MSG_ID_C74 = 0xc74,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¬ê¸° 변경(F10)
Change size(F10)
*/
MSG_ID_C75 = 0xc75,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë©”ì¼í•¨ì„ 불러오는 중 입니다.
불필요한 ë©”ì¼ì€ ^c92114ì‚­ì œ^000000í•´ 주세요~!!
Loading the mailbox.
^c92114Delete^000000unnecessary emails!!
*/
MSG_ID_C76 = 0xc76,
-/*20171018 to 20180627
+/*20171018 to 20180711
NOW LOADING..
*/
MSG_ID_C77 = 0xc77,
-/*20171018 to 20180627
+/*20171018 to 20180711
제목
Title
*/
MSG_ID_C78 = 0xc78,
-/*20171018 to 20180627
+/*20171018 to 20180711
보낸ì´
Sender
*/
MSG_ID_C79 = 0xc79,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬ í´ë¼ì´ì–¸íŠ¸ì™€ ë™ì‹œì— ì‹¤í–‰ì´ ë¶ˆê°€ëŠ¥ 합니다. setupì„ ì¢…ë£Œí•©ë‹ˆë‹¤
*/
MSG_ID_C7A = 0xc7a,
-/*20171018 to 20180627
+/*20171018 to 20180711
추가 기능 설정
*/
MSG_ID_C7B = 0xc7b,
-/*20171018 to 20180627
+/*20171018 to 20180711
This account does not exist.
*/
MSG_ID_C7C = 0xc7c,
-/*20171018 to 20180627
+/*20171018 to 20180711
Passwords do not match.
*/
MSG_ID_C7D = 0xc7d,
-/*20171018 to 20180627
+/*20171018 to 20180711
Failed to pass IP authentication
*/
MSG_ID_C7E = 0xc7e,
-/*20171018 to 20180627
+/*20171018 to 20180711
No identification number, supplement your registration information
*/
MSG_ID_C7F = 0xc7f,
-/*20171018 to 20180627
+/*20171018 to 20180711
Account block
*/
MSG_ID_C80 = 0xc80,
-/*20171018 to 20180627
+/*20171018 to 20180711
System error
*/
MSG_ID_C81 = 0xc81,
-/*20171018 to 20180627
+/*20171018 to 20180711
unknown error found.
*/
MSG_ID_C82 = 0xc82,
-/*20171018 to 20180627
+/*20171018 to 20180711
길안내 ì•„ì´ì½˜ 설정
*/
MSG_ID_C83 = 0xc83,
-/*20171018 to 20180627
+/*20171018 to 20180711
길 안내 정보 UI
*/
MSG_ID_C84 = 0xc84,
-/*20171018 to 20180627
+/*20171018 to 20180711
길 안내 정보 열기
*/
MSG_ID_C85 = 0xc85,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재 위치 공유
*/
MSG_ID_C86 = 0xc86,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색결과[0]
*/
MSG_ID_C87 = 0xc87,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색&안내
*/
MSG_ID_C88 = 0xc88,
-/*20171018 to 20180627
+/*20171018 to 20180711
위치가 올바르지 않습니다.
*/
MSG_ID_C89 = 0xc89,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색결과[%d]
*/
MSG_ID_C8A = 0xc8a,
-/*20171018 to 20180627
+/*20171018 to 20180711
길안내 표시를 위한 ì•„ì´ì½˜ 설정
*/
MSG_ID_C8B = 0xc8b,
-/*20171018 to 20180627
+/*20171018 to 20180711
길 ì°¾ê¸°ì— zeny 허용
*/
MSG_ID_C8C = 0xc8c,
-/*20171018 to 20180627
+/*20171018 to 20180711
내비게ì´ì…˜ ë„킹 í•´ì œ
*/
MSG_ID_C8D = 0xc8d,
-/*20171018 to 20180627
+/*20171018 to 20180711
활성화 하지 ì•Šì€ ê³„ì •ìž…ë‹ˆë‹¤.
*/
MSG_ID_C8E = 0xc8e,
-/*20171018 to 20180627
+/*20171018 to 20180711
í´ë¦­í•œ 위치가 ì±„íŒ…ì°½ì— ê³µìœ  ë©ë‹ˆë‹¤.
*/
MSG_ID_C8F = 0xc8f,
-/*20171018 to 20180627
+/*20171018 to 20180711
4. Service í•­ëª©ì„ ì„ íƒí•˜ë©´ Zeny&비공정 ì´ìš©ì„ 고려하여 안내 한다.
*/
MSG_ID_C90 = 0xc90,
-/*20171018 to 20180627
+/*20171018 to 20180711
5. [<-] 버튼 : 길안내 모드 <-> 검색 모드를 바꾸거나
*/
MSG_ID_C91 = 0xc91,
-/*20171018 to 20180627
+/*20171018 to 20180711
공유하기 모드 -> 서치 모드로 ëŒì•„갈때 사용 ëœë‹¤.
*/
MSG_ID_C92 = 0xc92,
-/*20171018 to 20180627
+/*20171018 to 20180711
경험치 %lld ì–»ìŒ
*/
MSG_ID_C93 = 0xc93,
-/*20171018 to 20180627
+/*20171018 to 20180711
'%lld'ì˜ ê²½í—˜ì¹˜ë¥¼
*/
MSG_ID_C94 = 0xc94,
-/*20171018 to 20180627
+/*20171018 to 20180711
^b- ë…¸ì  ìˆ˜ìˆ˜ë£Œ 안내^/b
ë…¸ì  ì„¤ì • ê°€ê²©ì— ë”°ë¼ ì¼ì • ë¹„ìœ¨ì˜ ìˆ˜ìˆ˜ë£Œê°€ 부가ë©ë‹ˆë‹¤.
@@ -15965,1063 +15965,1063 @@ unknown error found.
= 수수료율 : ^1567fe5%^000000
*/
MSG_ID_C95 = 0xc95,
-/*20171018 to 20180627
+/*20171018 to 20180711
실거래가 :
*/
MSG_ID_C96 = 0xc96,
-/*20171018 to 20180627
+/*20171018 to 20180711
※ ì•„ì´í…œ íŒë§¤ì‹œ, ì‹¤ê±°ëž˜ê°€ë§Œí¼ ì œë‹ˆë¥¼ íšë“합니다.
*/
MSG_ID_C97 = 0xc97,
-/*20171018 to 20180627
+/*20171018 to 20180711
※ ì•„ì´í…œ 구매시, ì‹¤ê±°ëž˜ê°€ë§Œí¼ ì œë‹ˆê°€ ì°¨ê°ë©ë‹ˆë‹¤.
*/
MSG_ID_C98 = 0xc98,
-/*20171018 to 20180627
+/*20171018 to 20180711
채팅방 개설
*/
MSG_ID_C99 = 0xc99,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 ìºë¦­í„°ëŠ” íŒŒí‹°ê°€ìž…ì´ ê°€ëŠ¥í•˜ì§€ ì•Šì€ ë ˆë²¨ìž…ë‹ˆë‹¤.
*/
MSG_ID_C9A = 0xc9a,
-/*20171018 to 20180627
+/*20171018 to 20180711
'%lld'ì˜ ìž¡ê²½í—˜ì¹˜ë¥¼
*/
MSG_ID_C9B = 0xc9b,
-/*20171018 to 20180627
+/*20171018 to 20180711
잡경험치 %lld ì–»ìŒ
*/
MSG_ID_C9C = 0xc9c,
-/*20171018 to 20180627
+/*20171018 to 20180711
현재위치(대로)ì—는 ë…¸ì ì„ 개설할 수 없습니다.
*/
MSG_ID_C9D = 0xc9d,
-/*20171018 to 20180627
+/*20171018 to 20180711
초 후 가능합니다.
*/
MSG_ID_C9E = 0xc9e,
-/*20171018 to 20180627
+/*20171018 to 20180711
파티ì›
*/
MSG_ID_C9F = 0xc9f,
-/*20171018 to 20180627
+/*20171018 to 20180711
SNS 전송실패(%d)
*/
MSG_ID_CA0 = 0xca0,
-/*20171018 to 20180627
+/*20171018 to 20180711
SNS 서버 연결실패
*/
MSG_ID_CA1 = 0xca1,
-/*20171018 to 20180627
+/*20171018 to 20180711
SNS ë¡œê·¸ì¸ í›„ 사용 가능합니다.
*/
MSG_ID_CA2 = 0xca2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì ‘ì† í•  수 있는 주소가 존재하지 않습니다.
*/
MSG_ID_CA3 = 0xca3,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¯¸ë‹ˆíŒŒí‹°ì°½ì´ ê²¹ì³ì ¸ 있어 사용하실 수 없습니다.
*/
MSG_ID_CA4 = 0xca4,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë‚˜ì˜ íŒë§¤ë…¸ì 
*/
MSG_ID_CA5 = 0xca5,
-/*20171018 to 20180627
+/*20171018 to 20180711
BOX
*/
MSG_ID_CA6 = 0xca6,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë°•ìŠ¤
*/
MSG_ID_CA7 = 0xca7,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŠ¸ìœ—ì„ ì„±ê³µí–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CA8 = 0xca8,
-/*20171018 to 20180627
+/*20171018 to 20180711
다시하기
*/
MSG_ID_CA9 = 0xca9,
-/*20171018 to 20180627
+/*20171018 to 20180711
다시하기가 비활성화ë˜ì—ˆìŠµë‹ˆë‹¤. 제련 재료를 다시 ì„ íƒí•´ì£¼ì„¸ìš”.
*/
MSG_ID_CAA = 0xcaa,
-/*20171018 to 20180627
+/*20171018 to 20180711
제련ì„ì´ ë¶€ì¡±í•˜ì—¬ 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAB = 0xcab,
-/*20171018 to 20180627
+/*20171018 to 20180711
제니가 부족하여 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAC = 0xcac,
-/*20171018 to 20180627
+/*20171018 to 20180711
대장장ì´ì˜ ì¶•ë³µì´ ë¶€ì¡±í•˜ì—¬ 다시하기가 비활성화 ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAD = 0xcad,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì´ 파괴ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAE = 0xcae,
-/*20171018 to 20180627
+/*20171018 to 20180711
모든 스테ì´í„°ìŠ¤ê°€ ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CAF = 0xcaf,
-/*20171018 to 20180627
+/*20171018 to 20180711
모든 스테ì´í„°ìŠ¤ ê°ì†Œ 효과가 í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_CB0 = 0xcb0,
-/*20171018 to 20180627
+/*20171018 to 20180711
OTP 비밀번호는 8ìžë¦¬ 입니다.
*/
MSG_ID_CB1 = 0xcb1,
-/*20171018 to 20180627
+/*20171018 to 20180711
통합계정
*/
MSG_ID_CB2 = 0xcb2,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¼ê·¸ë‚˜ë¡œí¬
*/
MSG_ID_CB3 = 0xcb3,
-/*20171018 to 20180627
+/*20171018 to 20180711
서비스 ì ê²€ 중입니다.
*/
MSG_ID_CB4 = 0xcb4,
-/*20171018 to 20180627
+/*20171018 to 20180711
검색어를 입력해주세요
*/
MSG_ID_CB5 = 0xcb5,
-/*20171018 to 20180627
+/*20171018 to 20180711
MOTP
*/
MSG_ID_CB6 = 0xcb6,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ì¦ë²ˆí˜¸
Identification number.
*/
MSG_ID_CB7 = 0xcb7,
-/*20171018 to 20180627
+/*20171018 to 20180711
휴대í°ì— ë‹¤ìš´ë°›ì€ GNJOY MOTP를 실행하여 ì¸ì¦ë²ˆí˜¸ë¥¼ 입력해 주세요.
*/
MSG_ID_CB8 = 0xcb8,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ìž¥ì„ ìœ„ìž„í•  파티ì›ì´ 존재하지 않습니다. 파티를 해산하시겠습니까?
*/
MSG_ID_CB9 = 0xcb9,
-/*20171018 to 20180627
+/*20171018 to 20180711
- 만18세ì´ìƒ
*/
MSG_ID_CBA = 0xcba,
-/*20171018 to 20180627
+/*20171018 to 20180711
- 유료서버
*/
MSG_ID_CBB = 0xcbb,
-/*20171018 to 20180627
+/*20171018 to 20180711
- 무료서버
*/
MSG_ID_CBC = 0xcbc,
-/*20171018 to 20180627
+/*20171018 to 20180711
쾌ì 
*/
MSG_ID_CBD = 0xcbd,
-/*20171018 to 20180627
+/*20171018 to 20180711
보통
Normal
*/
MSG_ID_CBE = 0xcbe,
-/*20171018 to 20180627
+/*20171018 to 20180711
혼잡
*/
MSG_ID_CBF = 0xcbf,
-/*20171018 to 20180627
+/*20171018 to 20180711
í¬í™”
*/
MSG_ID_CC0 = 0xcc0,
-/*20171018 to 20180627
+/*20171018 to 20180711
map
*/
MSG_ID_CC1 = 0xcc1,
-/*20171018 to 20180627
+/*20171018 to 20180711
월드창고는 ì¸ë²¤í† ë¦¬ ì•„ì´í…œë§Œ 입출고 í•  수 있습니다.
*/
MSG_ID_CC2 = 0xcc2,
-/*20171018 to 20180627
+/*20171018 to 20180711
월드창고ì—는 íŽ«ì•Œì„ ìž…ê³ í•  수 없습니다.
*/
MSG_ID_CC3 = 0xcc3,
-/*20171018 to 20180627
+/*20171018 to 20180711
월드창고ì—는 제작아ì´í…œì„ ìž…ê³ í•  수 없습니다.
*/
MSG_ID_CC4 = 0xcc4,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì—서는 출고 í•  수 없는 ì•„ì´í…œìž…니다.
*/
MSG_ID_CC5 = 0xcc5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë˜ì „ 파괴
*/
MSG_ID_CC6 = 0xcc6,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s] ë‹˜ì´ ì œë ¨ì„ ì„±ê³µí•˜ì—¬, [+%d %s] ì•„ì´í…œì„ íšë“하였습니다.
*/
MSG_ID_CC7 = 0xcc7,
-/*20171018 to 20180627
+/*20171018 to 20180711
[%s] ë‹˜ì´ [+%d %s] ì•„ì´í…œì˜ ì œë ¨ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
*/
MSG_ID_CC8 = 0xcc8,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒŒí‹°ìž¥ì„ ìœ„ìž„í•œ ì´í›„ì— íƒˆí‡´í•  수 있습니다.
*/
MSG_ID_CC9 = 0xcc9,
-/*20171018 to 20180627
+/*20171018 to 20180711
오름
*/
MSG_ID_CCA = 0xcca,
-/*20171018 to 20180627
+/*20171018 to 20180711
내림
*/
MSG_ID_CCB = 0xccb,
-/*20171018 to 20180627
+/*20171018 to 20180711
기본
*/
MSG_ID_CCC = 0xccc,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë³€ì¡°ëœ íŒŒì¼ì´ 발견ë˜ì—ˆìŠµë‹ˆë‹¤. ê²Œìž„ì„ ë‹¤ì‹œ 실행시켜주세요.
*/
MSG_ID_CCD = 0xccd,
-/*20171018 to 20180627
+/*20171018 to 20180711
%s ì€(는) ì´ë§µì—ì„œ ì´ë™ì´ ì œí•œëœ ì•„ì´í…œìž…니다.
*/
MSG_ID_CCE = 0xcce,
-/*20171018 to 20180627
+/*20171018 to 20180711
스스로
먹ì´ë¨¹ê¸°
*/
MSG_ID_CCF = 0xccf,
-/*20171018 to 20180627
+/*20171018 to 20180711
ë¡œë±ìŠ¤ ìž‘ì„±ì°½ì´ ì—´ë ¤ìžˆëŠ” ë™ì•ˆ 호문í´ë£¨ìŠ¤ê°€ 먹ì´ë¥¼ 먹지 못합니다.
*/
MSG_ID_CD0 = 0xcd0,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ê°€ 먹ì´ë¥¼ 먹었습니다. '%s' 잔여량 %dê°œ
*/
MSG_ID_CD1 = 0xcd1,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ 스스로 ë¨¹ì´ ë¨¹ê¸° 활성화 On
*/
MSG_ID_CD2 = 0xcd2,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ 스스로 ë¨¹ì´ ë¨¹ê¸° 활성화 Off
*/
MSG_ID_CD3 = 0xcd3,
-/*20171018 to 20180627
+/*20171018 to 20180711
호문í´ë£¨ìŠ¤ëŠ” 주ì¸ì´ íšë“하는 경험치ì˜
10%만í¼ì„ ìžì‹ ì˜ 경험치로 분배 받습니다.
*/
MSG_ID_CD4 = 0xcd4,
-/*20171018 to 20180627
+/*20171018 to 20180711
확률 : %d%%
*/
MSG_ID_CD5 = 0xcd5,
-/*20171018 to 20180627
+/*20171018 to 20180711
해당 대ìƒì€ í˜¸ë¬¸ì˜ ê³µê²©ëŒ€ìƒì´ 아닙니다. 'Alt + ìš°í´ë¦­'ì„ í†µí•´ 호문í´ë£¨ìŠ¤ì˜ 공격대ìƒì„ 지정해주세요.
*/
MSG_ID_CD6 = 0xcd6,
-/*20171018 to 20180627
+/*20171018 to 20180711
í˜¸ë¬¸ì˜ ê³µê²©ëŒ€ìƒì´ 존재하지 않습니다. 'Alt + ìš°í´ë¦­'ì„ í†µí•´ 호문í´ë£¨ìŠ¤ì˜ 공격대ìƒì„ 지정해주세요.
*/
MSG_ID_CD7 = 0xcd7,
-/*20171018 to 20180627
+/*20171018 to 20180711
íŒë§¤ 리스트
*/
MSG_ID_CD8 = 0xcd8,
-/*20171018 to 20180627
+/*20171018 to 20180711
구입 리스트
*/
MSG_ID_CD9 = 0xcd9,
-/*20171018 to 20180627
+/*20171018 to 20180711
신규
New
*/
MSG_ID_CDA = 0xcda,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì¸ê¸°
Headgears
*/
MSG_ID_CDB = 0xcdb,
-/*20171018 to 20180627
+/*20171018 to 20180711
한정
Limited
*/
MSG_ID_CDC = 0xcdc,
-/*20171018 to 20180627
+/*20171018 to 20180711
임대장비
Rental Items
*/
MSG_ID_CDD = 0xcdd,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì˜êµ¬ìž¥ë¹„
Equipments
*/
MSG_ID_CDE = 0xcde,
-/*20171018 to 20180627
+/*20171018 to 20180711
버프
Scrolls
*/
MSG_ID_CDF = 0xcdf,
-/*20171018 to 20180627
+/*20171018 to 20180711
회복
Consumables
*/
MSG_ID_CE0 = 0xce0,
-/*20171018 to 20180627
+/*20171018 to 20180711
기타
Other
*/
MSG_ID_CE1 = 0xce1,
-/*20171018 to 20180627
+/*20171018 to 20180711
특가
Special
*/
MSG_ID_CE2 = 0xce2,
-/*20171018 to 20180627
+/*20171018 to 20180711
충전하기
*/
MSG_ID_CE3 = 0xce3,
-/*20171018 to 20180627
+/*20171018 to 20180711
구입하기
*/
MSG_ID_CE4 = 0xce4,
/*20171018 to 20171206
https://payment.gnjoy.com/bill/login.grv
-20171206 to 20180627
+20171206 to 20180711
http://member.gnjoy.com/user/pay/chargelist.asp
*/
MSG_ID_CE5 = 0xce5,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œ 검색
*/
MSG_ID_CE6 = 0xce6,
-/*20171018 to 20180627
+/*20171018 to 20180711
무료ìºì‹œ
*/
MSG_ID_CE7 = 0xce7,
-/*20171018 to 20180627
+/*20171018 to 20180711
무료ìºì‹œ 사용
*/
MSG_ID_CE8 = 0xce8,
-/*20171018 to 20180627
+/*20171018 to 20180711
소지ìºì‹œ
*/
MSG_ID_CE9 = 0xce9,
-/*20171018 to 20180627
+/*20171018 to 20180711
수량갱신
*/
MSG_ID_CEA = 0xcea,
-/*20171018 to 20180627
+/*20171018 to 20180711
성제(여)
*/
MSG_ID_CEB = 0xceb,
-/*20171018 to 20180627
+/*20171018 to 20180711
소울리í¼(ì—¬)
*/
MSG_ID_CEC = 0xcec,
-/*20171018 to 20180627
+/*20171018 to 20180711
성제(남)
*/
MSG_ID_CED = 0xced,
-/*20171018 to 20180627
+/*20171018 to 20180711
소울리í¼(남)
*/
MSG_ID_CEE = 0xcee,
-/*20171018 to 20180627
+/*20171018 to 20180711
무게가 %d í¼ì„¼íŠ¸ ì´ìƒì¼ë•ŒëŠ” HP SPê°€ ìžì—°ì ìœ¼ë¡œ íšŒë³µì´ ë˜ì§€ 않습니다.
*/
MSG_ID_CEF = 0xcef,
-/*20171018 to 20180627
+/*20171018 to 20180711
í•œ ë²ˆì— êµ¬ìž… 가능한 ì•„ì´í…œì˜ 가짓수는 8개입니다.
*/
MSG_ID_CF0 = 0xcf0,
-/*20171018 to 20180627
+/*20171018 to 20180711
http://gift.zhaouc.com/#/index
http://gift.zhaouc.com/
*/
MSG_ID_CF1 = 0xcf1,
-/*20171018 to 20180627
+/*20171018 to 20180711
UNKNOWN ERROR:%d
*/
MSG_ID_CF2 = 0xcf2,
-/*20171018 to 20180627
+/*20171018 to 20180711
NOT USER
*/
MSG_ID_CF3 = 0xcf3,
-/*20171018 to 20180627
+/*20171018 to 20180711
THIS ACCOUNT ID IS BLOCKED
*/
MSG_ID_CF4 = 0xcf4,
-/*20171018 to 20180627
+/*20171018 to 20180711
COUNTRY REJECT (OR NOT AVALIABLE USER )
*/
MSG_ID_CF5 = 0xcf5,
-/*20171018 to 20180627
+/*20171018 to 20180711
NOT MATCH PASSWORD
*/
MSG_ID_CF6 = 0xcf6,
-/*20171018 to 20180627
+/*20171018 to 20180711
NOT EMAIL CERT
*/
MSG_ID_CF7 = 0xcf7,
-/*20171018 to 20180627
+/*20171018 to 20180711
PAYPAL BLOCK
*/
MSG_ID_CF8 = 0xcf8,
-/*20171018 to 20180627
+/*20171018 to 20180711
COUNTRY REJECT
*/
MSG_ID_CF9 = 0xcf9,
-/*20171018 to 20180627
+/*20171018 to 20180711
PAYPAL BLOCK
*/
MSG_ID_CFA = 0xcfa,
-/*20171018 to 20180627
+/*20171018 to 20180711
WEB BLOCK
*/
MSG_ID_CFB = 0xcfb,
-/*20171018 to 20180627
+/*20171018 to 20180711
AGE LIMIT USER
*/
MSG_ID_CFC = 0xcfc,
-/*20171018 to 20180627
+/*20171018 to 20180711
PASSWORD HAS NOT BEEN CHANGED FOR MORE THAN 90DAYS
*/
MSG_ID_CFD = 0xcfd,
-/*20171018 to 20180627
+/*20171018 to 20180711
INPUT DATA ERROR
*/
MSG_ID_CFE = 0xcfe,
-/*20171018 to 20180627
+/*20171018 to 20180711
ERROR DATABASE
*/
MSG_ID_CFF = 0xcff,
-/*20171018 to 20180627
+/*20171018 to 20180711
ERROR SYSTEM
*/
MSG_ID_D00 = 0xd00,
/*20171018 to 20171027
%s 지불
-20171030 to 20180627
+20171030 to 20180711
%s 소모
*/
MSG_ID_D01 = 0xd01,
-/*20171018 to 20180627
+/*20171018 to 20180711
비용지불
*/
MSG_ID_D02 = 0xd02,
-/*20171018 to 20180627
+/*20171018 to 20180711
출발 가능한 ë§µì´ ì•„ë‹™ë‹ˆë‹¤.
*/
MSG_ID_D03 = 0xd03,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì´ë™ 불가능한 맵입니다
*/
MSG_ID_D04 = 0xd04,
-/*20171018 to 20180627
+/*20171018 to 20180711
ì•„ì´í…œì´ 부족합니다.
*/
MSG_ID_D05 = 0xd05,
-/*20171018 to 20180627
+/*20171018 to 20180711
줄 바꿈 ì—†ì´ í•œ 줄로 입력해주세요.
*/
MSG_ID_D06 = 0xd06,
-/*20171018 to 20180627
+/*20171018 to 20180711
불량 단어가 í¬í•¨ëœ ì´ë¦„ì€ ë“±ë¡í•  수 없습니다.
*/
MSG_ID_D07 = 0xd07,
-/*20171018 to 20180627
+/*20171018 to 20180711
íšŒì› ê°€ìž…ì„ ìœ„í•´ ê³µì‹ í™ˆíŽ˜ì´ì§€ë¡œ ì´ë™ë©ë‹ˆë‹¤.
*/
MSG_ID_D08 = 0xd08,
#if PACKETVER >= 20171019
-/*20171019 to 20180627
+/*20171019 to 20180711
TokenAgency 서버 연결 실패
*/
MSG_ID_D09 = 0xd09,
#endif
#if PACKETVER >= 20171023
-/*20171023 to 20180627
+/*20171023 to 20180711
과금정보
*/
MSG_ID_D0A = 0xd0a,
-/*20171023 to 20180627
+/*20171023 to 20180711
삭제예약
*/
MSG_ID_D0B = 0xd0b,
-/*20171023 to 20180627
+/*20171023 to 20180711
예약취소
*/
MSG_ID_D0C = 0xd0c,
-/*20171023 to 20180627
+/*20171023 to 20180711
게임시작
*/
MSG_ID_D0D = 0xd0d,
-/*20171023 to 20180627
+/*20171023 to 20180711
삭제
*/
MSG_ID_D0E = 0xd0e,
-/*20171023 to 20180627
+/*20171023 to 20180711
Character List
*/
MSG_ID_D0F = 0xd0f,
-/*20171023 to 20180627
+/*20171023 to 20180711
공지
Notice
*/
MSG_ID_D10 = 0xd10,
-/*20171023 to 20180627
+/*20171023 to 20180711
ìƒì„±
*/
MSG_ID_D11 = 0xd11,
-/*20171023 to 20180627
+/*20171023 to 20180711
Hair Style
*/
MSG_ID_D12 = 0xd12,
-/*20171023 to 20180627
+/*20171023 to 20180711
Hair Color
*/
MSG_ID_D13 = 0xd13,
-/*20171023 to 20180627
+/*20171023 to 20180711
중복확ì¸
*/
MSG_ID_D14 = 0xd14,
-/*20171023 to 20180627
+/*20171023 to 20180711
%d시 %d분 %d초
*/
MSG_ID_D15 = 0xd15,
-/*20171023 to 20180627
+/*20171023 to 20180711
MOTP ìž…ë ¥ ì‹œê°„ì´ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤. 처ìŒë¶€í„° 다시 로그ì¸í•´ì£¼ì‹­ì‹œì˜¤.
*/
MSG_ID_D16 = 0xd16,
-/*20171023 to 20180627
+/*20171023 to 20180711
뒤로가기
*/
MSG_ID_D17 = 0xd17,
#endif
#if PACKETVER >= 20171024
-/*20171024 to 20180627
+/*20171024 to 20180711
ì•„ì´í…œì„ 사용할 수 없습니다.
*/
MSG_ID_D18 = 0xd18,
-/*20171024 to 20180627
+/*20171024 to 20180711
ë™ì¼í•œ 맵으로 ì´ë™í•  수 없습니다.
*/
MSG_ID_D19 = 0xd19,
-/*20171024 to 20180627
+/*20171024 to 20180711
사ë§ì‹œ ì´ë™ì´ 불가능합니다.
*/
MSG_ID_D1A = 0xd1a,
#endif
#if PACKETVER >= 20171030
-/*20171030 to 20180627
+/*20171030 to 20180711
ìºë¦­í„° ìƒì„±
*/
MSG_ID_D1B = 0xd1b,
#endif
#if PACKETVER >= 20171031
-/*20171031 to 20180627
+/*20171031 to 20180711
모험가 중개소 등ë¡
*/
MSG_ID_D1C = 0xd1c,
-/*20171031 to 20180627
+/*20171031 to 20180711
모집 중단
*/
MSG_ID_D1D = 0xd1d,
-/*20171031 to 20180627
+/*20171031 to 20180711
모험가 중개소 설정
*/
MSG_ID_D1E = 0xd1e,
-/*20171031 to 20180627
+/*20171031 to 20180711
전 지역
*/
MSG_ID_D1F = 0xd1f,
-/*20171031 to 20180627
+/*20171031 to 20180711
ì§ì ‘기재
*/
MSG_ID_D20 = 0xd20,
-/*20171031 to 20180627
+/*20171031 to 20180711
검사계열
*/
MSG_ID_D21 = 0xd21,
-/*20171031 to 20180627
+/*20171031 to 20180711
법사계열
*/
MSG_ID_D22 = 0xd22,
-/*20171031 to 20180627
+/*20171031 to 20180711
ê¶ìˆ˜ê³„ì—´
*/
MSG_ID_D23 = 0xd23,
-/*20171031 to 20180627
+/*20171031 to 20180711
복사계열
*/
MSG_ID_D24 = 0xd24,
-/*20171031 to 20180627
+/*20171031 to 20180711
ìƒì¸ê³„ì—´
*/
MSG_ID_D25 = 0xd25,
-/*20171031 to 20180627
+/*20171031 to 20180711
ë„둑계열
*/
MSG_ID_D26 = 0xd26,
-/*20171031 to 20180627
+/*20171031 to 20180711
태권계열
*/
MSG_ID_D27 = 0xd27,
-/*20171031 to 20180627
+/*20171031 to 20180711
ë‹Œìžê³„ì—´
*/
MSG_ID_D28 = 0xd28,
-/*20171031 to 20180627
+/*20171031 to 20180711
건슬ë§ê±°ê³„ì—´
*/
MSG_ID_D29 = 0xd29,
-/*20171031 to 20180627
+/*20171031 to 20180711
ë„람족계열
*/
MSG_ID_D2A = 0xd2a,
-/*20171031 to 20180627
+/*20171031 to 20180711
지역명
*/
MSG_ID_D2B = 0xd2b,
-/*20171031 to 20180627
+/*20171031 to 20180711
지역명 검색
*/
MSG_ID_D2C = 0xd2c,
-/*20171031 to 20180627
+/*20171031 to 20180711
가입 요청하기
*/
MSG_ID_D2D = 0xd2d,
-/*20171031 to 20180627
+/*20171031 to 20180711
신고하기
*/
MSG_ID_D2E = 0xd2e,
-/*20171031 to 20180627
+/*20171031 to 20180711
파티 모집 중단
*/
MSG_ID_D2F = 0xd2f,
-/*20171031 to 20180627
+/*20171031 to 20180711
ì§€ì—­ëª…ì„ ìž…ë ¥í•´ì£¼ì„¸ìš”.
*/
MSG_ID_D30 = 0xd30,
-/*20171031 to 20180627
+/*20171031 to 20180711
지역
*/
MSG_ID_D31 = 0xd31,
-/*20171031 to 20180627
+/*20171031 to 20180711
ì „ ì§ì—…
*/
MSG_ID_D32 = 0xd32,
#endif
#if PACKETVER >= 20171109
-/*20171109 to 20180627
+/*20171109 to 20180711
로그ì¸
*/
MSG_ID_D33 = 0xd33,
-/*20171109 to 20180627
+/*20171109 to 20180711
계정
*/
MSG_ID_D34 = 0xd34,
-/*20171109 to 20180627
+/*20171109 to 20180711
종료
Exit
*/
MSG_ID_D35 = 0xd35,
-/*20171109 to 20180627
+/*20171109 to 20180711
ì‹ ì²­
*/
MSG_ID_D36 = 0xd36,
-/*20171109 to 20180627
+/*20171109 to 20180711
ì ‘ì†
*/
MSG_ID_D37 = 0xd37,
-/*20171109 to 20180627
+/*20171109 to 20180711
확ì¸
*/
MSG_ID_D38 = 0xd38,
-/*20171109 to 20180627
+/*20171109 to 20180711
휴대í°ì— ë‹¤ìš´ë°›ì€ GNJOY MOTP를
*/
MSG_ID_D39 = 0xd39,
-/*20171109 to 20180627
+/*20171109 to 20180711
실행하여 ì¸ì¦ë²ˆí˜¸ë¥¼ 입력해 주세요.
*/
MSG_ID_D3A = 0xd3a,
-/*20171109 to 20180627
+/*20171109 to 20180711
NPCê°€ 있는 ë§µì˜ ëžœë¤ ì¢Œí‘œë¡œ ì´ë™ ë©ë‹ˆë‹¤.
*/
MSG_ID_D3B = 0xd3b,
-/*20171109 to 20180627
+/*20171109 to 20180711
태권
*/
MSG_ID_D3C = 0xd3c,
/*20171109 to 20171117
ë‹˜ì´ ì°¨ë‹¨ ìƒíƒœë¡œ 설정ë˜ì—ˆìŠµë‹ˆë‹¤.
-20171121 to 20180627
+20171121 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ìƒíƒœ
*/
MSG_ID_D3D = 0xd3d,
/*20171109 to 20171117
ë‹˜ì„ ì°¨ë‹¨ ìƒíƒœë¡œ ì„¤ì •í•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
-20171121 to 20180627
+20171121 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ 요청 실패
*/
MSG_ID_D3E = 0xd3e,
/*20171109 to 20171117
ë‹˜ì„ ì°¨ë‹¨ ìƒíƒœë¡œ ì„¤ì •í•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.(ì¸ì› 초과)
-20171121 to 20180627
+20171121 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ 요청실패 (ì¸ì›ì´ˆê³¼)
*/
MSG_ID_D3F = 0xd3f,
/*20171109 to 20171117
ë‹˜ì´ ì°¨ë‹¨ í•´ì œ ë˜ì—ˆìŠµë‹ˆë‹¤.
-20171121 to 20180627
+20171121 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ìƒíƒœ
*/
MSG_ID_D40 = 0xd40,
/*20171109 to 20171117
ë‹˜ì„ ì°¨ë‹¨ í•´ì œí•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.
-20171121 to 20180627
+20171121 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ 요청실패
*/
MSG_ID_D41 = 0xd41,
/*20171109 to 20171117
ë‹˜ì„ ì°¨ë‹¨ í•´ì œí•˜ëŠ”ë° ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.(ì¸ì› 초과)
-20171121 to 20180627
+20171121 to 20180711
ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ 요청실패 (ì¸ì›ì´ˆê³¼)
*/
MSG_ID_D42 = 0xd42,
-/*20171109 to 20180627
+/*20171109 to 20180711
차단 리스트가 없습니다
*/
MSG_ID_D43 = 0xd43,
-/*20171109 to 20180627
+/*20171109 to 20180711
-차단 리스트-
*/
MSG_ID_D44 = 0xd44,
#endif
#if PACKETVER >= 20171113
-/*20171113 to 20180627
+/*20171113 to 20180711
진행중
Act
*/
MSG_ID_D45 = 0xd45,
-/*20171113 to 20180627
+/*20171113 to 20180711
추천
Rec
*/
MSG_ID_D46 = 0xd46,
-/*20171113 to 20180627
+/*20171113 to 20180711
보류중
Pen
*/
MSG_ID_D47 = 0xd47,
-/*20171113 to 20180627
+/*20171113 to 20180711
QUEST
*/
MSG_ID_D48 = 0xd48,
-/*20171113 to 20180627
+/*20171113 to 20180711
ë‚´ìš©
For
*/
MSG_ID_D49 = 0xd49,
-/*20171113 to 20180627
+/*20171113 to 20180711
몬스터
*/
MSG_ID_D4A = 0xd4a,
-/*20171113 to 20180627
+/*20171113 to 20180711
ë³´ìƒ
*/
MSG_ID_D4B = 0xd4b,
-/*20171113 to 20180627
+/*20171113 to 20180711
EXP
*/
MSG_ID_D4C = 0xd4c,
-/*20171113 to 20180627
+/*20171113 to 20180711
JEXP
*/
MSG_ID_D4D = 0xd4d,
-/*20171113 to 20180627
+/*20171113 to 20180711
ì•„ì´í…œ
Item
*/
MSG_ID_D4E = 0xd4e,
-/*20171113 to 20180627
+/*20171113 to 20180711
진행/보류
*/
MSG_ID_D4F = 0xd4f,
-/*20171113 to 20180627
+/*20171113 to 20180711
하단으로 ì´ë™
*/
MSG_ID_D50 = 0xd50,
-/*20171113 to 20180627
+/*20171113 to 20180711
간편 í€˜ìŠ¤íŠ¸ì°½ì— í‘œì‹œ
*/
MSG_ID_D51 = 0xd51,
#endif
#if PACKETVER >= 20171115
-/*20171115 to 20180627
+/*20171115 to 20180711
입력시간
*/
MSG_ID_D52 = 0xd52,
-/*20171115 to 20180627
+/*20171115 to 20180711
ì•„ì´ë”” 저장
*/
MSG_ID_D53 = 0xd53,
-/*20171115 to 20180627
+/*20171115 to 20180711
비밀번호
Password
*/
MSG_ID_D54 = 0xd54,
-/*20171115 to 20180627
+/*20171115 to 20180711
ì•„ì´ë””
*/
MSG_ID_D55 = 0xd55,
-/*20171115 to 20180627
+/*20171115 to 20180711
회ì›ê°€ìž…
*/
MSG_ID_D56 = 0xd56,
-/*20171115 to 20180627
+/*20171115 to 20180711
노비스계열
*/
MSG_ID_D57 = 0xd57,
-/*20171115 to 20180627
+/*20171115 to 20180711
슈í¼ë…¸ë¹„스계열
*/
MSG_ID_D58 = 0xd58,
-/*20171115 to 20180627
+/*20171115 to 20180711
모험가 중개소 등ë¡ì— 실패했습니다.
*/
MSG_ID_D59 = 0xd59,
-/*20171115 to 20180627
+/*20171115 to 20180711
모험가 ì¤‘ê°œì†Œì— ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D5A = 0xd5a,
/*20171115 to 20180321
ì§ì—…ì„ í•œ ê°œ ì´ìƒ ì„ íƒí•´ì£¼ì„¸ìš”.
-20180328 to 20180627
+20180328 to 20180711
ëª¨ì§‘ì„ í¬ë§í•˜ëŠ” 파티ì›ì˜ ì§ì—…ì„ í•œ ê°œ ì´ìƒ ì„ íƒí•´ 주세요.
*/
MSG_ID_D5B = 0xd5b,
-/*20171115 to 20180627
+/*20171115 to 20180711
ì§€ì—­ëª…ì„ ë‘ ê¸€ìž ì´ìƒ 입력해주세요.
*/
MSG_ID_D5C = 0xd5c,
-/*20171115 to 20180627
+/*20171115 to 20180711
%.1f%% (+ %s서버 %.1f%%)
*/
MSG_ID_D5D = 0xd5d,
#endif
#if PACKETVER >= 20171121
-/*20171121 to 20180627
+/*20171121 to 20180711
/ex (ìºë¦­í„°ì´ë¦„) or /차단 (ìºë¦­í„°ì´ë¦„) : 해당 ìºë¦­í„°ì— 대해 전체채팅 ë° ê·“ë§ ì°¨ë‹¨
*/
MSG_ID_D5E = 0xd5e,
-/*20171121 to 20180627
+/*20171121 to 20180711
/in (ìºë¦­í„°ì´ë¦„) or /í•´ì œ (ìºë¦­í„°ì´ë¦„) : 해당 ìºë¦­í„°ì— 대해 전체채팅 ë° ê·“ë§ í—ˆìš©
*/
MSG_ID_D5F = 0xd5f,
-/*20171121 to 20180627
+/*20171121 to 20180711
/ex or /차단 : 전체채팅 ë° ê·“ë§ ì°¨ë‹¨ ìºë¦­í„° 리스트
*/
MSG_ID_D60 = 0xd60,
-/*20171121 to 20180627
+/*20171121 to 20180711
/exall or /차단전부 : 모ë‘ì—게 전체채팅 ë° ê·“ë§ ì°¨ë‹¨
*/
MSG_ID_D61 = 0xd61,
-/*20171121 to 20180627
+/*20171121 to 20180711
/inall or /해제전부 : 모ë‘ì—게 전체채팅 ë° ê·“ë§ í—ˆìš©
*/
MSG_ID_D62 = 0xd62,
-/*20171121 to 20180627
+/*20171121 to 20180711
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ìƒíƒœ
*/
MSG_ID_D63 = 0xd63,
-/*20171121 to 20180627
+/*20171121 to 20180711
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê±°ë¶€ìš”ì²­ 실패
*/
MSG_ID_D64 = 0xd64,
-/*20171121 to 20180627
+/*20171121 to 20180711
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ìƒíƒœ
*/
MSG_ID_D65 = 0xd65,
-/*20171121 to 20180627
+/*20171121 to 20180711
모ë‘ì—게 전체채팅 ë° ê·“ë§ ê°€ëŠ¥ìš”ì²­ 실패
*/
MSG_ID_D66 = 0xd66,
#endif
#if PACKETVER >= 20171123
-/*20171123 to 20180627
+/*20171123 to 20180711
오프ë‹
*/
MSG_ID_D67 = 0xd67,
#endif
#if PACKETVER >= 20171127
-/*20171127 to 20180627
+/*20171127 to 20180711
ë¡œê·¸ì¸ í™”ë©´ìœ¼ë¡œ ëŒì•„가시겠습니까?
*/
MSG_ID_D68 = 0xd68,
#endif
#if PACKETVER >= 20171204
-/*20171204 to 20180627
+/*20171204 to 20180711
힘과 ê³µê²©ë ¥ì´ ê°•í•´ì¡ŒìŠµë‹ˆë‹¤.
*/
MSG_ID_D69 = 0xd69,
-/*20171204 to 20180627
+/*20171204 to 20180711
힘, 지능, ì†ìž¬ì£¼ ë° ëª…ì¤‘ë¥ ì´ ì¦ê°€í•˜ì˜€ìŠµë‹ˆë‹¤.
*/
MSG_ID_D6A = 0xd6a,
-/*20171204 to 20180627
+/*20171204 to 20180711
ë°©ì–´ë ¥ ë° HPê°€ ì¦ê°€ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D6B = 0xd6b,
-/*20171204 to 20180627
+/*20171204 to 20180711
젤스타
*/
MSG_ID_D6C = 0xd6c,
-/*20171204 to 20180627
+/*20171204 to 20180711
계정버프
*/
MSG_ID_D6D = 0xd6d,
-/*20171204 to 20180627
+/*20171204 to 20180711
정액서비스
*/
MSG_ID_D6E = 0xd6e,
#endif
#if PACKETVER >= 20171208
-/*20171208 to 20180627
+/*20171208 to 20180711
현재 ì ‘ì†ì´ 지연ë˜ê³  있습니다. 순차ì ìœ¼ë¡œ ì ‘ì†ì´ 가능하니 ìž ì‹œ 후 ìž¬ì ‘ì† ë¶€íƒë“œë¦½ë‹ˆë‹¤.
*/
MSG_ID_D6F = 0xd6f,
-/*20171208 to 20180627
+/*20171208 to 20180711
현재 ì ‘ì†ì´ 지연ë˜ê³  있으니 ìž ì‹œ 후 ìž¬ì ‘ì† ë¶€íƒë“œë¦½ë‹ˆë‹¤.
*/
MSG_ID_D70 = 0xd70,
#endif
#if PACKETVER >= 20171213
-/*20171213 to 20180627
+/*20171213 to 20180711
불량 단어가 í¬í•¨ëœ ì´ë¦„ì€ ê²€ìƒ‰í•  수 없습니다.
*/
MSG_ID_D71 = 0xd71,
-/*20171213 to 20180627
+/*20171213 to 20180711
파티 마스터가 ìš”ì²­ì„ ë°›ì„ ìˆ˜ 없는 ë§µì— ìžˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D72 = 0xd72,
-/*20171213 to 20180627
+/*20171213 to 20180711
파티를 ì°¾ì„ ìˆ˜ 없습니다.
*/
MSG_ID_D73 = 0xd73,
/*20171213 to 20180321
ë‹˜ì˜ íŒŒí‹°ìš”ì²­ìž…ë‹ˆë‹¤.
-20180328 to 20180627
+20180328 to 20180711
ë‹˜ì˜ íŒŒí‹° 가입 요청입니다.
*/
MSG_ID_D74 = 0xd74,
-/*20171213 to 20180627
+/*20171213 to 20180711
http://ro.gnjoy.com
*/
MSG_ID_D75 = 0xd75,
#endif
#if PACKETVER >= 20171214
-/*20171214 to 20180627
+/*20171214 to 20180711
â–²
*/
MSG_ID_D76 = 0xd76,
-/*20171214 to 20180627
+/*20171214 to 20180711
â–¼
*/
MSG_ID_D77 = 0xd77,
#endif
#if PACKETVER >= 20171227
-/*20171227 to 20180627
+/*20171227 to 20180711
ì´ë¯¸ 친구입니다
*/
MSG_ID_D78 = 0xd78,
-/*20171227 to 20180627
+/*20171227 to 20180711
ìƒëŒ€ë°©ì„ ì°¾ì„ ìˆ˜ 없습니다
*/
MSG_ID_D79 = 0xd79,
-/*20171227 to 20180627
+/*20171227 to 20180711
ì´ë¯¸ 다른 ìºë¦­í„°ê°€ 친구 ì‹ ì²­ 중입니다.
*/
MSG_ID_D7A = 0xd7a,
-/*20171227 to 20180627
+/*20171227 to 20180711
혼구슬 표시 ON
*/
MSG_ID_D7B = 0xd7b,
-/*20171227 to 20180627
+/*20171227 to 20180711
혼구슬 표시 OFF
*/
MSG_ID_D7C = 0xd7c,
#endif
#if PACKETVER >= 20180117
-/*20180117 to 20180627
+/*20180117 to 20180711
해당 ê³„ì •ì€ 2ì°¨ 비밀번호 오입력으로 ì¸í•´ 게임내 ì ‘ì†ì´ ì œí•œëœ ìƒíƒœìž…니다.
%02d시간 %02d분 í›„ì— ì ‘ì†ì œí•œì´ í•´ì œë˜ë©°, ì ‘ì†ì œí•œì˜ 해제는 홈페ì´ì§€ -> ê°œì¸ì •ë³´ë³€ê²½ -> 2ì°¨ 비밀번호 ì—ì„œ 본ì¸ì¸ì¦ 후 진행해주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_D7D = 0xd7d,
-/*20180117 to 20180627
+/*20180117 to 20180711
보안패스워드를 3회ì´ìƒ 틀리셨습니다. 계정 ë³´ì•ˆì„ ìœ„í•´ 24시간ë™ì•ˆ 게임내 ì ‘ì†ì´ 제한ë©ë‹ˆë‹¤.
ì ‘ì†ì œí•œì˜ 해제는 홈페ì´ì§€ -> ê°œì¸ì •ë³´ë³€ê²½ -> 2ì°¨ 비밀번호 ì—ì„œ 본ì¸ì¸ì¦ 후 진행해주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_D7E = 0xd7e,
-/*20180117 to 20180627
+/*20180117 to 20180711
ìš´ì˜ì§„
*/
MSG_ID_D7F = 0xd7f,
-/*20180117 to 20180627
+/*20180117 to 20180711
%dì¼ì°¨ ì¶œì„ ë³´ìƒì´ 지급ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D80 = 0xd80,
/*20180117 to 20180117
계정설정정보 ë°›ì•„ì˜¤ëŠ”ë° ì‹¤íŒ¨ 했습니다.( 재시ë„를 위해서는 재시작 해야 합니다. )
-20180131 to 20180627
+20180131 to 20180711
계정 설정 ë°ì´í„°ë¥¼ 불러오는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. ( 재시ë„를 위해서는 재시작 해야 합니다. )
*/
MSG_ID_D81 = 0xd81,
-/*20180117 to 20180627
+/*20180117 to 20180711
해당 ìŠ¤í‚¬ì€ íŒŒí‹° ìƒíƒœì—ì„œ 사용 가능합니다.
*/
MSG_ID_D82 = 0xd82,
#endif
#if PACKETVER >= 20180131
-/*20180131 to 20180627
+/*20180131 to 20180711
파티 ëª¨ì§‘ì„ ì¤‘ë‹¨í•˜ì˜€ìŠµë‹ˆë‹¤.
*/
MSG_ID_D83 = 0xd83,
-/*20180131 to 20180627
+/*20180131 to 20180711
길드 ìƒë‚© 경험치는 최대 %d%%까지 가능합니다.
*/
MSG_ID_D84 = 0xd84,
-/*20180131 to 20180627
+/*20180131 to 20180711
길드 ë ˆë²¨ì´ ìµœëŒ€ì—¬ì„œ ë” ì´ìƒ 경험치를 ìƒë‚©í•  수 없습니다.
*/
MSG_ID_D85 = 0xd85,
-/*20180131 to 20180627
+/*20180131 to 20180711
ê³„ì •ë³´ì•ˆì„ ìœ„í•˜ì—¬ MOTP미사용ìžëŠ” 홈페ì´ì§€ 로그ì¸ë§Œ 가능합니다.
홈페ì´ì§€ë¡œ 로그ì¸ì„ ì‹œë„해주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_D86 = 0xd86,
-/*20180131 to 20180627
+/*20180131 to 20180711
물리 공격력과 마법 ê³µê²©ë ¥ì´ í–¥ìƒë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D87 = 0xd87,
-/*20180131 to 20180627
+/*20180131 to 20180711
물리 공격력과 마법 ê³µê²©ë ¥ì´ ê°ì†Œë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D88 = 0xd88,
#endif
#if PACKETVER >= 20180207
-/*20180207 to 20180627
+/*20180207 to 20180711
%s 출ì„ì²´í¬ ë³´ìƒ
%s Attendance Check Reward
*/
@@ -17029,316 +17029,330 @@ http://ro.gnjoy.com
/*20180207 to 20180511
ì´ë²¤íŠ¸ 기간 : %02dì›” %02dì¼ ~ %2dì›” %2dì¼ 24:00까지
Event period : From %02d/%02d ~ Until %2d/%2d (Month/Day) 24:00
-20180523 to 20180627
+20180523 to 20180711
ì´ë²¤íŠ¸ 기간 : %02dì›” %02dì¼ ~ %02dì›” %02dì¼ 24:00까지
*/
MSG_ID_D8A = 0xd8a,
-/*20180207 to 20180627
+/*20180207 to 20180711
%dì¼ì°¨
%d Day
*/
MSG_ID_D8B = 0xd8b,
-/*20180207 to 20180627
+/*20180207 to 20180711
%dì¼ì°¨ 출ì„ì²´í¬
í´ë¦­í•´ì£¼ì„¸ìš”~!
%d Day attendance check
Please click~!
*/
MSG_ID_D8C = 0xd8c,
-/*20180207 to 20180627
+/*20180207 to 20180711
%dì¼ì°¨ ì¶œì„ ì„±ê³µ!
%d Day attendance success!
*/
MSG_ID_D8D = 0xd8d,
-/*20180207 to 20180627
+/*20180207 to 20180711
D-day
*/
MSG_ID_D8E = 0xd8e,
-/*20180207 to 20180627
+/*20180207 to 20180711
ì¼
Day
*/
MSG_ID_D8F = 0xd8f,
-/*20180207 to 20180627
+/*20180207 to 20180711
출ì„ì²´í¬ì— 실패하였습니다. 다시 실행해주세요.
Attendance Check failed. Please run again.
*/
MSG_ID_D90 = 0xd90,
-/*20180207 to 20180627
+/*20180207 to 20180711
출ì„ì²´í¬
Attendance Check
*/
MSG_ID_D91 = 0xd91,
-/*20180207 to 20180627
+/*20180207 to 20180711
현재 출ì„ì²´í¬ ì´ë²¤íŠ¸ ê¸°ê°„ì´ ì•„ë‹™ë‹ˆë‹¤
This is not the current attendance check event
*/
MSG_ATTENDANCE_UNAVAILABLE = 0xd92,
/*20180207 to 20180321
길드 ìƒë‚© 경험치가 maxì— ë„달하여, ë” ì´ìƒ 길드 경험치를 누ì í•  수 없습니다
-20180328 to 20180627
+20180328 to 20180711
길드 ìƒë‚© 경험치가 maxì— ë„달하여, ë” ì´ìƒ 길드 경험치를 누ì í•  수 없습니다.
*/
MSG_ID_D93 = 0xd93,
-/*20180207 to 20180627
+/*20180207 to 20180711
ê°œì¸ ìƒë‚© 경험치가 maxì— ë„달하여, ë” ì´ìƒ 길드 경험치를 누ì í•  수 없습니다.
*/
MSG_ID_D94 = 0xd94,
#endif
#if PACKETVER >= 20180213
-/*20180213 to 20180627
+/*20180213 to 20180711
메시지
*/
MSG_ID_D95 = 0xd95,
-/*20180213 to 20180627
+/*20180213 to 20180711
íŠ¸ìœ„í„°ì— ë©”ì„¸ì§€ ì „ì†¡ì„ ì‹¤íŒ¨ 했습니다.
*/
MSG_ID_D96 = 0xd96,
-/*20180213 to 20180627
+/*20180213 to 20180711
ì˜ë¬¸ 4ìž, 한글 2ìž ì´ìƒìœ¼ë¡œ 입력해야 합니다.
Enter 4 english words and 2 chinese words
*/
MSG_ID_D97 = 0xd97,
#endif
#if PACKETVER >= 20180314
-/*20180314 to 20180627
+/*20180314 to 20180711
ëª¬ìŠ¤í„°ì˜ í…Œì´ë°ì´ 불가능한 지역입니다.
*/
MSG_ID_D98 = 0xd98,
#endif
#if PACKETVER >= 20180328
-/*20180328 to 20180627
+/*20180328 to 20180711
순위를 가져오고 있습니다...
*/
MSG_ID_D99 = 0xd99,
-/*20180328 to 20180627
+/*20180328 to 20180711
해당 ìŠ¤í‚¬ì€ íŒŒí‹°ìž¥ì¼ë•Œë§Œ 사용 가능합니다.
*/
MSG_ID_D9A = 0xd9a,
-/*20180328 to 20180627
+/*20180328 to 20180711
íŒŒíŠ¸ë„ˆì˜ SPê°€ 부족하거나, 스킬 사용 불가 ìƒíƒœìž…니다.
*/
MSG_ID_D9B = 0xd9b,
-/*20180328 to 20180627
+/*20180328 to 20180711
아르바ì´íŠ¸ ë…¸ì  ê°•ì œ 종료 알림메ì¼
*/
MSG_ID_D9C = 0xd9c,
-/*20180328 to 20180627
+/*20180328 to 20180711
안녕하세요. ìš´ì˜íŒ€ìž…니다.
해당 아르바ì´íŠ¸ ë…¸ì ì€ ìš´ì˜ì •ì±… 위배ë˜ëŠ” ì‚¬í•­ì´ í™•ì¸ë˜ì–´ ê°•ì œ 종료ë˜ì—ˆìŠµë‹ˆë‹¤.
ìžì„¸í•œ 확ì¸ì„ ì›í•˜ì‹œëŠ” 경우ì—는 1:1 문ì˜ë¥¼ 접수해 주시기 ë°”ëžë‹ˆë‹¤.
ê°ì‚¬í•©ë‹ˆë‹¤
*/
MSG_ID_D9D = 0xd9d,
-/*20180328 to 20180627
+/*20180328 to 20180711
50% ì´ìƒì˜ ê°’ì„ ìž…ë ¥í•  수 없습니다.
*/
MSG_ID_D9E = 0xd9e,
-/*20180328 to 20180627
+/*20180328 to 20180711
파티 가입 ìš”ì²­ì„ ë³´ëƒˆìŠµë‹ˆë‹¤.
*/
MSG_ID_D9F = 0xd9f,
-/*20180328 to 20180627
+/*20180328 to 20180711
모험가 ì¤‘ê°œì†Œì— íŒŒí‹°ë¥¼ 등ë¡í•  수 없습니다
*/
MSG_ID_DA0 = 0xda0,
-/*20180328 to 20180627
+/*20180328 to 20180711
수ë½
*/
MSG_ID_DA1 = 0xda1,
-/*20180328 to 20180627
+/*20180328 to 20180711
ê±°ì ˆ
*/
MSG_ID_DA2 = 0xda2,
-/*20180328 to 20180627
+/*20180328 to 20180711
설정 ê¶Œí•œì€ íŒŒí‹°ìž¥ì—게 있습니다.
*/
MSG_ID_DA3 = 0xda3,
-/*20180328 to 20180627
+/*20180328 to 20180711
해당 ìºë¦­í„°ë¥¼ ì°¾ì„ ìˆ˜ 없습니다.
*/
MSG_ID_DA4 = 0xda4,
-/*20180328 to 20180627
+/*20180328 to 20180711
ë…¸ì  ê°•ì œ ì² ê±°
*/
MSG_ID_DA5 = 0xda5,
-/*20180328 to 20180627
+/*20180328 to 20180711
해당 íŒŒí‹°ì˜ íŒŒí‹°ìž¥ì„ ì°¾ì„ ìˆ˜ 없습니다.
*/
MSG_ID_DA6 = 0xda6,
-/*20180328 to 20180627
+/*20180328 to 20180711
ìž¡ë ˆë²¨ì´ ë‚®ì•„ íŒŒí‹°ì— ê°€ìž… í•  수 없습니다.
*/
MSG_ID_DA7 = 0xda7,
-/*20180328 to 20180627
+/*20180328 to 20180711
현재 요청ìžê°€ íŒŒí‹°ê°€ìž…ì´ ë¶ˆê°€ëŠ¥í•œ ì§€ì—­ì— ìžˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DA8 = 0xda8,
-/*20180328 to 20180627
+/*20180328 to 20180711
파티 ì¸ì›ìˆ˜ê°€ 초과ë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DA9 = 0xda9,
-/*20180328 to 20180627
+/*20180328 to 20180711
%s íŒŒí‹°ì˜ íŒŒí‹°ìž¥ì´ íŒŒí‹° ê°€ìž…ì„ ìŠ¹ì¸í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAA = 0xdaa,
-/*20180328 to 20180627
+/*20180328 to 20180711
%s íŒŒí‹°ì˜ íŒŒí‹°ìž¥ì´ íŒŒí‹° ê°€ìž…ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAB = 0xdab,
-/*20180328 to 20180627
+/*20180328 to 20180711
%s ë‹˜ì´ ì´ë¯¸ íŒŒí‹°ì— ê°€ìž… 중입니다.
*/
MSG_ID_DAC = 0xdac,
-/*20180328 to 20180627
+/*20180328 to 20180711
%s ë‹˜ì˜ íŒŒí‹° ê°€ìž…ì„ ìˆ˜ë½í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAD = 0xdad,
-/*20180328 to 20180627
+/*20180328 to 20180711
%s ë‹˜ì˜ íŒŒí‹° ê°€ìž…ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAE = 0xdae,
-/*20180328 to 20180627
+/*20180328 to 20180711
파티 ìš”ì²­ì„ ë°›ì„ ìˆ˜ 없는 ìƒíƒœì—¬ì„œ %së‹˜ì˜ ì‹ ì²­ì´ ê±°ì ˆë˜ì—ˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DAF = 0xdaf,
#endif
#if PACKETVER >= 20180411
-/*20180411 to 20180627
+/*20180411 to 20180711
모험가 중개소 리스트
*/
MSG_ID_DB0 = 0xdb0,
-/*20180411 to 20180627
+/*20180411 to 20180711
파티 가입 요청
*/
MSG_ID_DB1 = 0xdb1,
-/*20180411 to 20180627
+/*20180411 to 20180711
íŒŒí‹°ìž¥ì´ ì•„ë‹Œ 경우, 모험가 ì¤‘ê°œì†Œì— íŒŒí‹°ë¥¼ 등ë¡í•  수 없습니다.
*/
MSG_ID_DB2 = 0xdb2,
-/*20180411 to 20180627
+/*20180411 to 20180711
파티 ëª¨ì§‘ì„ ì¤‘ë‹¨í•  수 없습니다.
*/
MSG_ID_DB3 = 0xdb3,
-/*20180411 to 20180627
+/*20180411 to 20180711
존재하지 않는 파티 글입니다.
*/
MSG_ID_DB4 = 0xdb4,
#endif
#if PACKETVER >= 20180425
-/*20180425 to 20180627
+/*20180425 to 20180711
Zoom Out
*/
MSG_ID_DB5 = 0xdb5,
-/*20180425 to 20180627
+/*20180425 to 20180711
%s : Zoom Outì„ ì¼œê±°ë‚˜ ëŒìˆ˜ 있습니다 On Off
*/
MSG_ID_DB6 = 0xdb6,
-/*20180425 to 20180627
+/*20180425 to 20180711
Zoom Out ê¸°ëŠ¥ì„ ì¼­ë‹ˆë‹¤ (On)
*/
MSG_ID_DB7 = 0xdb7,
-/*20180425 to 20180627
+/*20180425 to 20180711
Zoom Out ê¸°ëŠ¥ì„ í•´ì œí•©ë‹ˆë‹¤ (Off)
*/
MSG_ID_DB8 = 0xdb8,
-/*20180425 to 20180627
+/*20180425 to 20180711
/zoom
*/
MSG_ID_DB9 = 0xdb9,
-/*20180425 to 20180627
+/*20180425 to 20180711
모험가 중개소
*/
MSG_ID_DBA = 0xdba,
-/*20180425 to 20180627
+/*20180425 to 20180711
íŒŒí‹°ìž¥ì¸ ê²½ìš°, 가입 ìš”ì²­ì„ í•  수 없습니다.
*/
MSG_ID_DBB = 0xdbb,
-/*20180425 to 20180627
+/*20180425 to 20180711
모험가 ì¤‘ê°œì†Œì— ë“±ë¡ ì¤‘ìž…ë‹ˆë‹¤. 잠시만 기다려 주세요.
*/
MSG_ID_DBC = 0xdbc,
-/*20180425 to 20180627
+/*20180425 to 20180711
ë” ì´ìƒ ì§ì—…ì„ ì„ íƒí•  수 없습니다.
*/
MSG_ID_DBD = 0xdbd,
-/*20180425 to 20180627
+/*20180425 to 20180711
게임 중 해당 ìœ ì €ì˜ ê°€ìž… ìš”ì²­ì„ ë°›ì§€ 않습니다.
*/
MSG_ID_DBE = 0xdbe,
-/*20180425 to 20180627
+/*20180425 to 20180711
ìž ì‹œ 후 다시 열어주시기 ë°”ëžë‹ˆë‹¤.
*/
MSG_ID_DBF = 0xdbf,
-/*20180425 to 20180627
+/*20180425 to 20180711
공성시작 ì „ %d분 ë™ì•ˆì€ 해당 ê¸°ëŠ¥ì„ ì´ìš©í•˜ì‹¤ 수 없습니다.
*/
MSG_ID_DC0 = 0xdc0,
#endif
#if PACKETVER >= 20180509
-/*20180509 to 20180627
+/*20180509 to 20180711
/viewclear
*/
MSG_ID_DC1 = 0xdc1,
-/*20180509 to 20180627
+/*20180509 to 20180711
건물 반 투명화 ON
*/
MSG_ID_DC2 = 0xdc2,
-/*20180509 to 20180627
+/*20180509 to 20180711
건물 반 투명화 OFF
*/
MSG_ID_DC3 = 0xdc3,
-/*20180509 to 20180627
+/*20180509 to 20180711
건물 투명화
*/
MSG_ID_DC4 = 0xdc4,
-/*20180509 to 20180627
+/*20180509 to 20180711
알로 ë˜ëŒë¦¬ê¸°ê°€ 실패했습니다. ë¡œë±ìŠ¤ ìž‘ì„±ì°½ì„ ë‹«ì•„ì£¼ì„¸ìš”.
*/
MSG_ID_DC5 = 0xdc5,
#endif
#if PACKETVER >= 20180523
-/*20180523 to 20180627
+/*20180523 to 20180711
Emblem Frame
*/
MSG_ID_DC6 = 0xdc6,
-/*20180523 to 20180627
+/*20180523 to 20180711
Emblem í…Œë‘리를 그려ì¤ë‹ˆë‹¤
*/
MSG_ID_DC7 = 0xdc7,
-/*20180523 to 20180627
+/*20180523 to 20180711
Emblem í…Œë‘리를 그려주지 않습니다
*/
MSG_ID_DC8 = 0xdc8,
#endif
#if PACKETVER >= 20180605
-/*20180605 to 20180627
+/*20180605 to 20180711
ìž¥ì°©ëœ ë¬´ê¸°ê°€ 없습니다.
*/
MSG_ID_DC9 = 0xdc9,
-/*20180605 to 20180627
+/*20180605 to 20180711
ì—너지 구체가 부족합니다.
*/
MSG_ID_DCA = 0xdca,
-/*20180605 to 20180627
+/*20180605 to 20180711
배울 수 없는 스킬(%s)ì´ í¬í•¨ë˜ì–´ìžˆìŠµë‹ˆë‹¤.
*/
MSG_ID_DCB = 0xdcb,
-/*20180605 to 20180627
+/*20180605 to 20180711
/frame
*/
MSG_ID_DCC = 0xdcc,
#endif
#if PACKETVER >= 20180627
-/*20180627 to 20180627
+/*20180627 to 20180711
ì›¨í° ë¸”ë¡œí‚¹ ë°œë™í›„ 제한시간 ë‚´ì— ì‚¬ìš©ê°€ëŠ¥í•œ 스킬입니다.
*/
MSG_ID_DCD = 0xdcd,
-/*20180627 to 20180627
+/*20180627 to 20180711
ì•„ì´ë””í˜¹ì€ íŒ¨ìŠ¤ì›Œë“œê°€ 잘못ë˜ì—ˆì니다.
*/
MSG_ID_DCE = 0xdce,
#endif
+#if PACKETVER >= 20180711
+/*20180711 to 20180711
+E X P : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DCF = 0xdcf,
+/*20180711 to 20180711
+DROP : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DD0 = 0xdd0,
+/*20180711 to 20180711
+DEATH : %.1f%% ( basic 100.0%% %s %.1f%%)
+*/
+ MSG_ID_DD1 = 0xdd1,
+#endif
};
#endif /* MAP_MESSAGES_ZERO_H */
diff --git a/src/map/mob.c b/src/map/mob.c
index 6bd7829ba..0dbff9211 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -64,7 +64,7 @@
#include <stdlib.h>
#include <string.h>
-struct mob_interface mob_s;
+static struct mob_interface mob_s;
struct mob_interface *mob;
#define ACTIVE_AI_RANGE 2 //Distance added on top of 'AREA_SIZE' at which mobs enter active AI mode.
@@ -88,6 +88,7 @@ struct item_drop_ratio {
int mob_id[MAX_ITEMRATIO_MOBS];
};
static struct item_drop_ratio *item_drop_ratio_db[MAX_ITEMDB];
+static struct DBMap *item_drop_ratio_other_db = NULL;
static struct eri *item_drop_ers; //For loot drops delay structures.
static struct eri *item_drop_list_ers;
@@ -97,12 +98,14 @@ static struct {
int class_[350];
} summon[MAX_RANDOMMONSTER];
-struct mob_db *mob_db(int index) {
+static struct mob_db *mob_db(int index)
+{
if (index < 0 || index > MAX_MOB_DB || mob->db_data[index] == NULL)
return mob->dummy;
return mob->db_data[index];
}
-struct mob_chat *mob_chat(short id) {
+static struct mob_chat *mob_chat(short id)
+{
if(id <= 0 || id > MAX_MOB_CHAT || mob->chat_db[id] == NULL)
return NULL;
return mob->chat_db[id];
@@ -111,7 +114,7 @@ struct mob_chat *mob_chat(short id) {
/*==========================================
* Mob is searched with a name.
*------------------------------------------*/
-int mobdb_searchname(const char *str)
+static int mobdb_searchname(const char *str)
{
int i;
@@ -130,7 +133,8 @@ int mobdb_searchname(const char *str)
return 0;
}
-int mobdb_searchname_array_sub(struct mob_db* monster, const char *str, int flag) {
+static int mobdb_searchname_array_sub(struct mob_db *monster, const char *str, int flag)
+{
nullpo_ret(monster);
if (monster == mob->dummy)
@@ -159,7 +163,7 @@ int mobdb_searchname_array_sub(struct mob_db* monster, const char *str, int flag
*------------------------------------------*/
/// Creates a timer to spawn a tomb
/// @param nd : The tomb
-void mvptomb_spawn_delayed(struct npc_data *nd)
+static void mvptomb_spawn_delayed(struct npc_data *nd)
{
nullpo_retv(nd);
@@ -174,7 +178,7 @@ void mvptomb_spawn_delayed(struct npc_data *nd)
/// @param tick : current tick
/// @param id : NPC Id
/// @param data : 0
-int mvptomb_delayspawn(int tid, int64 tick, int id, intptr_t data)
+static int mvptomb_delayspawn(int tid, int64 tick, int id, intptr_t data)
{
struct npc_data *nd = map->id2nd(id);
@@ -195,7 +199,7 @@ int mvptomb_delayspawn(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-void mvptomb_create(struct mob_data *md, char *killer, time_t time)
+static void mvptomb_create(struct mob_data *md, char *killer, time_t time)
{
struct npc_data *nd;
@@ -224,7 +228,8 @@ void mvptomb_create(struct mob_data *md, char *killer, time_t time)
mob->mvptomb_spawn_delayed(nd);
}
-void mvptomb_destroy(struct mob_data *md) {
+static void mvptomb_destroy(struct mob_data *md)
+{
struct npc_data *nd;
nullpo_retv(md);
@@ -258,7 +263,7 @@ void mvptomb_destroy(struct mob_data *md) {
/*==========================================
* Founds up to N matches. Returns number of matches [Skotlex]
*------------------------------------------*/
-int mobdb_searchname_array(struct mob_db** data, int size, const char *str, int flag)
+static int mobdb_searchname_array(struct mob_db **data, int size, const char *str, int flag)
{
int count = 0, i;
struct mob_db* monster;
@@ -279,7 +284,7 @@ int mobdb_searchname_array(struct mob_db** data, int size, const char *str, int
/*==========================================
* Id Mob is checked.
*------------------------------------------*/
-int mobdb_checkid(const int id)
+static int mobdb_checkid(const int id)
{
if (mob->db(id) == mob->dummy)
return 0;
@@ -291,7 +296,7 @@ int mobdb_checkid(const int id)
/*==========================================
* Returns the view data associated to this mob class.
*------------------------------------------*/
-struct view_data * mob_get_viewdata(int class_)
+static struct view_data *mob_get_viewdata(int class_)
{
if (mob->db(class_) == mob->dummy)
return 0;
@@ -300,7 +305,7 @@ struct view_data * mob_get_viewdata(int class_)
/*==========================================
* Cleans up mob-spawn data to make it "valid"
*------------------------------------------*/
-int mob_parse_dataset(struct spawn_data *data)
+static int mob_parse_dataset(struct spawn_data *data)
{
size_t len;
@@ -326,7 +331,8 @@ int mob_parse_dataset(struct spawn_data *data)
/*==========================================
* Generates the basic mob data using the spawn_data provided.
*------------------------------------------*/
-struct mob_data* mob_spawn_dataset(struct spawn_data *data) {
+static struct mob_data *mob_spawn_dataset(struct spawn_data *data)
+{
struct mob_data *md = NULL;
nullpo_retr(NULL, data);
CREATE(md, struct mob_data, 1);
@@ -373,7 +379,7 @@ struct mob_data* mob_spawn_dataset(struct spawn_data *data) {
* &8: Selected monster must have normal spawn.
* lv: Mob level to check against
*------------------------------------------*/
-int mob_get_random_id(int type, int flag, int lv)
+static int mob_get_random_id(int type, int flag, int lv)
{
struct mob_db *monster;
int i=0, class_;
@@ -404,7 +410,8 @@ int mob_get_random_id(int type, int flag, int lv)
/*==========================================
* Kill Steal Protection [Zephyrus]
*------------------------------------------*/
-bool mob_ksprotected(struct block_list *src, struct block_list *target) {
+static bool mob_ksprotected(struct block_list *src, struct block_list *target)
+{
struct block_list *s_bl, *t_bl;
struct map_session_data
*sd, // Source
@@ -487,7 +494,7 @@ bool mob_ksprotected(struct block_list *src, struct block_list *target) {
return false;
}
-struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int16 y, const char *mobname, int class_, const char *event, unsigned int size, unsigned int ai)
+static struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int16 y, const char *mobname, int class_, const char *event, unsigned int size, unsigned int ai)
{
struct spawn_data data;
@@ -528,7 +535,8 @@ struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int
/*==========================================
* Spawn a single mob on the specified coordinates.
*------------------------------------------*/
-int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const char* mobname, int class_, int amount, const char* event, unsigned int size, unsigned int ai) {
+static int mob_once_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *mobname, int class_, int amount, const char *event, unsigned int size, unsigned int ai)
+{
struct mob_data* md = NULL;
int count, lv;
bool no_guardian_data = false;
@@ -579,7 +587,7 @@ int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const
/*==========================================
* Spawn mobs in the specified area.
*------------------------------------------*/
-int mob_once_spawn_area(struct map_session_data* sd, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, const char* mobname, int class_, int amount, const char* event, unsigned int size, unsigned int ai)
+static int mob_once_spawn_area(struct map_session_data *sd, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, const char *mobname, int class_, int amount, const char *event, unsigned int size, unsigned int ai)
{
int i, max, id = 0;
int lx = -1, ly = -1;
@@ -637,7 +645,8 @@ int mob_once_spawn_area(struct map_session_data* sd, int16 m, int16 x0, int16 y0
* @retval Always 0
* @author Skotlex
**/
-int mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data) {
+static int mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data)
+{
//Needed because the guild data may not be available at guardian spawn time.
struct block_list* bl = map->id2bl(id);
struct mob_data* md;
@@ -680,7 +689,7 @@ int mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Summoning Guardians [Valaris]
*------------------------------------------*/
-int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobname, int class_, const char* event, int guardian, bool has_index)
+static int mob_spawn_guardian(const char *mapname, short x, short y, const char *mobname, int class_, const char *event, int guardian, bool has_index)
{
struct mob_data *md=NULL;
struct spawn_data data;
@@ -780,7 +789,7 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam
/*==========================================
* Summoning BattleGround [Zephyrus]
*------------------------------------------*/
-int mob_spawn_bg(const char* mapname, short x, short y, const char* mobname, int class_, const char* event, unsigned int bg_id)
+static int mob_spawn_bg(const char *mapname, short x, short y, const char *mobname, int class_, const char *event, unsigned int bg_id)
{
struct mob_data *md = NULL;
struct spawn_data data;
@@ -831,7 +840,7 @@ int mob_spawn_bg(const char* mapname, short x, short y, const char* mobname, int
* - MSS_RUSH: Chasing attacking player, path is complex
* - MSS_FOLLOW: Initiative/support seek, path is complex
*------------------------------------------*/
-int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state)
+static int mob_can_reach(struct mob_data *md, struct block_list *bl, int range, int state)
{
int easy = 0;
@@ -853,7 +862,7 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state
/*==========================================
* Links nearby mobs (supportive mobs)
*------------------------------------------*/
-int mob_linksearch(struct block_list *bl,va_list ap)
+static int mob_linksearch(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int class_ = va_arg(ap, int);
@@ -882,7 +891,8 @@ int mob_linksearch(struct block_list *bl,va_list ap)
/*==========================================
* mob spawn with delay (timer function)
*------------------------------------------*/
-int mob_delayspawn(int tid, int64 tick, int id, intptr_t data) {
+static int mob_delayspawn(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list* bl = map->id2bl(id); // TODO: Why does this not use map->bl2md?
struct mob_data* md = BL_CAST(BL_MOB, bl);
@@ -902,7 +912,7 @@ int mob_delayspawn(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* spawn timing calculation
*------------------------------------------*/
-int mob_setdelayspawn(struct mob_data *md)
+static int mob_setdelayspawn(struct mob_data *md)
{
unsigned int spawntime;
uint32 mode;
@@ -946,7 +956,8 @@ int mob_setdelayspawn(struct mob_data *md)
return 0;
}
-int mob_count_sub(struct block_list *bl, va_list ap) {
+static int mob_count_sub(struct block_list *bl, va_list ap)
+{
int mobid[10] = { 0 }, i;
ARR_FIND(0, 10, i, (mobid[i] = va_arg(ap, int)) == 0); //fetch till 0
if (mobid[0]) { //if there one let's check it otherwise go backward
@@ -961,7 +972,7 @@ int mob_count_sub(struct block_list *bl, va_list ap) {
/*==========================================
* Mob spawning. Initialization is also variously here.
*------------------------------------------*/
-int mob_spawn (struct mob_data *md)
+static int mob_spawn(struct mob_data *md)
{
int i=0;
int64 tick = timer->gettick();
@@ -1055,7 +1066,7 @@ int mob_spawn (struct mob_data *md)
/*==========================================
* Determines if the mob can change target. [Skotlex]
*------------------------------------------*/
-int mob_can_changetarget(const struct mob_data *md, const struct block_list *target, uint32 mode)
+static int mob_can_changetarget(const struct mob_data *md, const struct block_list *target, uint32 mode)
{
nullpo_ret(md);
nullpo_ret(target);
@@ -1089,7 +1100,7 @@ int mob_can_changetarget(const struct mob_data *md, const struct block_list *tar
/*==========================================
* Determination for an attack of a monster
*------------------------------------------*/
-int mob_target(struct mob_data *md,struct block_list *bl,int dist)
+static int mob_target(struct mob_data *md, struct block_list *bl, int dist)
{
nullpo_ret(md);
nullpo_ret(bl);
@@ -1113,7 +1124,7 @@ int mob_target(struct mob_data *md,struct block_list *bl,int dist)
/*==========================================
* The ?? routine of an active monster
*------------------------------------------*/
-int mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap)
+static int mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap)
{
struct mob_data *md;
struct block_list **target;
@@ -1176,7 +1187,8 @@ int mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap)
/*==========================================
* chase target-change routine.
*------------------------------------------*/
-int mob_ai_sub_hard_changechase(struct block_list *bl,va_list ap) {
+static int mob_ai_sub_hard_changechase(struct block_list *bl, va_list ap)
+{
struct mob_data *md;
struct block_list **target;
@@ -1204,7 +1216,8 @@ int mob_ai_sub_hard_changechase(struct block_list *bl,va_list ap) {
/*==========================================
* finds nearby bg ally for guardians looking for users to follow.
*------------------------------------------*/
-int mob_ai_sub_hard_bg_ally(struct block_list *bl,va_list ap) {
+static int mob_ai_sub_hard_bg_ally(struct block_list *bl, va_list ap)
+{
struct mob_data *md;
struct block_list **target;
@@ -1223,7 +1236,7 @@ int mob_ai_sub_hard_bg_ally(struct block_list *bl,va_list ap) {
/*==========================================
* loot monster item search
*------------------------------------------*/
-int mob_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap)
+static int mob_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap)
{
struct mob_data* md;
struct block_list **target;
@@ -1245,7 +1258,8 @@ int mob_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap)
return 0;
}
-int mob_warpchase_sub(struct block_list *bl,va_list ap) {
+static int mob_warpchase_sub(struct block_list *bl, va_list ap)
+{
int cur_distance;
struct block_list *target = va_arg(ap, struct block_list *);
struct npc_data **target_nd = va_arg(ap, struct npc_data **);
@@ -1277,7 +1291,8 @@ int mob_warpchase_sub(struct block_list *bl,va_list ap) {
/*==========================================
* Processing of slave monsters
*------------------------------------------*/
-int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) {
+static int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick)
+{
struct block_list *bl;
nullpo_ret(md);
@@ -1360,7 +1375,8 @@ int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) {
* when trying to pick new targets when the current chosen target is
* unreachable.
*------------------------------------------*/
-int mob_unlocktarget(struct mob_data *md, int64 tick) {
+static int mob_unlocktarget(struct mob_data *md, int64 tick)
+{
nullpo_ret(md);
switch (md->state.skillstate) {
@@ -1405,7 +1421,8 @@ int mob_unlocktarget(struct mob_data *md, int64 tick) {
/*==========================================
* Random walk
*------------------------------------------*/
-int mob_randomwalk(struct mob_data *md, int64 tick) {
+static int mob_randomwalk(struct mob_data *md, int64 tick)
+{
const int retrycount=20;
int i,c,d;
int speed;
@@ -1455,7 +1472,7 @@ int mob_randomwalk(struct mob_data *md, int64 tick) {
return 1;
}
-int mob_warpchase(struct mob_data *md, struct block_list *target)
+static int mob_warpchase(struct mob_data *md, struct block_list *target)
{
struct npc_data *warp = NULL;
int distance = AREA_SIZE;
@@ -1482,7 +1499,8 @@ int mob_warpchase(struct mob_data *md, struct block_list *target)
/*==========================================
* AI of MOB whose is near a Player
*------------------------------------------*/
-bool mob_ai_sub_hard(struct mob_data *md, int64 tick) {
+static bool mob_ai_sub_hard(struct mob_data *md, int64 tick)
+{
struct block_list *tbl = NULL, *abl = NULL;
uint32 mode;
int view_range, can_move;
@@ -1762,7 +1780,7 @@ bool mob_ai_sub_hard(struct mob_data *md, int64 tick) {
return true;
}
-int mob_ai_sub_hard_timer(struct block_list *bl, va_list ap)
+static int mob_ai_sub_hard_timer(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int64 tick = va_arg(ap, int64);
@@ -1783,7 +1801,8 @@ int mob_ai_sub_hard_timer(struct block_list *bl, va_list ap)
/*==========================================
* Serious processing for mob in PC field of view (foreachclient)
*------------------------------------------*/
-int mob_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
+static int mob_ai_sub_foreachclient(struct map_session_data *sd, va_list ap)
+{
int64 tick;
nullpo_ret(sd);
tick=va_arg(ap, int64);
@@ -1795,7 +1814,8 @@ int mob_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
/*==========================================
* Negligent mode MOB AI (PC is not in near)
*------------------------------------------*/
-int mob_ai_sub_lazy(struct mob_data *md, va_list args) {
+static int mob_ai_sub_lazy(struct mob_data *md, va_list args)
+{
int64 tick;
nullpo_ret(md);
@@ -1859,7 +1879,8 @@ int mob_ai_sub_lazy(struct mob_data *md, va_list args) {
/*==========================================
* Negligent processing for mob outside PC field of view (interval timer function)
*------------------------------------------*/
-int mob_ai_lazy(int tid, int64 tick, int id, intptr_t data) {
+static int mob_ai_lazy(int tid, int64 tick, int id, intptr_t data)
+{
map->foreachmob(mob->ai_sub_lazy,tick);
return 0;
}
@@ -1867,7 +1888,8 @@ int mob_ai_lazy(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Serious processing for mob in PC field of view (interval timer function)
*------------------------------------------*/
-int mob_ai_hard(int tid, int64 tick, int id, intptr_t data) {
+static int mob_ai_hard(int tid, int64 tick, int id, intptr_t data)
+{
if (battle_config.mob_ai&0x20)
map->foreachmob(mob->ai_sub_lazy,tick);
@@ -1880,7 +1902,7 @@ int mob_ai_hard(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Initializes the delay drop structure for mob-dropped items.
*------------------------------------------*/
-struct item_drop* mob_setdropitem(int nameid, int qty, struct item_data *data)
+static struct item_drop *mob_setdropitem(int nameid, int qty, struct item_data *data)
{
struct item_drop *drop = ers_alloc(item_drop_ers, struct item_drop);
drop->item_data.nameid = nameid;
@@ -1894,7 +1916,7 @@ struct item_drop* mob_setdropitem(int nameid, int qty, struct item_data *data)
/*==========================================
* Initializes the delay drop structure for mob-looted items.
*------------------------------------------*/
-struct item_drop* mob_setlootitem(struct item* item)
+static struct item_drop *mob_setlootitem(struct item *item)
{
struct item_drop *drop ;
@@ -1909,7 +1931,7 @@ struct item_drop* mob_setlootitem(struct item* item)
/*==========================================
* item drop with delay (timer function)
*------------------------------------------*/
-int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data)
+static int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data)
{
struct item_drop_list *list;
struct item_drop *ditem;
@@ -1935,7 +1957,7 @@ int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data)
* rate is the drop-rate of the item, required for autoloot.
* flag : Killed only by homunculus?
*------------------------------------------*/
-void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct item_drop *ditem, int loot, int drop_rate, unsigned short flag)
+static void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct item_drop *ditem, int loot, int drop_rate, unsigned short flag)
{
struct map_session_data *sd = NULL;
@@ -1971,7 +1993,8 @@ void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct ite
dlist->item = ditem;
}
-int mob_timer_delete(int tid, int64 tick, int id, intptr_t data) {
+static int mob_timer_delete(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list* bl = map->id2bl(id); // TODO: Why does this not use map->id2md?
struct mob_data* md = BL_CAST(BL_MOB, bl);
@@ -1992,7 +2015,7 @@ int mob_timer_delete(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
*
*------------------------------------------*/
-int mob_deleteslave_sub(struct block_list *bl,va_list ap)
+static int mob_deleteslave_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int id = va_arg(ap, int);
@@ -2009,14 +2032,16 @@ int mob_deleteslave_sub(struct block_list *bl,va_list ap)
/*==========================================
*
*------------------------------------------*/
-int mob_deleteslave(struct mob_data *md) {
+static int mob_deleteslave(struct mob_data *md)
+{
nullpo_ret(md);
map->foreachinmap(mob->deleteslave_sub, md->bl.m, BL_MOB,md->bl.id);
return 0;
}
// Mob respawning through KAIZEL or NPC_REBIRTH [Skotlex]
-int mob_respawn(int tid, int64 tick, int id, intptr_t data) {
+static int mob_respawn(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list *bl = map->id2bl(id);
if(!bl) return 0;
@@ -2024,7 +2049,7 @@ int mob_respawn(int tid, int64 tick, int id, intptr_t data) {
return 1;
}
-void mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
+static void mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
{
int char_id = 0, flag = MDLF_NORMAL;
@@ -2140,7 +2165,8 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
return;
}
//Call when a mob has received damage.
-void mob_damage(struct mob_data *md, struct block_list *src, int damage) {
+static void mob_damage(struct mob_data *md, struct block_list *src, int damage)
+{
nullpo_retv(md);
if (damage > 0) { //Store total damage...
if (UINT_MAX - (unsigned int)damage > md->tdmg)
@@ -2194,7 +2220,8 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) {
* Signals death of mob.
* type&1 -> no drops, type&2 -> no exp
*------------------------------------------*/
-int mob_dead(struct mob_data *md, struct block_list *src, int type) {
+static int mob_dead(struct mob_data *md, struct block_list *src, int type)
+{
struct status_data *mstatus;
struct map_session_data *sd = BL_CAST(BL_PC, src);
struct map_session_data *tmpsd[DAMAGELOG_SIZE] = { NULL };
@@ -2743,7 +2770,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
return 3; //Remove from map.
}
-void mob_revive(struct mob_data *md, unsigned int hp)
+static void mob_revive(struct mob_data *md, unsigned int hp)
{
int64 tick = timer->gettick();
@@ -2764,7 +2791,7 @@ void mob_revive(struct mob_data *md, unsigned int hp)
clif->charnameack (0, &md->bl);
}
-int mob_guardian_guildchange(struct mob_data *md)
+static int mob_guardian_guildchange(struct mob_data *md)
{
struct guild *g;
nullpo_ret(md);
@@ -2803,7 +2830,7 @@ int mob_guardian_guildchange(struct mob_data *md)
/*==========================================
* Pick a random class for the mob
*------------------------------------------*/
-int mob_random_class (int *value, size_t count)
+static int mob_random_class(int *value, size_t count)
{
nullpo_ret(value);
@@ -2825,7 +2852,8 @@ int mob_random_class (int *value, size_t count)
/*==========================================
* Change mob base class
*------------------------------------------*/
-int mob_class_change (struct mob_data *md, int class_) {
+static int mob_class_change(struct mob_data *md, int class_)
+{
int64 tick = timer->gettick(), c = 0;
int i, hp_rate;
@@ -2893,7 +2921,7 @@ int mob_class_change (struct mob_data *md, int class_) {
/*==========================================
* mob heal, update display hp info of mob for players
*------------------------------------------*/
-void mob_heal(struct mob_data *md, unsigned int heal)
+static void mob_heal(struct mob_data *md, unsigned int heal)
{
nullpo_retv(md);
if (battle_config.show_mob_info&3)
@@ -2921,7 +2949,7 @@ void mob_heal(struct mob_data *md, unsigned int heal)
/*==========================================
* Added by RoVeRT
*------------------------------------------*/
-int mob_warpslave_sub(struct block_list *bl, va_list ap)
+static int mob_warpslave_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
struct block_list *master;
@@ -2947,7 +2975,8 @@ int mob_warpslave_sub(struct block_list *bl, va_list ap)
* Warps slaves. Range is the area around the master that they can
* appear in randomly.
*------------------------------------------*/
-int mob_warpslave(struct block_list *bl, int range) {
+static int mob_warpslave(struct block_list *bl, int range)
+{
nullpo_ret(bl);
if (range < 1)
range = 1; //Min range needed to avoid crashes and stuff. [Skotlex]
@@ -2958,7 +2987,7 @@ int mob_warpslave(struct block_list *bl, int range) {
/*==========================================
* Counts slave sub, currently checking if mob master is the given ID.
*------------------------------------------*/
-int mob_countslave_sub(struct block_list *bl, va_list ap)
+static int mob_countslave_sub(struct block_list *bl, va_list ap)
{
int id = va_arg(ap, int);
struct mob_data *md = NULL;
@@ -2975,7 +3004,8 @@ int mob_countslave_sub(struct block_list *bl, va_list ap)
/*==========================================
* Counts the number of slaves a mob has on the map.
*------------------------------------------*/
-int mob_countslave(struct block_list *bl) {
+static int mob_countslave(struct block_list *bl)
+{
nullpo_ret(bl);
return map->foreachinmap(mob->countslave_sub, bl->m, BL_MOB,bl->id);
}
@@ -2983,7 +3013,7 @@ int mob_countslave(struct block_list *bl) {
/*==========================================
* Summons amount slaves contained in the value[5] array using round-robin. [adapted by Skotlex]
*------------------------------------------*/
-int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id)
+static int mob_summonslave(struct mob_data *md2, int *value, int amount, uint16 skill_id)
{
struct mob_data *md;
struct spawn_data data;
@@ -3081,7 +3111,7 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id)
* MOBskill lookup (get skillindex through skill_id)
* Returns INDEX_NOT_FOUND if not found.
*------------------------------------------*/
-int mob_skill_id2skill_idx(int class_,uint16 skill_id)
+static int mob_skill_id2skill_idx(int class_, uint16 skill_id)
{
int i, max = mob->db(class_)->maxskill;
struct mob_skill *ms=mob->db(class_)->skill;
@@ -3098,7 +3128,7 @@ int mob_skill_id2skill_idx(int class_,uint16 skill_id)
/*==========================================
* Friendly Mob whose HP is decreasing by a nearby MOB is looked for.
*------------------------------------------*/
-int mob_getfriendhprate_sub(struct block_list *bl,va_list ap)
+static int mob_getfriendhprate_sub(struct block_list *bl, va_list ap)
{
int min_rate, max_rate,rate;
struct block_list **fr;
@@ -3126,7 +3156,8 @@ int mob_getfriendhprate_sub(struct block_list *bl,va_list ap)
(*fr) = bl;
return 1;
}
-struct block_list *mob_getfriendhprate(struct mob_data *md,int min_rate,int max_rate) {
+static struct block_list *mob_getfriendhprate(struct mob_data *md, int min_rate, int max_rate)
+{
struct block_list *fr=NULL;
int type = BL_MOB;
@@ -3141,7 +3172,8 @@ struct block_list *mob_getfriendhprate(struct mob_data *md,int min_rate,int max_
/*==========================================
* Check hp rate of its master
*------------------------------------------*/
-struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md,int rate) {
+static struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md, int rate)
+{
if( md && md->master_id > 0 ) {
struct block_list *bl = map->id2bl(md->master_id);
if( bl && get_percentage(status_get_hp(bl), status_get_max_hp(bl)) < rate )
@@ -3153,7 +3185,7 @@ struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md,int rate) {
/*==========================================
* What a status state suits by nearby MOB is looked for.
*------------------------------------------*/
-int mob_getfriendstatus_sub(struct block_list *bl,va_list ap)
+static int mob_getfriendstatus_sub(struct block_list *bl, va_list ap)
{
int cond1,cond2;
struct mob_data **fr = NULL, *md = NULL, *mmd = NULL;
@@ -3186,7 +3218,8 @@ int mob_getfriendstatus_sub(struct block_list *bl,va_list ap)
return 0;
}
-struct mob_data *mob_getfriendstatus(struct mob_data *md,int cond1,int cond2) {
+static struct mob_data *mob_getfriendstatus(struct mob_data *md, int cond1, int cond2)
+{
struct mob_data* fr = NULL;
nullpo_ret(md);
@@ -3197,7 +3230,8 @@ struct mob_data *mob_getfriendstatus(struct mob_data *md,int cond1,int cond2) {
/*==========================================
* Skill use judging
*------------------------------------------*/
-int mobskill_use(struct mob_data *md, int64 tick, int event) {
+static int mobskill_use(struct mob_data *md, int64 tick, int event)
+{
struct mob_skill *ms;
struct block_list *fbl = NULL; //Friend bl, which can either be a BL_PC or BL_MOB depending on the situation. [Skotlex]
struct block_list *bl;
@@ -3417,7 +3451,8 @@ int mobskill_use(struct mob_data *md, int64 tick, int event) {
/*==========================================
* Skill use event processing
*------------------------------------------*/
-int mobskill_event(struct mob_data *md, struct block_list *src, int64 tick, int flag) {
+static int mobskill_event(struct mob_data *md, struct block_list *src, int64 tick, int flag)
+{
int target_id, res = 0;
nullpo_ret(md);
@@ -3454,7 +3489,7 @@ int mobskill_event(struct mob_data *md, struct block_list *src, int64 tick, int
}
// Player cloned mobs. [Valaris]
-int mob_is_clone(int class_)
+static int mob_is_clone(int class_)
{
if(class_ < MOB_CLONE_START || class_ > MOB_CLONE_END)
return 0;
@@ -3468,7 +3503,7 @@ int mob_is_clone(int class_)
//If mode is not passed, a default aggressive mode is used.
//If master_id is passed, clone is attached to him.
//Returns: ID of newly crafted copy.
-int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, uint32 mode, int flag, unsigned int duration)
+static int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, uint32 mode, int flag, unsigned int duration)
{
int class_;
int i,j,h,inf, fd;
@@ -3671,7 +3706,7 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons
return md->bl.id;
}
-int mob_clone_delete(struct mob_data *md)
+static int mob_clone_delete(struct mob_data *md)
{
int class_;
@@ -3694,7 +3729,7 @@ int mob_clone_delete(struct mob_data *md)
/*==========================================
* Since un-setting [ mob ] up was used, it is an initial provisional value setup.
*------------------------------------------*/
-int mob_makedummymobdb(int class_)
+static int mob_makedummymobdb(int class_)
{
if (mob->dummy != NULL)
{
@@ -3736,7 +3771,7 @@ int mob_makedummymobdb(int class_)
}
//Adjusts the drop rate of item according to the criteria given. [Skotlex]
-unsigned int mob_drop_adjust(int baserate, int rate_adjust, unsigned short rate_min, unsigned short rate_max)
+static unsigned int mob_drop_adjust(int baserate, int rate_adjust, unsigned short rate_min, unsigned short rate_max)
{
int64 rate = baserate;
@@ -3757,6 +3792,28 @@ unsigned int mob_drop_adjust(int baserate, int rate_adjust, unsigned short rate_
return (unsigned int)cap_value(rate,rate_min,rate_max);
}
+static struct item_drop_ratio *mob_get_item_drop_ratio(int nameid)
+{
+ Assert_retr(NULL, nameid > 0);
+ if (nameid < ARRAYLENGTH(item_drop_ratio_db)) {
+ return item_drop_ratio_db[nameid];
+ } else {
+ return (struct item_drop_ratio *)idb_get(item_drop_ratio_other_db, nameid);
+ }
+}
+
+static void mob_set_item_drop_ratio(int nameid, struct item_drop_ratio *ratio)
+{
+ Assert_retv(nameid > 0);
+ if (nameid < ARRAYLENGTH(item_drop_ratio_db)) {
+ Assert_retv(item_drop_ratio_db[nameid] == NULL);
+ item_drop_ratio_db[nameid] = ratio;
+ } else {
+ Assert_retv(idb_get(item_drop_ratio_other_db, nameid) == NULL);
+ idb_put(item_drop_ratio_other_db, nameid, ratio);
+ }
+}
+
/**
* Check if global item drop rate is overridden for given item
* in db/mob_item_ratio.txt
@@ -3764,23 +3821,27 @@ unsigned int mob_drop_adjust(int baserate, int rate_adjust, unsigned short rate_
* @param mob_id ID of the monster
* @param rate_adjust pointer to store ratio if found
*/
-void item_dropratio_adjust(int nameid, int mob_id, int *rate_adjust)
+static void item_dropratio_adjust(int nameid, int mob_id, int *rate_adjust)
{
+ struct item_drop_ratio *dropRatio;
nullpo_retv(rate_adjust);
- if( item_drop_ratio_db[nameid] ) {
- if( item_drop_ratio_db[nameid]->mob_id[0] ) { // only for listed mobs
+
+ dropRatio = mob->get_item_drop_ratio(nameid);
+ if (dropRatio) {
+ if (dropRatio->mob_id[0] ) { // only for listed mobs
int i;
- ARR_FIND(0, MAX_ITEMRATIO_MOBS, i, item_drop_ratio_db[nameid]->mob_id[i] == mob_id);
- if(i < MAX_ITEMRATIO_MOBS) // found
- *rate_adjust = item_drop_ratio_db[nameid]->drop_ratio;
+ ARR_FIND(0, MAX_ITEMRATIO_MOBS, i, dropRatio->mob_id[i] == mob_id);
+ if (i < MAX_ITEMRATIO_MOBS) // found
+ *rate_adjust = dropRatio->drop_ratio;
}
else // for all mobs
- *rate_adjust = item_drop_ratio_db[nameid]->drop_ratio;
+ *rate_adjust = dropRatio->drop_ratio;
}
}
/* (mob_parse_dbrow)_cap_value */
-static inline int mob_parse_dbrow_cap_value(int class_, int min, int max, int value) {
+static inline int mob_parse_dbrow_cap_value(int class_, int min, int max, int value)
+{
if( value > max ) {
ShowError("mob_parse_dbrow_cap_value: for class '%d', field value '%d' is higher than the maximum '%d'! capping...\n", class_, value, max);
return max;
@@ -3798,7 +3859,7 @@ static inline int mob_parse_dbrow_cap_value(int class_, int min, int max, int va
* (mob_id is expected to be already set).
* @param[in] t The libconfig entry.
*/
-void mob_read_db_stats_sub(struct mob_db *entry, struct config_setting_t *t)
+static void mob_read_db_stats_sub(struct mob_db *entry, struct config_setting_t *t)
{
int i32;
nullpo_retv(entry);
@@ -3830,7 +3891,7 @@ void mob_read_db_stats_sub(struct mob_db *entry, struct config_setting_t *t)
*
* @return The parsed mode.
*/
-uint32 mob_read_db_mode_sub(struct mob_db *entry, struct config_setting_t *t)
+static uint32 mob_read_db_mode_sub(struct mob_db *entry, struct config_setting_t *t)
{
uint32 mode = 0;
struct config_setting_t *t2;
@@ -3878,7 +3939,7 @@ uint32 mob_read_db_mode_sub(struct mob_db *entry, struct config_setting_t *t)
* (mob_id is expected to be already set).
* @param[in] t The libconfig entry.
*/
-void mob_read_db_mvpdrops_sub(struct mob_db *entry, struct config_setting_t *t)
+static void mob_read_db_mvpdrops_sub(struct mob_db *entry, struct config_setting_t *t)
{
struct config_setting_t *drop;
int i = 0;
@@ -3935,7 +3996,7 @@ void mob_read_db_mvpdrops_sub(struct mob_db *entry, struct config_setting_t *t)
* (mob_id, status.mode are expected to be already set).
* @param[in] t The libconfig entry.
*/
-void mob_read_db_drops_sub(struct mob_db *entry, struct config_setting_t *t)
+static void mob_read_db_drops_sub(struct mob_db *entry, struct config_setting_t *t)
{
struct config_setting_t *drop;
int i = 0;
@@ -4061,7 +4122,7 @@ void mob_read_db_drops_sub(struct mob_db *entry, struct config_setting_t *t)
* (i.e. mob_db2 inheritance), as it will make sure not to free any data still
* in use by the new entry.
*/
-int mob_db_validate_entry(struct mob_db *entry, int n, const char *source)
+static int mob_db_validate_entry(struct mob_db *entry, int n, const char *source)
{
struct mob_data data;
@@ -4164,7 +4225,7 @@ int mob_db_validate_entry(struct mob_db *entry, int n, const char *source)
* validation errors.
* @return Mob ID of the validated entry, or 0 in case of failure.
*/
-int mob_read_db_sub(struct config_setting_t *mobt, int n, const char *source)
+static int mob_read_db_sub(struct config_setting_t *mobt, int n, const char *source)
{
struct mob_db md = { 0 };
struct config_setting_t *t = NULL;
@@ -4473,12 +4534,12 @@ int mob_read_db_sub(struct config_setting_t *mobt, int n, const char *source)
* @param[in] source Source of the entry (file name), to be displayed in
* case of validation errors.
*/
-void mob_read_db_additional_fields(struct mob_db *entry, struct config_setting_t *t, int n, const char *source)
+static void mob_read_db_additional_fields(struct mob_db *entry, struct config_setting_t *t, int n, const char *source)
{
// do nothing. plugins can do own work
}
-bool mob_lookup_const(const struct config_setting_t *it, const char *name, int *value)
+static bool mob_lookup_const(const struct config_setting_t *it, const char *name, int *value)
{
if (libconfig->setting_lookup_int(it, name, value))
{
@@ -4496,7 +4557,7 @@ bool mob_lookup_const(const struct config_setting_t *it, const char *name, int *
return false;
}
-bool mob_get_const(const struct config_setting_t *it, int *value)
+static bool mob_get_const(const struct config_setting_t *it, int *value)
{
const char *str = config_setting_get_string(it);
@@ -4511,7 +4572,8 @@ bool mob_get_const(const struct config_setting_t *it, int *value)
/*==========================================
* mob_db.txt reading
*------------------------------------------*/
-void mob_readdb(void) {
+static void mob_readdb(void)
+{
const char* filename[] = {
DBPATH"mob_db.conf",
"mob_db2.conf" };
@@ -4532,7 +4594,7 @@ void mob_readdb(void) {
* @param ignore_missing Whether to ignore errors caused by a missing db file.
* @return the number of found entries.
*/
-int mob_read_libconfig(const char *filename, bool ignore_missing)
+static int mob_read_libconfig(const char *filename, bool ignore_missing)
{
bool duplicate[MAX_MOB_DB] = { 0 };
struct config_t mob_db_conf;
@@ -4576,7 +4638,8 @@ int mob_read_libconfig(const char *filename, bool ignore_missing)
return count;
}
-void mob_name_constants(void) {
+static void mob_name_constants(void)
+{
int i;
#ifdef ENABLE_CASE_CHECK
script->parser_current_file = "Mob Database (Likely an invalid or conflicting SpriteName)";
@@ -4593,7 +4656,7 @@ void mob_name_constants(void) {
/*==========================================
* MOB display graphic change data reading
*------------------------------------------*/
-bool mob_readdb_mobavail(char* str[], int columns, int current)
+static bool mob_readdb_mobavail(char *str[], int columns, int current)
{
int class_, view_class;
@@ -4635,7 +4698,7 @@ bool mob_readdb_mobavail(char* str[], int columns, int current)
/*==========================================
* Reading of random monster data
*------------------------------------------*/
-int mob_read_randommonster(void)
+static int mob_read_randommonster(void)
{
char line[1024];
char *str[10],*p;
@@ -4702,7 +4765,7 @@ int mob_read_randommonster(void)
* processes one mob_chat_db entry [SnakeDrak]
* @param last_msg_id ensures that only one error message per mob id is printed
*------------------------------------------*/
-bool mob_parse_row_chatdb(char** str, const char* source, int line, int* last_msg_id)
+static bool mob_parse_row_chatdb(char **str, const char *source, int line, int *last_msg_id)
{
char* msg;
struct mob_chat *ms;
@@ -4762,7 +4825,8 @@ bool mob_parse_row_chatdb(char** str, const char* source, int line, int* last_ms
/*==========================================
* mob_chat_db.txt reading [SnakeDrak]
*-------------------------------------------------------------------------*/
-void mob_readchatdb(void) {
+static void mob_readchatdb(void)
+{
char arc[]="mob_chat_db.txt";
uint32 lines=0, count=0;
char line[1024], filepath[256];
@@ -4815,7 +4879,7 @@ void mob_readchatdb(void) {
/*==========================================
* processes one mob_skill_db entry
*------------------------------------------*/
-bool mob_skill_db_libconfig(const char *filename, bool ignore_missing)
+static bool mob_skill_db_libconfig(const char *filename, bool ignore_missing)
{
struct config_t mob_skill_conf;
struct config_setting_t *it = NULL, *its = NULL, *mob_skill = NULL;
@@ -4849,7 +4913,7 @@ bool mob_skill_db_libconfig(const char *filename, bool ignore_missing)
return true;
}
-bool mob_skill_db_libconfig_sub(struct config_setting_t *it, int n)
+static bool mob_skill_db_libconfig_sub(struct config_setting_t *it, int n)
{
int i = 0;
int mob_id;
@@ -4877,7 +4941,7 @@ bool mob_skill_db_libconfig_sub(struct config_setting_t *it, int n)
return true;
}
-bool mob_skill_db_libconfig_sub_skill(struct config_setting_t *it, int n, int mob_id)
+static bool mob_skill_db_libconfig_sub_skill(struct config_setting_t *it, int n, int mob_id)
{
int i, j, idx = 0;
int i32;
@@ -5053,7 +5117,8 @@ bool mob_skill_db_libconfig_sub_skill(struct config_setting_t *it, int n, int mo
/*==========================================
* mob_skill_db.txt reading
*------------------------------------------*/
-void mob_readskilldb(void) {
+static void mob_readskilldb(void)
+{
const char *filename[] = {
DBPATH"mob_skill_db.conf",
@@ -5074,7 +5139,7 @@ void mob_readskilldb(void) {
/*==========================================
* mob_race2_db.txt reading
*------------------------------------------*/
-bool mob_readdb_race2(char* fields[], int columns, int current)
+static bool mob_readdb_race2(char *fields[], int columns, int current)
{
int race, i;
@@ -5100,9 +5165,10 @@ bool mob_readdb_race2(char* fields[], int columns, int current)
/**
* Read mob_item_ratio.txt
*/
-bool mob_readdb_itemratio(char* str[], int columns, int current)
+static bool mob_readdb_itemratio(char *str[], int columns, int current)
{
int nameid, ratio, i;
+ struct item_drop_ratio *dropRatio;
nullpo_retr(false, str);
nameid = atoi(str[0]);
@@ -5115,12 +5181,15 @@ bool mob_readdb_itemratio(char* str[], int columns, int current)
ratio = atoi(str[1]);
- if(item_drop_ratio_db[nameid] == NULL)
- item_drop_ratio_db[nameid] = (struct item_drop_ratio*)aCalloc(1, sizeof(struct item_drop_ratio));
+ dropRatio = mob->get_item_drop_ratio(nameid);
+ if (dropRatio == NULL) {
+ dropRatio = (struct item_drop_ratio*)aCalloc(1, sizeof(struct item_drop_ratio));
+ mob->set_item_drop_ratio(nameid, dropRatio);
+ }
- item_drop_ratio_db[nameid]->drop_ratio = ratio;
- for(i = 0; i < columns-2; i++)
- item_drop_ratio_db[nameid]->mob_id[i] = atoi(str[i+2]);
+ dropRatio->drop_ratio = ratio;
+ for (i = 0; i < columns - 2; i++)
+ dropRatio->mob_id[i] = atoi(str[i + 2]);
return true;
}
@@ -5128,7 +5197,8 @@ bool mob_readdb_itemratio(char* str[], int columns, int current)
/**
* read all mob-related databases
*/
-void mob_load(bool minimal) {
+static void mob_load(bool minimal)
+{
if (minimal) {
// Only read the mob db in minimal mode
mob->readdb();
@@ -5143,7 +5213,21 @@ void mob_load(bool minimal) {
sv->readdb(map->db_path, DBPATH"mob_race2_db.txt", ',', 2, 20, -1, mob->readdb_race2);
}
-void mob_reload(void) {
+/**
+ * @see DBApply
+ */
+static int mob_final_ratio_sub(union DBKey key, struct DBData *data, va_list ap)
+{
+ struct item_drop_ratio *ratio = DB->data2ptr(data);
+
+ if (ratio)
+ aFree(ratio);
+
+ return 0;
+}
+
+static void mob_reload(void)
+{
int i;
//Mob skills need to be cleared before re-reading them. [Skotlex]
@@ -5160,6 +5244,7 @@ void mob_reload(void) {
item_drop_ratio_db[i] = NULL;
}
}
+ mob->item_drop_ratio_other_db->clear(mob->item_drop_ratio_other_db, mob->final_ratio_sub);
mob->load(false);
}
@@ -5167,7 +5252,7 @@ void mob_reload(void) {
/**
* Clears spawn related information for a script reload.
*/
-void mob_clear_spawninfo(void)
+static void mob_clear_spawninfo(void)
{
int i;
for (i = 0; i < MAX_MOB_DB; i++)
@@ -5178,7 +5263,8 @@ void mob_clear_spawninfo(void)
/*==========================================
* Circumference initialization of mob
*------------------------------------------*/
-int do_init_mob(bool minimal) {
+static int do_init_mob(bool minimal)
+{
// Initialize the mob database
memset(mob->db_data,0,sizeof(mob->db_data)); //Clear the array
mob->db_data[0] = (struct mob_db*)aCalloc(1, sizeof (struct mob_db)); //This mob is used for random spawns
@@ -5205,7 +5291,7 @@ int do_init_mob(bool minimal) {
return 0;
}
-void mob_destroy_mob_db(int index)
+static void mob_destroy_mob_db(int index)
{
struct mob_db *data;
Assert_retv(index >= 0 && index <= MAX_MOB_DB);
@@ -5218,7 +5304,7 @@ void mob_destroy_mob_db(int index)
/*==========================================
* Clean memory usage.
*------------------------------------------*/
-int do_final_mob(void)
+static int do_final_mob(void)
{
int i;
if (mob->dummy)
@@ -5249,12 +5335,15 @@ int do_final_mob(void)
item_drop_ratio_db[i] = NULL;
}
}
+ mob->item_drop_ratio_other_db->clear(mob->item_drop_ratio_other_db, mob->final_ratio_sub);
+ db_destroy(mob->item_drop_ratio_other_db);
ers_destroy(item_drop_ers);
ers_destroy(item_drop_list_ers);
return 0;
}
-void mob_defaults(void) {
+void mob_defaults(void)
+{
// Defines the Manuk/Splendide/Mora mob groups for the status reductions [Epoque & Frost]
const int mob_manuk[8] = {
MOBID_TATACHO,
@@ -5291,6 +5380,10 @@ void mob_defaults(void) {
memcpy(mob->splendide, mob_splendide, sizeof(mob->splendide));
memcpy(mob->mora, mob_mora, sizeof(mob->mora));
+ item_drop_ratio_other_db = idb_alloc(DB_OPT_BASE);
+ mob->item_drop_ratio_db = item_drop_ratio_db;
+ mob->item_drop_ratio_other_db = item_drop_ratio_other_db;
+
/* */
mob->reload = mob_reload;
mob->init = do_init_mob;
@@ -5395,6 +5488,9 @@ void mob_defaults(void) {
mob->readdb_race2 = mob_readdb_race2;
mob->readdb_itemratio = mob_readdb_itemratio;
mob->load = mob_load;
+ mob->get_item_drop_ratio = mob_get_item_drop_ratio;
+ mob->set_item_drop_ratio = mob_set_item_drop_ratio;
+ mob->final_ratio_sub = mob_final_ratio_sub;
mob->clear_spawninfo = mob_clear_spawninfo;
mob->destroy_mob_db = mob_destroy_mob_db;
mob->skill_db_libconfig = mob_skill_db_libconfig;
diff --git a/src/map/mob.h b/src/map/mob.h
index 3ff3f213b..4cb3877ed 100644
--- a/src/map/mob.h
+++ b/src/map/mob.h
@@ -25,6 +25,7 @@
#include "map/status.h" // struct status_data, struct status_change
#include "map/unit.h" // struct unit_data, view_data
#include "common/hercules.h"
+#include "common/db.h"
#include "common/mmo.h" // struct item
struct hplugin_data_store;
@@ -72,6 +73,8 @@ struct hplugin_data_store;
// Disable this to make monsters not do any path search when looking for a target (old behavior).
#define ACTIVEPATHSEARCH
+struct item_drop_ratio;
+
enum e_bosstype {
BTYPE_NONE = 0,
BTYPE_BOSS = 1,
@@ -437,6 +440,8 @@ struct mob_interface {
int manuk[8];
int splendide[5];
int mora[5];
+ struct item_drop_ratio **item_drop_ratio_db;
+ struct DBMap *item_drop_ratio_other_db;
/* */
int (*init) (bool mimimal);
int (*final) (void);
@@ -543,6 +548,9 @@ struct mob_interface {
bool (*readdb_itemratio) (char *str[], int columns, int current);
void (*load) (bool minimal);
void (*clear_spawninfo) (void);
+ struct item_drop_ratio *(*get_item_drop_ratio) (int nameid);
+ void (*set_item_drop_ratio) (int nameid, struct item_drop_ratio *ratio);
+ int (*final_ratio_sub) (union DBKey key, struct DBData *data, va_list ap);
void (*destroy_mob_db) (int index);
bool (*skill_db_libconfig) (const char *filename, bool ignore_missing);
bool (*skill_db_libconfig_sub) (struct config_setting_t *it, int n);
diff --git a/src/map/npc.c b/src/map/npc.c
index 8172c962d..383558eaf 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -60,7 +60,7 @@
#include <string.h>
#include <time.h>
-struct npc_interface npc_s;
+static struct npc_interface npc_s;
struct npc_interface *npc;
@@ -69,7 +69,7 @@ static struct view_data npc_viewdb[MAX_NPC_CLASS];
static struct view_data npc_viewdb2[MAX_NPC_CLASS2_END-MAX_NPC_CLASS2_START];
/* for speedup */
-unsigned int npc_market_qty[MAX_INVENTORY];
+static unsigned int npc_market_qty[MAX_INVENTORY];
static struct script_event_s {
//Holds pointers to the commonly executed scripts for speedup. [Skotlex]
@@ -83,7 +83,7 @@ static struct script_event_s {
* @param class_ The NPC class ID.
* @return The viewdata, or NULL if the ID is invalid.
*/
-struct view_data *npc_get_viewdata(int class_)
+static struct view_data *npc_get_viewdata(int class_)
{
if (class_ == INVISIBLE_CLASS)
return &npc_viewdb[0];
@@ -105,7 +105,7 @@ struct view_data *npc_get_viewdata(int class_)
* @param id The NPC ID to validate.
* @return Whether the value is a valid ID.
*/
-bool npc_db_checkid(int id)
+static bool npc_db_checkid(int id)
{
if (id >= WARP_CLASS && id <= 125) // First subrange
return true;
@@ -123,7 +123,8 @@ bool npc_db_checkid(int id)
/// Returns a new npc id that isn't being used in id_db.
/// Fatal error if nothing is available.
-int npc_get_new_npc_id(void) {
+static int npc_get_new_npc_id(void)
+{
if (npc->npc_id >= START_NPC_NUM && !map->blid_exists(npc->npc_id))
return npc->npc_id++;// available
else {// find next id
@@ -140,7 +141,7 @@ int npc_get_new_npc_id(void) {
}
}
-int npc_isnear_sub(struct block_list *bl, va_list args)
+static int npc_isnear_sub(struct block_list *bl, va_list args)
{
const struct npc_data *nd = NULL;
@@ -157,7 +158,8 @@ int npc_isnear_sub(struct block_list *bl, va_list args)
return 1;
}
-bool npc_isnear(struct block_list * bl) {
+static bool npc_isnear(struct block_list *bl)
+{
if( battle_config.min_npc_vendchat_distance > 0
&& map->foreachinrange(npc->isnear_sub,bl, battle_config.min_npc_vendchat_distance, BL_NPC) )
return true;
@@ -165,7 +167,7 @@ bool npc_isnear(struct block_list * bl) {
return false;
}
-int npc_ontouch_event(struct map_session_data *sd, struct npc_data *nd)
+static int npc_ontouch_event(struct map_session_data *sd, struct npc_data *nd)
{
char name[EVENT_NAME_LENGTH];
@@ -180,7 +182,7 @@ int npc_ontouch_event(struct map_session_data *sd, struct npc_data *nd)
return npc->event(sd,name,1);
}
-int npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd)
+static int npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd)
{
char name[EVENT_NAME_LENGTH];
@@ -193,7 +195,7 @@ int npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd)
return npc->event(sd, name, 2);
}
-int npc_onuntouch_event(struct map_session_data *sd, struct npc_data *nd)
+static int npc_onuntouch_event(struct map_session_data *sd, struct npc_data *nd)
{
char name[EVENT_NAME_LENGTH];
@@ -209,7 +211,7 @@ int npc_onuntouch_event(struct map_session_data *sd, struct npc_data *nd)
/*==========================================
* Sub-function of npc_enable, runs OnTouch event when enabled
*------------------------------------------*/
-int npc_enable_sub(struct block_list *bl, va_list ap)
+static int npc_enable_sub(struct block_list *bl, va_list ap)
{
struct npc_data *nd;
@@ -237,7 +239,7 @@ int npc_enable_sub(struct block_list *bl, va_list ap)
/*==========================================
* Disable / Enable NPC
*------------------------------------------*/
-int npc_enable(const char* name, int flag)
+static int npc_enable(const char *name, int flag)
{
struct npc_data* nd = npc->name2id(name);
@@ -275,7 +277,7 @@ int npc_enable(const char* name, int flag)
/*==========================================
* NPC lookup (get npc_data through npcname)
*------------------------------------------*/
-struct npc_data *npc_name2id(const char *name)
+static struct npc_data *npc_name2id(const char *name)
{
return strdb_get(npc->name_db, name);
}
@@ -285,7 +287,8 @@ struct npc_data *npc_name2id(const char *name)
/**
* Timer to check for idle time and timeout the dialog if necessary
**/
-int npc_rr_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
+static int npc_rr_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data)
+{
#ifdef SECURE_NPCTIMEOUT
struct map_session_data* sd = NULL;
unsigned int timeout = NPC_SECURE_TIMEOUT_NEXT;
@@ -332,7 +335,7 @@ int npc_rr_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Dequeue event and add timer for execution (100ms)
*------------------------------------------*/
-int npc_event_dequeue(struct map_session_data* sd)
+static int npc_event_dequeue(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -364,7 +367,7 @@ int npc_event_dequeue(struct map_session_data* sd)
/**
* @see DBCreateData
*/
-struct DBData npc_event_export_create(union DBKey key, va_list args)
+static struct DBData npc_event_export_create(union DBKey key, va_list args)
{
struct linkdb_node** head_ptr;
CREATE(head_ptr, struct linkdb_node*, 1);
@@ -376,7 +379,7 @@ struct DBData npc_event_export_create(union DBKey key, va_list args)
* exports a npc event label
* called from npc_parse_script
*------------------------------------------*/
-int npc_event_export(struct npc_data *nd, int i)
+static int npc_event_export(struct npc_data *nd, int i)
{
char* lname;
int pos;
@@ -402,13 +405,13 @@ int npc_event_export(struct npc_data *nd, int i)
return 0;
}
-int npc_event_sub(struct map_session_data* sd, struct event_data* ev, const char* eventname); //[Lance]
+static int npc_event_sub(struct map_session_data *sd, struct event_data *ev, const char *eventname); //[Lance]
/**
* Exec name (NPC events) on player or global
* Do on all NPC when called with foreach
*/
-void npc_event_doall_sub(void *key, void *data, va_list ap)
+static void npc_event_doall_sub(void *key, void *data, va_list ap)
{
struct event_data* ev = data;
int* c;
@@ -434,7 +437,7 @@ void npc_event_doall_sub(void *key, void *data, va_list ap)
}
// runs the specified event (supports both single-npc and global events)
-int npc_event_do(const char* name)
+static int npc_event_do(const char *name)
{
nullpo_ret(name);
if( name[0] == ':' && name[1] == ':' ) {
@@ -451,7 +454,7 @@ int npc_event_do(const char* name)
}
// runs the specified event, with a RID attached (global only)
-int npc_event_doall_id(const char* name, int rid)
+static int npc_event_doall_id(const char *name, int rid)
{
int c = 0;
struct linkdb_node **label_linkdb = strdb_get(npc->ev_label_db, name);
@@ -464,7 +467,7 @@ int npc_event_doall_id(const char* name, int rid)
}
// runs the specified event (global only)
-int npc_event_doall(const char* name)
+static int npc_event_doall(const char *name)
{
return npc->event_doall_id(name, 0);
}
@@ -473,7 +476,8 @@ int npc_event_doall(const char* name)
* Clock event execution
* OnMinute/OnClock/OnHour/OnDay/OnDDHHMM
*------------------------------------------*/
-int npc_event_do_clock(int tid, int64 tick, int id, intptr_t data) {
+static int npc_event_do_clock(int tid, int64 tick, int id, intptr_t data)
+{
static struct tm ev_tm_b; // tracks previous execution time
time_t clock;
struct tm* t;
@@ -525,7 +529,7 @@ int npc_event_do_clock(int tid, int64 tick, int id, intptr_t data) {
* OnInit event execution (the start of the event and watch)
* @param reload Is the server reloading?
**/
-void npc_event_do_oninit( bool reload )
+static void npc_event_do_oninit(bool reload)
{
ShowStatus("Event '"CL_WHITE"OnInit"CL_RESET"' executed with '"CL_WHITE"%d"CL_RESET"' NPCs."CL_CLL"\n", npc->event_doall("OnInit"));
@@ -538,7 +542,7 @@ void npc_event_do_oninit( bool reload )
* Incorporation of the label for the timer event
* called from npc_parse_script
*------------------------------------------*/
-int npc_timerevent_export(struct npc_data *nd, int i)
+static int npc_timerevent_export(struct npc_data *nd, int i)
{
int t = 0, len = 0;
char *lname;
@@ -577,7 +581,7 @@ struct timer_event_data {
/*==========================================
* triger 'OnTimerXXXX' events
*------------------------------------------*/
-int npc_timerevent(int tid, int64 tick, int id, intptr_t data)
+static int npc_timerevent(int tid, int64 tick, int id, intptr_t data)
{
int old_rid, old_timer;
int64 old_tick;
@@ -648,7 +652,8 @@ int npc_timerevent(int tid, int64 tick, int id, intptr_t data)
/*==========================================
* Start/Resume NPC timer
*------------------------------------------*/
-int npc_timerevent_start(struct npc_data* nd, int rid) {
+static int npc_timerevent_start(struct npc_data *nd, int rid)
+{
int j;
int64 tick = timer->gettick();
struct map_session_data *sd = NULL; //Player to whom script is attached.
@@ -700,7 +705,7 @@ int npc_timerevent_start(struct npc_data* nd, int rid) {
/*==========================================
* Stop NPC timer
*------------------------------------------*/
-int npc_timerevent_stop(struct npc_data* nd)
+static int npc_timerevent_stop(struct npc_data *nd)
{
struct map_session_data *sd = NULL;
int *tid;
@@ -734,7 +739,7 @@ int npc_timerevent_stop(struct npc_data* nd)
/*==========================================
* Aborts a running NPC timer that is attached to a player.
*------------------------------------------*/
-void npc_timerevent_quit(struct map_session_data* sd)
+static void npc_timerevent_quit(struct map_session_data *sd)
{
const struct TimerData *td;
struct npc_data* nd;
@@ -799,7 +804,8 @@ void npc_timerevent_quit(struct map_session_data* sd)
* Get the tick value of an NPC timer
* If it's stopped, return stopped time
*------------------------------------------*/
-int64 npc_gettimerevent_tick(struct npc_data* nd) {
+static int64 npc_gettimerevent_tick(struct npc_data *nd)
+{
int64 tick;
nullpo_ret(nd);
@@ -815,7 +821,7 @@ int64 npc_gettimerevent_tick(struct npc_data* nd) {
/*==========================================
* Set tick for running and stopped timer
*------------------------------------------*/
-int npc_settimerevent_tick(struct npc_data* nd, int newtimer)
+static int npc_settimerevent_tick(struct npc_data *nd, int newtimer)
{
bool flag;
int old_rid;
@@ -839,7 +845,7 @@ int npc_settimerevent_tick(struct npc_data* nd, int newtimer)
return 0;
}
-int npc_event_sub(struct map_session_data* sd, struct event_data* ev, const char* eventname)
+static int npc_event_sub(struct map_session_data *sd, struct event_data *ev, const char *eventname)
{
nullpo_retr(2, sd);
nullpo_retr(2, eventname);
@@ -870,7 +876,7 @@ int npc_event_sub(struct map_session_data* sd, struct event_data* ev, const char
/*==========================================
* NPC processing event type
*------------------------------------------*/
-int npc_event(struct map_session_data* sd, const char* eventname, int ontouch)
+static int npc_event(struct map_session_data *sd, const char *eventname, int ontouch)
{
struct event_data* ev = (struct event_data*)strdb_get(npc->ev_db, eventname);
struct npc_data *nd;
@@ -899,7 +905,8 @@ int npc_event(struct map_session_data* sd, const char* eventname, int ontouch)
/*==========================================
* Sub chk then execute area event type
*------------------------------------------*/
-int npc_touch_areanpc_sub(struct block_list *bl, va_list ap) {
+static int npc_touch_areanpc_sub(struct block_list *bl, va_list ap)
+{
struct map_session_data *sd;
int pc_id;
char *name;
@@ -926,7 +933,8 @@ int npc_touch_areanpc_sub(struct block_list *bl, va_list ap) {
* Chk if sd is still touching his assigned npc.
* If not, it unsets it and searches for another player in range.
*------------------------------------------*/
-int npc_touchnext_areanpc(struct map_session_data* sd, bool leavemap) {
+static int npc_touchnext_areanpc(struct map_session_data *sd, bool leavemap)
+{
struct npc_data *nd;
short xs, ys;
@@ -955,7 +963,7 @@ int npc_touchnext_areanpc(struct map_session_data* sd, bool leavemap) {
/*==========================================
* Exec OnTouch for player if in range of area event
*------------------------------------------*/
-int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
+static int npc_touch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16 y)
{
int xs,ys;
int f = 1;
@@ -1044,7 +1052,7 @@ int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
/*==========================================
* Exec OnUnTouch for player if out range of area event
*------------------------------------------*/
-int npc_untouch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
+static int npc_untouch_areanpc(struct map_session_data *sd, int16 m, int16 x, int16 y)
{
struct npc_data *nd = NULL;
nullpo_retr(1, sd);
@@ -1066,7 +1074,7 @@ int npc_untouch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y)
// OnTouch NPC or Warp for Mobs
// Return 1 if Warped
-int npc_touch_areanpc2(struct mob_data *md)
+static int npc_touch_areanpc2(struct mob_data *md)
{
int i, m, x, y, id;
char eventname[EVENT_NAME_LENGTH];
@@ -1131,7 +1139,8 @@ int npc_touch_areanpc2(struct mob_data *md)
//Flag determines the type of object to check for:
//&1: NPC Warps
//&2: NPCs with on-touch events.
-int npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range) {
+static int npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range)
+{
int i;
int x0,y0,x1,y1;
int xs,ys;
@@ -1190,7 +1199,7 @@ int npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range) {
* Chk if player not too far to access the npc.
* Returns npc_data (success) or NULL (fail).
*------------------------------------------*/
-struct npc_data* npc_checknear(struct map_session_data* sd, struct block_list* bl)
+static struct npc_data *npc_checknear(struct map_session_data *sd, struct block_list *bl)
{
struct npc_data *nd = BL_CAST(BL_NPC, bl);
int distance = AREA_SIZE + 1;
@@ -1223,7 +1232,7 @@ struct npc_data* npc_checknear(struct map_session_data* sd, struct block_list* b
/*==========================================
* Make NPC talk in global chat (like npctalk)
*------------------------------------------*/
-int npc_globalmessage(const char* name, const char* mes)
+static int npc_globalmessage(const char *name, const char *mes)
{
struct npc_data* nd = npc->name2id(name);
char temp[100];
@@ -1241,7 +1250,8 @@ int npc_globalmessage(const char* name, const char* mes)
}
// MvP tomb [GreenBox]
-void run_tomb(struct map_session_data* sd, struct npc_data* nd) {
+static void run_tomb(struct map_session_data *sd, struct npc_data *nd)
+{
char buffer[200];
char time[10];
@@ -1269,7 +1279,7 @@ void run_tomb(struct map_session_data* sd, struct npc_data* nd) {
* NPC 1st call when clicking on npc
* Do specific action for NPC type (openshop, run scripts...)
*------------------------------------------*/
-int npc_click(struct map_session_data* sd, struct npc_data* nd)
+static int npc_click(struct map_session_data *sd, struct npc_data *nd)
{
nullpo_retr(1, sd);
@@ -1323,7 +1333,8 @@ int npc_click(struct map_session_data* sd, struct npc_data* nd)
/*==========================================
*
*------------------------------------------*/
-int npc_scriptcont(struct map_session_data* sd, int id, bool closing) {
+static int npc_scriptcont(struct map_session_data *sd, int id, bool closing)
+{
struct block_list *target = map->id2bl(id);
nullpo_retr(1, sd);
@@ -1372,7 +1383,8 @@ int npc_scriptcont(struct map_session_data* sd, int id, bool closing) {
/*==========================================
* Chk if valid call then open buy or selling list
*------------------------------------------*/
-int npc_buysellsel(struct map_session_data* sd, int id, int type) {
+static int npc_buysellsel(struct map_session_data *sd, int id, int type)
+{
struct npc_data *nd;
nullpo_retr(1, sd);
@@ -1411,9 +1423,9 @@ int npc_buysellsel(struct map_session_data* sd, int id, int type) {
}
/*==========================================
-* Cash Shop Buy List
-*------------------------------------------*/
-int npc_cashshop_buylist(struct map_session_data *sd, int points, struct itemlist *item_list)
+ * Cash Shop Buy List
+ *------------------------------------------*/
+static int npc_cashshop_buylist(struct map_session_data *sd, int points, struct itemlist *item_list)
{
int i, j, new_, w, vt;
struct npc_data *nd = NULL;
@@ -1514,7 +1526,7 @@ int npc_cashshop_buylist(struct map_session_data *sd, int points, struct itemlis
}
//npc_buylist for script-controlled shops.
-int npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
+static int npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
{
char npc_ev[EVENT_NAME_LENGTH];
int i;
@@ -1546,7 +1558,7 @@ int npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list, str
/**
* Loads persistent NPC Market Data from SQL
**/
-void npc_market_fromsql(void)
+static void npc_market_fromsql(void)
{
struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
char name[NAME_LENGTH+1];
@@ -1597,7 +1609,8 @@ void npc_market_fromsql(void)
/**
* Saves persistent NPC Market Data into SQL
**/
-void npc_market_tosql(struct npc_data *nd, unsigned short index) {
+static void npc_market_tosql(struct npc_data *nd, unsigned short index)
+{
nullpo_retv(nd);
Assert_retv(index < nd->u.scr.shop->items);
if (SQL_ERROR == SQL->Query(map->mysql_handle, "REPLACE INTO `%s` VALUES ('%s','%d','%u')",
@@ -1607,7 +1620,8 @@ void npc_market_tosql(struct npc_data *nd, unsigned short index) {
/**
* Removes persistent NPC Market Data from SQL
*/
-void npc_market_delfromsql_sub(const char *npcname, unsigned short index) {
+static void npc_market_delfromsql_sub(const char *npcname, unsigned short index)
+{
if( index == USHRT_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);
@@ -1620,7 +1634,8 @@ void npc_market_delfromsql_sub(const char *npcname, unsigned short index) {
/**
* Removes persistent NPC Market Data from SQL
**/
-void npc_market_delfromsql(struct npc_data *nd, unsigned short index) {
+static void npc_market_delfromsql(struct npc_data *nd, unsigned short 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);
@@ -1628,7 +1643,8 @@ void npc_market_delfromsql(struct npc_data *nd, unsigned short index) {
/**
* Judges whether to allow and spawn a trader's window.
**/
-bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
+static bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd)
+{
nullpo_retr(false, sd);
nullpo_retr(false, nd);
if( !nd->u.scr.shop || !nd->u.scr.shop->items )
@@ -1668,7 +1684,8 @@ bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
*
* @param master id of the original npc
**/
-void npc_trader_update(int master) {
+static void npc_trader_update(int master)
+{
struct DBIterator *iter;
struct block_list* bl;
struct npc_data *master_nd = map->id2nd(master);
@@ -1692,7 +1709,8 @@ void npc_trader_update(int master) {
* @param nd shop
* @param sd player
**/
-void npc_trader_count_funds(struct npc_data *nd, struct map_session_data *sd) {
+static void npc_trader_count_funds(struct npc_data *nd, struct map_session_data *sd)
+{
char evname[EVENT_NAME_LENGTH];
struct event_data *ev = NULL;
@@ -1732,7 +1750,8 @@ void npc_trader_count_funds(struct npc_data *nd, struct map_session_data *sd) {
*
* @return bool whether it was successful (if the script does not respond it will fail)
**/
-bool npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int price, int points) {
+static bool npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int price, int points)
+{
char evname[EVENT_NAME_LENGTH];
struct event_data *ev = NULL;
@@ -1753,7 +1772,8 @@ bool npc_trader_pay(struct npc_data *nd, struct map_session_data *sd, int price,
/*==========================================
* Cash Shop Buy
*------------------------------------------*/
-int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int points) {
+static int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int points)
+{
struct npc_data *nd = NULL;
struct item_data *item;
struct npc_item_list *shop = NULL;
@@ -1858,7 +1878,7 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po
* @param item_list List of items.
* @return result code for clif->parse_NpcBuyListSend.
*/
-int npc_buylist(struct map_session_data *sd, struct itemlist *item_list)
+static int npc_buylist(struct map_session_data *sd, struct itemlist *item_list)
{
struct npc_data* nd;
struct npc_item_list *shop = NULL;
@@ -1981,7 +2001,7 @@ int npc_buylist(struct map_session_data *sd, struct itemlist *item_list)
/**
* Processes incoming npc market purchase list
**/
-int npc_market_buylist(struct map_session_data *sd, struct itemlist *item_list)
+static int npc_market_buylist(struct map_session_data *sd, struct itemlist *item_list)
{
struct npc_data* nd;
struct npc_item_list *shop = NULL;
@@ -2088,7 +2108,7 @@ int npc_market_buylist(struct map_session_data *sd, struct itemlist *item_list)
}
/// npc_selllist for script-controlled shops
-int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
+static int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
{
char npc_ev[EVENT_NAME_LENGTH];
char card_slot[NAME_LENGTH];
@@ -2181,7 +2201,7 @@ int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, st
///
/// @param item_list 'n' pairs <index,amount>
/// @return result code for clif->parse_NpcSellListSend
-int npc_selllist(struct map_session_data *sd, struct itemlist *item_list)
+static int npc_selllist(struct map_session_data *sd, struct itemlist *item_list)
{
int64 z;
int i,skill_t, skill_idx = skill->get_index(MC_OVERCHARGE);
@@ -2280,7 +2300,8 @@ int npc_selllist(struct map_session_data *sd, struct itemlist *item_list)
//Atempt to remove an npc from a map
//This doesn't remove it from map_db
-int npc_remove_map(struct npc_data* nd) {
+static int npc_remove_map(struct npc_data *nd)
+{
int16 m,i;
nullpo_retr(1, nd);
@@ -2303,7 +2324,7 @@ int npc_remove_map(struct npc_data* nd) {
/**
* @see DBApply
*/
-int npc_unload_ev(union DBKey key, struct DBData *data, va_list ap)
+static int npc_unload_ev(union DBKey key, struct DBData *data, va_list ap)
{
struct event_data* ev = DB->data2ptr(data);
char* npcname = va_arg(ap, char *);
@@ -2318,7 +2339,7 @@ int npc_unload_ev(union DBKey key, struct DBData *data, va_list ap)
/**
* @see DBApply
*/
-int npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap)
+static int npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap)
{
struct linkdb_node **label_linkdb = DB->data2ptr(data);
struct npc_data* nd = va_arg(ap, struct npc_data *);
@@ -2330,7 +2351,7 @@ int npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap)
//Chk if npc matches src_id, then unload.
//Sub-function used to find duplicates.
-int npc_unload_dup_sub(struct npc_data* nd, va_list args)
+static int npc_unload_dup_sub(struct npc_data *nd, va_list args)
{
int src_id;
@@ -2342,14 +2363,15 @@ int npc_unload_dup_sub(struct npc_data* nd, va_list args)
}
//Removes all npcs that are duplicates of the passed one. [Skotlex]
-void npc_unload_duplicates(struct npc_data* nd) {
+static void npc_unload_duplicates(struct npc_data *nd)
+{
nullpo_retv(nd);
map->foreachnpc(npc->unload_dup_sub,nd->bl.id);
}
//Removes an npc from map and db.
//Single is to free name (for duplicates).
-int npc_unload(struct npc_data* nd, bool single)
+static int npc_unload(struct npc_data *nd, bool single)
{
nullpo_ret(nd);
@@ -2449,7 +2471,7 @@ int npc_unload(struct npc_data* nd, bool single)
//
/// Clears the npc source file list
-void npc_clearsrcfile(void)
+static void npc_clearsrcfile(void)
{
struct npc_src_list* file = npc->src_files;
@@ -2466,7 +2488,7 @@ void npc_clearsrcfile(void)
*
* @param name The file name to add.
*/
-void npc_addsrcfile(const char *name)
+static void npc_addsrcfile(const char *name)
{
struct npc_src_list* file;
struct npc_src_list* file_prev = NULL;
@@ -2496,7 +2518,7 @@ void npc_addsrcfile(const char *name)
*
* @param name The file name to remove.
*/
-void npc_delsrcfile(const char *name)
+static void npc_delsrcfile(const char *name)
{
struct npc_src_list* file = npc->src_files;
struct npc_src_list* file_prev = NULL;
@@ -2523,7 +2545,7 @@ void npc_delsrcfile(const char *name)
* @param filepath The file path to retain.
* @return A retained reference to filepath.
*/
-const char *npc_retainpathreference(const char *filepath)
+static const char *npc_retainpathreference(const char *filepath)
{
struct npc_path_data * npd = NULL;
nullpo_ret(filepath);
@@ -2558,7 +2580,7 @@ const char *npc_retainpathreference(const char *filepath)
*
* @param filepath The file path to release.
*/
-void npc_releasepathreference(const char *filepath)
+static void npc_releasepathreference(const char *filepath)
{
struct npc_path_data* npd = NULL;
@@ -2577,7 +2599,8 @@ void npc_releasepathreference(const char *filepath)
/// Parses and sets the name and exname of a npc.
/// Assumes that m, x and y are already set in nd.
-void npc_parsename(struct npc_data* nd, const char* name, const char* start, const char* buffer, const char* filepath) {
+static void npc_parsename(struct npc_data *nd, const char *name, const char *start, const char *buffer, const char *filepath)
+{
const char* p;
struct npc_data* dnd;// duplicate npc
char newname[NAME_LENGTH];
@@ -2635,7 +2658,8 @@ void npc_parsename(struct npc_data* nd, const char* name, const char* start, con
// Parse View
// Support for using Constants in place of NPC View IDs.
-int npc_parseview(const char* w4, const char* start, const char* buffer, const char* filepath) {
+static int npc_parseview(const char *w4, const char *start, const char *buffer, const char *filepath)
+{
int val = FAKE_NPC, i = 0;
char viewid[1024]; // Max size of name from constants.conf, see script->read_constdb.
@@ -2669,7 +2693,7 @@ int npc_parseview(const char* w4, const char* start, const char* buffer, const c
// View is ID
// Checks if given view is an ID or constant.
-bool npc_viewisid(const char * viewid)
+static bool npc_viewisid(const char *viewid)
{
nullpo_retr(false, viewid);
if (atoi(viewid) != FAKE_NPC) {
@@ -2693,7 +2717,7 @@ 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).
*/
-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, int16 class_)
{
struct npc_data *nd;
@@ -2715,7 +2739,8 @@ struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, u
}
//Add then display an npc warp on map
-struct npc_data* 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) {
+static struct npc_data *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)
+{
int i, flag = 0;
struct npc_data *nd;
@@ -2762,7 +2787,7 @@ struct npc_data* npc_add_warp(char* name, short from_mapid, short from_x, short
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *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)
+static const char *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)
{
int x, y, xs, ys, to_x, to_y, m;
unsigned short i;
@@ -2829,7 +2854,7 @@ const char *npc_parse_warp(const char *w1, const char *w2, const char *w3, const
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_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)
+static const char *npc_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)
{
//TODO: could be rewritten to NOT need this temp array [ultramage]
// We could use nd->u.shop.shop_item to store directly the items, but this could lead
@@ -2956,7 +2981,8 @@ const char *npc_parse_shop(const char *w1, const char *w2, const char *w3, const
return strchr(start,'\n');// continue
}
-void npc_convertlabel_db(struct npc_label_list* label_list, const char *filepath) {
+static void npc_convertlabel_db(struct npc_label_list *label_list, const char *filepath)
+{
int i;
nullpo_retv(label_list);
@@ -2988,7 +3014,8 @@ void npc_convertlabel_db(struct npc_label_list* label_list, const char *filepath
}
// Skip the contents of a script.
-const char* npc_skip_script(const char* start, const char* buffer, const char* filepath, int *retval) {
+static const char *npc_skip_script(const char *start, const char *buffer, const char *filepath, int *retval)
+{
const char* p;
int curly_count;
@@ -3074,7 +3101,7 @@ const char* npc_skip_script(const char* start, const char* buffer, const char* f
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_script(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval)
+static const char *npc_parse_script(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval)
{
int x, y, dir = 0, m, xs = 0, ys = 0; // [Valaris] thanks to fov
struct script_code *scriptroot;
@@ -3194,7 +3221,7 @@ const char *npc_parse_script(const char *w1, const char *w2, const char *w3, con
*
* @param nd The NPC to register.
*/
-void npc_add_to_location(struct npc_data *nd)
+static void npc_add_to_location(struct npc_data *nd)
{
nullpo_retv(nd);
@@ -3218,7 +3245,7 @@ void npc_add_to_location(struct npc_data *nd)
/**
* Duplicates a script (@see npc_duplicate_sub)
*/
-bool npc_duplicate_script_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
+static bool npc_duplicate_script_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
{
int i;
bool retval = true;
@@ -3268,7 +3295,7 @@ bool npc_duplicate_script_sub(struct npc_data *nd, const struct npc_data *snd, i
/**
* Duplicates a shop or cash shop (@see npc_duplicate_sub)
*/
-bool npc_duplicate_shop_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
+static bool npc_duplicate_shop_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
{
nullpo_retr(false, nd);
nullpo_retr(false, snd);
@@ -3286,7 +3313,7 @@ bool npc_duplicate_shop_sub(struct npc_data *nd, const struct npc_data *snd, int
/**
* Duplicates a warp (@see npc_duplicate_sub)
*/
-bool npc_duplicate_warp_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
+static bool npc_duplicate_warp_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
{
nullpo_retr(false, nd);
nullpo_retr(false, snd);
@@ -3318,7 +3345,7 @@ bool npc_duplicate_warp_sub(struct npc_data *nd, const struct npc_data *snd, int
* @param options The NPC options.
* @retval false if there were any issues while creating and validating the NPC.
*/
-bool npc_duplicate_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
+static bool npc_duplicate_sub(struct npc_data *nd, const struct npc_data *snd, int xs, int ys, int options)
{
nullpo_retr(false, nd);
nullpo_retr(false, snd);
@@ -3376,7 +3403,7 @@ bool npc_duplicate_sub(struct npc_data *nd, const struct npc_data *snd, int xs,
* @remark
* Only `NPO_ONINIT` is available trough the options argument.
*/
-const char *npc_parse_duplicate(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval)
+static const char *npc_parse_duplicate(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int options, int *retval)
{
int x, y, dir, m, xs = -1, ys = -1;
char srcname[128];
@@ -3468,7 +3495,7 @@ const char *npc_parse_duplicate(const char *w1, const char *w2, const char *w3,
* @return success state.
* @retval 0 in case of successful creation.
*/
-int npc_duplicate4instance(struct npc_data *snd, int16 m)
+static int npc_duplicate4instance(struct npc_data *snd, int16 m)
{
char newname[NAME_LENGTH];
int dm = -1, im = -1, xs = -1, ys = -1;
@@ -3524,7 +3551,7 @@ int npc_duplicate4instance(struct npc_data *snd, int16 m)
}
//Set mapcell CELL_NPC to trigger event later
-void npc_setcells(struct npc_data* nd)
+static void npc_setcells(struct npc_data *nd)
{
int16 m, x, y, xs, ys;
int i,j;
@@ -3558,7 +3585,7 @@ void npc_setcells(struct npc_data* nd)
}
}
-int npc_unsetcells_sub(struct block_list *bl, va_list ap)
+static int npc_unsetcells_sub(struct block_list *bl, va_list ap)
{
struct npc_data *nd = NULL;
int id = va_arg(ap, int);
@@ -3573,7 +3600,8 @@ int npc_unsetcells_sub(struct block_list *bl, va_list ap)
return 1;
}
-void npc_unsetcells(struct npc_data* nd) {
+static void npc_unsetcells(struct npc_data *nd)
+{
int16 m, x, y, xs, ys;
int i,j, x0, x1, y0, y1;
@@ -3613,7 +3641,7 @@ void npc_unsetcells(struct npc_data* nd) {
map->foreachinarea( npc->unsetcells_sub, m, x0, y0, x1, y1, BL_NPC, nd->bl.id );
}
-void npc_movenpc(struct npc_data* nd, int16 x, int16 y)
+static void npc_movenpc(struct npc_data *nd, int16 x, int16 y)
{
int16 m;
nullpo_retv(nd);
@@ -3632,7 +3660,7 @@ void npc_movenpc(struct npc_data* nd, int16 x, int16 y)
///
/// @param nd Target npc
/// @param newname New display name
-void npc_setdisplayname(struct npc_data* nd, const char* newname)
+static void npc_setdisplayname(struct npc_data *nd, const char *newname)
{
nullpo_retv(nd);
nullpo_retv(newname);
@@ -3646,7 +3674,8 @@ void npc_setdisplayname(struct npc_data* nd, const char* newname)
///
/// @param nd Target npc
/// @param class_ New display class
-void npc_setclass(struct npc_data* nd, short class_) {
+static void npc_setclass(struct npc_data *nd, short class_)
+{
nullpo_retv(nd);
if( nd->class_ == class_ )
@@ -3660,7 +3689,7 @@ void npc_setclass(struct npc_data* nd, short class_) {
clif->spawn(&nd->bl);// fade in
}
-void npc_refresh(struct npc_data* nd)
+static void npc_refresh(struct npc_data *nd)
{
nullpo_retv(nd);
@@ -3673,7 +3702,7 @@ void npc_refresh(struct npc_data* nd)
}
// @commands (script based)
-int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const char* message, const char* eventname)
+static int npc_do_atcmd_event(struct map_session_data *sd, const char *command, const char *message, const char *eventname)
{
struct event_data* ev = (struct event_data*)strdb_get(npc->ev_db, eventname);
struct npc_data *nd;
@@ -3760,7 +3789,7 @@ int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const c
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *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)
+static const char *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)
{
struct DBMap *func_db;
struct DBData old_data;
@@ -3814,7 +3843,7 @@ const char *npc_parse_function(const char *w1, const char *w2, const char *w3, c
* Parse Mob 2 - Actually Spawns Mob
* [Wizputer]
*------------------------------------------*/
-void npc_parse_mob2(struct spawn_data* mobspawn)
+static void npc_parse_mob2(struct spawn_data *mobspawn)
{
int i;
@@ -3844,7 +3873,7 @@ void npc_parse_mob2(struct spawn_data* mobspawn)
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
+static const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
int num, class_, m,x,y,xs,ys, i,j;
int mob_lv = -1, ai = -1, size = -1;
@@ -4030,7 +4059,7 @@ const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const
*
* @see npc_parse_mapflag
*/
-void npc_parse_unknown_mapflag(const char *name, const char *w3, const char *w4, const char* start, const char* buffer, const char* filepath, int *retval)
+static void npc_parse_unknown_mapflag(const char *name, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
ShowError("npc_parse_mapflag: unrecognized mapflag '%s' in file '%s', line '%d'.\n", w3, filepath, strline(buffer,start-buffer));
if (retval)
@@ -4062,7 +4091,7 @@ void npc_parse_unknown_mapflag(const char *name, const char *w3, const char *w4,
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
+static const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
int16 m;
char mapname[32];
@@ -4545,7 +4574,7 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co
* (EXIT_FAILURE) status. May be NULL.
* @return A pointer to the advanced buffer position.
*/
-const char *npc_parse_unknown_object(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
+static const char *npc_parse_unknown_object(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval)
{
nullpo_retr(start, retval);
ShowError("npc_parsesrcfile: Unable to parse, probably a missing or extra TAB in file '%s', line '%d'. Skipping line...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4);
@@ -4563,7 +4592,8 @@ const char *npc_parse_unknown_object(const char *w1, const char *w2, const char
* @retval EXIT_SUCCESS if filepath was loaded correctly.
* @retval EXIT_FAILURE if there were errors/warnings when loading filepath.
*/
-int npc_parsesrcfile(const char* filepath, bool runOnInit) {
+static int npc_parsesrcfile(const char *filepath, bool runOnInit)
+{
int success = EXIT_SUCCESS;
int16 m, x, y;
int lines = 0;
@@ -4751,7 +4781,7 @@ int npc_parsesrcfile(const char* filepath, bool runOnInit) {
return success;
}
-int npc_script_event(struct map_session_data* sd, enum npce_event type)
+static int npc_script_event(struct map_session_data *sd, enum npce_event type)
{
int i;
if (type == NPCE_MAX)
@@ -4765,7 +4795,7 @@ int npc_script_event(struct map_session_data* sd, enum npce_event type)
return i;
}
-void npc_read_event_script(void)
+static void npc_read_event_script(void)
{
int i;
struct {
@@ -4828,7 +4858,7 @@ void npc_read_event_script(void)
/**
* @see DBApply
*/
-int npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
+static int npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
{
struct npc_path_data *npd = DB->data2ptr(data);
nullpo_ret(npd);
@@ -4840,7 +4870,7 @@ int npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
/**
* @see DBApply
*/
-int npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
+static int npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list args)
{
struct linkdb_node **label_linkdb = DB->data2ptr(data);
linkdb_final(label_linkdb); // linked data (struct event_data*) is freed when clearing ev_db
@@ -4851,7 +4881,8 @@ int npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list args
* Main npc file processing
* @param npc_min Minimum npc id - used to know how many NPCs were loaded
**/
-void npc_process_files( int npc_min ) {
+static void npc_process_files(int npc_min)
+{
struct npc_src_list *file; // Current file
ShowStatus("Loading NPCs...\r");
@@ -4871,7 +4902,8 @@ void npc_process_files( int npc_min ) {
}
//Clear then reload npcs files
-int npc_reload(void) {
+static int npc_reload(void)
+{
int npc_new_min = npc->npc_id;
struct s_mapiterator* iter;
struct block_list* bl;
@@ -4970,7 +5002,7 @@ int npc_reload(void) {
}
//Unload all npc in the given file
-bool npc_unloadfile(const char *filepath)
+static bool npc_unloadfile(const char *filepath)
{
struct DBIterator *iter = db_iterator(npc->name_db);
struct npc_data* nd = NULL;
@@ -4994,7 +5026,8 @@ bool npc_unloadfile(const char *filepath)
return found;
}
-void do_clear_npc(void) {
+static void do_clear_npc(void)
+{
db_clear(npc->name_db);
db_clear(npc->ev_db);
npc->ev_label_db->clear(npc->ev_label_db, npc->ev_label_db_clear_sub);
@@ -5003,7 +5036,8 @@ void do_clear_npc(void) {
/*==========================================
* Destructor
*------------------------------------------*/
-int do_final_npc(void) {
+static int do_final_npc(void)
+{
db_destroy(npc->ev_db);
npc->ev_label_db->destroy(npc->ev_label_db, npc->ev_label_db_clear_sub);
db_destroy(npc->name_db);
@@ -5014,7 +5048,8 @@ int do_final_npc(void) {
return 0;
}
-void npc_debug_warps_sub(struct npc_data* nd) {
+static void npc_debug_warps_sub(struct npc_data *nd)
+{
int16 m;
nullpo_retv(nd);
@@ -5042,7 +5077,8 @@ void npc_debug_warps_sub(struct npc_data* nd) {
}
}
-static void npc_debug_warps(void) {
+static void npc_debug_warps(void)
+{
int16 m, i;
for (m = 0; m < map->count; m++)
for (i = 0; i < map->list[m].npc_num; i++)
@@ -5052,7 +5088,8 @@ static void npc_debug_warps(void) {
/*==========================================
* npc initialization
*------------------------------------------*/
-int do_init_npc(bool minimal) {
+static int do_init_npc(bool minimal)
+{
int i;
unit->init_ud(&npc->base_ud);
@@ -5123,7 +5160,8 @@ int do_init_npc(bool minimal) {
return 0;
}
-void npc_defaults(void) {
+void npc_defaults(void)
+{
npc = &npc_s;
npc->npc_id = START_NPC_NUM;
diff --git a/src/map/npc.h b/src/map/npc.h
index fa8b12be5..eff4ed4ec 100644
--- a/src/map/npc.h
+++ b/src/map/npc.h
@@ -57,14 +57,14 @@ struct npc_label_list {
int pos;
};
struct npc_item_list {
- unsigned short nameid;
+ int nameid;
unsigned int value;
unsigned int qty;
};
struct npc_shop_data {
unsigned char type;/* what am i */
struct npc_item_list *item;/* list */
- unsigned short items;/* total */
+ unsigned int items;/* total */
};
struct npc_parse;
struct npc_data {
diff --git a/src/map/npc_chat.c b/src/map/npc_chat.c
index 3052ddd83..92393122e 100644
--- a/src/map/npc_chat.c
+++ b/src/map/npc_chat.c
@@ -40,8 +40,8 @@
/**
* interface sources
**/
-struct npc_chat_interface npc_chat_s;
-struct pcre_interface libpcre_s;
+static struct npc_chat_interface npc_chat_s;
+static struct pcre_interface libpcre_s;
struct npc_chat_interface *npc_chat;
struct pcre_interface *libpcre;
@@ -98,7 +98,7 @@ struct pcre_interface *libpcre;
*
* This does NOT do the list management
*/
-void finalize_pcrematch_entry(struct pcrematch_entry* e)
+static void finalize_pcrematch_entry(struct pcrematch_entry *e)
{
nullpo_retv(e);
libpcre->free(e->pcre_);
@@ -110,7 +110,8 @@ void finalize_pcrematch_entry(struct pcrematch_entry* e)
/**
* Lookup (and possibly create) a new set of patterns by the set id
*/
-struct pcrematch_set* lookup_pcreset(struct npc_data* nd, int setid) {
+static struct pcrematch_set *lookup_pcreset(struct npc_data *nd, int setid)
+{
struct pcrematch_set *pcreset;
struct npc_parse *npcParse;
@@ -152,7 +153,7 @@ struct pcrematch_set* lookup_pcreset(struct npc_data* nd, int setid) {
*
* if the setid does not exist, this will silently return
*/
-void activate_pcreset(struct npc_data* nd, int setid)
+static void activate_pcreset(struct npc_data *nd, int setid)
{
struct pcrematch_set *pcreset;
struct npc_parse *npcParse;
@@ -187,7 +188,7 @@ void activate_pcreset(struct npc_data* nd, int setid)
*
* if the setid does not exist, this will silently return
*/
-void deactivate_pcreset(struct npc_data* nd, int setid)
+static void deactivate_pcreset(struct npc_data *nd, int setid)
{
struct pcrematch_set *pcreset;
struct npc_parse *npcParse;
@@ -225,7 +226,7 @@ void deactivate_pcreset(struct npc_data* nd, int setid)
/**
* delete a set of patterns.
*/
-void delete_pcreset(struct npc_data* nd, int setid)
+static void delete_pcreset(struct npc_data *nd, int setid)
{
int active = 1;
struct pcrematch_set *pcreset;
@@ -277,7 +278,7 @@ void delete_pcreset(struct npc_data* nd, int setid)
/**
* create a new pattern entry
*/
-struct pcrematch_entry* create_pcrematch_entry(struct pcrematch_set* set)
+static struct pcrematch_entry *create_pcrematch_entry(struct pcrematch_set *set)
{
struct pcrematch_entry *e;
struct pcrematch_entry *last;
@@ -310,7 +311,7 @@ struct pcrematch_entry* create_pcrematch_entry(struct pcrematch_set* set)
/**
* define/compile a new pattern
*/
-void npc_chat_def_pattern(struct npc_data* nd, int setid, const char* pattern, const char* label)
+static void npc_chat_def_pattern(struct npc_data *nd, int setid, const char *pattern, const char *label)
{
const char *err;
int erroff;
@@ -330,7 +331,7 @@ void npc_chat_def_pattern(struct npc_data* nd, int setid, const char* pattern, c
*
* this could be more efficient but.. how often do you do this?
*/
-void npc_chat_finalize(struct npc_data* nd)
+static void npc_chat_finalize(struct npc_data *nd)
{
struct npc_parse *npcParse;
@@ -352,7 +353,7 @@ void npc_chat_finalize(struct npc_data* nd)
/**
* Handler called whenever a global message is spoken in a NPC's area
*/
-int npc_chat_sub(struct block_list* bl, va_list ap)
+static int npc_chat_sub(struct block_list *bl, va_list ap)
{
struct npc_data *nd = NULL;
struct npc_parse *npcParse = NULL;
@@ -463,7 +464,8 @@ BUILDIN(deletepset)
return true;
}
-void npc_chat_defaults(void) {
+void npc_chat_defaults(void)
+{
npc_chat = &npc_chat_s;
npc_chat->sub = npc_chat_sub;
diff --git a/src/map/packets.h b/src/map/packets.h
index f4832a307..d4f87f5a0 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -4152,6 +4152,100 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0b01,40,clif->pDull/*,XXX*/);
// changed packet sizes
#endif
+
+// 2018-07-04aRagexe, 2018-07-04aRagexeRE
+#if PACKETVER >= 20180704
+// new packets
+ packet(0x0b02,26); // AC_REFUSE_LOGIN4
+// changed packet sizes
+ packet(0x0b01,56,clif->pDull/*,XXX*/);
+#endif
#endif // PACKETVER_ZERO
+// 2018-06-27aRagexe_zero
+#if PACKETVER_ZERO_NUM >= 20180627
+// new packets
+ packet(0x0b00,8);
+ packet(0x0b01,56,clif->pDull/*,XXX*/);
+ packet(0x0b02,26); // AC_REFUSE_LOGIN4
+// changed packet sizes
+#endif
+
+// 2018-07-04aRagexeRE
+#if PACKETVER_RE_NUM >= 20180704
+// new packets
+// changed packet sizes
+ packet(0x009d,19); // ZC_ITEM_ENTRY
+ packet(0x009e,19); // ZC_ITEM_FALL_ENTRY
+ packet(0x00a0,33); // ZC_ITEM_PICKUP_ACK
+ packet(0x00e9,29,clif->pDull/*,XXX*/); // ZC_ADD_EXCHANGE_ITEM
+ packet(0x00f4,31,clif->pDull/*,XXX*/); // ZC_ADD_ITEM_TO_STORE
+ packet(0x010a,6); // ZC_MVP_GETTING_ITEM
+ packet(0x0110,14); // ZC_ACK_TOUSESKILL
+ packet(0x0124,31); // ZC_ADD_ITEM_TO_CART
+ packet(0x018e,18,clif->pProduceMix); // CZ_REQMAKINGITEM
+ packet(0x018f,8); // ZC_ACK_REQMAKINGITEM
+ packet(0x01a3,7); // ZC_FEED_PET
+ packet(0x01ae,6,clif->pSelectArrow,2); // CZ_REQ_MAKINGARROW
+ packet(0x01c4,32); // ZC_ADD_ITEM_TO_STORE2
+ packet(0x01c5,32); // ZC_ADD_ITEM_TO_CART2
+ packet(0x01c8,15); // ZC_USE_ITEM_ACK2
+ packet(0x01d7,15); // ZC_SPRITE_CHANGE2
+ packet(0x01d8,58); // ZC_NOTIFY_STANDENTRY2
+ packet(0x01d9,57); // ZC_NOTIFY_NEWENTRY2
+ packet(0x01da,64); // ZC_NOTIFY_MOVEENTRY2
+ packet(0x01fd,25,clif->pRepairItem); // CZ_REQ_ITEMREPAIR
+ packet(0x0223,10); // ZC_ACK_WEAPONREFINE
+ packet(0x022a,62); // ZC_NOTIFY_STANDENTRY3
+ packet(0x022b,61); // ZC_NOTIFY_NEWENTRY3
+ packet(0x022c,69); // ZC_NOTIFY_MOVEENTRY3
+ packet(0x022e,73); // ZC_PROPERTY_HOMUN
+ packet(0x022f,7); // ZC_FEED_MER
+ packet(0x025b,8,clif->pCooking); // CZ_REQ_MAKINGITEM
+ packet(0x0298,10); // ZC_CASH_TIME_COUNTER
+ packet(0x0299,8); // ZC_CASH_ITEM_DELETE
+ packet(0x029a,37); // ZC_ITEM_PICKUP_ACK2
+ packet(0x02b8,32); // ZC_ITEM_PICKUP_PARTY
+ packet(0x02d4,39); // ZC_ITEM_PICKUP_ACK3
+ packet(0x02ec,71); // ZC_NOTIFY_MOVEENTRY4
+ packet(0x02ed,63); // ZC_NOTIFY_NEWENTRY4
+ packet(0x02ee,64); // ZC_NOTIFY_STANDENTRY4
+ packet(0x0445,12,clif->pDull/*,XXX*/); // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+ packet(0x080f,30); // ZC_ADD_EXCHANGE_ITEM2
+ packet(0x081b,12); // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+ packet(0x0824,8); // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+ packet(0x084b,21); // ZC_ITEM_FALL_ENTRY4
+ packet(0x0990,41); // ZC_ITEM_PICKUP_ACK_V5
+ packet(0x09ad,12); // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+ packet(0x09ae,19,clif->pDull/*,XXX*/); // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+ packet(0x09b0,10,clif->pDull/*,XXX*/); // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+ packet(0x09b2,10); // ZC_NOTIFY_BARGAIN_SALE_SELLING
+ packet(0x09b3,6); // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+ packet(0x09c3,10,clif->pDull/*,XXX*/); // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+ packet(0x09c4,10); // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+ packet(0x09e6,24); // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+ packet(0x09f7,77); // ZC_PROPERTY_HOMUN_2
+ packet(0x0a05,63); // ZC_ACK_ADD_ITEM_RODEX
+ packet(0x0a09,55); // ZC_ADD_EXCHANGE_ITEM3
+ packet(0x0a0a,57); // ZC_ADD_ITEM_TO_STORE3
+ packet(0x0a0b,57); // ZC_ADD_ITEM_TO_CART3
+ packet(0x0a0c,66); // ZC_ITEM_PICKUP_ACK_V6
+ packet(0x0a1a,25); // ZC_ACK_OPEN_ROULETTE
+ packet(0x0a20,23); // ZC_ACK_GENERATE_ROULETTE
+ packet(0x0a22,7); // ZC_RECV_ROULETTE_ITEM
+ packet(0x0a37,69); // ZC_ITEM_PICKUP_ACK_V7
+ packet(0x0a3d,20,clif->pDull/*,XXX*/);
+ packet(0x0a3f,11,clif->pDull/*,XXX*/);
+ packet(0x0a49,22,clif->pPrivateAirshipRequest); // CZ_PRIVATE_AIRSHIP_REQUEST
+ packet(0x0a4e,6);
+ packet(0x0a89,61); // ZC_NOTIFY_OFFLINE_STORE
+ packet(0x0a96,61); // ZC_ADD_EXCHANGE_ITEM4
+ packet(0x0aa3,9,clif->pDull/*,XXX*/);
+ packet(0x0ab4,6,clif->pDull/*,XXX*/);
+ packet(0x0ab6,8,clif->pDull/*,XXX*/);
+ packet(0x0ab9,47);
+ packet(0x0ada,32);
+ packet(0x0add,24); // ZC_ITEM_FALL_ENTRY
+#endif
+
#endif /* MAP_PACKETS_H */
diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h
index 99535fd18..99d72b3d4 100644
--- a/src/map/packets_keys_main.h
+++ b/src/map/packets_keys_main.h
@@ -874,7 +874,7 @@
packetKeys(0x6A596301,0x76866D0E,0x32294A45);
#endif
-// 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
+// 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
#if PACKETVER == 20131223 || \
PACKETVER == 20140508 || \
PACKETVER == 20140611 || \
@@ -893,7 +893,9 @@
PACKETVER == 20180605 || \
PACKETVER == 20180612 || \
PACKETVER == 20180620 || \
- PACKETVER >= 20180621
+ PACKETVER == 20180621 || \
+ PACKETVER == 20180704 || \
+ PACKETVER >= 20180711
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h
index c3cfb4329..d3dc39d15 100644
--- a/src/map/packets_keys_zero.h
+++ b/src/map/packets_keys_zero.h
@@ -29,7 +29,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
+// 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
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -48,7 +48,9 @@
PACKETVER == 20180509 || \
PACKETVER == 20180523 || \
PACKETVER == 20180605 || \
- PACKETVER >= 20180627
+ PACKETVER == 20180627 || \
+ PACKETVER == 20180703 || \
+ PACKETVER >= 20180711
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h
index 1a9799295..e67b4eb48 100644
--- a/src/map/packets_shuffle_main.h
+++ b/src/map/packets_shuffle_main.h
@@ -36,7 +36,7 @@
/* This file is autogenerated, please do not commit manual changes */
-// 2012-07-10aRagexe, 2012-07-10aRagexeRE, 2012-07-12aRagexe, 2012-07-12aRagexeRE
+// 2012-07-10aRagexe, 2012-07-12aRagexe
#if PACKETVER == 20120710 || \
PACKETVER == 20120712
packet(0x0202,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
@@ -70,7 +70,7 @@
packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
#endif
-// 2012-07-16aRagexe, 2012-07-16aRagexeRE
+// 2012-07-16aRagexe
#if PACKETVER == 20120716
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -103,7 +103,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2012-07-24aRagexe, 2012-07-24aRagexeRE
+// 2012-07-24aRagexe
#if PACKETVER == 20120724
packet(0x035f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
packet(0x0364,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -136,7 +136,7 @@
packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
#endif
-// 2012-08-01aRagexe, 2012-08-01aRagexeRE, 2012-08-01bRagexe, 2012-08-01bRagexeRE
+// 2012-08-01aRagexe, 2012-08-01bRagexe
#if PACKETVER == 20120801
packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
packet(0x0438,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
@@ -169,7 +169,7 @@
packet(0x0964,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-// 2012-08-08aRagexe, 2012-08-08aRagexeRE, 2012-08-08bRagexe, 2012-08-08bRagexeRE, 2012-08-08cRagexe, 2012-08-08cRagexeRE, 2012-08-08dRagexeRE
+// 2012-08-08aRagexe, 2012-08-08bRagexe, 2012-08-08cRagexe
#if PACKETVER == 20120808
packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -202,7 +202,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2012-08-14aRagexe, 2012-08-14aRagexeRE, 2012-08-14bRagexe, 2012-08-14bRagexeRE
+// 2012-08-14aRagexe, 2012-08-14bRagexe
#if PACKETVER == 20120814
packet(0x0281,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -235,7 +235,7 @@
packet(0x0969,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2012-08-22aRagexe, 2012-08-22aRagexeRE, 2012-08-22bRagexe, 2012-08-22bRagexeRE, 2012-08-22cRagexe, 2012-08-22cRagexeRE
+// 2012-08-22aRagexe, 2012-08-22bRagexe, 2012-08-22cRagexe
#if PACKETVER == 20120822
packet(0x0365,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x0437,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
@@ -268,7 +268,7 @@
packet(0x095b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
#endif
-// 2012-08-30aRagexe, 2012-08-30aRagexeRE, 2012-08-30bRagexeRE
+// 2012-08-30aRagexe
#if PACKETVER == 20120830
packet(0x022d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -301,7 +301,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2012-09-05aRagexe, 2012-09-05aRagexeRE
+// 2012-09-05aRagexe
#if PACKETVER == 20120905
packet(0x022d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x0365,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -334,7 +334,7 @@
packet(0x0967,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
#endif
-// 2012-09-11aRagexe, 2012-09-11aRagexeRE
+// 2012-09-11aRagexe
#if PACKETVER == 20120911
packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
@@ -367,7 +367,7 @@
packet(0x096a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
#endif
-// 2012-09-19aRagexe, 2012-09-19aRagexeRE
+// 2012-09-19aRagexe
#if PACKETVER == 20120919
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -400,7 +400,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2012-09-25aRagexe, 2012-09-25aRagexeRE, 2012-09-26aRagexe, 2012-09-26aRagexeRE
+// 2012-09-25aRagexe, 2012-09-26aRagexe
#if PACKETVER == 20120925 || \
PACKETVER == 20120926
packet(0x07e4,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
@@ -434,9 +434,8 @@
packet(0x0963,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
#endif
-// 2012-10-10aRagexe, 2012-10-10aRagexeRE, 2012-10-10bRagexe, 2012-10-10bRagexeRE, 2012-10-11aRagexeRE
-#if PACKETVER == 20121010 || \
- PACKETVER == 20121011
+// 2012-10-10aRagexe, 2012-10-10bRagexe
+#if PACKETVER == 20121010
packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x0817,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
packet(0x085a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
@@ -468,7 +467,7 @@
packet(0x0969,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2012-10-17aRagexe, 2012-10-17aRagexeRE, 2012-10-17bRagexe, 2012-10-17bRagexeRE
+// 2012-10-17aRagexe, 2012-10-17bRagexe
#if PACKETVER == 20121017
packet(0x023b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -501,7 +500,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2012-10-24aRagexe, 2012-10-24aRagexeRE
+// 2012-10-24aRagexe
#if PACKETVER == 20121024
packet(0x0436,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
packet(0x0437,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
@@ -534,7 +533,7 @@
packet(0x0965,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
#endif
-// 2012-10-31aRagexe, 2012-10-31aRagexeRE
+// 2012-10-31aRagexe
#if PACKETVER == 20121031
packet(0x022d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -567,7 +566,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2012-11-07aRagexe, 2012-11-07aRagexeRE
+// 2012-11-07aRagexe
#if PACKETVER == 20121107
packet(0x0360,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -600,7 +599,7 @@
packet(0x096a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
#endif
-// 2012-11-14aRagexe, 2012-11-14aRagexeRE
+// 2012-11-14aRagexe
#if PACKETVER == 20121114
packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x0365,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
@@ -633,7 +632,7 @@
packet(0x096a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
#endif
-// 2012-11-21aRagexe, 2012-11-21aRagexeRE
+// 2012-11-21aRagexe
#if PACKETVER == 20121121
packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
packet(0x0362,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
@@ -666,7 +665,7 @@
packet(0x0958,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
#endif
-// 2012-11-28aRagexe, 2012-11-28aRagexeRE
+// 2012-11-28aRagexe
#if PACKETVER == 20121128
packet(0x0362,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
packet(0x0363,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
@@ -699,7 +698,7 @@
packet(0x0960,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
#endif
-// 2012-12-05aRagexe, 2012-12-05aRagexeRE, 2012-12-05bRagexe, 2012-12-05bRagexeRE
+// 2012-12-05aRagexe, 2012-12-05bRagexe
#if PACKETVER == 20121205
packet(0x035f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
packet(0x0360,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
@@ -732,7 +731,7 @@
packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2012-12-12aRagexe, 2012-12-12aRagexeRE, 2012-12-12bRagexe, 2012-12-12bRagexeRE, 2012-12-12cRagexeRE
+// 2012-12-12aRagexe, 2012-12-12bRagexe
#if PACKETVER == 20121212
packet(0x0362,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
packet(0x0368,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
@@ -765,7 +764,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2012-12-18aRagexe, 2012-12-18aRagexeRE, 2012-12-18bRagexe, 2012-12-18bRagexeRE
+// 2012-12-18aRagexe, 2012-12-18bRagexe
#if PACKETVER == 20121218
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -798,7 +797,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2012-12-27aRagexe, 2012-12-27aRagexeRE
+// 2012-12-27aRagexe
#if PACKETVER == 20121227
packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x02c4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -831,7 +830,7 @@
packet(0x0962,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
#endif
-// 2013-01-03aRagexe, 2013-01-03aRagexeRE, 2013-01-07aRagexe
+// 2013-01-03aRagexe, 2013-01-07aRagexe
#if PACKETVER == 20130103 || \
PACKETVER == 20130107
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
@@ -865,7 +864,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-01-09aRagexe, 2013-01-09aRagexeRE
+// 2013-01-09aRagexe
#if PACKETVER == 20130109
packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
packet(0x0365,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -898,7 +897,7 @@
packet(0x095e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
#endif
-// 2013-01-15aRagexeRE, 2013-01-15bRagexe, 2013-01-16aRagexe, 2013-01-16aRagexeRE, 2013-01-16bRagexe
+// 2013-01-15bRagexe, 2013-01-16aRagexe, 2013-01-16bRagexe
#if PACKETVER == 20130115 || \
PACKETVER == 20130116
packet(0x0361,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -932,7 +931,7 @@
packet(0x095a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
#endif
-// 2013-01-21aRagexe, 2013-01-21aRagexeRE
+// 2013-01-21aRagexe
#if PACKETVER == 20130121
packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
packet(0x035f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -965,7 +964,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-01-30aRagexe, 2013-01-30aRagexeRE
+// 2013-01-30aRagexe
#if PACKETVER == 20130130
packet(0x035f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
@@ -998,7 +997,7 @@
packet(0x095d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
#endif
-// 2013-02-06aRagexe, 2013-02-06aRagexeRE
+// 2013-02-06aRagexe
#if PACKETVER == 20130206
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -1031,7 +1030,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-02-15aRagexe, 2013-02-15aRagexeRE, 2013-02-15bRagexe
+// 2013-02-15aRagexe, 2013-02-15bRagexe
#if PACKETVER == 20130215
packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -1064,7 +1063,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-02-20aRagexe, 2013-02-20bRagexeRE
+// 2013-02-20aRagexe
#if PACKETVER == 20130220
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -1097,7 +1096,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-02-27aRagexe, 2013-02-27aRagexeRE
+// 2013-02-27aRagexe
#if PACKETVER == 20130227
packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x035f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
@@ -1130,7 +1129,7 @@
packet(0x0967,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
#endif
-// 2013-03-06aRagexe, 2013-03-06aRagexeRE, 2013-03-06bRagexeRE
+// 2013-03-06aRagexe
#if PACKETVER == 20130306
packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x0367,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
@@ -1163,7 +1162,7 @@
packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
#endif
-// 2013-03-13aRagexe, 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE
+// 2013-03-13aRagexe
#if PACKETVER == 20130313
packet(0x0202,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -1196,7 +1195,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-03-20bRagexeRE, 2013-03-20cRagexeRE, 2013-03-20dRagexe, 2013-03-20eRagexe
+// 2013-03-20dRagexe, 2013-03-20eRagexe
#if PACKETVER == 20130320
packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0363,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -1229,7 +1228,7 @@
packet(0x095a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
#endif
-// 2013-03-27bRagexe, 2013-03-27bRagexeRE
+// 2013-03-27bRagexe
#if PACKETVER == 20130327
packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -1262,7 +1261,7 @@
packet(0x0967,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
#endif
-// 2013-04-03aRagexe, 2013-04-03aRagexeRE
+// 2013-04-03aRagexe
#if PACKETVER == 20130403
packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -1295,7 +1294,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-04-10aRagexe, 2013-04-10aRagexeRE
+// 2013-04-10aRagexe
#if PACKETVER == 20130410
packet(0x0367,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0437,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
@@ -1328,7 +1327,7 @@
packet(0x096a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
#endif
-// 2013-04-17aRagexe, 2013-04-17aRagexeRE
+// 2013-04-17aRagexe
#if PACKETVER == 20130417
packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -1361,7 +1360,7 @@
packet(0x096a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
#endif
-// 2013-04-24aRagexe, 2013-04-24aRagexeRE
+// 2013-04-24aRagexe
#if PACKETVER == 20130424
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -1394,7 +1393,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-05-02aRagexe, 2013-05-02aRagexeRE, 2013-05-02bRagexe
+// 2013-05-02aRagexe, 2013-05-02bRagexe
#if PACKETVER == 20130502
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -1427,7 +1426,7 @@
packet(0x0967,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
#endif
-// 2013-05-08bRagexe, 2013-05-08bRagexeRE, 2013-05-08cRagexe, 2013-05-08dRagexe, 2013-05-08eRagexe, 2013-05-08fRagexe
+// 2013-05-08bRagexe, 2013-05-08cRagexe, 2013-05-08dRagexe, 2013-05-08eRagexe, 2013-05-08fRagexe
#if PACKETVER == 20130508
packet(0x022d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -1460,7 +1459,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-05-15aRagexe, 2013-05-15aRagexeRE
+// 2013-05-15aRagexe
#if PACKETVER == 20130515
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -1493,7 +1492,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-05-22aRagexe, 2013-05-22aRagexeRE
+// 2013-05-22aRagexe
#if PACKETVER == 20130522
packet(0x0360,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
@@ -1526,7 +1525,7 @@
packet(0x0965,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
#endif
-// 2013-05-29aRagexe, 2013-05-29aRagexeRE
+// 2013-05-29aRagexe
#if PACKETVER == 20130529
packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x0438,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
@@ -1559,7 +1558,7 @@
packet(0x0964,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
#endif
-// 2013-06-05aRagexe, 2013-06-05bRagexe, 2013-06-05cRagexeRE
+// 2013-06-05aRagexe, 2013-06-05bRagexe
#if PACKETVER == 20130605
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -1592,7 +1591,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-06-12aRagexe, 2013-06-12bRagexe, 2013-06-12bRagexeRE, 2013-06-12cRagexe, 2013-06-12dRagexe, 2013-06-12eRagexe
+// 2013-06-12aRagexe, 2013-06-12bRagexe, 2013-06-12cRagexe, 2013-06-12dRagexe, 2013-06-12eRagexe
#if PACKETVER == 20130612
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -1625,7 +1624,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-06-18#1aRagexe, 2013-06-18#1aRagexeRE
+// 2013-06-18#1aRagexe
#if PACKETVER == 20130618
packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
packet(0x02c4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
@@ -1658,7 +1657,7 @@
packet(0x096a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
#endif
-// 2013-06-26_3bRagexeRE, 2013-06-26_3cRagexe, 2013-06-26aRagexeRE, 2013-06-26bRagexe
+// 2013-06-26_3cRagexe, 2013-06-26bRagexe
#if PACKETVER == 20130626
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -1691,7 +1690,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-07-03aRagexe, 2013-07-03bRagexeRE
+// 2013-07-03aRagexe
#if PACKETVER == 20130703
packet(0x0202,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -1724,7 +1723,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-07-10aRagexeRE, 2013-07-10bRagexe, 2013-07-10bRagexeRE, 2013-07-10cRagexeRE, 2013-07-10dRagexeRE, 2013-07-10eRagexeRE
+// 2013-07-10bRagexe
#if PACKETVER == 20130710
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -1757,7 +1756,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-07-17cRagexe, 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE
+// 2013-07-17cRagexe
#if PACKETVER == 20130717
packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
@@ -1790,7 +1789,7 @@
packet(0x096a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
#endif
-// 2013-07-24eRagexe, 2013-07-24eRagexeRE, 2013-07-24fRagexeRE
+// 2013-07-24eRagexe
#if PACKETVER == 20130724
packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -1823,7 +1822,7 @@
packet(0x0966,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2013-07-31cRagexe, 2013-07-31cRagexeRE
+// 2013-07-31cRagexe
#if PACKETVER == 20130731
packet(0x022d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x0366,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
@@ -1856,7 +1855,7 @@
packet(0x0962,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
#endif
-// 2013-08-07aRagexe, 2013-08-07aRagexeRE
+// 2013-08-07aRagexe
#if PACKETVER == 20130807
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -1889,7 +1888,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-08-14aRagexe, 2013-08-14aRagexeRE
+// 2013-08-14aRagexe
#if PACKETVER == 20130814
packet(0x0202,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x0281,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
@@ -1922,7 +1921,7 @@
packet(0x0962,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
#endif
-// 2013-08-21bRagexe, 2013-08-21dRagexeRE
+// 2013-08-21bRagexe
#if PACKETVER == 20130821
packet(0x0202,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -1955,7 +1954,7 @@
packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
#endif
-// 2013-08-28bRagexe, 2013-08-28bRagexeRE, 2013-08-28cRagexe, 2013-08-28cRagexeRE
+// 2013-08-28bRagexe, 2013-08-28cRagexe
#if PACKETVER == 20130828
packet(0x023b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
packet(0x0361,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
@@ -1988,7 +1987,7 @@
packet(0x096a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
#endif
-// 2013-09-04aRagexe, 2013-09-04bRagexeRE
+// 2013-09-04aRagexe
#if PACKETVER == 20130904
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -2021,7 +2020,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-09-11aRagexe, 2013-09-11aRagexeRE, 2013-09-11bRagexe, 2013-09-11bRagexeRE
+// 2013-09-11aRagexe, 2013-09-11bRagexe
#if PACKETVER == 20130911
packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
@@ -2054,7 +2053,7 @@
packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
#endif
-// 2013-09-17aRagexe, 2013-09-17aRagexeRE
+// 2013-09-17aRagexe
#if PACKETVER == 20130917
packet(0x035f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
packet(0x0811,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
@@ -2087,7 +2086,7 @@
packet(0x096a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
#endif
-// 2013-09-25aRagexe, 2013-09-25aRagexeRE, 2013-09-25bRagexe, 2013-09-25bRagexeRE, 2013-09-25cRagexe
+// 2013-09-25aRagexe, 2013-09-25bRagexe, 2013-09-25cRagexe
#if PACKETVER == 20130925
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -2120,7 +2119,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-10-02aRagexe, 2013-10-02aRagexeRE
+// 2013-10-02aRagexe
#if PACKETVER == 20131002
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -2153,7 +2152,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-10-08aRagexe, 2013-10-08bRagexeRE
+// 2013-10-08aRagexe
#if PACKETVER == 20131008
packet(0x0202,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
packet(0x0362,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -2186,7 +2185,7 @@
packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#endif
-// 2013-10-16aRagexe, 2013-10-16aRagexeRE, 2013-10-16bRagexe, 2013-10-16bRagexeRE
+// 2013-10-16aRagexe, 2013-10-16bRagexe
#if PACKETVER == 20131016
packet(0x022d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x0281,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
@@ -2219,7 +2218,7 @@
packet(0x0966,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2013-10-23aRagexe, 2013-10-23aRagexeRE
+// 2013-10-23aRagexe
#if PACKETVER == 20131023
packet(0x0366,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
packet(0x0438,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
@@ -2252,7 +2251,7 @@
packet(0x095b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
#endif
-// 2013-10-30aRagexe, 2013-10-30aRagexeRE
+// 2013-10-30aRagexe
#if PACKETVER == 20131030
packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -2285,7 +2284,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-11-06aRagexe, 2013-11-06aRagexeRE, 2013-11-07aRagexe, 2013-11-07bRagexe, 2013-11-07cRagexe, 2013-11-08aRagexe
+// 2013-11-06aRagexe, 2013-11-07aRagexe, 2013-11-07bRagexe, 2013-11-07cRagexe, 2013-11-08aRagexe
#if PACKETVER == 20131106 || \
PACKETVER == 20131107 || \
PACKETVER == 20131108
@@ -2320,7 +2319,7 @@
packet(0x0967,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
#endif
-// 2013-11-13aRagexeRE, 2013-11-13bRagexe
+// 2013-11-13bRagexe
#if PACKETVER == 20131113
packet(0x0364,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
packet(0x086d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
@@ -2353,7 +2352,7 @@
packet(0x0969,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
#endif
-// 2013-11-20dRagexe, 2013-11-20eRagexeRE
+// 2013-11-20dRagexe
#if PACKETVER == 20131120
packet(0x0361,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
@@ -2386,7 +2385,7 @@
packet(0x095e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2013-11-27aRagexeRE, 2013-11-27bRagexe, 2013-11-27bRagexeRE
+// 2013-11-27bRagexe
#if PACKETVER == 20131127
packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
@@ -2419,7 +2418,7 @@
packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
#endif
-// 2013-12-04dRagexeRE, 2013-12-04eRagexe, 2013-12-04eRagexeRE
+// 2013-12-04eRagexe
#if PACKETVER == 20131204
packet(0x0365,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
packet(0x0366,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -2452,7 +2451,7 @@
packet(0x0967,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
#endif
-// 2013-12-11cRagexe, 2013-12-11cRagexeRE, 2013-12-11dRagexe, 2013-12-11eRagexeRE
+// 2013-12-11cRagexe, 2013-12-11dRagexe
#if PACKETVER == 20131211
packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -2485,7 +2484,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-12-18aRagexeRE, 2013-12-18bRagexe
+// 2013-12-18bRagexe
#if PACKETVER == 20131218
packet(0x022d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -2518,7 +2517,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-12-23bRagexe, 2013-12-23bRagexeRE, 2013-12-23cRagexe, 2013-12-23xRagexeRE
+// 2013-12-23bRagexe, 2013-12-23cRagexe
#if PACKETVER == 20131223
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -2551,7 +2550,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2013-12-30aRagexe, 2013-12-30aRagexeRE
+// 2013-12-30aRagexe
#if PACKETVER == 20131230
packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x02c4,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
@@ -2584,7 +2583,7 @@
packet(0x096a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
#endif
-// 2014-01-08bRagexeRE, 2014-01-08cRagexe, 2014-01-08cRagexeRE, 2014-01-08dRagexe
+// 2014-01-08cRagexe, 2014-01-08dRagexe
#if PACKETVER == 20140108
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -2617,7 +2616,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexe, 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexe, 2014-01-15eRagexeRE
+// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexe, 2014-01-15eRagexe
#if PACKETVER == 20140115
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -2650,7 +2649,7 @@
packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2014-01-22aRagexe, 2014-01-22aRagexeRE
+// 2014-01-22aRagexe
#if PACKETVER == 20140122
packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -2683,7 +2682,7 @@
packet(0x095f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#endif
-// 2014-01-29aRagexe, 2014-01-29bRagexeRE, 2014-01-29cRagexe
+// 2014-01-29aRagexe, 2014-01-29cRagexe
#if PACKETVER == 20140129
packet(0x0281,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -2716,7 +2715,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-02-05bRagexe, 2014-02-05bRagexeRE
+// 2014-02-05bRagexe
#if PACKETVER == 20140205
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -2749,7 +2748,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-02-12aRagexe, 2014-02-12aRagexeRE
+// 2014-02-12aRagexe
#if PACKETVER == 20140212
packet(0x02c4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
packet(0x0369,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
@@ -2782,7 +2781,7 @@
packet(0x0960,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
#endif
-// 2014-02-19aRagexe, 2014-02-19aRagexeRE, 2014-02-19bRagexeRE
+// 2014-02-19aRagexe
#if PACKETVER == 20140219
packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x0360,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
@@ -2815,7 +2814,7 @@
packet(0x0961,6,clif->pTickSend,2); // CZ_REQUEST_TIME
#endif
-// 2014-02-26aRagexe, 2014-02-26aRagexeRE, 2014-02-26bRagexeRE
+// 2014-02-26aRagexe
#if PACKETVER == 20140226
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -2848,7 +2847,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-03-05aRagexe, 2014-03-05aRagexeRE, 2014-03-05bRagexe, 2014-03-05bRagexeRE
+// 2014-03-05aRagexe, 2014-03-05bRagexe
#if PACKETVER == 20140305
packet(0x0202,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -2881,7 +2880,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-03-12bRagexeRE, 2014-03-12dRagexe
+// 2014-03-12dRagexe
#if PACKETVER == 20140312
packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -2914,7 +2913,7 @@
packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
#endif
-// 2014-03-19aRagexe, 2014-03-19aRagexeRE
+// 2014-03-19aRagexe
#if PACKETVER == 20140319
packet(0x02c4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
packet(0x07e4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
@@ -2947,7 +2946,7 @@
packet(0x096a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#endif
-// 2014-03-26aRagexe, 2014-03-26cRagexeRE
+// 2014-03-26aRagexe
#if PACKETVER == 20140326
packet(0x0362,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
packet(0x0365,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
@@ -2980,7 +2979,7 @@
packet(0x0969,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
#endif
-// 2014-04-02eRagexeRE, 2014-04-02fRagexe, 2014-04-02fRagexeRE, 2014-04-02gRagexe
+// 2014-04-02fRagexe, 2014-04-02gRagexe
#if PACKETVER == 20140402
packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0360,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
@@ -3013,7 +3012,7 @@
packet(0x0965,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-// 2014-04-09aRagexe, 2014-04-09aRagexeRE, 2014-04-09bRagexe
+// 2014-04-09aRagexe, 2014-04-09bRagexe
#if PACKETVER == 20140409
packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
packet(0x085b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
@@ -3046,7 +3045,7 @@
packet(0x095e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
#endif
-// 2014-04-16aRagexe, 2014-04-16aRagexeRE, 2014-04-16bRagexe
+// 2014-04-16aRagexe, 2014-04-16bRagexe
#if PACKETVER == 20140416
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -3079,7 +3078,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-04-23aRagexe, 2014-04-23aRagexeRE
+// 2014-04-23aRagexe
#if PACKETVER == 20140423
packet(0x022d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -3112,7 +3111,7 @@
packet(0x095e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
#endif
-// 2014-04-30aRagexe, 2014-04-30aRagexeRE
+// 2014-04-30aRagexe
#if PACKETVER == 20140430
packet(0x023b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x035f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -3145,7 +3144,7 @@
packet(0x096a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
#endif
-// 2014-05-08bRagexe, 2014-05-08bRagexeRE
+// 2014-05-08bRagexe
#if PACKETVER == 20140508
packet(0x022d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
@@ -3178,7 +3177,7 @@
packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2014-05-14bRagexe, 2014-05-14bRagexeRE, 2014-05-14cRagexeRE
+// 2014-05-14bRagexe
#if PACKETVER == 20140514
packet(0x0437,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
packet(0x0817,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
@@ -3211,7 +3210,7 @@
packet(0x096a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
#endif
-// 2014-05-21aRagexeRE, 2014-05-21bRagexe
+// 2014-05-21bRagexe
#if PACKETVER == 20140521
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -3244,7 +3243,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-05-28aRagexe, 2014-05-28aRagexeRE
+// 2014-05-28aRagexe
#if PACKETVER == 20140528
packet(0x0202,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -3277,7 +3276,7 @@
packet(0x0966,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
#endif
-// 2014-06-05aRagexe, 2014-06-05aRagexeRE, 2014-06-05bRagexe
+// 2014-06-05aRagexe, 2014-06-05bRagexe
#if PACKETVER == 20140605
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -3310,7 +3309,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-06-11bRagexeRE, 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11hRagexe, 2014-06-12aRagexe, 2014-06-13aRagexe
+// 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11hRagexe, 2014-06-12aRagexe, 2014-06-13aRagexe
#if PACKETVER == 20140611 || \
PACKETVER == 20140612 || \
PACKETVER == 20140613
@@ -3345,7 +3344,7 @@
packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
#endif
-// 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
+// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe
#if PACKETVER == 20140611 || \
PACKETVER == 20150225 || \
PACKETVER == 20180315 || \
@@ -3360,9 +3359,9 @@
PACKETVER == 20180523 || \
PACKETVER == 20180530 || \
PACKETVER == 20180605 || \
- PACKETVER == 20180612 || \
PACKETVER == 20180620 || \
- PACKETVER >= 20180621
+ PACKETVER == 20180621 || \
+ PACKETVER >= 20180704
packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -3394,7 +3393,7 @@
packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-// 2014-06-18aRagexe, 2014-06-18cRagexeRE
+// 2014-06-18aRagexe
#if PACKETVER == 20140618
packet(0x085d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x085f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
@@ -3427,7 +3426,7 @@
packet(0x0967,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
#endif
-// 2014-06-25aRagexe, 2014-06-25aRagexeRE, 2014-06-25bRagexe
+// 2014-06-25aRagexe, 2014-06-25bRagexe
#if PACKETVER == 20140625
packet(0x0202,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
@@ -3460,7 +3459,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-07-02aRagexe, 2014-07-02aRagexeRE
+// 2014-07-02aRagexe
#if PACKETVER == 20140702
packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
@@ -3493,7 +3492,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-07-09aRagexe, 2014-07-09aRagexeRE
+// 2014-07-09aRagexe
#if PACKETVER == 20140709
packet(0x0364,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
@@ -3526,7 +3525,7 @@
packet(0x0961,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
#endif
-// 2014-07-16aRagexe, 2014-07-16aRagexeRE, 2014-07-16bRagexe, 2014-07-16cRagexe
+// 2014-07-16aRagexe, 2014-07-16bRagexe, 2014-07-16cRagexe
#if PACKETVER == 20140716
packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -3559,7 +3558,7 @@
packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
#endif
-// 2014-07-23aRagexe, 2014-07-23aRagexeRE, 2014-07-23bRagexe, 2014-07-23bRagexeRE
+// 2014-07-23aRagexe, 2014-07-23bRagexe
#if PACKETVER == 20140723
packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -3592,7 +3591,7 @@
packet(0x0960,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2014-07-30aRagexe, 2014-07-30bRagexeRE
+// 2014-07-30aRagexe
#if PACKETVER == 20140730
packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
@@ -3625,7 +3624,7 @@
packet(0x0946,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
#endif
-// 2014-08-06aRagexe, 2014-08-06aRagexeRE, 2014-08-06bRagexe
+// 2014-08-06aRagexe, 2014-08-06bRagexe
#if PACKETVER == 20140806
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -3658,7 +3657,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-08-13aRagexe, 2014-08-13aRagexeRE, 2014-08-13bRagexe, 2014-08-14aRagexe
+// 2014-08-13aRagexe, 2014-08-13bRagexe, 2014-08-14aRagexe
#if PACKETVER == 20140813 || \
PACKETVER == 20140814
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -3692,7 +3691,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-08-20aRagexe, 2014-08-20aRagexeRE
+// 2014-08-20aRagexe
#if PACKETVER == 20140820
packet(0x035f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
@@ -3725,7 +3724,7 @@
packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2014-08-27aRagexe, 2014-08-27aRagexeRE
+// 2014-08-27aRagexe
#if PACKETVER == 20140827
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -3758,7 +3757,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-09-03aRagexe, 2014-09-03aRagexeRE
+// 2014-09-03aRagexe
#if PACKETVER == 20140903
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -3791,7 +3790,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-09-17aRagexe, 2014-09-17cRagexeRE
+// 2014-09-17aRagexe
#if PACKETVER == 20140917
packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
packet(0x0364,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
@@ -3824,7 +3823,7 @@
packet(0x0966,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
#endif
-// 2014-09-24bRagexeRE, 2014-09-24cRagexe, 2014-09-24cRagexeRE
+// 2014-09-24cRagexe
#if PACKETVER == 20140924
packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x0367,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
@@ -3857,7 +3856,7 @@
packet(0x0952,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
#endif
-// 2014-10-01aRagexe, 2014-10-01bRagexeRE, 2014-10-01cRagexeRE
+// 2014-10-01aRagexe
#if PACKETVER == 20141001
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -3890,7 +3889,7 @@
packet(0x0952,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
#endif
-// 2014-10-08aRagexe, 2014-10-08bRagexe, 2014-10-08bRagexeRE, 2014-10-08cRagexe, 2014-10-08cRagexeRE, 2014-10-08dRagexe
+// 2014-10-08aRagexe, 2014-10-08bRagexe, 2014-10-08cRagexe, 2014-10-08dRagexe
#if PACKETVER == 20141008
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -3923,7 +3922,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-10-15bRagexe, 2014-10-15bRagexeRE, 2014-10-15cRagexe, 2014-10-15dRagexe, 2014-10-16aRagexe, 2014-10-16aRagexeRE
+// 2014-10-15bRagexe, 2014-10-15cRagexe, 2014-10-15dRagexe, 2014-10-16aRagexe
#if PACKETVER == 20141015 || \
PACKETVER == 20141016
packet(0x022d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
@@ -3957,7 +3956,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-10-22aRagexeRE, 2014-10-22bRagexe
+// 2014-10-22bRagexe
#if PACKETVER == 20141022
packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -3990,7 +3989,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-10-29aRagexe, 2014-10-29aRagexeRE
+// 2014-10-29aRagexe
#if PACKETVER == 20141029
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -4023,7 +4022,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-11-05aRagexe, 2014-11-05aRagexeRE, 2014-11-05bRagexe, 2014-11-05bRagexeRE
+// 2014-11-05aRagexe, 2014-11-05bRagexe
#if PACKETVER == 20141105
packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
packet(0x035f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
@@ -4056,7 +4055,7 @@
packet(0x0968,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2014-11-12aRagexeRE, 2014-11-12cRagexe, 2014-11-12dRagexe
+// 2014-11-12cRagexe, 2014-11-12dRagexe
#if PACKETVER == 20141112
packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x0438,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
@@ -4089,7 +4088,7 @@
packet(0x0962,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
#endif
-// 2014-11-19bRagexeRE, 2014-11-19dRagexe
+// 2014-11-19dRagexe
#if PACKETVER == 20141119
packet(0x0202,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
packet(0x085a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -4122,7 +4121,7 @@
packet(0x0963,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
#endif
-// 2014-11-26aRagexe, 2014-11-26aRagexeRE, 2014-11-26bRagexe, 2014-11-26bRagexeRE, 2014-11-26cRagexe, 2014-11-26cRagexeRE, 2014-11-26dRagexe, 2014-11-26dRagexeRE, 2014-11-26eRagexeRE
+// 2014-11-26aRagexe, 2014-11-26bRagexe, 2014-11-26cRagexe, 2014-11-26dRagexe
#if PACKETVER == 20141126
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -4155,7 +4154,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-12-03aRagexe, 2014-12-03aRagexeRE
+// 2014-12-03aRagexe
#if PACKETVER == 20141203
packet(0x0202,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
packet(0x0281,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
@@ -4188,7 +4187,7 @@
packet(0x0962,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
#endif
-// 2014-12-10bRagexe, 2014-12-10cRagexe, 2014-12-10cRagexeRE
+// 2014-12-10bRagexe, 2014-12-10cRagexe
#if PACKETVER == 20141210
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -4221,7 +4220,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2014-12-17aRagexe, 2014-12-17aRagexeRE
+// 2014-12-17aRagexe
#if PACKETVER == 20141217
packet(0x0360,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x085b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
@@ -4254,9 +4253,8 @@
packet(0x0960,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
#endif
-// 2014-12-23cRagexeRE, 2014-12-24aRagexe
-#if PACKETVER == 20141223 || \
- PACKETVER == 20141224
+// 2014-12-24aRagexe
+#if PACKETVER == 20141224
packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x0438,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x0835,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -4288,7 +4286,7 @@
packet(0x095f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
#endif
-// 2014-12-31aRagexe, 2014-12-31aRagexeRE
+// 2014-12-31aRagexe
#if PACKETVER == 20141231
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -4321,7 +4319,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-01-07aRagexe, 2015-01-07aRagexeRE
+// 2015-01-07aRagexe
#if PACKETVER == 20150107
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -4354,7 +4352,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-01-14aRagexe, 2015-01-14aRagexeRE, 2015-01-14bRagexe, 2015-01-14cRagexe, 2015-01-14dRagexe
+// 2015-01-14aRagexe, 2015-01-14bRagexe, 2015-01-14cRagexe, 2015-01-14dRagexe
#if PACKETVER == 20150114
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -4387,7 +4385,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-01-21aRagexe, 2015-01-21aRagexeRE, 2015-01-21bRagexeRE
+// 2015-01-21aRagexe
#if PACKETVER == 20150121
packet(0x0281,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -4420,7 +4418,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-01-28aRagexe, 2015-01-28aRagexeRE, 2015-01-29aRagexe, 2015-01-30aRagexe
+// 2015-01-28aRagexe, 2015-01-29aRagexe, 2015-01-30aRagexe
#if PACKETVER == 20150128 || \
PACKETVER == 20150129 || \
PACKETVER == 20150130
@@ -4455,7 +4453,7 @@
packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
#endif
-// 2015-02-04aRagexe, 2015-02-04cRagexeRE
+// 2015-02-04aRagexe
#if PACKETVER == 20150204
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -4488,7 +4486,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-02-11aRagexe, 2015-02-11aRagexeRE
+// 2015-02-11aRagexe
#if PACKETVER == 20150211
packet(0x023b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
packet(0x0368,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
@@ -4521,7 +4519,7 @@
packet(0x0958,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
#endif
-// 2015-02-17aRagexe, 2015-02-17aRagexeRE
+// 2015-02-17aRagexe
#if PACKETVER == 20150217
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -4554,7 +4552,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexe, 2015-02-25eRagexeRE, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe, 2015-02-26aRagexe, 2015-02-26aRagexeRE
+// 2015-02-25eRagexe, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe, 2015-02-26aRagexe
#if PACKETVER == 20150225 || \
PACKETVER == 20150226
packet(0x02c4,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -4588,7 +4586,7 @@
packet(0x096a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
#endif
-// 2015-03-04aRagexe, 2015-03-04aRagexeRE, 2015-03-04bRagexeRE
+// 2015-03-04aRagexe
#if PACKETVER == 20150304
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -4621,7 +4619,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-03-11aRagexe, 2015-03-11aRagexeRE, 2015-03-11bRagexe, 2015-03-11bRagexeRE
+// 2015-03-11aRagexe, 2015-03-11bRagexe
#if PACKETVER == 20150311
packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x0360,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
@@ -4654,7 +4652,7 @@
packet(0x0964,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
#endif
-// 2015-03-18aRagexe, 2015-03-18aRagexeRE, 2015-03-18bRagexe, 2015-03-18bRagexeRE, 2015-03-18cRagexeRE
+// 2015-03-18aRagexe, 2015-03-18bRagexe
#if PACKETVER == 20150318
packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
packet(0x023b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -4687,7 +4685,7 @@
packet(0x0960,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2015-03-25aRagexe, 2015-03-25bRagexeRE, 2015-03-25cRagexeRE
+// 2015-03-25aRagexe
#if PACKETVER == 20150325
packet(0x0202,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
packet(0x0363,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
@@ -4720,7 +4718,7 @@
packet(0x0969,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
#endif
-// 2015-04-01aRagexe, 2015-04-01bRagexeRE
+// 2015-04-01aRagexe
#if PACKETVER == 20150401
packet(0x0362,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
packet(0x0367,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
@@ -4753,7 +4751,7 @@
packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2015-04-08aRagexe, 2015-04-08aRagexeRE
+// 2015-04-08aRagexe
#if PACKETVER == 20150408
packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
packet(0x085a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -4786,7 +4784,7 @@
packet(0x0963,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
#endif
-// 2015-04-15aRagexe, 2015-04-15aRagexeRE
+// 2015-04-15aRagexe
#if PACKETVER == 20150415
packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x0364,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
@@ -4819,7 +4817,7 @@
packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2015-04-22aRagexe, 2015-04-22aRagexeRE
+// 2015-04-22aRagexe
#if PACKETVER == 20150422
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -4852,7 +4850,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-04-29aRagexe, 2015-04-29aRagexeRE
+// 2015-04-29aRagexe
#if PACKETVER == 20150429
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -4885,7 +4883,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-05-07bRagexe, 2015-05-07bRagexeRE, 2015-05-07cRagexe
+// 2015-05-07bRagexe, 2015-05-07cRagexe
#if PACKETVER == 20150507
packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -4918,7 +4916,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-05-13aRagexe, 2015-05-13aRagexeRE
+// 2015-05-13aRagexe
#if PACKETVER == 20150513
packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
packet(0x02c4,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -4951,7 +4949,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-05-20aRagexe, 2015-05-20aRagexeRE
+// 2015-05-20aRagexe
#if PACKETVER == 20150520
packet(0x0202,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0361,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
@@ -4984,7 +4982,7 @@
packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2015-05-27aRagexe, 2015-05-27aRagexeRE
+// 2015-05-27aRagexe
#if PACKETVER == 20150527
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -5017,7 +5015,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-06-03aRagexe, 2015-06-03bRagexeRE
+// 2015-06-03aRagexe
#if PACKETVER == 20150603
packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
packet(0x0437,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -5050,7 +5048,7 @@
packet(0x096a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
#endif
-// 2015-06-10aRagexe, 2015-06-10aRagexeRE
+// 2015-06-10aRagexe
#if PACKETVER == 20150610
packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
packet(0x0438,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -5083,7 +5081,7 @@
packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2015-06-17aRagexe, 2015-06-17aRagexeRE, 2015-06-18aRagexe, 2015-06-18aRagexeRE
+// 2015-06-17aRagexe, 2015-06-18aRagexe
#if PACKETVER == 20150617 || \
PACKETVER == 20150618
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -5117,7 +5115,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-06-24aRagexe, 2015-06-24aRagexeRE
+// 2015-06-24aRagexe
#if PACKETVER == 20150624
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -5150,7 +5148,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-07-01bRagexe, 2015-07-01bRagexeRE, 2015-07-02aRagexe
+// 2015-07-01bRagexe, 2015-07-02aRagexe
#if PACKETVER == 20150701 || \
PACKETVER == 20150702
packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -5184,7 +5182,7 @@
packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2015-07-08bRagexeRE, 2015-07-08cRagexe, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE
+// 2015-07-08cRagexe
#if PACKETVER == 20150708
packet(0x022d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
@@ -5217,7 +5215,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-07-15aRagexe, 2015-07-15aRagexeRE
+// 2015-07-15aRagexe
#if PACKETVER == 20150715
packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
packet(0x0362,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
@@ -5250,7 +5248,7 @@
packet(0x0965,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2015-07-22bRagexe, 2015-07-22bRagexeRE
+// 2015-07-22bRagexe
#if PACKETVER == 20150722
packet(0x023b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
@@ -5283,7 +5281,7 @@
packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
#endif
-// 2015-07-29aRagexe, 2015-07-29aRagexeRE
+// 2015-07-29aRagexe
#if PACKETVER == 20150729
packet(0x0437,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
packet(0x0438,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
@@ -5316,7 +5314,7 @@
packet(0x096a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
#endif
-// 2015-08-05aRagexe, 2015-08-05dRagexeRE
+// 2015-08-05aRagexe
#if PACKETVER == 20150805
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -5349,7 +5347,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-08-12aRagexe, 2015-08-12aRagexeRE
+// 2015-08-12aRagexe
#if PACKETVER == 20150812
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -5382,7 +5380,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-08-19aRagexe, 2015-08-19aRagexeRE, 2015-08-19bRagexeRE
+// 2015-08-19aRagexe
#if PACKETVER == 20150819
packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x022d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
@@ -5415,7 +5413,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-08-26aRagexe, 2015-08-26aRagexeRE, 2015-08-26bRagexe, 2015-08-26bRagexeRE
+// 2015-08-26aRagexe, 2015-08-26bRagexe
#if PACKETVER == 20150826
packet(0x0362,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x0368,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
@@ -5448,7 +5446,7 @@
packet(0x0969,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
#endif
-// 2015-09-02aRagexe, 2015-09-02aRagexeRE
+// 2015-09-02aRagexe
#if PACKETVER == 20150902
packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
@@ -5481,7 +5479,7 @@
packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
#endif
-// 2015-09-09aRagexe, 2015-09-09aRagexeRE
+// 2015-09-09aRagexe
#if PACKETVER == 20150909
packet(0x023b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -5514,7 +5512,7 @@
packet(0x096a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2015-09-16aRagexe, 2015-09-16cRagexe, 2015-09-16cRagexeRE
+// 2015-09-16aRagexe, 2015-09-16cRagexe
#if PACKETVER == 20150916
packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x0817,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
@@ -5547,7 +5545,7 @@
packet(0x0969,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
#endif
-// 2015-09-23bRagexe, 2015-09-23bRagexeRE, 2015-09-23cRagexe, 2015-09-23dRagexe, 2015-09-23eRagexe, 2015-09-23eRagexeRE, 2015-09-23fRagexe, 2015-09-23fRagexeRE
+// 2015-09-23bRagexe, 2015-09-23cRagexe, 2015-09-23dRagexe, 2015-09-23eRagexe, 2015-09-23fRagexe
#if PACKETVER == 20150923
packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
@@ -5580,7 +5578,7 @@
packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
#endif
-// 2015-10-01aRagexe, 2015-10-01bRagexeRE
+// 2015-10-01aRagexe
#if PACKETVER == 20151001
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -5613,7 +5611,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-10-07aRagexe, 2015-10-07aRagexeRE
+// 2015-10-07aRagexe
#if PACKETVER == 20151007
packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -5646,7 +5644,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-10-14bRagexe, 2015-10-14bRagexeRE
+// 2015-10-14bRagexe
#if PACKETVER == 20151014
packet(0x0202,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
packet(0x0817,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
@@ -5679,7 +5677,7 @@
packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
#endif
-// 2015-10-21aRagexe, 2015-10-21aRagexeRE, 2015-10-22aRagexe, 2015-10-22aRagexeRE
+// 2015-10-21aRagexe, 2015-10-22aRagexe
#if PACKETVER == 20151021 || \
PACKETVER == 20151022
packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -5713,7 +5711,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-10-28bRagexeRE, 2015-10-28bRagexeRE_2, 2015-10-28cRagexe, 2015-10-28cRagexeRE, 2015-10-28dRagexe, 2015-10-28dRagexeRE, 2015-10-29aRagexe, 2015-10-29aRagexeRE
+// 2015-10-28cRagexe, 2015-10-28dRagexe, 2015-10-29aRagexe
#if PACKETVER == 20151028 || \
PACKETVER == 20151029
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
@@ -5747,7 +5745,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-11-04aRagexe, 2015-11-04aRagexeRE
+// 2015-11-04aRagexe
#if PACKETVER == 20151104
packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -5780,7 +5778,7 @@
packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
#endif
-// 2015-11-11aRagexe, 2015-11-11aRagexeRE, 2015-11-11bRagexe
+// 2015-11-11aRagexe, 2015-11-11bRagexe
#if PACKETVER == 20151111
packet(0x02c4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -5813,7 +5811,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-11-18aRagexe, 2015-11-18aRagexeRE
+// 2015-11-18aRagexe
#if PACKETVER == 20151118
packet(0x022d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x035f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
@@ -5846,7 +5844,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-11-25bRagexe, 2015-11-25bRagexeRE, 2015-11-25cRagexeRE, 2015-11-25dRagexe, 2015-11-25dRagexeRE
+// 2015-11-25bRagexe, 2015-11-25dRagexe
#if PACKETVER == 20151125
packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
@@ -5879,7 +5877,7 @@
packet(0x0959,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
#endif
-// 2015-12-02aRagexe, 2015-12-02bRagexeRE
+// 2015-12-02aRagexe
#if PACKETVER == 20151202
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -5912,7 +5910,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2015-12-09aRagexe, 2015-12-09aRagexeRE
+// 2015-12-09aRagexe
#if PACKETVER == 20151209
packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
@@ -5945,7 +5943,7 @@
packet(0x0964,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
#endif
-// 2015-12-16aRagexe, 2015-12-16aRagexeRE
+// 2015-12-16aRagexe
#if PACKETVER == 20151216
packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x0361,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -5978,7 +5976,7 @@
packet(0x0968,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
#endif
-// 2015-12-23bRagexe, 2015-12-23bRagexeRE
+// 2015-12-23bRagexe
#if PACKETVER == 20151223
packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x0362,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -6011,7 +6009,7 @@
packet(0x0967,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-// 2015-12-30aRagexe, 2015-12-30aRagexeRE
+// 2015-12-30aRagexe
#if PACKETVER == 20151230
packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -6044,7 +6042,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-01-06aRagexe, 2016-01-06aRagexeRE
+// 2016-01-06aRagexe
#if PACKETVER == 20160106
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -6077,7 +6075,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-01-13aRagexe, 2016-01-13aRagexeRE, 2016-01-13bRagexe, 2016-01-13bRagexeRE, 2016-01-13bRagexeRE_2, 2016-01-13bRagexe_2, 2016-01-13cRagexeRE
+// 2016-01-13aRagexe, 2016-01-13bRagexe, 2016-01-13bRagexe_2
#if PACKETVER == 20160113
packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x023b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
@@ -6110,7 +6108,7 @@
packet(0x0967,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#endif
-// 2016-01-20aRagexe, 2016-01-20aRagexeRE
+// 2016-01-20aRagexe
#if PACKETVER == 20160120
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -6143,7 +6141,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-01-27aRagexeRE, 2016-01-27aRagexeRE_2, 2016-01-27bRagexeRE, 2016-01-27cRagexe, 2016-01-27dRagexe
+// 2016-01-27cRagexe, 2016-01-27dRagexe
#if PACKETVER == 20160127
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -6176,7 +6174,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-02-03aRagexe, 2016-02-03aRagexeRE
+// 2016-02-03aRagexe
#if PACKETVER == 20160203
packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -6209,7 +6207,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-02-11aRagexe, 2016-02-11aRagexeRE
+// 2016-02-11aRagexe
#if PACKETVER == 20160211
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
@@ -6242,7 +6240,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-02-17aRagexe, 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17bRagexeRE_2, 2016-02-17cRagexeRE
+// 2016-02-17aRagexe
#if PACKETVER == 20160217
packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
@@ -6275,7 +6273,7 @@
packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#endif
-// 2016-02-24aRagexe, 2016-02-24aRagexeRE, 2016-02-24bRagexeRE
+// 2016-02-24aRagexe
#if PACKETVER == 20160224
packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -6308,7 +6306,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-03-02bRagexe, 2016-03-02bRagexeRE
+// 2016-03-02bRagexe
#if PACKETVER == 20160302
packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x0367,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -6341,7 +6339,7 @@
packet(0x0968,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
#endif
-// 2016-03-09aRagexeRE, 2016-03-09cRagexe
+// 2016-03-09cRagexe
#if PACKETVER == 20160309
packet(0x023b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
packet(0x0281,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -6374,7 +6372,7 @@
packet(0x096a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
#endif
-// 2016-03-16aRagexe, 2016-03-16aRagexeRE, 2016-03-18aRagexe
+// 2016-03-16aRagexe, 2016-03-18aRagexe
#if PACKETVER == 20160316 || \
PACKETVER == 20160318
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
@@ -6408,7 +6406,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-03-23aRagexe, 2016-03-23aRagexeRE, 2016-03-23bRagexe, 2016-03-23bRagexeRE
+// 2016-03-23aRagexe, 2016-03-23bRagexe
#if PACKETVER == 20160323
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -6441,7 +6439,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-03-30aRagexe, 2016-03-30aRagexeRE, 2016-03-30bRagexe
+// 2016-03-30aRagexe, 2016-03-30bRagexe
#if PACKETVER == 20160330
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -6474,7 +6472,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-04-06aRagexe, 2016-04-06aRagexeRE, 2016-04-06bRagexe
+// 2016-04-06aRagexe, 2016-04-06bRagexe
#if PACKETVER == 20160406
packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
packet(0x07e4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
@@ -6507,7 +6505,7 @@
packet(0x0962,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
#endif
-// 2016-04-14aRagexe, 2016-04-14aRagexeRE, 2016-04-14bRagexe, 2016-04-14bRagexeRE, 2016-04-14bRagexe_2, 2016-04-14cRagexe
+// 2016-04-14aRagexe, 2016-04-14bRagexe, 2016-04-14bRagexe_2, 2016-04-14cRagexe
#if PACKETVER == 20160414
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -6540,7 +6538,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-04-20aRagexeRE, 2016-04-20cRagexe
+// 2016-04-20cRagexe
#if PACKETVER == 20160420
packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -6573,7 +6571,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-04-27aRagexe, 2016-04-27aRagexeRE
+// 2016-04-27aRagexe
#if PACKETVER == 20160427
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -6606,7 +6604,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-05-04aRagexe, 2016-05-04aRagexeRE
+// 2016-05-04aRagexe
#if PACKETVER == 20160504
packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
@@ -6639,7 +6637,7 @@
packet(0x0969,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
#endif
-// 2016-05-11aRagexe, 2016-05-11aRagexeRE, 2016-05-11bRagexeRE
+// 2016-05-11aRagexe
#if PACKETVER == 20160511
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -6672,7 +6670,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-05-18aRagexe, 2016-05-18aRagexeRE
+// 2016-05-18aRagexe
#if PACKETVER == 20160518
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -6705,7 +6703,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-05-25aRagexe, 2016-05-25aRagexeRE, 2016-05-26aRagexe
+// 2016-05-25aRagexe, 2016-05-26aRagexe
#if PACKETVER == 20160525 || \
PACKETVER == 20160526
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -6739,7 +6737,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-06-01aRagexe, 2016-06-01aRagexeRE
+// 2016-06-01aRagexe
#if PACKETVER == 20160601
packet(0x0202,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
@@ -6772,7 +6770,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-06-08aRagexe, 2016-06-08aRagexeRE, 2016-06-08bRagexe, 2016-06-08bRagexeRE, 2016-06-09aRagexe
+// 2016-06-08aRagexe, 2016-06-08bRagexe, 2016-06-09aRagexe
#if PACKETVER == 20160608 || \
PACKETVER == 20160609
packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -6806,7 +6804,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-06-15aRagexe, 2016-06-15aRagexeRE
+// 2016-06-15aRagexe
#if PACKETVER == 20160615
packet(0x0281,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -6839,7 +6837,7 @@
packet(0x0961,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-// 2016-06-22aRagexe, 2016-06-22aRagexeRE
+// 2016-06-22aRagexe
#if PACKETVER == 20160622
packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x035f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
@@ -6872,7 +6870,7 @@
packet(0x0969,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
#endif
-// 2016-06-29aRagexe, 2016-06-29aRagexeRE, 2016-06-30aRagexe, 2016-06-30aRagexeRE
+// 2016-06-29aRagexe, 2016-06-30aRagexe
#if PACKETVER == 20160629 || \
PACKETVER == 20160630
packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
@@ -6906,7 +6904,7 @@
packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
#endif
-// 2016-07-06bRagexe, 2016-07-06cRagexeRE
+// 2016-07-06bRagexe
#if PACKETVER == 20160706
packet(0x0362,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -6939,7 +6937,7 @@
packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
#endif
-// 2016-07-13aRagexe, 2016-07-13aRagexeRE, 2016-07-13bRagexe, 2016-07-13bRagexeRE, 2016-07-13cRagexe, 2016-07-13dRagexe
+// 2016-07-13aRagexe, 2016-07-13bRagexe, 2016-07-13cRagexe, 2016-07-13dRagexe
#if PACKETVER == 20160713
packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x0363,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
@@ -6972,7 +6970,7 @@
packet(0x095b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
#endif
-// 2016-07-20aRagexe, 2016-07-20aRagexeRE, 2016-07-20bRagexe, 2016-07-20bRagexeRE
+// 2016-07-20aRagexe, 2016-07-20bRagexe
#if PACKETVER == 20160720
packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
@@ -7005,7 +7003,7 @@
packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
#endif
-// 2016-07-27aRagexe, 2016-07-27aRagexeRE, 2016-07-27bRagexe, 2016-07-27bRagexeRE
+// 2016-07-27aRagexe, 2016-07-27bRagexe
#if PACKETVER == 20160727
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -7038,7 +7036,7 @@
packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
#endif
-// 2016-08-03bRagexe, 2016-08-03bRagexeRE
+// 2016-08-03bRagexe
#if PACKETVER == 20160803
packet(0x0364,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
packet(0x085d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -7071,7 +7069,7 @@
packet(0x096a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
#endif
-// 2016-08-10aRagexe, 2016-08-10aRagexeRE
+// 2016-08-10aRagexe
#if PACKETVER == 20160810
packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x0819,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
@@ -7104,7 +7102,7 @@
packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
#endif
-// 2016-08-17aRagexe, 2016-08-17aRagexeRE
+// 2016-08-17aRagexe
#if PACKETVER == 20160817
packet(0x0364,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0437,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
@@ -7137,7 +7135,7 @@
packet(0x0963,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2016-08-24aRagexe, 2016-08-24aRagexeRE
+// 2016-08-24aRagexe
#if PACKETVER == 20160824
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -7170,7 +7168,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-08-31aRagexe, 2016-08-31aRagexeRE, 2016-08-31bRagexe, 2016-08-31bRagexeRE
+// 2016-08-31aRagexe, 2016-08-31bRagexe
#if PACKETVER == 20160831
packet(0x022d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
packet(0x0366,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
@@ -7203,7 +7201,7 @@
packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
#endif
-// 2016-09-07aRagexe, 2016-09-07aRagexeRE
+// 2016-09-07aRagexe
#if PACKETVER == 20160907
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -7236,7 +7234,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-09-13aRagexe, 2016-09-13aRagexeRE
+// 2016-09-13aRagexe
#if PACKETVER == 20160913
packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
packet(0x0817,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
@@ -7269,7 +7267,7 @@
packet(0x0968,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
#endif
-// 2016-09-21aRagexe, 2016-09-21bRagexeRE
+// 2016-09-21aRagexe
#if PACKETVER == 20160921
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -7302,7 +7300,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-09-28cRagexe, 2016-09-28cRagexeRE, 2016-09-28dRagexeRE
+// 2016-09-28cRagexe
#if PACKETVER == 20160928
packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
@@ -7335,7 +7333,7 @@
packet(0x095a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
#endif
-// 2016-10-05aRagexe, 2016-10-05aRagexeRE
+// 2016-10-05aRagexe
#if PACKETVER == 20161005
packet(0x0202,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
packet(0x0368,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
@@ -7368,7 +7366,7 @@
packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
#endif
-// 2016-10-12aRagexe, 2016-10-12aRagexeRE
+// 2016-10-12aRagexe
#if PACKETVER == 20161012
packet(0x023b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
@@ -7401,7 +7399,7 @@
packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
#endif
-// 2016-10-19aRagexe, 2016-10-19aRagexeRE
+// 2016-10-19aRagexe
#if PACKETVER == 20161019
packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -7434,7 +7432,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-10-26bRagexe, 2016-10-26bRagexeRE, 2016-10-26cRagexe, 2016-10-26cRagexeRE
+// 2016-10-26bRagexe, 2016-10-26cRagexe
#if PACKETVER == 20161026
packet(0x0363,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
@@ -7467,7 +7465,7 @@
packet(0x0962,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2016-11-02aRagexe, 2016-11-02aRagexeRE, 2016-11-03aRagexe, 2016-11-03aRagexeRE
+// 2016-11-02aRagexe, 2016-11-03aRagexe
#if PACKETVER == 20161102 || \
PACKETVER == 20161103
packet(0x0361,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
@@ -7501,7 +7499,7 @@
packet(0x0966,6,clif->pTickSend,2); // CZ_REQUEST_TIME
#endif
-// 2016-11-09aRagexe, 2016-11-09aRagexeRE, 2016-11-09bRagexe, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE
+// 2016-11-09aRagexe, 2016-11-09bRagexe
#if PACKETVER == 20161109
packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
@@ -7534,7 +7532,7 @@
packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2016-11-16aRagexe, 2016-11-16bRagexeRE, 2016-11-16cRagexeRE
+// 2016-11-16aRagexe
#if PACKETVER == 20161116
packet(0x0368,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0369,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
@@ -7567,7 +7565,7 @@
packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
#endif
-// 2016-11-23aRagexe, 2016-11-23aRagexeRE
+// 2016-11-23aRagexe
#if PACKETVER == 20161123
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
@@ -7600,7 +7598,7 @@
packet(0x096a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
#endif
-// 2016-11-30aRagexe, 2016-11-30aRagexeRE, 2016-11-30bRagexe, 2016-11-30bRagexeRE
+// 2016-11-30aRagexe, 2016-11-30bRagexe
#if PACKETVER == 20161130
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
@@ -7633,7 +7631,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-12-07cRagexe, 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexe, 2016-12-07eRagexeRE
+// 2016-12-07cRagexe, 2016-12-07eRagexe
#if PACKETVER == 20161207
packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -7666,7 +7664,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-12-14bRagexe, 2016-12-14bRagexeRE, 2016-12-14cRagexe, 2016-12-14cRagexeRE
+// 2016-12-14bRagexe, 2016-12-14cRagexe
#if PACKETVER == 20161214
packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
@@ -7699,7 +7697,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2016-12-21aRagexe, 2016-12-21aRagexeRE, 2016-12-21bRagexe, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE
+// 2016-12-21aRagexe, 2016-12-21bRagexe
#if PACKETVER == 20161221
packet(0x035f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
@@ -7732,7 +7730,7 @@
packet(0x0965,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
#endif
-// 2016-12-28aRagexe, 2016-12-28aRagexeRE
+// 2016-12-28aRagexe
#if PACKETVER == 20161228
packet(0x0362,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
packet(0x085a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
@@ -7765,7 +7763,7 @@
packet(0x0944,6,clif->pTickSend,2); // CZ_REQUEST_TIME
#endif
-// 2017-01-04aRagexe, 2017-01-04bRagexeRE
+// 2017-01-04aRagexe
#if PACKETVER == 20170104
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -7798,7 +7796,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-01-11aRagexe, 2017-01-11aRagexeRE
+// 2017-01-11aRagexe
#if PACKETVER == 20170111
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -7831,7 +7829,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-01-18aRagexe, 2017-01-18aRagexeRE
+// 2017-01-18aRagexe
#if PACKETVER == 20170118
packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -7864,7 +7862,7 @@
packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
#endif
-// 2017-01-25aRagexe, 2017-01-25aRagexeRE
+// 2017-01-25aRagexe
#if PACKETVER == 20170125
packet(0x0438,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -7897,7 +7895,7 @@
packet(0x0968,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
#endif
-// 2017-02-01aRagexe, 2017-02-01aRagexeRE
+// 2017-02-01aRagexe
#if PACKETVER == 20170201
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -7930,7 +7928,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-02-08aRagexeRE, 2017-02-08bRagexe, 2017-02-08bRagexeRE
+// 2017-02-08bRagexe
#if PACKETVER == 20170208
packet(0x02c4,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -7963,7 +7961,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-02-15aRagexe, 2017-02-15aRagexeRE
+// 2017-02-15aRagexe
#if PACKETVER == 20170215
packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x035f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
@@ -7996,7 +7994,7 @@
packet(0x0969,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
#endif
-// 2017-02-22aRagexe, 2017-02-22aRagexeRE
+// 2017-02-22aRagexe
#if PACKETVER == 20170222
packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -8029,7 +8027,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-02-28aRagexe, 2017-02-28aRagexeRE, 2017-02-28bRagexe
+// 2017-02-28aRagexe, 2017-02-28bRagexe
#if PACKETVER == 20170228
packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
@@ -8062,7 +8060,7 @@
packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2017-03-08aRagexe, 2017-03-08bRagexeRE
+// 2017-03-08aRagexe
#if PACKETVER == 20170308
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -8095,7 +8093,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-03-15cRagexe, 2017-03-15cRagexeRE
+// 2017-03-15cRagexe
#if PACKETVER == 20170315
packet(0x02c4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x035f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
@@ -8128,7 +8126,7 @@
packet(0x0952,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
#endif
-// 2017-03-22aRagexe, 2017-03-22aRagexeRE, 2017-03-22bRagexe, 2017-03-22bRagexeRE
+// 2017-03-22aRagexe, 2017-03-22bRagexe
#if PACKETVER == 20170322
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -8161,7 +8159,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-03-29bRagexe, 2017-03-29cRagexe, 2017-03-29cRagexeRE, 2017-03-29dRagexeRE
+// 2017-03-29bRagexe, 2017-03-29cRagexe
#if PACKETVER == 20170329
packet(0x0281,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -8194,7 +8192,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-04-05bRagexe, 2017-04-05bRagexeRE, 2017-04-05cRagexe, 2017-04-05cRagexeRE
+// 2017-04-05bRagexe, 2017-04-05cRagexe
#if PACKETVER == 20170405
packet(0x022d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
packet(0x0281,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
@@ -8227,7 +8225,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-04-12aRagexe, 2017-04-12aRagexeRE
+// 2017-04-12aRagexe
#if PACKETVER == 20170412
packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
packet(0x0365,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -8260,7 +8258,7 @@
packet(0x095d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
#endif
-// 2017-04-19aRagexe, 2017-04-19bRagexeRE
+// 2017-04-19aRagexe
#if PACKETVER == 20170419
packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x0819,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
@@ -8293,7 +8291,7 @@
packet(0x0965,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
#endif
-// 2017-04-26bRagexe, 2017-04-26dRagexeRE
+// 2017-04-26bRagexe
#if PACKETVER == 20170426
packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -8326,7 +8324,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-05-02aRagexe, 2017-05-02bRagexe, 2017-05-02dRagexeRE
+// 2017-05-02aRagexe, 2017-05-02bRagexe
#if PACKETVER == 20170502
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -8359,7 +8357,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-05-17aRagexe, 2017-05-17aRagexeRE, 2017-05-17bRagexeRE
+// 2017-05-17aRagexe
#if PACKETVER == 20170517
packet(0x0364,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
packet(0x0367,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
@@ -8392,7 +8390,7 @@
packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
#endif
-// 2017-05-24aRagexe, 2017-05-24aRagexeRE, 2017-05-24bRagexe
+// 2017-05-24aRagexe, 2017-05-24bRagexe
#if PACKETVER == 20170524
packet(0x0364,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
packet(0x0368,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -8425,7 +8423,7 @@
packet(0x0968,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
#endif
-// 2017-05-31aRagexe, 2017-05-31aRagexeRE
+// 2017-05-31aRagexe
#if PACKETVER == 20170531
packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x0369,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
@@ -8458,7 +8456,7 @@
packet(0x0968,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
#endif
-// 2017-06-07bRagexeRE, 2017-06-07cRagexe, 2017-06-07cRagexeRE
+// 2017-06-07cRagexe
#if PACKETVER == 20170607
packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -8491,7 +8489,7 @@
packet(0x0949,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#endif
-// 2017-06-14bRagexe, 2017-06-14bRagexeRE
+// 2017-06-14bRagexe
#if PACKETVER == 20170614
packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
packet(0x0361,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
@@ -8524,7 +8522,7 @@
packet(0x0963,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-// 2017-06-21aRagexeRE, 2017-06-21bRagexe
+// 2017-06-21bRagexe
#if PACKETVER == 20170621
packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -8557,7 +8555,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-06-28bRagexe, 2017-06-28bRagexeRE
+// 2017-06-28bRagexe
#if PACKETVER == 20170628
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -8590,7 +8588,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-07-05aRagexe, 2017-07-05aRagexeRE
+// 2017-07-05aRagexe
#if PACKETVER == 20170705
packet(0x0202,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
@@ -8623,7 +8621,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-07-12bRagexe, 2017-07-12bRagexeRE
+// 2017-07-12bRagexe
#if PACKETVER == 20170712
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -8656,7 +8654,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-07-19aRagexe, 2017-07-19aRagexeRE
+// 2017-07-19aRagexe
#if PACKETVER == 20170719
packet(0x022d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
packet(0x0367,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
@@ -8689,7 +8687,7 @@
packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
#endif
-// 2017-07-26aRagexe, 2017-07-26cRagexeRE
+// 2017-07-26aRagexe
#if PACKETVER == 20170726
packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
@@ -8722,7 +8720,7 @@
packet(0x0963,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
#endif
-// 2017-08-01aRagexe, 2017-08-01aRagexeRE, 2017-08-01bRagexe
+// 2017-08-01aRagexe, 2017-08-01bRagexe
#if PACKETVER == 20170801
packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
@@ -8755,7 +8753,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-08-09cRagexe, 2017-08-09cRagexeRE
+// 2017-08-09cRagexe
#if PACKETVER == 20170809
packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
packet(0x0281,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
@@ -8788,7 +8786,7 @@
packet(0x0940,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2017-08-16cRagexe, 2017-08-16cRagexeRE, 2017-08-16dRagexe, 2017-08-16dRagexeRE
+// 2017-08-16cRagexe, 2017-08-16dRagexe
#if PACKETVER == 20170816
packet(0x022d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
packet(0x035f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
@@ -8821,7 +8819,7 @@
packet(0x0960,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
#endif
-// 2017-08-23aRagexe, 2017-08-23aRagexeRE
+// 2017-08-23aRagexe
#if PACKETVER == 20170823
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -8854,7 +8852,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-08-30aRagexe, 2017-08-30aRagexeRE, 2017-08-30bRagexe, 2017-08-30bRagexeRE
+// 2017-08-30aRagexe, 2017-08-30bRagexe
#if PACKETVER == 20170830
packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x02c4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
@@ -8887,7 +8885,7 @@
packet(0x0959,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
#endif
-// 2017-09-06cRagexe, 2017-09-06cRagexeRE
+// 2017-09-06cRagexe
#if PACKETVER == 20170906
packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
@@ -8920,7 +8918,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-09-13bRagexeRE, 2017-09-13cRagexe
+// 2017-09-13cRagexe
#if PACKETVER == 20170913
packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
packet(0x035f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
@@ -8953,7 +8951,7 @@
packet(0x095c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
#endif
-// 2017-09-20aRagexe, 2017-09-20bRagexeRE
+// 2017-09-20aRagexe
#if PACKETVER == 20170920
packet(0x0369,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
packet(0x0436,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -8986,7 +8984,7 @@
packet(0x096a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
#endif
-// 2017-09-27bRagexe, 2017-09-27bRagexeRE, 2017-09-27cRagexe, 2017-09-27dRagexe, 2017-09-27dRagexeRE
+// 2017-09-27bRagexe, 2017-09-27cRagexe, 2017-09-27dRagexe
#if PACKETVER == 20170927
packet(0x02c4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x035f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
@@ -9019,7 +9017,7 @@
packet(0x095a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
#endif
-// 2017-10-02cRagexe, 2017-10-02cRagexeRE
+// 2017-10-02cRagexe
#if PACKETVER == 20171002
packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -9052,7 +9050,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-10-11aRagexe, 2017-10-11aRagexeRE, 2017-10-11bRagexe, 2017-10-11bRagexeRE
+// 2017-10-11aRagexe, 2017-10-11bRagexe
#if PACKETVER == 20171011
packet(0x023b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -9085,7 +9083,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-10-18aRagexe, 2017-10-18aRagexeRE
+// 2017-10-18aRagexe
#if PACKETVER == 20171018
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -9118,7 +9116,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-10-25bRagexe, 2017-10-25bRagexeRE, 2017-10-25cRagexe, 2017-10-25cRagexeRE, 2017-10-25dRagexe, 2017-10-25dRagexeRE, 2017-10-25eRagexe, 2017-10-25eRagexeRE
+// 2017-10-25bRagexe, 2017-10-25cRagexe, 2017-10-25dRagexe, 2017-10-25eRagexe
#if PACKETVER == 20171025
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -9151,7 +9149,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-11-01aRagexe, 2017-11-01bRagexeRE
+// 2017-11-01aRagexe
#if PACKETVER == 20171101
packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x0368,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -9184,7 +9182,7 @@
packet(0x0966,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
#endif
-// 2017-11-08aRagexe, 2017-11-08bRagexeRE
+// 2017-11-08aRagexe
#if PACKETVER == 20171108
packet(0x0202,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
@@ -9217,7 +9215,7 @@
packet(0x0967,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
#endif
-// 2017-11-15aRagexe, 2017-11-15aRagexeRE
+// 2017-11-15aRagexe
#if PACKETVER == 20171115
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -9250,7 +9248,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-11-22aRagexe, 2017-11-22bRagexeRE
+// 2017-11-22aRagexe
#if PACKETVER == 20171122
packet(0x0281,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
packet(0x02c4,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
@@ -9283,7 +9281,7 @@
packet(0x0968,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
#endif
-// 2017-11-29aRagexe, 2017-11-29aRagexeRE
+// 2017-11-29aRagexe
#if PACKETVER == 20171129
packet(0x02c4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -9316,7 +9314,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-12-06aRagexeRE, 2017-12-06bRagexe, 2017-12-06cRagexe
+// 2017-12-06bRagexe, 2017-12-06cRagexe
#if PACKETVER == 20171206
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
@@ -9349,7 +9347,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-12-13bRagexe, 2017-12-13bRagexeRE
+// 2017-12-13bRagexe
#if PACKETVER == 20171213
packet(0x0202,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
@@ -9382,7 +9380,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2017-12-20aRagexe, 2017-12-20aRagexeRE
+// 2017-12-20aRagexe
#if PACKETVER == 20171220
packet(0x0281,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
packet(0x0366,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
@@ -9415,7 +9413,7 @@
packet(0x0964,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
#endif
-// 2017-12-27aRagexe, 2017-12-27aRagexeRE
+// 2017-12-27aRagexe
#if PACKETVER == 20171227
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -9448,7 +9446,7 @@
packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
#endif
-// 2018-01-03aRagexe, 2018-01-03aRagexeRE, 2018-01-03bRagexe, 2018-01-03bRagexeRE
+// 2018-01-03aRagexe, 2018-01-03bRagexe
#if PACKETVER == 20180103
packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
packet(0x0363,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
@@ -9481,7 +9479,7 @@
packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
#endif
-// 2018-01-17aRagexe, 2018-01-17aRagexeRE
+// 2018-01-17aRagexe
#if PACKETVER == 20180117
packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
@@ -9514,7 +9512,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2018-01-24bRagexe, 2018-01-24bRagexeRE, 2018-01-31Ragexe
+// 2018-01-24bRagexe, 2018-01-31Ragexe
#if PACKETVER == 20180124 || \
PACKETVER == 20180131
packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
@@ -9548,7 +9546,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2018-02-07bRagexe, 2018-02-07bRagexeRE, 2018-02-07cRagexe
+// 2018-02-07bRagexe, 2018-02-07cRagexe
#if PACKETVER == 20180207
packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
@@ -9581,7 +9579,7 @@
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
-// 2018-02-13aRagexe, 2018-02-13aRagexeRE, 2018-02-13bRagexe
+// 2018-02-13aRagexe, 2018-02-13bRagexe
#if PACKETVER == 20180213
packet(0x0369,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
packet(0x0802,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
@@ -9614,7 +9612,7 @@
packet(0x0962,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
#endif
-// 2018-02-21aRagexeRE, 2018-02-21bRagexe, 2018-02-21bRagexeRE
+// 2018-02-21bRagexe
#if PACKETVER == 20180221
packet(0x0202,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
packet(0x0366,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
@@ -9647,7 +9645,7 @@
packet(0x096a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
#endif
-// 2018-03-07bRagexe, 2018-03-07bRagexeRE, 2018-03-09aRagexe
+// 2018-03-07bRagexe, 2018-03-09aRagexe
#if PACKETVER == 20180307 || \
PACKETVER == 20180309
packet(0x0281,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h
new file mode 100644
index 000000000..a2d5e7061
--- /dev/null
+++ b/src/map/packets_shuffle_re.h
@@ -0,0 +1,9700 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2013-2018 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+//Included directly by clif.c in packet_loaddb()
+
+#ifndef MAP_PACKETS_SHUFFLE_RE_H
+#define MAP_PACKETS_SHUFFLE_RE_H
+
+#ifndef packet
+ #define packet(a,b,...)
+#endif
+
+/*
+ * packet syntax
+ * - packet(packet_id,length,function,offset ( specifies the offset of a packet field in bytes from the begin of the packet ),...)
+ * - Example: packet(0x0072,19,clif->pWantToConnection,2,6,10,14,18);
+ */
+
+/* This file is autogenerated, please do not commit manual changes */
+
+
+// 2012-07-10aRagexeRE, 2012-07-12aRagexeRE
+#if PACKETVER == 20120710 || \
+ PACKETVER == 20120712
+ packet(0x0202,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x02c4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0362,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0365,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0367,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x07e4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0811,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0877,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0878,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x087f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x088d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0893,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a3,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a6,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a8,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08aa,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0936,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0948,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0953,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0956,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0958,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// 2012-07-16aRagexeRE
+#if PACKETVER == 20120716
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x089f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2012-07-24aRagexeRE
+#if PACKETVER == 20120724
+ packet(0x035f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0815,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0835,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0865,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0866,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0872,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0877,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087c,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0887,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0888,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a1,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a9,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0928,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0929,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x092b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0935,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0938,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x093c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0945,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0957,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0959,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0965,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// 2012-08-01aRagexeRE, 2012-08-01bRagexeRE
+#if PACKETVER == 20120801
+ packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0438,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x086a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0873,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0875,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x088b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0890,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0895,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a2,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08aa,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ab,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0917,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0930,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0934,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x093c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0946,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0964,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// 2012-08-08aRagexeRE, 2012-08-08bRagexeRE, 2012-08-08cRagexeRE, 2012-08-08dRagexeRE
+#if PACKETVER == 20120808
+ packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x093d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2012-08-14aRagexeRE, 2012-08-14bRagexeRE
+#if PACKETVER == 20120814
+ packet(0x0281,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0365,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0366,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x07ec,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0815,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0838,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0861,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0862,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0865,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0868,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x086f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0875,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0882,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x088b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x088d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0895,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08a8,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x091f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0920,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0929,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0932,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0934,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0941,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0967,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0969,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2012-08-22aRagexeRE, 2012-08-22bRagexeRE, 2012-08-22cRagexeRE
+#if PACKETVER == 20120822
+ packet(0x0365,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0437,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x085a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x085d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x086e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0872,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x087d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0899,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a5,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ab,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0917,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0924,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0927,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0935,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0937,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0940,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0943,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x094d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0953,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0955,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0958,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// 2012-08-30aRagexeRE, 2012-08-30bRagexeRE
+#if PACKETVER == 20120830
+ packet(0x022d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0364,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0802,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0838,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0861,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0872,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0887,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0888,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0890,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x091d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0926,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0934,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0945,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094b,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2012-09-05aRagexeRE
+#if PACKETVER == 20120905
+ packet(0x022d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0365,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0817,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x085a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0877,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0878,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x087e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0887,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0895,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0897,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a0,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a6,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0917,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0918,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x091a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0927,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x093c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0944,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0945,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0950,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0954,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0959,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0967,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+#endif
+
+// 2012-09-11aRagexeRE
+#if PACKETVER == 20120911
+ packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0868,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0877,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0879,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a4,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a5,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08a6,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a7,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08ad,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0930,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0935,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0948,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0949,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0958,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0959,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0962,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0963,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2012-09-19aRagexeRE
+#if PACKETVER == 20120919
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0956,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2012-09-25aRagexeRE, 2012-09-26aRagexeRE
+#if PACKETVER == 20120925 || \
+ PACKETVER == 20120926
+ packet(0x07e4,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0815,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0819,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0835,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0838,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0873,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x087e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0887,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x088a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a4,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x091c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x091e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0923,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0927,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0932,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0942,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0948,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0950,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0956,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0957,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0958,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0963,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// 2012-10-10aRagexeRE, 2012-10-10bRagexeRE, 2012-10-11aRagexeRE
+#if PACKETVER == 20121010 || \
+ PACKETVER == 20121011
+ packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0817,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0869,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0874,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0883,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0888,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0891,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0896,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0898,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a1,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a6,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a9,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0925,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0934,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x093c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0942,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0947,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0957,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0958,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0959,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0964,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0969,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2012-10-17aRagexeRE, 2012-10-17bRagexeRE
+#if PACKETVER == 20121017
+ packet(0x023b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0868,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x086b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0887,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0888,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0897,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x089a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a6,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0918,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0920,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0960,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0965,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2012-10-24aRagexeRE
+#if PACKETVER == 20121024
+ packet(0x0436,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0437,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0438,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0817,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0838,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0868,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0872,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0875,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x087e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0882,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0888,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0889,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x088a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x089c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a9,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08aa,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0931,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0938,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x093a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0942,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0947,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0954,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0955,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x095d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0965,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+#endif
+
+// 2012-10-31aRagexeRE
+#if PACKETVER == 20121031
+ packet(0x022d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0871,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0877,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0898,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2012-11-07aRagexeRE
+#if PACKETVER == 20121107
+ packet(0x0360,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0365,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x085c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0861,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0865,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0871,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0873,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0878,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0890,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0891,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0896,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x089a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08a2,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ad,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0922,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0934,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x093b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0945,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x094d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0960,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0963,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0966,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x096a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+#endif
+
+// 2012-11-14aRagexeRE
+#if PACKETVER == 20121114
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0365,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0437,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0815,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0862,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0876,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0879,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0881,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0898,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0899,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a9,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08aa,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ab,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0930,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0935,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0938,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x093b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x093c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0944,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0949,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x095c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0965,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// 2012-11-21aRagexeRE
+#if PACKETVER == 20121121
+ packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0362,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0437,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0863,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x086f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0872,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0875,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0880,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0892,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a7,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08aa,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x091a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0921,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0927,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0929,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0938,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0946,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x094d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0950,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0952,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0954,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0957,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0958,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// 2012-11-28aRagexeRE
+#if PACKETVER == 20121128
+ packet(0x0362,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0363,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x07ec,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0802,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0861,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x086c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0872,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0888,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0894,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0895,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a8,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08ad,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x091c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x091e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x091f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0921,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0931,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0945,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0947,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0950,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0953,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0954,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0960,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// 2012-12-05aRagexeRE, 2012-12-05bRagexeRE
+#if PACKETVER == 20121205
+ packet(0x035f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0360,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0815,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0863,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0864,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0873,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0875,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0878,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0888,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0889,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x088b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08ad,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x091a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x091c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0921,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x093a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x093e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0946,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0954,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0959,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2012-12-12aRagexeRE, 2012-12-12bRagexeRE, 2012-12-12cRagexeRE
+#if PACKETVER == 20121212
+ packet(0x0362,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0368,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0369,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0436,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0438,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0817,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x085c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0877,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x087d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0893,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0895,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a3,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a7,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a9,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08aa,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08ac,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0917,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0920,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0932,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0947,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0951,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0953,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0957,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x095b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0965,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0966,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2012-12-18aRagexeRE, 2012-12-18bRagexeRE
+#if PACKETVER == 20121218
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0363,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0872,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0889,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0890,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x091a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0935,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0946,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0957,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2012-12-27aRagexeRE
+#if PACKETVER == 20121227
+ packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x02c4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0437,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0860,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0870,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0872,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0886,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0888,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0890,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0894,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0896,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a6,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08aa,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0917,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x091f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0920,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0932,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0933,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0943,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0947,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0953,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0958,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0962,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+#endif
+
+// 2013-01-03aRagexeRE
+#if PACKETVER == 20130103
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0940,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-01-09aRagexeRE
+#if PACKETVER == 20130109
+ packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0365,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0368,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0838,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0866,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0888,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0891,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a2,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08aa,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08ac,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0918,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0922,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0927,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0928,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0930,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0931,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093e,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0950,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0951,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0955,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2013-01-15aRagexeRE, 2013-01-16aRagexeRE
+#if PACKETVER == 20130115 || \
+ PACKETVER == 20130116
+ packet(0x0361,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x07ec,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0817,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0861,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0863,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x086b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0870,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0871,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0877,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0879,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0888,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x088b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0894,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0895,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a0,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0918,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0928,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x092d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0939,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0946,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094b,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x095a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2013-01-21aRagexeRE
+#if PACKETVER == 20130121
+ packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x035f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0802,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0817,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x085d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0874,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0884,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0893,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x094f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0963,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-01-30aRagexeRE
+#if PACKETVER == 20130130
+ packet(0x035f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0367,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0437,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x085f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0862,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x086b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0885,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0886,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0887,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0889,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x089a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a0,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a4,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a9,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x091a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0920,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0924,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x093a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0956,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0957,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x095b,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2013-02-06aRagexeRE
+#if PACKETVER == 20130206
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0811,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0876,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0883,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0885,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0899,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a0,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0920,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0925,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x093c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0950,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-02-15aRagexeRE
+#if PACKETVER == 20130215
+ packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0886,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08ad,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0923,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0956,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x095d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0962,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-02-20bRagexeRE
+#if PACKETVER == 20130220
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-02-27aRagexeRE
+#if PACKETVER == 20130227
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x035f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0811,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0815,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0817,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0863,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0867,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0869,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x086e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0893,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0898,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a0,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a1,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x091b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x091f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0924,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x092b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x092f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0946,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0951,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x095b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0967,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+#endif
+
+// 2013-03-06aRagexeRE, 2013-03-06bRagexeRE
+#if PACKETVER == 20130306
+ packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0367,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0368,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0802,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0817,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x085b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0860,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x086d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0881,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0890,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0898,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08ac,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0917,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0926,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0934,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0936,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0943,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0945,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0946,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094a,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0951,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0960,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE
+#if PACKETVER == 20130313
+ packet(0x0202,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0887,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0920,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-03-20bRagexeRE, 2013-03-20cRagexeRE
+#if PACKETVER == 20130320
+ packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0438,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x085d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0868,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0874,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0881,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0886,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0890,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0897,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0898,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0922,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0933,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0938,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x093f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0947,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0959,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x095a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// 2013-03-27bRagexeRE
+#if PACKETVER == 20130327
+ packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0835,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0873,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0878,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x087a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0885,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x088f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0891,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0893,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a1,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a2,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x091f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x092b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x092d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x092e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0933,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0938,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0939,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0955,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0960,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0961,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0967,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+#endif
+
+// 2013-04-03aRagexeRE
+#if PACKETVER == 20130403
+ packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0884,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a5,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0926,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0942,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0950,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-04-10aRagexeRE
+#if PACKETVER == 20130410
+ packet(0x0367,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0437,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0860,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0865,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0881,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x088c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0890,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0891,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x089c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08a0,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08a7,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0917,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x091d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0933,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0939,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x093d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0944,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0945,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0955,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0960,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0967,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x096a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+#endif
+
+// 2013-04-17aRagexeRE
+#if PACKETVER == 20130417
+ packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0875,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0929,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0962,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0969,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x096a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
+// 2013-04-24aRagexeRE
+#if PACKETVER == 20130424
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0969,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-05-02aRagexeRE
+#if PACKETVER == 20130502
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0870,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0874,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0875,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0877,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0888,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0889,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a1,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a3,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0961,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0967,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2013-05-08bRagexeRE
+#if PACKETVER == 20130508
+ packet(0x022d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0868,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0878,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0893,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0895,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0897,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ab,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x092d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0944,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0957,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-05-15aRagexeRE
+#if PACKETVER == 20130515
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0862,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0887,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a1,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08aa,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ac,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x093e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0943,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0944,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0947,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0962,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0963,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-05-22aRagexeRE
+#if PACKETVER == 20130522
+ packet(0x0360,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0368,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x07ec,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0811,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0874,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x088e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a2,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a3,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a6,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a9,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08aa,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08ac,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0925,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0926,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0950,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0952,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x095c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x095e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0964,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0965,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// 2013-05-29aRagexeRE
+#if PACKETVER == 20130529
+ packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0438,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x085e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0863,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0869,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0874,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0876,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0877,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0888,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0890,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0892,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0895,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0897,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a7,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a8,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0917,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0918,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0919,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0936,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0937,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0938,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0941,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0956,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0957,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0958,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0964,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// 2013-06-05cRagexeRE
+#if PACKETVER == 20130605
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0883,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-06-12bRagexeRE
+#if PACKETVER == 20130612
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0919,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0964,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-06-18#1aRagexeRE
+#if PACKETVER == 20130618
+ packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x02c4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0363,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0862,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0864,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0878,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0885,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0887,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0889,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x088e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0890,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0891,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08a6,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a7,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0917,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0930,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0932,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0936,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0942,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0944,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0945,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0951,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0953,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+#endif
+
+// 2013-06-26_3bRagexeRE, 2013-06-26aRagexeRE
+#if PACKETVER == 20130626
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0860,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0894,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0895,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a5,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08ab,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0921,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0930,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0952,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0960,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-07-03bRagexeRE
+#if PACKETVER == 20130703
+ packet(0x0202,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0873,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0930,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-07-10aRagexeRE, 2013-07-10bRagexeRE, 2013-07-10cRagexeRE, 2013-07-10dRagexeRE, 2013-07-10eRagexeRE
+#if PACKETVER == 20130710
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0880,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE
+#if PACKETVER == 20130717
+ packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0863,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x086b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0882,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x088a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0897,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0898,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x089b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a6,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a9,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08aa,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0917,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0918,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x091d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x092f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0956,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0958,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x095b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0960,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x096a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// 2013-07-24eRagexeRE, 2013-07-24fRagexeRE
+#if PACKETVER == 20130724
+ packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0437,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x085a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0867,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0874,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0876,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0890,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0891,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0893,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0921,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0924,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x092b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0953,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0954,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0956,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0958,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x095c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0965,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0966,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2013-07-31cRagexeRE
+#if PACKETVER == 20130731
+ packet(0x022d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0366,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0865,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0878,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x087e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0884,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0889,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0894,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0895,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0923,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0925,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x092b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0935,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x094c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0956,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0957,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0958,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x095d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x095f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0962,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+#endif
+
+// 2013-08-07aRagexeRE
+#if PACKETVER == 20130807
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0887,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-08-14aRagexeRE
+#if PACKETVER == 20130814
+ packet(0x0202,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0281,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0368,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0815,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0835,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0868,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0873,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0874,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0887,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0895,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0896,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0923,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0926,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0936,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0937,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x093a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0941,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0947,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0958,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0959,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0962,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// 2013-08-21dRagexeRE
+#if PACKETVER == 20130821
+ packet(0x0202,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0437,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0438,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x07ec,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0815,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0863,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x086e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0879,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0881,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x088d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0892,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a6,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ad,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x091d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0923,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x093e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0947,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0954,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x095e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0964,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0967,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+#endif
+
+// 2013-08-28bRagexeRE, 2013-08-28cRagexeRE
+#if PACKETVER == 20130828
+ packet(0x023b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0361,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0364,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0817,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0873,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x087e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0889,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0893,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a3,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08ac,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0917,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0919,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x091e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0923,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0924,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0928,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0930,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0944,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0946,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x094f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x095d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+#endif
+
+// 2013-09-04bRagexeRE
+#if PACKETVER == 20130904
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0838,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0937,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0956,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-09-11aRagexeRE, 2013-09-11bRagexeRE
+#if PACKETVER == 20130911
+ packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0868,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x086d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0889,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0891,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x091e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x093a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0948,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0967,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2013-09-17aRagexeRE
+#if PACKETVER == 20130917
+ packet(0x035f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0811,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0838,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x083c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0863,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0868,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x087a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0895,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x089d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a0,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a2,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08a8,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0918,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0921,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0923,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0934,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x094c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0957,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0959,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x096a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+#endif
+
+// 2013-09-25aRagexeRE, 2013-09-25bRagexeRE
+#if PACKETVER == 20130925
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0875,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0876,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0885,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0887,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0890,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0940,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0969,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-10-02aRagexeRE
+#if PACKETVER == 20131002
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0940,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-10-08bRagexeRE
+#if PACKETVER == 20131008
+ packet(0x0202,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0362,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x07e4,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x083c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x085e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0863,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0883,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0884,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0896,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a9,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0917,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0923,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0927,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0932,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0934,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0936,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x093c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0947,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0952,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0954,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0956,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x095d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2013-10-16aRagexeRE, 2013-10-16bRagexeRE
+#if PACKETVER == 20131016
+ packet(0x022d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0281,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0364,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0366,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x07ec,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x085a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x085d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0864,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0867,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0870,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0875,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0887,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0888,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0890,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0894,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x091e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0927,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0946,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0962,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0966,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2013-10-23aRagexeRE
+#if PACKETVER == 20131023
+ packet(0x0366,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0438,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0819,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0835,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x085b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0862,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x086e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0872,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0876,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a7,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08ab,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0919,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x091d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0923,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0924,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0935,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0937,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0944,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0951,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0954,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+#endif
+
+// 2013-10-30aRagexeRE
+#if PACKETVER == 20131030
+ packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0887,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a2,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0925,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-11-06aRagexeRE
+#if PACKETVER == 20131106
+ packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0369,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0436,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0802,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0817,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0866,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0867,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0870,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0875,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0887,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0891,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0893,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0894,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a2,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0919,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x091d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0935,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0942,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0946,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0947,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0948,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0950,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0954,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x095d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0962,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0967,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// 2013-11-13aRagexeRE
+#if PACKETVER == 20131113
+ packet(0x0364,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0879,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x088c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x088f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a8,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x091c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0920,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0926,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0928,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0929,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x092b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x092f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0934,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0936,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0949,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0950,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x095f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0964,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0969,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+#endif
+
+// 2013-11-20eRagexeRE
+#if PACKETVER == 20131120
+ packet(0x0361,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0368,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0802,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0811,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0817,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x085f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0862,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0884,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a1,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a8,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0917,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0926,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0927,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x093f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0940,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0950,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0953,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0955,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2013-11-27aRagexeRE, 2013-11-27bRagexeRE
+#if PACKETVER == 20131127
+ packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0366,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0881,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0884,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0894,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0930,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x093a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x095c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0967,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2013-12-04dRagexeRE, 2013-12-04eRagexeRE
+#if PACKETVER == 20131204
+ packet(0x0365,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0366,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0862,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0869,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0877,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0879,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0882,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a0,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08a4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a7,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08ad,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x091f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0928,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x092d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x092f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0932,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0951,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0958,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0959,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x095b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0961,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0967,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// 2013-12-11cRagexeRE, 2013-12-11eRagexeRE
+#if PACKETVER == 20131211
+ packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0366,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0865,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0873,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0881,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0886,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0892,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a3,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ab,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x092b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0931,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x094c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-12-18aRagexeRE
+#if PACKETVER == 20131218
+ packet(0x022d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x087b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08ab,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0947,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-12-23bRagexeRE, 2013-12-23xRagexeRE
+#if PACKETVER == 20131223
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2013-12-30aRagexeRE
+#if PACKETVER == 20131230
+ packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x02c4,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x035f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0365,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0369,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0860,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0871,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x087b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x087e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0898,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a9,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x091d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0926,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x092a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x093d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x093e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0943,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0949,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0968,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0969,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x096a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// 2014-01-08bRagexeRE, 2014-01-08cRagexeRE
+#if PACKETVER == 20140108
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexeRE
+#if PACKETVER == 20140115
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0367,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0865,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0887,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x088a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a7,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0965,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0966,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2014-01-22aRagexeRE
+#if PACKETVER == 20140122
+ packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0811,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0863,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0871,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0872,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0890,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0893,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0899,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a2,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08aa,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0917,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0925,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x092f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0941,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0942,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x094c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0950,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0952,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0955,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0957,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x095d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2014-01-29bRagexeRE
+#if PACKETVER == 20140129
+ packet(0x0281,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0367,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0884,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0885,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0921,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0924,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x092c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0958,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-02-05bRagexeRE
+#if PACKETVER == 20140205
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0938,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-02-12aRagexeRE
+#if PACKETVER == 20140212
+ packet(0x02c4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0369,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0438,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0874,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0877,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0878,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x087e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0888,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x088c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08a0,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a1,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a7,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0919,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0928,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0930,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0934,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0936,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0944,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0952,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0953,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0960,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// 2014-02-19aRagexeRE, 2014-02-19bRagexeRE
+#if PACKETVER == 20140219
+ packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0360,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0802,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0838,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x085d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0860,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0868,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x086f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0889,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0898,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x089f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a6,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08ac,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0921,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0927,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0939,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0949,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0953,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x095a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0961,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+#endif
+
+// 2014-02-26aRagexeRE, 2014-02-26bRagexeRE
+#if PACKETVER == 20140226
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0877,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0887,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0894,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0921,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0931,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0941,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0962,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-03-05aRagexeRE, 2014-03-05bRagexeRE
+#if PACKETVER == 20140305
+ packet(0x0202,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x07e4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0878,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0934,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-03-12bRagexeRE
+#if PACKETVER == 20140312
+ packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x086f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0889,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0891,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0894,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x089b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x089e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a6,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a9,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ad,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x091b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x091c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x091e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0948,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x094c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0957,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2014-03-19aRagexeRE
+#if PACKETVER == 20140319
+ packet(0x02c4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07e4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0802,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0811,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0815,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x085a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0864,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0865,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0866,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x086e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0872,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0883,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x088e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0890,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0893,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x089f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a2,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0923,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0933,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0942,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0944,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0947,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x094c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0954,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0955,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0964,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x096a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2014-03-26cRagexeRE
+#if PACKETVER == 20140326
+ packet(0x0362,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0365,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x07ec,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x083c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0865,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0867,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0869,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0887,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08aa,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ac,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08ad,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0918,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0928,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0945,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0946,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0959,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0969,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+#endif
+
+// 2014-04-02eRagexeRE, 2014-04-02fRagexeRE
+#if PACKETVER == 20140402
+ packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0360,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0364,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x085b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x085d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0867,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0868,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0882,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0883,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0890,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0896,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x089a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ac,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0926,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0933,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x093f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0944,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0946,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x094c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0950,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0965,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// 2014-04-09aRagexeRE
+#if PACKETVER == 20140409
+ packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x085b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0868,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x086a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0873,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0875,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x087e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0883,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0884,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0890,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0893,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0896,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a2,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a6,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08a7,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a9,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0918,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x092e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0942,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0947,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x095e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+#endif
+
+// 2014-04-16aRagexeRE
+#if PACKETVER == 20140416
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x095c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-04-23aRagexeRE
+#if PACKETVER == 20140423
+ packet(0x022d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0436,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0811,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x083c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x085a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0866,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x086f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0873,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0890,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0895,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0896,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0898,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x089d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a8,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08ad,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x091a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0920,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x095e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
+// 2014-04-30aRagexeRE
+#if PACKETVER == 20140430
+ packet(0x023b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x035f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0860,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0870,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0871,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0875,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0884,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0899,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a1,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0940,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0953,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0956,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+#endif
+
+// 2014-05-08bRagexeRE
+#if PACKETVER == 20140508
+ packet(0x022d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0366,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0861,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x089b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0927,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0930,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0932,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0934,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x094e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2014-05-14bRagexeRE, 2014-05-14cRagexeRE
+#if PACKETVER == 20140514
+ packet(0x0437,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0817,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0865,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0868,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0876,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0877,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0886,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0895,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a5,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0921,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0925,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0958,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0962,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0965,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x096a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+#endif
+
+// 2014-05-21aRagexeRE
+#if PACKETVER == 20140521
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0869,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x089c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0968,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-05-28aRagexeRE
+#if PACKETVER == 20140528
+ packet(0x0202,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x085f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0862,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0875,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0877,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0879,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x088f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0894,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a8,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0929,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0930,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0938,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x093a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x093f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x094b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0963,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0966,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// 2014-06-05aRagexeRE
+#if PACKETVER == 20140605
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0369,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0921,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-06-11bRagexeRE
+#if PACKETVER == 20140611
+ packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0838,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0864,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0891,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0893,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0894,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0924,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0950,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0965,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2014-06-18cRagexeRE
+#if PACKETVER == 20140618
+ packet(0x085d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0860,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0861,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0878,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0884,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0885,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0886,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0890,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a6,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a7,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08ac,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0917,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x091f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0929,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0935,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0939,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x093b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0945,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0954,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0957,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x095e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0962,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0967,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+#endif
+
+// 2014-06-25aRagexeRE
+#if PACKETVER == 20140625
+ packet(0x0202,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0815,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0817,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0835,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0861,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0875,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0885,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0886,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0888,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x088a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0897,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a1,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a2,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0923,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0928,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0946,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0959,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0960,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0968,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0969,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-07-02aRagexeRE
+#if PACKETVER == 20140702
+ packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0438,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x07e4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0887,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0892,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0895,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a0,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a2,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0925,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0933,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-07-09aRagexeRE
+#if PACKETVER == 20140709
+ packet(0x0364,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0866,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0869,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0875,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0877,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0879,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x087a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0887,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0888,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0894,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0897,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0898,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0925,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x092f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0931,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0934,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0939,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x093f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x094f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0961,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2014-07-16aRagexeRE
+#if PACKETVER == 20140716
+ packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0811,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0868,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0871,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0881,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x088d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0896,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08a2,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08ac,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0918,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0926,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x092c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0938,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0947,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0952,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0959,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+#endif
+
+// 2014-07-23aRagexeRE, 2014-07-23bRagexeRE
+#if PACKETVER == 20140723
+ packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0819,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0838,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x087d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0888,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0891,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0896,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0898,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x089e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08ad,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0927,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0934,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0935,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0939,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x093d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0945,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0947,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0948,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0960,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2014-07-30bRagexeRE
+#if PACKETVER == 20140730
+ packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0366,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0367,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0437,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x07ec,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0802,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0815,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0817,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x087d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x087f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0889,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x088b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0892,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a0,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a6,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a7,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a9,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0924,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0934,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0940,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0946,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+#endif
+
+// 2014-08-06aRagexeRE
+#if PACKETVER == 20140806
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0948,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-08-13aRagexeRE
+#if PACKETVER == 20140813
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0878,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0882,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0897,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0899,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a7,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0967,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-08-20aRagexeRE
+#if PACKETVER == 20140820
+ packet(0x035f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0835,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0861,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0864,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0869,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x086c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0872,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0876,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0891,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0899,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x089b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a3,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a7,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0937,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x093a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0951,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0952,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0956,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0958,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2014-08-27aRagexeRE
+#if PACKETVER == 20140827
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0943,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-09-03aRagexeRE
+#if PACKETVER == 20140903
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0943,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0945,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-09-17cRagexeRE
+#if PACKETVER == 20140917
+ packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0364,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0365,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0367,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0864,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0889,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0895,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0897,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0898,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a8,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0919,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x091e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x092a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0930,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0949,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0951,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0955,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0956,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0957,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x095c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x095e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0966,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
+// 2014-09-24bRagexeRE, 2014-09-24cRagexeRE
+#if PACKETVER == 20140924
+ packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0367,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0815,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0864,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0865,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x086b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x086d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0886,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0894,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0898,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a5,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a7,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0918,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0925,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0926,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0928,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0934,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0949,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0952,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+#endif
+
+// 2014-10-01bRagexeRE, 2014-10-01cRagexeRE
+#if PACKETVER == 20141001
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0884,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0885,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0939,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0952,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+#endif
+
+// 2014-10-08bRagexeRE, 2014-10-08cRagexeRE
+#if PACKETVER == 20141008
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0942,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-10-15bRagexeRE, 2014-10-16aRagexeRE
+#if PACKETVER == 20141015 || \
+ PACKETVER == 20141016
+ packet(0x022d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0922,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0967,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-10-22aRagexeRE
+#if PACKETVER == 20141022
+ packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0878,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0896,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0899,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08aa,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x094e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-10-29aRagexeRE
+#if PACKETVER == 20141029
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0940,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-11-05aRagexeRE, 2014-11-05bRagexeRE
+#if PACKETVER == 20141105
+ packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x035f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x085c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0863,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0864,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0865,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0871,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0874,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0875,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0877,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0879,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0887,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0892,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0898,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a0,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a5,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a7,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ad,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x091e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0944,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0948,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0950,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0957,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x095f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0968,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2014-11-12aRagexeRE
+#if PACKETVER == 20141112
+ packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0438,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x07e4,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0835,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0869,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0871,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0885,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0886,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0887,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08a0,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a1,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08ab,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0919,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0926,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0929,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0943,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0955,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0960,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0962,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+#endif
+
+// 2014-11-19bRagexeRE
+#if PACKETVER == 20141119
+ packet(0x0202,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0865,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0866,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0872,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0873,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0875,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x087c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0887,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0888,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x088d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0895,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a8,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0918,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0920,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0921,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0933,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0938,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0948,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x094c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0963,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// 2014-11-26aRagexeRE, 2014-11-26bRagexeRE, 2014-11-26cRagexeRE, 2014-11-26dRagexeRE, 2014-11-26eRagexeRE
+#if PACKETVER == 20141126
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0367,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0871,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0884,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0920,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0942,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0965,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-12-03aRagexeRE
+#if PACKETVER == 20141203
+ packet(0x0202,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0281,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0362,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0367,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0861,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x086e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0880,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0889,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0898,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08a5,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08aa,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0917,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x091c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0928,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x092a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0936,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0957,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0962,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+#endif
+
+// 2014-12-10cRagexeRE
+#if PACKETVER == 20141210
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0885,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08ac,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0917,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0927,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x092b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0947,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0954,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0955,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0958,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0963,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0967,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2014-12-17aRagexeRE
+#if PACKETVER == 20141217
+ packet(0x0360,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x086c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0875,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0878,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0879,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0883,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0889,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x088e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a1,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a8,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08ab,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08ac,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0919,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0924,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0930,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0932,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0933,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0936,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0939,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0940,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0944,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0945,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0948,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0960,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
+// 2014-12-23cRagexeRE
+#if PACKETVER == 20141223
+ packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0438,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0835,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x085a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0865,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0870,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x089b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a3,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a8,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08ac,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0930,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0932,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0945,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0946,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0949,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x094f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0950,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0953,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0956,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x095b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x095f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+#endif
+
+// 2014-12-31aRagexeRE
+#if PACKETVER == 20141231
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-01-07aRagexeRE
+#if PACKETVER == 20150107
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0895,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0943,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-01-14aRagexeRE
+#if PACKETVER == 20150114
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0868,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0899,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0946,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0955,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0957,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-01-21aRagexeRE, 2015-01-21bRagexeRE
+#if PACKETVER == 20150121
+ packet(0x0281,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x089e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ab,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0918,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0919,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0955,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0959,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0963,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0967,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-01-28aRagexeRE
+#if PACKETVER == 20150128
+ packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x023b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0838,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0864,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0870,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0874,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0875,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0888,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+#endif
+
+// 2015-02-04cRagexeRE
+#if PACKETVER == 20150204
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0966,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-02-11aRagexeRE
+#if PACKETVER == 20150211
+ packet(0x023b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0368,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0369,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0436,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0437,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x07e4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0817,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0819,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0835,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0862,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0870,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0873,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x087f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0882,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0883,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0885,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0886,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x089c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a0,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08aa,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0919,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0920,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0951,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0957,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0958,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2015-02-17aRagexeRE
+#if PACKETVER == 20150217
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexeRE, 2015-02-26aRagexeRE
+#if PACKETVER == 20150225 || \
+ PACKETVER == 20150226
+ packet(0x02c4,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0362,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x089c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0940,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0946,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0948,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0955,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+#endif
+
+// 2015-03-04aRagexeRE, 2015-03-04bRagexeRE
+#if PACKETVER == 20150304
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0862,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x086d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0879,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0892,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0947,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0960,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0961,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-03-11aRagexeRE, 2015-03-11bRagexeRE
+#if PACKETVER == 20150311
+ packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0360,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0438,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0838,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x087b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0883,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0886,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0888,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0896,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a5,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08a6,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0928,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x092e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0943,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0946,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0958,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x095b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0964,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2015-03-18aRagexeRE, 2015-03-18bRagexeRE, 2015-03-18cRagexeRE
+#if PACKETVER == 20150318
+ packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x023b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0281,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x07e4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0802,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0862,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0873,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0885,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0889,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x088c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x089c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0920,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0927,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0928,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0936,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0937,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0951,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0958,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0959,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0960,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2015-03-25bRagexeRE, 2015-03-25cRagexeRE
+#if PACKETVER == 20150325
+ packet(0x0202,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0363,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0365,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0438,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0819,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x086f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0883,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0885,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0891,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0893,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0897,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0899,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a1,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a7,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0919,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0931,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0932,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0938,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0947,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0950,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0954,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0969,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+#endif
+
+// 2015-04-01bRagexeRE
+#if PACKETVER == 20150401
+ packet(0x0362,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0367,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0437,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x083c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x086f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0875,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x087e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x088f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0898,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x089c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a5,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x091c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0922,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0924,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0938,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0939,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x093a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x093b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x093e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0946,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0949,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0953,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2015-04-08aRagexeRE
+#if PACKETVER == 20150408
+ packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x085a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0865,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0868,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x086b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x086e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0878,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x087f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0888,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0889,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0891,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a2,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x091e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0922,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0946,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0955,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0957,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0959,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0963,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2015-04-15aRagexeRE
+#if PACKETVER == 20150415
+ packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0364,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0366,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0368,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0802,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0817,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0835,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0867,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0868,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0869,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0880,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0891,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0898,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a0,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x093c,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0941,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0946,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0953,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x095c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0960,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2015-04-22aRagexeRE
+#if PACKETVER == 20150422
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0955,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-04-29aRagexeRE
+#if PACKETVER == 20150429
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x086a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0886,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0894,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0899,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x089f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a6,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a8,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08ad,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0943,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-05-07bRagexeRE
+#if PACKETVER == 20150507
+ packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0864,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0887,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0889,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0924,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x093b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0941,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0942,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0953,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0955,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0958,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-05-13aRagexeRE
+#if PACKETVER == 20150513
+ packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x02c4,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0864,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0883,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0885,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a8,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0923,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0924,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0927,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0960,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-05-20aRagexeRE
+#if PACKETVER == 20150520
+ packet(0x0202,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0361,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0835,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0865,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0868,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0880,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0882,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a2,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0924,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0931,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0936,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x093d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0940,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0945,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x095b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0960,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0961,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2015-05-27aRagexeRE
+#if PACKETVER == 20150527
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x083c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0940,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-06-03bRagexeRE
+#if PACKETVER == 20150603
+ packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0437,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0819,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0860,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0864,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0867,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0873,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0877,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0881,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0884,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0897,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a1,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08ad,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0922,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x093b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0955,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0956,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0960,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0969,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x096a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+#endif
+
+// 2015-06-10aRagexeRE
+#if PACKETVER == 20150610
+ packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0438,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x07e4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0835,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0870,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0872,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0877,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0884,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0885,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x088d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x088f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0897,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a0,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08ac,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0925,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x092e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0932,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0940,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0946,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0949,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0957,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x095d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2015-06-17aRagexeRE, 2015-06-18aRagexeRE
+#if PACKETVER == 20150617 || \
+ PACKETVER == 20150618
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0365,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0811,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0869,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x086a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0870,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0886,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0894,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-06-24aRagexeRE
+#if PACKETVER == 20150624
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0365,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0870,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0940,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0966,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-07-01bRagexeRE
+#if PACKETVER == 20150701
+ packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x07e4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x087d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0883,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0893,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a0,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a4,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a5,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a6,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08ad,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0919,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0923,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0928,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x093f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0946,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0954,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0956,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0958,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x095f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0960,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2015-07-08bRagexeRE, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE
+#if PACKETVER == 20150708
+ packet(0x022d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0368,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0872,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0884,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a5,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x092a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0962,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-07-15aRagexeRE
+#if PACKETVER == 20150715
+ packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0362,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0436,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0437,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0835,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x083c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0873,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0879,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x087c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x087f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0886,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0895,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0896,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0897,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0899,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x089a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a4,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08ac,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0917,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x093e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0944,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0950,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0956,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0961,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0965,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2015-07-22bRagexeRE
+#if PACKETVER == 20150722
+ packet(0x023b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0361,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0368,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0811,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0815,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0817,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0869,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0878,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x087b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x087d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0880,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0884,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0899,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a8,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0919,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0921,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0925,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x092e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x093d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x094c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0951,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2015-07-29aRagexeRE
+#if PACKETVER == 20150729
+ packet(0x0437,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0438,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x085b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0860,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x086f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0870,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0880,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0881,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0886,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a3,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ac,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08ad,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0920,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x092f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x093a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x093f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0955,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0961,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// 2015-08-05dRagexeRE
+#if PACKETVER == 20150805
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-08-12aRagexeRE
+#if PACKETVER == 20150812
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-08-19aRagexeRE, 2015-08-19bRagexeRE
+#if PACKETVER == 20150819
+ packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x022d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0281,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x085d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0862,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0865,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0871,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0888,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0919,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0927,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0961,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0967,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-08-26aRagexeRE, 2015-08-26bRagexeRE
+#if PACKETVER == 20150826
+ packet(0x0362,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0436,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x07ec,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0819,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0861,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x086b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x087b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0890,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0891,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a0,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08a1,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a8,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0924,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0928,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x092e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x093b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0945,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0951,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0959,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0968,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0969,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+#endif
+
+// 2015-09-02aRagexeRE
+#if PACKETVER == 20150902
+ packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0367,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0802,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x083c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x087b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0886,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0887,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0889,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x088d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0892,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0897,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0899,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a9,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0923,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0928,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0941,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0947,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x094f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0953,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2015-09-09aRagexeRE
+#if PACKETVER == 20150909
+ packet(0x023b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0361,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0437,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0861,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0871,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x087b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0883,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0886,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0895,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0928,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0940,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0941,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0962,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2015-09-16cRagexeRE
+#if PACKETVER == 20150916
+ packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0817,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0835,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0869,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0873,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0877,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0881,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x089b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ac,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0920,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0924,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x092e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x092f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0934,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0936,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0942,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0948,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0960,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0969,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+#endif
+
+// 2015-09-23bRagexeRE, 2015-09-23eRagexeRE, 2015-09-23fRagexeRE
+#if PACKETVER == 20150923
+ packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0817,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x085c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x085d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0864,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x086f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0870,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0879,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0886,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x088e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0892,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0895,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a0,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a2,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a5,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a6,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x092b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0930,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0936,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x093b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0951,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+#endif
+
+// 2015-10-01bRagexeRE
+#if PACKETVER == 20151001
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0960,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-10-07aRagexeRE
+#if PACKETVER == 20151007
+ packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0862,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0961,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-10-14bRagexeRE
+#if PACKETVER == 20151014
+ packet(0x0202,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0817,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0838,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x085a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0860,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0863,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0874,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0881,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0883,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0884,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0889,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x088e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x089a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x089f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08aa,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x091d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0930,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0934,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0944,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x094f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0956,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0961,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+#endif
+
+// 2015-10-21aRagexeRE, 2015-10-22aRagexeRE
+#if PACKETVER == 20151021 || \
+ PACKETVER == 20151022
+ packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-10-28bRagexeRE, 2015-10-28bRagexeRE_2, 2015-10-28cRagexeRE, 2015-10-28dRagexeRE, 2015-10-29aRagexeRE
+#if PACKETVER == 20151028 || \
+ PACKETVER == 20151029
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-11-04aRagexeRE
+#if PACKETVER == 20151104
+ packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0363,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0437,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0811,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0886,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x088d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a3,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a5,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0928,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0939,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093a,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x0940,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2015-11-11aRagexeRE
+#if PACKETVER == 20151111
+ packet(0x02c4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x0862,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0871,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0885,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0942,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0958,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0967,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0969,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-11-18aRagexeRE
+#if PACKETVER == 20151118
+ packet(0x022d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x035f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x088b,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x08ab,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0921,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0925,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0943,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0946,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x0957,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095c,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-11-25bRagexeRE, 2015-11-25cRagexeRE, 2015-11-25dRagexeRE
+#if PACKETVER == 20151125
+ packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0366,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x0438,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0802,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0838,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0863,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0883,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0884,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088c,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08a9,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0920,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x092e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0939,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0951,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0956,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0957,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0959,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// 2015-12-02bRagexeRE
+#if PACKETVER == 20151202
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0870,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2015-12-09aRagexeRE
+#if PACKETVER == 20151209
+ packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x07e4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x07ec,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0811,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0819,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085b,36,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD
+ packet(0x085d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0861,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0866,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x087a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x087f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0894,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a1,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0920,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0930,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0932,-1,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES
+ packet(0x093b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0948,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094a,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0956,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x095c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0961,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0964,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+#endif
+
+// 2015-12-16aRagexeRE
+#if PACKETVER == 20151216
+ packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0361,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0364,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0864,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0865,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x086a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0874,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a2,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a9,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0954,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0966,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0968,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+#endif
+
+// 2015-12-23bRagexeRE
+#if PACKETVER == 20151223
+ packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0362,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0815,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0864,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0866,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0872,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0875,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0876,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0881,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0884,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0886,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x088d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0890,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0891,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0898,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08aa,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0918,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x091a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x091b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0920,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0923,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0924,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x095e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0965,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0967,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// 2015-12-30aRagexeRE
+#if PACKETVER == 20151230
+ packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x07ec,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0861,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0869,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0886,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x088e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0897,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0923,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0949,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-01-06aRagexeRE
+#if PACKETVER == 20160106
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0861,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0878,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x087a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x087f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0885,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0889,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0891,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a0,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0940,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-01-13aRagexeRE, 2016-01-13bRagexeRE, 2016-01-13bRagexeRE_2, 2016-01-13cRagexeRE
+#if PACKETVER == 20160113
+ packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x023b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0815,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x085b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0864,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x086d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0873,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0888,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0893,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a0,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a6,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08aa,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0919,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0924,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0930,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0932,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x093c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0941,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0967,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2016-01-20aRagexeRE
+#if PACKETVER == 20160120
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0865,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-01-27aRagexeRE, 2016-01-27aRagexeRE_2, 2016-01-27bRagexeRE
+#if PACKETVER == 20160127
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0922,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-02-03aRagexeRE
+#if PACKETVER == 20160203
+ packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0437,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0835,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0873,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0918,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0940,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0947,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0954,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-02-11aRagexeRE
+#if PACKETVER == 20160211
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0870,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0886,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17bRagexeRE_2, 2016-02-17cRagexeRE
+#if PACKETVER == 20160217
+ packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0362,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0864,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0870,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0873,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x087a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0888,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x088f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0899,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a0,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a9,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08ac,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ad,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x091d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0920,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0926,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x092e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x093b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0941,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0966,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2016-02-24aRagexeRE, 2016-02-24bRagexeRE
+#if PACKETVER == 20160224
+ packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0364,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0436,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0861,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0884,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0885,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0888,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a9,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0920,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0929,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0938,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0961,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-03-02bRagexeRE
+#if PACKETVER == 20160302
+ packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0367,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0819,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0864,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0865,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0873,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x087a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x087d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0883,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a6,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a9,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0927,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0945,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x094e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0950,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0957,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0968,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+#endif
+
+// 2016-03-09aRagexeRE
+#if PACKETVER == 20160309
+ packet(0x023b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0281,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0819,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0838,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x083c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x085a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0873,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x087e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a7,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0920,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0922,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0929,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0932,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0956,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x096a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2016-03-16aRagexeRE
+#if PACKETVER == 20160316
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0922,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-03-23aRagexeRE, 2016-03-23bRagexeRE
+#if PACKETVER == 20160323
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0869,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0872,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0878,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0883,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0926,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0927,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0933,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x093c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-03-30aRagexeRE
+#if PACKETVER == 20160330
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0878,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0889,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0918,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0925,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x092c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0930,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0939,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x093b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-04-06aRagexeRE
+#if PACKETVER == 20160406
+ packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x07e4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0869,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0877,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0878,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0879,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0884,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0892,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0895,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0898,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a1,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a9,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ac,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0927,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0933,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0934,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0953,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0962,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
+// 2016-04-14aRagexeRE, 2016-04-14bRagexeRE
+#if PACKETVER == 20160414
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0363,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0862,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0880,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0885,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0918,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0922,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0927,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0931,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0934,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0945,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0953,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-04-20aRagexeRE
+#if PACKETVER == 20160420
+ packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0864,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0870,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0872,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0874,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0884,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a5,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0935,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x094e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-04-27aRagexeRE
+#if PACKETVER == 20160427
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0835,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0940,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-05-04aRagexeRE
+#if PACKETVER == 20160504
+ packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0365,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x083c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x085f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x086b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x087f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0884,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0887,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0893,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0898,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x089d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08ad,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0918,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0921,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0922,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0924,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0940,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0941,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0948,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0952,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0969,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2016-05-11aRagexeRE, 2016-05-11bRagexeRE
+#if PACKETVER == 20160511
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0894,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0918,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-05-18aRagexeRE
+#if PACKETVER == 20160518
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0874,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a9,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0928,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-05-25aRagexeRE
+#if PACKETVER == 20160525
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x085e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0945,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0951,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0956,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-06-01aRagexeRE
+#if PACKETVER == 20160601
+ packet(0x0202,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0863,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0870,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x087d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x088f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0895,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a7,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0924,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-06-08aRagexeRE, 2016-06-08bRagexeRE
+#if PACKETVER == 20160608
+ packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0437,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0802,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0889,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a6,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0969,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-06-15aRagexeRE
+#if PACKETVER == 20160615
+ packet(0x0281,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0369,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x083c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0866,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0870,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0887,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0888,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0891,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x092f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0947,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0948,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x094a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x094b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0954,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0957,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0958,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0961,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// 2016-06-22aRagexeRE
+#if PACKETVER == 20160622
+ packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x035f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x07e4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0861,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0865,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0867,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0880,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0887,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0890,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0891,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0892,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a2,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a8,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x092f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0936,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0937,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x093b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x093f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0946,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0959,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0965,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0969,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+#endif
+
+// 2016-06-29aRagexeRE, 2016-06-30aRagexeRE
+#if PACKETVER == 20160629 || \
+ PACKETVER == 20160630
+ packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x022d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0363,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x085c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x085e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0860,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0861,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0863,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0867,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x086b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0881,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0885,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0893,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0925,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0946,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0948,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0957,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0968,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0969,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2016-07-06cRagexeRE
+#if PACKETVER == 20160706
+ packet(0x0362,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0860,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0869,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x086b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0884,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0886,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0892,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0899,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a5,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a8,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0918,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x091b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0924,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0926,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0927,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0939,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x093d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0944,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0945,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x094c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0957,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2016-07-13aRagexeRE, 2016-07-13bRagexeRE
+#if PACKETVER == 20160713
+ packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0363,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0838,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0860,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0865,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0869,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0877,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x087b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0883,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0892,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x089a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0921,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0922,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0931,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0939,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0944,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0945,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0947,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0957,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x095b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// 2016-07-20aRagexeRE, 2016-07-20bRagexeRE
+#if PACKETVER == 20160720
+ packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0365,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x07e4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0838,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x086a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0883,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0897,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x089e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a0,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08aa,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0917,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x093e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0946,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0953,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+#endif
+
+// 2016-07-27aRagexeRE, 2016-07-27bRagexeRE
+#if PACKETVER == 20160727
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0363,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0436,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x07ec,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0866,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0868,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0869,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0874,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0877,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0883,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0887,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0891,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x089f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a4,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a7,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0936,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0941,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0946,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0949,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0951,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0966,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+#endif
+
+// 2016-08-03bRagexeRE
+#if PACKETVER == 20160803
+ packet(0x0364,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x085d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0878,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0881,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0888,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0891,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0895,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08a1,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x091b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0930,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0932,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0934,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0937,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x093a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x093f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0952,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0955,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0956,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0959,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+#endif
+
+// 2016-08-10aRagexeRE
+#if PACKETVER == 20160810
+ packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0819,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x085d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x085e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0860,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x086f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0875,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0879,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0885,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0888,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0890,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x089f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a9,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x091c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0926,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0935,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0943,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0959,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// 2016-08-17aRagexeRE
+#if PACKETVER == 20160817
+ packet(0x0364,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0437,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x07e4,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0811,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0819,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x083c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x085c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0867,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x086b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0875,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x087f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0886,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0891,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x089c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08a5,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a6,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a9,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08ab,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08ac,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08ad,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0929,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0930,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0939,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0957,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0963,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2016-08-24aRagexeRE
+#if PACKETVER == 20160824
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0934,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-08-31aRagexeRE, 2016-08-31bRagexeRE
+#if PACKETVER == 20160831
+ packet(0x022d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0366,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0835,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x086d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0876,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0878,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x087c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a8,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08a9,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0917,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0938,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0946,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0950,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0954,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0957,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x095e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0960,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0964,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+#endif
+
+// 2016-09-07aRagexeRE
+#if PACKETVER == 20160907
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x091c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-09-13aRagexeRE
+#if PACKETVER == 20160913
+ packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0817,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0865,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0874,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0875,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0879,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0887,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0889,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0891,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0892,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x089b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a5,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0935,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0949,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0950,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0952,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0954,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0962,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0963,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0968,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+#endif
+
+// 2016-09-21bRagexeRE
+#if PACKETVER == 20160921
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-09-28cRagexeRE, 2016-09-28dRagexeRE
+#if PACKETVER == 20160928
+ packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0366,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0811,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0864,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0878,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0889,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0897,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a9,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0919,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0927,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x092d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0944,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0953,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0957,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+#endif
+
+// 2016-10-05aRagexeRE
+#if PACKETVER == 20161005
+ packet(0x0202,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0838,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0863,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0886,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0891,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0892,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x089b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a0,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08ac,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0918,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0919,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x092b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0931,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0932,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x093b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0942,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0945,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x094a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0952,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x095b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+#endif
+
+// 2016-10-12aRagexeRE
+#if PACKETVER == 20161012
+ packet(0x023b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0365,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0369,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x07ec,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0819,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x085b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x085e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0863,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0868,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0872,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0875,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0880,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0893,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a0,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0936,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0937,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0939,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0943,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0944,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0951,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x095c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0962,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0966,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2016-10-19aRagexeRE
+#if PACKETVER == 20161019
+ packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0361,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0889,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0892,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-10-26bRagexeRE, 2016-10-26cRagexeRE
+#if PACKETVER == 20161026
+ packet(0x0363,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0861,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0862,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x086a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x086e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x087c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0886,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0891,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0894,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0898,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0926,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x092e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0930,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x094b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0953,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x095c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0962,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2016-11-02aRagexeRE, 2016-11-03aRagexeRE
+#if PACKETVER == 20161102 || \
+ PACKETVER == 20161103
+ packet(0x0361,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0367,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0802,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x083c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0874,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0886,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a2,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08aa,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0922,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0925,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0936,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0949,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0964,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0965,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0966,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+#endif
+
+// 2016-11-09aRagexeRE, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE
+#if PACKETVER == 20161109
+ packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0362,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x085d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x086a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x086d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0870,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0876,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0881,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x088e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0891,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0898,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a7,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0937,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0954,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2016-11-16bRagexeRE, 2016-11-16cRagexeRE
+#if PACKETVER == 20161116
+ packet(0x0368,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0369,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0835,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x085f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0864,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0885,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x088f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0890,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0892,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0893,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a2,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08ac,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0920,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0925,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x092a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0931,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x093c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x094a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0957,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x095b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// 2016-11-23aRagexeRE
+#if PACKETVER == 20161123
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0437,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0861,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0871,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0880,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0882,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x088b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a9,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08aa,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0926,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0930,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x094d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x095a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0962,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x096a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+#endif
+
+// 2016-11-30aRagexeRE, 2016-11-30bRagexeRE
+#if PACKETVER == 20161130
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0943,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0954,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0959,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexeRE
+#if PACKETVER == 20161207
+ packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0868,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0875,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0886,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a2,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0943,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0965,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-12-14bRagexeRE, 2016-12-14cRagexeRE
+#if PACKETVER == 20161214
+ packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x02c4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0862,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x086d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0887,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0895,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0899,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a6,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x092e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x093d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-12-21aRagexeRE, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE
+#if PACKETVER == 20161221
+ packet(0x035f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0366,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0817,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0866,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0876,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0881,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0890,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0899,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08aa,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x092e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0930,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0943,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0946,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0965,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2016-12-28aRagexeRE
+#if PACKETVER == 20161228
+ packet(0x0362,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x085a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0865,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x086a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x086c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0870,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0871,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0875,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0886,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0889,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0893,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a2,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a3,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a5,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ab,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08ac,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08ad,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0929,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x092c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0934,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0935,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x093d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0944,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+#endif
+
+// 2017-01-04bRagexeRE
+#if PACKETVER == 20170104
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x085a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0896,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-01-11aRagexeRE
+#if PACKETVER == 20170111
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0877,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x088a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a6,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-01-18aRagexeRE
+#if PACKETVER == 20170118
+ packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0862,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0865,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x086f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0873,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08ad,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0927,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0933,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0962,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2017-01-25aRagexeRE
+#if PACKETVER == 20170125
+ packet(0x0438,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0877,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0879,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0881,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0893,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0894,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0895,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0898,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08a5,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x091b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x091c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0920,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0929,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x092b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0930,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0943,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0944,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0965,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0968,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2017-02-01aRagexeRE
+#if PACKETVER == 20170201
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0875,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0879,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0881,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0884,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0886,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a4,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0919,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0920,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0938,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x094c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-02-08aRagexeRE, 2017-02-08bRagexeRE
+#if PACKETVER == 20170208
+ packet(0x02c4,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0367,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0860,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0892,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a1,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0921,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0923,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0932,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0937,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-02-15aRagexeRE
+#if PACKETVER == 20170215
+ packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x035f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x083c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0876,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x087d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0883,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x088c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0890,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0896,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a2,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08a8,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0925,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0942,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x095f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0962,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0969,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+#endif
+
+// 2017-02-22aRagexeRE
+#if PACKETVER == 20170222
+ packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0866,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0871,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0877,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0894,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a3,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a8,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0939,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0943,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0962,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-02-28aRagexeRE
+#if PACKETVER == 20170228
+ packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0819,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x085e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0863,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0873,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0874,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0876,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0883,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0884,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0889,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0893,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x089e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a0,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a6,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a7,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x091f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x092a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0937,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x093e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0944,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0947,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0948,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0952,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2017-03-08bRagexeRE
+#if PACKETVER == 20170308
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-03-15cRagexeRE
+#if PACKETVER == 20170315
+ packet(0x02c4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x035f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0360,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0366,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0436,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x07ec,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0863,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0872,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0884,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x088b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x088d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x089c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08aa,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x091d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0920,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0922,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0944,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x094a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x094e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0950,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0952,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2017-03-22aRagexeRE, 2017-03-22bRagexeRE
+#if PACKETVER == 20170322
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x091a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-03-29cRagexeRE, 2017-03-29dRagexeRE
+#if PACKETVER == 20170329
+ packet(0x0281,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0363,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x087a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0888,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08a8,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0917,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0926,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0929,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0939,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0949,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-04-05bRagexeRE, 2017-04-05cRagexeRE
+#if PACKETVER == 20170405
+ packet(0x022d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0281,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0363,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0860,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0864,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0865,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x086f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0893,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a5,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0964,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-04-12aRagexeRE
+#if PACKETVER == 20170412
+ packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0365,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0869,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0878,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0879,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0890,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0893,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0898,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x089a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x089c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x08a1,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0929,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x092e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0938,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0942,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0945,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0949,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x094f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0959,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x095c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x095d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2017-04-19bRagexeRE
+#if PACKETVER == 20170419
+ packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0819,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0838,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0862,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0868,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0872,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0881,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0897,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0898,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08aa,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0920,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0922,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0930,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0931,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0935,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x093a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0942,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x095c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0963,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0965,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+#endif
+
+// 2017-04-26dRagexeRE
+#if PACKETVER == 20170426
+ packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0866,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0887,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0899,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a2,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0927,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0958,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0963,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-05-02dRagexeRE
+#if PACKETVER == 20170502
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0875,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0894,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x089c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x093c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0950,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-05-17aRagexeRE, 2017-05-17bRagexeRE
+#if PACKETVER == 20170517
+ packet(0x0364,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0367,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0815,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0817,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0868,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x087b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x088d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0894,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0896,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0899,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a2,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a8,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08aa,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x091b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0923,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x093b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0945,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0946,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0947,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0958,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0960,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2017-05-24aRagexeRE
+#if PACKETVER == 20170524
+ packet(0x0364,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0368,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0802,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0860,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0864,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0866,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0868,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x086d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0873,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0874,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x087d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0882,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x088d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0894,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a1,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0923,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0925,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0934,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0946,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0958,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x095b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0964,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0967,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0968,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+#endif
+
+// 2017-05-31aRagexeRE
+#if PACKETVER == 20170531
+ packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0369,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x07e4,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x07ec,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0819,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x085f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0868,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0873,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0875,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0878,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x088d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0894,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a2,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08ac,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x08ad,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0933,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0937,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0940,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0945,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0963,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0968,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+#endif
+
+// 2017-06-07bRagexeRE, 2017-06-07cRagexeRE
+#if PACKETVER == 20170607
+ packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x07e4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x085e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0862,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0864,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0871,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0873,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0875,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0885,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x088a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0897,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a9,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08ab,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0917,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0919,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0925,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0927,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0931,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0934,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0938,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x093d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0944,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0949,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2017-06-14bRagexeRE
+#if PACKETVER == 20170614
+ packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0361,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0367,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0437,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0838,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x083c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0860,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0865,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0866,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0867,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x086b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0877,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0889,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0899,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a2,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08ad,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0928,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0936,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0957,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0963,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// 2017-06-21aRagexeRE
+#if PACKETVER == 20170621
+ packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0365,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0366,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0802,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0885,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a8,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0956,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0957,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0961,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-06-28bRagexeRE
+#if PACKETVER == 20170628
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0863,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-07-05aRagexeRE
+#if PACKETVER == 20170705
+ packet(0x0202,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0886,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x088d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0930,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0932,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0934,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x094c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-07-12bRagexeRE
+#if PACKETVER == 20170712
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0944,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-07-19aRagexeRE
+#if PACKETVER == 20170719
+ packet(0x022d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0367,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0368,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0369,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x07e4,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x085a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x085e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x087d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0881,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0882,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0891,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0898,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08a6,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a8,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x092f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x093d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0944,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0946,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2017-07-26cRagexeRE
+#if PACKETVER == 20170726
+ packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0369,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0438,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0838,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0873,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0874,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0878,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0881,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0888,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x088e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a3,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a7,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08aa,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08ac,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0921,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0923,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0943,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x094f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0950,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0952,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0954,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0963,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+#endif
+
+// 2017-08-01aRagexeRE
+#if PACKETVER == 20170801
+ packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a6,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-08-09cRagexeRE
+#if PACKETVER == 20170809
+ packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0281,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0364,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0366,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0367,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x07e4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0802,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0835,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0868,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x086e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x086f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0876,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x087d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0880,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0890,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0892,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0895,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0899,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08a3,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08a6,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0918,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0921,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x092b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0931,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0939,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x093b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0940,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2017-08-16cRagexeRE, 2017-08-16dRagexeRE
+#if PACKETVER == 20170816
+ packet(0x022d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x035f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0438,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x085a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0862,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0864,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x087e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0881,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0882,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0888,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0889,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x08a3,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a7,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a9,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08ac,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x091c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0921,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0925,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x093a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0941,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0950,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0959,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0960,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+#endif
+
+// 2017-08-23aRagexeRE
+#if PACKETVER == 20170823
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x086d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08ac,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x095b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-08-30aRagexeRE, 2017-08-30bRagexeRE
+#if PACKETVER == 20170830
+ packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x02c4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0363,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0364,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0860,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x086a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0875,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0884,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0888,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0899,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a8,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0921,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0925,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x092e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0939,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0940,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0942,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0943,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0947,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0951,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0959,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+#endif
+
+// 2017-09-06cRagexeRE
+#if PACKETVER == 20170906
+ packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0860,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0866,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x086c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a3,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08a7,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0953,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-09-13bRagexeRE
+#if PACKETVER == 20170913
+ packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x035f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0437,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x07e4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0817,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0835,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x085a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0860,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0865,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0866,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x088c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0890,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0891,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0892,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a6,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x08a7,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08aa,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08ab,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ac,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ad,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x091b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0920,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0923,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0925,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0927,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x095a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x095c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+#endif
+
+// 2017-09-20bRagexeRE
+#if PACKETVER == 20170920
+ packet(0x0369,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0436,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x07ec,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x085a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0862,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0864,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0865,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x086a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0874,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0875,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0889,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x088e,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x089b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0919,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x091e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0921,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0923,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0926,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0937,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0939,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0945,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x094c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x095d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0961,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0966,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x096a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+#endif
+
+// 2017-09-27bRagexeRE, 2017-09-27dRagexeRE
+#if PACKETVER == 20170927
+ packet(0x02c4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x035f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0361,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0362,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x085c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0873,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0875,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x087d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x087e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x088b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0899,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a3,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a5,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08a6,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x08ad,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x091e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0922,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0923,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0927,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x093b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0942,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0945,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x094d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0959,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+#endif
+
+// 2017-10-02cRagexeRE
+#if PACKETVER == 20171002
+ packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0885,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0897,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0928,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x092d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0934,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x093e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0943,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x095f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-10-11aRagexeRE, 2017-10-11bRagexeRE
+#if PACKETVER == 20171011
+ packet(0x023b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0882,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0950,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0954,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-10-18aRagexeRE
+#if PACKETVER == 20171018
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a6,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0938,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0944,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x094f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-10-25bRagexeRE, 2017-10-25cRagexeRE, 2017-10-25dRagexeRE, 2017-10-25eRagexeRE
+#if PACKETVER == 20171025
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-11-01bRagexeRE
+#if PACKETVER == 20171101
+ packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0369,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0835,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0860,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0872,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0876,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0886,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0890,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0895,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0899,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a0,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08ab,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08ad,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0939,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x094a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0957,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x095a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0966,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+#endif
+
+// 2017-11-08bRagexeRE
+#if PACKETVER == 20171108
+ packet(0x0202,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x07e4,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0815,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0819,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x085d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0863,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0878,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x087e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0884,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0896,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0897,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x08a2,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a9,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08ad,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x091d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x091f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0940,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0945,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0947,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0949,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x094e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0958,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0963,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0965,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0967,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+#endif
+
+// 2017-11-15aRagexeRE
+#if PACKETVER == 20171115
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0365,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x086f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x087e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0883,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0890,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0898,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0926,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0958,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-11-22bRagexeRE
+#if PACKETVER == 20171122
+ packet(0x0281,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x02c4,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x035f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0838,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x083c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x085b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0862,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0867,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0877,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0885,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0890,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0891,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0893,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0897,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a6,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a9,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x091e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0920,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0923,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0934,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0945,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0946,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0947,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0962,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0968,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2017-11-29aRagexeRE
+#if PACKETVER == 20171129
+ packet(0x02c4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0363,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0365,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0862,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0876,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0878,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a5,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0953,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0966,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-12-06aRagexeRE
+#if PACKETVER == 20171206
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x086a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x086e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0885,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0888,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0897,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x089d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a2,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08a4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0923,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x092e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0936,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0942,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0958,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0961,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-12-13bRagexeRE
+#if PACKETVER == 20171213
+ packet(0x0202,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0860,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0881,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0890,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0957,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-12-20aRagexeRE
+#if PACKETVER == 20171220
+ packet(0x0281,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0366,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0369,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0436,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0437,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0861,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0872,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0873,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0880,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0882,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0899,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x08a7,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x091b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x091e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0924,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0929,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0933,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x093e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0941,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0946,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0951,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0957,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0964,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+#endif
+
+// 2017-12-27aRagexeRE
+#if PACKETVER == 20171227
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x087d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0888,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x088a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08a0,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a5,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0945,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0946,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0969,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+#endif
+
+// 2018-01-03aRagexeRE, 2018-01-03bRagexeRE
+#if PACKETVER == 20180103
+ packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0363,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0865,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x086b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0872,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0876,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0879,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x088e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a9,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08ab,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08ac,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x091d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0922,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0926,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0927,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x092c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0935,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0938,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0941,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0946,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0948,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x095d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x095f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+#endif
+
+// 2018-01-17aRagexeRE
+#if PACKETVER == 20180117
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0875,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2018-01-24bRagexeRE
+#if PACKETVER == 20180124
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0802,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0868,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x086a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0890,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0919,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0940,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0946,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x094d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0958,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0961,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2018-02-07bRagexeRE
+#if PACKETVER == 20180207
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0360,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0870,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0881,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0950,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2018-02-13aRagexeRE
+#if PACKETVER == 20180213
+ packet(0x0369,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0802,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0817,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x085a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x086f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0874,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0875,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0878,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x087b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0882,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0892,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0898,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x089c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a3,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a5,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x08a9,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08ad,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0917,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0922,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0924,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0926,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0933,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0936,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0943,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0955,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0962,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+#endif
+
+// 2018-02-21aRagexeRE, 2018-02-21bRagexeRE
+#if PACKETVER == 20180221
+ packet(0x0202,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0366,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0436,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0838,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0867,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x086f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0871,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0880,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0881,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0883,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x088f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0891,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0897,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0899,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x089d,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0917,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0929,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x093d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0957,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0964,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x096a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+#endif
+
+// 2018-03-07bRagexeRE
+#if PACKETVER == 20180307
+ packet(0x0281,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x035f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0437,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07e4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0861,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0862,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0864,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x086c,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0870,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0872,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0877,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x088d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0893,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x089b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08a6,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x08aa,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x08ab,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0917,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0920,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0937,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0939,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0941,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0944,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0948,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0951,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0954,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0957,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0969,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+#endif
+
+// 2018-03-21aRagexeRE, 2018-03-28bRagexeRE, 2018-04-04cRagexeRE, 2018-04-18bRagexeRE, 2018-04-25cRagexeRE, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-16cRagexeRE, 2018-05-23aRagexeRE, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20dRagexeRE, 2018-06-20eRagexeRE, 2018-06-21aRagexeRE
+#if PACKETVER == 20180321 || \
+ PACKETVER == 20180328 || \
+ PACKETVER == 20180404 || \
+ PACKETVER == 20180418 || \
+ PACKETVER == 20180425 || \
+ PACKETVER == 20180502 || \
+ PACKETVER == 20180516 || \
+ PACKETVER == 20180523 || \
+ PACKETVER == 20180530 || \
+ PACKETVER == 20180605 || \
+ PACKETVER == 20180612 || \
+ PACKETVER == 20180620 || \
+ PACKETVER >= 20180621
+ packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0281,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x035f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0362,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0363,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0365,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0438,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x07ec,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0811,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0815,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0817,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0835,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE
+#if PACKETVER == 20180704 || \
+ PACKETVER == 20180711
+ packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0281,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x035f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0362,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0363,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0365,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0438,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x07ec,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0811,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0815,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0817,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0835,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x083c,14,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+#endif
+
+
+#endif /* MAP_PACKETS_SHUFFLE_RE_H */
diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h
index 4bf1950bc..960dbe16a 100644
--- a/src/map/packets_shuffle_zero.h
+++ b/src/map/packets_shuffle_zero.h
@@ -36,7 +36,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
+// 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
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -55,7 +55,9 @@
PACKETVER == 20180509 || \
PACKETVER == 20180523 || \
PACKETVER == 20180605 || \
- PACKETVER >= 20180627
+ PACKETVER == 20180627 || \
+ PACKETVER == 20180703 || \
+ PACKETVER >= 20180711
packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index 665ef78cc..9ae99afda 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -373,13 +373,34 @@ enum packet_headers {
#elif PACKETVER >= 20150128
openUiType = 0xA38,
#endif
-#if PACKETVER_ZERO_NUM >= 20180627
+#if PACKETVER >= 20180627
authError = 0xb02,
#elif PACKETVER >= 20101123
authError = 0x83e,
#else
authError = 0x6a,
#endif
+#if PACKETVER >= 3
+ useItemAckType = 0x1c8,
+#else
+ useItemAckType = 0xa8,
+#endif
+#if PACKETVER >= 4
+ sendLookType = 0x1d7,
+#else
+ sendLookType = 0xc3,
+#endif
+#if PACKETVER >= 20141016
+ buyingStoreUpdateItemType = 0x9e6,
+#else
+ buyingStoreUpdateItemType = 0x81b,
+#endif
+// probably can works also for < 20141223, but in 3CeaM packet size defined only for 20150513
+#if PACKETVER >= 20150513
+ hominfoType = 0x9f7,
+#else
+ hominfoType = 0x22e,
+#endif
};
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
@@ -390,12 +411,20 @@ enum packet_headers {
* structs for data
*/
struct EQUIPSLOTINFO {
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 card[4];
+#else
uint16 card[4];
+#endif
} __attribute__((packed));
struct NORMALITEM_INFO {
int16 index;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
uint8 type;
#if PACKETVER < 20120925
uint8 IsIdentified;
@@ -429,7 +458,11 @@ struct ItemOptions {
struct EQUIPITEM_INFO {
int16 index;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
uint8 type;
#if PACKETVER < 20120925
uint8 IsIdentified;
@@ -502,7 +535,11 @@ struct packet_additem {
int16 PacketType;
uint16 Index;
uint16 count;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 nameid;
+#else
uint16 nameid;
+#endif
uint8 IsIdentified;
uint8 IsDamaged;
uint8 refiningLevel;
@@ -532,7 +569,11 @@ struct packet_additem {
struct packet_dropflooritem {
int16 PacketType;
uint32 ITAID;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
#if PACKETVER >= 20130000 /* not sure date */
uint16 type;
#endif
@@ -559,12 +600,12 @@ struct packet_idle_unit2 {
int16 healthState;
int16 effectState;
int16 job;
- int16 head;
- int16 weapon;
- int16 accessory;
- int16 shield;
- int16 accessory2;
- int16 accessory3;
+ uint16 head;
+ uint16 weapon;
+ uint16 accessory;
+ uint16 shield;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
@@ -595,13 +636,13 @@ struct packet_spawn_unit2 {
int16 bodyState;
int16 healthState;
int16 effectState;
- int16 head;
- int16 weapon;
- int16 accessory;
+ uint16 head;
+ uint16 weapon;
+ uint16 accessory;
int16 job;
- int16 shield;
- int16 accessory2;
- int16 accessory3;
+ uint16 shield;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
@@ -634,23 +675,26 @@ struct packet_spawn_unit {
int32 effectState;
#endif
int16 job;
- int16 head;
+ uint16 head;
#if PACKETVER < 7
- int16 weapon;
+ uint16 weapon;
#else
- int32 weapon;
+ uint32 weapon;
#endif
- int16 accessory;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 shield;
+#endif
+ uint16 accessory;
#if PACKETVER < 7
- int16 shield;
+ uint16 shield;
#endif
- int16 accessory2;
- int16 accessory3;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
#if PACKETVER >= 20101124
- int16 robe;
+ uint16 robe;
#endif
uint32 GUID;
int16 GEmblemVer;
@@ -704,24 +748,27 @@ struct packet_unit_walking {
int32 effectState;
#endif
int16 job;
- int16 head;
+ uint16 head;
#if PACKETVER < 7
- int16 weapon;
+ uint16 weapon;
#else
- int32 weapon;
+ uint32 weapon;
#endif
- int16 accessory;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 shield;
+#endif
+ uint16 accessory;
uint32 moveStartTime;
#if PACKETVER < 7
- int16 shield;
+ uint16 shield;
#endif
- int16 accessory2;
- int16 accessory3;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
#if PACKETVER >= 20101124
- int16 robe;
+ uint16 robe;
#endif
uint32 GUID;
int16 GEmblemVer;
@@ -746,7 +793,7 @@ struct packet_unit_walking {
uint8 isBoss;
#endif
#if PACKETVER >= 20150513
- int16 body;
+ uint16 body;
#endif
/* Might be earlier, this is when the named item bug began */
#if PACKETVER >= 20131223
@@ -773,23 +820,26 @@ struct packet_idle_unit {
int32 effectState;
#endif
int16 job;
- int16 head;
+ uint16 head;
#if PACKETVER < 7
- int16 weapon;
+ uint16 weapon;
#else
- int32 weapon;
+ uint32 weapon;
#endif
- int16 accessory;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 shield;
+#endif
+ uint16 accessory;
#if PACKETVER < 7
- int16 shield;
+ uint16 shield;
#endif
- int16 accessory2;
- int16 accessory3;
+ uint16 accessory2;
+ uint16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
#if PACKETVER >= 20101124
- int16 robe;
+ uint16 robe;
#endif
uint32 GUID;
int16 GEmblemVer;
@@ -815,7 +865,7 @@ struct packet_idle_unit {
uint8 isBoss;
#endif
#if PACKETVER >= 20150513
- int16 body;
+ uint16 body;
#endif
/* Might be earlier, this is when the named item bug began */
#if PACKETVER >= 20131223
@@ -872,7 +922,7 @@ struct packet_maptypeproperty2 {
uint32 nocostume : 1; /// Does not show costume sprite.
uint32 usecart : 1; /// Allow opening cart inventory
uint32 summonstarmiracle : 1; // TODO: What does this do? Related to Taekwon Masters, but I have no idea.
- uint32 SpareBits : 15; /// Currently ignored, reserved for future updates
+ uint32 SpareBits : 21; /// Currently ignored, reserved for future updates
} flag;
} __attribute__((packed));
@@ -939,11 +989,19 @@ struct packet_package_item_announce {
int16 PacketType;
int16 PacketLength;
uint8 type;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 ItemID;
+#else
uint16 ItemID;
+#endif
int8 len;
char Name[NAME_LENGTH];
- int8 unknown;
+ int8 unknown; // probably unused
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 BoxItemID;
+#else
uint16 BoxItemID;
+#endif
} __attribute__((packed));
/* made possible thanks to Yommy!! */
@@ -951,7 +1009,11 @@ struct packet_item_drop_announce {
int16 PacketType;
int16 PacketLength;
uint8 type;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 ItemID;
+#else
uint16 ItemID;
+#endif
int8 len;
char Name[NAME_LENGTH];
char monsterNameLen;
@@ -1002,7 +1064,11 @@ struct packet_roulette_open_ack {
int32 Serial;
int8 Step;
int8 Idx;
- int16 AdditionItemID;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 AdditionItemID;
+#else
+ uint16 AdditionItemID;
+#endif
int32 GoldPoint;
int32 SilverPoint;
int32 BronzePoint;
@@ -1015,7 +1081,7 @@ struct packet_roulette_info_ack {
struct {
uint16 Row;
uint16 Position;
-#if PACKETVER >= 20180523 // unknown real version
+#if PACKETVER >= 20180511
uint32 ItemId;
uint16 Count;
uint16 unused;
@@ -1036,7 +1102,11 @@ struct packet_roulette_generate_ack {
uint8 Result;
uint16 Step;
uint16 Idx;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 AdditionItemID;
+#else
uint16 AdditionItemID;
+#endif
int32 RemainGold;
int32 RemainSilver;
int32 RemainBronze;
@@ -1050,7 +1120,11 @@ struct packet_roulette_itemrecv_req {
struct packet_roulette_itemrecv_ack {
int16 PacketType;
uint8 Result;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 AdditionItemID;
+#else
uint16 AdditionItemID;
+#endif
} __attribute__((packed));
struct packet_itemlist_normal {
@@ -1223,7 +1297,11 @@ struct packet_npc_market_result_ack {
int16 PacketLength;
uint8 result;
struct {
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
uint16 qty;
uint32 price;
} list[MAX_INVENTORY];/* assuming MAX_INVENTORY is max since you can't hold more than MAX_INVENTORY items thus cant buy that many at once. */
@@ -1234,7 +1312,11 @@ struct packet_npc_market_open {
int16 PacketLength;
/* inner struct figured by Ind after some annoying hour of debugging (data Thanks to Yommy) */
struct {
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 nameid;
+#else
uint16 nameid;
+#endif
uint8 type;
uint32 price;
uint32 qty;
@@ -1351,7 +1433,11 @@ struct PACKET_ZC_ADD_ITEM_TO_MAIL {
int8 result;
int16 index;
int16 count;
- uint16 ITID;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
int8 type;
int8 IsIdentified;
int8 IsDamaged;
@@ -1359,19 +1445,25 @@ struct PACKET_ZC_ADD_ITEM_TO_MAIL {
struct EQUIPSLOTINFO slot;
struct ItemOptions optionData[MAX_ITEM_OPTIONS];
int16 weight;
- int8 unknow[5];
+ uint8 favorite;
+ uint32 location;
} __attribute__((packed));
struct mail_item {
int16 count;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 ITID;
+#else
uint16 ITID;
+#endif
int8 IsIdentified;
int8 IsDamaged;
int8 refiningLevel;
struct EQUIPSLOTINFO slot;
- int8 unknow1[4];
- int8 type;
- int8 unknown[4];
+ uint32 location;
+ uint8 type;
+ uint16 viewSprite;
+ uint16 bindOnEquip;
struct ItemOptions optionData[MAX_ITEM_OPTIONS];
} __attribute__((packed));
@@ -1752,7 +1844,11 @@ struct PACKET_ZC_UI_ACTION {
struct PACKET_CZ_PRIVATE_AIRSHIP_REQUEST {
int16 PacketType;
char mapName[MAP_NAME_LENGTH_EXT];
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 ItemID;
+#else
uint16 ItemID;
+#endif
} __attribute__((packed));
struct PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE {
@@ -1783,7 +1879,11 @@ struct pet_evolution_items {
struct PACKET_CZ_PET_EVOLUTION {
int16 PacketType;
uint16 PacketLength;
- int16 EvolvedPetEggID;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 EvolvedPetEggID;
+#else
+ uint16 EvolvedPetEggID;
+#endif
// struct pet_evolution_items items[];
} __attribute__((packed));
@@ -1797,6 +1897,695 @@ struct packet_ZC_REFUSE_LOGIN {
char block_date[20];
} __attribute__((packed));
+struct PACKET_ZC_NOTIFY_CHAT {
+ int16 PacketType;
+ int16 PacketLength;
+ uint32 GID;
+ char Message[];
+} __attribute__((packed));
+
+struct PACKET_ZC_NOTIFY_PLAYERCHAT {
+ int16 PacketType;
+ int16 PacketLength;
+ char Message[];
+} __attribute__((packed));
+
+struct PACKET_ZC_ITEM_ENTRY {
+ int16 packetType;
+ uint32 AID;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 identify;
+ uint16 x;
+ uint16 y;
+ uint16 amount;
+ uint8 subX;
+ uint8 subY;
+} __attribute__((packed));
+
+struct PACKET_ZC_ADD_ITEM_TO_STORE {
+ int16 packetType;
+ int16 index;
+ int32 amount;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+#if PACKETVER >= 5
+ uint8 itemType;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MVP_GETTING_ITEM {
+ int16 packetType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_TOUSESKILL {
+ int16 packetType;
+ uint16 skillId;
+#if PACKETVER_RE_NUM >= 20180704
+ int32 btype;
+ uint32 itemId;
+#else
+ int16 btype;
+ uint16 itemId;
+#endif
+ uint8 flag;
+ uint8 cause;
+} __attribute__((packed));
+
+struct PACKET_ZC_ADD_ITEM_TO_CART {
+ int16 packetType;
+ int16 index;
+ int32 amount;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+#if PACKETVER >= 5
+ uint8 itemType;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_REQMAKINGITEM {
+ int16 packetType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+ uint32 material[3];
+#else
+ uint16 itemId;
+ uint16 material[3];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_REQMAKINGITEM {
+ int16 packetType;
+ int16 result;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_FEED_PET {
+ int16 packetType;
+ uint8 result;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_FEED_MER {
+ int16 packetType;
+ uint8 result;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_USE_ITEM_ACK {
+ int16 packetType;
+ int16 index;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+ uint32 AID;
+#elif PACKETVER >= 3
+ uint16 itemId;
+ uint32 AID;
+#endif
+ int16 amount;
+ uint8 result;
+} __attribute__((packed));
+
+struct PACKET_ZC_SPRITE_CHANGE {
+ int16 packetType;
+ uint32 AID;
+ uint8 type;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 val;
+ uint32 val2;
+#elif PACKETVER >= 4
+ uint16 val;
+ uint16 val2;
+#else
+ uint8 val;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ADD_EXCHANGE_ITEM {
+ int16 packetType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+ uint8 itemType;
+ int32 amount;
+#elif PACKETVER >= 20100223
+ uint16 itemId;
+ uint8 itemType;
+ int32 amount;
+#else
+ int32 amount;
+ uint16 itemId;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_CASH_TIME_COUNTER {
+ int16 packetType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint32 seconds;
+} __attribute__((packed));
+
+struct PACKET_ZC_CASH_ITEM_DELETE {
+ int16 packetType;
+ uint16 index;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ITEM_PICKUP_PARTY {
+ int16 packetType;
+ uint32 AID;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+ uint16 location;
+ uint8 itemType;
+} __attribute__((packed));
+
+struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE {
+ int16 packetType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 amount;
+#if PACKETVER >= 20141016
+ uint32 zeny;
+ uint32 zenyLimit;
+ uint32 charId;
+ uint32 updateTime;
+#else
+ uint32 zenyLimit;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_WEAPONREFINE {
+ int16 packetType;
+ int32 result;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PROPERTY_HOMUN {
+ int16 packetType;
+ char name[NAME_LENGTH];
+ // Bit field, bit 0 : rename_flag (1 = already renamed), bit 1 : homunc vaporized (1 = true), bit 2 : homunc dead (1 = true)
+ uint8 flags;
+ uint16 level;
+ uint16 hunger;
+ uint16 intimacy;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 atk2;
+ uint16 matk;
+ uint16 hit;
+ uint16 crit;
+ uint16 def;
+ uint16 mdef;
+ uint16 flee;
+ uint16 amotion;
+ uint32 hp;
+ uint32 maxHp;
+ uint16 sp;
+ uint16 maxSp;
+ uint32 exp;
+ uint32 expNext;
+ uint16 skillPoints;
+ uint16 range;
+} __attribute__((packed));
+
+struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER {
+ int16 packetType;
+ uint16 result;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_ITEMREPAIR {
+ int16 packetType;
+ int16 index;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_MAKINGITEM {
+ int16 packetType;
+ int16 type;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_SSILIST_ITEM_CLICK {
+ int16 packetType;
+ uint32 AID;
+ uint32 storeId;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub {
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint32 price;
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_SCHEDULER_CASHITEM {
+ int16 packetType;
+ int16 packetLength;
+ int16 count;
+ int16 tabNum;
+ struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub {
+ uint32 price;
+ int16 index;
+ int16 amount;
+ uint8 itemType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_MYITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub {
+ uint32 price;
+ uint32 discountPrice;
+ uint8 itemType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_ITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub {
+ uint16 amount;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_PC_PURCHASE_ITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub {
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 amount;
+ uint32 price;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_OPEN_BUYING_STORE {
+ int16 packetType;
+ int16 packetLength;
+ uint32 zenyLimit;
+ uint8 result;
+ char storeName[MESSAGE_SIZE];
+ struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub {
+ uint32 price;
+ uint16 amount;
+ uint8 itemType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MYITEMLIST_BUYING_STORE {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ uint32 zenyLimit;
+ struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
+ uint32 price;
+ uint16 amount;
+ int16 index;
+ uint8 itemType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 identified;
+ uint8 damaged;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+// [4144] date 20160921 not confirmed. Can be bigger or smaller
+#if PACKETVER >= 20160921
+ uint32 location;
+ uint16 viewSprite;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+#if PACKETVER >= 20100105
+ uint32 venderId;
+#endif
+ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub {
+ uint32 price;
+ uint16 amount;
+ uint8 itemType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ uint32 storeId;
+ uint32 zenyLimit;
+ struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub items[];
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub {
+ int16 index;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 amount;
+} __attribute__((packed));
+
+struct PACKET_CZ_REQ_TRADE_BUYING_STORE {
+ int16 packetType;
+ int16 packetLength;
+ uint32 AID;
+ uint32 storeId;
+ struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKABLEITEMLIST_sub {
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+ uint32 material[3];
+#else
+ uint16 itemId;
+ uint16 material[3];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKABLEITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_MAKABLEITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKINGARROW_LIST_sub {
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKINGARROW_LIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_MAKINGARROW_LIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_REPAIRITEMLIST_sub {
+ int16 index;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 refine; // unused?
+ struct EQUIPSLOTINFO slot; // unused?
+} __attribute__((packed));
+
+struct PACKET_ZC_REPAIRITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_REPAIRITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub {
+ int16 index;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 refine; // unused?
+ struct EQUIPSLOTINFO slot; // unused?
+} __attribute__((packed));
+
+struct PACKET_ZC_NOTIFY_WEAPONITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKINGITEM_LIST_sub {
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_MAKINGITEM_LIST {
+ int16 packetType;
+ int16 packetLength;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 makeItem;
+#else
+ uint16 makeItem;
+#endif
+ struct PACKET_ZC_MAKINGITEM_LIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub {
+ uint32 price;
+ uint32 discountPrice;
+ uint8 itemType;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_PC_CASH_POINT_ITEMLIST {
+ int16 packetType;
+ int16 packetLength;
+ uint32 cashPoints;
+#if PACKETVER >= 20070711
+ uint32 kafraPoints;
+#endif
+ struct PACKET_ZC_PC_CASH_POINT_ITEMLIST_sub items[];
+} __attribute__((packed));
+
+struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub {
+ uint16 amount;
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM {
+ int16 packetType;
+#if PACKETVER >= 20101116
+ int16 packetLength;
+ uint32 kafraPoints;
+ uint16 count;
+ struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub items[];
+#else
+ uint16 itemId;
+ uint16 amount;
+#if PACKETVER >= 20070711
+ uint32 kafraPoints;
+#endif
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_SEARCH_STORE_INFO_item {
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+
+struct PACKET_CZ_SEARCH_STORE_INFO {
+ int16 packetType;
+ int16 packetLength;
+ uint8 searchType;
+ uint32 maxPrice;
+ uint32 minPrice;
+ uint8 itemsCount;
+ uint8 cardsCount;
+ struct PACKET_CZ_SEARCH_STORE_INFO_item items[]; // items[itemCount]
+/*
+ struct PACKET_CZ_SEARCH_STORE_INFO_item cards[cardCount];
+*/
+} __attribute__((packed));
+
+struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub {
+ uint32 storeId;
+ uint32 AID;
+ char shopName[MESSAGE_SIZE];
+#if PACKETVER_RE_NUM >= 20180704
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint8 itemType;
+ uint32 price;
+ uint16 amount;
+ uint8 refine;
+ struct EQUIPSLOTINFO slot;
+#if PACKETVER >= 20150226
+ struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#endif
+} __attribute__((packed));
+
+struct PACKET_ZC_SEARCH_STORE_INFO_ACK {
+ int16 packetType;
+ int16 packetLength;
+ uint8 firstPage;
+ uint8 nextPage;
+ uint8 usesCount;
+ struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub items[];
+} __attribute__((packed));
+
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris
diff --git a/src/map/party.c b/src/map/party.c
index b48a00590..9024b1c19 100644
--- a/src/map/party.c
+++ b/src/map/party.c
@@ -51,14 +51,15 @@
#include <stdlib.h>
#include <string.h>
-struct party_interface party_s;
+static struct party_interface party_s;
struct party_interface *party;
/*==========================================
* Fills the given party_member structure according to the sd provided.
* Used when creating/adding people to a party. [Skotlex]
*------------------------------------------*/
-void party_fill_member(struct party_member* member, struct map_session_data* sd, unsigned int leader) {
+static void party_fill_member(struct party_member *member, struct map_session_data *sd, unsigned int leader)
+{
nullpo_retv(member);
nullpo_retv(sd);
@@ -80,7 +81,7 @@ void party_fill_member(struct party_member* member, struct map_session_data* sd,
* @return the member_id.
* @retval INDEX_NOT_FOUND if not in party.
*/
-int party_getmemberid(struct party_data *p, struct map_session_data *sd)
+static int party_getmemberid(struct party_data *p, struct map_session_data *sd)
{
int member_id;
nullpo_retr(INDEX_NOT_FOUND, p);
@@ -98,7 +99,7 @@ int party_getmemberid(struct party_data *p, struct map_session_data *sd)
/*==========================================
* Request an available sd of this party
*------------------------------------------*/
-struct map_session_data* party_getavailablesd(struct party_data *p)
+static struct map_session_data *party_getavailablesd(struct party_data *p)
{
int i;
nullpo_retr(NULL, p);
@@ -109,7 +110,7 @@ struct map_session_data* party_getavailablesd(struct party_data *p)
/*==========================================
* Retrieves and validates the sd pointer for this party member [Skotlex]
*------------------------------------------*/
-struct map_session_data *party_sd_check(int party_id, int account_id, int char_id)
+static struct map_session_data *party_sd_check(int party_id, int account_id, int char_id)
{
struct map_session_data *sd = map->id2sd(account_id);
@@ -126,7 +127,7 @@ struct map_session_data *party_sd_check(int party_id, int account_id, int char_i
return sd;
}
-int party_db_final(union DBKey key, struct DBData *data, va_list ap)
+static int party_db_final(union DBKey key, struct DBData *data, va_list ap)
{
struct party_data *p;
@@ -139,7 +140,7 @@ int party_db_final(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
/// Party data lookup using party id.
-struct party_data* party_search(int party_id)
+static struct party_data *party_search(int party_id)
{
if(!party_id)
return NULL;
@@ -147,7 +148,7 @@ struct party_data* party_search(int party_id)
}
/// Party data lookup using party name.
-struct party_data* party_searchname(const char* str)
+static struct party_data *party_searchname(const char *str)
{
struct party_data* p;
@@ -161,7 +162,7 @@ struct party_data* party_searchname(const char* str)
return p;
}
-int party_create(struct map_session_data *sd, const char *name,int item,int item2)
+static int party_create(struct map_session_data *sd, const char *name, int item, int item2)
{
struct party_member leader;
char tname[NAME_LENGTH];
@@ -191,7 +192,7 @@ int party_create(struct map_session_data *sd, const char *name,int item,int item
return 0;
}
-void party_created(int account_id, int char_id, int fail, int party_id, const char *name)
+static void party_created(int account_id, int char_id, int fail, int party_id, const char *name)
{
struct map_session_data *sd;
sd=map->id2sd(account_id);
@@ -215,13 +216,14 @@ void party_created(int account_id, int char_id, int fail, int party_id, const ch
}
-int party_request_info(int party_id, int char_id)
+static int party_request_info(int party_id, int char_id)
{
return intif->request_partyinfo(party_id, char_id);
}
/// Invoked (from char-server) when the party info is not found.
-int party_recv_noinfo(int party_id, int char_id) {
+static int party_recv_noinfo(int party_id, int char_id)
+{
party->broken(party_id);
if( char_id != 0 ) {
// requester
@@ -233,7 +235,8 @@ int party_recv_noinfo(int party_id, int char_id) {
return 0;
}
-void party_check_state(struct party_data *p) {
+static void party_check_state(struct party_data *p)
+{
int i;
nullpo_retv(p);
memset(&p->state, 0, sizeof(p->state));
@@ -264,7 +267,7 @@ void party_check_state(struct party_data *p) {
}
}
-int party_recv_info(const struct party *sp, int char_id)
+static int party_recv_info(const struct party *sp, int char_id)
{
struct party_data* p;
const struct party_member *member;
@@ -362,7 +365,7 @@ int party_recv_info(const struct party *sp, int char_id)
return 0;
}
-int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
+static int party_invite(struct map_session_data *sd, struct map_session_data *tsd)
{
struct party_data *p;
int i;
@@ -424,7 +427,8 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
return 1;
}
-void party_reply_invite(struct map_session_data *sd,int party_id,int flag) {
+static void party_reply_invite(struct map_session_data *sd, int party_id, int flag)
+{
struct map_session_data* tsd;
struct party_member member;
@@ -457,7 +461,7 @@ void party_reply_invite(struct map_session_data *sd,int party_id,int flag) {
//- Loads up party data if not in server
//- Sets up the pointer to him
//- Player must be authed/active and belong to a party before calling this method
-void party_member_joined(struct map_session_data *sd)
+static void party_member_joined(struct map_session_data *sd)
{
struct party_data* p;
int i;
@@ -486,7 +490,8 @@ void party_member_joined(struct map_session_data *sd)
/// Invoked (from char-server) when a new member is added to the party.
/// flag: 0-success, 1-failure
-int party_member_added(int party_id,int account_id,int char_id, int flag) {
+static int party_member_added(int party_id, int account_id, int char_id, int flag)
+{
struct map_session_data *sd = map->id2sd(account_id),*sd2;
struct party_data *p = party->search(party_id);
int i, j;
@@ -546,7 +551,7 @@ int party_member_added(int party_id,int account_id,int char_id, int flag) {
}
/// Party member 'sd' requesting kick of member with <account_id, name>.
-int party_removemember(struct map_session_data* sd, int account_id, const char *name)
+static int party_removemember(struct map_session_data *sd, int account_id, const char *name)
{
struct party_data *p;
int i;
@@ -572,7 +577,7 @@ int party_removemember(struct map_session_data* sd, int account_id, const char *
}
/// Party member 'sd' requesting exit from party.
-int party_leave(struct map_session_data *sd)
+static int party_leave(struct map_session_data *sd)
{
struct party_data *p;
int i;
@@ -591,7 +596,7 @@ int party_leave(struct map_session_data *sd)
}
/// Invoked (from char-server) when a party member leaves the party.
-int party_member_withdraw(int party_id, int account_id, int char_id)
+static int party_member_withdraw(int party_id, int account_id, int char_id)
{
struct map_session_data* sd = map->id2sd(account_id);
struct party_data* p = party->search(party_id);
@@ -660,7 +665,7 @@ int party_member_withdraw(int party_id, int account_id, int char_id)
}
/// Invoked (from char-server) when a party is disbanded.
-int party_broken(int party_id)
+static int party_broken(int party_id)
{
struct party_data* p;
int i, j;
@@ -692,7 +697,7 @@ int party_broken(int party_id)
return 0;
}
-int party_changeoption(struct map_session_data *sd,int exp,int item)
+static int party_changeoption(struct map_session_data *sd, int exp, int item)
{
nullpo_ret(sd);
@@ -702,7 +707,8 @@ int party_changeoption(struct map_session_data *sd,int exp,int item)
return 0;
}
-int party_optionchanged(int party_id,int account_id,int exp,int item,int flag) {
+static int party_optionchanged(int party_id, int account_id, int exp, int item, int flag)
+{
struct party_data *p;
struct map_session_data *sd=map->id2sd(account_id);
if( (p=party->search(party_id))==NULL)
@@ -719,7 +725,7 @@ int party_optionchanged(int party_id,int account_id,int exp,int item,int flag) {
return 0;
}
-bool party_changeleader(struct map_session_data *sd, struct map_session_data *tsd)
+static bool party_changeleader(struct map_session_data *sd, struct map_session_data *tsd)
{
struct party_data *p;
int mi, tmi;
@@ -777,7 +783,7 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts
/// - changes maps
/// - logs in or out
/// - gains a level (disabled)
-int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short mapid,int online,int lv)
+static int party_recv_movemap(int party_id, int account_id, int char_id, unsigned short mapid, int online, int lv)
{
struct party_member* m;
struct party_data* p;
@@ -805,7 +811,7 @@ int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short m
return 0;
}
-void party_send_movemap(struct map_session_data *sd)
+static void party_send_movemap(struct map_session_data *sd)
{
struct party_data *p;
@@ -840,12 +846,12 @@ void party_send_movemap(struct map_session_data *sd)
return;
}
-void party_send_levelup(struct map_session_data *sd)
+static void party_send_levelup(struct map_session_data *sd)
{
intif->party_changemap(sd,1);
}
-int party_send_logout(struct map_session_data *sd)
+static int party_send_logout(struct map_session_data *sd)
{
struct party_data *p;
int i;
@@ -868,7 +874,7 @@ int party_send_logout(struct map_session_data *sd)
return 1;
}
-int party_send_message(struct map_session_data *sd, const char *mes)
+static int party_send_message(struct map_session_data *sd, const char *mes)
{
int len;
@@ -888,7 +894,7 @@ int party_send_message(struct map_session_data *sd, const char *mes)
return 0;
}
-int party_recv_message(int party_id,int account_id,const char *mes,int len)
+static int party_recv_message(int party_id, int account_id, const char *mes, int len)
{
struct party_data *p;
if( (p=party->search(party_id))==NULL)
@@ -897,7 +903,7 @@ int party_recv_message(int party_id,int account_id,const char *mes,int len)
return 0;
}
-int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv)
+static int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv)
{
struct party_data *p;
struct map_session_data *p_sd;
@@ -949,7 +955,7 @@ int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id
return 0;
}
-int party_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
+static int party_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
{
struct DBIterator *iter = db_iterator(party->db);
struct party_data* p;
@@ -988,7 +994,7 @@ int party_send_xy_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-int party_send_xy_clear(struct party_data *p)
+static int party_send_xy_clear(struct party_data *p)
{
int i;
@@ -1004,7 +1010,7 @@ int party_send_xy_clear(struct party_data *p)
}
// exp share and added zeny share [Valaris]
-int party_exp_share(struct party_data* p, struct block_list* src, unsigned int base_exp, unsigned int job_exp, int zeny)
+static int party_exp_share(struct party_data *p, struct block_list *src, unsigned int base_exp, unsigned int job_exp, int zeny)
{
struct map_session_data* sd[MAX_PARTY];
unsigned int i, c;
@@ -1045,7 +1051,7 @@ int party_exp_share(struct party_data* p, struct block_list* src, unsigned int b
}
//Does party loot. first_charid holds the charid of the player who has time priority to take the item.
-int party_share_loot(struct party_data* p, struct map_session_data* sd, struct item* item_data, int first_charid)
+static int party_share_loot(struct party_data *p, struct map_session_data *sd, struct item *item_data, int first_charid)
{
struct map_session_data *target = NULL;
int i;
@@ -1114,7 +1120,7 @@ int party_share_loot(struct party_data* p, struct map_session_data* sd, struct i
return 0;
}
-int party_send_dot_remove(struct map_session_data *sd)
+static int party_send_dot_remove(struct map_session_data *sd)
{
nullpo_ret(sd);
if (sd->status.party_id)
@@ -1125,7 +1131,7 @@ int party_send_dot_remove(struct map_session_data *sd)
// To use for Taekwon's "Fighting Chant"
// int c = 0;
// party_foreachsamemap(party->sub_count, sd, 0, &c);
-int party_sub_count(struct block_list *bl, va_list ap)
+static int party_sub_count(struct block_list *bl, va_list ap)
{
const struct map_session_data *sd = NULL;
@@ -1147,7 +1153,8 @@ int party_sub_count(struct block_list *bl, va_list ap)
* Arglist-based version of party_foreachsamemap
* @see party_foreachsamemap
*/
-int party_vforeachsamemap(int (*func)(struct block_list*,va_list), struct map_session_data *sd, int range, va_list ap) {
+static int party_vforeachsamemap(int (*func)(struct block_list*, va_list), struct map_session_data *sd, int range, va_list ap)
+{
struct party_data *p;
int i;
int x0,y0,x1,y1;
@@ -1193,7 +1200,7 @@ int party_vforeachsamemap(int (*func)(struct block_list*,va_list), struct map_se
}
// Special check for Minstrel's and Wanderer's chorus skills.
-int party_sub_count_chorus(struct block_list *bl, va_list ap)
+static int party_sub_count_chorus(struct block_list *bl, va_list ap)
{
const struct map_session_data *sd = NULL;
@@ -1221,7 +1228,8 @@ int party_sub_count_chorus(struct block_list *bl, va_list ap)
* @param ... Additional parameters to pass to func()
* @return Sum of the return values from func()
*/
-int party_foreachsamemap(int (*func)(struct block_list*,va_list), struct map_session_data *sd, int range, ...) {
+static int party_foreachsamemap(int (*func)(struct block_list*, va_list), struct map_session_data *sd, int range, ...)
+{
va_list ap;
int ret;
va_start(ap, range);
@@ -1234,14 +1242,16 @@ int party_foreachsamemap(int (*func)(struct block_list*,va_list), struct map_ses
* Party Booking in KRO [Spiria]
*------------------------------------------*/
-struct party_booking_ad_info* create_party_booking_data(void) {
+static struct party_booking_ad_info *create_party_booking_data(void)
+{
struct party_booking_ad_info *pb_ad;
CREATE(pb_ad, struct party_booking_ad_info, 1);
pb_ad->index = party->booking_nextid++;
return pb_ad;
}
-void party_recruit_register(struct map_session_data *sd, short level, const char *notice) {
+static void party_recruit_register(struct map_session_data *sd, short level, const char *notice)
+{
#ifdef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
@@ -1273,7 +1283,8 @@ void party_recruit_register(struct map_session_data *sd, short level, const char
#endif
}
-void party_booking_register(struct map_session_data *sd, short level, short mapid, short* job) {
+static void party_booking_register(struct map_session_data *sd, short level, short mapid, short *job)
+{
#ifndef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
int i;
@@ -1310,7 +1321,8 @@ void party_booking_register(struct map_session_data *sd, short level, short mapi
#endif
}
-void party_recruit_update(struct map_session_data *sd, const char *notice) {
+static void party_recruit_update(struct map_session_data *sd, const char *notice)
+{
#ifdef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
@@ -1331,7 +1343,8 @@ void party_recruit_update(struct map_session_data *sd, const char *notice) {
return;
#endif
}
-void party_booking_update(struct map_session_data *sd, short* job) {
+static void party_booking_update(struct map_session_data *sd, short *job)
+{
#ifndef PARTY_RECRUIT
int i;
struct party_booking_ad_info *pb_ad;
@@ -1357,7 +1370,8 @@ void party_booking_update(struct map_session_data *sd, short* job) {
#endif
}
-void party_recruit_search(struct map_session_data *sd, short level, short mapid, unsigned long lastindex, short resultcount) {
+static void party_recruit_search(struct map_session_data *sd, short level, short mapid, unsigned long lastindex, short resultcount)
+{
#ifdef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
int count = 0;
@@ -1388,7 +1402,8 @@ void party_recruit_search(struct map_session_data *sd, short level, short mapid,
return;
#endif
}
-void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount) {
+static void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount)
+{
#ifndef PARTY_RECRUIT
struct party_booking_ad_info *pb_ad;
int i;
@@ -1430,7 +1445,7 @@ void party_booking_search(struct map_session_data *sd, short level, short mapid,
#endif
}
-bool party_booking_delete(struct map_session_data *sd)
+static bool party_booking_delete(struct map_session_data *sd)
{
struct party_booking_ad_info* pb_ad;
@@ -1447,12 +1462,14 @@ bool party_booking_delete(struct map_session_data *sd)
}
return true;
}
-void do_final_party(void) {
+static void do_final_party(void)
+{
party->db->destroy(party->db,party->db_final);
db_destroy(party->booking_db); // Party Booking [Spiria]
}
// Constructor, init vars
-void do_init_party(bool minimal) {
+static void do_init_party(bool minimal)
+{
if (minimal)
return;
@@ -1461,12 +1478,14 @@ void do_init_party(bool minimal) {
timer->add_func_list(party->send_xy_timer, "party_send_xy_timer");
timer->add_interval(timer->gettick()+battle_config.party_update_interval, party->send_xy_timer, 0, 0, battle_config.party_update_interval);
}
+
/*=====================================
-* Default Functions : party.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void party_defaults(void) {
+ * Default Functions : party.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void party_defaults(void)
+{
party = &party_s;
/* */
diff --git a/src/map/path.c b/src/map/path.c
index 72c188dad..16d9b0563 100644
--- a/src/map/path.c
+++ b/src/map/path.c
@@ -44,7 +44,7 @@
#define DIR_SOUTH 4
#define DIR_EAST 8
-struct path_interface path_s;
+static struct path_interface path_s;
struct path_interface *path;
/// @name Structures and defines for A* pathfinding
@@ -85,7 +85,7 @@ static const unsigned char walk_choices [3][3] =
* Find the closest reachable cell, 'count' cells away from (x0,y0) in direction (dx,dy).
* Income after the coordinates of the blow
*------------------------------------------*/
-int path_blownpos(struct block_list *bl, int16 m,int16 x0,int16 y0,int16 dx,int16 dy,int count)
+static int path_blownpos(struct block_list *bl, int16 m, int16 x0, int16 y0, int16 dx, int16 dy, int count)
{
struct map_data *md;
@@ -119,7 +119,7 @@ int path_blownpos(struct block_list *bl, int16 m,int16 x0,int16 y0,int16 dx,int1
/*==========================================
* is ranged attack from (x0,y0) to (x1,y1) possible?
*------------------------------------------*/
-bool path_search_long(struct shootpath_data *spd,struct block_list *bl,int16 m,int16 x0,int16 y0,int16 x1,int16 y1,cell_chk cell)
+static bool path_search_long(struct shootpath_data *spd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, cell_chk cell)
{
int dx, dy;
int wx = 0, wy = 0;
@@ -253,7 +253,7 @@ static int add_path(struct node_heap *heap, struct path_node *tp, int16 x, int16
* flag: &1 = easy path search only
* cell: type of obstruction to check for
*------------------------------------------*/
-bool path_search(struct walkpath_data *wpd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int flag, cell_chk cell)
+static bool path_search(struct walkpath_data *wpd, struct block_list *bl, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int flag, cell_chk cell)
{
register int i, x, y, dx, dy;
struct map_data *md;
@@ -429,7 +429,7 @@ bool path_search(struct walkpath_data *wpd, struct block_list *bl, int16 m, int1
}
//Distance functions, taken from http://www.flipcode.com/articles/article_fastdistance.shtml
-bool check_distance(int dx, int dy, int distance)
+static bool check_distance(int dx, int dy, int distance)
{
#ifdef CIRCULAR_AREA
//In this case, we just do a square comparison. Add 1 tile grace for diagonal range checks.
@@ -441,7 +441,7 @@ bool check_distance(int dx, int dy, int distance)
#endif
}
-unsigned int distance(int dx, int dy)
+static unsigned int distance(int dx, int dy)
{
#ifdef CIRCULAR_AREA
unsigned int min, max;
@@ -478,7 +478,7 @@ unsigned int distance(int dx, int dy)
* @param distance: Distance to check against
* @return Within distance(1); Not within distance(0);
*/
-bool check_distance_client(int dx, int dy, int distance)
+static bool check_distance_client(int dx, int dy, int distance)
{
if(distance < 0) distance = 0;
@@ -492,7 +492,7 @@ bool check_distance_client(int dx, int dy, int distance)
* @param dy: Vertical distance
* @return Circular distance
*/
-int distance_client(int dx, int dy)
+static int distance_client(int dx, int dy)
{
double temp_dist = sqrt((double)(dx*dx + dy*dy));
@@ -505,7 +505,8 @@ int distance_client(int dx, int dy)
return ((int)temp_dist);
}
-void path_defaults(void) {
+void path_defaults(void)
+{
path = &path_s;
path->blownpos = path_blownpos;
diff --git a/src/map/pc.c b/src/map/pc.c
index ebc66fc9f..d9e41fde2 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -76,15 +76,15 @@
#include <string.h>
#include <time.h>
-struct pc_interface pc_s;
+static struct pc_interface pc_s;
struct pc_interface *pc;
-struct class_exp_tables exptables;
+static struct class_exp_tables exptables;
//Converts a class to its array index for CLASS_COUNT defined arrays.
//Note that it does not do a validity check for speed purposes, where parsing
//player input make sure to use a pc->db_checkid first!
-int pc_class2idx(int class)
+static int pc_class2idx(int class)
{
if (class >= JOB_NOVICE_HIGH) {
class += - JOB_NOVICE_HIGH + JOB_MAX_BASIC;
@@ -99,7 +99,7 @@ int pc_class2idx(int class)
* required to provide a session.
* Caller must release dummy on its own when it's no longer needed.
*/
-struct map_session_data* pc_get_dummy_sd(void)
+static struct map_session_data *pc_get_dummy_sd(void)
{
struct map_session_data *dummy_sd;
CREATE(dummy_sd, struct map_session_data, 1);
@@ -113,7 +113,7 @@ struct map_session_data* pc_get_dummy_sd(void)
* @param group_id Group ID
* @return 1 on error, 0 on success
*/
-int pc_set_group(struct map_session_data *sd, int group_id)
+static int pc_set_group(struct map_session_data *sd, int group_id)
{
GroupSettings *group = pcg->id2group(group_id);
nullpo_retr(1, sd);
@@ -127,13 +127,13 @@ int pc_set_group(struct map_session_data *sd, int group_id)
/**
* Checks if commands used by player should be logged.
*/
-bool pc_should_log_commands(struct map_session_data *sd)
+static bool pc_should_log_commands(struct map_session_data *sd)
{
nullpo_retr(true, sd);
return pcg->should_log_commands(sd->group);
}
-int pc_invincible_timer(int tid, int64 tick, int id, intptr_t data)
+static int pc_invincible_timer(int tid, int64 tick, int id, intptr_t data)
{
struct map_session_data *sd = map->id2sd(id);
@@ -150,7 +150,7 @@ int pc_invincible_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-void pc_setinvincibletimer(struct map_session_data* sd, int val)
+static void pc_setinvincibletimer(struct map_session_data *sd, int val)
{
nullpo_retv(sd);
@@ -161,7 +161,7 @@ void pc_setinvincibletimer(struct map_session_data* sd, int val)
sd->invincible_timer = timer->add(timer->gettick()+val,pc->invincible_timer,sd->bl.id,0);
}
-void pc_delinvincibletimer(struct map_session_data* sd)
+static void pc_delinvincibletimer(struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -173,7 +173,8 @@ void pc_delinvincibletimer(struct map_session_data* sd)
}
}
-int pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
int i;
@@ -205,12 +206,13 @@ int pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data) {
}
/**
-* Get the possible number of spiritball that a player can call.
-* @param sd the affected player structure
-* @param min the minimum number of spiritball regardless the level of MO_CALLSPIRITS
-* @retval total number of spiritball
-**/
-int pc_getmaxspiritball(struct map_session_data *sd, int min) {
+ * Get the possible number of spiritball that a player can call.
+ * @param sd the affected player structure
+ * @param min the minimum number of spiritball regardless the level of MO_CALLSPIRITS
+ * @retval total number of spiritball
+ */
+static int pc_getmaxspiritball(struct map_session_data *sd, int min)
+{
int result;
nullpo_ret(sd);
@@ -226,7 +228,7 @@ int pc_getmaxspiritball(struct map_session_data *sd, int min) {
return result;
}
-int pc_addspiritball(struct map_session_data *sd,int interval,int max)
+static int pc_addspiritball(struct map_session_data *sd, int interval, int max)
{
int tid, i;
@@ -257,7 +259,7 @@ int pc_addspiritball(struct map_session_data *sd,int interval,int max)
return 0;
}
-int pc_addspiritball_sub(struct map_session_data *sd)
+static int pc_addspiritball_sub(struct map_session_data *sd)
{
nullpo_ret(sd);
if ((sd->job & MAPID_THIRDMASK) == MAPID_ROYAL_GUARD)
@@ -267,7 +269,7 @@ int pc_addspiritball_sub(struct map_session_data *sd)
return 0;
}
-int pc_delspiritball(struct map_session_data *sd,int count,int type)
+static int pc_delspiritball(struct map_session_data *sd, int count, int type)
{
int i;
@@ -303,7 +305,7 @@ int pc_delspiritball(struct map_session_data *sd,int count,int type)
return 0;
}
-int pc_delspiritball_sub(struct map_session_data *sd)
+static int pc_delspiritball_sub(struct map_session_data *sd)
{
nullpo_ret(sd);
if ((sd->job & MAPID_THIRDMASK) == MAPID_ROYAL_GUARD)
@@ -313,7 +315,7 @@ int pc_delspiritball_sub(struct map_session_data *sd)
return 0;
}
-int pc_check_banding(struct block_list *bl, va_list ap)
+static int pc_check_banding(struct block_list *bl, va_list ap)
{
int *c, *b_sd;
struct block_list *src;
@@ -341,7 +343,8 @@ int pc_check_banding(struct block_list *bl, va_list ap)
return 0;
}
-int pc_banding(struct map_session_data *sd, uint16 skill_lv) {
+static int pc_banding(struct map_session_data *sd, uint16 skill_lv)
+{
int c;
int b_sd[MAX_PARTY]; // In case of a full Royal Guard party.
int i, j, hp, extra_hp = 0, tmp_qty = 0;
@@ -416,7 +419,7 @@ int pc_banding(struct map_session_data *sd, uint16 skill_lv) {
* @param type The fame list type (@see enum fame_list_type).
* @param count The amount of points to add.
*/
-void pc_addfame(struct map_session_data *sd, int ranktype, int count)
+static void pc_addfame(struct map_session_data *sd, int ranktype, int count)
{
nullpo_retv(sd);
@@ -456,7 +459,7 @@ void pc_addfame(struct map_session_data *sd, int ranktype, int count)
* @return The rank position (1-based index)
* @retval 0 if the character isn't in the specified list.
*/
-int pc_fame_rank(int char_id, int ranktype)
+static int pc_fame_rank(int char_id, int ranktype)
{
int i;
@@ -495,7 +498,8 @@ int pc_fame_rank(int char_id, int ranktype)
* @return the appropriate fame list type (@see enum fame_list_type).
* @retval RANKTYPE_UNKNOWN if no appropriate type exists.
*/
-int pc_famelist_type(uint16 job_mapid) {
+static int pc_famelist_type(uint16 job_mapid)
+{
switch (job_mapid & MAPID_UPPERMASK) {
case MAPID_BLACKSMITH:
return RANKTYPE_BLACKSMITH;
@@ -508,7 +512,8 @@ int pc_famelist_type(uint16 job_mapid) {
}
}
-int pc_setrestartvalue(struct map_session_data *sd,int type) {
+static int pc_setrestartvalue(struct map_session_data *sd, int type)
+{
struct status_data *st, *bst;
nullpo_ret(sd);
@@ -531,7 +536,8 @@ int pc_setrestartvalue(struct map_session_data *sd,int type) {
/*==========================================
Rental System
*------------------------------------------*/
-int pc_inventory_rental_end(int tid, int64 tick, int id, intptr_t data) {
+static int pc_inventory_rental_end(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
if( sd == NULL )
return 0;
@@ -545,7 +551,7 @@ int pc_inventory_rental_end(int tid, int64 tick, int id, intptr_t data) {
return 1;
}
-int pc_inventory_rental_clear(struct map_session_data *sd)
+static int pc_inventory_rental_clear(struct map_session_data *sd)
{
nullpo_ret(sd);
if( sd->rental_timer != INVALID_TIMER )
@@ -557,8 +563,9 @@ int pc_inventory_rental_clear(struct map_session_data *sd)
return 1;
}
/* assumes i is valid (from default areas where it is called, it is) */
-void pc_rental_expire(struct map_session_data *sd, int i) {
- short nameid;
+static void pc_rental_expire(struct map_session_data *sd, int i)
+{
+ int nameid;
nullpo_retv(sd);
Assert_retv(i >= 0 && i < MAX_INVENTORY);
@@ -628,7 +635,7 @@ void pc_rental_expire(struct map_session_data *sd, int i) {
clif->rental_expired(sd->fd, i, sd->status.inventory[i].nameid);
pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_RENTAL);
}
-void pc_inventory_rentals(struct map_session_data *sd)
+static void pc_inventory_rentals(struct map_session_data *sd)
{
int i, c = 0;
int64 expire_tick, next_tick = INT64_MAX;
@@ -657,7 +664,7 @@ void pc_inventory_rentals(struct map_session_data *sd)
sd->rental_timer = INVALID_TIMER;
}
-void pc_inventory_rental_add(struct map_session_data *sd, int seconds)
+static void pc_inventory_rental_add(struct map_session_data *sd, int seconds)
{
int tick = seconds * 1000;
@@ -681,7 +688,7 @@ void pc_inventory_rental_add(struct map_session_data *sd, int seconds)
/*==========================================
* prepares character for saving.
*------------------------------------------*/
-int pc_makesavestatus(struct map_session_data *sd)
+static int pc_makesavestatus(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -747,7 +754,7 @@ int pc_makesavestatus(struct map_session_data *sd)
/*==========================================
* Off init ? Connection?
*------------------------------------------*/
-int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int login_id1, unsigned int client_tick, int sex, int fd)
+static int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int login_id1, unsigned int client_tick, int sex, int fd)
{
nullpo_ret(sd);
@@ -770,7 +777,7 @@ int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int lo
}
// [4144] probably pc_equippoint should be replaced to pc_item_equippoint
-int pc_equippoint(struct map_session_data *sd,int n)
+static int pc_equippoint(struct map_session_data *sd, int n)
{
int ep = 0;
@@ -802,7 +809,7 @@ int pc_equippoint(struct map_session_data *sd,int n)
return ep;
}
-int pc_item_equippoint(struct map_session_data *sd, struct item_data* id)
+static int pc_item_equippoint(struct map_session_data *sd, struct item_data *id)
{
int ep = 0;
@@ -829,7 +836,7 @@ int pc_item_equippoint(struct map_session_data *sd, struct item_data* id)
return ep;
}
-int pc_setinventorydata(struct map_session_data *sd)
+static int pc_setinventorydata(struct map_session_data *sd)
{
int i;
@@ -842,7 +849,7 @@ int pc_setinventorydata(struct map_session_data *sd)
return 0;
}
-int pc_calcweapontype(struct map_session_data *sd)
+static int pc_calcweapontype(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -886,7 +893,7 @@ int pc_calcweapontype(struct map_session_data *sd)
return 2;
}
-int pc_setequipindex(struct map_session_data *sd)
+static int pc_setequipindex(struct map_session_data *sd)
{
int i,j;
@@ -935,7 +942,7 @@ int pc_setequipindex(struct map_session_data *sd)
return 0;
}
-bool pc_isequipped(struct map_session_data *sd, int nameid)
+static bool pc_isequipped(struct map_session_data *sd, int nameid)
{
int i, j;
@@ -961,7 +968,7 @@ bool pc_isequipped(struct map_session_data *sd, int nameid)
return false;
}
-bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd )
+static bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd)
{
if( !p1_sd || !p2_sd || !b_sd )
return false;
@@ -1011,7 +1018,7 @@ bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd
/*==========================================
* Adoption Process
*------------------------------------------*/
-bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd)
+static bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd)
{
int class, joblevel;
uint64 jobexp;
@@ -1056,7 +1063,7 @@ bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd,
* Checks if the player can equip the item at index n in inventory.
* Returns 0 (no) or 1 (yes).
*------------------------------------------------*/
-int pc_isequip(struct map_session_data *sd,int n)
+static int pc_isequip(struct map_session_data *sd, int n)
{
struct item_data *item;
@@ -1183,7 +1190,7 @@ int pc_isequip(struct map_session_data *sd,int n)
* No problem with the session id
* set the status that has been sent from char server
*------------------------------------------*/
-bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, const struct mmo_charstatus *st, bool changing_mapservers)
+static bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, const struct mmo_charstatus *st, bool changing_mapservers)
{
int i;
int64 tick = timer->gettick();
@@ -1425,7 +1432,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
/*==========================================
* Closes a connection because it failed to be authenticated from the char server.
*------------------------------------------*/
-void pc_authfail(struct map_session_data *sd)
+static void pc_authfail(struct map_session_data *sd)
{
nullpo_retv(sd);
clif->authfail_fd(sd->fd, 0);
@@ -1433,7 +1440,7 @@ void pc_authfail(struct map_session_data *sd)
}
//Attempts to set a mob.
-int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
+static int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
{
int class_;
if (!sd || !bl || pos < 0 || pos >= MAX_PC_FEELHATE)
@@ -1461,7 +1468,7 @@ int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
/*==========================================
* Invoked once after the char/account/account2 registry variables are received. [Skotlex]
*------------------------------------------*/
-int pc_reg_received(struct map_session_data *sd)
+static int pc_reg_received(struct map_session_data *sd)
{
int i, idx = 0;
@@ -1589,7 +1596,8 @@ int pc_reg_received(struct map_session_data *sd)
return 1;
}
-int pc_calc_skillpoint(struct map_session_data* sd) {
+static int pc_calc_skillpoint(struct map_session_data *sd)
+{
int i,inf2,skill_point=0;
nullpo_ret(sd);
@@ -1612,7 +1620,7 @@ int pc_calc_skillpoint(struct map_session_data* sd) {
return skill_point;
}
-void pc_calc_skilltree_clear(struct map_session_data *sd)
+static void pc_calc_skilltree_clear(struct map_session_data *sd)
{
int i;
@@ -1639,7 +1647,7 @@ void pc_calc_skilltree_clear(struct map_session_data *sd)
/*==========================================
* Calculation of skill level.
*------------------------------------------*/
-int pc_calc_skilltree(struct map_session_data *sd)
+static int pc_calc_skilltree(struct map_session_data *sd)
{
int i,id=0,flag;
int class = 0, classidx = 0;
@@ -1786,7 +1794,7 @@ int pc_calc_skilltree(struct map_session_data *sd)
return 0;
}
-void pc_calc_skilltree_bonus(struct map_session_data *sd, int classidx)
+static void pc_calc_skilltree_bonus(struct map_session_data *sd, int classidx)
{
int i;
int id = 0;
@@ -1822,7 +1830,7 @@ void pc_calc_skilltree_bonus(struct map_session_data *sd, int classidx)
}
//Checks if you can learn a new skill after having leveled up a skill.
-void pc_check_skilltree(struct map_session_data *sd, int skill_id)
+static void pc_check_skilltree(struct map_session_data *sd, int skill_id)
{
int i,id=0,flag;
int c=0;
@@ -1893,7 +1901,7 @@ void pc_check_skilltree(struct map_session_data *sd, int skill_id)
// Make sure all the skills are in the correct condition
// before persisting to the backend.. [MouseJstr]
-int pc_clean_skilltree(struct map_session_data *sd)
+static int pc_clean_skilltree(struct map_session_data *sd)
{
int i;
nullpo_ret(sd);
@@ -1911,7 +1919,7 @@ int pc_clean_skilltree(struct map_session_data *sd)
return 0;
}
-int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
+static int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
{
int skill_point, novice_skills;
uint16 job;
@@ -1987,7 +1995,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
* 2: overweight 90%
* It's assumed that SC_WEIGHTOVER50 and SC_WEIGHTOVER90 are only started/stopped here.
*/
-int pc_updateweightstatus(struct map_session_data *sd)
+static int pc_updateweightstatus(struct map_session_data *sd)
{
int old_overweight;
int new_overweight;
@@ -2018,7 +2026,7 @@ int pc_updateweightstatus(struct map_session_data *sd)
return 0;
}
-int pc_disguise(struct map_session_data *sd, int class)
+static int pc_disguise(struct map_session_data *sd, int class)
{
nullpo_ret(sd);
if (class == -1 && sd->disguise == -1)
@@ -2074,7 +2082,7 @@ int pc_disguise(struct map_session_data *sd, int class)
return 1;
}
-int pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id)
+static int pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id)
{
int i;
@@ -2112,7 +2120,7 @@ int pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, s
return 1;
}
-int pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id)
+static int pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id)
{
int i;
@@ -2153,7 +2161,7 @@ int pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_ski
* @retval 1 on success.
* @retval 0 on failure.
*/
-int pc_bonus_addeff(struct s_addeffect* effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration)
+static int pc_bonus_addeff(struct s_addeffect *effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration)
{
int i;
@@ -2185,7 +2193,8 @@ int pc_bonus_addeff(struct s_addeffect* effect, int max, enum sc_type id, int16
return 1;
}
-int pc_bonus_addeff_onskill(struct s_addeffectonskill* effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target) {
+static int pc_bonus_addeff_onskill(struct s_addeffectonskill *effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target)
+{
int i;
nullpo_ret(effect);
@@ -2206,7 +2215,8 @@ int pc_bonus_addeff_onskill(struct s_addeffectonskill* effect, int max, enum sc_
return 1;
}
-int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short group, int race_mask, int rate) {
+static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short group, int race_mask, int rate)
+{
int i;
nullpo_ret(drop);
@@ -2254,7 +2264,8 @@ int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short
return 1;
}
-int pc_addautobonus(struct s_autobonus *bonus,char max,const char *bonus_script,short rate,unsigned int dur,short flag,const char *other_script,unsigned short pos,bool onskill) {
+static int pc_addautobonus(struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short flag, const char *other_script, unsigned short pos, bool onskill)
+{
int i;
nullpo_ret(bonus);
@@ -2291,7 +2302,7 @@ int pc_addautobonus(struct s_autobonus *bonus,char max,const char *bonus_script,
return 1;
}
-int pc_delautobonus(struct map_session_data* sd, struct s_autobonus *autobonus,char max,bool restore)
+static int pc_delautobonus(struct map_session_data *sd, struct s_autobonus *autobonus, char max, bool restore)
{
int i;
nullpo_ret(sd);
@@ -2329,7 +2340,7 @@ int pc_delautobonus(struct map_session_data* sd, struct s_autobonus *autobonus,c
return 0;
}
-int pc_exeautobonus(struct map_session_data *sd,struct s_autobonus *autobonus)
+static int pc_exeautobonus(struct map_session_data *sd, struct s_autobonus *autobonus)
{
nullpo_ret(sd);
nullpo_ret(autobonus);
@@ -2349,7 +2360,8 @@ int pc_exeautobonus(struct map_session_data *sd,struct s_autobonus *autobonus)
return 0;
}
-int pc_endautobonus(int tid, int64 tick, int id, intptr_t data) {
+static int pc_endautobonus(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
struct s_autobonus *autobonus = (struct s_autobonus *)data;
@@ -2362,7 +2374,7 @@ int pc_endautobonus(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int pc_bonus_addele(struct map_session_data* sd, unsigned char ele, short rate, short flag)
+static int pc_bonus_addele(struct map_session_data *sd, unsigned char ele, short rate, short flag)
{
int i;
struct weapon_data* wd;
@@ -2397,7 +2409,7 @@ int pc_bonus_addele(struct map_session_data* sd, unsigned char ele, short rate,
return 0;
}
-int pc_bonus_subele(struct map_session_data* sd, unsigned char ele, short rate, short flag)
+static int pc_bonus_subele(struct map_session_data *sd, unsigned char ele, short rate, short flag)
{
int i;
@@ -2443,7 +2455,8 @@ int pc_bonus_subele(struct map_session_data* sd, unsigned char ele, short rate,
/*==========================================
* Add a bonus(type) to player sd
*------------------------------------------*/
-int pc_bonus(struct map_session_data *sd,int type,int val) {
+static int pc_bonus(struct map_session_data *sd, int type, int val)
+{
struct status_data *bst;
int bonus;
int i;
@@ -3109,7 +3122,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val) {
/*==========================================
* Player bonus (type) with args type2 and val, called trough bonus2 (npc)
*------------------------------------------*/
-int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
+static int pc_bonus2(struct map_session_data *sd, int type, int type2, int val)
{
int i;
@@ -3899,7 +3912,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
return 0;
}
-int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
+static int pc_bonus3(struct map_session_data *sd, int type, int type2, int type3, int val)
{
int i;
nullpo_ret(sd);
@@ -4073,7 +4086,8 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
return 0;
}
-int pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type4,int val) {
+static int pc_bonus4(struct map_session_data *sd, int type, int type2, int type3, int type4, int val)
+{
int i;
nullpo_ret(sd);
@@ -4168,7 +4182,8 @@ int pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type4
return 0;
}
-int pc_bonus5(struct map_session_data *sd,int type,int type2,int type3,int type4,int type5,int val) {
+static int pc_bonus5(struct map_session_data *sd, int type, int type2, int type3, int type4, int type5, int val)
+{
nullpo_ret(sd);
switch(type){
@@ -4202,7 +4217,7 @@ int pc_bonus5(struct map_session_data *sd,int type,int type2,int type3,int type4
* Grants a player a given skill.
* Flag values: @see enum pc_skill_flag
*------------------------------------------*/
-int pc_skill(struct map_session_data *sd, int id, int level, int flag)
+static int pc_skill(struct map_session_data *sd, int id, int level, int flag)
{
int index = 0;
nullpo_ret(sd);
@@ -4281,7 +4296,7 @@ int pc_skill(struct map_session_data *sd, int id, int level, int flag)
* @param idx_equip The target equipment's inventory index.
* @retval true if the card can be inserted.
*/
-bool pc_can_insert_card_into(struct map_session_data* sd, int idx_card, int idx_equip)
+static bool pc_can_insert_card_into(struct map_session_data *sd, int idx_card, int idx_equip)
{
int i;
@@ -4317,7 +4332,7 @@ bool pc_can_insert_card_into(struct map_session_data* sd, int idx_card, int idx_
* @param idx_card The card's inventory index.
* @retval true if the card can be inserted.
*/
-bool pc_can_insert_card(struct map_session_data* sd, int idx_card)
+static bool pc_can_insert_card(struct map_session_data *sd, int idx_card)
{
nullpo_ret(sd);
@@ -4336,7 +4351,7 @@ bool pc_can_insert_card(struct map_session_data* sd, int idx_card)
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip)
+static int pc_insert_card(struct map_session_data *sd, int idx_card, int idx_equip)
{
int nameid;
@@ -4378,7 +4393,7 @@ int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip)
/*==========================================
* Update buying value by skills
*------------------------------------------*/
-int pc_modifybuyvalue(struct map_session_data *sd, int orig_value)
+static int pc_modifybuyvalue(struct map_session_data *sd, int orig_value)
{
int skill_lv, rate1 = 0, rate2 = 0;
if (orig_value <= 0)
@@ -4399,7 +4414,7 @@ int pc_modifybuyvalue(struct map_session_data *sd, int orig_value)
/*==========================================
* Update selling value by skills
*------------------------------------------*/
-int pc_modifysellvalue(struct map_session_data *sd, int orig_value)
+static int pc_modifysellvalue(struct map_session_data *sd, int orig_value)
{
int skill_lv, rate = 0;
if (orig_value <= 0)
@@ -4417,7 +4432,7 @@ int pc_modifysellvalue(struct map_session_data *sd, int orig_value)
* Checking if we have enough place on inventory for new item
* Make sure to take 30k as limit (for client I guess)
*------------------------------------------*/
-int pc_checkadditem(struct map_session_data *sd,int nameid,int amount)
+static int pc_checkadditem(struct map_session_data *sd, int nameid, int amount)
{
int i;
struct item_data* data;
@@ -4451,7 +4466,7 @@ int pc_checkadditem(struct map_session_data *sd,int nameid,int amount)
* Return number of available place in inventory
* Each non stackable item will reduce place by 1
*------------------------------------------*/
-int pc_inventoryblank(struct map_session_data *sd)
+static int pc_inventoryblank(struct map_session_data *sd)
{
int i,b;
@@ -4468,7 +4483,7 @@ int pc_inventoryblank(struct map_session_data *sd)
/*==========================================
* attempts to remove zeny from player (sd)
*------------------------------------------*/
-int pc_payzeny(struct map_session_data *sd,int zeny, enum e_log_pick_type type, struct map_session_data *tsd)
+static int pc_payzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd)
{
nullpo_retr(-1,sd);
@@ -4505,7 +4520,7 @@ int pc_payzeny(struct map_session_data *sd,int zeny, enum e_log_pick_type type,
* @return points Leftover kafra points.
*/
//Changed Kafrapoints calculation. [Normynator]
-int pc_paycash(struct map_session_data *sd, int price, int points)
+static int pc_paycash(struct map_session_data *sd, int price, int points)
{
int cash;
int mempoints;
@@ -4545,7 +4560,7 @@ int pc_paycash(struct map_session_data *sd, int price, int points)
return points;
}
-int pc_getcash(struct map_session_data *sd, int cash, int points)
+static int pc_getcash(struct map_session_data *sd, int cash, int points)
{
char output[128];
nullpo_retr(-1,sd);
@@ -4604,7 +4619,7 @@ int pc_getcash(struct map_session_data *sd, int cash, int points)
* Attempts to give zeny to player (sd)
* tsd (optional) from who for log (if null take sd)
*------------------------------------------*/
-int pc_getzeny(struct map_session_data *sd,int zeny, enum e_log_pick_type type, struct map_session_data *tsd)
+static int pc_getzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd)
{
nullpo_retr(-1,sd);
@@ -4643,7 +4658,8 @@ int pc_getzeny(struct map_session_data *sd,int zeny, enum e_log_pick_type type,
* @return the inventory index of the first instance of the requested item.
* @retval INDEX_NOT_FOUND if the item wasn't found.
*/
-int pc_search_inventory(struct map_session_data *sd, int item_id) {
+static int pc_search_inventory(struct map_session_data *sd, int item_id)
+{
int i;
nullpo_retr(INDEX_NOT_FOUND, sd);
@@ -4663,7 +4679,7 @@ int pc_search_inventory(struct map_session_data *sd, int item_id) {
* 6 = ?
* 7 = stack limitation
*------------------------------------------*/
-int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type)
+static int pc_additem(struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type)
{
struct item_data *data;
int i;
@@ -4782,7 +4798,7 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l
* 0 = success
* 1 = invalid itemid or negative amount
*------------------------------------------*/
-int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reason, e_log_pick_type log_type)
+static int pc_delitem(struct map_session_data *sd, int n, int amount, int type, short reason, e_log_pick_type log_type)
{
nullpo_retr(1, sd);
Assert_retr(1, n >= 0 && n < MAX_INVENTORY);
@@ -4814,7 +4830,7 @@ int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reas
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_dropitem(struct map_session_data *sd,int n,int amount)
+static int pc_dropitem(struct map_session_data *sd, int n, int amount)
{
nullpo_retr(1, sd);
@@ -4857,7 +4873,7 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount)
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem)
+static int pc_takeitem(struct map_session_data *sd, struct flooritem_data *fitem)
{
int flag=0;
int64 tick = timer->gettick();
@@ -4923,7 +4939,7 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem)
* 0 = no
* 1 = yes
*------------------------------------------*/
-int pc_isUseitem(struct map_session_data *sd,int n)
+static int pc_isUseitem(struct map_session_data *sd, int n)
{
struct item_data *item;
int nameid;
@@ -5158,7 +5174,8 @@ int pc_isUseitem(struct map_session_data *sd,int n)
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_useitem(struct map_session_data *sd,int n) {
+static int pc_useitem(struct map_session_data *sd, int n)
+{
int64 tick = timer->gettick();
int amount, nameid, i;
bool removeItem = false;
@@ -5328,7 +5345,7 @@ int pc_useitem(struct map_session_data *sd,int n) {
* 0 = success
* 1 = fail
*------------------------------------------*/
-int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type)
+static int pc_cart_additem(struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type)
{
struct item_data *data;
int i,w;
@@ -5397,7 +5414,8 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun
* 0 = success
* 1 = fail
*------------------------------------------*/
-int pc_cart_delitem(struct map_session_data *sd,int n,int amount,int type,e_log_pick_type log_type) {
+static int pc_cart_delitem(struct map_session_data *sd, int n, int amount, int type, e_log_pick_type log_type)
+{
struct item_data * data;
nullpo_retr(1, sd);
Assert_retr(1, n >= 0 && n < MAX_INVENTORY);
@@ -5427,7 +5445,7 @@ int pc_cart_delitem(struct map_session_data *sd,int n,int amount,int type,e_log_
* 0 = fail
* 1 = succes
*------------------------------------------*/
-int pc_putitemtocart(struct map_session_data *sd,int idx,int amount)
+static int pc_putitemtocart(struct map_session_data *sd, int idx, int amount)
{
struct item *item_data;
int flag;
@@ -5454,7 +5472,7 @@ int pc_putitemtocart(struct map_session_data *sd,int idx,int amount)
* -1 = itemid not found or no amount found
* x = remaining itemid on cart after get
*------------------------------------------*/
-int pc_cartitem_amount(struct map_session_data* sd, int idx, int amount)
+static int pc_cartitem_amount(struct map_session_data *sd, int idx, int amount)
{
struct item* item_data;
@@ -5474,7 +5492,7 @@ int pc_cartitem_amount(struct map_session_data* sd, int idx, int amount)
* 0 = player not found or (FIXME) succes (from pc->cart_delitem)
* 1 = failure
*------------------------------------------*/
-int pc_getitemfromcart(struct map_session_data *sd,int idx,int amount)
+static int pc_getitemfromcart(struct map_session_data *sd, int idx, int amount)
{
struct item *item_data;
int flag;
@@ -5495,7 +5513,7 @@ int pc_getitemfromcart(struct map_session_data *sd,int idx,int amount)
return flag;
}
-void pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
+static void pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
{
int i;
@@ -5532,7 +5550,7 @@ void pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type)
/*==========================================
* Display item stolen msg to player sd
*------------------------------------------*/
-int pc_show_steal(struct block_list *bl,va_list ap)
+static int pc_show_steal(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL, *tsd = NULL;
int itemid;
@@ -5562,7 +5580,7 @@ int pc_show_steal(struct block_list *bl,va_list ap)
* 0 = fail
* 1 = succes
*------------------------------------------*/
-int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skill_lv)
+static int pc_steal_item(struct map_session_data *sd, struct block_list *bl, uint16 skill_lv)
{
int i,itemid,flag;
int rate;
@@ -5641,7 +5659,7 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skil
*
* @return Amount of stolen zeny (0 in case of failure)
*/
-int pc_steal_coin(struct map_session_data *sd, struct block_list *target, uint16 skill_lv)
+static int pc_steal_coin(struct map_session_data *sd, struct block_list *target, uint16 skill_lv)
{
int rate;
struct mob_data *md = BL_CAST(BL_MOB, target);
@@ -5673,7 +5691,8 @@ int pc_steal_coin(struct map_session_data *sd, struct block_list *target, uint16
* 1 - Invalid map index.
* 2 - Map not in this map-server, and failed to locate alternate map-server.
*------------------------------------------*/
-int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int y, clr_type clrtype) {
+static int pc_setpos(struct map_session_data *sd, unsigned short map_index, int x, int y, clr_type clrtype)
+{
int16 m;
nullpo_ret(sd);
@@ -5909,7 +5928,8 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int
* 0 = fail or FIXME success (from pc->setpos)
* x(1|2) = fail
*------------------------------------------*/
-int pc_randomwarp(struct map_session_data *sd, clr_type type) {
+static int pc_randomwarp(struct map_session_data *sd, clr_type type)
+{
int x,y,i=0;
int16 m;
@@ -5935,7 +5955,8 @@ int pc_randomwarp(struct map_session_data *sd, clr_type type) {
* Records a memo point at sd's current position
* pos - entry to replace, (-1: shift oldest entry out)
*------------------------------------------*/
-int pc_memo(struct map_session_data* sd, int pos) {
+static int pc_memo(struct map_session_data *sd, int pos)
+{
int skill_lv;
nullpo_ret(sd);
@@ -5985,7 +6006,8 @@ int pc_memo(struct map_session_data* sd, int pos) {
/*==========================================
* Return player sd skill_lv learned for given skill
*------------------------------------------*/
-int pc_checkskill(struct map_session_data *sd,uint16 skill_id) {
+static int pc_checkskill(struct map_session_data *sd, uint16 skill_id)
+{
int index = 0;
if(sd == NULL) return 0;
if( skill_id >= GD_SKILLBASE && skill_id < GD_MAX ) {
@@ -6004,7 +6026,8 @@ int pc_checkskill(struct map_session_data *sd,uint16 skill_id) {
return 0;
}
-int pc_checkskill2(struct map_session_data *sd,uint16 index) {
+static int pc_checkskill2(struct map_session_data *sd, uint16 index)
+{
if (sd == NULL)
return 0;
if (index >= MAX_SKILL_DB) {
@@ -6030,7 +6053,7 @@ int pc_checkskill2(struct map_session_data *sd,uint16 index) {
* Return
* 0 - No status found or all done
*------------------------------------------*/
-int pc_checkallowskill(struct map_session_data *sd)
+static int pc_checkallowskill(struct map_session_data *sd)
{
const enum sc_type scw_list[] = {
SC_TWOHANDQUICKEN,
@@ -6088,7 +6111,7 @@ int pc_checkallowskill(struct map_session_data *sd)
* -1 : mean nothing equiped
* idx : (this index could be used in inventory to found item_data)
*------------------------------------------*/
-int pc_checkequip(struct map_session_data *sd,int pos)
+static int pc_checkequip(struct map_session_data *sd, int pos)
{
int i;
@@ -6106,7 +6129,7 @@ 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]
*------------------------------------------*/
-int pc_jobid2mapid(int16 class)
+static int pc_jobid2mapid(int16 class)
{
switch (class) {
//Novice And 1-1 Jobs
@@ -6248,7 +6271,7 @@ int pc_jobid2mapid(int16 class)
}
//Reverts the map-style class id to the client-style one.
-int pc_mapid2jobid(uint16 job, int sex)
+static int pc_mapid2jobid(uint16 job, int sex)
{
switch (job) {
//Novice And 1-1 Jobs
@@ -6385,7 +6408,7 @@ int pc_mapid2jobid(uint16 job, int sex)
/*====================================================
* This function return the name of the job (by [Yor])
*----------------------------------------------------*/
-const char *job_name(int class)
+static const char *job_name(int class)
{
switch (class) {
case JOB_NOVICE: // 550
@@ -6614,7 +6637,8 @@ const char *job_name(int class)
}
}
-int pc_check_job_name(const char *name) {
+static int pc_check_job_name(const char *name)
+{
int i, len;
struct {
const char *name;
@@ -6748,7 +6772,8 @@ int pc_check_job_name(const char *name) {
return names[i].id;
}
-int pc_follow_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_follow_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct block_list *tbl;
@@ -6786,7 +6811,7 @@ int pc_follow_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int pc_stop_following (struct map_session_data *sd)
+static int pc_stop_following(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -6802,7 +6827,8 @@ int pc_stop_following (struct map_session_data *sd)
return 0;
}
-int pc_follow(struct map_session_data *sd,int target_id) {
+static int pc_follow(struct map_session_data *sd, int target_id)
+{
struct block_list *bl = map->id2bl(target_id);
nullpo_retr(1, sd);
if (bl == NULL /*|| bl->type != BL_PC*/)
@@ -6816,7 +6842,7 @@ int pc_follow(struct map_session_data *sd,int target_id) {
return 0;
}
-int pc_checkbaselevelup(struct map_session_data *sd)
+static int pc_checkbaselevelup(struct map_session_data *sd)
{
uint64 next = pc->nextbaseexp(sd);
@@ -6858,7 +6884,7 @@ int pc_checkbaselevelup(struct map_session_data *sd)
return 1;
}
-void pc_checkbaselevelup_sc(struct map_session_data *sd)
+static void pc_checkbaselevelup_sc(struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -6876,7 +6902,8 @@ void pc_checkbaselevelup_sc(struct map_session_data *sd)
}
}
-void pc_baselevelchanged(struct map_session_data *sd) {
+static void pc_baselevelchanged(struct map_session_data *sd)
+{
int i;
nullpo_retv(sd);
for( i = 0; i < EQI_MAX; i++ ) {
@@ -6887,7 +6914,7 @@ void pc_baselevelchanged(struct map_session_data *sd) {
}
}
-int pc_checkjoblevelup(struct map_session_data *sd)
+static int pc_checkjoblevelup(struct map_session_data *sd)
{
uint64 next = pc->nextjobexp(sd);
@@ -6922,7 +6949,8 @@ int pc_checkjoblevelup(struct map_session_data *sd)
/**
* Alters EXP based on self bonuses that do not get shared with the party
**/
-void pc_calcexp(struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src) {
+static void pc_calcexp(struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp, struct block_list *src)
+{
int buff_ratio = 0, buff_job_ratio = 0, race_ratio = 0, pk_ratio = 0;
int64 jexp, bexp;
@@ -6997,7 +7025,7 @@ void pc_calcexp(struct map_session_data *sd, uint64 *base_exp, uint64 *job_exp,
* @param is_quest Used to let client know that the EXP was from a quest (clif->displayexp) PACKETVER >= 20091027
* @retval true success
**/
-bool pc_gainexp(struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest)
+static bool pc_gainexp(struct map_session_data *sd, struct block_list *src, uint64 base_exp, uint64 job_exp, bool is_quest)
{
float nextbp = 0, nextjp = 0;
uint64 nextb = 0, nextj = 0;
@@ -7086,14 +7114,14 @@ bool pc_gainexp(struct map_session_data *sd, struct block_list *src, uint64 base
/*==========================================
* Returns max level for this character.
*------------------------------------------*/
-int pc_maxbaselv(const struct map_session_data *sd)
+static int pc_maxbaselv(const struct map_session_data *sd)
{
nullpo_ret(sd);
return pc->dbs->class_exp_table[pc->class2idx(sd->status.class)][CLASS_EXP_TABLE_BASE]->max_level;
}
-int pc_maxjoblv(const struct map_session_data *sd)
+static int pc_maxjoblv(const struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -7105,7 +7133,7 @@ int pc_maxjoblv(const struct map_session_data *sd)
*------------------------------------------*/
//Base exp needed for next level.
-uint64 pc_nextbaseexp(const struct map_session_data *sd)
+static uint64 pc_nextbaseexp(const struct map_session_data *sd)
{
const struct class_exp_group *exp_group = NULL;
@@ -7122,7 +7150,7 @@ uint64 pc_nextbaseexp(const struct map_session_data *sd)
}
//Base exp needed for this level.
-uint64 pc_thisbaseexp(const struct map_session_data *sd)
+static uint64 pc_thisbaseexp(const struct map_session_data *sd)
{
const struct class_exp_group *exp_group = NULL;
@@ -7146,7 +7174,7 @@ uint64 pc_thisbaseexp(const struct map_session_data *sd)
*------------------------------------------*/
//Job exp needed for next level.
-uint64 pc_nextjobexp(const struct map_session_data *sd)
+static uint64 pc_nextjobexp(const struct map_session_data *sd)
{
const struct class_exp_group *exp_group = NULL;
@@ -7163,7 +7191,7 @@ uint64 pc_nextjobexp(const struct map_session_data *sd)
}
//Job exp needed for this level.
-uint64 pc_thisjobexp(const struct map_session_data *sd)
+static uint64 pc_thisjobexp(const struct map_session_data *sd)
{
const struct class_exp_group *exp_group = NULL;
@@ -7178,7 +7206,7 @@ uint64 pc_thisjobexp(const struct map_session_data *sd)
}
/// Returns the value of the specified stat.
-int pc_getstat(struct map_session_data* sd, int type)
+static int pc_getstat(struct map_session_data *sd, int type)
{
nullpo_retr(-1, sd);
@@ -7196,7 +7224,7 @@ int pc_getstat(struct map_session_data* sd, int type)
/// Sets the specified stat to the specified value.
/// Returns the new value.
-int pc_setstat(struct map_session_data* sd, int type, int val)
+static int pc_setstat(struct map_session_data *sd, int type, int val)
{
nullpo_retr(-1, sd);
@@ -7215,7 +7243,7 @@ int pc_setstat(struct map_session_data* sd, int type, int val)
}
// Calculates the number of status points PC gets when leveling up (from level to level+1)
-int pc_gets_status_point(int level)
+static int pc_gets_status_point(int level)
{
if (battle_config.use_statpoint_table) //Use values from "db/statpoint.txt"
return (pc->statp[level+1] - pc->statp[level]);
@@ -7226,7 +7254,7 @@ int pc_gets_status_point(int level)
/// Returns the number of stat points needed to change the specified stat by val.
/// If val is negative, returns the number of stat points that would be needed to
/// raise the specified stat from (current value - val) to current value.
-int pc_need_status_point(struct map_session_data* sd, int type, int val)
+static int pc_need_status_point(struct map_session_data *sd, int type, int val)
{
int low, high, sp = 0;
@@ -7261,7 +7289,8 @@ int pc_need_status_point(struct map_session_data* sd, int type, int val)
* @param type Stat to verify.
* @return Maximum value the stat could grow by.
*/
-int pc_maxparameterincrease(struct map_session_data* sd, int type) {
+static int pc_maxparameterincrease(struct map_session_data *sd, int type)
+{
int base, final, status_points = sd->status.status_point;
base = final = pc->getstat(sd, type);
@@ -7291,7 +7320,8 @@ int pc_maxparameterincrease(struct map_session_data* sd, int type) {
* @retval true if the stat was increased by any amount.
* @retval false if there were no changes.
*/
-bool pc_statusup(struct map_session_data* sd, int type, int increase) {
+static bool pc_statusup(struct map_session_data *sd, int type, int increase)
+{
int max_increase = 0, current = 0, needed_points = 0, final_value = 0;
nullpo_ret(sd);
@@ -7350,7 +7380,7 @@ bool pc_statusup(struct map_session_data* sd, int type, int increase) {
* @return the stat increase amount.
* @retval 0 if no changes were made.
*/
-int pc_statusup2(struct map_session_data* sd, int type, int val)
+static int pc_statusup2(struct map_session_data *sd, int type, int val)
{
int max, need;
nullpo_ret(sd);
@@ -7385,7 +7415,7 @@ int pc_statusup2(struct map_session_data* sd, int type, int val)
* Update skill_lv for player sd
* Skill point allocation
*------------------------------------------*/
-int pc_skillup(struct map_session_data *sd,uint16 skill_id)
+static int pc_skillup(struct map_session_data *sd, uint16 skill_id)
{
int index = 0;
nullpo_ret(sd);
@@ -7443,7 +7473,7 @@ int pc_skillup(struct map_session_data *sd,uint16 skill_id)
/*==========================================
* /allskill
*------------------------------------------*/
-int pc_allskillup(struct map_session_data *sd)
+static int pc_allskillup(struct map_session_data *sd)
{
int i;
@@ -7498,7 +7528,7 @@ int pc_allskillup(struct map_session_data *sd)
/*==========================================
* /resetlvl
*------------------------------------------*/
-int pc_resetlvl(struct map_session_data* sd,int type)
+static int pc_resetlvl(struct map_session_data *sd, int type)
{
int i;
@@ -7586,7 +7616,7 @@ int pc_resetlvl(struct map_session_data* sd,int type)
/*==========================================
* /resetstate
*------------------------------------------*/
-int pc_resetstate(struct map_session_data* sd)
+static int pc_resetstate(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -7652,7 +7682,7 @@ int pc_resetstate(struct map_session_data* sd)
* /resetskill
* @param flag: @see enum pc_resetskill_flag
*------------------------------------------*/
-int pc_resetskill(struct map_session_data* sd, int flag)
+static int pc_resetskill(struct map_session_data *sd, int flag)
{
int i, inf2, skill_point=0;
nullpo_ret(sd);
@@ -7764,7 +7794,7 @@ int pc_resetskill(struct map_session_data* sd, int flag)
return skill_point;
}
-bool pc_resetskill_job(struct map_session_data* sd, int index)
+static bool pc_resetskill_job(struct map_session_data *sd, int index)
{
uint16 skill_id;
@@ -7791,7 +7821,7 @@ bool pc_resetskill_job(struct map_session_data* sd, int index)
/*==========================================
* /resetfeel [Komurka]
*------------------------------------------*/
-int pc_resetfeel(struct map_session_data* sd)
+static int pc_resetfeel(struct map_session_data *sd)
{
int i;
nullpo_ret(sd);
@@ -7806,7 +7836,7 @@ int pc_resetfeel(struct map_session_data* sd)
return 0;
}
-int pc_resethate(struct map_session_data* sd)
+static int pc_resethate(struct map_session_data *sd)
{
int i;
nullpo_ret(sd);
@@ -7818,7 +7848,7 @@ int pc_resethate(struct map_session_data* sd)
return 0;
}
-int pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id)
+static int pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id)
{
int i, bonus = 0;
nullpo_ret(sd);
@@ -7832,7 +7862,7 @@ int pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id)
return bonus;
}
-int pc_skillheal_bonus(struct map_session_data *sd, uint16 skill_id)
+static int pc_skillheal_bonus(struct map_session_data *sd, uint16 skill_id)
{
int i, bonus = sd->bonus.add_heal_rate;
@@ -7873,7 +7903,8 @@ int pc_skillheal_bonus(struct map_session_data *sd, uint16 skill_id)
return bonus;
}
-int pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id) {
+static int pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id)
+{
int i, bonus = sd->bonus.add_heal2_rate;
ARR_FIND(0, ARRAYLENGTH(sd->skillheal2), i, sd->skillheal2[i].id == skill_id);
@@ -7884,7 +7915,7 @@ int pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id) {
return bonus;
}
-void pc_respawn(struct map_session_data* sd, clr_type clrtype)
+static void pc_respawn(struct map_session_data *sd, clr_type clrtype)
{
if( !pc_isdead(sd) )
return; // not applicable
@@ -7897,7 +7928,8 @@ void pc_respawn(struct map_session_data* sd, clr_type clrtype)
clif->resurrection(&sd->bl, 1); //If warping fails, send a normal stand up packet.
}
-int pc_respawn_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_respawn_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
if( sd != NULL )
{
@@ -7911,7 +7943,7 @@ int pc_respawn_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Invoked when a player has received damage
*------------------------------------------*/
-void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int hp, unsigned int sp)
+static void pc_damage(struct map_session_data *sd, struct block_list *src, unsigned int hp, unsigned int sp)
{
if (sp) clif->updatestatus(sd,SP_SP);
if (hp) clif->updatestatus(sd,SP_HP);
@@ -7943,7 +7975,8 @@ void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int h
/*==========================================
* Invoked when a player has negative current hp
*------------------------------------------*/
-int pc_dead(struct map_session_data *sd,struct block_list *src) {
+static int pc_dead(struct map_session_data *sd, struct block_list *src)
+{
int i=0,j=0;
int64 tick = timer->gettick();
@@ -8299,12 +8332,13 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) {
return 1;
}
-bool pc_isDeathPenaltyJob(uint16 job)
+static bool pc_isDeathPenaltyJob(uint16 job)
{
return (job & MAPID_UPPERMASK) != MAPID_NOVICE; // only novices will receive no penalty
}
-void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp) {
+static void pc_revive(struct map_session_data *sd, unsigned int hp, unsigned int sp)
+{
nullpo_retv(sd);
if(hp) clif->updatestatus(sd,SP_HP);
if(sp) clif->updatestatus(sd,SP_SP);
@@ -8325,7 +8359,7 @@ void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp) {
/*==========================================
* script reading pc status registry
*------------------------------------------*/
-int64 pc_readparam(const struct map_session_data *sd, int type)
+static int64 pc_readparam(const struct map_session_data *sd, int type)
{
int64 val = 0;
@@ -8478,7 +8512,7 @@ int64 pc_readparam(const struct map_session_data *sd, int type)
/*==========================================
* script set pc status registry
*------------------------------------------*/
-int pc_setparam(struct map_session_data *sd, int type, int64 val)
+static int pc_setparam(struct map_session_data *sd, int type, int64 val)
{
int delta;
nullpo_ret(sd);
@@ -8655,7 +8689,7 @@ int pc_setparam(struct map_session_data *sd, int type, int64 val)
/*==========================================
* HP/SP Healing. If flag is passed, the heal type is through clif->heal, otherwise update status.
*------------------------------------------*/
-void pc_heal(struct map_session_data *sd,unsigned int hp,unsigned int sp, int type)
+static void pc_heal(struct map_session_data *sd, unsigned int hp, unsigned int sp, int type)
{
nullpo_retv(sd);
if (type) {
@@ -8677,7 +8711,7 @@ void pc_heal(struct map_session_data *sd,unsigned int hp,unsigned int sp, int ty
* Heal player hp and/or sp linearly.
* Calculate bonus by status.
*------------------------------------------*/
-int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
+static int pc_itemheal(struct map_session_data *sd, int itemid, int hp, int sp)
{
int bonus, tmp;
@@ -8760,7 +8794,7 @@ int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
* HP/SP Recovery
* Heal player hp nad/or sp by rate
*------------------------------------------*/
-int pc_percentheal(struct map_session_data *sd,int hp,int sp)
+static int pc_percentheal(struct map_session_data *sd, int hp, int sp)
{
nullpo_ret(sd);
@@ -8795,7 +8829,7 @@ int pc_percentheal(struct map_session_data *sd,int hp,int sp)
return 0;
}
-int jobchange_killclone(struct block_list *bl, va_list ap)
+static int jobchange_killclone(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
int flag = va_arg(ap, int);
@@ -8813,7 +8847,7 @@ int jobchange_killclone(struct block_list *bl, va_list ap)
* Called when player changes job
* Rewrote to make it tidider [Celest]
*------------------------------------------*/
-int pc_jobchange(struct map_session_data *sd, int class, int upper)
+static int pc_jobchange(struct map_session_data *sd, int class, int upper)
{
int i, fame_flag=0;
int job, idx = 0;
@@ -9009,7 +9043,7 @@ int pc_jobchange(struct map_session_data *sd, int class, int upper)
/*==========================================
* Tell client player sd has change equipement
*------------------------------------------*/
-int pc_equiplookall(struct map_session_data *sd)
+static int pc_equiplookall(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -9026,7 +9060,7 @@ int pc_equiplookall(struct map_session_data *sd)
/*==========================================
* Tell client player sd has change look (hair,equip...)
*------------------------------------------*/
-int pc_changelook(struct map_session_data *sd,int type,int val)
+static int pc_changelook(struct map_session_data *sd, int type, int val)
{
nullpo_ret(sd);
@@ -9099,7 +9133,7 @@ int pc_changelook(struct map_session_data *sd,int type,int val)
/*==========================================
* Give an option (type) to player (sd) and display it to client
*------------------------------------------*/
-int pc_setoption(struct map_session_data *sd,int type)
+static int pc_setoption(struct map_session_data *sd, int type)
{
int p_type, new_look=0;
nullpo_ret(sd);
@@ -9197,7 +9231,8 @@ int pc_setoption(struct map_session_data *sd,int type)
/*==========================================
* Give player a cart
*------------------------------------------*/
-int pc_setcart(struct map_session_data *sd,int type) {
+static int pc_setcart(struct map_session_data *sd, int type)
+{
#ifndef NEW_CARTS
int cart[6] = {OPTION_NOTHING,OPTION_CART1,OPTION_CART2,OPTION_CART3,OPTION_CART4,OPTION_CART5};
int option;
@@ -9260,7 +9295,7 @@ int pc_setcart(struct map_session_data *sd,int type) {
* @param sd Target player.
* @param flag New state.
**/
-void pc_setfalcon(struct map_session_data *sd, bool flag)
+static void pc_setfalcon(struct map_session_data *sd, bool flag)
{
nullpo_retv(sd);
if (flag) {
@@ -9279,7 +9314,7 @@ void pc_setfalcon(struct map_session_data *sd, bool flag)
* @param sd Target player.
* @param flag New state.
**/
-void pc_setridingpeco(struct map_session_data *sd, bool flag)
+static void pc_setridingpeco(struct map_session_data *sd, bool flag)
{
nullpo_retv(sd);
if (flag) {
@@ -9298,7 +9333,7 @@ void pc_setridingpeco(struct map_session_data *sd, bool flag)
* @param sd Target player.
* @param flag New state.
**/
-void pc_setmadogear(struct map_session_data *sd, bool flag)
+static void pc_setmadogear(struct map_session_data *sd, bool flag)
{
nullpo_retv(sd);
if (flag) {
@@ -9317,7 +9352,7 @@ void pc_setmadogear(struct map_session_data *sd, bool flag)
* @param sd Target player.
* @param type New state. This must be a valid OPTION_DRAGON* or 0.
**/
-void pc_setridingdragon(struct map_session_data *sd, unsigned int type)
+static void pc_setridingdragon(struct map_session_data *sd, unsigned int type)
{
nullpo_retv(sd);
if (type&OPTION_DRAGON) {
@@ -9350,7 +9385,7 @@ void pc_setridingdragon(struct map_session_data *sd, unsigned int type)
* @param sd Target player.
* @param flag New state.
**/
-void pc_setridingwug(struct map_session_data *sd, bool flag)
+static void pc_setridingwug(struct map_session_data *sd, bool flag)
{
nullpo_retv(sd);
if (flag) {
@@ -9369,7 +9404,8 @@ void pc_setridingwug(struct map_session_data *sd, bool flag)
* Called from unit_attack and unit_attack_timer_sub
* @retval true Can attack
**/
-bool pc_can_attack( struct map_session_data *sd, int target_id ) {
+static bool pc_can_attack(struct map_session_data *sd, int target_id)
+{
nullpo_retr(false, sd);
if( sd->sc.data[SC_BASILICA] ||
@@ -9395,7 +9431,8 @@ bool pc_can_attack( struct map_session_data *sd, int target_id ) {
* Called from clif_parse_GlobalMessage and clif_parse_WisMessage
* @retval true Can talk
**/
-bool pc_can_talk( struct map_session_data *sd ) {
+static bool pc_can_talk(struct map_session_data *sd)
+{
nullpo_retr(false, sd);
if( sd->sc.data[SC_BERSERK] ||
@@ -9410,7 +9447,7 @@ bool pc_can_talk( struct map_session_data *sd ) {
/*==========================================
* Check if player can drop an item
*------------------------------------------*/
-int pc_candrop(struct map_session_data *sd, struct item *item)
+static int pc_candrop(struct map_session_data *sd, struct item *item)
{
if( item && (item->expire_time || (item->bound && !pc_can_give_bound_items(sd))) )
return 0;
@@ -9421,14 +9458,16 @@ int pc_candrop(struct map_session_data *sd, struct item *item)
/**
* For '@type' variables (temporary numeric char reg)
**/
-int pc_readreg(struct map_session_data* sd, int64 reg) {
+static int pc_readreg(struct map_session_data *sd, int64 reg)
+{
nullpo_ret(sd);
return i64db_iget(sd->regs.vars, reg);
}
/**
* For '@type' variables (temporary numeric char reg)
**/
-void pc_setreg(struct map_session_data* sd, int64 reg, int val) {
+static void pc_setreg(struct map_session_data *sd, int64 reg, int val)
+{
unsigned int index = script_getvaridx(reg);
nullpo_retv(sd);
@@ -9446,7 +9485,8 @@ void pc_setreg(struct map_session_data* sd, int64 reg, int val) {
/**
* For '@type$' variables (temporary string char reg)
**/
-char* pc_readregstr(struct map_session_data* sd, int64 reg) {
+static char *pc_readregstr(struct map_session_data *sd, int64 reg)
+{
struct script_reg_str *p = NULL;
nullpo_retr(NULL, sd);
@@ -9457,7 +9497,8 @@ char* pc_readregstr(struct map_session_data* sd, int64 reg) {
/**
* For '@type$' variables (temporary string char reg)
**/
-void pc_setregstr(struct map_session_data* sd, int64 reg, const char* str) {
+static void pc_setregstr(struct map_session_data *sd, int64 reg, const char *str)
+{
struct script_reg_str *p = NULL;
unsigned int index = script_getvaridx(reg);
struct DBData prev;
@@ -9496,7 +9537,8 @@ void pc_setregstr(struct map_session_data* sd, int64 reg, const char* str) {
* - '#type' (permanent numeric account reg)
* - '##type' (permanent numeric account reg2)
**/
-int pc_readregistry(struct map_session_data *sd, int64 reg) {
+static int pc_readregistry(struct map_session_data *sd, int64 reg)
+{
struct script_reg_num *p = NULL;
nullpo_ret(sd);
@@ -9518,7 +9560,8 @@ int pc_readregistry(struct map_session_data *sd, int64 reg) {
* - '#type$' (permanent str account reg)
* - '##type$' (permanent str account reg2)
**/
-char* pc_readregistry_str(struct map_session_data *sd, int64 reg) {
+static char *pc_readregistry_str(struct map_session_data *sd, int64 reg)
+{
struct script_reg_str *p = NULL;
nullpo_retr(NULL, sd);
@@ -9540,7 +9583,8 @@ char* pc_readregistry_str(struct map_session_data *sd, int64 reg) {
* - '#type' (permanent numeric account reg)
* - '##type' (permanent numeric account reg2)
**/
-int pc_setregistry(struct map_session_data *sd, int64 reg, int val) {
+static int pc_setregistry(struct map_session_data *sd, int64 reg, int val)
+{
struct script_reg_num *p = NULL;
const char *regname = script->get_str( script_getvarid(reg) );
unsigned int index = script_getvaridx(reg);
@@ -9616,7 +9660,8 @@ int pc_setregistry(struct map_session_data *sd, int64 reg, int val) {
* - '#type$' (permanent str account reg)
* - '##type$' (permanent str account reg2)
**/
-int pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *val) {
+static int pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *val)
+{
struct script_reg_str *p = NULL;
const char *regname = script->get_str( script_getvarid(reg) );
unsigned int index = script_getvaridx(reg);
@@ -9672,7 +9717,8 @@ int pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *val)
/*==========================================
* Exec eventtimer for player sd (retrieved from map_session (id))
*------------------------------------------*/
-int pc_eventtimer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_eventtimer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd=map->id2sd(id);
char *p = (char *)data;
int i;
@@ -9696,7 +9742,7 @@ int pc_eventtimer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Add eventtimer for player sd ?
*------------------------------------------*/
-int pc_addeventtimer(struct map_session_data *sd,int tick,const char *name)
+static int pc_addeventtimer(struct map_session_data *sd, int tick, const char *name)
{
int i;
nullpo_ret(sd);
@@ -9715,7 +9761,7 @@ int pc_addeventtimer(struct map_session_data *sd,int tick,const char *name)
/*==========================================
* Del eventtimer for player sd ?
*------------------------------------------*/
-int pc_deleventtimer(struct map_session_data *sd,const char *name)
+static int pc_deleventtimer(struct map_session_data *sd, const char *name)
{
char* p = NULL;
int i;
@@ -9746,7 +9792,7 @@ int pc_deleventtimer(struct map_session_data *sd,const char *name)
/*==========================================
* Update eventtimer count for player sd
*------------------------------------------*/
-int pc_addeventtimercount(struct map_session_data *sd,const char *name,int tick)
+static int pc_addeventtimercount(struct map_session_data *sd, const char *name, int tick)
{
int i;
@@ -9765,7 +9811,7 @@ int pc_addeventtimercount(struct map_session_data *sd,const char *name,int tick)
/*==========================================
* Remove all eventtimer for player sd
*------------------------------------------*/
-int pc_cleareventtimer(struct map_session_data *sd)
+static int pc_cleareventtimer(struct map_session_data *sd)
{
int i;
@@ -9785,7 +9831,8 @@ int pc_cleareventtimer(struct map_session_data *sd)
return 0;
}
/* called when a item with combo is worn */
-int pc_checkcombo(struct map_session_data *sd, struct item_data *data ) {
+static int pc_checkcombo(struct map_session_data *sd, struct item_data *data)
+{
int i, j, k, z;
int index, success = 0;
struct pc_combos *combo;
@@ -9864,7 +9911,8 @@ int pc_checkcombo(struct map_session_data *sd, struct item_data *data ) {
}
/* called when a item with combo is removed */
-int pc_removecombo(struct map_session_data *sd, struct item_data *data ) {
+static int pc_removecombo(struct map_session_data *sd, struct item_data *data)
+{
int i, retval = 0;
nullpo_ret(sd);
@@ -9911,7 +9959,8 @@ int pc_removecombo(struct map_session_data *sd, struct item_data *data ) {
return retval;
}
-int pc_load_combo(struct map_session_data *sd) {
+static int pc_load_combo(struct map_session_data *sd)
+{
int i, ret = 0;
nullpo_ret(sd);
for( i = 0; i < EQI_MAX; i++ ) {
@@ -9938,13 +9987,13 @@ int pc_load_combo(struct map_session_data *sd) {
}
/**
-* Equip item at given position.
-* @param sd the affected player structure. Must be checked before.
-* @param id item structure for equip. Must be checked before.
-* @param n inventory item position. Must be checked before.
-* @param pos slot position. Must be checked before.
-**/
-void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int n, int pos)
+ * Equip item at given position.
+ * @param sd the affected player structure. Must be checked before.
+ * @param id item structure for equip. Must be checked before.
+ * @param n inventory item position. Must be checked before.
+ * @param pos slot position. Must be checked before.
+ */
+static void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int n, int pos)
{
nullpo_retv(sd);
if ((!map_no_view(sd->bl.m,EQP_SHADOW_WEAPON) && pos & EQP_SHADOW_WEAPON) ||
@@ -10043,7 +10092,7 @@ void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int n,
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_equipitem(struct map_session_data *sd,int n,int req_pos)
+static int pc_equipitem(struct map_session_data *sd, int n, int req_pos)
{
int i,pos,flag=0,iflag;
struct item_data *id;
@@ -10178,12 +10227,12 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos)
}
/**
-* Unequip an item at the given position.
-* @param sd the affected player structure. Must be checked before.
-* @param n inventory item position. Must be checked before.
-* @param pos slot position. Must be checked before.
-**/
-void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos)
+ * Unequip an item at the given position.
+ * @param sd the affected player structure. Must be checked before.
+ * @param n inventory item position. Must be checked before.
+ * @param pos slot position. Must be checked before.
+ */
+static void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos)
{
nullpo_retv(sd);
if (pos & EQP_HAND_R) {
@@ -10250,7 +10299,7 @@ void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos)
* 0 = fail
* 1 = success
*------------------------------------------*/
-int pc_unequipitem(struct map_session_data *sd,int n,int flag)
+static int pc_unequipitem(struct map_session_data *sd, int n, int flag)
{
int i, iflag;
bool status_calc = false;
@@ -10397,7 +10446,7 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag)
* Checking if player (sd) have unauthorize, invalide item
* on inventory, cart, equiped for the map (item_noequip)
*------------------------------------------*/
-int pc_checkitem(struct map_session_data *sd)
+static int pc_checkitem(struct map_session_data *sd)
{
int i, calc_flag = 0;
@@ -10541,7 +10590,7 @@ int pc_checkitem(struct map_session_data *sd)
/*==========================================
* Update PVP rank for sd1 in cmp to sd2
*------------------------------------------*/
-int pc_calc_pvprank_sub(struct block_list *bl, va_list ap)
+static int pc_calc_pvprank_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd1 = NULL;
struct map_session_data *sd2 = va_arg(ap,struct map_session_data *);
@@ -10564,7 +10613,8 @@ int pc_calc_pvprank_sub(struct block_list *bl, va_list ap)
* Calculate new rank beetween all present players (map->foreachinarea)
* and display result
*------------------------------------------*/
-int pc_calc_pvprank(struct map_session_data *sd) {
+static int pc_calc_pvprank(struct map_session_data *sd)
+{
int old;
struct map_data *m;
nullpo_ret(sd);
@@ -10579,7 +10629,8 @@ int pc_calc_pvprank(struct map_session_data *sd) {
/*==========================================
* Calculate next sd ranking calculation from config
*------------------------------------------*/
-int pc_calc_pvprank_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_calc_pvprank_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
sd=map->id2sd(id);
@@ -10603,7 +10654,7 @@ int pc_calc_pvprank_timer(int tid, int64 tick, int id, intptr_t data) {
* partner_id = yes
* 0 = no
*------------------------------------------*/
-int pc_ismarried(struct map_session_data *sd)
+static int pc_ismarried(struct map_session_data *sd)
{
if(sd == NULL)
return -1;
@@ -10618,7 +10669,7 @@ int pc_ismarried(struct map_session_data *sd)
* -1 = fail
* 0 = success
*------------------------------------------*/
-int pc_marriage(struct map_session_data *sd,struct map_session_data *dstsd)
+static int pc_marriage(struct map_session_data *sd, struct map_session_data *dstsd)
{
if(sd == NULL || dstsd == NULL ||
sd->status.partner_id > 0 || dstsd->status.partner_id > 0 ||
@@ -10635,7 +10686,7 @@ int pc_marriage(struct map_session_data *sd,struct map_session_data *dstsd)
* -1 = fail
* 0 = success
*------------------------------------------*/
-int pc_divorce(struct map_session_data *sd)
+static int pc_divorce(struct map_session_data *sd)
{
struct map_session_data *p_sd;
int i;
@@ -10674,7 +10725,8 @@ int pc_divorce(struct map_session_data *sd)
/*==========================================
* Get sd partner charid. (Married partner)
*------------------------------------------*/
-struct map_session_data *pc_get_partner(struct map_session_data *sd) {
+static struct map_session_data *pc_get_partner(struct map_session_data *sd)
+{
if (sd && pc->ismarried(sd))
// charid2sd returns NULL if not found
return map->charid2sd(sd->status.partner_id);
@@ -10685,7 +10737,8 @@ struct map_session_data *pc_get_partner(struct map_session_data *sd) {
/*==========================================
* Get sd father charid. (Need to be baby)
*------------------------------------------*/
-struct map_session_data *pc_get_father(struct map_session_data *sd) {
+static struct map_session_data *pc_get_father(struct map_session_data *sd)
+{
if (sd && (sd->job & JOBL_BABY) != 0 && sd->status.father > 0)
// charid2sd returns NULL if not found
return map->charid2sd(sd->status.father);
@@ -10696,7 +10749,8 @@ struct map_session_data *pc_get_father(struct map_session_data *sd) {
/*==========================================
* Get sd mother charid. (Need to be baby)
*------------------------------------------*/
-struct map_session_data *pc_get_mother(struct map_session_data *sd) {
+static struct map_session_data *pc_get_mother(struct map_session_data *sd)
+{
if (sd && (sd->job & JOBL_BABY) != 0 && sd->status.mother > 0)
// charid2sd returns NULL if not found
return map->charid2sd(sd->status.mother);
@@ -10707,7 +10761,8 @@ struct map_session_data *pc_get_mother(struct map_session_data *sd) {
/*==========================================
* Get sd children charid. (Need to be married)
*------------------------------------------*/
-struct map_session_data *pc_get_child(struct map_session_data *sd) {
+static struct map_session_data *pc_get_child(struct map_session_data *sd)
+{
if (sd && pc->ismarried(sd) && sd->status.child > 0)
// charid2sd returns NULL if not found
return map->charid2sd(sd->status.child);
@@ -10718,7 +10773,7 @@ struct map_session_data *pc_get_child(struct map_session_data *sd) {
/*==========================================
* Set player sd to bleed. (losing hp and/or sp each diff_tick)
*------------------------------------------*/
-void pc_bleeding (struct map_session_data *sd, unsigned int diff_tick)
+static void pc_bleeding(struct map_session_data *sd, unsigned int diff_tick)
{
int hp = 0, sp = 0;
@@ -10753,7 +10808,8 @@ void pc_bleeding (struct map_session_data *sd, unsigned int diff_tick)
//Character regen. Flag is used to know which types of regen can take place.
//&1: HP regen
//&2: SP regen
-void pc_regen (struct map_session_data *sd, unsigned int diff_tick) {
+static void pc_regen(struct map_session_data *sd, unsigned int diff_tick)
+{
int hp = 0, sp = 0;
nullpo_retv(sd);
@@ -10782,7 +10838,8 @@ void pc_regen (struct map_session_data *sd, unsigned int diff_tick) {
/*==========================================
* Memo player sd savepoint. (map,x,y)
*------------------------------------------*/
-int pc_setsavepoint(struct map_session_data *sd, short map_index, int x, int y) {
+static int pc_setsavepoint(struct map_session_data *sd, short map_index, int x, int y)
+{
nullpo_ret(sd);
sd->status.save_point.map = map_index;
@@ -10795,7 +10852,8 @@ int pc_setsavepoint(struct map_session_data *sd, short map_index, int x, int y)
/*==========================================
* Save 1 player data at autosave intervall
*------------------------------------------*/
-int pc_autosave(int tid, int64 tick, int id, intptr_t data) {
+static int pc_autosave(int tid, int64 tick, int id, intptr_t data)
+{
int interval;
struct s_mapiterator* iter;
struct map_session_data* sd;
@@ -10833,7 +10891,8 @@ int pc_autosave(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int pc_daynight_timer_sub(struct map_session_data *sd,va_list ap) {
+static int pc_daynight_timer_sub(struct map_session_data *sd, va_list ap)
+{
nullpo_ret(sd);
if (sd->state.night != map->night_flag && map->list[sd->bl.m].flag.nightenabled) { //Night/day state does not match.
clif->status_change(&sd->bl, SI_SKE, map->night_flag, 0, 0, 0, 0); //New night effect by dynamix [Skotlex]
@@ -10846,7 +10905,8 @@ int pc_daynight_timer_sub(struct map_session_data *sd,va_list ap) {
* timer to do the day [Yor]
* data: 0 = called by timer, 1 = gmcommand/script
*------------------------------------------------*/
-int map_day_timer(int tid, int64 tick, int id, intptr_t data) {
+static int map_day_timer(int tid, int64 tick, int id, intptr_t data)
+{
char tmp_soutput[1024];
if (data == 0 && battle_config.day_duration <= 0) // if we want a day
@@ -10866,7 +10926,8 @@ int map_day_timer(int tid, int64 tick, int id, intptr_t data) {
* timer to do the night [Yor]
* data: 0 = called by timer, 1 = gmcommand/script
*------------------------------------------------*/
-int map_night_timer(int tid, int64 tick, int id, intptr_t data) {
+static int map_night_timer(int tid, int64 tick, int id, intptr_t data)
+{
char tmp_soutput[1024];
if (data == 0 && battle_config.night_duration <= 0) // if we want a night
@@ -10882,7 +10943,8 @@ int map_night_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void pc_setstand(struct map_session_data *sd) {
+static void pc_setstand(struct map_session_data *sd)
+{
nullpo_retv(sd);
status_change_end(&sd->bl, SC_TENSIONRELAX, INVALID_TIMER);
@@ -10895,7 +10957,8 @@ void pc_setstand(struct map_session_data *sd) {
/**
* Mechanic (MADO GEAR)
**/
-void pc_overheat(struct map_session_data *sd, int val) {
+static void pc_overheat(struct map_session_data *sd, int val)
+{
int heat = val, skill_lv,
limit[] = { 10, 20, 28, 46, 66 };
@@ -10921,7 +10984,7 @@ void pc_overheat(struct map_session_data *sd, int val) {
/**
* Check if player is autolooting given itemID.
*/
-bool pc_isautolooting(struct map_session_data *sd, int nameid)
+static bool pc_isautolooting(struct map_session_data *sd, int nameid)
{
int i = 0;
@@ -10942,7 +11005,8 @@ bool pc_isautolooting(struct map_session_data *sd, int nameid)
* @param sd Player map session data
* @param command Command name with @/# and without params
*/
-bool pc_can_use_command(struct map_session_data *sd, const char *command) {
+static bool pc_can_use_command(struct map_session_data *sd, const char *command)
+{
return atcommand->can_use(sd,command);
}
@@ -10951,7 +11015,7 @@ bool pc_can_use_command(struct map_session_data *sd, const char *command) {
*
* @see TimerFunc
*/
-int pc_charm_timer(int tid, int64 tick, int id, intptr_t data)
+static int pc_charm_timer(int tid, int64 tick, int id, intptr_t data)
{
struct map_session_data *sd = map->id2sd(id);
int i;
@@ -10992,7 +11056,7 @@ int pc_charm_timer(int tid, int64 tick, int id, intptr_t data)
* @param max Maximum amount of charms to add.
* @param type Charm type (@see spirit_charm_types)
*/
-void pc_add_charm(struct map_session_data *sd, int interval, int max, int type)
+static void pc_add_charm(struct map_session_data *sd, int interval, int max, int type)
{
int tid, i;
@@ -11034,7 +11098,7 @@ void pc_add_charm(struct map_session_data *sd, int interval, int max, int type)
* @param count Amount of charms to remove.
* @param type Type of charm to remove.
*/
-void pc_del_charm(struct map_session_data *sd, int count, int type)
+static void pc_del_charm(struct map_session_data *sd, int count, int type)
{
int i;
@@ -11081,7 +11145,7 @@ void pc_del_charm(struct map_session_data *sd, int count, int type)
* @param type Modifier type (1=exp 2=itemdrop)
* @return The percent rate modifier (100 = 100%)
*/
-int pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type)
+static int pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type)
{
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
int rate = 100, i;
@@ -11111,7 +11175,7 @@ int pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type)
#endif
}
-bool pc_read_skill_job_skip(short skill_id, int job_id)
+static bool pc_read_skill_job_skip(short skill_id, int job_id)
{
return skill_id == NV_TRICKDEAD && ((pc->jobid2mapid(job_id) & (MAPID_BASEMASK | JOBL_2)) != MAPID_NOVICE); // skip trickdead for non-novices
}
@@ -11129,7 +11193,7 @@ bool pc_read_skill_job_skip(short skill_id, int job_id)
*
* @author [Ind/Hercules]
*/
-void pc_read_skill_tree(void)
+static void pc_read_skill_tree(void)
{
struct config_t skill_tree_conf;
struct config_setting_t *skt = NULL;
@@ -11326,7 +11390,7 @@ void pc_read_skill_tree(void)
/**
* Clears the skill tree and frees any allocated memory.
*/
-void pc_clear_skill_tree(void)
+static void pc_clear_skill_tree(void)
{
int i;
for (i = 0; i < CLASS_COUNT; i++) {
@@ -11340,7 +11404,8 @@ void pc_clear_skill_tree(void)
memset(pc->skill_tree, 0, sizeof(pc->skill_tree));
}
-bool pc_readdb_levelpenalty(char* fields[], int columns, int current) {
+static bool pc_readdb_levelpenalty(char *fields[], int columns, int current)
+{
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
int type, race, diff;
@@ -11369,7 +11434,7 @@ bool pc_readdb_levelpenalty(char* fields[], int columns, int current) {
return true;
}
-bool pc_read_exp_db_sub_class(struct config_setting_t *t, bool base)
+static bool pc_read_exp_db_sub_class(struct config_setting_t *t, bool base)
{
struct class_exp_group entry = { { 0 } };
struct config_setting_t *exp_t = NULL;
@@ -11416,12 +11481,12 @@ bool pc_read_exp_db_sub_class(struct config_setting_t *t, bool base)
}
/**
- * Description: Helper function to read a root configuration in the exp_db.conf file.
+ * Description: Helper function to read a root configuration in the exp_group_db.conf file.
* @param[in] t pointer to the root config setting
* @param[in] base boolean switch determining whether to read either base or job exp.
* @return total number of valid entries read from the setting.
*/
-int pc_read_exp_db_sub(struct config_setting_t *t, bool base)
+static int pc_read_exp_db_sub(struct config_setting_t *t, bool base)
{
int i = 0, entry_count = 0;
struct config_setting_t *tt = NULL;
@@ -11440,7 +11505,7 @@ int pc_read_exp_db_sub(struct config_setting_t *t, bool base)
* Description: Initiates reading of the exp_group_db.conf.
* @return true success, false on failure.
*/
-bool pc_read_exp_db(void)
+static bool pc_read_exp_db(void)
{
struct config_t exp_db_conf;
struct config_setting_t *edb = NULL;
@@ -11479,12 +11544,13 @@ bool pc_read_exp_db(void)
}
/*==========================================
- * pc DB reading.
- * exp.txt - required experience values
- * skill_tree.txt - skill tree for every class
- * attr_fix.txt - elemental adjustment table
+ * PC DB reading.
+ * exp_group_db.conf - required experience values
+ * skill_tree.txt - skill tree for every class
+ * attr_fix.txt - elemental adjustment table
*------------------------------------------*/
-int pc_readdb(void) {
+static int pc_readdb(void)
+{
int i,j,k;
unsigned int count = 0;
FILE *fp;
@@ -11609,7 +11675,7 @@ int pc_readdb(void) {
return 0;
}
-bool pc_job_is_dummy(int job)
+static bool pc_job_is_dummy(int job)
{
if (job == JOB_KNIGHT2 || job == JOB_CRUSADER2
|| job == JOB_WEDDING || job == JOB_XMAS || job == JOB_SUMMER
@@ -11622,7 +11688,8 @@ bool pc_job_is_dummy(int job)
return false;
}
-void pc_validate_levels(void) {
+static void pc_validate_levels(void)
+{
int i;
int j;
for (i = 0; i < JOB_MAX; i++) {
@@ -11637,7 +11704,8 @@ void pc_validate_levels(void) {
}
}
-void pc_itemcd_do(struct map_session_data *sd, bool load) {
+static void pc_itemcd_do(struct map_session_data *sd, bool load)
+{
int i,cursor = 0;
struct item_cd* cd = NULL;
@@ -11672,7 +11740,8 @@ void pc_itemcd_do(struct map_session_data *sd, bool load) {
return;
}
-void pc_bank_deposit(struct map_session_data *sd, int money) {
+static void pc_bank_deposit(struct map_session_data *sd, int money)
+{
unsigned int limit_check;
nullpo_retv(sd);
@@ -11695,7 +11764,8 @@ void pc_bank_deposit(struct map_session_data *sd, int money) {
clif->bank_deposit(sd,BDA_SUCCESS);
}
}
-void pc_bank_withdraw(struct map_session_data *sd, int money) {
+static void pc_bank_withdraw(struct map_session_data *sd, int money)
+{
unsigned int limit_check;
nullpo_retv(sd);
@@ -11722,7 +11792,8 @@ void pc_bank_withdraw(struct map_session_data *sd, int money) {
}
}
/* status change data arrived from char-server */
-void pc_scdata_received(struct map_session_data *sd) {
+static void pc_scdata_received(struct map_session_data *sd)
+{
nullpo_retv(sd);
pc->inventory_rentals(sd);
clif->show_modifiers(sd);
@@ -11742,7 +11813,8 @@ void pc_scdata_received(struct map_session_data *sd) {
pc->autotrade_start(sd);
}
}
-int pc_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_expiration_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd = map->id2sd(id);
if( !sd ) return 0;
@@ -11758,7 +11830,8 @@ int pc_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
}
/* This timer exists only when a character with an expire timer > 24h is online */
/* It loops through online players once an hour to check whether a new < 24h is available */
-int pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct s_mapiterator* iter;
struct map_session_data* sd;
@@ -11771,7 +11844,8 @@ int pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void pc_expire_check(struct map_session_data *sd) {
+static void pc_expire_check(struct map_session_data *sd)
+{
nullpo_retv(sd);
/* ongoing timer */
if( sd->expiration_tid != INVALID_TIMER )
@@ -11792,7 +11866,7 @@ void pc_expire_check(struct map_session_data *sd) {
/**
* Loads autotraders
***/
-void pc_autotrade_load(void)
+static void pc_autotrade_load(void)
{
char *data;
@@ -11825,7 +11899,8 @@ void pc_autotrade_load(void)
/**
* Loads vending data and sets it up, is triggered when char server data that pc_autotrade_load requested arrives
**/
-void pc_autotrade_start(struct map_session_data *sd) {
+static void pc_autotrade_start(struct map_session_data *sd)
+{
unsigned int count = 0;
int i;
char *data;
@@ -11872,7 +11947,8 @@ void pc_autotrade_start(struct map_session_data *sd) {
/**
* Perform a autotrade action
**/
-void pc_autotrade_update(struct map_session_data *sd, enum e_pc_autotrade_update_action action) {
+static void pc_autotrade_update(struct map_session_data *sd, enum e_pc_autotrade_update_action action)
+{
int i;
nullpo_retv(sd);
@@ -11922,7 +11998,8 @@ void pc_autotrade_update(struct map_session_data *sd, enum e_pc_autotrade_update
/**
* Handles characters upon @autotrade usage
**/
-void pc_autotrade_prepare(struct map_session_data *sd) {
+static void pc_autotrade_prepare(struct map_session_data *sd)
+{
struct autotrade_vending *data;
int i, cursor = 0;
int account_id, char_id;
@@ -11972,7 +12049,8 @@ void pc_autotrade_prepare(struct map_session_data *sd) {
/**
* Prepares autotrade data from pc->at_db from a player that has already returned from char server
**/
-void pc_autotrade_populate(struct map_session_data *sd) {
+static void pc_autotrade_populate(struct map_session_data *sd)
+{
struct autotrade_vending *data;
int i, j, k, cursor = 0;
@@ -12016,7 +12094,7 @@ void pc_autotrade_populate(struct map_session_data *sd) {
/**
* @see DBApply
*/
-int pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap)
+static int pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap)
{
struct autotrade_vending* at_v = DB->data2ptr(data);
nullpo_ret(at_v);
@@ -12024,7 +12102,7 @@ int pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void pc_update_idle_time(struct map_session_data* sd, enum e_battle_config_idletime type)
+static void pc_update_idle_time(struct map_session_data *sd, enum e_battle_config_idletime type)
{
nullpo_retv(sd);
if (battle_config.idletime_criteria&type)
@@ -12033,7 +12111,7 @@ void pc_update_idle_time(struct map_session_data* sd, enum e_battle_config_idlet
//Checks if the given class value corresponds to a player class. [Skotlex]
//JOB_NOVICE isn't checked for class is supposed to be unsigned
-bool pc_db_checkid(int class)
+static bool pc_db_checkid(int class)
{
return class < JOB_MAX_BASIC
|| (class >= JOB_NOVICE_HIGH && class <= JOB_DARK_COLLECTOR )
@@ -12050,7 +12128,7 @@ bool pc_db_checkid(int class)
* @param sd map_session_data of Player
* @return index of magnifer, INDEX_NOT_FOUND if it is not found
*/
-int pc_have_magnifier(struct map_session_data *sd)
+static int pc_have_magnifier(struct map_session_data *sd)
{
int n;
n = pc->search_inventory(sd, ITEMID_SPECTACLES);
@@ -12065,7 +12143,8 @@ int pc_have_magnifier(struct map_session_data *sd)
* @param level Required Level of Novice Skill
* @return bool true, if requirement is satisfied
*/
-bool pc_check_basicskill(struct map_session_data *sd, int level) {
+static bool pc_check_basicskill(struct map_session_data *sd, int level)
+{
if (pc->checkskill(sd, NV_BASIC) >= level || pc->checkskill(sd, SU_BASIC_SKILL))
return true;
return false;
@@ -12079,7 +12158,7 @@ bool pc_check_basicskill(struct map_session_data *sd, int level) {
* @param message The message text.
* @return Whether the message is a valid chat message.
*/
-bool pc_process_chat_message(struct map_session_data *sd, const char *message)
+static bool pc_process_chat_message(struct map_session_data *sd, const char *message)
{
nullpo_retr(false, sd);
if (atcommand->exec(sd->fd, sd, message, true)) {
@@ -12111,7 +12190,7 @@ bool pc_process_chat_message(struct map_session_data *sd, const char *message)
* @param sd The sender character.
* @param message The message text.
*/
-void pc_check_supernovice_call(struct map_session_data *sd, const char *message)
+static void pc_check_supernovice_call(struct map_session_data *sd, const char *message)
{
uint64 next = pc->nextbaseexp(sd);
int percent = 0;
@@ -12155,7 +12234,7 @@ void pc_check_supernovice_call(struct map_session_data *sd, const char *message)
}
}
-void pc_update_job_and_level(struct map_session_data *sd)
+static void pc_update_job_and_level(struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -12173,7 +12252,7 @@ void pc_update_job_and_level(struct map_session_data *sd)
}
}
-void pc_clear_exp_groups(void)
+static void pc_clear_exp_groups(void)
{
int i, k, size;
for (k = 0; k < 2; k++) {
@@ -12185,7 +12264,7 @@ void pc_clear_exp_groups(void)
}
}
-void pc_init_exp_groups(void)
+static void pc_init_exp_groups(void)
{
int i;
for (i = 0; i < 2; i++) {
@@ -12193,7 +12272,7 @@ void pc_init_exp_groups(void)
}
}
-void do_final_pc(void)
+static void do_final_pc(void)
{
db_destroy(pc->itemcd_db);
@@ -12212,7 +12291,8 @@ void do_final_pc(void)
return;
}
-void do_init_pc(bool minimal) {
+static void do_init_pc(bool minimal)
+{
if (minimal)
return;
@@ -12260,12 +12340,14 @@ void do_init_pc(bool minimal) {
ers_chunk_size(pc->num_reg_ers, 300);
ers_chunk_size(pc->str_reg_ers, 50);
}
+
/*=====================================
-* Default Functions : pc.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
-void pc_defaults(void) {
+ * Default Functions : pc.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
+void pc_defaults(void)
+{
const struct sg_data sg_info[MAX_PC_FEELHATE] = {
{ SG_SUN_ANGER, SG_SUN_BLESS, SG_SUN_COMFORT, "PC_FEEL_SUN", "PC_HATE_MOB_SUN", is_day_of_sun },
{ SG_MOON_ANGER, SG_MOON_BLESS, SG_MOON_COMFORT, "PC_FEEL_MOON", "PC_HATE_MOB_MOON", is_day_of_moon },
diff --git a/src/map/pc.h b/src/map/pc.h
index f998c799d..622dcf3f7 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -132,7 +132,8 @@ BEGIN_ZEROED_BLOCK; // all the variables within this block get zero'ed in each c
END_ZEROED_BLOCK;
};
struct s_autospell {
- short id, lv, rate, card_id, flag;
+ short id, lv, rate, flag;
+ int card_id;
bool lock; // bAutoSpellOnSkill: blocks autospell from triggering again, while being executed
};
/// AddEff bonus data
@@ -150,7 +151,8 @@ struct s_addeffectonskill {
unsigned char target;
};
struct s_add_drop {
- short id, group;
+ int id;
+ short group;
int race, rate;
};
struct s_autobonus {
@@ -168,7 +170,7 @@ enum npc_timeout_type {
struct pc_combos {
struct script_code *bonus;/* the script of the combo */
- unsigned short id;/* this combo id */
+ int id; /* this combo id */
};
struct map_session_data {
@@ -218,7 +220,7 @@ struct map_session_data {
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 short autolootid[AUTOLOOTITEM_SIZE]; // [Zephyrus]
+ int autolootid[AUTOLOOTITEM_SIZE]; // [Zephyrus]
unsigned short autoloottype;
unsigned int autolooting : 1; //performance-saver, autolooting state for @alootid
unsigned short autobonus; //flag to indicate if an autobonus is activated. [Inkfish]
@@ -303,7 +305,7 @@ struct map_session_data {
int64 cansendmail_tick; /// Mail System Flood Protection
int64 ks_floodprotect_tick; /// [Kill Steal Protection]
struct {
- short nameid;
+ int nameid;
int64 tick;
} item_delay[MAX_ITEMDELAYS]; // [Paradox924X]
bool has_shield; ///< Whether the character is wearing a shield.
@@ -496,7 +498,7 @@ END_ZEROED_BLOCK;
// Mail System [Zephyrus]
struct {
- short nameid;
+ int nameid;
int index, amount, zeny;
struct mail_data inbox;
bool changed; // if true, should sync with charserver on next mailbox request
@@ -795,7 +797,7 @@ enum { ADDITEM_EXIST , ADDITEM_NEW , ADDITEM_OVERAMOUNT };
**/
struct item_cd {
int64 tick[MAX_ITEMDELAYS];//tick
- short nameid[MAX_ITEMDELAYS];//skill id
+ int nameid[MAX_ITEMDELAYS];//skill id
};
enum e_pc_autotrade_update_action {
@@ -1113,8 +1115,8 @@ END_ZEROED_BLOCK; /* End */
int (*check_banding) ( struct block_list *bl, va_list ap );
int (*inventory_rental_end) (int tid, int64 tick, int id, intptr_t data);
void (*check_skilltree) (struct map_session_data *sd, int skill_id);
- int (*bonus_autospell) (struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id);
- int (*bonus_autospell_onskill) (struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id);
+ int (*bonus_autospell) (struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id);
+ int (*bonus_autospell_onskill) (struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id);
int (*bonus_addeff) (struct s_addeffect* effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration);
int (*bonus_addeff_onskill) (struct s_addeffectonskill* effect, int max, enum sc_type id, short rate, short skill_id, unsigned char target);
int (*bonus_item_drop) (struct s_add_drop *drop, const short max, short id, short group, int race, int rate);
diff --git a/src/map/pc_groups.c b/src/map/pc_groups.c
index f7ac954de..887c946e3 100644
--- a/src/map/pc_groups.c
+++ b/src/map/pc_groups.c
@@ -36,7 +36,7 @@
static GroupSettings dummy_group; ///< dummy group used in dummy map sessions @see pc_get_dummy_sd()
-struct pc_groups_interface pcg_s;
+static struct pc_groups_interface pcg_s;
struct pc_groups_interface *pcg;
/**
@@ -44,7 +44,7 @@ struct pc_groups_interface *pcg;
* Used in dummy map sessions.
* @see pc_get_dummy_sd()
*/
-GroupSettings* pc_group_get_dummy_group(void)
+static GroupSettings *pc_group_get_dummy_group(void)
{
return &dummy_group;
}
@@ -53,7 +53,7 @@ GroupSettings* pc_group_get_dummy_group(void)
* @retval NULL if not found
* @private
*/
-static inline GroupSettings* name2group(const char* group_name)
+static inline GroupSettings *name2group(const char *group_name)
{
return strdb_get(pcg->name_db, group_name);
}
@@ -62,7 +62,8 @@ static inline GroupSettings* name2group(const char* group_name)
* Loads group configuration from config file into memory.
* @private
*/
-static void read_config(void) {
+static void read_config(void)
+{
struct config_t pc_group_config;
struct config_setting_t *groups = NULL;
const char *config_filename = "conf/groups.conf"; // FIXME hardcoded name
@@ -308,7 +309,7 @@ static void read_config(void) {
* @param group group
* @param permission permission to check
*/
-bool pc_group_has_permission(GroupSettings *group, unsigned int permission)
+static bool pc_group_has_permission(GroupSettings *group, unsigned int permission)
{
nullpo_retr(false, group);
return ((group->e_permissions&permission) != 0);
@@ -318,7 +319,7 @@ bool pc_group_has_permission(GroupSettings *group, unsigned int permission)
* Checks if commands used by player group should be logged
* @param group group
*/
-bool pc_group_should_log_commands(GroupSettings *group)
+static bool pc_group_should_log_commands(GroupSettings *group)
{
nullpo_retr(true, group);
return group->log_commands;
@@ -329,7 +330,7 @@ bool pc_group_should_log_commands(GroupSettings *group)
* @param group_id group id
* @returns true if group exists, false otherwise
*/
-bool pc_group_exists(int group_id)
+static bool pc_group_exists(int group_id)
{
return idb_exists(pcg->db, group_id);
}
@@ -337,7 +338,7 @@ bool pc_group_exists(int group_id)
/**
* @retval NULL if not found
*/
-GroupSettings* pc_group_id2group(int group_id)
+static GroupSettings *pc_group_id2group(int group_id)
{
return idb_get(pcg->db, group_id);
}
@@ -348,7 +349,7 @@ GroupSettings* pc_group_id2group(int group_id)
* @return group name
* @public
*/
-const char* pc_group_get_name(GroupSettings *group)
+static const char *pc_group_get_name(GroupSettings *group)
{
nullpo_retr(NULL, group);
return group->name;
@@ -360,7 +361,7 @@ const char* pc_group_get_name(GroupSettings *group)
* @return group level
* @public
*/
-int pc_group_get_level(GroupSettings *group)
+static int pc_group_get_level(GroupSettings *group)
{
nullpo_ret(group);
return group->level;
@@ -372,7 +373,7 @@ int pc_group_get_level(GroupSettings *group)
* @return group index
* @public
*/
-int pc_group_get_idx(GroupSettings *group)
+static int pc_group_get_idx(GroupSettings *group)
{
nullpo_ret(group);
return group->index;
@@ -382,7 +383,8 @@ int pc_group_get_idx(GroupSettings *group)
* Insert a new permission
* @return inserted key or 0 upon failure.
**/
-unsigned int pc_groups_add_permission(const char *name) {
+static unsigned int pc_groups_add_permission(const char *name)
+{
uint64 key = 0x1;
unsigned char i;
nullpo_ret(name);
@@ -414,7 +416,8 @@ unsigned int pc_groups_add_permission(const char *name) {
* Initialize PC Groups: allocate DBMaps and read config.
* @public
*/
-void do_init_pc_groups(void) {
+static void do_init_pc_groups(void)
+{
const struct {
const char *name;
unsigned int permission;
@@ -484,7 +487,7 @@ static int group_db_clear_sub(union DBKey key, struct DBData *data, va_list args
* Finalize PC Groups: free DBMaps and config.
* @public
*/
-void do_final_pc_groups(void)
+static void do_final_pc_groups(void)
{
if (pcg->db != NULL)
pcg->db->destroy(pcg->db, group_db_clear_sub);
@@ -506,7 +509,8 @@ void do_final_pc_groups(void)
* Used in @reloadatcommand
* @public
*/
-void pc_groups_reload(void) {
+static void pc_groups_reload(void)
+{
struct map_session_data *sd = NULL;
struct s_mapiterator *iter;
@@ -528,7 +532,8 @@ void pc_groups_reload(void) {
/**
* Connect Interface
**/
-void pc_groups_defaults(void) {
+void pc_groups_defaults(void)
+{
pcg = &pcg_s;
/* */
pcg->db = NULL;
diff --git a/src/map/pet.c b/src/map/pet.c
index 58c26d1ce..e544905c0 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -54,12 +54,12 @@
#include <stdlib.h>
#include <string.h>
-struct pet_interface pet_s;
+static struct pet_interface pet_s;
struct pet_interface *pet;
#define MIN_PETTHINKTIME 100
-int pet_hungry_val(struct pet_data *pd)
+static int pet_hungry_val(struct pet_data *pd)
{
nullpo_ret(pd);
@@ -75,7 +75,7 @@ int pet_hungry_val(struct pet_data *pd)
return 0;
}
-void pet_set_intimate(struct pet_data *pd, int value)
+static void pet_set_intimate(struct pet_data *pd, int value)
{
int intimate;
struct map_session_data *sd;
@@ -102,7 +102,7 @@ void pet_set_intimate(struct pet_data *pd, int value)
}
}
-int pet_create_egg(struct map_session_data *sd, int item_id)
+static int pet_create_egg(struct map_session_data *sd, int item_id)
{
int pet_id = pet->search_petDB_index(item_id, PET_EGG);
nullpo_ret(sd);
@@ -112,13 +112,13 @@ int pet_create_egg(struct map_session_data *sd, int item_id)
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,
- (short)pet->db[pet_id].EggID, 0,
+ pet->db[pet_id].EggID, 0,
(short)pet->db[pet_id].intimate,
100, 0, 1, pet->db[pet_id].jname);
return 1;
}
-int pet_unlocktarget(struct pet_data *pd)
+static int pet_unlocktarget(struct pet_data *pd)
{
nullpo_ret(pd);
@@ -131,7 +131,8 @@ int pet_unlocktarget(struct pet_data *pd)
/*==========================================
* Pet Attack Skill [Skotlex]
*------------------------------------------*/
-int pet_attackskill(struct pet_data *pd, int target_id) {
+static int pet_attackskill(struct pet_data *pd, int target_id)
+{
nullpo_ret(pd);
if (!battle_config.pet_status_support || !pd->a_skill ||
(battle_config.pet_equip_required && !pd->pet.equip))
@@ -160,7 +161,8 @@ int pet_attackskill(struct pet_data *pd, int target_id) {
return 0;
}
-int pet_target_check(struct map_session_data *sd,struct block_list *bl,int type) {
+static int pet_target_check(struct map_session_data *sd, struct block_list *bl, int type)
+{
struct pet_data *pd;
int rate;
@@ -204,7 +206,7 @@ int pet_target_check(struct map_session_data *sd,struct block_list *bl,int type)
/*==========================================
* Pet SC Check [Skotlex]
*------------------------------------------*/
-int pet_sc_check(struct map_session_data *sd, int type)
+static int pet_sc_check(struct map_session_data *sd, int type)
{
struct pet_data *pd;
@@ -223,7 +225,8 @@ int pet_sc_check(struct map_session_data *sd, int type)
return 0;
}
-int pet_hungry(int tid, int64 tick, int id, intptr_t data) {
+static int pet_hungry(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd;
struct pet_data *pd;
int interval;
@@ -279,7 +282,7 @@ int pet_hungry(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int search_petDB_index(int key,int type)
+static int search_petDB_index(int key, int type)
{
int i;
@@ -300,7 +303,7 @@ int search_petDB_index(int key,int type)
return -1;
}
-int pet_hungry_timer_delete(struct pet_data *pd)
+static int pet_hungry_timer_delete(struct pet_data *pd)
{
nullpo_ret(pd);
if(pd->pet_hungry_timer != INVALID_TIMER) {
@@ -311,7 +314,7 @@ int pet_hungry_timer_delete(struct pet_data *pd)
return 1;
}
-int pet_performance(struct map_session_data *sd, struct pet_data *pd)
+static int pet_performance(struct map_session_data *sd, struct pet_data *pd)
{
int val;
@@ -329,7 +332,7 @@ int pet_performance(struct map_session_data *sd, struct pet_data *pd)
return 1;
}
-int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
+static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
{
int i;
@@ -355,7 +358,7 @@ int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
return 1;
}
-int pet_data_init(struct map_session_data *sd, struct s_pet *petinfo)
+static int pet_data_init(struct map_session_data *sd, struct s_pet *petinfo)
{
struct pet_data *pd;
int i=0,interval=0;
@@ -430,7 +433,7 @@ int pet_data_init(struct map_session_data *sd, struct s_pet *petinfo)
return 0;
}
-int pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo)
+static int pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo)
{
nullpo_retr(1, sd);
nullpo_retr(1, petinfo);
@@ -467,7 +470,8 @@ int pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo)
return 0;
}
-int pet_recv_petdata(int account_id,struct s_pet *p,int flag) {
+static int pet_recv_petdata(int account_id, struct s_pet *p, int flag)
+{
struct map_session_data *sd;
nullpo_retr(1, p);
@@ -512,7 +516,7 @@ int pet_recv_petdata(int account_id,struct s_pet *p,int flag) {
return 0;
}
-int pet_select_egg(struct map_session_data *sd,short egg_index)
+static int pet_select_egg(struct map_session_data *sd, int egg_index)
{
nullpo_ret(sd);
@@ -527,7 +531,7 @@ int pet_select_egg(struct map_session_data *sd,short egg_index)
return 0;
}
-int pet_catch_process1(struct map_session_data *sd,int target_class)
+static int pet_catch_process1(struct map_session_data *sd, int target_class)
{
nullpo_ret(sd);
@@ -537,7 +541,8 @@ int pet_catch_process1(struct map_session_data *sd,int target_class)
return 0;
}
-int pet_catch_process2(struct map_session_data* sd, int target_id) {
+static int pet_catch_process2(struct map_session_data *sd, int target_id)
+{
struct mob_data *md = NULL;
struct block_list *bl = NULL;
int i = 0, pet_catch_rate = 0;
@@ -550,7 +555,8 @@ int pet_catch_process2(struct map_session_data* sd, int target_id) {
// Invalid inputs/state, abort capture.
clif->pet_roulette(sd,0);
sd->catch_target_class = -1;
- sd->itemid = sd->itemindex = -1;
+ sd->itemid = -1;
+ sd->itemindex = -1;
return 1;
}
@@ -599,7 +605,8 @@ 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
**/
-bool pet_get_egg(int account_id, short pet_class, int pet_id ) {
+static bool pet_get_egg(int account_id, short pet_class, int pet_id)
+{
struct map_session_data *sd;
struct item tmp_item;
int i = 0, ret = 0;
@@ -639,7 +646,7 @@ bool pet_get_egg(int account_id, short pet_class, int pet_id ) {
return true;
}
-int pet_menu(struct map_session_data *sd,int menunum)
+static int pet_menu(struct map_session_data *sd, int menunum)
{
struct item_data *egg_id;
nullpo_ret(sd);
@@ -678,7 +685,7 @@ int pet_menu(struct map_session_data *sd,int menunum)
return 0;
}
-int pet_change_name(struct map_session_data *sd, const char *name)
+static int pet_change_name(struct map_session_data *sd, const char *name)
{
int i;
struct pet_data *pd;
@@ -697,7 +704,7 @@ int pet_change_name(struct map_session_data *sd, const char *name)
return intif_rename_pet(sd, name);
}
-int pet_change_name_ack(struct map_session_data *sd, const char *name, int flag)
+static int pet_change_name_ack(struct map_session_data *sd, const char *name, int flag)
{
struct pet_data *pd;
char *newname = NULL;
@@ -724,7 +731,8 @@ int pet_change_name_ack(struct map_session_data *sd, const char *name, int flag)
return 1;
}
-int pet_equipitem(struct map_session_data *sd,int index) {
+static int pet_equipitem(struct map_session_data *sd, int index)
+{
struct pet_data *pd;
int nameid;
@@ -756,7 +764,8 @@ int pet_equipitem(struct map_session_data *sd,int index) {
return 0;
}
-int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) {
+static int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd)
+{
struct item tmp_item;
int nameid,flag;
@@ -797,7 +806,8 @@ int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) {
return 0;
}
-int pet_food(struct map_session_data *sd, struct pet_data *pd) {
+static int pet_food(struct map_session_data *sd, struct pet_data *pd)
+{
int i, food_id;
nullpo_retr(1, pd);
@@ -843,7 +853,7 @@ int pet_food(struct map_session_data *sd, struct pet_data *pd) {
return 0;
}
-int pet_randomwalk(struct pet_data *pd, int64 tick)
+static int pet_randomwalk(struct pet_data *pd, int64 tick)
{
nullpo_ret(pd);
Assert_ret(pd->msd == 0 || pd->msd->pd == pd);
@@ -884,7 +894,8 @@ int pet_randomwalk(struct pet_data *pd, int64 tick)
return 0;
}
-int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick) {
+static int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick)
+{
struct block_list *target = NULL;
nullpo_ret(pd);
@@ -997,7 +1008,8 @@ int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick
return 0;
}
-int pet_ai_sub_foreachclient(struct map_session_data *sd,va_list ap) {
+static int pet_ai_sub_foreachclient(struct map_session_data *sd, va_list ap)
+{
int64 tick = va_arg(ap,int64);
nullpo_ret(sd);
if(sd->status.pet_id && sd->pd)
@@ -1006,13 +1018,14 @@ int pet_ai_sub_foreachclient(struct map_session_data *sd,va_list ap) {
return 0;
}
-int pet_ai_hard(int tid, int64 tick, int id, intptr_t data) {
+static int pet_ai_hard(int tid, int64 tick, int id, intptr_t data)
+{
map->foreachpc(pet->ai_sub_foreachclient,tick);
return 0;
}
-int pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap)
+static int pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap)
{
struct pet_data *pd = va_arg(ap,struct pet_data *);
struct block_list **target = va_arg(ap,struct block_list**);
@@ -1040,7 +1053,8 @@ int pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap)
return 0;
}
-int pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
+static int pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data)
+{
struct item_drop_list *list;
struct item_drop *ditem;
list=(struct item_drop_list *)data;
@@ -1058,7 +1072,7 @@ int pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-int pet_lootitem_drop(struct pet_data *pd,struct map_session_data *sd)
+static int pet_lootitem_drop(struct pet_data *pd, struct map_session_data *sd)
{
int i,flag=0;
struct item_drop_list *dlist;
@@ -1107,7 +1121,8 @@ int pet_lootitem_drop(struct pet_data *pd,struct map_session_data *sd)
/*==========================================
* pet bonus giving skills [Valaris] / Rewritten by [Skotlex]
*------------------------------------------*/
-int pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd=map->id2sd(id);
struct pet_data *pd;
int bonus;
@@ -1148,7 +1163,8 @@ int pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* pet recovery skills [Valaris] / Rewritten by [Skotlex]
*------------------------------------------*/
-int pet_recovery_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pet_recovery_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd=map->id2sd(id);
struct pet_data *pd;
@@ -1179,7 +1195,8 @@ int pet_recovery_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* pet support skills [Skotlex]
*------------------------------------------*/
-int pet_skill_support_timer(int tid, int64 tick, int id, intptr_t data) {
+static int pet_skill_support_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct map_session_data *sd=map->id2sd(id);
struct pet_data *pd;
struct status_data *st;
@@ -1222,7 +1239,7 @@ int pet_skill_support_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-void pet_read_db(void)
+static void pet_read_db(void)
{
const char *filename[] = {
DBPATH"pet_db.conf",
@@ -1237,7 +1254,7 @@ void pet_read_db(void)
}
}
-int pet_read_db_libconfig(const char *filename, bool ignore_missing)
+static int pet_read_db_libconfig(const char *filename, bool ignore_missing)
{
struct config_t pet_db_conf;
struct config_setting_t *pdb;
@@ -1285,7 +1302,7 @@ int pet_read_db_libconfig(const char *filename, bool ignore_missing)
return count;
}
-int pet_read_db_sub(struct config_setting_t *it, int n, const char *source)
+static int pet_read_db_sub(struct config_setting_t *it, int n, const char *source)
{
struct config_setting_t *t = NULL;
struct item_data *data = NULL;
@@ -1318,7 +1335,7 @@ int pet_read_db_sub(struct config_setting_t *it, int n, const char *source)
if (!(data = itemdb->name2id(str))) {
ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
} else {
- pet->db[n].itemID = (uint16)data->nameid;
+ pet->db[n].itemID = data->nameid;
}
}
@@ -1326,7 +1343,7 @@ int pet_read_db_sub(struct config_setting_t *it, int n, const char *source)
if (!(data = itemdb->name2id(str))) {
ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
} else {
- pet->db[n].EggID = (uint16)data->nameid;
+ pet->db[n].EggID = data->nameid;
}
}
@@ -1334,7 +1351,7 @@ int pet_read_db_sub(struct config_setting_t *it, int n, const char *source)
if (!(data = itemdb->name2id(str))) {
ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
} else {
- pet->db[n].AcceID = (uint16)data->nameid;
+ pet->db[n].AcceID = data->nameid;
}
}
@@ -1342,7 +1359,7 @@ int pet_read_db_sub(struct config_setting_t *it, int n, const char *source)
if (!(data = itemdb->name2id(str))) {
ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
} else {
- pet->db[n].FoodID = (uint16)data->nameid;
+ pet->db[n].FoodID = data->nameid;
}
}
@@ -1403,7 +1420,7 @@ int pet_read_db_sub(struct config_setting_t *it, int n, const char *source)
* @param t libconfig setting
* @param n Pet DB Index
*/
-void pet_read_db_sub_evolution(struct config_setting_t *t, int n)
+static void pet_read_db_sub_evolution(struct config_setting_t *t, int n)
{
struct config_setting_t *pett;
int i = 0;
@@ -1473,7 +1490,7 @@ void pet_read_db_sub_evolution(struct config_setting_t *t, int n)
}
}
-bool pet_read_db_sub_intimacy(int idx, struct config_setting_t *t)
+static bool pet_read_db_sub_intimacy(int idx, struct config_setting_t *t)
{
int i32 = 0;
@@ -1495,7 +1512,7 @@ bool pet_read_db_sub_intimacy(int idx, struct config_setting_t *t)
return true;
}
-void pet_read_db_clear(void)
+static void pet_read_db_clear(void)
{
int i;
@@ -1523,7 +1540,8 @@ void pet_read_db_clear(void)
/*==========================================
* Initialization process relationship skills
*------------------------------------------*/
-int do_init_pet(bool minimal) {
+static int do_init_pet(bool minimal)
+{
if (minimal)
return 0;
@@ -1543,7 +1561,7 @@ int do_init_pet(bool minimal) {
return 0;
}
-int do_final_pet(void)
+static int do_final_pet(void)
{
int i;
for( i = 0; i < MAX_PET_DB; i++ )
@@ -1571,7 +1589,8 @@ int do_final_pet(void)
return 0;
}
-void pet_defaults(void) {
+void pet_defaults(void)
+{
pet = &pet_s;
memset(pet->db,0,sizeof(pet->db));
diff --git a/src/map/pet.h b/src/map/pet.h
index b3a16c5d7..049816804 100644
--- a/src/map/pet.h
+++ b/src/map/pet.h
@@ -39,10 +39,10 @@ struct pet_evolve_data {
struct s_pet_db {
short class_;
char name[NAME_LENGTH],jname[NAME_LENGTH];
- short itemID;
- short EggID;
- short AcceID;
- short FoodID;
+ int itemID;
+ int EggID;
+ int AcceID;
+ int FoodID;
int fullness;
int hungry_delay;
int r_hungry;
@@ -157,7 +157,7 @@ struct pet_interface {
int (*data_init) (struct map_session_data *sd, struct s_pet *petinfo);
int (*birth_process) (struct map_session_data *sd, struct s_pet *petinfo);
int (*recv_petdata) (int account_id, struct s_pet *p, int flag);
- int (*select_egg) (struct map_session_data *sd, short egg_index);
+ 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 );
diff --git a/src/map/quest.c b/src/map/quest.c
index 071cab961..614c79cb6 100644
--- a/src/map/quest.c
+++ b/src/map/quest.c
@@ -52,8 +52,8 @@
#include <string.h>
#include <time.h>
-struct quest_interface quest_s;
-struct quest_db *db_data[MAX_QUEST_DB]; ///< Quest database
+static struct quest_interface quest_s;
+static struct quest_db *db_data[MAX_QUEST_DB]; ///< Quest database
struct quest_interface *quest;
@@ -63,7 +63,8 @@ struct quest_interface *quest;
* @param quest_id ID to lookup
* @return Quest entry (equals to &quest->dummy if the ID is invalid)
*/
-struct quest_db *quest_db(int quest_id) {
+static struct quest_db *quest_db(int quest_id)
+{
if (quest_id < 0 || quest_id >= MAX_QUEST_DB || quest->db_data[quest_id] == NULL)
return &quest->dummy;
return quest->db_data[quest_id];
@@ -75,7 +76,7 @@ struct quest_db *quest_db(int quest_id) {
* @param sd Player's data
* @return 0 in case of success, nonzero otherwise (i.e. the player has no quests)
*/
-int quest_pc_login(struct map_session_data *sd)
+static int quest_pc_login(struct map_session_data *sd)
{
#if PACKETVER < 20141022
int i;
@@ -108,7 +109,7 @@ int quest_pc_login(struct map_session_data *sd)
* @param time_limit Custom time, in UNIX epoch, for this quest
* @return 0 in case of success, nonzero otherwise
*/
-int quest_add(struct map_session_data *sd, int quest_id, unsigned int time_limit)
+static int quest_add(struct map_session_data *sd, int quest_id, unsigned int time_limit)
{
int n;
struct quest_db *qi = quest->db(quest_id);
@@ -168,7 +169,7 @@ int quest_add(struct map_session_data *sd, int quest_id, unsigned int time_limit
* @param qid2 New quest to add
* @return 0 in case of success, nonzero otherwise
*/
-int quest_change(struct map_session_data *sd, int qid1, int qid2)
+static int quest_change(struct map_session_data *sd, int qid1, int qid2)
{
int i;
struct quest_db *qi = quest->db(qid2);
@@ -224,7 +225,7 @@ int quest_change(struct map_session_data *sd, int qid1, int qid2)
* @param quest_id ID of the quest to remove
* @return 0 in case of success, nonzero otherwise
*/
-int quest_delete(struct map_session_data *sd, int quest_id)
+static int quest_delete(struct map_session_data *sd, int quest_id)
{
int i;
@@ -268,7 +269,7 @@ int quest_delete(struct map_session_data *sd, int quest_id)
* int Party ID
* int Mob ID
*/
-int quest_update_objective_sub(struct block_list *bl, va_list ap)
+static int quest_update_objective_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
int party_id = va_arg(ap, int);
@@ -295,7 +296,7 @@ int quest_update_objective_sub(struct block_list *bl, va_list ap)
* @param sd Character's data
* @param mob_id Monster ID
*/
-void quest_update_objective(struct map_session_data *sd, int mob_id)
+static void quest_update_objective(struct map_session_data *sd, int mob_id)
{
int i,j;
@@ -351,7 +352,7 @@ void quest_update_objective(struct map_session_data *sd, int mob_id)
* @param qs New quest state
* @return 0 in case of success, nonzero otherwise
*/
-int quest_update_status(struct map_session_data *sd, int quest_id, enum quest_state qs)
+static int quest_update_status(struct map_session_data *sd, int quest_id, enum quest_state qs)
{
int i;
@@ -402,7 +403,7 @@ int quest_update_status(struct map_session_data *sd, int quest_id, enum quest_st
* 1 if the quest's timeout has expired
* 0 otherwise
*/
-int quest_check(struct map_session_data *sd, int quest_id, enum quest_check_type type)
+static int quest_check(struct map_session_data *sd, int quest_id, enum quest_check_type type)
{
int i;
@@ -444,7 +445,7 @@ int quest_check(struct map_session_data *sd, int quest_id, enum quest_check_type
* @return The parsed quest entry.
* @retval NULL in case of errors.
*/
-struct quest_db *quest_read_db_sub(struct config_setting_t *cs, int n, const char *source)
+static struct quest_db *quest_read_db_sub(struct config_setting_t *cs, int n, const char *source)
{
struct quest_db *entry = NULL;
struct config_setting_t *t = NULL;
@@ -544,7 +545,7 @@ struct quest_db *quest_read_db_sub(struct config_setting_t *cs, int n, const cha
*
* @return Number of loaded quests, or -1 if the file couldn't be read.
*/
-int quest_read_db(void)
+static int quest_read_db(void)
{
char filepath[256];
struct config_t quest_db_conf;
@@ -591,7 +592,8 @@ int quest_read_db(void)
* @see map->foreachpc
* @param ap Ignored
*/
-int quest_reload_check_sub(struct map_session_data *sd, va_list ap) {
+static int quest_reload_check_sub(struct map_session_data *sd, va_list ap)
+{
int i, j;
nullpo_ret(sd);
@@ -620,7 +622,8 @@ int quest_reload_check_sub(struct map_session_data *sd, va_list ap) {
/**
* Clears the quest database for shutdown or reload.
*/
-void quest_clear_db(void) {
+static void quest_clear_db(void)
+{
int i;
for (i = 0; i < MAX_QUEST_DB; i++) {
@@ -640,7 +643,8 @@ void quest_clear_db(void) {
*
* @param minimal Run in minimal mode (skips most of the loading)
*/
-void do_init_quest(bool minimal) {
+static void do_init_quest(bool minimal)
+{
if (minimal)
return;
@@ -650,14 +654,16 @@ void do_init_quest(bool minimal) {
/**
* Finalizes the quest interface before shutdown.
*/
-void do_final_quest(void) {
+static void do_final_quest(void)
+{
quest->clear();
}
/**
* Reloads the quest database.
*/
-void do_reload_quest(void) {
+static void do_reload_quest(void)
+{
quest->clear();
quest->read_db();
@@ -669,7 +675,8 @@ void do_reload_quest(void) {
/**
* Initializes default values for the quest interface.
*/
-void quest_defaults(void) {
+void quest_defaults(void)
+{
quest = &quest_s;
quest->db_data = db_data;
diff --git a/src/map/rodex.c b/src/map/rodex.c
index d1b0191ac..602754d42 100644
--- a/src/map/rodex.c
+++ b/src/map/rodex.c
@@ -40,12 +40,12 @@
// Maximun number of messages that can be sent in one day
#define DAILY_MAX_MAILS 100
-struct rodex_interface rodex_s;
+static struct rodex_interface rodex_s;
struct rodex_interface *rodex;
/// Checks if RoDEX System is enabled in the server
/// Returns true if it's enabled, false otherwise
-bool rodex_isenabled(void)
+static bool rodex_isenabled(void)
{
if (battle_config.feature_rodex == 1)
return true;
@@ -55,7 +55,7 @@ bool rodex_isenabled(void)
/// Checks and refreshes the user daily number of Stamps
/// @param sd : The player who's being checked
-void rodex_refresh_stamps(struct map_session_data *sd)
+static void rodex_refresh_stamps(struct map_session_data *sd)
{
int today = date_get_date();
nullpo_retv(sd);
@@ -76,7 +76,7 @@ void rodex_refresh_stamps(struct map_session_data *sd)
/// @param sd : The player who's writting
/// @param idx : the inventory idx of the item
/// @param amount : Amount of the item to be attached
-void rodex_add_item(struct map_session_data *sd, int16 idx, int16 amount)
+static void rodex_add_item(struct map_session_data *sd, int16 idx, int16 amount)
{
int i;
bool is_stack = false;
@@ -153,7 +153,7 @@ void rodex_add_item(struct map_session_data *sd, int16 idx, int16 amount)
/// @param sd : The player who's writting the message
/// @param idx : The index of the item
/// @param amount : How much to remove
-void rodex_remove_item(struct map_session_data *sd, int16 idx, int16 amount)
+static void rodex_remove_item(struct map_session_data *sd, int16 idx, int16 amount)
{
int i;
struct item *it;
@@ -204,7 +204,7 @@ void rodex_remove_item(struct map_session_data *sd, int16 idx, int16 amount)
/// @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
-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, short *class)
{
intif->rodex_checkname(sd, name);
}
@@ -221,7 +221,7 @@ void rodex_check_player(struct map_session_data *sd, const char *name, int *base
/// RODEX_SEND_MAIL_COUNT_ERROR = 2,
/// RODEX_SEND_MAIL_ITEM_ERROR = 3,
/// RODEX_SEND_MAIL_RECEIVER_ERROR = 4
-int rodex_send_mail(struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny)
+static int rodex_send_mail(struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny)
{
int i;
int64 total_zeny;
@@ -342,7 +342,7 @@ int rodex_send_mail(struct map_session_data *sd, const char *receiver_name, cons
/// @param ssd : Sender's sd
/// @param rsd : Receiver's sd
/// @param result : Message sent (true) or failed (false)
-void rodex_send_mail_result(struct map_session_data *ssd, struct map_session_data *rsd, bool result)
+static void rodex_send_mail_result(struct map_session_data *ssd, struct map_session_data *rsd, bool result)
{
if (ssd != NULL) {
rodex->clean(ssd, 1);
@@ -365,7 +365,7 @@ void rodex_send_mail_result(struct map_session_data *ssd, struct map_session_dat
/// @param sd : Character
/// @param mail_id : Mail ID that's being retrieved
/// Returns the message
-struct rodex_message *rodex_get_mail(struct map_session_data *sd, int64 mail_id)
+static struct rodex_message *rodex_get_mail(struct map_session_data *sd, int64 mail_id)
{
int i;
struct rodex_message *msg;
@@ -393,7 +393,7 @@ struct rodex_message *rodex_get_mail(struct map_session_data *sd, int64 mail_id)
/// Request to read a mail by its ID
/// @param sd : Who's reading
/// @param mail_id : Mail ID to be read
-void rodex_read_mail(struct map_session_data *sd, int64 mail_id)
+static void rodex_read_mail(struct map_session_data *sd, int64 mail_id)
{
struct rodex_message *msg;
@@ -420,7 +420,7 @@ void rodex_read_mail(struct map_session_data *sd, int64 mail_id)
/// Deletes a mail
/// @param sd : Who's deleting
/// @param mail_id : Mail ID to be deleted
-void rodex_delete_mail(struct map_session_data *sd, int64 mail_id)
+static void rodex_delete_mail(struct map_session_data *sd, int64 mail_id)
{
struct rodex_message *msg;
@@ -438,7 +438,7 @@ void rodex_delete_mail(struct map_session_data *sd, int64 mail_id)
/// Gets attached zeny
/// @param sd : Who's getting
/// @param mail_id : Mail ID that we're getting zeny from
-void rodex_get_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id)
+static void rodex_get_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id)
{
struct rodex_message *msg;
@@ -471,7 +471,7 @@ void rodex_get_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id)
/// Gets attached item
/// @param sd : Who's getting
/// @param mail_id : Mail ID that we're getting items from
-void rodex_get_items(struct map_session_data *sd, int8 opentype, int64 mail_id)
+static void rodex_get_items(struct map_session_data *sd, int8 opentype, int64 mail_id)
{
struct rodex_message *msg;
int weight = 0;
@@ -558,7 +558,7 @@ void rodex_get_items(struct map_session_data *sd, int8 opentype, int64 mail_id)
/// @param flag :
/// 0 - clear everything
/// 1 - clear tmp only
-void rodex_clean(struct map_session_data *sd, int8 flag)
+static void rodex_clean(struct map_session_data *sd, int8 flag)
{
nullpo_retv(sd);
@@ -571,7 +571,7 @@ void rodex_clean(struct map_session_data *sd, int8 flag)
/// User request to open rodex, load mails from char-server
/// @param sd : Who's requesting
/// @param open_type : Box Type (see RODEX_OPENTYPE)
-void rodex_open(struct map_session_data *sd, int8 open_type, int64 first_mail_id)
+static void rodex_open(struct map_session_data *sd, int8 open_type, int64 first_mail_id)
{
#if PACKETVER >= 20170419
const int type = 1;
@@ -589,7 +589,7 @@ void rodex_open(struct map_session_data *sd, int8 open_type, int64 first_mail_id
/// @param sd : Who's requesting
/// @param open_type : Box Type (see RODEX_OPENTYPE)
/// @param last_mail_id : The last mail from the current page
-void rodex_next_page(struct map_session_data *sd, int8 open_type, int64 last_mail_id)
+static void rodex_next_page(struct map_session_data *sd, int8 open_type, int64 last_mail_id)
{
int64 msg_count, page_start = 0;
nullpo_retv(sd);
@@ -619,7 +619,7 @@ void rodex_next_page(struct map_session_data *sd, int8 open_type, int64 last_mai
/// @param sd : Who's requesting
/// @param open_type : Box Type (See RODEX_OPENTYPE)
/// @param first_mail_id : The first mail id known by client, currently unused
-void rodex_refresh(struct map_session_data *sd, int8 open_type, int64 first_mail_id)
+static void rodex_refresh(struct map_session_data *sd, int8 open_type, int64 first_mail_id)
{
nullpo_retv(sd);
if (open_type == RODEX_OPENTYPE_ACCOUNT && battle_config.feature_rodex_use_accountmail == false)
@@ -635,13 +635,13 @@ void rodex_refresh(struct map_session_data *sd, int8 open_type, int64 first_mail
}
}
-void do_init_rodex(bool minimal)
+static void do_init_rodex(bool minimal)
{
if (minimal)
return;
}
-void do_final_rodex(void)
+static void do_final_rodex(void)
{
}
diff --git a/src/map/script.c b/src/map/script.c
index 5252c0ff0..e678a7738 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -83,7 +83,7 @@
#include <sys/time.h>
#endif
-struct script_interface script_s;
+static struct script_interface script_s;
struct script_interface *script;
static inline int GETVALUE(const struct script_buf *buf, int i) __attribute__((nonnull (1)));
@@ -103,7 +103,8 @@ static inline void SETVALUE(struct script_buf *buf, int i, int n)
VECTOR_INDEX(*buf, i+2) = GetByte(n, 2);
}
-const char* script_op2name(int op) {
+const char *script_op2name(int op)
+{
#define RETURN_OP_NAME(type) case type: return #type
switch( op ) {
RETURN_OP_NAME(C_NOP);
@@ -162,7 +163,7 @@ const char* script_op2name(int op) {
}
#ifdef SCRIPT_DEBUG_DUMP_STACK
-static void script_dump_stack(struct script_state* st)
+static void script_dump_stack(struct script_state *st)
{
int i;
nullpo_retv(st);
@@ -205,7 +206,8 @@ static void script_dump_stack(struct script_state* st)
#endif
/// Reports on the console the src of a script error.
-void script_reportsrc(struct script_state *st) {
+static void script_reportsrc(struct script_state *st)
+{
struct block_list* bl;
nullpo_retv(st);
@@ -236,7 +238,7 @@ void script_reportsrc(struct script_state *st) {
}
/// Reports on the console information about the script data.
-void script_reportdata(struct script_data* data)
+static void script_reportdata(struct script_data *data)
{
if( data == NULL )
return;
@@ -278,7 +280,7 @@ void script_reportdata(struct script_data* data)
}
/// Reports on the console information about the current built-in function.
-void script_reportfunc(struct script_state* st)
+static void script_reportfunc(struct script_state *st)
{
int params, id;
struct script_data* data;
@@ -313,8 +315,9 @@ void script_reportfunc(struct script_state* st)
/*==========================================
* Output error message
*------------------------------------------*/
-static void disp_error_message2(const char *mes,const char *pos,int report) __attribute__((nonnull (1))) analyzer_noreturn;
-static void disp_error_message2(const char *mes,const char *pos,int report) {
+static void disp_error_message2(const char *mes, const char *pos, int report) __attribute__((nonnull (1))) analyzer_noreturn;
+static void disp_error_message2(const char *mes, const char *pos, int report)
+{
script->error_msg = aStrdup(mes);
script->error_pos = pos;
script->error_report = report;
@@ -322,12 +325,13 @@ static void disp_error_message2(const char *mes,const char *pos,int report) {
}
#define disp_error_message(mes,pos) (disp_error_message2((mes),(pos),1))
-void disp_warning_message(const char *mes, const char *pos) {
+static void disp_warning_message(const char *mes, const char *pos)
+{
script->warning(script->parser_current_src,script->parser_current_file,script->parser_current_line,mes,pos);
}
/// Checks event parameter validity
-void check_event(struct script_state *st, const char *evt)
+static void check_event(struct script_state *st, const char *evt)
{
if( evt && evt[0] && !stristr(evt, "::On") )
{
@@ -339,7 +343,8 @@ void check_event(struct script_state *st, const char *evt)
/*==========================================
* Hashes the input string
*------------------------------------------*/
-unsigned int calc_hash(const char* p) {
+static unsigned int calc_hash(const char *p)
+{
unsigned int h;
nullpo_ret(p);
@@ -374,7 +379,8 @@ unsigned int calc_hash(const char* p) {
/*==========================================
* Hashes the input string in a case insensitive way
*------------------------------------------*/
-unsigned int calc_hash_ci(const char* p) {
+static unsigned int calc_hash_ci(const char *p)
+{
unsigned int h = 0;
#ifdef ENABLE_CASE_CHECK
@@ -413,14 +419,14 @@ unsigned int calc_hash_ci(const char* p) {
*------------------------------------------*/
/// Looks up string using the provided id.
-const char* script_get_str(int id)
+static const char *script_get_str(int id)
{
Assert_retr(NULL, id >= LABEL_START && id < script->str_size);
return script->str_buf+script->str_data[id].str;
}
/// Returns the uid of the string, or -1.
-int script_search_str(const char* p)
+static int script_search_str(const char *p)
{
int i;
@@ -433,7 +439,7 @@ int script_search_str(const char* p)
return -1;
}
-void script_casecheck_clear_sub(struct casecheck_data *ccd)
+static void script_casecheck_clear_sub(struct casecheck_data *ccd)
{
#ifdef ENABLE_CASE_CHECK
nullpo_retv(ccd);
@@ -453,15 +459,17 @@ void script_casecheck_clear_sub(struct casecheck_data *ccd)
#endif // ENABLE_CASE_CHECK
}
-void script_global_casecheck_clear(void) {
+static void script_global_casecheck_clear(void)
+{
script_casecheck_clear_sub(&script->global_casecheck);
}
-void script_local_casecheck_clear(void) {
+static void script_local_casecheck_clear(void)
+{
script_casecheck_clear_sub(&script->local_casecheck);
}
-const char *script_casecheck_add_str_sub(struct casecheck_data *ccd, const char *p)
+static const char *script_casecheck_add_str_sub(struct casecheck_data *ccd, const char *p)
{
#ifdef ENABLE_CASE_CHECK
int len;
@@ -518,17 +526,19 @@ const char *script_casecheck_add_str_sub(struct casecheck_data *ccd, const char
return NULL;
}
-const char *script_global_casecheck_add_str(const char *p) {
+static const char *script_global_casecheck_add_str(const char *p)
+{
return script_casecheck_add_str_sub(&script->global_casecheck, p);
}
-const char *script_local_casecheck_add_str(const char *p) {
+static const char *script_local_casecheck_add_str(const char *p)
+{
return script_casecheck_add_str_sub(&script->local_casecheck, p);
}
/// Stores a copy of the string and returns its id.
/// If an identical string is already present, returns its id instead.
-int script_add_str(const char* p)
+static int script_add_str(const char *p)
{
int len, h = script->calc_hash(p);
#ifdef ENABLE_CASE_CHECK
@@ -607,7 +617,7 @@ int script_add_str(const char* p)
*
* @param a The byte to append.
*/
-void add_scriptb(int a)
+static void add_scriptb(int a)
{
VECTOR_ENSURE(script->buf, 1, SCRIPT_BLOCK_SIZE);
VECTOR_PUSH(script->buf, (uint8)a);
@@ -622,7 +632,7 @@ void add_scriptb(int a)
*
* @param a The value to append.
*/
-void add_scriptc(int a)
+static void add_scriptc(int a)
{
while( a >= 0x40 )
{
@@ -642,7 +652,7 @@ void add_scriptc(int a)
*
* @param a The value to append.
*/
-void add_scripti(int a)
+static void add_scripti(int a)
{
while( a >= 0x40 )
{
@@ -657,7 +667,7 @@ void add_scripti(int a)
*
* @param l The id of the script->str_data entry (Maximum up to 16M)
*/
-void add_scriptl(int l)
+static void add_scriptl(int l)
{
int backpatch = script->str_data[l].backpatch;
@@ -695,7 +705,7 @@ void add_scriptl(int l)
/*==========================================
* Resolve the label
*------------------------------------------*/
-void set_label(int l,int pos, const char* script_pos)
+static void set_label(int l, int pos, const char *script_pos)
{
int i;
@@ -719,7 +729,7 @@ void set_label(int l,int pos, const char* script_pos)
}
/// Skips spaces and/or comments.
-const char* script_skip_space(const char* p)
+static const char *script_skip_space(const char *p)
{
if( p == NULL )
return NULL;
@@ -758,7 +768,7 @@ const char* script_skip_space(const char* p)
/// Skips a word.
/// A word consists of undercores and/or alphanumeric characters,
/// and valid variable prefixes/postfixes.
-const char* skip_word(const char* p)
+static const char *skip_word(const char *p)
{
nullpo_retr(NULL, p);
// prefix
@@ -787,7 +797,8 @@ const char* skip_word(const char* p)
/// Adds a word to script->str_data.
/// @see skip_word
/// @see script->add_str
-int add_word(const char* p) {
+static int add_word(const char *p)
+{
size_t len;
int i;
@@ -813,8 +824,7 @@ int add_word(const char* p) {
/// Parses a function call.
/// The argument list can have parenthesis or not.
/// The number of arguments is checked.
-static
-const char* parse_callfunc(const char* p, int require_paren, int is_custom)
+static const char *parse_callfunc(const char *p, int require_paren, int is_custom)
{
const char *p2;
char *arg = NULL;
@@ -945,7 +955,7 @@ const char* parse_callfunc(const char* p, int require_paren, int is_custom)
/// Processes end of logical script line.
/// @param first When true, only fix up scheduling data is initialized
/// @param p Script position for error reporting in set_label
-void parse_nextline(bool first, const char* p)
+static void parse_nextline(bool first, const char *p)
{
if( !first )
{
@@ -963,7 +973,7 @@ void parse_nextline(bool first, const char* p)
* Pushes a variable into stack, processing its array index if needed.
* @see parse_variable
*/
-void parse_variable_sub_push(int word, const char *p2)
+static void parse_variable_sub_push(int word, const char *p2)
{
if( p2 ) {
const char* p3 = NULL;
@@ -994,7 +1004,7 @@ void parse_variable_sub_push(int word, const char *p2)
/// Parse a variable assignment using the direct equals operator
/// @param p script position where the function should run from
/// @return NULL if not a variable assignment, the new position otherwise
-const char* parse_variable(const char* p)
+static const char *parse_variable(const char *p)
{
int word;
c_op type = C_NOP;
@@ -1150,7 +1160,8 @@ const char* parse_variable(const char* p)
* @param p Pointer to the string to check
* @return Whether the string is a number literal
*/
-bool is_number(const char *p) {
+static bool is_number(const char *p)
+{
const char *np;
if (!p)
return false;
@@ -1181,7 +1192,7 @@ bool is_number(const char *p) {
* @param str The string to insert.
* @return the string position in the script string list.
*/
-int script_string_dup(char *str)
+static int script_string_dup(char *str)
{
int len;
int pos = script->string_list_pos;
@@ -1203,7 +1214,7 @@ int script_string_dup(char *str)
/*==========================================
* Analysis section
*------------------------------------------*/
-const char *parse_simpleexpr(const char *p)
+static const char *parse_simpleexpr(const char *p)
{
p=script->skip_space(p);
@@ -1221,7 +1232,7 @@ const char *parse_simpleexpr(const char *p)
}
}
-const char *parse_simpleexpr_paren(const char *p)
+static const char *parse_simpleexpr_paren(const char *p)
{
int i = script->syntax.curly_count - 1;
nullpo_retr(NULL, p);
@@ -1248,7 +1259,7 @@ const char *parse_simpleexpr_paren(const char *p)
return p + 1;
}
-const char *parse_simpleexpr_number(const char *p)
+static const char *parse_simpleexpr_number(const char *p)
{
char *np = NULL;
long long lli;
@@ -1270,7 +1281,7 @@ const char *parse_simpleexpr_number(const char *p)
return np;
}
-const char *parse_simpleexpr_string(const char *p)
+static const char *parse_simpleexpr_string(const char *p)
{
const char *start_point = p;
@@ -1311,7 +1322,7 @@ const char *parse_simpleexpr_string(const char *p)
return p;
}
-const char *parse_simpleexpr_name(const char *p)
+static const char *parse_simpleexpr_name(const char *p)
{
int l;
const char *pv = NULL;
@@ -1361,7 +1372,7 @@ const char *parse_simpleexpr_name(const char *p)
return p;
}
-void script_add_translatable_string(const struct script_string_buf *string, const char *start_point)
+static void script_add_translatable_string(const struct script_string_buf *string, const char *start_point)
{
struct string_translation *st = NULL;
@@ -1401,7 +1412,7 @@ void script_add_translatable_string(const struct script_string_buf *string, cons
/*==========================================
* Analysis of the expression
*------------------------------------------*/
-const char* script_parse_subexpr(const char* p,int limit)
+static const char *script_parse_subexpr(const char *p, int limit)
{
int op,opl,len;
@@ -1470,7 +1481,7 @@ const char* script_parse_subexpr(const char* p,int limit)
/*==========================================
* Evaluation of the expression
*------------------------------------------*/
-const char* parse_expr(const char *p)
+static const char *parse_expr(const char *p)
{
nullpo_retr(NULL, p);
switch(*p) {
@@ -1485,7 +1496,7 @@ const char* parse_expr(const char *p)
/*==========================================
* Analysis of the line
*------------------------------------------*/
-const char* parse_line(const char* p)
+static const char *parse_line(const char *p)
{
const char* p2;
@@ -1548,7 +1559,7 @@ const char* parse_line(const char* p)
}
// { ... } Closing process
-const char* parse_curly_close(const char* p)
+static const char *parse_curly_close(const char *p)
{
nullpo_retr(NULL, p);
if(script->syntax.curly_count <= 0) {
@@ -1607,7 +1618,7 @@ const char* parse_curly_close(const char* p)
// Syntax-related processing
// break, case, continue, default, do, for, function,
// if, switch, while ? will handle this internally.
-const char* parse_syntax(const char* p)
+static const char *parse_syntax(const char *p)
{
const char *p2 = script->skip_word(p);
@@ -2037,7 +2048,8 @@ const char* parse_syntax(const char* p)
return NULL;
}
-const char* parse_syntax_close(const char *p) {
+static const char *parse_syntax_close(const char *p)
+{
// If (...) for (...) hoge (); as to make sure closed closed once again
int flag;
@@ -2051,7 +2063,7 @@ const char* parse_syntax_close(const char *p) {
// Close judgment if, for, while, of do
// flag == 1 : closed
// flag == 0 : not closed
-const char* parse_syntax_close_sub(const char* p,int* flag)
+static const char *parse_syntax_close_sub(const char *p, int *flag)
{
char label[256];
int pos = script->syntax.curly_count - 1;
@@ -2224,7 +2236,7 @@ const char* parse_syntax_close_sub(const char* p,int* flag)
}
/// Retrieves the value of a constant.
-bool script_get_constant(const char* name, int* value)
+static bool script_get_constant(const char *name, int *value)
{
int n = script->search_str(name);
@@ -2242,7 +2254,7 @@ bool script_get_constant(const char* name, int* value)
}
/// Creates new constant or parameter with given value.
-void script_set_constant(const char *name, int value, bool is_parameter, bool is_deprecated)
+static void script_set_constant(const char *name, int value, bool is_parameter, bool is_deprecated)
{
int n = script->add_str(name);
@@ -2257,7 +2269,7 @@ void script_set_constant(const char *name, int value, bool is_parameter, bool is
}
}
/* adds data to a existent constant in the database, inserted normally via parse */
-void script_set_constant2(const char *name, int value, bool is_parameter, bool is_deprecated)
+static void script_set_constant2(const char *name, int value, bool is_parameter, bool is_deprecated)
{
int n = script->add_str(name);
@@ -2290,7 +2302,7 @@ void script_set_constant2(const char *name, int value, bool is_parameter, bool i
/**
* Loads the constants database from constants.conf
*/
-void read_constdb(void)
+static void read_constdb(void)
{
struct config_t constants_conf;
char filepath[256];
@@ -2366,12 +2378,12 @@ void read_constdb(void)
*
* @param comment The comment to set (NULL to unset)
*/
-void script_constdb_comment(const char *comment)
+static void script_constdb_comment(const char *comment)
{
(void)comment;
}
-void script_load_parameters(void)
+static void script_load_parameters(void)
{
int i = 0;
struct {
@@ -2426,7 +2438,7 @@ void script_load_parameters(void)
/*==========================================
* Display emplacement line of script
*------------------------------------------*/
-const char* script_print_line(StringBuf* buf, const char* p, const char* mark, int line)
+static const char *script_print_line(StringBuf *buf, const char *p, const char *mark, int line)
{
int i, mark_pos = 0, tabstop = TAB_SIZE;
if( p == NULL || !p[0] ) return NULL;
@@ -2465,7 +2477,8 @@ const char* script_print_line(StringBuf* buf, const char* p, const char* mark, i
#undef update_tabstop
#define CONTEXTLINES 3
-void script_errorwarning_sub(StringBuf *buf, const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos) {
+static void script_errorwarning_sub(StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos)
+{
// Find the line where the error occurred
int j;
int line = start_line;
@@ -2501,7 +2514,8 @@ void script_errorwarning_sub(StringBuf *buf, const char* src, const char* file,
}
#undef CONTEXTLINES
-void script_error(const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos) {
+static void script_error(const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos)
+{
StringBuf buf;
StrBuf->Init(&buf);
@@ -2513,7 +2527,8 @@ void script_error(const char* src, const char* file, int start_line, const char*
StrBuf->Destroy(&buf);
}
-void script_warning(const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos) {
+static void script_warning(const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos)
+{
StringBuf buf;
StrBuf->Init(&buf);
@@ -2527,7 +2542,8 @@ void script_warning(const char* src, const char* file, int start_line, const cha
/*==========================================
* Analysis of the script
*------------------------------------------*/
-struct script_code* parse_script(const char *src,const char *file,int line,int options, int *retval) {
+static struct script_code *parse_script(const char *src, const char *file, int line, int options, int *retval)
+{
const char *p,*tmpp;
int i;
struct script_code* code = NULL;
@@ -2741,7 +2757,7 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o
/// Returns the player attached to this script, identified by the rid.
/// If there is no player attached, the script is terminated.
-struct map_session_data *script_rid2sd(struct script_state *st)
+static struct map_session_data *script_rid2sd(struct script_state *st)
{
struct map_session_data *sd;
nullpo_retr(NULL, st);
@@ -2754,7 +2770,7 @@ struct map_session_data *script_rid2sd(struct script_state *st)
return sd;
}
-struct map_session_data *script_id2sd(struct script_state *st, int account_id)
+static struct map_session_data *script_id2sd(struct script_state *st, int account_id)
{
struct map_session_data *sd;
if ((sd = map->id2sd(account_id)) == NULL) {
@@ -2765,7 +2781,7 @@ struct map_session_data *script_id2sd(struct script_state *st, int account_id)
return sd;
}
-struct map_session_data *script_charid2sd(struct script_state *st, int char_id)
+static struct map_session_data *script_charid2sd(struct script_state *st, int char_id)
{
struct map_session_data *sd;
if ((sd = map->charid2sd(char_id)) == NULL) {
@@ -2776,7 +2792,7 @@ struct map_session_data *script_charid2sd(struct script_state *st, int char_id)
return sd;
}
-struct map_session_data *script_nick2sd(struct script_state *st, const char *name)
+static struct map_session_data *script_nick2sd(struct script_state *st, const char *name)
{
struct map_session_data *sd;
if ((sd = map->nick2sd(name)) == NULL) {
@@ -2787,14 +2803,16 @@ struct map_session_data *script_nick2sd(struct script_state *st, const char *nam
return sd;
}
-char *get_val_npcscope_str(struct script_state* st, struct reg_db *n, struct script_data* data) {
+static char *get_val_npcscope_str(struct script_state *st, struct reg_db *n, struct script_data *data)
+{
if (n)
return (char*)i64db_get(n->vars, reference_getuid(data));
else
return NULL;
}
-char *get_val_pc_ref_str(struct script_state *st, struct reg_db *n, struct script_data *data) {
+static char *get_val_pc_ref_str(struct script_state *st, struct reg_db *n, struct script_data *data)
+{
struct script_reg_str *p = NULL;
nullpo_retr(NULL, n);
@@ -2802,7 +2820,8 @@ char *get_val_pc_ref_str(struct script_state *st, struct reg_db *n, struct scrip
return p ? p->value : NULL;
}
-char *get_val_instance_str(struct script_state* st, const char* name, struct script_data* data) {
+static char *get_val_instance_str(struct script_state *st, const char *name, struct script_data *data)
+{
nullpo_retr(NULL, st);
if (st->instance_id >= 0) {
return (char*)i64db_get(instance->list[st->instance_id].regs.vars, reference_getuid(data));
@@ -2812,14 +2831,16 @@ char *get_val_instance_str(struct script_state* st, const char* name, struct scr
}
}
-int get_val_npcscope_num(struct script_state* st, struct reg_db *n, struct script_data* data) {
+static int get_val_npcscope_num(struct script_state *st, struct reg_db *n, struct script_data *data)
+{
if (n)
return (int)i64db_iget(n->vars, reference_getuid(data));
else
return 0;
}
-int get_val_pc_ref_num(struct script_state *st, struct reg_db *n, struct script_data *data) {
+static int get_val_pc_ref_num(struct script_state *st, struct reg_db *n, struct script_data *data)
+{
struct script_reg_num *p = NULL;
nullpo_retr(0, n);
@@ -2827,7 +2848,8 @@ int get_val_pc_ref_num(struct script_state *st, struct reg_db *n, struct script_
return p ? p->value : 0;
}
-int get_val_instance_num(struct script_state* st, const char* name, struct script_data* data) {
+static int get_val_instance_num(struct script_state *st, const char *name, struct script_data *data)
+{
if (st->instance_id >= 0)
return (int)i64db_iget(instance->list[st->instance_id].regs.vars, reference_getuid(data));
else {
@@ -2843,7 +2865,8 @@ int get_val_instance_num(struct script_state* st, const char* name, struct scrip
* @param data[in,out] variable/constant.
* @return pointer to data, for convenience.
*/
-struct script_data *get_val(struct script_state* st, struct script_data* data) {
+static struct script_data *get_val(struct script_state *st, struct script_data *data)
+{
const char* name;
char prefix;
char postfix;
@@ -3000,7 +3023,7 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
* @param ref[in] the container to look up the reference into.
* @return the retrieved value of the reference.
*/
-const void *get_val2(struct script_state *st, int64 uid, struct reg_db *ref)
+static const void *get_val2(struct script_state *st, int64 uid, struct reg_db *ref)
{
struct script_data* data;
nullpo_retr(NULL, st);
@@ -3016,7 +3039,8 @@ const void *get_val2(struct script_state *st, int64 uid, struct reg_db *ref)
* Because, currently, array members with key 0 are indifferenciable from normal variables, we should ensure its actually in
* Will be gone as soon as undefined var feature is implemented
**/
-void script_array_ensure_zero(struct script_state *st, struct map_session_data *sd, int64 uid, struct reg_db *ref) {
+static void script_array_ensure_zero(struct script_state *st, struct map_session_data *sd, int64 uid, struct reg_db *ref)
+{
const char *name = script->get_str(script_getvarid(uid));
struct reg_db *src = NULL;
bool insert = false;
@@ -3063,7 +3087,8 @@ void script_array_ensure_zero(struct script_state *st, struct map_session_data *
/**
* Returns array size by ID
**/
-unsigned int script_array_size(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
+static unsigned int script_array_size(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref)
+{
struct script_array *sa = NULL;
struct reg_db *src = script->array_src(st, sd, name, ref);
@@ -3075,7 +3100,8 @@ unsigned int script_array_size(struct script_state *st, struct map_session_data
/**
* Returns array's highest key (for that awful getarraysize implementation that doesn't really gets the array size)
**/
-unsigned int script_array_highest_key(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
+static unsigned int script_array_highest_key(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref)
+{
struct script_array *sa = NULL;
struct reg_db *src = script->array_src(st, sd, name, ref);
@@ -3096,7 +3122,7 @@ unsigned int script_array_highest_key(struct script_state *st, struct map_sessio
}
return 0;
}
-int script_free_array_db(union DBKey key, struct DBData *data, va_list ap)
+static int script_free_array_db(union DBKey key, struct DBData *data, va_list ap)
{
struct script_array *sa = DB->data2ptr(data);
aFree(sa->members);
@@ -3106,7 +3132,8 @@ int script_free_array_db(union DBKey key, struct DBData *data, va_list ap)
/**
* Clears script_array and removes it from script->array_db
**/
-void script_array_delete(struct reg_db *src, struct script_array *sa) {
+static void script_array_delete(struct reg_db *src, struct script_array *sa)
+{
nullpo_retv(src);
nullpo_retv(sa);
aFree(sa->members);
@@ -3118,7 +3145,8 @@ void script_array_delete(struct reg_db *src, struct script_array *sa) {
*
* @param idx the index of the member in script_array struct list, not of the actual array member
**/
-void script_array_remove_member(struct reg_db *src, struct script_array *sa, unsigned int idx) {
+static void script_array_remove_member(struct reg_db *src, struct script_array *sa, unsigned int idx)
+{
unsigned int i, cursor;
nullpo_retv(sa);
@@ -3145,7 +3173,8 @@ void script_array_remove_member(struct reg_db *src, struct script_array *sa, uns
*
* @param idx the index of the array member being inserted
**/
-void script_array_add_member(struct script_array *sa, unsigned int idx) {
+static void script_array_add_member(struct script_array *sa, unsigned int idx)
+{
nullpo_retv(sa);
RECREATE(sa->members, unsigned int, ++sa->size);
sa->members[sa->size - 1] = idx;
@@ -3154,7 +3183,8 @@ void script_array_add_member(struct script_array *sa, unsigned int idx) {
* Obtains the source of the array database for this type and scenario
* Initializes such database when not yet initialized.
**/
-struct reg_db *script_array_src(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
+static struct reg_db *script_array_src(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref)
+{
struct reg_db *src = NULL;
nullpo_retr(NULL, name);
@@ -3205,7 +3235,8 @@ struct reg_db *script_array_src(struct script_state *st, struct map_session_data
* @param num[in] Variable ID
* @param empty[in] Whether the modified member is empty (needs to be removed)
**/
-void script_array_update(struct reg_db *src, int64 num, bool empty) {
+static void script_array_update(struct reg_db *src, int64 num, bool empty)
+{
struct script_array *sa = NULL;
int id = script_getvarid(num);
unsigned int index = script_getvaridx(num);
@@ -3246,7 +3277,7 @@ void script_array_update(struct reg_db *src, int64 num, bool empty) {
}
}
-void set_reg_npcscope_str(struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str)
+static void set_reg_npcscope_str(struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str)
{
if (n)
{
@@ -3263,7 +3294,7 @@ void set_reg_npcscope_str(struct script_state* st, struct reg_db *n, int64 num,
}
}
-void set_reg_pc_ref_str(struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str)
+static void set_reg_pc_ref_str(struct script_state *st, struct reg_db *n, int64 num, const char *name, const char *str)
{
struct script_reg_str *p = NULL;
unsigned int index = script_getvaridx(num);
@@ -3312,7 +3343,7 @@ void set_reg_pc_ref_str(struct script_state *st, struct reg_db *n, int64 num, co
}
}
-void set_reg_pc_ref_num(struct script_state *st, struct reg_db *n, int64 num, const char *name, int val)
+static void set_reg_pc_ref_num(struct script_state *st, struct reg_db *n, int64 num, const char *name, int val)
{
struct script_reg_num *p = NULL;
unsigned int index = script_getvaridx(num);
@@ -3356,7 +3387,7 @@ void set_reg_pc_ref_num(struct script_state *st, struct reg_db *n, int64 num, co
}
}
-void set_reg_npcscope_num(struct script_state* st, struct reg_db *n, int64 num, const char* name, int val)
+static void set_reg_npcscope_num(struct script_state *st, struct reg_db *n, int64 num, const char *name, int val)
{
if (n) {
if (val != 0) {
@@ -3371,7 +3402,7 @@ void set_reg_npcscope_num(struct script_state* st, struct reg_db *n, int64 num,
}
}
-void set_reg_instance_str(struct script_state* st, int64 num, const char* name, const char *str)
+static void set_reg_instance_str(struct script_state *st, int64 num, const char *name, const char *str)
{
nullpo_retv(st);
if (st->instance_id >= 0) {
@@ -3390,7 +3421,7 @@ void set_reg_instance_str(struct script_state* st, int64 num, const char* name,
}
}
-void set_reg_instance_num(struct script_state* st, int64 num, const char* name, int val)
+static void set_reg_instance_num(struct script_state *st, int64 num, const char *name, int val)
{
nullpo_retv(st);
if (st->instance_id >= 0) {
@@ -3423,7 +3454,7 @@ void set_reg_instance_num(struct script_state* st, int64 num, const char* name,
*
* TODO: return values are screwed up, have been for some time (reaad: years), e.g. some functions return 1 failure and success.
*------------------------------------------*/
-int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref)
+static int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref)
{
char prefix;
nullpo_ret(name);
@@ -3546,18 +3577,18 @@ int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, con
}
}
-int set_var(struct map_session_data *sd, char *name, void *val)
+static int set_var(struct map_session_data *sd, char *name, void *val)
{
return script->set_reg(NULL, sd, reference_uid(script->add_str(name),0), name, val, NULL);
}
-void setd_sub(struct script_state *st, struct map_session_data *sd, const char *varname, int elem, const void *value, struct reg_db *ref)
+static void setd_sub(struct script_state *st, struct map_session_data *sd, const char *varname, int elem, const void *value, struct reg_db *ref)
{
script->set_reg(st, sd, reference_uid(script->add_str(varname),elem), varname, value, ref);
}
/// Converts the data to a string
-const char *conv_str(struct script_state *st, struct script_data* data)
+static const char *conv_str(struct script_state *st, struct script_data *data)
{
script->get_val(st, data);
if (data_isstring(data)) {
@@ -3591,7 +3622,7 @@ const char *conv_str(struct script_state *st, struct script_data* data)
}
/// Converts the data to an int
-int conv_num(struct script_state *st, struct script_data *data)
+static int conv_num(struct script_state *st, struct script_data *data)
{
long num;
@@ -3649,7 +3680,8 @@ int conv_num(struct script_state *st, struct script_data *data)
//
/// Increases the size of the stack
-void stack_expand(struct script_stack* stack) {
+static void stack_expand(struct script_stack *stack)
+{
nullpo_retv(stack);
stack->sp_max += 64;
stack->stack_data = (struct script_data*)aRealloc(stack->stack_data,
@@ -3659,7 +3691,8 @@ void stack_expand(struct script_stack* stack) {
}
/// Pushes a value into the stack (with reference)
-struct script_data* push_val(struct script_stack* stack, enum c_op type, int64 val, struct reg_db *ref) {
+static struct script_data *push_val(struct script_stack *stack, enum c_op type, int64 val, struct reg_db *ref)
+{
nullpo_retr(NULL, stack);
if( stack->sp >= stack->sp_max )
script->stack_expand(stack);
@@ -3671,7 +3704,7 @@ struct script_data* push_val(struct script_stack* stack, enum c_op type, int64 v
}
/// Pushes a string into the stack
-struct script_data *push_str(struct script_stack *stack, char *str)
+static struct script_data *push_str(struct script_stack *stack, char *str)
{
nullpo_retr(NULL, stack);
if( stack->sp >= stack->sp_max )
@@ -3684,7 +3717,7 @@ struct script_data *push_str(struct script_stack *stack, char *str)
}
/// Pushes a constant string into the stack
-struct script_data *push_conststr(struct script_stack *stack, const char *str)
+static struct script_data *push_conststr(struct script_stack *stack, const char *str)
{
nullpo_retr(NULL, stack);
if( stack->sp >= stack->sp_max )
@@ -3697,7 +3730,8 @@ struct script_data *push_conststr(struct script_stack *stack, const char *str)
}
/// Pushes a retinfo into the stack
-struct script_data* push_retinfo(struct script_stack* stack, struct script_retinfo* ri, struct reg_db *ref) {
+static struct script_data *push_retinfo(struct script_stack *stack, struct script_retinfo *ri, struct reg_db *ref)
+{
nullpo_retr(NULL, stack);
if( stack->sp >= stack->sp_max )
script->stack_expand(stack);
@@ -3709,7 +3743,8 @@ struct script_data* push_retinfo(struct script_stack* stack, struct script_retin
}
/// Pushes a copy of the target position into the stack
-struct script_data* push_copy(struct script_stack* stack, int pos) {
+static struct script_data *push_copy(struct script_stack *stack, int pos)
+{
nullpo_retr(NULL, stack);
switch( stack->stack_data[pos].type ) {
case C_CONSTSTR:
@@ -3734,7 +3769,8 @@ struct script_data* push_copy(struct script_stack* stack, int pos) {
/// Removes the values in indexes [start,end[ from the stack.
/// Adjusts all stack pointers.
-void pop_stack(struct script_state* st, int start, int end) {
+static void pop_stack(struct script_state *st, int start, int end)
+{
struct script_stack* stack;
struct script_data* data;
int i;
@@ -3806,7 +3842,7 @@ void pop_stack(struct script_state* st, int start, int end) {
/*==========================================
* Release script dependent variable, dependent variable of function
*------------------------------------------*/
-void script_free_vars(struct DBMap *var_storage)
+static void script_free_vars(struct DBMap *var_storage)
{
if( var_storage ) {
// destroy the storage construct containing the variables
@@ -3814,7 +3850,7 @@ void script_free_vars(struct DBMap *var_storage)
}
}
-void script_free_code(struct script_code* code)
+static void script_free_code(struct script_code *code)
{
nullpo_retv(code);
@@ -3834,7 +3870,8 @@ void script_free_code(struct script_code* code)
/// @param rid Who is running the script (attached player)
/// @param oid Where the code is being run (npc 'object')
/// @return Script state
-struct script_state* script_alloc_state(struct script_code* rootscript, int pos, int rid, int oid) {
+static struct script_state *script_alloc_state(struct script_code *rootscript, int pos, int rid, int oid)
+{
struct script_state* st;
st = ers_alloc(script->st_ers, struct script_state);
@@ -3876,7 +3913,8 @@ struct script_state* script_alloc_state(struct script_code* rootscript, int pos,
/// Frees a script state.
///
/// @param st Script state
-void script_free_state(struct script_state* st) {
+static void script_free_state(struct script_state *st)
+{
nullpo_retv(st);
if( idb_exists(script->st_db,st->id) ) {
struct map_session_data *sd = st->rid ? map->id2sd(st->rid) : NULL;
@@ -3938,7 +3976,8 @@ void script_free_state(struct script_state* st) {
* @param st[in] Script state.
* @param ref[in] Reference to be added.
*/
-void script_add_pending_ref(struct script_state *st, struct reg_db *ref) {
+static void script_add_pending_ref(struct script_state *st, struct reg_db *ref)
+{
nullpo_retv(st);
RECREATE(st->pending_refs, struct reg_db*, ++st->pending_ref_count);
st->pending_refs[st->pending_ref_count-1] = ref;
@@ -3950,7 +3989,7 @@ void script_add_pending_ref(struct script_state *st, struct reg_db *ref) {
/*==========================================
* Read command
*------------------------------------------*/
-c_op get_com(const struct script_buf *scriptbuf, int *pos)
+static c_op get_com(const struct script_buf *scriptbuf, int *pos)
{
int i = 0, j = 0;
@@ -3967,7 +4006,7 @@ c_op get_com(const struct script_buf *scriptbuf, int *pos)
/*==========================================
* Income figures
*------------------------------------------*/
-int get_num(const struct script_buf *scriptbuf, int *pos)
+static int get_num(const struct script_buf *scriptbuf, int *pos)
{
int i,j;
i=0; j=0;
@@ -3980,7 +4019,7 @@ int get_num(const struct script_buf *scriptbuf, int *pos)
/// Ternary operators
/// test ? if_true : if_false
-void op_3(struct script_state* st, int op)
+static void op_3(struct script_state *st, int op)
{
struct script_data* data;
int flag = 0;
@@ -4017,7 +4056,7 @@ void op_3(struct script_state* st, int op)
/// s1 RE_EQ s2 -> i
/// s1 RE_NE s2 -> i
/// s1 ADD s2 -> s
-void op_2str(struct script_state* st, int op, const char* s1, const char* s2)
+static void op_2str(struct script_state *st, int op, const char *s1, const char *s2)
{
int a = 0;
@@ -4114,7 +4153,7 @@ void op_2str(struct script_state* st, int op, const char* s1, const char* s2)
/// Binary number operators
/// i OP i -> i
-void op_2num(struct script_state* st, int op, int i1, int i2)
+static void op_2num(struct script_state *st, int op, int i1, int i2)
{
int ret;
int64 ret64;
@@ -4174,7 +4213,7 @@ void op_2num(struct script_state* st, int op, int i1, int i2)
}
/// Binary operators
-void op_2(struct script_state *st, int op)
+static void op_2(struct script_state *st, int op)
{
struct script_data* left, leftref;
struct script_data* right;
@@ -4248,7 +4287,7 @@ void op_2(struct script_state *st, int op)
/// NEG i -> i
/// NOT i -> i
/// LNOT i -> i
-void op_1(struct script_state* st, int op)
+static void op_1(struct script_state *st, int op)
{
struct script_data* data;
int i1;
@@ -4286,7 +4325,7 @@ void op_1(struct script_state* st, int op)
///
/// @param st Script state whose stack arguments should be inspected.
/// @param func Built-in function for which the arguments are intended.
-bool script_check_buildin_argtype(struct script_state* st, int func)
+static bool script_check_buildin_argtype(struct script_state *st, int func)
{
int idx, invalid = 0;
char* sf;
@@ -4372,7 +4411,7 @@ bool script_check_buildin_argtype(struct script_state* st, int func)
/// Executes a buildin command.
/// Stack: C_NAME(<command>) C_ARG <arg0> <arg1> ... <argN>
-int run_func(struct script_state *st)
+static int run_func(struct script_state *st)
{
struct script_data* data;
int i,start_sp,end_sp,func;
@@ -4465,7 +4504,8 @@ int run_func(struct script_state *st)
/*==========================================
* script execution
*------------------------------------------*/
-void run_script(struct script_code *rootscript, int pos, int rid, int oid) {
+static void run_script(struct script_code *rootscript, int pos, int rid, int oid)
+{
struct script_state *st;
if( rootscript == NULL || pos < 0 )
@@ -4479,7 +4519,7 @@ void run_script(struct script_code *rootscript, int pos, int rid, int oid) {
script->run_main(st);
}
-void script_stop_instances(struct script_code *code)
+static void script_stop_instances(struct script_code *code)
{
struct DBIterator *iter;
struct script_state* st;
@@ -4501,7 +4541,8 @@ void script_stop_instances(struct script_code *code)
/*==========================================
* Timer function for sleep
*------------------------------------------*/
-int run_script_timer(int tid, int64 tick, int id, intptr_t data) {
+static int run_script_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct script_state *st = idb_get(script->st_db,(int)data);
if( st ) {
struct map_session_data *sd = map->id2sd(st->rid);
@@ -4522,7 +4563,8 @@ int run_script_timer(int tid, int64 tick, int id, intptr_t data) {
///
/// @param st Script state to detach.
/// @param dequeue_event Whether to schedule any queued events, when there was no previous script.
-void script_detach_state(struct script_state* st, bool dequeue_event) {
+static void script_detach_state(struct script_state *st, bool dequeue_event)
+{
struct map_session_data* sd;
nullpo_retv(st);
@@ -4556,7 +4598,8 @@ void script_detach_state(struct script_state* st, bool dequeue_event) {
/// Attaches script state to possibly attached character and backups it's previous script, if any.
///
/// @param st Script state to attach.
-void script_attach_state(struct script_state* st) {
+static void script_attach_state(struct script_state *st)
+{
struct map_session_data* sd;
nullpo_retv(st);
@@ -4588,7 +4631,8 @@ void script_attach_state(struct script_state* st) {
/*==========================================
* The main part of the script execution
*------------------------------------------*/
-void run_script_main(struct script_state *st) {
+static void run_script_main(struct script_state *st)
+{
int cmdcount = script->config.check_cmdcount;
int gotocount = script->config.check_gotocount;
struct map_session_data *sd;
@@ -4778,7 +4822,7 @@ void run_script_main(struct script_state *st) {
*
* @retval false in case of error.
*/
-bool script_config_read(const char *filename, bool imported)
+static bool script_config_read(const char *filename, bool imported)
{
struct config_t config;
struct config_setting_t * setting = NULL;
@@ -4825,7 +4869,7 @@ bool script_config_read(const char *filename, bool imported)
/**
* @see DBApply
*/
-int db_script_free_code_sub(union DBKey key, struct DBData *data, va_list ap)
+static int db_script_free_code_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct script_code *code = DB->data2ptr(data);
if (code)
@@ -4833,7 +4877,7 @@ int db_script_free_code_sub(union DBKey key, struct DBData *data, va_list ap)
return 0;
}
-void script_run_autobonus(const char *autobonus, int id, int pos)
+static void script_run_autobonus(const char *autobonus, int id, int pos)
{
struct script_code *scriptroot = (struct script_code *)strdb_get(script->autobonus_db, autobonus);
@@ -4843,7 +4887,7 @@ void script_run_autobonus(const char *autobonus, int id, int pos)
}
}
-void script_add_autobonus(const char *autobonus)
+static void script_add_autobonus(const char *autobonus)
{
if( strdb_get(script->autobonus_db, autobonus) == NULL ) {
struct script_code *scriptroot = script->parse(autobonus, "autobonus", 0, 0, NULL);
@@ -4854,7 +4898,8 @@ void script_add_autobonus(const char *autobonus)
}
/// resets a temporary character array variable to given value
-void script_cleararray_pc(struct map_session_data* sd, const char* varname, void* value) {
+static void script_cleararray_pc(struct map_session_data *sd, const char *varname, void *value)
+{
struct script_array *sa = NULL;
struct reg_db *src = NULL;
unsigned int i, *list = NULL, size = 0;
@@ -4881,7 +4926,8 @@ void script_cleararray_pc(struct map_session_data* sd, const char* varname, void
/// sets a temporary character array variable element idx to given value
/// @param refcache Pointer to an int variable, which keeps a copy of the reference to varname and must be initialized to 0. Can be NULL if only one element is set.
-void script_setarray_pc(struct map_session_data* sd, const char* varname, uint32 idx, void* value, int* refcache) {
+static void script_setarray_pc(struct map_session_data *sd, const char *varname, uint32 idx, void *value, int *refcache)
+{
int key;
if( idx >= SCRIPT_MAX_ARRAYSIZE ) {
@@ -4901,7 +4947,7 @@ void script_setarray_pc(struct map_session_data* sd, const char* varname, uint32
/**
* Clears persistent variables from memory
**/
-int script_reg_destroy(union DBKey key, struct DBData *data, va_list ap)
+static int script_reg_destroy(union DBKey key, struct DBData *data, va_list ap)
{
struct script_reg_state *src;
@@ -4926,7 +4972,8 @@ int script_reg_destroy(union DBKey key, struct DBData *data, va_list ap)
/**
* Clears a single persistent variable
**/
-void script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct script_reg_state *data) {
+static void script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct script_reg_state *data)
+{
nullpo_retv(sd);
nullpo_retv(data);
i64db_remove(sd->regs.vars, reg);
@@ -4942,21 +4989,23 @@ void script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct sc
ers_free(pc->num_reg_ers,(struct script_reg_num*)data);
}
}
-unsigned int *script_array_cpy_list(struct script_array *sa) {
+static unsigned int *script_array_cpy_list(struct script_array *sa)
+{
nullpo_retr(NULL, sa);
if( sa->size > script->generic_ui_array_size )
script->generic_ui_array_expand(sa->size);
memcpy(script->generic_ui_array, sa->members, sizeof(unsigned int)*sa->size);
return script->generic_ui_array;
}
-void script_generic_ui_array_expand (unsigned int plus) {
+static void script_generic_ui_array_expand(unsigned int plus)
+{
script->generic_ui_array_size += plus + 100;
RECREATE(script->generic_ui_array, unsigned int, script->generic_ui_array_size);
}
/*==========================================
* Destructor
*------------------------------------------*/
-void do_final_script(void)
+static void do_final_script(void)
{
int i;
struct DBIterator *iter;
@@ -5091,7 +5140,8 @@ void do_final_script(void)
/**
*
**/
-uint8 script_add_language(const char *name) {
+static uint8 script_add_language(const char *name)
+{
uint8 lang_id = script->max_lang_id;
nullpo_ret(name);
@@ -5103,7 +5153,8 @@ uint8 script_add_language(const char *name) {
/**
* Goes thru db/translations.conf file
**/
-void script_load_translations(void) {
+static void script_load_translations(void)
+{
struct config_t translations_conf;
const char *config_filename = "db/translations.conf"; // FIXME hardcoded name
struct config_setting_t *translations = NULL;
@@ -5187,7 +5238,7 @@ void script_load_translations(void) {
* @param file The filename.
* @return The corresponding translation name.
*/
-const char *script_get_translation_file_name(const char *file)
+static const char *script_get_translation_file_name(const char *file)
{
const char *basename = NULL, *last_dot = NULL;
@@ -5231,7 +5282,7 @@ const char *script_get_translation_file_name(const char *file)
* @return success state
* @retval true if a new string was added.
*/
-bool script_load_translation_addstring(const char *file, uint8 lang_id, const char *msgctxt, const struct script_string_buf *msgid, const struct script_string_buf *msgstr)
+static bool script_load_translation_addstring(const char *file, uint8 lang_id, const char *msgctxt, const struct script_string_buf *msgid, const struct script_string_buf *msgstr)
{
nullpo_retr(false, file);
nullpo_retr(false, msgctxt);
@@ -5299,7 +5350,7 @@ bool script_load_translation_addstring(const char *file, uint8 lang_id, const ch
* @param lang_id The language identifier.
* @return The amount of strings loaded.
*/
-int script_load_translation(const char *file, uint8 lang_id)
+static int script_load_translation(const char *file, uint8 lang_id)
{
int translations = 0;
char line[1024];
@@ -5439,7 +5490,8 @@ int script_load_translation(const char *file, uint8 lang_id)
/**
*
**/
-void script_clear_translations(bool reload) {
+static void script_clear_translations(bool reload)
+{
uint32 i;
if( script->string_list )
@@ -5473,7 +5525,7 @@ void script_clear_translations(bool reload) {
/**
*
**/
-int script_translation_db_destroyer(union DBKey key, struct DBData *data, va_list ap)
+static int script_translation_db_destroyer(union DBKey key, struct DBData *data, va_list ap)
{
struct DBMap *string_db = DB->data2ptr(data);
@@ -5494,7 +5546,7 @@ int script_translation_db_destroyer(union DBKey key, struct DBData *data, va_lis
/**
*
**/
-void script_parser_clean_leftovers(void)
+static void script_parser_clean_leftovers(void)
{
VECTOR_CLEAR(script->buf);
@@ -5509,7 +5561,8 @@ void script_parser_clean_leftovers(void)
/**
* Performs cleanup after all parsing is processed
**/
-int script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) {
+static int script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data)
+{
script->parser_clean_leftovers();
script->parse_cleanup_timer_id = INVALID_TIMER;
@@ -5520,7 +5573,8 @@ int script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) {
/*==========================================
* Initialization
*------------------------------------------*/
-void do_init_script(bool minimal) {
+static void do_init_script(bool minimal)
+{
script->parse_cleanup_timer_id = INVALID_TIMER;
VECTOR_INIT(script->parse_simpleexpr_strbuf);
@@ -5550,7 +5604,7 @@ void do_init_script(bool minimal) {
script->load_translations();
}
-int script_reload(void)
+static int script_reload(void)
{
int i;
struct DBIterator *iter;
@@ -5602,7 +5656,8 @@ int script_reload(void)
return 0;
}
/* returns name of current function being run, from within the stack [Ind/Hercules] */
-const char *script_getfuncname(struct script_state *st) {
+static const char *script_getfuncname(struct script_state *st)
+{
struct script_data *data;
nullpo_retr(NULL, st);
@@ -5626,7 +5681,7 @@ const char *script_getfuncname(struct script_state *st) {
* already initialized)
* @retval false if an error occurs.
*/
-bool script_sprintf_helper(struct script_state *st, int start, struct StringBuf *out)
+static bool script_sprintf_helper(struct script_state *st, int start, struct StringBuf *out)
{
const char *format = NULL;
const char *p = NULL, *np = NULL;
@@ -5851,7 +5906,7 @@ bool script_sprintf_helper(struct script_state *st, int start, struct StringBuf
/// If a dialog doesn't exist yet, one is created.
///
/// mes "<message>";
-BUILDIN(mes)
+static BUILDIN(mes)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -5872,7 +5927,7 @@ BUILDIN(mes)
* mes "<message>";
* @endcode
*/
-BUILDIN(mesf)
+static BUILDIN(mesf)
{
struct map_session_data *sd = script->rid2sd(st);
struct StringBuf buf;
@@ -5897,7 +5952,7 @@ BUILDIN(mesf)
/// The dialog text is cleared and the script continues when the button is pressed.
///
/// next;
-BUILDIN(next)
+static BUILDIN(next)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -5914,7 +5969,7 @@ BUILDIN(next)
/// The dialog is closed when the button is pressed.
///
/// close;
-BUILDIN(close)
+static BUILDIN(close)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -5929,7 +5984,7 @@ BUILDIN(close)
/// The dialog is closed and the script continues when the button is pressed.
///
/// close2;
-BUILDIN(close2)
+static BUILDIN(close2)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -5949,7 +6004,7 @@ BUILDIN(close2)
/// Counts the number of valid and total number of options in 'str'
/// If max_count > 0 the counting stops when that valid option is reached
/// total is incremented for each option (NULL is supported)
-int menu_countoptions(const char* str, int max_count, int* total)
+static int menu_countoptions(const char *str, int max_count, int *total)
{
int count = 0;
int bogus_total;
@@ -5999,7 +6054,7 @@ int menu_countoptions(const char* str, int max_count, int* total)
/// NOTE: the client closes the npc dialog when cancel is pressed
///
/// menu "<option_text>",<target_label>{,"<option_text>",<target_label>,...};
-BUILDIN(menu)
+static BUILDIN(menu)
{
int i;
const char* text;
@@ -6121,7 +6176,7 @@ BUILDIN(menu)
/// select(<option_text>{,<option_text>,...}) -> <selected_option>
///
/// @see menu
-BUILDIN(select)
+static BUILDIN(select)
{
int i;
const char* text;
@@ -6196,7 +6251,7 @@ BUILDIN(select)
/// prompt(<option_text>{,<option_text>,...}) -> <selected_option>
///
/// @see menu
-BUILDIN(prompt)
+static BUILDIN(prompt)
{
int i;
const char *text;
@@ -6278,7 +6333,7 @@ BUILDIN(prompt)
/// Jumps to the target script label.
///
/// goto <label>;
-BUILDIN(goto)
+static BUILDIN(goto)
{
if( !data_islabel(script_getdata(st,2)) )
{
@@ -6296,7 +6351,7 @@ BUILDIN(goto)
/*==========================================
* user-defined function call
*------------------------------------------*/
-BUILDIN(callfunc)
+static BUILDIN(callfunc)
{
int i, j;
struct script_retinfo* ri;
@@ -6356,7 +6411,7 @@ BUILDIN(callfunc)
/*==========================================
* subroutine call
*------------------------------------------*/
-BUILDIN(callsub)
+static BUILDIN(callsub)
{
int i,j;
struct script_retinfo* ri;
@@ -6409,7 +6464,7 @@ BUILDIN(callsub)
/// If the argument doesn't exist
///
/// getarg(<index>{,<default_value>}) -> <value>
-BUILDIN(getarg)
+static BUILDIN(getarg)
{
struct script_retinfo* ri;
int idx;
@@ -6443,7 +6498,8 @@ BUILDIN(getarg)
///
/// return;
/// return <value>;
-BUILDIN(return) {
+static BUILDIN(return)
+{
st->state = RETFUNC;
if( st->stack->defsp < 1 || st->stack->stack_data[st->stack->defsp-1].type != C_RETINFO ) {
@@ -6493,7 +6549,7 @@ BUILDIN(return) {
/// If <min> is greater than <max>, their numbers are switched.
/// rand(<range>) -> <int>
/// rand(<min>,<max>) -> <int>
-BUILDIN(rand)
+static BUILDIN(rand)
{
int range;
int min;
@@ -6522,7 +6578,7 @@ BUILDIN(rand)
/*==========================================
* Warp sd to str,x,y or Random or SavePoint/Save
*------------------------------------------*/
-BUILDIN(warp)
+static BUILDIN(warp)
{
int ret;
int x,y;
@@ -6558,7 +6614,7 @@ BUILDIN(warp)
/*==========================================
* Warp a specified area
*------------------------------------------*/
-int buildin_areawarp_sub(struct block_list *bl, va_list ap)
+static int buildin_areawarp_sub(struct block_list *bl, va_list ap)
{
int x2,y2,x3,y3;
unsigned int index;
@@ -6599,7 +6655,7 @@ int buildin_areawarp_sub(struct block_list *bl, va_list ap)
}
return 0;
}
-BUILDIN(areawarp)
+static BUILDIN(areawarp)
{
int16 m, x0,y0,x1,y1, x2,y2,x3=0,y3=0;
unsigned int index;
@@ -6641,7 +6697,7 @@ BUILDIN(areawarp)
/*==========================================
* areapercentheal <map>,<x1>,<y1>,<x2>,<y2>,<hp>,<sp>
*------------------------------------------*/
-int buildin_areapercentheal_sub(struct block_list *bl, va_list ap)
+static int buildin_areapercentheal_sub(struct block_list *bl, va_list ap)
{
int hp = va_arg(ap, int);
int sp = va_arg(ap, int);
@@ -6655,7 +6711,8 @@ int buildin_areapercentheal_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(areapercentheal) {
+static BUILDIN(areapercentheal)
+{
int hp,sp,m;
const char *mapname;
int x0,y0,x1,y1;
@@ -6681,7 +6738,8 @@ BUILDIN(areapercentheal) {
* another player npc-session.
* Using: warpchar "mapname",x,y,Char_ID;
*------------------------------------------*/
-BUILDIN(warpchar) {
+static BUILDIN(warpchar)
+{
int x,y,a;
const char *str;
struct map_session_data *sd;
@@ -6711,7 +6769,7 @@ BUILDIN(warpchar) {
* If 'from_mapname' is specified, only the party members on that map will be warped
* If 'include_leader' option is set to false, the leader will be warped too.
*------------------------------------------*/
-BUILDIN(warpparty)
+static BUILDIN(warpparty)
{
struct map_session_data *sd = NULL;
struct map_session_data *pl_sd;
@@ -6806,7 +6864,7 @@ BUILDIN(warpparty)
* Warpguild - [Fredzilla]
* Syntax: warpguild "mapname",x,y,Guild_ID,{"from_mapname"};
*------------------------------------------*/
-BUILDIN(warpguild)
+static BUILDIN(warpguild)
{
struct map_session_data *sd = NULL;
struct guild* g;
@@ -6871,7 +6929,7 @@ BUILDIN(warpguild)
/*==========================================
* Force Heal a player (hp and sp)
*------------------------------------------*/
-BUILDIN(heal)
+static BUILDIN(heal)
{
int hp,sp;
struct map_session_data *sd = script->rid2sd(st);
@@ -6886,7 +6944,7 @@ BUILDIN(heal)
/*==========================================
* Heal a player by item (get vit bonus etc)
*------------------------------------------*/
-BUILDIN(itemheal)
+static BUILDIN(itemheal)
{
struct map_session_data *sd;
int hp,sp;
@@ -6909,7 +6967,7 @@ BUILDIN(itemheal)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(percentheal)
+static BUILDIN(percentheal)
{
int hp,sp;
struct map_session_data *sd;
@@ -6940,7 +6998,7 @@ BUILDIN(percentheal)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(jobchange)
+static BUILDIN(jobchange)
{
int class, upper=-1;
@@ -6962,7 +7020,7 @@ BUILDIN(jobchange)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(jobname)
+static BUILDIN(jobname)
{
int class = script_getnum(st,2);
script_pushconststr(st, pc->job_name(class));
@@ -6976,7 +7034,7 @@ BUILDIN(jobname)
/// shorter than 'min' and 0 otherwise.
///
/// input(<var>{,<min>{,<max>}}) -> <int>
-BUILDIN(input)
+static BUILDIN(input)
{
struct script_data* data;
int64 uid;
@@ -7029,13 +7087,13 @@ BUILDIN(input)
}
// declare the copyarray method here for future reference
-BUILDIN(copyarray);
+static BUILDIN(copyarray);
/// Sets the value of a variable.
/// The value is converted to the type of the variable.
///
/// set(<variable>,<value>) -> <variable>
-BUILDIN(__setr)
+static BUILDIN(__setr)
{
struct map_session_data *sd = NULL;
struct script_data* data;
@@ -7123,7 +7181,7 @@ BUILDIN(__setr)
/// ex: setarray arr[1],1,2,3;
///
/// setarray <array variable>,<value1>{,<value2>...};
-BUILDIN(setarray)
+static BUILDIN(setarray)
{
struct script_data* data;
const char* name;
@@ -7173,7 +7231,7 @@ BUILDIN(setarray)
/// ex: cleararray arr[0],0,1;
///
/// cleararray <array variable>,<value>,<count>;
-BUILDIN(cleararray)
+static BUILDIN(cleararray)
{
struct script_data* data;
const char* name;
@@ -7221,7 +7279,7 @@ BUILDIN(cleararray)
/// ex: copyarray arr[0],arr[2],2;
///
/// copyarray <destination array variable>,<source array variable>,<count>;
-BUILDIN(copyarray)
+static BUILDIN(copyarray)
{
struct script_data* data1;
struct script_data* data2;
@@ -7308,7 +7366,7 @@ BUILDIN(copyarray)
/// ex: getarraysize(arr[3])
///
/// getarraysize(<array variable>) -> <int>
-BUILDIN(getarraysize)
+static BUILDIN(getarraysize)
{
struct script_data* data;
@@ -7325,12 +7383,12 @@ BUILDIN(getarraysize)
script_pushint(st, script->array_highest_key(st,st->rid ? script->rid2sd(st) : NULL,reference_getname(data),reference_getref(data)));
return true;
}
-int script_array_index_cmp(const void *a, const void *b)
+static int script_array_index_cmp(const void *a, const void *b)
{
return (*(const unsigned int *)a - *(const unsigned int *)b); // FIXME: Is the unsigned difference really intended here?
}
-BUILDIN(getarrayindex)
+static BUILDIN(getarrayindex)
{
struct script_data *data = script_getdata(st, 2);
@@ -7351,7 +7409,7 @@ BUILDIN(getarrayindex)
///
/// deletearray <array variable>;
/// deletearray <array variable>,<count>;
-BUILDIN(deletearray)
+static BUILDIN(deletearray)
{
struct script_data* data;
const char* name;
@@ -7465,7 +7523,7 @@ BUILDIN(deletearray)
/// Equivalent to var[index].
///
/// getelementofarray(<array variable>,<index>) -> <variable reference>
-BUILDIN(getelementofarray)
+static BUILDIN(getelementofarray)
{
struct script_data* data;
int32 id;
@@ -7503,7 +7561,7 @@ BUILDIN(getelementofarray)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(setlook)
+static BUILDIN(setlook)
{
int type,val;
struct map_session_data *sd;
@@ -7520,7 +7578,7 @@ BUILDIN(setlook)
return true;
}
-BUILDIN(changelook)
+static BUILDIN(changelook)
{ // As setlook but only client side
int type,val;
struct map_session_data *sd;
@@ -7540,7 +7598,7 @@ BUILDIN(changelook)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(cutin)
+static BUILDIN(cutin)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -7553,7 +7611,7 @@ BUILDIN(cutin)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(viewpoint)
+static BUILDIN(viewpoint)
{
int type,x,y,id,color;
struct map_session_data *sd;
@@ -7576,7 +7634,8 @@ BUILDIN(viewpoint)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(countitem) {
+static BUILDIN(countitem)
+{
int nameid, i;
int count = 0;
struct item_data* id = NULL;
@@ -7613,7 +7672,8 @@ BUILDIN(countitem) {
* countitem2(nameID,Identified,Refine,Attribute,Card0,Card1,Card2,Card3) [Lupus]
* returns number of items that meet the conditions
*------------------------------------------*/
-BUILDIN(countitem2) {
+static BUILDIN(countitem2)
+{
int nameid, iden, ref, attr, c1, c2, c3, c4;
int count = 0;
int i;
@@ -7641,10 +7701,10 @@ BUILDIN(countitem2) {
iden = script_getnum(st,3);
ref = script_getnum(st,4);
attr = script_getnum(st,5);
- c1 = (short)script_getnum(st,6);
- c2 = (short)script_getnum(st,7);
- c3 = (short)script_getnum(st,8);
- c4 = (short)script_getnum(st,9);
+ c1 = script_getnum(st,6);
+ c2 = script_getnum(st,7);
+ c3 = script_getnum(st,8);
+ c4 = script_getnum(st,9);
for(i = 0; i < MAX_INVENTORY; i++)
if (sd->status.inventory[i].nameid > 0 && sd->inventory_data[i] != NULL &&
@@ -7667,7 +7727,7 @@ BUILDIN(countitem2) {
* 0 : fail
* 1 : success (npc side only)
*------------------------------------------*/
-BUILDIN(checkweight)
+static BUILDIN(checkweight)
{
int slots, amount2=0;
unsigned int weight=0, i, nbargs;
@@ -7749,7 +7809,7 @@ BUILDIN(checkweight)
return true;
}
-BUILDIN(checkweight2)
+static BUILDIN(checkweight2)
{
//variable sub checkweight
int i=0, amount2=0, slots=0, weight=0;
@@ -7853,7 +7913,8 @@ BUILDIN(checkweight2)
* getitembound <item id>,<amount>,<type>{,<account ID>};
* getitembound "<item id>",<amount>,<type>{,<account ID>};
*------------------------------------------*/
-BUILDIN(getitem) {
+static BUILDIN(getitem)
+{
int nameid,amount,get_count,i,flag = 0, offset = 0;
struct item it;
struct map_session_data *sd;
@@ -7938,7 +7999,7 @@ BUILDIN(getitem) {
/*==========================================
*
*------------------------------------------*/
-BUILDIN(getitem2)
+static BUILDIN(getitem2)
{
int nameid,amount,flag = 0, offset = 0;
int iden,ref,attr,c1,c2,c3,c4, bound = 0;
@@ -7976,10 +8037,10 @@ BUILDIN(getitem2)
iden=script_getnum(st,4);
ref=script_getnum(st,5);
attr=script_getnum(st,6);
- c1=(short)script_getnum(st,7);
- c2=(short)script_getnum(st,8);
- c3=(short)script_getnum(st,9);
- c4=(short)script_getnum(st,10);
+ c1 = script_getnum(st,7);
+ c2 = script_getnum(st,8);
+ c3 = script_getnum(st,9);
+ c4 = script_getnum(st,10);
if (bound && (itemdb_type(nameid) == IT_PETEGG || itemdb_type(nameid) == IT_PETARMOR)) {
ShowError("script_getitembound2: can't bind a pet egg/armor! Type=%d\n",bound);
@@ -8018,10 +8079,10 @@ BUILDIN(getitem2)
item_tmp.refine=ref;
item_tmp.attribute=attr;
item_tmp.bound=(unsigned char)bound;
- item_tmp.card[0]=(short)c1;
- item_tmp.card[1]=(short)c2;
- item_tmp.card[2]=(short)c3;
- item_tmp.card[3]=(short)c4;
+ item_tmp.card[0] = c1;
+ item_tmp.card[1] = c2;
+ item_tmp.card[2] = c3;
+ item_tmp.card[3] = c4;
//Check if it's stackable.
if (!itemdb->isstackable(nameid))
@@ -8048,7 +8109,8 @@ BUILDIN(getitem2)
* rentitem <item id>,<seconds>
* rentitem "<item name>",<seconds>
*------------------------------------------*/
-BUILDIN(rentitem) {
+static BUILDIN(rentitem)
+{
struct map_session_data *sd;
struct item it;
int seconds;
@@ -8096,7 +8158,8 @@ BUILDIN(rentitem) {
* Returned Qty is always 1, only works on equip-able
* equipment
*------------------------------------------*/
-BUILDIN(getnameditem) {
+static BUILDIN(getnameditem)
+{
int nameid;
struct item item_tmp;
struct map_session_data *sd, *tsd;
@@ -8155,7 +8218,8 @@ BUILDIN(getnameditem) {
* gets a random item ID from an item group [Skotlex]
* groupranditem group_num
*------------------------------------------*/
-BUILDIN(grouprandomitem) {
+static BUILDIN(grouprandomitem)
+{
struct item_data *data;
int nameid;
@@ -8185,7 +8249,7 @@ BUILDIN(grouprandomitem) {
/*==========================================
*
*------------------------------------------*/
-BUILDIN(makeitem)
+static BUILDIN(makeitem)
{
int nameid,amount;
int x,y,m;
@@ -8234,9 +8298,9 @@ BUILDIN(makeitem)
}
/*==========================================
-* makeitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,{"<map name>",<X>,<Y>,<range>};
-*------------------------------------------*/
-BUILDIN(makeitem2)
+ * makeitem2 <item id>, <amount>, <identify>, <refine>, <attribute>, <card1>, <card2>, <card3>, <card4>, {"<map name>", <X>, <Y>, <range>};
+ *------------------------------------------*/
+static BUILDIN(makeitem2)
{
struct map_session_data *sd = NULL;
struct item_data *i_data;
@@ -8307,10 +8371,10 @@ BUILDIN(makeitem2)
item_tmp.identify = script_getnum(st, 4);
item_tmp.refine = cap_value(script_getnum(st, 5), 0, MAX_REFINE);
item_tmp.attribute = script_getnum(st, 6);
- item_tmp.card[0] = (short)script_getnum(st, 7);
- item_tmp.card[1] = (short)script_getnum(st, 8);
- item_tmp.card[2] = (short)script_getnum(st, 9);
- item_tmp.card[3] = (short)script_getnum(st, 10);
+ item_tmp.card[0] = script_getnum(st, 7);
+ item_tmp.card[1] = script_getnum(st, 8);
+ item_tmp.card[2] = script_getnum(st, 9);
+ item_tmp.card[3] = script_getnum(st, 10);
map->addflooritem(NULL, &item_tmp, amount, m, x, y, 0, 0, 0, 0, false);
@@ -8320,7 +8384,7 @@ BUILDIN(makeitem2)
/// Counts / deletes the current item given by idx.
/// Used by buildin_delitem_search
/// Relies on all input data being already fully valid.
-void buildin_delitem_delete(struct map_session_data* sd, int idx, int* amount, bool delete_items)
+static void buildin_delitem_delete(struct map_session_data *sd, int idx, int *amount, bool delete_items)
{
int delamount;
struct item* inv;
@@ -8348,7 +8412,7 @@ void buildin_delitem_delete(struct map_session_data* sd, int idx, int* amount, b
/// Relies on all input data being already fully valid.
/// @param exact_match will also match item attributes and cards, not just name id
/// @return true when all items could be deleted, false when there were not enough items to delete
-bool buildin_delitem_search(struct map_session_data* sd, struct item* it, bool exact_match)
+static bool buildin_delitem_search(struct map_session_data *sd, struct item *it, bool exact_match)
{
bool delete_items = false;
int i, amount;
@@ -8457,7 +8521,7 @@ bool buildin_delitem_search(struct map_session_data* sd, struct item* it, bool e
///
/// delitem <item id>,<amount>{,<account id>}
/// delitem "<item name>",<amount>{,<account id>}
-BUILDIN(delitem)
+static BUILDIN(delitem)
{
struct map_session_data *sd;
struct item it;
@@ -8514,7 +8578,7 @@ BUILDIN(delitem)
///
/// delitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}
/// delitem2 "<Item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}
-BUILDIN(delitem2)
+static BUILDIN(delitem2)
{
struct map_session_data *sd;
struct item it;
@@ -8555,10 +8619,10 @@ BUILDIN(delitem2)
it.identify=script_getnum(st,4);
it.refine=script_getnum(st,5);
it.attribute=script_getnum(st,6);
- it.card[0]=(short)script_getnum(st,7);
- it.card[1]=(short)script_getnum(st,8);
- it.card[2]=(short)script_getnum(st,9);
- it.card[3]=(short)script_getnum(st,10);
+ it.card[0] = script_getnum(st, 7);
+ it.card[1] = script_getnum(st, 8);
+ it.card[2] = script_getnum(st, 9);
+ it.card[3] = script_getnum(st, 10);
if( it.amount <= 0 )
return true;// nothing to do
@@ -8577,7 +8641,7 @@ BUILDIN(delitem2)
/*==========================================
* Enables/Disables use of items while in an NPC [Skotlex]
*------------------------------------------*/
-BUILDIN(enableitemuse)
+static BUILDIN(enableitemuse)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd != NULL)
@@ -8585,7 +8649,7 @@ BUILDIN(enableitemuse)
return true;
}
-BUILDIN(disableitemuse)
+static BUILDIN(disableitemuse)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd != NULL)
@@ -8597,7 +8661,7 @@ BUILDIN(disableitemuse)
* return the basic stats of sd
* chk pc->readparam for available type
*------------------------------------------*/
-BUILDIN(readparam)
+static BUILDIN(readparam)
{
int type;
struct map_session_data *sd;
@@ -8628,7 +8692,7 @@ BUILDIN(readparam)
return true;
}
-BUILDIN(setparam)
+static BUILDIN(setparam)
{
int type;
struct map_session_data *sd;
@@ -8675,7 +8739,8 @@ BUILDIN(setparam)
* 4 : bg_id
* 5 : clan_id
*------------------------------------------*/
-BUILDIN(getcharid) {
+static BUILDIN(getcharid)
+{
int num = script_getnum(st, 2);
struct map_session_data *sd;
@@ -8719,7 +8784,7 @@ BUILDIN(getcharid) {
/*==========================================
* returns the GID of an NPC
*------------------------------------------*/
-BUILDIN(getnpcid)
+static BUILDIN(getnpcid)
{
int num = script_getnum(st,2);
struct npc_data* nd = NULL;
@@ -8751,7 +8816,7 @@ BUILDIN(getnpcid)
* Return the name of the party_id
* null if not found
*------------------------------------------*/
-BUILDIN(getpartyname)
+static BUILDIN(getpartyname)
{
int party_id;
struct party_data* p;
@@ -8777,7 +8842,7 @@ BUILDIN(getpartyname)
* 1 : char_id des membres
* 2 : account_id des membres
*------------------------------------------*/
-BUILDIN(getpartymember)
+static BUILDIN(getpartymember)
{
struct party_data *p;
int j=0,type=0;
@@ -8814,7 +8879,7 @@ BUILDIN(getpartymember)
* Retrieves party leader. if flag is specified,
* return some of the leader data. Otherwise, return name.
*------------------------------------------*/
-BUILDIN(getpartyleader)
+static BUILDIN(getpartyleader)
{
int party_id, type = 0, i=0;
struct party_data *p;
@@ -8851,7 +8916,7 @@ BUILDIN(getpartyleader)
* Return the name of the @guild_id
* null if not found
*------------------------------------------*/
-BUILDIN(getguildname)
+static BUILDIN(getguildname)
{
int guild_id;
struct guild* g;
@@ -8873,7 +8938,7 @@ BUILDIN(getguildname)
* Return the name of the guild master of @guild_id
* null if not found
*------------------------------------------*/
-BUILDIN(getguildmaster)
+static BUILDIN(getguildmaster)
{
int guild_id;
struct guild* g;
@@ -8891,7 +8956,7 @@ BUILDIN(getguildmaster)
return true;
}
-BUILDIN(getguildmasterid)
+static BUILDIN(getguildmasterid)
{
int guild_id;
struct guild* g;
@@ -8918,7 +8983,7 @@ BUILDIN(getguildmasterid)
* 1 : character ID
* 2 : account ID
*------------------------------------------*/
-BUILDIN(getguildmember)
+static BUILDIN(getguildmember)
{
struct guild *g = NULL;
int j = 0;
@@ -8962,7 +9027,7 @@ BUILDIN(getguildmember)
* 4 : clan_name or ""
* - : ""
*------------------------------------------*/
-BUILDIN(strcharinfo)
+static BUILDIN(strcharinfo)
{
struct clan *c;
struct guild* g;
@@ -9028,7 +9093,7 @@ BUILDIN(strcharinfo)
* 3 : ::str
* 4 : map name
*------------------------------------------*/
-BUILDIN(strnpcinfo)
+static BUILDIN(strnpcinfo)
{
char *buf,*name=NULL;
struct npc_data *nd;
@@ -9085,7 +9150,7 @@ BUILDIN(strnpcinfo)
/**
* charid2rid: Returns the RID associated to the given character ID
*/
-BUILDIN(charid2rid)
+static BUILDIN(charid2rid)
{
int cid = script_getnum(st, 2);
struct map_session_data *sd = map->charid2sd(cid);
@@ -9102,7 +9167,7 @@ BUILDIN(charid2rid)
/*==========================================
* GetEquipID(Pos); Pos: 1-SCRIPT_EQUIP_TABLE_SIZE
*------------------------------------------*/
-BUILDIN(getequipid)
+static BUILDIN(getequipid)
{
int i, num;
struct item_data* item;
@@ -9138,7 +9203,7 @@ BUILDIN(getequipid)
* Get the equipement name at pos
* return item jname or ""
*------------------------------------------*/
-BUILDIN(getequipname)
+static BUILDIN(getequipname)
{
int i, num;
struct item_data* item;
@@ -9173,7 +9238,7 @@ BUILDIN(getequipname)
/*==========================================
* getbrokenid [Valaris]
*------------------------------------------*/
-BUILDIN(getbrokenid)
+static BUILDIN(getbrokenid)
{
int i,num,id=0,brokencounter=0;
struct map_session_data *sd = script->rid2sd(st);
@@ -9199,7 +9264,7 @@ BUILDIN(getbrokenid)
/*==========================================
* getbrokencount
*------------------------------------------*/
-BUILDIN(getbrokencount)
+static BUILDIN(getbrokencount)
{
int i, counter = 0;
struct map_session_data *sd = script->rid2sd(st);
@@ -9219,7 +9284,7 @@ BUILDIN(getbrokencount)
/*==========================================
* repair [Valaris]
*------------------------------------------*/
-BUILDIN(repair)
+static BUILDIN(repair)
{
int i,num;
int repaircounter=0;
@@ -9248,7 +9313,7 @@ BUILDIN(repair)
/*==========================================
* repairall
*------------------------------------------*/
-BUILDIN(repairall)
+static BUILDIN(repairall)
{
int i, repaircounter = 0;
struct map_session_data *sd = script->rid2sd(st);
@@ -9278,7 +9343,7 @@ BUILDIN(repairall)
/*==========================================
* Chk if player have something equiped at pos
*------------------------------------------*/
-BUILDIN(getequipisequiped)
+static BUILDIN(getequipisequiped)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9305,7 +9370,7 @@ BUILDIN(getequipisequiped)
* 1 : true
* 0 : false
*------------------------------------------*/
-BUILDIN(getequipisenableref)
+static BUILDIN(getequipisenableref)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9332,7 +9397,7 @@ BUILDIN(getequipisenableref)
* @param equipment_index as the inventory index of the equipment.
* @return 1 on enabled 0 on disabled.
*/
-BUILDIN(getequipisenableopt)
+static BUILDIN(getequipisenableopt)
{
int i = -1, index = script_getnum(st, 2);
struct map_session_data *sd = script->rid2sd(st);
@@ -9360,7 +9425,7 @@ BUILDIN(getequipisenableopt)
* 1 : true
* 0 : false
*------------------------------------------*/
-BUILDIN(getequipisidentify)
+static BUILDIN(getequipisidentify)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9386,7 +9451,7 @@ BUILDIN(getequipisidentify)
* x : refine amount
* 0 : false (not refined)
*------------------------------------------*/
-BUILDIN(getequiprefinerycnt)
+static BUILDIN(getequiprefinerycnt)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9413,7 +9478,7 @@ BUILDIN(getequiprefinerycnt)
* x : weapon level
* 0 : false
*------------------------------------------*/
-BUILDIN(getequipweaponlv)
+static BUILDIN(getequipweaponlv)
{
int i = -1,num;
struct map_session_data *sd;
@@ -9439,7 +9504,8 @@ BUILDIN(getequipweaponlv)
* x : refine chance
* 0 : false (max refine level or unequip..)
*------------------------------------------*/
-BUILDIN(getequippercentrefinery) {
+static BUILDIN(getequippercentrefinery)
+{
int i = -1, num;
struct map_session_data *sd;
int type = 0;
@@ -9473,7 +9539,7 @@ BUILDIN(getequippercentrefinery) {
/*==========================================
* Refine +1 item at pos and log and display refine
*------------------------------------------*/
-BUILDIN(successrefitem)
+static BUILDIN(successrefitem)
{
int i = -1 , num, up = 1;
struct map_session_data *sd;
@@ -9534,7 +9600,7 @@ BUILDIN(successrefitem)
/*==========================================
* Show a failed Refine +1 attempt
*------------------------------------------*/
-BUILDIN(failedrefitem)
+static BUILDIN(failedrefitem)
{
int i=-1,num;
struct map_session_data *sd;
@@ -9562,7 +9628,7 @@ BUILDIN(failedrefitem)
/*==========================================
* Downgrades an Equipment Part by -1 . [Masao]
*------------------------------------------*/
-BUILDIN(downrefitem)
+static BUILDIN(downrefitem)
{
int i = -1, num, down = 1;
struct map_session_data *sd;
@@ -9603,7 +9669,7 @@ BUILDIN(downrefitem)
/*==========================================
* Delete the item equipped at pos.
*------------------------------------------*/
-BUILDIN(delequip)
+static BUILDIN(delequip)
{
int i=-1,num;
struct map_session_data *sd;
@@ -9631,7 +9697,8 @@ BUILDIN(delequip)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(statusup) {
+static BUILDIN(statusup)
+{
int type;
struct map_session_data *sd;
@@ -9647,7 +9714,7 @@ BUILDIN(statusup) {
/*==========================================
*
*------------------------------------------*/
-BUILDIN(statusup2)
+static BUILDIN(statusup2)
{
int type,val;
struct map_session_data *sd;
@@ -9670,7 +9737,8 @@ BUILDIN(statusup2)
/// bonus3 <bonus type>,<val1>,<val2>,<val3>;
/// bonus4 <bonus type>,<val1>,<val2>,<val3>,<val4>;
/// bonus5 <bonus type>,<val1>,<val2>,<val3>,<val4>,<val5>;
-BUILDIN(bonus) {
+static BUILDIN(bonus)
+{
int type;
int val1;
int val2 = 0;
@@ -9752,7 +9820,7 @@ BUILDIN(bonus) {
return true;
}
-BUILDIN(autobonus)
+static BUILDIN(autobonus)
{
unsigned int dur;
short rate;
@@ -9787,7 +9855,7 @@ BUILDIN(autobonus)
return true;
}
-BUILDIN(autobonus2)
+static BUILDIN(autobonus2)
{
unsigned int dur;
short rate;
@@ -9822,7 +9890,7 @@ BUILDIN(autobonus2)
return true;
}
-BUILDIN(autobonus3)
+static BUILDIN(autobonus3)
{
unsigned int dur;
short rate,atk_type;
@@ -9865,7 +9933,8 @@ BUILDIN(autobonus3)
/// skill <skill id>,<level>
/// skill "<skill name>",<level>,<flag>
/// skill "<skill name>",<level>
-BUILDIN(skill) {
+static BUILDIN(skill)
+{
int id;
int level;
int flag = SKILL_GRANT_TEMPORARY;
@@ -9891,7 +9960,8 @@ BUILDIN(skill) {
/// addtoskill "<skill name>",<amount>
///
/// @see skill
-BUILDIN(addtoskill) {
+static BUILDIN(addtoskill)
+{
int id;
int level;
int flag = SKILL_GRANT_TEMPSTACK;
@@ -9912,7 +9982,8 @@ BUILDIN(addtoskill) {
///
/// guildskill <skill id>,<amount>;
/// guildskill "<skill name>",<amount>;
-BUILDIN(guildskill) {
+static BUILDIN(guildskill)
+{
int skill_id, id, max_points;
int level;
@@ -9951,7 +10022,7 @@ BUILDIN(guildskill) {
///
/// getskilllv(<skill id>) -> <level>
/// getskilllv("<skill name>") -> <level>
-BUILDIN(getskilllv)
+static BUILDIN(getskilllv)
{
int id;
struct map_session_data *sd = script->rid2sd(st);
@@ -9968,7 +10039,8 @@ BUILDIN(getskilllv)
///
/// getgdskilllv(<guild id>,<skill id>) -> <level>
/// getgdskilllv(<guild id>,"<skill name>") -> <level>
-BUILDIN(getgdskilllv) {
+static BUILDIN(getgdskilllv)
+{
int guild_id;
uint16 skill_id;
struct guild* g;
@@ -9989,7 +10061,7 @@ BUILDIN(getgdskilllv) {
/// before allowing the basic actions.
///
/// basicskillcheck() -> <bool>
-BUILDIN(basicskillcheck)
+static BUILDIN(basicskillcheck)
{
script_pushint(st, battle_config.basic_skill_check);
return true;
@@ -9998,7 +10070,7 @@ BUILDIN(basicskillcheck)
/// Returns the GM level of the player.
///
/// getgmlevel() -> <level>
-BUILDIN(getgmlevel)
+static BUILDIN(getgmlevel)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -10012,7 +10084,8 @@ BUILDIN(getgmlevel)
/// set the group ID of the player.
/// setgroupid(<new group id>{,"<character name>"|<account id>})
/// return 1 on success, 0 if failed.
-BUILDIN(setgroupid) {
+static BUILDIN(setgroupid)
+{
struct map_session_data* sd = NULL;
int new_group = script_getnum(st, 2);
@@ -10036,7 +10109,8 @@ BUILDIN(setgroupid) {
/// Returns the group ID of the player.
///
/// getgroupid({<account id>}) -> <int>
-BUILDIN(getgroupid) {
+static BUILDIN(getgroupid)
+{
struct map_session_data *sd = NULL;
if (script_hasdata(st, 2)) {
@@ -10057,7 +10131,8 @@ BUILDIN(getgroupid) {
/// Terminates the execution of this script instance.
///
/// end
-BUILDIN(end) {
+static BUILDIN(end)
+{
st->state = END;
/* are we stopping inside a function? */
@@ -10077,7 +10152,7 @@ BUILDIN(end) {
/// Checks if the player has that effect state (option).
///
/// checkoption(<option>) -> <bool>
-BUILDIN(checkoption)
+static BUILDIN(checkoption)
{
int option;
struct map_session_data *sd;
@@ -10102,7 +10177,7 @@ BUILDIN(checkoption)
/// Checks if the player is in that body state (opt1).
///
/// checkoption1(<opt1>) -> <bool>
-BUILDIN(checkoption1)
+static BUILDIN(checkoption1)
{
int opt1;
struct map_session_data *sd;
@@ -10127,7 +10202,7 @@ BUILDIN(checkoption1)
/// Checks if the player has that health state (opt2).
///
/// checkoption2(<opt2>) -> <bool>
-BUILDIN(checkoption2)
+static BUILDIN(checkoption2)
{
int opt2;
struct map_session_data *sd;
@@ -10156,7 +10231,7 @@ BUILDIN(checkoption2)
///
/// setoption <option>,<flag>;
/// setoption <option>;
-BUILDIN(setoption)
+static BUILDIN(setoption)
{
int option;
int flag = 1;
@@ -10195,7 +10270,7 @@ BUILDIN(setoption)
/// checkcart() -> <bool>
///
/// @author Valaris
-BUILDIN(checkcart)
+static BUILDIN(checkcart)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -10220,7 +10295,7 @@ BUILDIN(checkcart)
///
/// setcart <type>;
/// setcart;
-BUILDIN(setcart)
+static BUILDIN(setcart)
{
int type = 1;
struct map_session_data *sd = script->rid2sd(st);
@@ -10239,7 +10314,7 @@ BUILDIN(setcart)
/// checkfalcon() -> <bool>
///
/// @author Valaris
-BUILDIN(checkfalcon)
+static BUILDIN(checkfalcon)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -10258,7 +10333,7 @@ BUILDIN(checkfalcon)
///
/// setfalcon <flag>;
/// setfalcon;
-BUILDIN(setfalcon)
+static BUILDIN(setfalcon)
{
bool flag = true;
struct map_session_data *sd = script->rid2sd(st);
@@ -10295,7 +10370,7 @@ enum setmount_type {
* The exact returned values are the same used as flag in setmount, except for
* dragons, where SETMOUNT_TYPE_DRAGON is returned, regardless of color.
*/
-BUILDIN(checkmount)
+static BUILDIN(checkmount)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -10338,7 +10413,7 @@ BUILDIN(checkmount)
* auto-detected. As a result of this, there is no need to specify a flag at
* all, unless it is a dragon color other than green.
*/
-BUILDIN(setmount)
+static BUILDIN(setmount)
{
int flag = SETMOUNT_TYPE_AUTODETECT;
struct map_session_data *sd = script->rid2sd(st);
@@ -10403,7 +10478,7 @@ BUILDIN(setmount)
///
/// checkwug() -> <bool>
///
-BUILDIN(checkwug)
+static BUILDIN(checkwug)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -10421,7 +10496,8 @@ BUILDIN(checkwug)
///
/// save "<map name>",<x>,<y>
/// savepoint "<map name>",<x>,<y>
-BUILDIN(savepoint) {
+static BUILDIN(savepoint)
+{
int x;
int y;
short mapid;
@@ -10443,7 +10519,9 @@ BUILDIN(savepoint) {
/*==========================================
* GetTimeTick(0: System Tick, 1: Time Second Tick)
*------------------------------------------*/
-BUILDIN(gettimetick) { /* Asgard Version */
+/* Asgard Version */
+static BUILDIN(gettimetick)
+{
int type;
time_t clock;
struct tm *t;
@@ -10476,7 +10554,9 @@ BUILDIN(gettimetick) { /* Asgard Version */
* 4: WeekDay 5: MonthDay 6: Month
* 7: Year
*------------------------------------------*/
-BUILDIN(gettime) { /* Asgard Version */
+/* Asgard Version */
+static BUILDIN(gettime)
+{
int type;
time_t clock;
struct tm *t;
@@ -10521,7 +10601,7 @@ BUILDIN(gettime) { /* Asgard Version */
/*==========================================
* GetTimeStr("TimeFMT", Length);
*------------------------------------------*/
-BUILDIN(gettimestr)
+static BUILDIN(gettimestr)
{
char *tmpstr;
const char *fmtstr;
@@ -10542,7 +10622,7 @@ BUILDIN(gettimestr)
/*==========================================
* Open player storage
*------------------------------------------*/
-BUILDIN(openstorage)
+static BUILDIN(openstorage)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -10560,7 +10640,7 @@ BUILDIN(openstorage)
return true;
}
-BUILDIN(guildopenstorage)
+static BUILDIN(guildopenstorage)
{
int ret;
struct map_session_data *sd = script->rid2sd(st);
@@ -10577,7 +10657,7 @@ BUILDIN(guildopenstorage)
*------------------------------------------*/
/// itemskill <skill id>,<level>{,flag
/// itemskill "<skill name>",<level>{,flag
-BUILDIN(itemskill)
+static BUILDIN(itemskill)
{
int id;
int lv;
@@ -10602,7 +10682,7 @@ BUILDIN(itemskill)
/*==========================================
* Attempt to create an item
*------------------------------------------*/
-BUILDIN(produce)
+static BUILDIN(produce)
{
int trigger;
struct map_session_data *sd = script->rid2sd(st);
@@ -10616,7 +10696,7 @@ BUILDIN(produce)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(cooking)
+static BUILDIN(cooking)
{
int trigger;
struct map_session_data *sd = script->rid2sd(st);
@@ -10630,7 +10710,7 @@ BUILDIN(cooking)
/*==========================================
* Create a pet
*------------------------------------------*/
-BUILDIN(makepet)
+static BUILDIN(makepet)
{
struct map_session_data *sd;
int id,pet_id;
@@ -10648,7 +10728,7 @@ BUILDIN(makepet)
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,
- (short)pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
+ pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
100, 0, 1, pet->db[pet_id].jname);
}
@@ -10657,7 +10737,7 @@ BUILDIN(makepet)
/*==========================================
* Give player exp base,job * quest_exp_rate/100
*------------------------------------------*/
-BUILDIN(getexp)
+static BUILDIN(getexp)
{
int base=0,job=0;
struct map_session_data *sd = script->rid2sd(st);
@@ -10681,7 +10761,7 @@ BUILDIN(getexp)
/*==========================================
* Gain guild exp [Celest]
*------------------------------------------*/
-BUILDIN(guildgetexp)
+static BUILDIN(guildgetexp)
{
int exp;
struct map_session_data *sd = script->rid2sd(st);
@@ -10700,7 +10780,7 @@ BUILDIN(guildgetexp)
/*==========================================
* Changes the guild master of a guild [Skotlex]
*------------------------------------------*/
-BUILDIN(guildchangegm)
+static BUILDIN(guildchangegm)
{
struct map_session_data *sd;
int guild_id;
@@ -10726,7 +10806,7 @@ BUILDIN(guildchangegm)
* @amount : nb to spawn
* @event : event to attach to mob
*------------------------------------------*/
-BUILDIN(monster)
+static BUILDIN(monster)
{
const char *mapn = script_getstr(st,2);
int x = script_getnum(st,3);
@@ -10798,7 +10878,7 @@ BUILDIN(monster)
/*==========================================
* Request List of Monster Drops
*------------------------------------------*/
-BUILDIN(getmobdrops)
+static BUILDIN(getmobdrops)
{
int class_ = script_getnum(st,2);
int i, j = 0;
@@ -10833,7 +10913,8 @@ BUILDIN(getmobdrops)
/*==========================================
* Same as monster but randomize location in x0,x1,y0,y1 area
*------------------------------------------*/
-BUILDIN(areamonster) {
+static BUILDIN(areamonster)
+{
const char *mapn = script_getstr(st,2);
int x0 = script_getnum(st,3);
int y0 = script_getnum(st,4);
@@ -10896,7 +10977,7 @@ BUILDIN(areamonster) {
/*==========================================
* KillMonster subcheck, verify if mob to kill ain't got an even to handle, could be force kill by allflag
*------------------------------------------*/
-int buildin_killmonster_sub_strip(struct block_list *bl, va_list ap)
+static int buildin_killmonster_sub_strip(struct block_list *bl, va_list ap)
{
//same fix but with killmonster instead - stripping events from mobs.
struct mob_data *md = NULL;
@@ -10919,7 +11000,7 @@ int buildin_killmonster_sub_strip(struct block_list *bl, va_list ap)
md->state.npc_killmonster = 0;
return 0;
}
-int buildin_killmonster_sub(struct block_list *bl, va_list ap)
+static int buildin_killmonster_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
char *event = va_arg(ap,char *);
@@ -10938,7 +11019,8 @@ int buildin_killmonster_sub(struct block_list *bl, va_list ap)
}
return 0;
}
-BUILDIN(killmonster) {
+static BUILDIN(killmonster)
+{
const char *mapname,*event;
int16 m,allflag=0;
mapname=script_getstr(st,2);
@@ -10967,7 +11049,7 @@ BUILDIN(killmonster) {
return true;
}
-int buildin_killmonsterall_sub_strip(struct block_list *bl,va_list ap)
+static int buildin_killmonsterall_sub_strip(struct block_list *bl, va_list ap)
{ //Strips the event from the mob if it's killed the old method.
struct mob_data *md;
@@ -10979,12 +11061,13 @@ int buildin_killmonsterall_sub_strip(struct block_list *bl,va_list ap)
status_kill(bl);
return 0;
}
-int buildin_killmonsterall_sub(struct block_list *bl,va_list ap)
+static int buildin_killmonsterall_sub(struct block_list *bl, va_list ap)
{
status_kill(bl);
return 0;
}
-BUILDIN(killmonsterall) {
+static BUILDIN(killmonsterall)
+{
const char *mapname;
int16 m;
mapname=script_getstr(st,2);
@@ -11010,7 +11093,8 @@ BUILDIN(killmonsterall) {
* Creates a clone of a player.
* clone map, x, y, event, char_id, master_id, mode, flag, duration
*------------------------------------------*/
-BUILDIN(clone) {
+static BUILDIN(clone)
+{
struct map_session_data *sd, *msd = NULL;
int char_id, master_id = 0, x, y, flag = 0, m;
uint32 mode = 0;
@@ -11058,7 +11142,7 @@ BUILDIN(clone) {
}
/*==========================================
*------------------------------------------*/
-BUILDIN(doevent)
+static BUILDIN(doevent)
{
const char* event = script_getstr(st,2);
struct map_session_data* sd;
@@ -11074,7 +11158,7 @@ BUILDIN(doevent)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(donpcevent)
+static BUILDIN(donpcevent)
{
const char* event = script_getstr(st,2);
script->check_event(st, event);
@@ -11089,7 +11173,7 @@ BUILDIN(donpcevent)
/*==========================================
*------------------------------------------*/
-BUILDIN(addtimer)
+static BUILDIN(addtimer)
{
int tick = script_getnum(st, 2);
const char* event = script_getstr(st, 3);
@@ -11118,7 +11202,7 @@ BUILDIN(addtimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(deltimer)
+static BUILDIN(deltimer)
{
const char *event;
struct map_session_data *sd;
@@ -11139,7 +11223,7 @@ BUILDIN(deltimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(addtimercount)
+static BUILDIN(addtimercount)
{
const char *event;
int tick;
@@ -11167,7 +11251,7 @@ enum gettimer_mode {
GETTIMER_TICK_LAST = 2,
};
-BUILDIN(gettimer)
+static BUILDIN(gettimer)
{
struct map_session_data *sd;
const struct TimerData *td;
@@ -11255,7 +11339,7 @@ BUILDIN(gettimer)
return true;
}
-int buildin_getunits_sub(struct block_list *bl, va_list ap)
+static int buildin_getunits_sub(struct block_list *bl, va_list ap)
{
struct script_state *st = va_arg(ap, struct script_state *);
struct map_session_data *sd = va_arg(ap, struct map_session_data *);
@@ -11298,7 +11382,7 @@ static int buildin_getunits_sub_npc(struct npc_data *nd, va_list ap)
return buildin_getunits_sub(&nd->bl, ap);
}
-BUILDIN(getunits)
+static BUILDIN(getunits)
{
const char *name;
int32 id;
@@ -11394,7 +11478,7 @@ BUILDIN(getunits)
/*==========================================
*------------------------------------------*/
-BUILDIN(initnpctimer)
+static BUILDIN(initnpctimer)
{
struct npc_data *nd;
int flag = 0;
@@ -11439,7 +11523,7 @@ BUILDIN(initnpctimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(startnpctimer)
+static BUILDIN(startnpctimer)
{
struct npc_data *nd;
int flag = 0;
@@ -11482,7 +11566,8 @@ BUILDIN(startnpctimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(stopnpctimer) {
+static BUILDIN(stopnpctimer)
+{
struct npc_data *nd;
int flag = 0;
@@ -11520,7 +11605,7 @@ BUILDIN(stopnpctimer) {
}
/*==========================================
*------------------------------------------*/
-BUILDIN(getnpctimer)
+static BUILDIN(getnpctimer)
{
struct npc_data *nd;
struct map_session_data *sd;
@@ -11558,7 +11643,7 @@ BUILDIN(getnpctimer)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(setnpctimer)
+static BUILDIN(setnpctimer)
{
int tick;
struct npc_data *nd;
@@ -11583,7 +11668,7 @@ BUILDIN(setnpctimer)
/*==========================================
* attaches the player rid to the timer [Celest]
*------------------------------------------*/
-BUILDIN(attachnpctimer)
+static BUILDIN(attachnpctimer)
{
struct map_session_data *sd;
struct npc_data *nd = map->id2nd(st->oid);
@@ -11612,7 +11697,8 @@ BUILDIN(attachnpctimer)
/*==========================================
* detaches a player rid from the timer [Celest]
*------------------------------------------*/
-BUILDIN(detachnpctimer) {
+static BUILDIN(detachnpctimer)
+{
struct npc_data *nd;
if( script_hasdata(st,2) )
@@ -11636,7 +11722,8 @@ BUILDIN(detachnpctimer) {
* it checks if there is a player attached to the current script. [Skotlex]
* If no, returns 0, if yes, returns the account_id of the attached player.
*------------------------------------------*/
-BUILDIN(playerattached) {
+static BUILDIN(playerattached)
+{
if(st->rid == 0 || map->id2sd(st->rid) == NULL)
script_pushint(st,0);
else
@@ -11646,7 +11733,7 @@ BUILDIN(playerattached) {
/*==========================================
*------------------------------------------*/
-BUILDIN(announce)
+static BUILDIN(announce)
{
const char *mes = script_getstr(st,2);
int flag = script_getnum(st,3);
@@ -11694,7 +11781,7 @@ BUILDIN(announce)
}
/*==========================================
*------------------------------------------*/
-int buildin_announce_sub(struct block_list *bl, va_list ap)
+static int buildin_announce_sub(struct block_list *bl, va_list ap)
{
const char *mes = va_arg(ap, const char *);
int len = va_arg(ap, int);
@@ -11713,7 +11800,7 @@ int buildin_announce_sub(struct block_list *bl, va_list ap)
/* Runs item effect on attached character.
* itemeffect <item id>;
* itemeffect "<item name>"; */
-BUILDIN(itemeffect)
+static BUILDIN(itemeffect)
{
struct npc_data *nd;
struct item_data *item_data;
@@ -11746,7 +11833,7 @@ BUILDIN(itemeffect)
return true;
}
-BUILDIN(mapannounce)
+static BUILDIN(mapannounce)
{
const char *mapname = script_getstr(st,2);
const char *mes = script_getstr(st,3);
@@ -11769,7 +11856,7 @@ BUILDIN(mapannounce)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(areaannounce)
+static BUILDIN(areaannounce)
{
const char *mapname = script_getstr(st,2);
int x0 = script_getnum(st,3);
@@ -11797,7 +11884,8 @@ BUILDIN(areaannounce)
/*==========================================
*------------------------------------------*/
-BUILDIN(getusers) {
+static BUILDIN(getusers)
+{
int flag, val = 0;
struct map_session_data* sd;
struct block_list* bl = NULL;
@@ -11833,7 +11921,7 @@ BUILDIN(getusers) {
/*==========================================
* Works like @WHO - displays all online users names in window
*------------------------------------------*/
-BUILDIN(getusersname)
+static BUILDIN(getusersname)
{
struct map_session_data *sd;
const struct map_session_data *pl_sd;
@@ -11862,7 +11950,7 @@ BUILDIN(getusersname)
/*==========================================
* getmapguildusers("mapname",guild ID) Returns the number guild members present on a map [Reddozen]
*------------------------------------------*/
-BUILDIN(getmapguildusers)
+static BUILDIN(getmapguildusers)
{
const char *str;
int16 m;
@@ -11890,7 +11978,8 @@ BUILDIN(getmapguildusers)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(getmapusers) {
+static BUILDIN(getmapusers)
+{
const char *str;
int16 m;
str=script_getstr(st,2);
@@ -11903,7 +11992,7 @@ BUILDIN(getmapusers) {
}
/*==========================================
*------------------------------------------*/
-int buildin_getareausers_sub(struct block_list *bl,va_list ap)
+static int buildin_getareausers_sub(struct block_list *bl, va_list ap)
{
int *users=va_arg(ap,int *);
nullpo_ret(users);
@@ -11911,7 +12000,7 @@ int buildin_getareausers_sub(struct block_list *bl,va_list ap)
return 0;
}
-BUILDIN(getareausers)
+static BUILDIN(getareausers)
{
int16 m = -1, x0, y0, x1, y1;
int users = 0;
@@ -11971,7 +12060,7 @@ BUILDIN(getareausers)
/*==========================================
*------------------------------------------*/
-int buildin_getareadropitem_sub(struct block_list *bl, va_list ap)
+static int buildin_getareadropitem_sub(struct block_list *bl, va_list ap)
{
int item = va_arg(ap, int);
int *amount = va_arg(ap, int *);
@@ -11987,7 +12076,8 @@ int buildin_getareadropitem_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(getareadropitem) {
+static BUILDIN(getareadropitem)
+{
const char *str;
int16 m,x0,y0,x1,y1;
int item,amount=0;
@@ -12019,7 +12109,7 @@ BUILDIN(getareadropitem) {
}
/*==========================================
*------------------------------------------*/
-BUILDIN(enablenpc)
+static BUILDIN(enablenpc)
{
const char *str;
str=script_getstr(st,2);
@@ -12028,7 +12118,7 @@ BUILDIN(enablenpc)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(disablenpc)
+static BUILDIN(disablenpc)
{
const char *str;
str=script_getstr(st,2);
@@ -12038,7 +12128,7 @@ BUILDIN(disablenpc)
/*==========================================
*------------------------------------------*/
-BUILDIN(hideoffnpc)
+static BUILDIN(hideoffnpc)
{
const char *str;
str=script_getstr(st,2);
@@ -12047,7 +12137,7 @@ BUILDIN(hideoffnpc)
}
/*==========================================
*------------------------------------------*/
-BUILDIN(hideonnpc)
+static BUILDIN(hideonnpc)
{
const char *str;
str=script_getstr(st,2);
@@ -12062,7 +12152,7 @@ BUILDIN(hideonnpc)
* sc_start4 <effect_id>,<duration>,<val1>,<val2>,<val3>,<val4>{,<rate,<flag>,{<unit_id>}};
* <flag>: @see enum scstart_flag
*/
-BUILDIN(sc_start)
+static BUILDIN(sc_start)
{
struct npc_data *nd = map->id2nd(st->oid);
struct block_list* bl;
@@ -12130,7 +12220,8 @@ BUILDIN(sc_start)
/// Ends one or all status effects on the target unit or on the attached player.
///
/// sc_end <effect_id>{,<unit_id>};
-BUILDIN(sc_end) {
+static BUILDIN(sc_end)
+{
struct block_list* bl;
int type;
@@ -12177,7 +12268,8 @@ BUILDIN(sc_end) {
/*==========================================
* @FIXME atm will return reduced tick, 0 immune, 1 no tick
*------------------------------------------*/
-BUILDIN(getscrate) {
+static BUILDIN(getscrate)
+{
struct block_list *bl;
int type,rate;
@@ -12198,7 +12290,7 @@ BUILDIN(getscrate) {
/*==========================================
* getstatus <type>{, <info>};
*------------------------------------------*/
-BUILDIN(getstatus)
+static BUILDIN(getstatus)
{
int id, type;
struct map_session_data* sd = script->rid2sd(st);
@@ -12249,7 +12341,7 @@ BUILDIN(getstatus)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(debugmes)
+static BUILDIN(debugmes)
{
const char *str;
str=script_getstr(st,2);
@@ -12259,7 +12351,7 @@ BUILDIN(debugmes)
/*==========================================
*------------------------------------------*/
-BUILDIN(catchpet)
+static BUILDIN(catchpet)
{
int pet_id;
struct map_session_data *sd;
@@ -12276,7 +12368,7 @@ BUILDIN(catchpet)
/*==========================================
* [orn]
*------------------------------------------*/
-BUILDIN(homunculus_evolution)
+static BUILDIN(homunculus_evolution)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -12296,7 +12388,7 @@ BUILDIN(homunculus_evolution)
* Checks for vaporized morph state
* and deletes ITEMID_STRANGE_EMBRYO.
*------------------------------------------*/
-BUILDIN(homunculus_mutate)
+static BUILDIN(homunculus_mutate)
{
bool success = false;
struct map_session_data *sd = script->rid2sd(st);
@@ -12337,7 +12429,7 @@ BUILDIN(homunculus_mutate)
* Puts homunculus into morph state
* and gives ITEMID_STRANGE_EMBRYO.
*------------------------------------------*/
-BUILDIN(homunculus_morphembryo)
+static BUILDIN(homunculus_morphembryo)
{
bool success = false;
struct map_session_data *sd = script->rid2sd(st);
@@ -12380,7 +12472,7 @@ BUILDIN(homunculus_morphembryo)
* 1 = Homunculus is vaporized (rest)
* 2 = Homunculus is in morph state
*------------------------------------------*/
-BUILDIN(homunculus_checkcall)
+static BUILDIN(homunculus_checkcall)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL || sd->hd == NULL)
@@ -12392,7 +12484,7 @@ BUILDIN(homunculus_checkcall)
}
// [Zephyrus]
-BUILDIN(homunculus_shuffle)
+static BUILDIN(homunculus_shuffle)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -12405,7 +12497,7 @@ BUILDIN(homunculus_shuffle)
}
//These two functions bring the eA MAPID_* class functionality to scripts.
-BUILDIN(eaclass)
+static BUILDIN(eaclass)
{
int class;
if (script_hasdata(st,2)) {
@@ -12420,7 +12512,7 @@ BUILDIN(eaclass)
return true;
}
-BUILDIN(roclass)
+static BUILDIN(roclass)
{
int job = script_getnum(st,2);
int sex;
@@ -12440,7 +12532,7 @@ BUILDIN(roclass)
/*==========================================
* Tells client to open a hatching window, used for pet incubator
*------------------------------------------*/
-BUILDIN(birthpet)
+static BUILDIN(birthpet)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -12463,7 +12555,7 @@ BUILDIN(birthpet)
* 3 : don't reset skill, blvl=1
* 4 : jlvl=0
*------------------------------------------*/
-BUILDIN(resetlvl)
+static BUILDIN(resetlvl)
{
int type=script_getnum(st,2);
struct map_session_data *sd = script->rid2sd(st);
@@ -12476,7 +12568,7 @@ BUILDIN(resetlvl)
/*==========================================
* Reset a player status point
*------------------------------------------*/
-BUILDIN(resetstatus)
+static BUILDIN(resetstatus)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -12488,7 +12580,7 @@ BUILDIN(resetstatus)
/*==========================================
* script command resetskill
*------------------------------------------*/
-BUILDIN(resetskill)
+static BUILDIN(resetskill)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -12500,7 +12592,7 @@ BUILDIN(resetskill)
/*==========================================
* Counts total amount of skill points.
*------------------------------------------*/
-BUILDIN(skillpointcount)
+static BUILDIN(skillpointcount)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -12512,7 +12604,7 @@ BUILDIN(skillpointcount)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(changebase)
+static BUILDIN(changebase)
{
struct map_session_data *sd = NULL;
int vclass;
@@ -12558,7 +12650,7 @@ static struct map_session_data *prepareChangeSex(struct script_state *st)
/*==========================================
* Unequip all item and request for a changesex to char-serv
*------------------------------------------*/
-BUILDIN(changesex)
+static BUILDIN(changesex)
{
struct map_session_data *sd = prepareChangeSex(st);
if (sd == NULL)
@@ -12570,7 +12662,7 @@ BUILDIN(changesex)
/*==========================================
* Unequip all items and change character sex [4144]
*------------------------------------------*/
-BUILDIN(changecharsex)
+static BUILDIN(changecharsex)
{
struct map_session_data *sd = prepareChangeSex(st);
if (sd == NULL)
@@ -12582,7 +12674,7 @@ BUILDIN(changecharsex)
/*==========================================
* Works like 'announce' but outputs in the common chat window
*------------------------------------------*/
-BUILDIN(globalmes)
+static BUILDIN(globalmes)
{
const char *name=NULL,*mes;
@@ -12610,7 +12702,7 @@ BUILDIN(globalmes)
/// Creates a waiting room (chat room) for this npc.
///
/// waitingroom "<title>",<limit>{,"<event>"{,<trigger>{,<zeny>{,<minlvl>{,<maxlvl>}}}}};
-BUILDIN(waitingroom)
+static BUILDIN(waitingroom)
{
struct npc_data* nd;
const char* title = script_getstr(st, 2);
@@ -12634,7 +12726,8 @@ BUILDIN(waitingroom)
///
/// delwaitingroom "<npc_name>";
/// delwaitingroom;
-BUILDIN(delwaitingroom) {
+static BUILDIN(delwaitingroom)
+{
struct npc_data* nd;
if( script_hasdata(st,2) )
nd = npc->name2id(script_getstr(st, 2));
@@ -12649,7 +12742,8 @@ BUILDIN(delwaitingroom) {
///
/// kickwaitingroomall "<npc_name>";
/// kickwaitingroomall;
-BUILDIN(waitingroomkickall) {
+static BUILDIN(waitingroomkickall)
+{
struct npc_data* nd;
struct chat_data* cd;
@@ -12667,7 +12761,8 @@ BUILDIN(waitingroomkickall) {
///
/// enablewaitingroomevent "<npc_name>";
/// enablewaitingroomevent;
-BUILDIN(enablewaitingroomevent) {
+static BUILDIN(enablewaitingroomevent)
+{
struct npc_data* nd;
struct chat_data* cd;
@@ -12685,7 +12780,8 @@ BUILDIN(enablewaitingroomevent) {
///
/// disablewaitingroomevent "<npc_name>";
/// disablewaitingroomevent;
-BUILDIN(disablewaitingroomevent) {
+static BUILDIN(disablewaitingroomevent)
+{
struct npc_data *nd;
struct chat_data *cd;
@@ -12717,7 +12813,7 @@ BUILDIN(disablewaitingroomevent) {
///
/// getwaitingroomstate(<type>,"<npc_name>") -> <info>
/// getwaitingroomstate(<type>) -> <info>
-BUILDIN(getwaitingroomstate)
+static BUILDIN(getwaitingroomstate)
{
const struct npc_data *nd;
const struct chat_data *cd;
@@ -12773,7 +12869,7 @@ BUILDIN(getwaitingroomstate)
///
/// warpwaitingpc "<map name>",<x>,<y>,<number of players>;
/// warpwaitingpc "<map name>",<x>,<y>;
-BUILDIN(warpwaitingpc)
+static BUILDIN(warpwaitingpc)
{
int x, y, i, n;
const char* map_name;
@@ -12830,7 +12926,8 @@ BUILDIN(warpwaitingpc)
/// Detaches a character from a script.
///
/// @param st Script state to detach the character from.
-void script_detach_rid(struct script_state* st) {
+static void script_detach_rid(struct script_state *st)
+{
if(st->rid) {
script->detach_state(st, false);
st->rid = 0;
@@ -12840,7 +12937,8 @@ void script_detach_rid(struct script_state* st) {
/*==========================================
* Attach sd char id to script and detach current one if any
*------------------------------------------*/
-BUILDIN(attachrid) {
+static BUILDIN(attachrid)
+{
int rid = script_getnum(st,2);
if (map->id2sd(rid) != NULL) {
@@ -12856,7 +12954,7 @@ BUILDIN(attachrid) {
/*==========================================
* Detach script to rid
*------------------------------------------*/
-BUILDIN(detachrid)
+static BUILDIN(detachrid)
{
script->detach_rid(st);
return true;
@@ -12864,7 +12962,7 @@ BUILDIN(detachrid)
/*==========================================
* Chk if account connected, (and charid from account if specified)
*------------------------------------------*/
-BUILDIN(isloggedin)
+static BUILDIN(isloggedin)
{
struct map_session_data *sd = map->id2sd(script_getnum(st,2));
if (script_hasdata(st,3) && sd != NULL
@@ -12877,7 +12975,8 @@ BUILDIN(isloggedin)
/*==========================================
*
*------------------------------------------*/
-BUILDIN(setmapflagnosave) {
+static BUILDIN(setmapflagnosave)
+{
int16 m,x,y;
unsigned short map_index;
const char *str,*str2;
@@ -12907,7 +13006,7 @@ enum mapinfo_info {
MAPINFO_ZONE
};
-BUILDIN(getmapinfo)
+static BUILDIN(getmapinfo)
{
enum mapinfo_info mode = script_getnum(st, 2);
int16 m = -1;
@@ -12969,7 +13068,7 @@ BUILDIN(getmapinfo)
return true;
}
-BUILDIN(getmapflag)
+static BUILDIN(getmapflag)
{
int16 m,i;
const char *str;
@@ -13041,7 +13140,7 @@ BUILDIN(getmapflag)
return true;
}
/* pvp timer handling */
-int script_mapflag_pvp_sub(struct block_list *bl, va_list ap)
+static int script_mapflag_pvp_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
@@ -13063,7 +13162,8 @@ int script_mapflag_pvp_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(setmapflag) {
+static BUILDIN(setmapflag)
+{
int16 m,i;
const char *str, *val2 = NULL;
int val=0;
@@ -13169,7 +13269,8 @@ BUILDIN(setmapflag) {
return true;
}
-BUILDIN(removemapflag) {
+static BUILDIN(removemapflag)
+{
int16 m,i;
const char *str;
@@ -13257,7 +13358,7 @@ BUILDIN(removemapflag) {
return true;
}
-BUILDIN(pvpon)
+static BUILDIN(pvpon)
{
int16 m;
const char *str;
@@ -13303,7 +13404,7 @@ BUILDIN(pvpon)
return true;
}
-int buildin_pvpoff_sub(struct block_list *bl, va_list ap)
+static int buildin_pvpoff_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
@@ -13319,7 +13420,8 @@ int buildin_pvpoff_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(pvpoff) {
+static BUILDIN(pvpoff)
+{
int16 m;
const char *str;
struct block_list bl;
@@ -13343,7 +13445,8 @@ BUILDIN(pvpoff) {
return true;
}
-BUILDIN(gvgon) {
+static BUILDIN(gvgon)
+{
int16 m;
const char *str;
@@ -13367,7 +13470,8 @@ BUILDIN(gvgon) {
return true;
}
-BUILDIN(gvgoff) {
+static BUILDIN(gvgoff)
+{
int16 m;
const char *str;
@@ -13390,7 +13494,8 @@ BUILDIN(gvgoff) {
* emotion emotion#, <target: 0 - NPC, 1 - PC>, <NPC/PC name>
*------------------------------------------*/
//Optional second parameter added by [Skotlex]
-BUILDIN(emotion) {
+static BUILDIN(emotion)
+{
int type;
int player=0;
@@ -13419,7 +13524,7 @@ BUILDIN(emotion) {
return true;
}
-int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list ap)
+static int buildin_maprespawnguildid_sub_pc(struct map_session_data *sd, va_list ap)
{
int16 m=va_arg(ap,int);
int g_id=va_arg(ap,int);
@@ -13436,7 +13541,7 @@ int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list ap)
return 1;
}
-int buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list ap)
+static int buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
@@ -13450,7 +13555,8 @@ int buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(maprespawnguildid) {
+static BUILDIN(maprespawnguildid)
+{
const char *mapname=script_getstr(st,2);
int g_id=script_getnum(st,3);
int flag=script_getnum(st,4);
@@ -13467,28 +13573,32 @@ BUILDIN(maprespawnguildid) {
return true;
}
-BUILDIN(agitstart) {
+static BUILDIN(agitstart)
+{
if(map->agit_flag==1) return true; // Agit already Start.
map->agit_flag=1;
guild->agit_start();
return true;
}
-BUILDIN(agitend) {
+static BUILDIN(agitend)
+{
if(map->agit_flag==0) return true; // Agit already End.
map->agit_flag=0;
guild->agit_end();
return true;
}
-BUILDIN(agitstart2) {
+static BUILDIN(agitstart2)
+{
if(map->agit2_flag==1) return true; // Agit2 already Start.
map->agit2_flag=1;
guild->agit2_start();
return true;
}
-BUILDIN(agitend2) {
+static BUILDIN(agitend2)
+{
if(map->agit2_flag==0) return true; // Agit2 already End.
map->agit2_flag=0;
guild->agit2_end();
@@ -13498,7 +13608,8 @@ BUILDIN(agitend2) {
/*==========================================
* Returns whether woe is on or off.
*------------------------------------------*/
-BUILDIN(agitcheck) {
+static BUILDIN(agitcheck)
+{
script_pushint(st,map->agit_flag);
return true;
}
@@ -13506,7 +13617,8 @@ BUILDIN(agitcheck) {
/*==========================================
* Returns whether woese is on or off.
*------------------------------------------*/
-BUILDIN(agitcheck2) {
+static BUILDIN(agitcheck2)
+{
script_pushint(st,map->agit2_flag);
return true;
}
@@ -13514,7 +13626,7 @@ BUILDIN(agitcheck2) {
/// Sets the guild_id of this npc.
///
/// flagemblem <guild_id>;
-BUILDIN(flagemblem)
+static BUILDIN(flagemblem)
{
struct npc_data *nd;
int g_id = script_getnum(st,2);
@@ -13539,7 +13651,7 @@ BUILDIN(flagemblem)
return true;
}
-BUILDIN(getcastlename)
+static BUILDIN(getcastlename)
{
const char* mapname = mapindex->getmapname(script_getstr(st,2),NULL);
struct guild_castle* gc = guild->mapname2gc(mapname);
@@ -13548,7 +13660,7 @@ BUILDIN(getcastlename)
return true;
}
-BUILDIN(getcastledata)
+static BUILDIN(getcastledata)
{
const char *mapname = mapindex->getmapname(script_getstr(st,2),NULL);
int index = script_getnum(st,3);
@@ -13591,7 +13703,7 @@ BUILDIN(getcastledata)
return true;
}
-BUILDIN(setcastledata)
+static BUILDIN(setcastledata)
{
const char *mapname = mapindex->getmapname(script_getstr(st,2),NULL);
int index = script_getnum(st,3);
@@ -13614,7 +13726,7 @@ BUILDIN(setcastledata)
/* =====================================================================
* ---------------------------------------------------------------------*/
-BUILDIN(requestguildinfo)
+static BUILDIN(requestguildinfo)
{
int guild_id=script_getnum(st,2);
const char *event=NULL;
@@ -13631,7 +13743,7 @@ BUILDIN(requestguildinfo)
/// Returns the number of cards that have been compounded onto the specified equipped item.
/// getequipcardcnt(<equipment slot>);
-BUILDIN(getequipcardcnt)
+static BUILDIN(getequipcardcnt)
{
int i=-1,j,num;
struct map_session_data *sd;
@@ -13669,7 +13781,7 @@ BUILDIN(getequipcardcnt)
/// Removes all cards from the item found in the specified equipment slot of the invoking character,
/// and give them to the character. If any cards were removed in this manner, it will also show a success effect.
/// successremovecards(<slot>);
-BUILDIN(successremovecards)
+static BUILDIN(successremovecards)
{
int i = -1, c, cardflag = 0;
@@ -13723,7 +13835,7 @@ BUILDIN(successremovecards)
/// <type>=1 : will keep the item, but destroy the cards.
/// <type>=2 : will keep the cards, but destroy the item.
/// <type>=3 : will just display the failure effect.
-BUILDIN(failedremovecards)
+static BUILDIN(failedremovecards)
{
int i = -1, c, cardflag = 0;
int num = script_getnum(st, 2);
@@ -13787,7 +13899,8 @@ BUILDIN(failedremovecards)
* improved by [Lance]
* ================================================================*/
// Added by RoVeRT
-BUILDIN(mapwarp) {
+static BUILDIN(mapwarp)
+{
int x,y,m,check_val=0,check_ID=0,i=0;
struct guild *g = NULL;
struct party_data *p = NULL;
@@ -13840,7 +13953,7 @@ BUILDIN(mapwarp) {
}
// Added by RoVeRT
-int buildin_mobcount_sub(struct block_list *bl, va_list ap)
+static int buildin_mobcount_sub(struct block_list *bl, va_list ap)
{
char *event = va_arg(ap,char *);
const struct mob_data *md = NULL;
@@ -13855,7 +13968,8 @@ int buildin_mobcount_sub(struct block_list *bl, va_list ap)
}
// Added by RoVeRT
-BUILDIN(mobcount) {
+static BUILDIN(mobcount)
+{
const char *mapname,*event;
int16 m;
mapname=script_getstr(st,2);
@@ -13888,7 +14002,8 @@ BUILDIN(mobcount) {
return true;
}
-BUILDIN(marriage) {
+static BUILDIN(marriage)
+{
const char *partner=script_getstr(st,2);
struct map_session_data *sd = script->rid2sd(st);
struct map_session_data *p_sd = script->nick2sd(st, partner);
@@ -13900,7 +14015,7 @@ BUILDIN(marriage) {
script_pushint(st,1);
return true;
}
-BUILDIN(wedding_effect)
+static BUILDIN(wedding_effect)
{
struct map_session_data *sd = script->rid2sd(st);
struct block_list *bl;
@@ -13912,7 +14027,7 @@ BUILDIN(wedding_effect)
clif->wedding_effect(bl);
return true;
}
-BUILDIN(divorce)
+static BUILDIN(divorce)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL || pc->divorce(sd) < 0) {
@@ -13923,7 +14038,8 @@ BUILDIN(divorce)
return true;
}
-BUILDIN(ispartneron) {
+static BUILDIN(ispartneron)
+{
struct map_session_data *sd = script->rid2sd(st);
if (sd==NULL || !pc->ismarried(sd)
@@ -13936,7 +14052,7 @@ BUILDIN(ispartneron) {
return true;
}
-BUILDIN(getpartnerid)
+static BUILDIN(getpartnerid)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -13946,7 +14062,7 @@ BUILDIN(getpartnerid)
return true;
}
-BUILDIN(getchildid)
+static BUILDIN(getchildid)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -13956,7 +14072,7 @@ BUILDIN(getchildid)
return true;
}
-BUILDIN(getmotherid)
+static BUILDIN(getmotherid)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -13966,7 +14082,8 @@ BUILDIN(getmotherid)
return true;
}
-BUILDIN(getfatherid) {
+static BUILDIN(getfatherid)
+{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
return true;
@@ -13975,7 +14092,7 @@ BUILDIN(getfatherid) {
return true;
}
-BUILDIN(warppartner)
+static BUILDIN(warppartner)
{
int x,y;
unsigned short map_index;
@@ -14005,7 +14122,7 @@ BUILDIN(warppartner)
/*================================================
* Script for Displaying MOB Information [Valaris]
*------------------------------------------------*/
-BUILDIN(strmobinfo)
+static BUILDIN(strmobinfo)
{
int num=script_getnum(st,2);
@@ -14039,7 +14156,8 @@ BUILDIN(strmobinfo)
* Summon guardians [Valaris]
* guardian("<map name>",<x>,<y>,"<name to show>",<mob id>{,"<event label>"}{,<guardian index>}) -> <id>
*------------------------------------------*/
-BUILDIN(guardian) {
+static BUILDIN(guardian)
+{
int class_ = 0, x = 0, y = 0, guardian = 0;
const char *str, *mapname, *evt="";
bool has_index = false;
@@ -14080,7 +14198,8 @@ BUILDIN(guardian) {
/*==========================================
* Invisible Walls [Zephyrus]
*------------------------------------------*/
-BUILDIN(setwall) {
+static BUILDIN(setwall)
+{
const char *mapname, *name;
int x, y, m, size, dir;
bool shootable;
@@ -14100,7 +14219,7 @@ BUILDIN(setwall) {
return true;
}
-BUILDIN(delwall)
+static BUILDIN(delwall)
{
const char *name = script_getstr(st,2);
@@ -14119,7 +14238,8 @@ BUILDIN(delwall)
/// 1 - maximum hp
/// 2 - current hp
///
-BUILDIN(guardianinfo) {
+static BUILDIN(guardianinfo)
+{
const char* mapname = mapindex->getmapname(script_getstr(st,2),NULL);
int id = script_getnum(st,3);
int type = script_getnum(st,4);
@@ -14151,7 +14271,8 @@ BUILDIN(guardianinfo) {
/*==========================================
* Get the item name by item_id or null
*------------------------------------------*/
-BUILDIN(getitemname) {
+static BUILDIN(getitemname)
+{
int item_id=0;
struct item_data *i_data;
char *item_name;
@@ -14179,7 +14300,7 @@ BUILDIN(getitemname) {
/*==========================================
* Returns number of slots an item has. [Skotlex]
*------------------------------------------*/
-BUILDIN(getitemslots)
+static BUILDIN(getitemslots)
{
int item_id;
struct item_data *i_data;
@@ -14201,7 +14322,7 @@ BUILDIN(getitemslots)
* Returns some values of an item [Lupus]
* Price, Weight, etc...
*------------------------------------------*/
-BUILDIN(getiteminfo)
+static BUILDIN(getiteminfo)
{
int item_id = script_getnum(st, 2);
int n = script_getnum(st, 3);
@@ -14283,7 +14404,7 @@ BUILDIN(getiteminfo)
* IT_OPT_VALUE Amount of the bonus to be added.
* @return value of the type or -1.
*/
-BUILDIN(getequippedoptioninfo)
+static BUILDIN(getequippedoptioninfo)
{
int val = 0, type = script_getnum(st, 2);
struct map_session_data *sd = NULL;
@@ -14321,7 +14442,7 @@ BUILDIN(getequippedoptioninfo)
* @param type IT_OPT_INDEX or IT_OPT_VALUE.
* @return (int) value or -1 on failure.
*/
-BUILDIN(getequipoption)
+static BUILDIN(getequipoption)
{
int val = 0, equip_index = script_getnum(st, 2);
int slot = script_getnum(st, 3);
@@ -14385,7 +14506,7 @@ BUILDIN(getequipoption)
* For IT_OPT_VALUE, the value of the script bonus.
* @return 0 on failure, 1 on success.
*/
-BUILDIN(setequipoption)
+static BUILDIN(setequipoption)
{
int equip_index = script_getnum(st, 2);
int slot = script_getnum(st, 3);
@@ -14465,7 +14586,7 @@ BUILDIN(setequipoption)
* Set some values of an item [Lupus]
* Price, Weight, etc...
*------------------------------------------*/
-BUILDIN(setiteminfo)
+static BUILDIN(setiteminfo)
{
// TODO: Validate data in a similar way as during database load
int item_id = script_getnum(st, 2);
@@ -14551,7 +14672,7 @@ BUILDIN(setiteminfo)
* Useful for such quests as "Sign this refined item with players name" etc
* Hat[0] +4 -> Player's Hat[0] +4
*------------------------------------------*/
-BUILDIN(getequipcardid)
+static BUILDIN(getequipcardid)
{
int i=-1,num,slot;
struct map_session_data *sd;
@@ -14576,7 +14697,7 @@ BUILDIN(getequipcardid)
/*==========================================
* petskillbonus [Valaris] //Rewritten by [Skotlex]
*------------------------------------------*/
-BUILDIN(petskillbonus)
+static BUILDIN(petskillbonus)
{
struct pet_data *pd;
@@ -14613,7 +14734,7 @@ BUILDIN(petskillbonus)
/*==========================================
* pet looting [Valaris] //Rewritten by [Skotlex]
*------------------------------------------*/
-BUILDIN(petloot)
+static BUILDIN(petloot)
{
int max;
struct pet_data *pd;
@@ -14653,7 +14774,7 @@ BUILDIN(petloot)
* @inventorylist_card(0..3), @inventorylist_expire
* @inventorylist_count = scalar
*------------------------------------------*/
-BUILDIN(getinventorylist)
+static BUILDIN(getinventorylist)
{
struct map_session_data *sd = script->rid2sd(st);
char card_var[SCRIPT_VARNAME_LENGTH];
@@ -14694,7 +14815,7 @@ BUILDIN(getinventorylist)
return true;
}
-BUILDIN(getcartinventorylist)
+static BUILDIN(getcartinventorylist)
{
struct map_session_data *sd = script->rid2sd(st);
char card_var[SCRIPT_VARNAME_LENGTH];
@@ -14731,7 +14852,7 @@ BUILDIN(getcartinventorylist)
return true;
}
-BUILDIN(getskilllist)
+static BUILDIN(getskilllist)
{
struct map_session_data *sd = script->rid2sd(st);
int i,j=0;
@@ -14749,7 +14870,7 @@ BUILDIN(getskilllist)
return true;
}
-BUILDIN(clearitem)
+static BUILDIN(clearitem)
{
struct map_session_data *sd = script->rid2sd(st);
int i;
@@ -14766,7 +14887,7 @@ BUILDIN(clearitem)
/*==========================================
* Disguise Player (returns Mob/NPC ID if success, 0 on fail)
*------------------------------------------*/
-BUILDIN(disguise)
+static BUILDIN(disguise)
{
int id;
struct map_session_data *sd = script->rid2sd(st);
@@ -14787,7 +14908,7 @@ BUILDIN(disguise)
/*==========================================
* Undisguise Player (returns 1 if success, 0 on fail)
*------------------------------------------*/
-BUILDIN(undisguise)
+static BUILDIN(undisguise)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -14806,7 +14927,7 @@ BUILDIN(undisguise)
* Transform a bl to another class,
* @type unused
*------------------------------------------*/
-BUILDIN(classchange)
+static BUILDIN(classchange)
{
int class, type, target;
struct block_list *bl = map->id2bl(st->oid);
@@ -14832,7 +14953,7 @@ BUILDIN(classchange)
/*==========================================
* Display an effect
*------------------------------------------*/
-BUILDIN(misceffect)
+static BUILDIN(misceffect)
{
int type;
@@ -14851,7 +14972,7 @@ BUILDIN(misceffect)
/*==========================================
* Play a BGM on a single client [Rikter/Yommy]
*------------------------------------------*/
-BUILDIN(playbgm)
+static BUILDIN(playbgm)
{
struct map_session_data* sd = script->rid2sd(st);
@@ -14864,7 +14985,7 @@ BUILDIN(playbgm)
return true;
}
-int playbgm_sub(struct block_list* bl,va_list ap)
+static int playbgm_sub(struct block_list *bl, va_list ap)
{
const char* name = va_arg(ap,const char*);
@@ -14873,7 +14994,7 @@ int playbgm_sub(struct block_list* bl,va_list ap)
return 0;
}
-int playbgm_foreachpc_sub(struct map_session_data* sd, va_list args)
+static int playbgm_foreachpc_sub(struct map_session_data *sd, va_list args)
{
const char* name = va_arg(args, const char*);
@@ -14885,7 +15006,8 @@ int playbgm_foreachpc_sub(struct map_session_data* sd, va_list args)
/*==========================================
* Play a BGM on multiple client [Rikter/Yommy]
*------------------------------------------*/
-BUILDIN(playbgmall) {
+static BUILDIN(playbgmall)
+{
const char* name;
name = script_getstr(st,2);
@@ -14927,7 +15049,7 @@ BUILDIN(playbgmall) {
/*==========================================
* Play a .wav sound for sd
*------------------------------------------*/
-BUILDIN(soundeffect)
+static BUILDIN(soundeffect)
{
struct map_session_data *sd = script->rid2sd(st);
const char* name = script_getstr(st,2);
@@ -14939,7 +15061,7 @@ BUILDIN(soundeffect)
return true;
}
-int soundeffect_sub(struct block_list *bl, va_list ap)
+static int soundeffect_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
char *name = va_arg(ap, char *);
@@ -14958,7 +15080,8 @@ int soundeffect_sub(struct block_list *bl, va_list ap)
* Play a sound effect (.wav) on multiple clients
* soundeffectall "<filepath>",<type>{,"<map name>"}{,<x0>,<y0>,<x1>,<y1>};
*------------------------------------------*/
-BUILDIN(soundeffectall) {
+static BUILDIN(soundeffectall)
+{
struct block_list* bl;
const char* name;
int type;
@@ -15009,7 +15132,7 @@ BUILDIN(soundeffectall) {
/*==========================================
* pet status recovery [Valaris] / Rewritten by [Skotlex]
*------------------------------------------*/
-BUILDIN(petrecovery)
+static BUILDIN(petrecovery)
{
struct pet_data *pd;
struct map_session_data *sd = script->rid2sd(st);
@@ -15038,7 +15161,7 @@ BUILDIN(petrecovery)
*------------------------------------------*/
/// petskillattack <skill id>,<level>,<div>,<rate>,<bonusrate>
/// petskillattack "<skill name>",<level>,<div>,<rate>,<bonusrate>
-BUILDIN(petskillattack)
+static BUILDIN(petskillattack)
{
struct pet_data *pd;
struct map_session_data *sd = script->rid2sd(st);
@@ -15064,7 +15187,7 @@ BUILDIN(petskillattack)
*------------------------------------------*/
/// petskillsupport <skill id>,<level>,<delay>,<hp>,<sp>
/// petskillsupport "<skill name>",<level>,<delay>,<hp>,<sp>
-BUILDIN(petskillsupport)
+static BUILDIN(petskillsupport)
{
struct pet_data *pd;
struct map_session_data *sd = script->rid2sd(st);
@@ -15103,7 +15226,7 @@ BUILDIN(petskillsupport)
*------------------------------------------*/
/// skilleffect <skill id>,<level>
/// skilleffect "<skill name>",<level>
-BUILDIN(skilleffect)
+static BUILDIN(skilleffect)
{
struct map_session_data *sd;
@@ -15131,7 +15254,8 @@ BUILDIN(skilleffect)
*------------------------------------------*/
/// npcskilleffect <skill id>,<level>,<x>,<y>
/// npcskilleffect "<skill name>",<level>,<x>,<y>
-BUILDIN(npcskilleffect) {
+static BUILDIN(npcskilleffect)
+{
struct block_list *bl= map->id2bl(st->oid);
uint16 skill_id=( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) );
@@ -15148,7 +15272,8 @@ BUILDIN(npcskilleffect) {
/*==========================================
* Special effects [Valaris]
*------------------------------------------*/
-BUILDIN(specialeffect) {
+static BUILDIN(specialeffect)
+{
struct block_list *bl = NULL;
int type = script_getnum(st, 2);
enum send_target target = AREA;
@@ -15191,7 +15316,8 @@ BUILDIN(specialeffect) {
return true;
}
-BUILDIN(specialeffect2) {
+static BUILDIN(specialeffect2)
+{
struct map_session_data *sd;
int type = script_getnum(st,2);
enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA;
@@ -15210,7 +15336,7 @@ BUILDIN(specialeffect2) {
/*==========================================
* Nude [Valaris]
*------------------------------------------*/
-BUILDIN(nude)
+static BUILDIN(nude)
{
struct map_session_data *sd = script->rid2sd(st);
int i, calcflag = 0;
@@ -15235,7 +15361,7 @@ BUILDIN(nude)
/*==========================================
* gmcommand [MouseJstr]
*------------------------------------------*/
-BUILDIN(atcommand)
+static BUILDIN(atcommand)
{
struct map_session_data *sd, *dummy_sd = NULL;
int fd;
@@ -15277,7 +15403,7 @@ BUILDIN(atcommand)
* dispbottom "<message>"{,<color>};
* @endcode
*/
-BUILDIN(dispbottom)
+static BUILDIN(dispbottom)
{
struct map_session_data *sd = script->rid2sd(st);
const char *message = script_getstr(st,2);
@@ -15299,7 +15425,7 @@ BUILDIN(dispbottom)
* All The Players Full Recovery
* (HP/SP full restore and resurrect if need)
*------------------------------------------*/
-int buildin_recovery_sub(struct map_session_data *sd)
+static int buildin_recovery_sub(struct map_session_data *sd)
{
nullpo_retr(0, sd);
@@ -15312,17 +15438,17 @@ int buildin_recovery_sub(struct map_session_data *sd)
return 0;
}
-int buildin_recovery_pc_sub(struct map_session_data *sd, va_list ap)
+static int buildin_recovery_pc_sub(struct map_session_data *sd, va_list ap)
{
return script->buildin_recovery_sub(sd);
}
-int buildin_recovery_bl_sub(struct block_list *bl, va_list ap)
+static int buildin_recovery_bl_sub(struct block_list *bl, va_list ap)
{
return script->buildin_recovery_sub(BL_CAST(BL_PC, bl));
}
-BUILDIN(recovery)
+static BUILDIN(recovery)
{
if (script_hasdata(st, 2)) {
if (script_isstringtype(st, 2)) {
@@ -15360,7 +15486,7 @@ BUILDIN(recovery)
* n -> 0:pet_id 1:pet_class 2:pet_name
* 3:friendly 4:hungry, 5: rename flag.
*------------------------------------------*/
-BUILDIN(getpetinfo)
+static BUILDIN(getpetinfo)
{
struct map_session_data *sd = script->rid2sd(st);
struct pet_data *pd;
@@ -15394,7 +15520,7 @@ BUILDIN(getpetinfo)
* 3:friendly 4:hungry, 5: rename flag.
* 6: level
*------------------------------------------*/
-BUILDIN(gethominfo)
+static BUILDIN(gethominfo)
{
struct map_session_data *sd = script->rid2sd(st);
int type = script_getnum(st,2);
@@ -15424,7 +15550,7 @@ BUILDIN(gethominfo)
/// Retrieves information about character's mercenary
/// getmercinfo <type>[,<char id>];
-BUILDIN(getmercinfo)
+static BUILDIN(getmercinfo)
{
int type;
struct map_session_data* sd;
@@ -15475,7 +15601,7 @@ BUILDIN(getmercinfo)
* selected card or not.
* checkequipedcard(4001);
*------------------------------------------*/
-BUILDIN(checkequipedcard)
+static BUILDIN(checkequipedcard)
{
int n,i,c=0;
struct map_session_data *sd = script->rid2sd(st);
@@ -15502,7 +15628,7 @@ BUILDIN(checkequipedcard)
return true;
}
-BUILDIN(__jump_zero)
+static BUILDIN(__jump_zero)
{
int sel;
sel=script_getnum(st,2);
@@ -15524,7 +15650,7 @@ BUILDIN(__jump_zero)
/*==========================================
* movenpc [MouseJstr]
*------------------------------------------*/
-BUILDIN(movenpc)
+static BUILDIN(movenpc)
{
struct npc_data *nd = NULL;
const char *npc_name;
@@ -15546,7 +15672,7 @@ BUILDIN(movenpc)
/*==========================================
* message [MouseJstr]
*------------------------------------------*/
-BUILDIN(message)
+static BUILDIN(message)
{
const char *message;
struct map_session_data *sd = NULL;
@@ -15567,12 +15693,13 @@ BUILDIN(message)
/*==========================================
* npctalk (sends message to surrounding area)
- * usage: npctalk "<message>"{,"<npc name>"};
+ * usage: npctalk("<message>"{, "<npc name>"{, <show_name>}});
*------------------------------------------*/
-BUILDIN(npctalk)
+static BUILDIN(npctalk)
{
struct npc_data* nd;
const char *str = script_getstr(st,2);
+ bool show_name = true;
if (script_hasdata(st, 3)) {
nd = npc->name2id(script_getstr(st, 3));
@@ -15580,19 +15707,28 @@ BUILDIN(npctalk)
nd = map->id2nd(st->oid);
}
+ if (script_hasdata(st, 4)) {
+ show_name = (script_getnum(st, 4) != 0) ? true : false;
+ }
+
if (nd != NULL) {
char name[NAME_LENGTH], message[256];
safestrncpy(name, nd->name, sizeof(name));
strtok(name, "#"); // discard extra name identifier if present
- safesnprintf(message, sizeof(message), "%s : %s", name, str);
- clif->disp_overhead(&nd->bl, message);
+ if (show_name) {
+ safesnprintf(message, sizeof(message), "%s : %s", name, str);
+ } else {
+ safesnprintf(message, sizeof(message), "%s", str);
+ }
+ clif->disp_overhead(&nd->bl, message, AREA_CHAT_WOC, NULL);
}
return true;
}
// change npc walkspeed [Valaris]
-BUILDIN(npcspeed) {
+static BUILDIN(npcspeed)
+{
struct npc_data* nd;
int speed;
@@ -15608,7 +15744,7 @@ BUILDIN(npcspeed) {
return true;
}
// make an npc walk to a position [Valaris]
-BUILDIN(npcwalkto)
+static BUILDIN(npcwalkto)
{
struct npc_data *nd = map->id2nd(st->oid);
int x=0,y=0;
@@ -15629,7 +15765,7 @@ BUILDIN(npcwalkto)
return true;
}
// stop an npc's movement [Valaris]
-BUILDIN(npcstop)
+static BUILDIN(npcstop)
{
struct npc_data *nd = map->id2nd(st->oid);
@@ -15642,7 +15778,7 @@ BUILDIN(npcstop)
}
// set click npc distance [4144]
-BUILDIN(setnpcdistance)
+static BUILDIN(setnpcdistance)
{
struct npc_data *nd = map->id2nd(st->oid);
if (nd == NULL)
@@ -15654,7 +15790,7 @@ BUILDIN(setnpcdistance)
}
// return current npc direction [4144]
-BUILDIN(getnpcdir)
+static BUILDIN(getnpcdir)
{
const struct npc_data *nd = NULL;
@@ -15680,7 +15816,7 @@ BUILDIN(getnpcdir)
}
// set npc direction [4144]
-BUILDIN(setnpcdir)
+static BUILDIN(setnpcdir)
{
int newdir;
struct npc_data *nd = NULL;
@@ -15714,7 +15850,7 @@ BUILDIN(setnpcdir)
}
// return npc class [4144]
-BUILDIN(getnpcclass)
+static BUILDIN(getnpcclass)
{
const struct npc_data *nd = NULL;
@@ -15742,7 +15878,7 @@ BUILDIN(getnpcclass)
/*==========================================
* getlook char info. getlook(arg)
*------------------------------------------*/
-BUILDIN(getlook)
+static BUILDIN(getlook)
{
int type,val = -1;
struct map_session_data *sd = script->rid2sd(st);
@@ -15771,7 +15907,7 @@ BUILDIN(getlook)
/*==========================================
* get char save point. argument: 0- map name, 1- x, 2- y
*------------------------------------------*/
-BUILDIN(getsavepoint)
+static BUILDIN(getsavepoint)
{
int type;
struct map_session_data *sd = script->rid2sd(st);
@@ -15814,7 +15950,7 @@ BUILDIN(getsavepoint)
* 0 - success
* -1 - some error, MapName$,MapX,MapY contains unknown value.
*------------------------------------------*/
-BUILDIN(getmapxy)
+static BUILDIN(getmapxy)
{
struct block_list *bl = NULL;
struct map_session_data *sd = NULL;
@@ -16018,7 +16154,7 @@ enum logmes_type {
/*==========================================
* Allows player to write logs (i.e. Bank NPC, etc) [Lupus]
*------------------------------------------*/
-BUILDIN(logmes)
+static BUILDIN(logmes)
{
const char *str = script_getstr(st, 2);
struct map_session_data *sd = script->rid2sd(st);
@@ -16045,7 +16181,7 @@ BUILDIN(logmes)
return true;
}
-BUILDIN(summon)
+static BUILDIN(summon)
{
int class_, timeout=0;
const char *str,*event="";
@@ -16083,7 +16219,8 @@ BUILDIN(summon)
/*==========================================
* Checks whether it is daytime/nighttime
*------------------------------------------*/
-BUILDIN(isnight) {
+static BUILDIN(isnight)
+{
script_pushint(st,(map->night_flag == 1));
return true;
}
@@ -16092,7 +16229,7 @@ BUILDIN(isnight) {
* Check how many items/cards in the list are
* equipped - used for 2/15's cards patch [celest]
*------------------------------------------------*/
-BUILDIN(isequippedcnt)
+static BUILDIN(isequippedcnt)
{
int i, j, k, id = 1;
int ret = 0;
@@ -16141,7 +16278,7 @@ BUILDIN(isequippedcnt)
* -- Items checked cannot be reused in another
* card set to prevent exploits
*------------------------------------------------*/
-BUILDIN(isequipped)
+static BUILDIN(isequipped)
{
int i, j, k, id = 1;
int index, flag;
@@ -16221,7 +16358,7 @@ BUILDIN(isequipped)
* Check how many given inserted cards in the CURRENT
* weapon - used for 2/15's cards patch [Lupus]
*------------------------------------------------*/
-BUILDIN(cardscnt)
+static BUILDIN(cardscnt)
{
int i, k, id = 1;
int ret = 0;
@@ -16263,7 +16400,7 @@ BUILDIN(cardscnt)
* Returns the refined number of the current item, or an
* item with inventory index specified
*-------------------------------------------------------*/
-BUILDIN(getrefine)
+static BUILDIN(getrefine)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -16280,11 +16417,13 @@ BUILDIN(getrefine)
/*=======================================================
* Day/Night controls
*-------------------------------------------------------*/
-BUILDIN(night) {
+static BUILDIN(night)
+{
if (map->night_flag != 1) pc->map_night_timer(pc->night_timer_tid, 0, 0, 1);
return true;
}
-BUILDIN(day) {
+static BUILDIN(day)
+{
if (map->night_flag != 0) pc->map_day_timer(pc->day_timer_tid, 0, 0, 1);
return true;
}
@@ -16292,7 +16431,7 @@ BUILDIN(day) {
//=======================================================
// Unequip [Spectre]
//-------------------------------------------------------
-BUILDIN(unequip)
+static BUILDIN(unequip)
{
size_t num;
struct map_session_data *sd;
@@ -16307,7 +16446,7 @@ BUILDIN(unequip)
return true;
}
-BUILDIN(equip)
+static BUILDIN(equip)
{
int nameid=0,i;
struct item_data *item_data;
@@ -16318,7 +16457,7 @@ BUILDIN(equip)
nameid=script_getnum(st,2);
if((item_data = itemdb->exists(nameid)) == NULL)
{
- ShowError("wrong item ID : equipitem(%i)\n",nameid);
+ ShowError("wrong item ID : equipitem(%d)\n",nameid);
return false;
}
ARR_FIND( 0, MAX_INVENTORY, i, sd->status.inventory[i].nameid == nameid && sd->status.inventory[i].equip == 0 );
@@ -16328,7 +16467,7 @@ BUILDIN(equip)
return true;
}
-BUILDIN(autoequip)
+static BUILDIN(autoequip)
{
int nameid, flag;
struct item_data *item_data;
@@ -16355,7 +16494,7 @@ BUILDIN(autoequip)
* Equip2
* equip2 <item id>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>;
*-------------------------------------------------------*/
-BUILDIN(equip2)
+static BUILDIN(equip2)
{
int i,nameid,ref,attr,c0,c1,c2,c3;
struct item_data *item_data;
@@ -16374,12 +16513,12 @@ BUILDIN(equip2)
return false;
}
- ref = script_getnum(st,3);
- attr = script_getnum(st,4);
- c0 = (short)script_getnum(st,5);
- c1 = (short)script_getnum(st,6);
- c2 = (short)script_getnum(st,7);
- c3 = (short)script_getnum(st,8);
+ ref = script_getnum(st, 3);
+ attr = script_getnum(st, 4);
+ c0 = script_getnum(st, 5);
+ c1 = script_getnum(st, 6);
+ c2 = script_getnum(st, 7);
+ c3 = script_getnum(st, 8);
ARR_FIND( 0, MAX_INVENTORY, i,( sd->status.inventory[i].equip == 0 &&
sd->status.inventory[i].nameid == nameid &&
@@ -16400,7 +16539,7 @@ BUILDIN(equip2)
return true;
}
-BUILDIN(setbattleflag)
+static BUILDIN(setbattleflag)
{
const char *flag, *value;
@@ -16415,7 +16554,7 @@ BUILDIN(setbattleflag)
return true;
}
-BUILDIN(getbattleflag)
+static BUILDIN(getbattleflag)
{
const char *flag;
int value;
@@ -16437,7 +16576,7 @@ BUILDIN(getbattleflag)
//=======================================================
// strlen [Valaris]
//-------------------------------------------------------
-BUILDIN(getstrlen)
+static BUILDIN(getstrlen)
{
const char *str = script_getstr(st,2);
@@ -16450,7 +16589,7 @@ BUILDIN(getstrlen)
//=======================================================
// isalpha [Valaris]
//-------------------------------------------------------
-BUILDIN(charisalpha)
+static BUILDIN(charisalpha)
{
const char *str=script_getstr(st,2);
int pos=script_getnum(st,3);
@@ -16464,7 +16603,7 @@ BUILDIN(charisalpha)
//=======================================================
// charisupper <str>, <index>
//-------------------------------------------------------
-BUILDIN(charisupper)
+static BUILDIN(charisupper)
{
const char *str = script_getstr(st,2);
int pos = script_getnum(st,3);
@@ -16478,7 +16617,7 @@ BUILDIN(charisupper)
//=======================================================
// charislower <str>, <index>
//-------------------------------------------------------
-BUILDIN(charislower)
+static BUILDIN(charislower)
{
const char *str = script_getstr(st,2);
int pos = script_getnum(st,3);
@@ -16492,7 +16631,8 @@ BUILDIN(charislower)
//=======================================================
// charat <str>, <index>
//-------------------------------------------------------
-BUILDIN(charat) {
+static BUILDIN(charat)
+{
const char *str = script_getstr(st,2);
int pos = script_getnum(st,3);
@@ -16514,7 +16654,7 @@ BUILDIN(charat) {
// 1 - string
// 2 - other
//-------------------------------------------------------
-BUILDIN(isstr)
+static BUILDIN(isstr)
{
if (script_isinttype(st, 2)) {
script_pushint(st, 0);
@@ -16536,7 +16676,8 @@ enum datatype {
DATATYPE_LABEL = 1 << 13,
};
-BUILDIN(getdatatype) {
+static BUILDIN(getdatatype)
+{
int type;
if (script_hasdata(st, 2)) {
@@ -16583,7 +16724,7 @@ BUILDIN(getdatatype) {
//=======================================================
// chr <int>
//-------------------------------------------------------
-BUILDIN(chr)
+static BUILDIN(chr)
{
char output[2];
output[0] = script_getnum(st, 2);
@@ -16596,7 +16737,7 @@ BUILDIN(chr)
//=======================================================
// ord <chr>
//-------------------------------------------------------
-BUILDIN(ord)
+static BUILDIN(ord)
{
const char *chr = script_getstr(st, 2);
script_pushint(st, *chr);
@@ -16606,7 +16747,7 @@ BUILDIN(ord)
//=======================================================
// setchar <string>, <char>, <index>
//-------------------------------------------------------
-BUILDIN(setchar)
+static BUILDIN(setchar)
{
const char *str = script_getstr(st,2);
const char *c = script_getstr(st,3);
@@ -16623,7 +16764,7 @@ BUILDIN(setchar)
//=======================================================
// insertchar <string>, <char>, <index>
//-------------------------------------------------------
-BUILDIN(insertchar)
+static BUILDIN(insertchar)
{
const char *str = script_getstr(st,2);
const char *c = script_getstr(st,3);
@@ -16650,7 +16791,7 @@ BUILDIN(insertchar)
//=======================================================
// delchar <string>, <index>
//-------------------------------------------------------
-BUILDIN(delchar)
+static BUILDIN(delchar)
{
const char *str = script_getstr(st,2);
int index = script_getnum(st,3);
@@ -16676,7 +16817,7 @@ BUILDIN(delchar)
//=======================================================
// strtoupper <str>
//-------------------------------------------------------
-BUILDIN(strtoupper)
+static BUILDIN(strtoupper)
{
const char *str = script_getstr(st,2);
char *output = aStrdup(str);
@@ -16694,7 +16835,7 @@ BUILDIN(strtoupper)
//=======================================================
// strtolower <str>
//-------------------------------------------------------
-BUILDIN(strtolower)
+static BUILDIN(strtolower)
{
const char *str = script_getstr(st,2);
char *output = aStrdup(str);
@@ -16712,7 +16853,7 @@ BUILDIN(strtolower)
//=======================================================
// substr <str>, <start>, <end>
//-------------------------------------------------------
-BUILDIN(substr)
+static BUILDIN(substr)
{
const char *str = script_getstr(st,2);
char *output;
@@ -16738,7 +16879,7 @@ BUILDIN(substr)
// explode <dest_string_array>, <str>, <delimiter>
// Note: delimiter is limited to 1 char
//-------------------------------------------------------
-BUILDIN(explode)
+static BUILDIN(explode)
{
struct script_data* data = script_getdata(st, 2);
const char *str = script_getstr(st,3);
@@ -16803,7 +16944,7 @@ BUILDIN(explode)
// implode <string_array>
// implode <string_array>, <glue>
//-------------------------------------------------------
-BUILDIN(implode)
+static BUILDIN(implode)
{
struct script_data* data = script_getdata(st, 2);
const char *name;
@@ -16895,7 +17036,7 @@ BUILDIN(implode)
// Implements C sprintf, except format %n. The resulting string is
// returned, instead of being saved in variable by reference.
//-------------------------------------------------------
-BUILDIN(sprintf)
+static BUILDIN(sprintf)
{
struct StringBuf buf;
StrBuf->Init(&buf);
@@ -16916,7 +17057,8 @@ BUILDIN(sprintf)
// sscanf(<str>, <format>, ...);
// Implements C sscanf.
//-------------------------------------------------------
-BUILDIN(sscanf) {
+static BUILDIN(sscanf)
+{
unsigned int argc, arg = 0;
struct script_data* data;
struct map_session_data* sd = NULL;
@@ -17029,7 +17171,8 @@ BUILDIN(sscanf) {
// Implements PHP style strpos. Adapted from code from
// http://www.daniweb.com/code/snippet313.html, Dave Sinkula
//-------------------------------------------------------
-BUILDIN(strpos) {
+static BUILDIN(strpos)
+{
const char *haystack = script_getstr(st,2);
const char *needle = script_getstr(st,3);
int i;
@@ -17073,7 +17216,7 @@ BUILDIN(strpos) {
// instances as specified in <count>. By default will be case
// sensitive.
//---------------------------------------------------------------
-BUILDIN(replacestr)
+static BUILDIN(replacestr)
{
const char *input = script_getstr(st, 2);
const char *find = script_getstr(st, 3);
@@ -17156,7 +17299,7 @@ BUILDIN(replacestr)
// Note: Counts the number of times <search> occurs in
// <input>. By default will be case sensitive.
//--------------------------------------------------------
-BUILDIN(countstr)
+static BUILDIN(countstr)
{
const char *input = script_getstr(st, 2);
const char *find = script_getstr(st, 3);
@@ -17213,7 +17356,8 @@ BUILDIN(countstr)
/// setnpcdisplay("<npc name>", "<new display name>", <new class id>) -> <int>
/// setnpcdisplay("<npc name>", "<new display name>") -> <int>
/// setnpcdisplay("<npc name>", <new class id>) -> <int>
-BUILDIN(setnpcdisplay) {
+static BUILDIN(setnpcdisplay)
+{
const char* name;
const char* newname = NULL;
int class_ = -1, size = -1;
@@ -17259,14 +17403,16 @@ BUILDIN(setnpcdisplay) {
return true;
}
-BUILDIN(atoi) {
+static BUILDIN(atoi)
+{
const char *value;
value = script_getstr(st,2);
script_pushint(st,atoi(value));
return true;
}
-BUILDIN(axtoi) {
+static BUILDIN(axtoi)
+{
const char *hex = script_getstr(st,2);
long value = strtol(hex, NULL, 16);
#if LONG_MAX > INT_MAX || LONG_MIN < INT_MIN
@@ -17276,7 +17422,8 @@ BUILDIN(axtoi) {
return true;
}
-BUILDIN(strtol) {
+static BUILDIN(strtol)
+{
const char *string = script_getstr(st, 2);
int base = script_getnum(st, 3);
long value = strtol(string, NULL, base);
@@ -17288,7 +17435,7 @@ BUILDIN(strtol) {
}
// case-insensitive substring search [lordalfa]
-BUILDIN(compare)
+static BUILDIN(compare)
{
const char *message;
const char *cmpstring;
@@ -17298,7 +17445,7 @@ BUILDIN(compare)
return true;
}
-BUILDIN(strcmp)
+static BUILDIN(strcmp)
{
const char *str1 = script_getstr(st,2);
const char *str2 = script_getstr(st,3);
@@ -17308,7 +17455,7 @@ BUILDIN(strcmp)
// List of mathematics commands --->
-BUILDIN(log10)
+static BUILDIN(log10)
{
double i, a;
i = script_getnum(st,2);
@@ -17317,7 +17464,7 @@ BUILDIN(log10)
return true;
}
-BUILDIN(sqrt) //[zBuffer]
+static BUILDIN(sqrt) //[zBuffer]
{
double i, a;
i = script_getnum(st,2);
@@ -17330,7 +17477,7 @@ BUILDIN(sqrt) //[zBuffer]
return true;
}
-BUILDIN(pow) //[zBuffer]
+static BUILDIN(pow) //[zBuffer]
{
double i, a, b;
a = script_getnum(st,2);
@@ -17340,7 +17487,7 @@ BUILDIN(pow) //[zBuffer]
return true;
}
-BUILDIN(distance) //[zBuffer]
+static BUILDIN(distance) //[zBuffer]
{
int x0, y0, x1, y1;
@@ -17355,7 +17502,7 @@ BUILDIN(distance) //[zBuffer]
// <--- List of mathematics commands
-BUILDIN(min)
+static BUILDIN(min)
{
int i, min;
@@ -17370,7 +17517,7 @@ BUILDIN(min)
return true;
}
-BUILDIN(max)
+static BUILDIN(max)
{
int i, max;
@@ -17385,7 +17532,7 @@ BUILDIN(max)
return true;
}
-BUILDIN(md5)
+static BUILDIN(md5)
{
const char *tmpstr;
char *md5str;
@@ -17397,7 +17544,7 @@ BUILDIN(md5)
return true;
}
-BUILDIN(swap)
+static BUILDIN(swap)
{
struct map_session_data *sd = NULL;
struct script_data *data1, *data2;
@@ -17472,7 +17619,7 @@ BUILDIN(swap)
// [zBuffer] List of dynamic var commands --->
-BUILDIN(setd)
+static BUILDIN(setd)
{
struct map_session_data *sd = NULL;
char varname[100];
@@ -17502,7 +17649,7 @@ BUILDIN(setd)
return true;
}
-int buildin_query_sql_sub(struct script_state *st, struct Sql *handle)
+static int buildin_query_sql_sub(struct script_state *st, struct Sql *handle)
{
int i, j;
struct map_session_data *sd = NULL;
@@ -17584,11 +17731,13 @@ int buildin_query_sql_sub(struct script_state *st, struct Sql *handle)
return true;
}
-BUILDIN(query_sql) {
+static BUILDIN(query_sql)
+{
return script->buildin_query_sql_sub(st, map->mysql_handle);
}
-BUILDIN(query_logsql) {
+static BUILDIN(query_logsql)
+{
if( !logs->config.sql_logs ) {// logs->mysql_handle == NULL
ShowWarning("buildin_query_logsql: SQL logs are disabled, query '%s' will not be executed.\n", script_getstr(st,2));
script_pushint(st,-1);
@@ -17598,7 +17747,7 @@ BUILDIN(query_logsql) {
}
//Allows escaping of a given string.
-BUILDIN(escape_sql)
+static BUILDIN(escape_sql)
{
const char *str;
char *esc_str;
@@ -17612,7 +17761,8 @@ BUILDIN(escape_sql)
return true;
}
-BUILDIN(getd) {
+static BUILDIN(getd)
+{
char varname[100];
const char *buffer;
int elem;
@@ -17630,7 +17780,7 @@ BUILDIN(getd) {
// <--- [zBuffer] List of dynamic var commands
// Pet stat [Lance]
-BUILDIN(petstat)
+static BUILDIN(petstat)
{
struct pet_data *pd;
int flag = script_getnum(st,2);
@@ -17656,7 +17806,7 @@ BUILDIN(petstat)
return true;
}
-BUILDIN(callshop)
+static BUILDIN(callshop)
{
struct npc_data *nd;
const char *shopname;
@@ -17696,7 +17846,7 @@ BUILDIN(callshop)
return true;
}
-BUILDIN(npcshopitem)
+static BUILDIN(npcshopitem)
{
const char* npcname = script_getstr(st, 2);
struct npc_data* nd = npc->name2id(npcname);
@@ -17725,7 +17875,7 @@ BUILDIN(npcshopitem)
return true;
}
-BUILDIN(npcshopadditem)
+static BUILDIN(npcshopadditem)
{
const char* npcname = script_getstr(st,2);
struct npc_data* nd = npc->name2id(npcname);
@@ -17754,7 +17904,7 @@ BUILDIN(npcshopadditem)
return true;
}
-BUILDIN(npcshopdelitem)
+static BUILDIN(npcshopdelitem)
{
const char* npcname = script_getstr(st,2);
struct npc_data* nd = npc->name2id(npcname);
@@ -17790,7 +17940,8 @@ BUILDIN(npcshopdelitem)
}
//Sets a script to attach to a shop npc.
-BUILDIN(npcshopattach) {
+static BUILDIN(npcshopattach)
+{
const char* npcname = script_getstr(st,2);
struct npc_data* nd = npc->name2id(npcname);
int flag = 1;
@@ -17822,7 +17973,7 @@ BUILDIN(npcshopattach) {
* 1 - Equip script
* 2 - Unequip script
*------------------------------------------*/
-BUILDIN(setitemscript)
+static BUILDIN(setitemscript)
{
int item_id,n=0;
const char *new_bonus_script;
@@ -17868,7 +18019,8 @@ BUILDIN(setitemscript)
* is updated to the new rate. Rate must be in the range [1:10000]
* Returns 1 if succeeded (added/updated a mob drop)
*-------------------------------------------------------*/
-BUILDIN(addmonsterdrop) {
+static BUILDIN(addmonsterdrop)
+{
struct mob_db *monster;
int item_id, rate, i, c = MAX_MOB_DROP;
@@ -17928,7 +18080,8 @@ BUILDIN(addmonsterdrop) {
*
* Returns 1 if succeeded (deleted a mob drop)
*-------------------------------------------------------*/
-BUILDIN(delmonsterdrop) {
+static BUILDIN(delmonsterdrop)
+{
struct mob_db *monster;
int item_id, i;
@@ -17970,7 +18123,7 @@ BUILDIN(delmonsterdrop) {
* Name, Level, race, size, etc...
* getmonsterinfo(monsterID,queryIndex);
*------------------------------------------*/
-BUILDIN(getmonsterinfo)
+static BUILDIN(getmonsterinfo)
{
struct mob_db *monster;
int mob_id;
@@ -18014,7 +18167,7 @@ BUILDIN(getmonsterinfo)
return true;
}
-BUILDIN(checkvending) // check vending [Nab4]
+static BUILDIN(checkvending) // check vending [Nab4]
{
struct map_session_data *sd = NULL;
@@ -18032,7 +18185,8 @@ BUILDIN(checkvending) // check vending [Nab4]
}
// check chatting [Marka]
-BUILDIN(checkchatting) {
+static BUILDIN(checkchatting)
+{
struct map_session_data *sd = NULL;
if (script_hasdata(st,2))
@@ -18048,7 +18202,8 @@ BUILDIN(checkchatting) {
return true;
}
-BUILDIN(checkidle) {
+static BUILDIN(checkidle)
+{
struct map_session_data *sd = NULL;
if (script_hasdata(st, 2))
@@ -18064,7 +18219,7 @@ BUILDIN(checkidle) {
return true;
}
-BUILDIN(searchitem)
+static BUILDIN(searchitem)
{
struct script_data* data = script_getdata(st, 2);
const char *itemname = script_getstr(st,3);
@@ -18127,7 +18282,7 @@ BUILDIN(searchitem)
}
// [zBuffer] List of player cont commands --->
-BUILDIN(rid2name)
+static BUILDIN(rid2name)
{
struct block_list *bl = NULL;
int rid = script_getnum(st,2);
@@ -18151,7 +18306,8 @@ BUILDIN(rid2name)
return true;
}
-BUILDIN(pcblockmove) {
+static BUILDIN(pcblockmove)
+{
int id, flag;
struct map_session_data *sd = NULL;
@@ -18174,7 +18330,7 @@ BUILDIN(pcblockmove) {
return true;
}
-BUILDIN(setpcblock)
+static BUILDIN(setpcblock)
{
struct map_session_data *sd = script->rid2sd(st);
enum pcblock_action_flag type = script_getnum(st, 2);
@@ -18210,7 +18366,7 @@ BUILDIN(setpcblock)
return true;
}
-BUILDIN(checkpcblock)
+static BUILDIN(checkpcblock)
{
struct map_session_data *sd = script->rid2sd(st);
int retval = PCBLOCK_NONE;
@@ -18248,7 +18404,7 @@ BUILDIN(checkpcblock)
return true;
}
-BUILDIN(pcfollow)
+static BUILDIN(pcfollow)
{
int id, targetid;
struct map_session_data *sd = NULL;
@@ -18267,7 +18423,7 @@ BUILDIN(pcfollow)
return true;
}
-BUILDIN(pcstopfollow)
+static BUILDIN(pcstopfollow)
{
int id;
struct map_session_data *sd = NULL;
@@ -18288,7 +18444,8 @@ BUILDIN(pcstopfollow)
// [zBuffer] List of mob control commands --->
//## TODO always return if the request/whatever was successfull [FlavioJS]
-BUILDIN(getunittype) {
+static BUILDIN(getunittype)
+{
struct block_list* bl;
int value;
@@ -18325,7 +18482,7 @@ BUILDIN(getunittype) {
* @param5 Value#3 Optional int value to be passed for certain data types.
* @return 1 on success, 0 on failure.
*/
-BUILDIN(setunitdata)
+static BUILDIN(setunitdata)
{
struct block_list *bl = NULL;
const char *mapname = NULL, *udtype = NULL;
@@ -19442,7 +19599,7 @@ BUILDIN(setunitdata)
* @param3 Variable array reference to store data into. (used for UDT_MAPIDXY)
* @return 0 on failure, <value> on success
*/
-BUILDIN(getunitdata)
+static BUILDIN(getunitdata)
{
struct block_list *bl;
const char *udtype = NULL;
@@ -19866,7 +20023,7 @@ BUILDIN(getunitdata)
* @param GUID Game Object Unique ID.
* @return boolean or Name of the game object.
*/
-BUILDIN(getunitname)
+static BUILDIN(getunitname)
{
const struct block_list* bl = NULL;
@@ -19893,7 +20050,7 @@ BUILDIN(getunitname)
* @param Name as string.
* @return boolean.
*/
-BUILDIN(setunitname)
+static BUILDIN(setunitname)
{
struct block_list* bl = map->id2bl(script_getnum(st, 2));
@@ -19954,7 +20111,8 @@ BUILDIN(setunitname)
///
/// unitwalk(<unit_id>,<x>,<y>) -> <bool>
/// unitwalk(<unit_id>,<target_id>) -> <bool>
-BUILDIN(unitwalk) {
+static BUILDIN(unitwalk)
+{
struct block_list* bl;
bl = map->id2bl(script_getnum(st,2));
@@ -19981,7 +20139,7 @@ BUILDIN(unitwalk) {
/// Kills the unit
///
/// unitkill <unit_id>;
-BUILDIN(unitkill)
+static BUILDIN(unitkill)
{
struct block_list* bl = map->id2bl(script_getnum(st,2));
if( bl != NULL )
@@ -19994,7 +20152,8 @@ BUILDIN(unitkill)
/// Returns if it was successfull
///
/// unitwarp(<unit_id>,"<map name>",<x>,<y>) -> <bool>
-BUILDIN(unitwarp) {
+static BUILDIN(unitwarp)
+{
int unit_id;
int mapid;
short x;
@@ -20034,7 +20193,8 @@ BUILDIN(unitwarp) {
///
/// unitattack(<unit_id>,"<target name>"{,<action type>}) -> <bool>
/// unitattack(<unit_id>,<target_id>{,<action type>}) -> <bool>
-BUILDIN(unitattack) {
+static BUILDIN(unitattack)
+{
struct block_list* unit_bl;
struct block_list* target_bl = NULL;
int actiontype = 0;
@@ -20088,7 +20248,8 @@ BUILDIN(unitattack) {
/// Makes the unit stop attacking and moving
///
/// unitstop <unit_id>;
-BUILDIN(unitstop) {
+static BUILDIN(unitstop)
+{
int unit_id;
struct block_list* bl;
@@ -20108,15 +20269,30 @@ BUILDIN(unitstop) {
/// Makes the unit say the message
///
-/// unittalk <unit_id>,"<message>";
-BUILDIN(unittalk) {
+/// unittalk(<unit_id>,"<message>"{, show_name{, <send_target>{, <target_id>}}});
+static BUILDIN(unittalk)
+{
int unit_id;
const char* message;
- struct block_list* bl;
+ struct block_list *bl, *target_bl = NULL;
+ bool show_name = true;
+ enum send_target target = AREA_CHAT_WOC;
unit_id = script_getnum(st,2);
message = script_getstr(st, 3);
+ if (script_hasdata(st, 4)) {
+ show_name = (script_getnum(st, 4) != 0) ? true : false;
+ }
+
+ if (script_hasdata(st, 5)) {
+ target = script_getnum(st, 5);
+ }
+
+ if (script_hasdata(st, 6)) {
+ target_bl = map->id2bl(script_getnum(st, 6));
+ }
+
bl = map->id2bl(unit_id);
if( bl != NULL ) {
struct StringBuf sbuf;
@@ -20125,8 +20301,17 @@ BUILDIN(unittalk) {
safestrncpy(blname, clif->get_bl_name(bl), sizeof(blname));
if(bl->type == BL_NPC)
strtok(blname, "#");
- StrBuf->Printf(&sbuf, "%s : %s", blname, message);
- clif->disp_overhead(bl, StrBuf->Value(&sbuf));
+ if (show_name) {
+ StrBuf->Printf(&sbuf, "%s : %s", blname, message);
+ } else {
+ StrBuf->Printf(&sbuf, "%s", message);
+ }
+
+ if (bl->type == BL_PC && target == SELF && (target_bl == NULL || bl == target_bl)) {
+ clif->notify_playerchat(bl, StrBuf->Value(&sbuf));
+ } else {
+ clif->disp_overhead(bl, StrBuf->Value(&sbuf), target, target_bl);
+ }
StrBuf->Destroy(&sbuf);
}
@@ -20138,7 +20323,8 @@ BUILDIN(unittalk) {
/// unitemote <unit_id>,<emotion>;
///
/// @see e_* in const.txt
-BUILDIN(unitemote) {
+static BUILDIN(unitemote)
+{
int unit_id;
int emotion;
struct block_list* bl;
@@ -20156,7 +20342,8 @@ BUILDIN(unitemote) {
///
/// unitskilluseid <unit_id>,<skill_id>,<skill_lv>{,<target_id>};
/// unitskilluseid <unit_id>,"<skill name>",<skill_lv>{,<target_id>};
-BUILDIN(unitskilluseid) {
+static BUILDIN(unitskilluseid)
+{
int unit_id;
uint16 skill_id;
uint16 skill_lv;
@@ -20189,7 +20376,8 @@ BUILDIN(unitskilluseid) {
///
/// unitskillusepos <unit_id>,<skill_id>,<skill_lv>,<target_x>,<target_y>;
/// unitskillusepos <unit_id>,"<skill name>",<skill_lv>,<target_x>,<target_y>;
-BUILDIN(unitskillusepos) {
+static BUILDIN(unitskillusepos)
+{
int unit_id;
uint16 skill_id;
uint16 skill_lv;
@@ -20225,7 +20413,7 @@ BUILDIN(unitskillusepos) {
/// Pauses the execution of the script, detaching the player
///
/// sleep <mili seconds>;
-BUILDIN(sleep)
+static BUILDIN(sleep)
{
int ticks;
@@ -20254,7 +20442,8 @@ BUILDIN(sleep)
/// Returns if a player is still attached
///
/// sleep2(<mili secconds>) -> <bool>
-BUILDIN(sleep2) {
+static BUILDIN(sleep2)
+{
int ticks;
ticks = script_getnum(st,2);
@@ -20278,7 +20467,7 @@ BUILDIN(sleep2) {
/// Awakes all the sleep timers of the target npc
///
/// awake "<npc name>";
-BUILDIN(awake)
+static BUILDIN(awake)
{
struct DBIterator *iter;
struct script_state *tst;
@@ -20321,7 +20510,7 @@ BUILDIN(awake)
/// Returns 0 if an error occurs.
///
/// getvariableofnpc(<variable>, "<npc name>") -> <reference>
-BUILDIN(getvariableofnpc)
+static BUILDIN(getvariableofnpc)
{
struct script_data* data;
const char* name;
@@ -20363,7 +20552,7 @@ BUILDIN(getvariableofnpc)
return true;
}
-BUILDIN(getvariableofpc)
+static BUILDIN(getvariableofpc)
{
const char* name;
struct script_data* data = script_getdata(st, 2);
@@ -20417,7 +20606,8 @@ BUILDIN(getvariableofpc)
/// warpportal <source x>,<source y>,"<target map>",<target x>,<target y>;
///
/// @author blackhole89
-BUILDIN(warpportal) {
+static BUILDIN(warpportal)
+{
int spx;
int spy;
unsigned short map_index;
@@ -20454,7 +20644,7 @@ BUILDIN(warpportal) {
return true;
}
-BUILDIN(openmail)
+static BUILDIN(openmail)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -20465,7 +20655,7 @@ BUILDIN(openmail)
return true;
}
-BUILDIN(openauction)
+static BUILDIN(openauction)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -20481,7 +20671,8 @@ BUILDIN(openauction)
/// checkcell("<map name>",<x>,<y>,<type>) -> <bool>
///
/// @see cell_chk* constants in const.txt for the types
-BUILDIN(checkcell) {
+static BUILDIN(checkcell)
+{
int16 m = map->mapname2mapid(script_getstr(st,2));
int16 x = script_getnum(st,3);
int16 y = script_getnum(st,4);
@@ -20502,7 +20693,8 @@ BUILDIN(checkcell) {
/// setcell "<map name>",<x1>,<y1>,<x2>,<y2>,<type>,<flag>;
///
/// @see cell_* constants in const.txt for the types
-BUILDIN(setcell) {
+static BUILDIN(setcell)
+{
int16 m = map->mapname2mapid(script_getstr(st,2));
int16 x1 = script_getnum(st,3);
int16 y1 = script_getnum(st,4);
@@ -20531,7 +20723,7 @@ BUILDIN(setcell) {
/*==========================================
* Mercenary Commands
*------------------------------------------*/
-BUILDIN(mercenary_create)
+static BUILDIN(mercenary_create)
{
struct map_session_data *sd;
int class_, contract_time;
@@ -20549,7 +20741,8 @@ BUILDIN(mercenary_create)
return true;
}
-BUILDIN(mercenary_heal) {
+static BUILDIN(mercenary_heal)
+{
struct map_session_data *sd = script->rid2sd(st);
int hp, sp;
@@ -20562,7 +20755,8 @@ BUILDIN(mercenary_heal) {
return true;
}
-BUILDIN(mercenary_sc_start) {
+static BUILDIN(mercenary_sc_start)
+{
struct map_session_data *sd = script->rid2sd(st);
enum sc_type type;
int tick, val1;
@@ -20578,7 +20772,8 @@ BUILDIN(mercenary_sc_start) {
return true;
}
-BUILDIN(mercenary_get_calls) {
+static BUILDIN(mercenary_get_calls)
+{
struct map_session_data *sd = script->rid2sd(st);
int guild_id;
@@ -20604,7 +20799,8 @@ BUILDIN(mercenary_get_calls) {
return true;
}
-BUILDIN(mercenary_set_calls) {
+static BUILDIN(mercenary_set_calls)
+{
struct map_session_data *sd = script->rid2sd(st);
int guild_id, value, *calls;
@@ -20634,7 +20830,8 @@ BUILDIN(mercenary_set_calls) {
return true;
}
-BUILDIN(mercenary_get_faith) {
+static BUILDIN(mercenary_get_faith)
+{
struct map_session_data *sd = script->rid2sd(st);
int guild_id;
@@ -20660,7 +20857,8 @@ BUILDIN(mercenary_get_faith) {
return true;
}
-BUILDIN(mercenary_set_faith) {
+static BUILDIN(mercenary_set_faith)
+{
struct map_session_data *sd = script->rid2sd(st);
int guild_id, value, *calls;
@@ -20695,7 +20893,7 @@ BUILDIN(mercenary_set_faith) {
/*------------------------------------------
* Book Reading
*------------------------------------------*/
-BUILDIN(readbook)
+static BUILDIN(readbook)
{
struct map_session_data *sd;
int book_id, page;
@@ -20714,7 +20912,7 @@ BUILDIN(readbook)
* Questlog script commands *
****************************/
-BUILDIN(questinfo)
+static BUILDIN(questinfo)
{
struct npc_data *nd = map->id2nd(st->oid);
int quest_id, icon;
@@ -20771,7 +20969,7 @@ BUILDIN(questinfo)
return true;
}
-BUILDIN(setquest)
+static BUILDIN(setquest)
{
unsigned short i;
int quest_id;
@@ -20801,7 +20999,7 @@ BUILDIN(setquest)
return true;
}
-BUILDIN(erasequest)
+static BUILDIN(erasequest)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -20824,7 +21022,7 @@ BUILDIN(erasequest)
return true;
}
-BUILDIN(completequest)
+static BUILDIN(completequest)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -20847,7 +21045,7 @@ BUILDIN(completequest)
return true;
}
-BUILDIN(changequest)
+static BUILDIN(changequest)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -20858,7 +21056,7 @@ BUILDIN(changequest)
return true;
}
-BUILDIN(questactive)
+static BUILDIN(questactive)
{
struct map_session_data *sd = script->rid2sd(st);
int qid, i;
@@ -20884,7 +21082,7 @@ BUILDIN(questactive)
return true;
}
-BUILDIN(questprogress)
+static BUILDIN(questprogress)
{
struct map_session_data *sd = script->rid2sd(st);
enum quest_check_type type = HAVEQUEST;
@@ -20912,7 +21110,7 @@ BUILDIN(questprogress)
return true;
}
-BUILDIN(showevent)
+static BUILDIN(showevent)
{
struct map_session_data *sd = script->rid2sd(st);
struct npc_data *nd = map->id2nd(st->oid);
@@ -20951,7 +21149,8 @@ BUILDIN(showevent)
/*==========================================
* BattleGround System
*------------------------------------------*/
-BUILDIN(waitingroom2bg) {
+static BUILDIN(waitingroom2bg)
+{
struct npc_data *nd;
struct chat_data *cd;
const char *map_name, *ev = "", *dev = "";
@@ -21005,7 +21204,8 @@ BUILDIN(waitingroom2bg) {
return true;
}
-BUILDIN(waitingroom2bg_single) {
+static BUILDIN(waitingroom2bg_single)
+{
const char* map_name;
struct npc_data *nd;
struct chat_data *cd;
@@ -21038,7 +21238,7 @@ BUILDIN(waitingroom2bg_single) {
return true;
}
-BUILDIN(bg_team_setxy)
+static BUILDIN(bg_team_setxy)
{
struct battleground_data *bgd;
int bg_id;
@@ -21052,7 +21252,7 @@ BUILDIN(bg_team_setxy)
return true;
}
-BUILDIN(bg_warp)
+static BUILDIN(bg_warp)
{
int x, y, map_index, bg_id;
const char* map_name;
@@ -21067,7 +21267,7 @@ BUILDIN(bg_warp)
return true;
}
-BUILDIN(bg_monster)
+static BUILDIN(bg_monster)
{
int class_ = 0, x = 0, y = 0, bg_id = 0;
const char *str, *mapname, *evt="";
@@ -21084,7 +21284,7 @@ BUILDIN(bg_monster)
return true;
}
-BUILDIN(bg_monster_set_team)
+static BUILDIN(bg_monster_set_team)
{
int id = script_getnum(st,2),
bg_id = script_getnum(st,3);
@@ -21103,7 +21303,7 @@ BUILDIN(bg_monster_set_team)
return true;
}
-BUILDIN(bg_leave)
+static BUILDIN(bg_leave)
{
struct map_session_data *sd = script->rid2sd(st);
if( sd == NULL || !sd->bg_id )
@@ -21113,14 +21313,14 @@ BUILDIN(bg_leave)
return true;
}
-BUILDIN(bg_destroy)
+static BUILDIN(bg_destroy)
{
int bg_id = script_getnum(st,2);
bg->team_delete(bg_id);
return true;
}
-BUILDIN(bg_getareausers)
+static BUILDIN(bg_getareausers)
{
const char *str;
int16 m, x0, y0, x1, y1;
@@ -21154,7 +21354,7 @@ BUILDIN(bg_getareausers)
return true;
}
-BUILDIN(bg_updatescore)
+static BUILDIN(bg_updatescore)
{
const char *str;
int16 m;
@@ -21170,7 +21370,7 @@ BUILDIN(bg_updatescore)
return true;
}
-BUILDIN(bg_get_data)
+static BUILDIN(bg_get_data)
{
struct battleground_data *bgd;
int bg_id = script_getnum(st,2),
@@ -21197,7 +21397,7 @@ BUILDIN(bg_get_data)
* Instancing Script Commands
*------------------------------------------*/
-BUILDIN(instance_create)
+static BUILDIN(instance_create)
{
const char *name;
int owner_id, res;
@@ -21256,7 +21456,7 @@ BUILDIN(instance_create)
return true;
}
-BUILDIN(instance_destroy)
+static BUILDIN(instance_destroy)
{
int instance_id = -1;
@@ -21275,7 +21475,7 @@ BUILDIN(instance_destroy)
return true;
}
-BUILDIN(instance_attachmap)
+static BUILDIN(instance_attachmap)
{
const char *map_name = NULL;
int16 m;
@@ -21299,7 +21499,8 @@ BUILDIN(instance_attachmap)
return true;
}
-BUILDIN(instance_detachmap) {
+static BUILDIN(instance_detachmap)
+{
const char *str;
int16 m;
int instance_id = -1;
@@ -21320,7 +21521,7 @@ BUILDIN(instance_detachmap) {
return true;
}
-BUILDIN(instance_attach)
+static BUILDIN(instance_attach)
{
int instance_id = script_getnum(st, 2);
@@ -21331,12 +21532,13 @@ BUILDIN(instance_attach)
return true;
}
-BUILDIN(instance_id) {
+static BUILDIN(instance_id)
+{
script_pushint(st, st->instance_id);
return true;
}
-BUILDIN(instance_set_timeout)
+static BUILDIN(instance_set_timeout)
{
int progress_timeout, idle_timeout;
int instance_id = -1;
@@ -21356,7 +21558,7 @@ BUILDIN(instance_set_timeout)
return true;
}
-BUILDIN(instance_init)
+static BUILDIN(instance_init)
{
int instance_id = script_getnum(st, 2);
@@ -21374,7 +21576,7 @@ BUILDIN(instance_init)
return true;
}
-BUILDIN(instance_announce)
+static BUILDIN(instance_announce)
{
int instance_id = script_getnum(st,2);
const char *mes = script_getstr(st,3);
@@ -21405,7 +21607,7 @@ BUILDIN(instance_announce)
return true;
}
-BUILDIN(instance_npcname)
+static BUILDIN(instance_npcname)
{
const char *str;
int instance_id = -1;
@@ -21430,7 +21632,7 @@ BUILDIN(instance_npcname)
return true;
}
-BUILDIN(has_instance)
+static BUILDIN(has_instance)
{
struct map_session_data *sd;
const char *str;
@@ -21523,7 +21725,7 @@ BUILDIN(has_instance)
return true;
}
-int buildin_instance_warpall_sub(struct block_list *bl, va_list ap)
+static int buildin_instance_warpall_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = NULL;
int map_index = va_arg(ap,int);
@@ -21539,7 +21741,7 @@ int buildin_instance_warpall_sub(struct block_list *bl, va_list ap)
return 0;
}
-BUILDIN(instance_warpall)
+static BUILDIN(instance_warpall)
{
int16 m;
int instance_id = -1;
@@ -21578,7 +21780,7 @@ BUILDIN(instance_warpall)
* Example: instance_check_party (getcharid(1){,amount}{,min}{,max});
* Example 2: instance_check_party (getcharid(1),1,1,99);
*------------------------------------------*/
-BUILDIN(instance_check_party)
+static BUILDIN(instance_check_party)
{
int amount, min, max, i, party_id, c = 0;
struct party_data *p = NULL;
@@ -21637,7 +21839,7 @@ BUILDIN(instance_check_party)
* Example: instance_check_guild (getcharid(2){,amount}{,min}{,max});
* Example 2: instance_check_guild (getcharid(2),1,1,99);
*------------------------------------------*/
-BUILDIN(instance_check_guild)
+static BUILDIN(instance_check_guild)
{
int amount, min, max, i, guild_id, c = 0;
struct guild *g = NULL;
@@ -21689,7 +21891,7 @@ BUILDIN(instance_check_guild)
/*==========================================
* Custom Fonts
*------------------------------------------*/
-BUILDIN(setfont)
+static BUILDIN(setfont)
{
struct map_session_data *sd = script->rid2sd(st);
int font = script_getnum(st,2);
@@ -21705,7 +21907,7 @@ BUILDIN(setfont)
return true;
}
-int buildin_mobuseskill_sub(struct block_list *bl, va_list ap)
+static int buildin_mobuseskill_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md = NULL;
struct block_list *tbl;
@@ -21752,7 +21954,7 @@ int buildin_mobuseskill_sub(struct block_list *bl, va_list ap)
/*==========================================
* areamobuseskill "Map Name",<x>,<y>,<range>,<Mob ID>,"Skill Name"/<Skill ID>,<Skill Lv>,<Cast Time>,<Cancelable>,<Emotion>,<Target Type>;
*------------------------------------------*/
-BUILDIN(areamobuseskill)
+static BUILDIN(areamobuseskill)
{
struct block_list center;
int16 m;
@@ -21782,7 +21984,7 @@ BUILDIN(areamobuseskill)
return true;
}
-BUILDIN(progressbar)
+static BUILDIN(progressbar)
{
struct map_session_data * sd = script->rid2sd(st);
const char * color;
@@ -21803,7 +22005,7 @@ BUILDIN(progressbar)
clif->progressbar(sd, (unsigned int)strtoul(color, (char **)NULL, 0), second);
return true;
}
-BUILDIN(progressbar_unit)
+static BUILDIN(progressbar_unit)
{
const char *color = script_getstr(st, 2);
uint32 second = script_getnum(st, 3);
@@ -21826,7 +22028,7 @@ BUILDIN(progressbar_unit)
}
return true;
}
-BUILDIN(pushpc)
+static BUILDIN(pushpc)
{
uint8 dir;
int cells, dx, dy;
@@ -21866,7 +22068,7 @@ BUILDIN(pushpc)
/// Invokes buying store preparation window
/// buyingstore <slots>;
-BUILDIN(buyingstore)
+static BUILDIN(buyingstore)
{
struct map_session_data* sd;
@@ -21880,7 +22082,7 @@ BUILDIN(buyingstore)
/// Invokes search store info window
/// searchstores <uses>,<effect>;
-BUILDIN(searchstores)
+static BUILDIN(searchstores)
{
unsigned short effect;
unsigned int uses;
@@ -21911,7 +22113,7 @@ BUILDIN(searchstores)
}
/// Displays a number as large digital clock.
/// showdigit <value>[,<type>];
-BUILDIN(showdigit)
+static BUILDIN(showdigit)
{
unsigned int type = 0;
int value;
@@ -21941,7 +22143,7 @@ BUILDIN(showdigit)
/**
* Rune Knight
**/
-BUILDIN(makerune)
+static BUILDIN(makerune)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
@@ -21954,7 +22156,7 @@ BUILDIN(makerune)
/**
* hascashmount() returns 1 if mounting a cash mount or 0 otherwise
**/
-BUILDIN(hascashmount)
+static BUILDIN(hascashmount)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -21977,7 +22179,7 @@ BUILDIN(hascashmount)
* - Will fail if the player is already riding a standard mount e.g. dragon, peco, wug, mado, etc.
* - Will unmount the player is he is already mounting a cash mount
**/
-BUILDIN(setcashmount)
+static BUILDIN(setcashmount)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -22005,7 +22207,7 @@ BUILDIN(setcashmount)
* Retrieves quantity of arguments provided to callfunc/callsub.
* getargcount() -> amount of arguments received in a function
**/
-BUILDIN(getargcount)
+static BUILDIN(getargcount)
{
struct script_retinfo* ri;
@@ -22024,7 +22226,7 @@ BUILDIN(getargcount)
/**
* getcharip(<account ID>/<character ID>/<character name>)
**/
-BUILDIN(getcharip)
+static BUILDIN(getcharip)
{
struct map_session_data* sd = NULL;
@@ -22062,7 +22264,7 @@ BUILDIN(getcharip)
/**
* is_function(<function name>) -> 1 if function exists, 0 otherwise
**/
-BUILDIN(is_function)
+static BUILDIN(is_function)
{
const char* str = script_getstr(st,2);
@@ -22077,7 +22279,7 @@ BUILDIN(is_function)
/**
* freeloop(<toggle>) -> toggles this script instance's looping-check ability
**/
-BUILDIN(freeloop)
+static BUILDIN(freeloop)
{
if( script_getnum(st,2) )
st->freeloop = 1;
@@ -22089,7 +22291,7 @@ BUILDIN(freeloop)
return true;
}
-BUILDIN(sit)
+static BUILDIN(sit)
{
struct map_session_data *sd = NULL;
@@ -22110,7 +22312,7 @@ BUILDIN(sit)
return true;
}
-BUILDIN(stand)
+static BUILDIN(stand)
{
struct map_session_data *sd = NULL;
@@ -22131,7 +22333,7 @@ BUILDIN(stand)
return true;
}
-BUILDIN(issit)
+static BUILDIN(issit)
{
struct map_session_data *sd = NULL;
@@ -22150,7 +22352,7 @@ BUILDIN(issit)
return true;
}
-BUILDIN(add_group_command)
+static BUILDIN(add_group_command)
{
AtCommandInfo *acmd_d;
struct atcmd_binding_data *bcmd_d;
@@ -22190,7 +22392,7 @@ BUILDIN(add_group_command)
/**
* @commands (script based)
**/
-BUILDIN(bindatcmd)
+static BUILDIN(bindatcmd)
{
const char* atcmd;
const char* eventName;
@@ -22243,7 +22445,7 @@ BUILDIN(bindatcmd)
return true;
}
-BUILDIN(unbindatcmd)
+static BUILDIN(unbindatcmd)
{
const char* atcmd;
int i = 0;
@@ -22287,7 +22489,7 @@ BUILDIN(unbindatcmd)
return true;
}
-BUILDIN(useatcmd)
+static BUILDIN(useatcmd)
{
struct map_session_data *sd, *dummy_sd = NULL;
int fd;
@@ -22325,7 +22527,7 @@ BUILDIN(useatcmd)
return true;
}
-BUILDIN(has_permission)
+static BUILDIN(has_permission)
{
struct map_session_data *sd;
enum e_pc_permission perm;
@@ -22366,7 +22568,7 @@ BUILDIN(has_permission)
return true;
}
-BUILDIN(can_use_command)
+static BUILDIN(can_use_command)
{
struct map_session_data *sd;
const char *cmd = script_getstr(st, 2);
@@ -22387,7 +22589,7 @@ BUILDIN(can_use_command)
}
/* getrandgroupitem <container_item_id>,<quantity> */
-BUILDIN(getrandgroupitem)
+static BUILDIN(getrandgroupitem)
{
struct item_data *data = NULL;
struct map_session_data *sd = NULL;
@@ -22441,14 +22643,14 @@ BUILDIN(getrandgroupitem)
/* cleanmap <map_name>;
* cleanarea <map_name>, <x0>, <y0>, <x1>, <y1>; */
-int script_cleanfloor_sub(struct block_list *bl, va_list ap)
+static int script_cleanfloor_sub(struct block_list *bl, va_list ap)
{
map->clearflooritem(bl);
return 0;
}
-BUILDIN(cleanmap)
+static BUILDIN(cleanmap)
{
const char *mapname = script_getstr(st, 2);
int16 m = map->mapname2mapid(mapname);
@@ -22477,7 +22679,7 @@ BUILDIN(cleanmap)
/* Cast a skill on the attached player.
* npcskill <skill id>, <skill lvl>, <stat point>, <NPC level>;
* npcskill "<skill name>", <skill lvl>, <stat point>, <NPC level>; */
-BUILDIN(npcskill)
+static BUILDIN(npcskill)
{
struct npc_data *nd;
uint16 skill_id = script_isstringtype(st, 2) ? skill->name2id(script_getstr(st, 2)) : script_getnum(st, 2);
@@ -22523,7 +22725,7 @@ BUILDIN(npcskill)
/* Turns a player into a monster and grants SC attribute effect. [malufett/Hercules]
* montransform <monster name/id>, <duration>, <sc type>, <val1>, <val2>, <val3>, <val4>; */
-BUILDIN(montransform)
+static BUILDIN(montransform)
{
int tick;
enum sc_type type;
@@ -22607,7 +22809,7 @@ BUILDIN(montransform)
*
* @return The queue, or NULL if it doesn't exist.
*/
-struct script_queue *script_hqueue_get(int idx)
+static struct script_queue *script_hqueue_get(int idx)
{
if (idx < 0 || idx >= VECTOR_LENGTH(script->hq) || !VECTOR_INDEX(script->hq, idx).valid)
return NULL;
@@ -22619,7 +22821,7 @@ struct script_queue *script_hqueue_get(int idx)
*
* @return The index of the created queue.
*/
-int script_hqueue_create(void)
+static int script_hqueue_create(void)
{
struct script_queue *queue = NULL;
int i;
@@ -22646,7 +22848,7 @@ int script_hqueue_create(void)
* .@queue_id = queue();
* @endcode
*/
-BUILDIN(queue)
+static BUILDIN(queue)
{
script_pushint(st,script->queue_create());
return true;
@@ -22661,7 +22863,7 @@ BUILDIN(queue)
* .@size = queuesize(<queue id>);
* \endcode
*/
-BUILDIN(queuesize)
+static BUILDIN(queuesize)
{
int idx = script_getnum(st, 2);
@@ -22683,7 +22885,7 @@ BUILDIN(queuesize)
* @retval false if the queue is invalid or the entry is already in the queue.
* @retval true in case of success.
*/
-bool script_hqueue_add(int idx, int var)
+static bool script_hqueue_add(int idx, int var)
{
int i;
struct map_session_data *sd = NULL;
@@ -22721,7 +22923,7 @@ bool script_hqueue_add(int idx, int var)
* .@size = queuesize(.@queue_id);
* @endcode
*/
-BUILDIN(queueadd)
+static BUILDIN(queueadd)
{
int idx = script_getnum(st, 2);
int var = script_getnum(st, 3);
@@ -22742,7 +22944,7 @@ BUILDIN(queueadd)
* @retval true if the entry was removed.
* @retval false if the entry wasn't in queue.
*/
-bool script_hqueue_remove(int idx, int var)
+static bool script_hqueue_remove(int idx, int var)
{
int i;
struct map_session_data *sd = NULL;
@@ -22779,7 +22981,7 @@ bool script_hqueue_remove(int idx, int var)
* queueremove(.@queue_id, .@value);
* @endcode
*/
-BUILDIN(queueremove)
+static BUILDIN(queueremove)
{
int idx = script_getnum(st, 2);
int var = script_getnum(st, 3);
@@ -22795,7 +22997,7 @@ BUILDIN(queueremove)
/**
* Script command queueopt: Modifies the options of a queue.
*
- * When the option value isn't provided, the option is removed.
+ * When the <event label> isn't provided, the option is removed.
*
* Returns 1 (true) on success, 0 (false) on failure.
*
@@ -22805,13 +23007,13 @@ BUILDIN(queueremove)
* - QUEUEOPT_MAPCHANGE
*
* When the QUEUEOPT_MAPCHANGE event is triggered, it sets a temporary
- * character variable \c @Queue_Destination_Map$ with the destination map name.
+ * character variable @Queue_Destination_Map$ with the destination map name.
*
* @code{.herc}
- * queueopt(.@queue_id, optionType, <optional val>);
+ * queueopt(.@queue_id, optionType{, <event label>});
* @endcode
*/
-BUILDIN(queueopt)
+static BUILDIN(queueopt)
{
int idx = script_getnum(st, 2);
int var = script_getnum(st, 3);
@@ -22861,7 +23063,7 @@ BUILDIN(queueopt)
* @retval true if the queue was correctly deleted.
* @retval false if the queue didn't exist.
*/
-bool script_hqueue_del(int idx)
+static bool script_hqueue_del(int idx)
{
if (!script->queue_clear(idx))
return false;
@@ -22880,7 +23082,7 @@ bool script_hqueue_del(int idx)
* queuedel(.@queue_id);
* @endcode
*/
-BUILDIN(queuedel)
+static BUILDIN(queuedel)
{
int idx = script_getnum(st, 2);
@@ -22900,7 +23102,7 @@ BUILDIN(queuedel)
* @retval true if the queue was correctly cleared.
* @retval false if the queue didn't exist.
*/
-bool script_hqueue_clear(int idx)
+static bool script_hqueue_clear(int idx)
{
struct script_queue *queue = NULL;
@@ -22937,7 +23139,7 @@ bool script_hqueue_clear(int idx)
* .@id = queueiterator(.@queue_id);
* @endcode
*/
-BUILDIN(queueiterator)
+static BUILDIN(queueiterator)
{
int qid = script_getnum(st, 2);
struct script_queue *queue = NULL;
@@ -22980,7 +23182,7 @@ BUILDIN(queueiterator)
* }
* @endcode
*/
-BUILDIN(qiget)
+static BUILDIN(qiget)
{
int idx = script_getnum(st, 2);
struct script_queue_iterator *it = NULL;
@@ -23014,7 +23216,7 @@ BUILDIN(qiget)
* }
* @endcode
*/
-BUILDIN(qicheck)
+static BUILDIN(qicheck)
{
int idx = script_getnum(st, 2);
struct script_queue_iterator *it = NULL;
@@ -23045,7 +23247,7 @@ BUILDIN(qicheck)
* qiclear(.@iter);
* @endcode
*/
-BUILDIN(qiclear)
+static BUILDIN(qiclear)
{
int idx = script_getnum(st, 2);
struct script_queue_iterator *it = NULL;
@@ -23070,7 +23272,8 @@ BUILDIN(qiclear)
* packageitem({<optional container_item_id>})
* when no item id is provided it tries to assume it comes from the current item id being processed (if any)
**/
-BUILDIN(packageitem) {
+static BUILDIN(packageitem)
+{
struct item_data *data = NULL;
struct map_session_data *sd = NULL;
int nameid;
@@ -23104,7 +23307,8 @@ BUILDIN(packageitem) {
/* New Battlegrounds Stuff */
/* bg_team_create(map_name,respawn_x,respawn_y) */
/* returns created team id or -1 when fails */
-BUILDIN(bg_create_team) {
+static BUILDIN(bg_create_team)
+{
const char *map_name, *ev = "", *dev = "";//ev and dev will be dropped.
int x, y, map_index = 0, bg_id;
@@ -23131,7 +23335,8 @@ BUILDIN(bg_create_team) {
/* bg_join_team(team_id{,optional account id}) */
/* when account id is not present it tries to autodetect from the attached player (if any) */
/* returns 0 when successful, 1 otherwise */
-BUILDIN(bg_join_team) {
+static BUILDIN(bg_join_team)
+{
struct map_session_data *sd;
int team_id = script_getnum(st, 2);
@@ -23157,7 +23362,7 @@ BUILDIN(bg_join_team) {
* 3 - Party Bound
* 4 - Character Bound
*------------------------------------------*/
-BUILDIN(countbound)
+static BUILDIN(countbound)
{
int i, type, j=0, k=0;
struct map_session_data *sd = script->rid2sd(st);
@@ -23192,7 +23397,7 @@ BUILDIN(countbound)
* 3 - Party Bound
* 4 - Character Bound
*------------------------------------------*/
-BUILDIN(checkbound)
+static BUILDIN(checkbound)
{
int i, nameid = script_getnum(st,2);
int bound_type = 0;
@@ -23233,7 +23438,7 @@ BUILDIN(checkbound)
/* bg_match_over( arena_name {, optional canceled } ) */
/* returns 0 when successful, 1 otherwise */
-BUILDIN(bg_match_over)
+static BUILDIN(bg_match_over)
{
bool canceled = script_hasdata(st,3) ? true : false;
struct bg_arena *arena = bg->name2arena(script_getstr(st, 2));
@@ -23247,7 +23452,7 @@ BUILDIN(bg_match_over)
return true;
}
-BUILDIN(instance_mapname)
+static BUILDIN(instance_mapname)
{
const char *map_name;
int m;
@@ -23272,7 +23477,7 @@ BUILDIN(instance_mapname)
/* modify an instances' reload-spawn point */
/* instance_set_respawn <map_name>,<x>,<y>{,<instance_id>} */
/* returns 1 when successful, 0 otherwise. */
-BUILDIN(instance_set_respawn)
+static BUILDIN(instance_set_respawn)
{
const char *map_name;
short instance_id = -1;
@@ -23320,7 +23525,7 @@ BUILDIN(instance_set_respawn)
*
* @return 1 on success, 0 otherwise.
**/
-BUILDIN(openshop)
+static BUILDIN(openshop)
{
struct npc_data *nd;
struct map_session_data *sd;
@@ -23357,7 +23562,7 @@ BUILDIN(openshop)
* adds <Item_ID> (or modifies if present) to shop
* if price not provided (or -1) uses the item's value_sell
**/
-BUILDIN(sellitem)
+static BUILDIN(sellitem)
{
struct npc_data *nd;
struct item_data *it;
@@ -23433,7 +23638,7 @@ BUILDIN(sellitem)
*
* @return 1 on success, 0 otherwise
**/
-BUILDIN(stopselling)
+static BUILDIN(stopselling)
{
struct npc_data *nd;
int i, id = script_getnum(st,2);
@@ -23484,7 +23689,7 @@ BUILDIN(stopselling)
* updates currently-attached player shop currency
**/
/* setcurrency(<Val1>,{<Val2>}) */
-BUILDIN(setcurrency)
+static BUILDIN(setcurrency)
{
int val1 = script_getnum(st,2),
val2 = script_hasdata(st, 3) ? script_getnum(st,3) : 0;
@@ -23508,7 +23713,7 @@ BUILDIN(setcurrency)
* check enum npc_shop_types for list
* cleans shop list on use
**/
-BUILDIN(tradertype)
+static BUILDIN(tradertype)
{
int type = script_getnum(st, 2);
struct npc_data *nd;
@@ -23551,7 +23756,7 @@ BUILDIN(tradertype)
*
* signs the transaction can proceed
**/
-BUILDIN(purchaseok)
+static BUILDIN(purchaseok)
{
struct npc_data *nd;
@@ -23570,7 +23775,7 @@ BUILDIN(purchaseok)
*
* @return number of available items in the script's attached shop
**/
-BUILDIN(shopcount)
+static BUILDIN(shopcount)
{
struct npc_data *nd;
int id = script_getnum(st, 2);
@@ -23608,7 +23813,7 @@ BUILDIN(shopcount)
* Sends a message through the specified chat channel.
*
*/
-BUILDIN(channelmes)
+static BUILDIN(channelmes)
{
struct map_session_data *sd = map->id2sd(st->rid);
const char *channelname = script_getstr(st, 2);
@@ -23625,7 +23830,7 @@ BUILDIN(channelmes)
return true;
}
-BUILDIN(addchannelhandler)
+static BUILDIN(addchannelhandler)
{
int i;
struct map_session_data *sd = map->id2sd(st->rid);
@@ -23651,7 +23856,7 @@ BUILDIN(addchannelhandler)
return true;
}
-BUILDIN(removechannelhandler)
+static BUILDIN(removechannelhandler)
{
int i;
struct map_session_data *sd = map->id2sd(st->rid);
@@ -23677,10 +23882,10 @@ BUILDIN(removechannelhandler)
}
/** By Cydh
-Display script message
-showscript "<message>"{,<GID>};
-*/
-BUILDIN(showscript)
+ * Display script message
+ * showscript "<message>"{, <GID>};
+ */
+static BUILDIN(showscript)
{
struct block_list *bl = NULL;
const char *msg = script_getstr(st, 2);
@@ -23707,7 +23912,7 @@ BUILDIN(showscript)
return true;
}
-BUILDIN(mergeitem)
+static BUILDIN(mergeitem)
{
struct map_session_data *sd = script->rid2sd(st);
@@ -23721,7 +23926,7 @@ BUILDIN(mergeitem)
// getcalendartime(<day of month>, <day of week>{, <hour>{, <minute>}});
// Returns the UNIX Timestamp of next ocurrency of given time
-BUILDIN(getcalendartime)
+static BUILDIN(getcalendartime)
{
struct tm info = { 0 };
int day_of_month = script_hasdata(st, 4) ? script_getnum(st, 4) : -1;
@@ -23814,7 +24019,7 @@ BUILDIN(getcalendartime)
}
/** place holder for the translation macro **/
-BUILDIN(_)
+static BUILDIN(_)
{
return true;
}
@@ -23833,7 +24038,7 @@ enum dressroom_mode {
/**
* dressroom({<enum dressroom_mode>});
*/
-BUILDIN(dressroom)
+static BUILDIN(dressroom)
{
#if PACKETVER >= 20150513
struct map_session_data *sd = script->rid2sd(st);
@@ -23869,7 +24074,7 @@ BUILDIN(dressroom)
#endif
}
-BUILDIN(pcre_match)
+static BUILDIN(pcre_match)
{
const char *input = script_getstr(st, 2);
const char *regex = script_getstr(st, 3);
@@ -23881,7 +24086,7 @@ BUILDIN(pcre_match)
/**
* navigateto("<map>"{,<x>,<y>,<flag>,<hide_window>,<monster_id>,<char_id>});
*/
-BUILDIN(navigateto)
+static BUILDIN(navigateto)
{
#if PACKETVER >= 20111010
struct map_session_data* sd;
@@ -23920,7 +24125,7 @@ BUILDIN(navigateto)
#endif
}
-bool rodex_sendmail_sub(struct script_state* st, struct rodex_message *msg)
+static bool rodex_sendmail_sub(struct script_state *st, struct rodex_message *msg)
{
const char *sender_name, *title, *body;
@@ -23961,7 +24166,7 @@ bool rodex_sendmail_sub(struct script_state* st, struct rodex_message *msg)
return true;
}
-BUILDIN(rodex_sendmail)
+static BUILDIN(rodex_sendmail)
{
struct rodex_message msg = { 0 };
int item_count = 0, i = 0, param = 7;
@@ -24017,7 +24222,7 @@ BUILDIN(rodex_sendmail)
return true;
}
-BUILDIN(rodex_sendmail2)
+static BUILDIN(rodex_sendmail2)
{
struct rodex_message msg = { 0 };
int item_count = 0, i = 0, param = 7;
@@ -24098,7 +24303,7 @@ BUILDIN(rodex_sendmail2)
/**
* Clan System: Add a player to a clan
*/
-BUILDIN(clan_join)
+static BUILDIN(clan_join)
{
struct map_session_data *sd = NULL;
int clan_id = script_getnum(st, 2);
@@ -24124,7 +24329,7 @@ BUILDIN(clan_join)
/**
* Clan System: Remove a player from clan
*/
-BUILDIN(clan_leave)
+static BUILDIN(clan_leave)
{
struct map_session_data *sd = NULL;
@@ -24149,7 +24354,7 @@ BUILDIN(clan_leave)
/**
* Clan System: Show clan emblem next to npc name
*/
-BUILDIN(clan_master)
+static BUILDIN(clan_master)
{
struct npc_data *nd = map->id2nd(st->oid);
int clan_id = script_getnum(st, 2);
@@ -24174,7 +24379,7 @@ BUILDIN(clan_master)
return true;
}
-BUILDIN(airship_respond)
+static BUILDIN(airship_respond)
{
struct map_session_data *sd = map->id2sd(st->rid);
int32 flag = script_getnum(st, 2);
@@ -24194,7 +24399,7 @@ BUILDIN(airship_respond)
/**
* hateffect(EffectID, Enable_State)
*/
-BUILDIN(hateffect)
+static BUILDIN(hateffect)
{
#if PACKETVER >= 20150422
struct map_session_data *sd = script_rid2sd(st);
@@ -24227,7 +24432,7 @@ BUILDIN(hateffect)
return true;
}
-BUILDIN(openstylist)
+static BUILDIN(openstylist)
{
struct map_session_data *sd = script_rid2sd(st);
@@ -24248,7 +24453,7 @@ BUILDIN(openstylist)
* (i.e. a plugin overriding a built-in function)
* @return Whether the function was successfully added.
*/
-bool script_add_builtin(const struct script_function *buildin, bool override)
+static bool script_add_builtin(const struct script_function *buildin, bool override)
{
int n = 0, offset = 0;
size_t slen;
@@ -24330,7 +24535,7 @@ bool script_add_builtin(const struct script_function *buildin, bool override)
return true;
}
-bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st), bool isDeprecated)
+static bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st), bool isDeprecated)
{
struct script_function buildin;
buildin.name = name;
@@ -24340,7 +24545,7 @@ bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st)
return script->add_builtin(&buildin, true);
}
-void script_run_use_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1)));
+static void script_run_use_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1)));
/**
* Run use script for item.
@@ -24349,7 +24554,7 @@ void script_run_use_script(struct map_session_data *sd, struct item_data *data,
* @param n item index in inventory. Must be correct and checked before.
* @param oid npc id. Can be also 0 or fake npc id.
*/
-void script_run_use_script(struct map_session_data *sd, struct item_data *data, int oid)
+static void script_run_use_script(struct map_session_data *sd, struct item_data *data, int oid)
{
nullpo_retv(data);
script->current_item_id = data->nameid;
@@ -24357,7 +24562,7 @@ void script_run_use_script(struct map_session_data *sd, struct item_data *data,
script->current_item_id = 0;
}
-void script_run_item_equip_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1, 2)));
+static void script_run_item_equip_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1, 2)));
/**
* Run item equip script for item.
@@ -24366,14 +24571,14 @@ void script_run_item_equip_script(struct map_session_data *sd, struct item_data
* @param data equipped item data. Must be correct and checked before.
* @param oid npc id. Can be also 0 or fake npc id.
*/
-void script_run_item_equip_script(struct map_session_data *sd, struct item_data *data, int oid)
+static void script_run_item_equip_script(struct map_session_data *sd, struct item_data *data, int oid)
{
script->current_item_id = data->nameid;
script->run(data->equip_script, 0, sd->bl.id, oid);
script->current_item_id = 0;
}
-void script_run_item_unequip_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1, 2)));
+static void script_run_item_unequip_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1, 2)));
/**
* Run item unequip script for item.
@@ -24382,7 +24587,7 @@ void script_run_item_unequip_script(struct map_session_data *sd, struct item_dat
* @param data unequipped item data. Must be correct and checked before.
* @param oid npc id. Can be also 0 or fake npc id.
*/
-void script_run_item_unequip_script(struct map_session_data *sd, struct item_data *data, int oid)
+static void script_run_item_unequip_script(struct map_session_data *sd, struct item_data *data, int oid)
{
script->current_item_id = data->nameid;
script->run(data->unequip_script, 0, sd->bl.id, oid);
@@ -24393,7 +24598,8 @@ void script_run_item_unequip_script(struct map_session_data *sd, struct item_dat
#define BUILDIN_DEF2(x,x2,args) { buildin_ ## x , x2 , args, false }
#define BUILDIN_DEF_DEPRECATED(x,args) { buildin_ ## x , #x , args, true }
#define BUILDIN_DEF2_DEPRECATED(x,x2,args) { buildin_ ## x , x2 , args, true }
-void script_parse_builtin(void) {
+static void script_parse_builtin(void)
+{
struct script_function BUILDIN[] = {
/* Commands for internal use by the script engine */
BUILDIN_DEF(__jump_zero,"il"),
@@ -24642,7 +24848,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF2(atcommand,"charcommand","s"), // [MouseJstr]
BUILDIN_DEF(movenpc,"sii?"), // [MouseJstr]
BUILDIN_DEF(message,"vs"), // [MouseJstr]
- BUILDIN_DEF(npctalk,"s?"), // [Valaris]
+ BUILDIN_DEF(npctalk,"s??"), // [Valaris][Murilo BiO]
BUILDIN_DEF(mobcount,"ss"),
BUILDIN_DEF(getlook,"i"),
BUILDIN_DEF(getsavepoint,"i"),
@@ -24771,7 +24977,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(unitwarp,"isii"),
BUILDIN_DEF(unitattack,"iv?"),
BUILDIN_DEF(unitstop,"i"),
- BUILDIN_DEF(unittalk,"is"),
+ BUILDIN_DEF(unittalk,"is???"),
BUILDIN_DEF(unitemote,"ii"),
BUILDIN_DEF(unitskilluseid,"ivi?"), // originally by Qamera [Celest]
BUILDIN_DEF(unitskillusepos,"iviii"), // [Celest]
@@ -24974,7 +25180,7 @@ void script_parse_builtin(void) {
#undef BUILDIN_DEF
#undef BUILDIN_DEF2
-void script_label_add(int key, int pos)
+static void script_label_add(int key, int pos)
{
int idx = script->label_count;
@@ -24991,7 +25197,7 @@ void script_label_add(int key, int pos)
/**
* Sets source-end constants for scripts to play with
**/
-void script_hardcoded_constants(void)
+static void script_hardcoded_constants(void)
{
script->constdb_comment("Boolean");
script->set_constant("true", 1, false, false);
@@ -25395,7 +25601,7 @@ void script_hardcoded_constants(void)
/**
* a mapindex_name2id wrapper meant to help with invalid name handling
**/
-unsigned short script_mapindexname2id (struct script_state *st, const char* name)
+static unsigned short script_mapindexname2id(struct script_state *st, const char *name)
{
unsigned short index;
diff --git a/src/map/script.h b/src/map/script.h
index a0cfb7692..4ad9531b7 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -708,7 +708,7 @@ struct script_interface {
int string_list_size;
int string_list_pos;
/* */
- unsigned short current_item_id;
+ int current_item_id;
/* */
struct script_label_entry *labels;
int label_count;
diff --git a/src/map/searchstore.c b/src/map/searchstore.c
index c80f2f575..0c6fa3555 100644
--- a/src/map/searchstore.c
+++ b/src/map/searchstore.c
@@ -31,7 +31,7 @@
#include "common/showmsg.h" // ShowError, ShowWarning
#include "common/strlib.h" // safestrncpy
-struct searchstore_interface searchstore_s;
+static struct searchstore_interface searchstore_s;
struct searchstore_interface *searchstore;
/// retrieves search function by type
@@ -55,7 +55,7 @@ static inline searchstore_searchall_t searchstore_getsearchallfunc(unsigned char
}
/// checks if the player has a store by type
-static inline bool searchstore_hasstore(struct map_session_data* sd, unsigned char type)
+static inline bool searchstore_hasstore(struct map_session_data *sd, unsigned char type)
{
nullpo_retr(false, sd);
switch( type ) {
@@ -66,7 +66,7 @@ static inline bool searchstore_hasstore(struct map_session_data* sd, unsigned ch
}
/// returns player's store id by type
-static inline unsigned int searchstore_getstoreid(struct map_session_data* sd, unsigned char type)
+static inline unsigned int searchstore_getstoreid(struct map_session_data *sd, unsigned char type)
{
nullpo_retr(false, sd);
switch( type ) {
@@ -76,7 +76,7 @@ static inline unsigned int searchstore_getstoreid(struct map_session_data* sd, u
return 0;
}
-bool searchstore_open(struct map_session_data* sd, unsigned int uses, unsigned short effect)
+static bool searchstore_open(struct map_session_data *sd, unsigned int uses, unsigned short effect)
{
nullpo_retr(false, sd);
if( !battle_config.feature_search_stores || sd->searchstore.open ) {
@@ -96,7 +96,11 @@ bool searchstore_open(struct map_session_data* sd, unsigned int uses, unsigned s
return true;
}
-void searchstore_query(struct map_session_data* sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short* itemlist, unsigned int item_count, const unsigned short* cardlist, unsigned int card_count)
+static void searchstore_query(struct map_session_data *sd,
+ unsigned char type,
+ unsigned int min_price, unsigned int max_price,
+ const uint32 *itemlist, unsigned int item_count,
+ const uint32 *cardlist, unsigned int card_count)
{
unsigned int i;
struct map_session_data* pl_sd;
@@ -137,14 +141,14 @@ void searchstore_query(struct map_session_data* sd, unsigned char type, unsigned
// validate lists
for( i = 0; i < item_count; i++ ) {
if( !itemdb->exists(itemlist[i]) ) {
- ShowWarning("searchstore_query: Client resolved item %hu is not known.\n", itemlist[i]);
+ ShowWarning("searchstore_query: Client resolved item %u is not known.\n", itemlist[i]);
clif->search_store_info_failed(sd, SSI_FAILED_NOTHING_SEARCH_ITEM);
return;
}
}
for( i = 0; i < card_count; i++ ) {
if( !itemdb->exists(cardlist[i]) ) {
- ShowWarning("searchstore_query: Client resolved card %hu is not known.\n", cardlist[i]);
+ ShowWarning("searchstore_query: Client resolved card %u is not known.\n", cardlist[i]);
clif->search_store_info_failed(sd, SSI_FAILED_NOTHING_SEARCH_ITEM);
return;
}
@@ -209,7 +213,7 @@ void searchstore_query(struct map_session_data* sd, unsigned char type, unsigned
}
/// checks whether or not more results are available for the client
-bool searchstore_querynext(struct map_session_data* sd)
+static bool searchstore_querynext(struct map_session_data *sd)
{
nullpo_retr(false, sd);
if( sd->searchstore.count && ( sd->searchstore.count-1 )/SEARCHSTORE_RESULTS_PER_PAGE < sd->searchstore.pages ) {
@@ -219,7 +223,7 @@ bool searchstore_querynext(struct map_session_data* sd)
return false;
}
-void searchstore_next(struct map_session_data* sd)
+static void searchstore_next(struct map_session_data *sd)
{
nullpo_retv(sd);
if( !battle_config.feature_search_stores || !sd->searchstore.open || sd->searchstore.count <= sd->searchstore.pages*SEARCHSTORE_RESULTS_PER_PAGE )
@@ -234,7 +238,7 @@ void searchstore_next(struct map_session_data* sd)
sd->searchstore.pages++;
}
-void searchstore_clear(struct map_session_data* sd)
+static void searchstore_clear(struct map_session_data *sd)
{
nullpo_retv(sd);
searchstore->clearremote(sd);
@@ -248,7 +252,7 @@ void searchstore_clear(struct map_session_data* sd)
sd->searchstore.pages = 0;
}
-void searchstore_close(struct map_session_data* sd)
+static void searchstore_close(struct map_session_data *sd)
{
nullpo_retv(sd);
if( sd->searchstore.open ) {
@@ -259,7 +263,7 @@ void searchstore_close(struct map_session_data* sd)
}
}
-void searchstore_click(struct map_session_data* sd, int account_id, int store_id, unsigned short nameid)
+static void searchstore_click(struct map_session_data *sd, int account_id, int store_id, int nameid)
{
unsigned int i;
struct map_session_data* pl_sd;
@@ -274,7 +278,7 @@ void searchstore_click(struct map_session_data* sd, int account_id, int store_id
ARR_FIND( 0, sd->searchstore.count, i, sd->searchstore.items[i].store_id == store_id && sd->searchstore.items[i].account_id == account_id && sd->searchstore.items[i].nameid == nameid );
if( i == sd->searchstore.count ) {// no such result, crafted
- ShowWarning("searchstore_click: Received request with item %hu of account %d, which is not part of current result set (account_id=%d, char_id=%d).\n", nameid, account_id, sd->bl.id, sd->status.char_id);
+ ShowWarning("searchstore_click: Received request with item %d of account %d, which is not part of current result set (account_id=%d, char_id=%d).\n", nameid, account_id, sd->bl.id, sd->status.char_id);
clif->search_store_info_failed(sd, SSI_FAILED_SSILIST_CLICK_TO_OPEN_STORE);
return;
}
@@ -327,20 +331,21 @@ void searchstore_click(struct map_session_data* sd, int account_id, int store_id
}
/// checks whether or not sd has opened account_id's shop remotely
-bool searchstore_queryremote(struct map_session_data* sd, int account_id)
+static bool searchstore_queryremote(struct map_session_data *sd, int account_id)
{
nullpo_retr(false, sd);
return (bool)( sd->searchstore.open && sd->searchstore.count && sd->searchstore.remote_id == account_id );
}
/// removes range-check bypassing for remotely opened stores
-void searchstore_clearremote(struct map_session_data* sd) {
+static void searchstore_clearremote(struct map_session_data *sd)
+{
nullpo_retv(sd);
sd->searchstore.remote_id = 0;
}
/// receives results from a store-specific callback
-bool searchstore_result(struct map_session_data* sd, unsigned int store_id, int account_id, const char* store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short* card, unsigned char refine, const struct item_option *option)
+static bool searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine, const struct item_option *option)
{
struct s_search_store_info_item* ssitem;
@@ -365,7 +370,7 @@ bool searchstore_result(struct map_session_data* sd, unsigned int store_id, int
return true;
}
-void searchstore_defaults (void)
+void searchstore_defaults(void)
{
searchstore = &searchstore_s;
diff --git a/src/map/searchstore.h b/src/map/searchstore.h
index 634486258..e5ccfd300 100644
--- a/src/map/searchstore.h
+++ b/src/map/searchstore.h
@@ -60,8 +60,8 @@ enum e_searchstore_failure {
/// information about the search being performed
struct s_search_store_search {
struct map_session_data* search_sd; // sd of the searching player
- const unsigned short* itemlist;
- const unsigned short* cardlist;
+ const uint32* itemlist;
+ const uint32* cardlist;
unsigned int item_count;
unsigned int card_count;
unsigned int min_price;
@@ -72,10 +72,10 @@ struct s_search_store_info_item {
unsigned int store_id;
int account_id;
char store_name[MESSAGE_SIZE];
- unsigned short nameid;
+ int nameid;
unsigned short amount;
unsigned int price;
- short card[MAX_SLOTS];
+ int card[MAX_SLOTS];
unsigned char refine;
struct item_option option[MAX_ITEM_OPTIONS];
};
@@ -93,7 +93,7 @@ struct s_search_store_info {
};
/// type for shop search function
-typedef bool (*searchstore_search_t)(struct map_session_data* sd, unsigned short nameid);
+typedef bool (*searchstore_search_t)(struct map_session_data* sd, int nameid);
typedef bool (*searchstore_searchall_t)(struct map_session_data* sd, const struct s_search_store_search* s);
/**
@@ -101,15 +101,15 @@ typedef bool (*searchstore_searchall_t)(struct map_session_data* sd, const struc
**/
struct searchstore_interface {
bool (*open) (struct map_session_data* sd, unsigned int uses, unsigned short effect);
- void (*query) (struct map_session_data* sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short* itemlist, unsigned int item_count, const unsigned short* cardlist, unsigned int card_count);
+ void (*query) (struct map_session_data* sd, unsigned char type, unsigned int min_price, unsigned int max_price, const uint32* itemlist, unsigned int item_count, const uint32* cardlist, unsigned int card_count);
bool (*querynext) (struct map_session_data* sd);
void (*next) (struct map_session_data* sd);
void (*clear) (struct map_session_data* sd);
void (*close) (struct map_session_data* sd);
- void (*click) (struct map_session_data* sd, int account_id, int store_id, unsigned short nameid);
+ void (*click) (struct map_session_data* sd, int account_id, int store_id, int nameid);
bool (*queryremote) (struct map_session_data* sd, int account_id);
void (*clearremote) (struct map_session_data* sd);
- bool (*result) (struct map_session_data* sd, unsigned int store_id, int account_id, const char* store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short* card, unsigned char refine, const struct item_option *option);
+ bool (*result) (struct map_session_data* sd, unsigned int store_id, int account_id, const char* store_name, int nameid, unsigned short amount, unsigned int price, const int* card, unsigned char refine, const struct item_option *option);
};
#ifdef HERCULES_CORE
diff --git a/src/map/skill.c b/src/map/skill.c
index 34c36d7f3..ed69b8c0f 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -80,13 +80,13 @@
#error GD_SKILLRANGEMAX is greater than 999
#endif
-struct skill_interface skill_s;
+static struct skill_interface skill_s;
struct s_skill_dbs skilldbs;
struct skill_interface *skill;
//Since only mob-casted splash skills can hit ice-walls
-int skill_splash_target(struct block_list* bl)
+static int skill_splash_target(struct block_list *bl)
{
nullpo_retr(BL_CHAR, bl);
#ifndef RENEWAL
@@ -97,7 +97,7 @@ int skill_splash_target(struct block_list* bl)
}
/// Returns the id of the skill, or 0 if not found.
-int skill_name2id(const char* name)
+static int skill_name2id(const char *name)
{
if( name == NULL )
return 0;
@@ -107,7 +107,7 @@ int skill_name2id(const char* name)
/// Maps skill ids to skill db offsets.
/// Returns the skill's array index, or 0 (Unknown Skill).
-int skill_get_index(int skill_id)
+static int skill_get_index(int skill_id)
{
// avoid ranges reserved for mapping guild/homun/mercenary skills
if( (skill_id >= GD_SKILLRANGEMIN && skill_id <= GD_SKILLRANGEMAX)
@@ -146,12 +146,12 @@ int skill_get_index(int skill_id)
return skill_id;
}
-const char *skill_get_name(int skill_id)
+static const char *skill_get_name(int skill_id)
{
return skill->dbs->db[skill->get_index(skill_id)].name;
}
-const char *skill_get_desc(int skill_id)
+static const char *skill_get_desc(int skill_id)
{
return skill->dbs->db[skill->get_index(skill_id)].desc;
}
@@ -161,7 +161,7 @@ const char *skill_get_desc(int skill_id)
// Skill DB
-int skill_get_hit(int skill_id)
+static int skill_get_hit(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -171,7 +171,7 @@ int skill_get_hit(int skill_id)
return skill->dbs->db[idx].hit;
}
-int skill_get_inf(int skill_id)
+static int skill_get_inf(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -181,7 +181,7 @@ int skill_get_inf(int skill_id)
return skill->dbs->db[idx].inf;
}
-int skill_get_ele(int skill_id, int skill_lv)
+static int skill_get_ele(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -192,7 +192,7 @@ int skill_get_ele(int skill_id, int skill_lv)
return skill->dbs->db[idx].element[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_nk(int skill_id)
+static int skill_get_nk(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -202,7 +202,7 @@ int skill_get_nk(int skill_id)
return skill->dbs->db[idx].nk;
}
-int skill_get_max(int skill_id)
+static int skill_get_max(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -212,7 +212,7 @@ int skill_get_max(int skill_id)
return skill->dbs->db[idx].max;
}
-int skill_get_range(int skill_id, int skill_lv)
+static int skill_get_range(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -227,7 +227,7 @@ int skill_get_range(int skill_id, int skill_lv)
return skill->dbs->db[idx].range[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_splash(int skill_id, int skill_lv)
+static int skill_get_splash(int skill_id, int skill_lv)
{
int idx, val;
if (skill_id == 0)
@@ -245,7 +245,7 @@ int skill_get_splash(int skill_id, int skill_lv)
return val;
}
-int skill_get_hp(int skill_id, int skill_lv)
+static int skill_get_hp(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -260,7 +260,7 @@ int skill_get_hp(int skill_id, int skill_lv)
return skill->dbs->db[idx].hp[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_sp(int skill_id, int skill_lv)
+static int skill_get_sp(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -275,7 +275,7 @@ int skill_get_sp(int skill_id, int skill_lv)
return skill->dbs->db[idx].sp[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_hp_rate(int skill_id, int skill_lv)
+static int skill_get_hp_rate(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -290,7 +290,7 @@ int skill_get_hp_rate(int skill_id, int skill_lv)
return skill->dbs->db[idx].hp_rate[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_sp_rate(int skill_id, int skill_lv)
+static int skill_get_sp_rate(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -305,7 +305,7 @@ int skill_get_sp_rate(int skill_id, int skill_lv)
return skill->dbs->db[idx].sp_rate[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_state(int skill_id)
+static int skill_get_state(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -315,7 +315,7 @@ int skill_get_state(int skill_id)
return skill->dbs->db[idx].state;
}
-int skill_get_spiritball(int skill_id, int skill_lv)
+static int skill_get_spiritball(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -330,7 +330,7 @@ int skill_get_spiritball(int skill_id, int skill_lv)
return skill->dbs->db[idx].spiritball[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_itemid(int skill_id, int item_idx)
+static int skill_get_itemid(int skill_id, int item_idx)
{
int idx;
if (skill_id == 0)
@@ -341,7 +341,7 @@ int skill_get_itemid(int skill_id, int item_idx)
return skill->dbs->db[idx].itemid[item_idx];
}
-int skill_get_itemqty(int skill_id, int item_idx)
+static int skill_get_itemqty(int skill_id, int item_idx)
{
int idx;
if (skill_id == 0)
@@ -352,7 +352,7 @@ int skill_get_itemqty(int skill_id, int item_idx)
return skill->dbs->db[idx].amount[item_idx];
}
-int skill_get_zeny(int skill_id, int skill_lv)
+static int skill_get_zeny(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -367,7 +367,7 @@ int skill_get_zeny(int skill_id, int skill_lv)
return skill->dbs->db[idx].zeny[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_num(int skill_id, int skill_lv)
+static int skill_get_num(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -382,7 +382,7 @@ int skill_get_num(int skill_id, int skill_lv)
return skill->dbs->db[idx].num[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_cast(int skill_id, int skill_lv)
+static int skill_get_cast(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -397,7 +397,7 @@ int skill_get_cast(int skill_id, int skill_lv)
return skill->dbs->db[idx].cast[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_delay(int skill_id, int skill_lv)
+static int skill_get_delay(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -412,7 +412,7 @@ int skill_get_delay(int skill_id, int skill_lv)
return skill->dbs->db[idx].delay[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_walkdelay(int skill_id, int skill_lv)
+static int skill_get_walkdelay(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -427,7 +427,7 @@ int skill_get_walkdelay(int skill_id, int skill_lv)
return skill->dbs->db[idx].walkdelay[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_time(int skill_id, int skill_lv)
+static int skill_get_time(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -442,7 +442,7 @@ int skill_get_time(int skill_id, int skill_lv)
return skill->dbs->db[idx].upkeep_time[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_time2(int skill_id, int skill_lv)
+static int skill_get_time2(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -457,7 +457,7 @@ int skill_get_time2(int skill_id, int skill_lv)
return skill->dbs->db[idx].upkeep_time2[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_castdef(int skill_id)
+static int skill_get_castdef(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -467,7 +467,7 @@ int skill_get_castdef(int skill_id)
return skill->dbs->db[idx].cast_def_rate;
}
-int skill_get_weapontype(int skill_id)
+static int skill_get_weapontype(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -477,7 +477,7 @@ int skill_get_weapontype(int skill_id)
return skill->dbs->db[idx].weapon;
}
-int skill_get_ammotype(int skill_id)
+static int skill_get_ammotype(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -487,7 +487,7 @@ int skill_get_ammotype(int skill_id)
return skill->dbs->db[idx].ammo;
}
-int skill_get_ammo_qty(int skill_id, int skill_lv)
+static int skill_get_ammo_qty(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -502,7 +502,7 @@ int skill_get_ammo_qty(int skill_id, int skill_lv)
return skill->dbs->db[idx].ammo_qty[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_inf2(int skill_id)
+static int skill_get_inf2(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -512,7 +512,7 @@ int skill_get_inf2(int skill_id)
return skill->dbs->db[idx].inf2;
}
-int skill_get_castcancel(int skill_id)
+static int skill_get_castcancel(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -522,7 +522,7 @@ int skill_get_castcancel(int skill_id)
return skill->dbs->db[idx].castcancel;
}
-int skill_get_maxcount(int skill_id, int skill_lv)
+static int skill_get_maxcount(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -537,7 +537,7 @@ int skill_get_maxcount(int skill_id, int skill_lv)
return skill->dbs->db[idx].maxcount[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_blewcount(int skill_id, int skill_lv)
+static int skill_get_blewcount(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -552,7 +552,7 @@ int skill_get_blewcount(int skill_id, int skill_lv)
return skill->dbs->db[idx].blewcount[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_mhp(int skill_id, int skill_lv)
+static int skill_get_mhp(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -567,7 +567,7 @@ int skill_get_mhp(int skill_id, int skill_lv)
return skill->dbs->db[idx].mhp[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_castnodex(int skill_id, int skill_lv)
+static int skill_get_castnodex(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -582,7 +582,7 @@ int skill_get_castnodex(int skill_id, int skill_lv)
return skill->dbs->db[idx].castnodex[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_delaynodex(int skill_id, int skill_lv)
+static int skill_get_delaynodex(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -597,7 +597,7 @@ int skill_get_delaynodex(int skill_id, int skill_lv)
return skill->dbs->db[idx].delaynodex[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_type(int skill_id)
+static int skill_get_type(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -607,7 +607,7 @@ int skill_get_type(int skill_id)
return skill->dbs->db[idx].skill_type;
}
-int skill_get_unit_id(int skill_id, int flag)
+static int skill_get_unit_id(int skill_id, int flag)
{
int idx;
if (skill_id == 0)
@@ -618,7 +618,7 @@ int skill_get_unit_id(int skill_id, int flag)
return skill->dbs->db[idx].unit_id[flag];
}
-int skill_get_unit_interval(int skill_id)
+static int skill_get_unit_interval(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -628,7 +628,7 @@ int skill_get_unit_interval(int skill_id)
return skill->dbs->db[idx].unit_interval;
}
-int skill_get_unit_range(int skill_id, int skill_lv)
+static int skill_get_unit_range(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -643,7 +643,7 @@ int skill_get_unit_range(int skill_id, int skill_lv)
return skill->dbs->db[idx].unit_range[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_unit_target(int skill_id)
+static int skill_get_unit_target(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -653,7 +653,7 @@ int skill_get_unit_target(int skill_id)
return skill->dbs->db[idx].unit_target & BCT_ALL;
}
-int skill_get_unit_bl_target(int skill_id)
+static int skill_get_unit_bl_target(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -663,7 +663,7 @@ int skill_get_unit_bl_target(int skill_id)
return skill->dbs->db[idx].unit_target & BL_ALL;
}
-int skill_get_unit_flag(int skill_id)
+static int skill_get_unit_flag(int skill_id)
{
int idx;
if (skill_id == 0)
@@ -673,7 +673,7 @@ int skill_get_unit_flag(int skill_id)
return skill->dbs->db[idx].unit_flag;
}
-int skill_get_unit_layout_type(int skill_id, int skill_lv)
+static int skill_get_unit_layout_type(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -688,7 +688,7 @@ int skill_get_unit_layout_type(int skill_id, int skill_lv)
return skill->dbs->db[idx].unit_layout_type[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_cooldown(int skill_id, int skill_lv)
+static int skill_get_cooldown(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -703,7 +703,7 @@ int skill_get_cooldown(int skill_id, int skill_lv)
return skill->dbs->db[idx].cooldown[skill_get_lvl_idx(skill_lv)];
}
-int skill_get_fixed_cast(int skill_id, int skill_lv)
+static int skill_get_fixed_cast(int skill_id, int skill_lv)
{
int idx;
if (skill_id == 0)
@@ -722,7 +722,7 @@ int skill_get_fixed_cast(int skill_id, int skill_lv)
#endif
}
-int skill_tree_get_max(int skill_id, int class)
+static int skill_tree_get_max(int skill_id, int class)
{
int i;
int class_idx = pc->class2idx(class);
@@ -734,7 +734,7 @@ int skill_tree_get_max(int skill_id, int class)
return skill->get_max(skill_id);
}
-int skill_get_casttype(int skill_id)
+static int skill_get_casttype(int skill_id)
{
int inf = skill->get_inf(skill_id);
if (inf&(INF_GROUND_SKILL))
@@ -751,7 +751,7 @@ int skill_get_casttype(int skill_id)
return CAST_DAMAGE;
}
-int skill_get_casttype2(int index)
+static int skill_get_casttype2(int index)
{
int inf;
Assert_retr(CAST_NODAMAGE, index < MAX_SKILL_DB);
@@ -771,7 +771,7 @@ int skill_get_casttype2(int index)
}
//Returns actual skill range taking into account attack range and AC_OWL [Skotlex]
-int skill_get_range2(struct block_list *bl, int skill_id, int skill_lv)
+static int skill_get_range2(struct block_list *bl, int skill_id, int skill_lv)
{
int range;
struct map_session_data *sd = BL_CAST(BL_PC, bl);
@@ -860,7 +860,8 @@ int skill_get_range2(struct block_list *bl, int skill_id, int skill_lv)
return range;
}
-int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, bool heal) {
+static int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, bool heal)
+{
int skill2_lv, hp;
struct map_session_data *sd = BL_CAST(BL_PC, src);
struct map_session_data *tsd = BL_CAST(BL_PC, target);
@@ -955,7 +956,7 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
}
// Making plagiarize check its own function [Aru]
-int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* bl)
+static int can_copy(struct map_session_data *sd, uint16 skill_id, struct block_list *bl)
{
nullpo_ret(sd);
// Never copy NPC/Wedding Skills
@@ -992,7 +993,7 @@ int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* b
}
// [MouseJstr] - skill ok to cast? and when?
-int skillnotok (uint16 skill_id, struct map_session_data *sd)
+static int skillnotok(uint16 skill_id, struct map_session_data *sd)
{
int16 idx,m;
nullpo_retr (1, sd);
@@ -1022,7 +1023,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
}
if (sd->blockskill[idx]) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return 1;
}
@@ -1069,7 +1070,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
//char output[150];
//sprintf(output, msg_txt(862), battle_config.min_npc_vendchat_distance); // "You're too close to a NPC, you must be at least %d cells away from any NPC."
//clif->message(sd->fd, output);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_THERE_ARE_NPC_AROUND,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_THERE_ARE_NPC_AROUND, 0, 0);
return 1;
}
FALLTHROUGH
@@ -1078,13 +1079,13 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
case WZ_ICEWALL:
// noicewall flag [Valaris]
if (map->list[m].flag.noicewall) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
break;
case GC_DARKILLUSION:
if( map_flag_gvg2(m) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
break;
@@ -1093,7 +1094,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
|| !(battle_config.emergency_call&(map->list[m].flag.gvg || map->list[m].flag.gvg_castle?8:4))
|| (battle_config.emergency_call&16 && map->list[m].flag.nowarpto && !map->list[m].flag.gvg_castle)
) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
break;
@@ -1113,7 +1114,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
return (map->list[m].flag.noskill);
}
-int skill_notok_unknown(uint16 skill_id, struct map_session_data *sd)
+static int skill_notok_unknown(uint16 skill_id, struct map_session_data *sd)
{
int16 m;
nullpo_retr (1, sd);
@@ -1121,7 +1122,7 @@ int skill_notok_unknown(uint16 skill_id, struct map_session_data *sd)
return (map->list[m].flag.noskill);
}
-int skillnotok_hom(uint16 skill_id, struct homun_data *hd)
+static int skillnotok_hom(uint16 skill_id, struct homun_data *hd)
{
uint16 idx = skill->get_index(skill_id);
nullpo_retr(1,hd);
@@ -1135,7 +1136,7 @@ int skillnotok_hom(uint16 skill_id, struct homun_data *hd)
case MH_LIGHT_OF_REGENE:
if( homun->get_intimacy_grade(hd) != 4 ){
if( hd->master )
- clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_RELATIONGRADE, 0);
+ clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_RELATIONGRADE, 0, 0);
return 1;
}
break;
@@ -1155,14 +1156,14 @@ int skillnotok_hom(uint16 skill_id, struct homun_data *hd)
return skill->not_ok(skill_id, hd->master);
}
-int skillnotok_hom_unknown(uint16 skill_id, struct homun_data *hd)
+static int skillnotok_hom_unknown(uint16 skill_id, struct homun_data *hd)
{
nullpo_retr(1, hd);
//Use master's criteria.
return skill->not_ok(skill_id, hd->master);
}
-int skillnotok_mercenary(uint16 skill_id, struct mercenary_data *md)
+static int skillnotok_mercenary(uint16 skill_id, struct mercenary_data *md)
{
uint16 idx = skill->get_index(skill_id);
nullpo_retr(1,md);
@@ -1175,7 +1176,7 @@ int skillnotok_mercenary(uint16 skill_id, struct mercenary_data *md)
return skill->not_ok(skill_id, md->master);
}
-struct s_skill_unit_layout* skill_get_unit_layout(uint16 skill_id, uint16 skill_lv, struct block_list* src, int x, int y)
+static struct s_skill_unit_layout *skill_get_unit_layout(uint16 skill_id, uint16 skill_lv, struct block_list *src, int x, int y)
{
int pos = skill->get_unit_layout_type(skill_id,skill_lv);
uint8 dir;
@@ -1205,7 +1206,8 @@ struct s_skill_unit_layout* skill_get_unit_layout(uint16 skill_id, uint16 skill_
/*==========================================
*
*------------------------------------------*/
-int skill_additional_effect(struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, int64 tick) {
+static int skill_additional_effect(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, int64 tick)
+{
struct map_session_data *sd, *dstsd;
struct mob_data *md, *dstmd;
struct status_data *sstatus, *tstatus;
@@ -1324,7 +1326,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
if(pc->steal_item(sd,bl,pc->checkskill(sd,TF_STEAL)))
clif->skill_nodamage(src,bl,TF_STEAL,temp,1);
else
- clif->skill_fail(sd,RG_SNATCHER,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, RG_SNATCHER, USESKILL_FAIL_LEVEL, 0, 0);
}
// Chance to trigger Taekwon kicks [Dralnu]
if(sc && !sc->data[SC_COMBOATTACK]) {
@@ -1390,7 +1392,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
if (!sc_start2(src,bl,SC_POISON,(4*skill_lv+10),skill_lv,src->id,skill->get_time2(skill_id,skill_lv))
&& sd && skill_id==TF_POISON
)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case AS_SONICBLOW:
@@ -1408,7 +1410,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
if (!sc_start(src,bl,SC_FREEZE,skill_lv*3+35,skill_lv,skill->get_time2(skill_id,skill_lv))
&& sd && skill_id == MG_FROSTDIVER
)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
#ifdef RENEWAL
@@ -2175,10 +2177,12 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
return 0;
}
-void skill_additional_effect_unknown(struct block_list* src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int *dmg_lv, int64 *tick) {
+static void skill_additional_effect_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int *dmg_lv, int64 *tick)
+{
}
-int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, uint16 skill_id, int64 tick) {
+static int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, uint16 skill_id, int64 tick)
+{
int temp, skill_lv, i, type, notok;
struct block_list *tbl;
@@ -2272,7 +2276,8 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, uint1
* type of skills, so not every instance of skill->additional_effect needs a call
* to this one.
*/
-int skill_counter_additional_effect(struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int64 tick) {
+static int skill_counter_additional_effect(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int64 tick)
+{
int rate;
struct map_session_data *sd=NULL;
struct map_session_data *dstsd=NULL;
@@ -2489,7 +2494,8 @@ int skill_counter_additional_effect(struct block_list* src, struct block_list *b
return 0;
}
-void skill_counter_additional_effect_unknown(struct block_list* src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int64 *tick) {
+static void skill_counter_additional_effect_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int64 *tick)
+{
}
/*=========================================================================
@@ -2498,7 +2504,7 @@ void skill_counter_additional_effect_unknown(struct block_list* src, struct bloc
* - flag is a BCT_ flag to indicate which type of adjustment should be used
* (BCT_ENEMY/BCT_PARTY/BCT_SELF) are the valid values.
*------------------------------------------------------------------------*/
-int skill_break_equip (struct block_list *bl, unsigned short where, int rate, int flag)
+static int skill_break_equip(struct block_list *bl, unsigned short where, int rate, int flag)
{
const int where_list[4] = {EQP_WEAPON, EQP_ARMOR, EQP_SHIELD, EQP_HELM};
const enum sc_type scatk[4] = {SC_NOEQUIPWEAPON, SC_NOEQUIPARMOR, SC_NOEQUIPSHIELD, SC_NOEQUIPHELM};
@@ -2588,7 +2594,7 @@ int skill_break_equip (struct block_list *bl, unsigned short where, int rate, in
return where; //Return list of pieces broken.
}
-int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int lv, int time)
+static int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int lv, int time)
{
struct status_change *sc;
const int pos[5] = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HELM, EQP_ACC};
@@ -2623,7 +2629,7 @@ int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int
* if 'flag&0x1', position update packets must not be sent.
* if 'flag&0x2', skill blown ignores players' special_state.no_knockback
*/
-int skill_blown(struct block_list* src, struct block_list* target, int count, int8 dir, int flag)
+static int skill_blown(struct block_list *src, struct block_list *target, int count, int8 dir, int flag)
{
int dx = 0, dy = 0;
struct status_change *tsc = status->get_sc(target);
@@ -2687,7 +2693,7 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in
1 - Regular reflection (Maya)
2 - SL_KAITE reflection
*/
-int skill_magic_reflect(struct block_list* src, struct block_list* bl, int type)
+static int skill_magic_reflect(struct block_list *src, struct block_list *bl, int type)
{
struct status_change *sc = status->get_sc(bl);
struct map_session_data* sd = BL_CAST(BL_PC, bl);
@@ -2736,7 +2742,7 @@ int skill_magic_reflect(struct block_list* src, struct block_list* bl, int type)
* client (causes player characters to not scream skill name)
* flag&0x4000 - Return 0 if damage was reflected
*-------------------------------------------------------------------------*/
-int skill_attack(int attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static int skill_attack(int attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
struct Damage dmg;
struct status_data *sstatus, *tstatus;
@@ -3432,17 +3438,17 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr
return (int)cap_value(damage,INT_MIN,INT_MAX);
}
-void skill_attack_combo1_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_change_entry *sce, int *combo)
+static void skill_attack_combo1_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_change_entry *sce, int *combo)
{
if (src == dsrc) // Ground skills are exceptions. [Inkfish]
status_change_end(src, SC_COMBOATTACK, INVALID_TIMER);
}
-void skill_attack_combo2_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *combo)
+static void skill_attack_combo2_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *combo)
{
}
-void skill_attack_display_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage)
+static void skill_attack_display_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage)
{
nullpo_retv(bl);
nullpo_retv(dmg);
@@ -3463,18 +3469,18 @@ void skill_attack_display_unknown(int *attack_type, struct block_list* src, stru
dmg->dmotion = clif->skill_damage(dsrc, bl, *tick, dmg->amotion, dmg->dmotion, *damage, dmg->div_, *skill_id, (*flag & SD_LEVEL) ? -1 : *skill_lv, *type);
}
-int skill_attack_copy_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static int skill_attack_copy_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
nullpo_ret(skill_id);
return *skill_id;
}
-int skill_attack_dir_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static int skill_attack_dir_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
return -1;
}
-void skill_attack_blow_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir)
+static void skill_attack_blow_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir)
{
nullpo_retv(bl);
nullpo_retv(dmg);
@@ -3489,7 +3495,7 @@ void skill_attack_blow_unknown(int *attack_type, struct block_list* src, struct
}
}
-void skill_attack_post_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static void skill_attack_post_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
}
@@ -3498,7 +3504,7 @@ void skill_attack_post_unknown(int *attack_type, struct block_list* src, struct
* Checking bl battle flag and display damage
* then call func with source,target,skill_id,skill_lv,tick,flag
*------------------------------------------*/
-int skill_area_sub(struct block_list *bl, va_list ap)
+static int skill_area_sub(struct block_list *bl, va_list ap)
{
struct block_list *src;
uint16 skill_id,skill_lv;
@@ -3528,7 +3534,7 @@ int skill_area_sub(struct block_list *bl, va_list ap)
return 0;
}
-int skill_check_unit_range_sub(struct block_list *bl, va_list ap)
+static int skill_check_unit_range_sub(struct block_list *bl, va_list ap)
{
const struct skill_unit *su = NULL;
uint16 skill_id,g_skill_id;
@@ -3599,7 +3605,8 @@ int skill_check_unit_range_sub(struct block_list *bl, va_list ap)
return 1;
}
-int skill_check_unit_range (struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv) {
+static int skill_check_unit_range(struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv)
+{
//Non players do not check for the skill's splash-trigger area.
int range = bl->type == BL_PC ? skill->get_unit_range(skill_id, skill_lv):0;
int layout_type = skill->get_unit_layout_type(skill_id,skill_lv);
@@ -3612,7 +3619,8 @@ int skill_check_unit_range (struct block_list *bl, int x, int y, uint16 skill_id
return map->foreachinarea(skill->check_unit_range_sub,bl->m,x-range,y-range,x+range,y+range,BL_SKILL,skill_id);
}
-int skill_check_unit_range2_sub (struct block_list *bl, va_list ap) {
+static int skill_check_unit_range2_sub(struct block_list *bl, va_list ap)
+{
uint16 skill_id;
if(bl->prev == NULL)
@@ -3631,7 +3639,8 @@ int skill_check_unit_range2_sub (struct block_list *bl, va_list ap) {
return 1;
}
-int skill_check_unit_range2 (struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv) {
+static int skill_check_unit_range2(struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv)
+{
int range, type;
switch (skill_id) {
@@ -3674,7 +3683,8 @@ int skill_check_unit_range2 (struct block_list *bl, int x, int y, uint16 skill_i
* &1: finished casting the skill (invoke hp/sp/item consumption)
* &2: picked menu entry (Warp Portal, Teleport and other menu based skills)
*------------------------------------------*/
-int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv, int type) {
+static int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv, int type)
+{
struct status_data *st;
struct map_session_data *sd = NULL;
int i, hp, sp, hp_rate, sp_rate, state, mhp;
@@ -3731,11 +3741,11 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv,
if( !(type&2) ) {
if( hp > 0 && st->hp <= (unsigned int)hp ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
return 0;
}
if( sp > 0 && st->sp <= (unsigned int)sp ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
return 0;
}
}
@@ -3744,7 +3754,7 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv,
switch( state ) {
case ST_MOVE_ENABLE:
if( !unit->can_move(bl) ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -3758,7 +3768,7 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv,
if (itemid[i] < 1) continue; // No item
index[i] = pc->search_inventory(sd, itemid[i]);
if (index[i] == INDEX_NOT_FOUND || sd->status.inventory[index[i]].amount < amount[i]) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_ITEM, amount[i]|(itemid[i] << 16));
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_ITEM, amount[i], itemid[i] << 16);
return 0;
}
}
@@ -3781,14 +3791,16 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv,
/*==========================================
* what the hell it doesn't need to receive this many params, it doesn't do anything ~_~
*------------------------------------------*/
-int skill_area_sub_count(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) {
+static int skill_area_sub_count(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+{
return 1;
}
/*==========================================
*
*------------------------------------------*/
-int skill_timerskill(int tid, int64 tick, int id, intptr_t data) {
+static int skill_timerskill(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list *src = map->id2bl(id),*target = NULL;
struct unit_data *ud = unit->bl2ud(src);
struct skill_timerskill *skl;
@@ -4021,25 +4033,25 @@ int skill_timerskill(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
-bool skill_timerskill_dead_unknown(struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl)
+static bool skill_timerskill_dead_unknown(struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl)
{
return false;
}
-void skill_timerskill_target_unknown(int tid, int64 tick, struct block_list *src, struct block_list *target, struct unit_data *ud, struct skill_timerskill *skl)
+static void skill_timerskill_target_unknown(int tid, int64 tick, struct block_list *src, struct block_list *target, struct unit_data *ud, struct skill_timerskill *skl)
{
nullpo_retv(skl);
skill->attack(skl->type, src, src, target, skl->skill_id, skl->skill_lv, tick, skl->flag);
}
-void skill_timerskill_notarget_unknown(int tid, int64 tick, struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl)
+static void skill_timerskill_notarget_unknown(int tid, int64 tick, struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl)
{
}
/*==========================================
*
*------------------------------------------*/
-int skill_addtimerskill(struct block_list *src, int64 tick, int target, int x,int y, uint16 skill_id, uint16 skill_lv, int type, int flag)
+static int skill_addtimerskill(struct block_list *src, int64 tick, int target, int x, int y, uint16 skill_id, uint16 skill_lv, int type, int flag)
{
int i;
struct unit_data *ud;
@@ -4069,7 +4081,7 @@ int skill_addtimerskill(struct block_list *src, int64 tick, int target, int x,in
/*==========================================
*
*------------------------------------------*/
-int skill_cleartimerskill (struct block_list *src)
+static int skill_cleartimerskill(struct block_list *src)
{
int i;
struct unit_data *ud;
@@ -4102,12 +4114,12 @@ int skill_cleartimerskill (struct block_list *src)
return 1;
}
-bool skill_cleartimerskill_exception(int skill_id)
+static bool skill_cleartimerskill_exception(int skill_id)
{
return false;
}
-int skill_activate_reverberation(struct block_list *bl, va_list ap)
+static int skill_activate_reverberation(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
struct skill_unit_group *sg = NULL;
@@ -4127,7 +4139,7 @@ int skill_activate_reverberation(struct block_list *bl, va_list ap)
return 0;
}
-int skill_reveal_trap(struct block_list *bl, va_list ap)
+static int skill_reveal_trap(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
@@ -4144,7 +4156,7 @@ int skill_reveal_trap(struct block_list *bl, va_list ap)
return 0;
}
-void skill_castend_type(int type, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static void skill_castend_type(int type, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
switch (type) {
case CAST_GROUND:
@@ -4164,7 +4176,7 @@ void skill_castend_type(int type, struct block_list *src, struct block_list *bl,
*
*
*------------------------------------------*/
-int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static int skill_castend_damage_id(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
struct map_session_data *sd = NULL;
struct status_data *tstatus;
@@ -4428,7 +4440,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
unit->setdir(bl,dir);
}
else if (sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -4879,7 +4891,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
case SL_STUN:
if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) {
status->change_start(src,src,SC_STUN,10000,skill_lv,0,0,0,500,SCFLAG_FIXEDTICK|SCFLAG_FIXEDRATE);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
skill->attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag);
@@ -5023,12 +5035,12 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
if( sc && sc->data[SC_COMBOATTACK] && sc->data[SC_COMBOATTACK]->val1 == GC_WEAPONBLOCKING )
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_GC_WEAPONBLOCKING,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0, 0);
break;
case GC_CROSSRIPPERSLASHER:
if( sd && !(sc && sc->data[SC_ROLLINGCUTTER]) )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
else
{
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
@@ -5183,7 +5195,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
if( path->search(NULL,src,src->m,src->x,src->y,bl->x,bl->y,1,CELL_CHKNOREACH) ) {
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
}else if( sd && skill_id == RA_WUGBITE ) // Only RA_WUGBITE has the skill fail message.
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
@@ -5341,7 +5353,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
status_change_end(bl, SC_POISON, INVALID_TIMER);
} else if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -5506,7 +5518,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
return 0;
}
-bool skill_castend_damage_id_unknown(struct block_list* src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_data *tstatus, struct status_change *sc)
+static bool skill_castend_damage_id_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, struct status_data *tstatus, struct status_change *sc)
{
nullpo_retr(true, skill_id);
nullpo_retr(true, skill_lv);
@@ -5523,7 +5535,7 @@ bool skill_castend_damage_id_unknown(struct block_list* src, struct block_list *
/*==========================================
*
*------------------------------------------*/
-int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
+static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *target, *src;
struct map_session_data *sd;
@@ -5662,7 +5674,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
}
if( sd && (inf2&INF2_CHORUS_SKILL) && skill->check_pc_partner(sd, ud->skill_id, &ud->skill_lv, 1, 0) < 1 ) {
- clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_NEED_HELPER, 0);
+ clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_NEED_HELPER, 0, 0);
break;
}
@@ -5670,7 +5682,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
if (BL_UCCAST(BL_MOB, target)->class_ == MOBID_EMPELIUM)
break;
} else if (inf && battle->check_target(src, target, inf) <= 0) {
- if (sd) clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
} else if (ud->skill_id == RK_PHANTOMTHRUST && target->type != BL_MOB) {
if( !map_flag_vs(src->m) && battle->check_target(src,target,BCT_PARTY) <= 0 )
@@ -5682,7 +5694,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
&& rnd() % 100 < 75
) {
// Fogwall makes all offensive-type targeted skills fail at 75%
- if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -5701,7 +5713,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
!check_distance_bl(src, target, skill->get_range2(src,ud->skill_id,ud->skill_lv)+battle_config.skill_add_range))
{
if (sd) {
- clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
if(battle_config.skill_out_range_consume) //Consume items anyway. [Skotlex]
skill->consume_requirement(sd,ud->skill_id,ud->skill_lv,3);
}
@@ -5845,7 +5857,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
clif->slide(src,src->x,src->y);
clif->spiritball(src);
}
- clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
}
@@ -5862,7 +5874,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-bool skill_castend_id_unknown(struct unit_data *ud, struct block_list *src, struct block_list *target)
+static bool skill_castend_id_unknown(struct unit_data *ud, struct block_list *src, struct block_list *target)
{
return false;
}
@@ -5870,7 +5882,7 @@ bool skill_castend_id_unknown(struct unit_data *ud, struct block_list *src, stru
/*==========================================
*
*------------------------------------------*/
-int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
struct map_session_data *sd, *dstsd;
struct mob_data *md, *dstmd;
@@ -5929,7 +5941,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case AL_DECAGI:
case AB_RENOVATIO:
case AB_HIGHNESSHEAL:
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_TOTARGET,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
return 0;
default:
if (skill->castend_nodamage_id_mado_unknown(src, bl, &skill_id, &skill_lv, &tick, &flag))
@@ -5945,7 +5957,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
switch (skill_id) {
case HLIF_HEAL: // [orn]
if (bl->type != BL_HOM) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0) ;
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0) ;
break ;
}
FALLTHROUGH
@@ -5963,7 +5975,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd && battle->check_undead(tstatus->race,tstatus->def_ele) && skill_id != AL_INCAGI) {
if (battle->check_target(src, bl, BCT_ENEMY) < 1) {
//Offensive heal does not works on non-enemies. [Skotlex]
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
return skill->castend_damage_id(src, bl, skill_id, skill_lv, tick, flag);
@@ -6117,7 +6129,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case PR_REDEMPTIO:
if (sd && !(flag&1)) {
if (sd->status.party_id == 0) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
skill->area_temp[0] = 0;
@@ -6126,7 +6138,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
src,skill_id,skill_lv,tick, flag|BCT_PARTY|1,
skill->castend_nodamage_id);
if (skill->area_temp[0] == 0) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
skill->area_temp[0] = 5 - skill->area_temp[0]; // The actual penalty...
@@ -6148,7 +6160,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case ALL_RESURRECTION:
if(sd && (map_flag_gvg2(bl->m) || map->list[bl->m].flag.battleground)) {
//No reviving in WoE grounds!
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if (!status->isdead(bl))
@@ -6323,7 +6335,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int class_;
if ( sd && dstmd->status.mode&MD_BOSS )
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
class_ = skill_id == SA_MONOCELL ? MOBID_PORING : mob->get_random_id(4, 1, 0);
@@ -6343,7 +6355,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SA_DEATH:
if ( sd && dstmd && dstmd->status.mode&MD_BOSS )
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -6371,7 +6383,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case CR_PROVIDENCE:
if(sd && dstsd){ //Check they are not another crusader [Skotlex]
if ((dstsd->job & MAPID_UPPERMASK) == MAPID_CRUSADER) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -6386,7 +6398,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd != NULL && dstsd != NULL && (dstsd->job & MAPID_UPPERMASK) == MAPID_BARDDANCER && dstsd->status.sex == sd->status.sex) {
// Cannot cast on another bard/dancer-type class of the same gender as caster
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -6403,7 +6415,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
status_change_end(bl, SC_MARIONETTE, INVALID_TIMER);
} else {
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -6432,7 +6444,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
dstsd->sc.data[SC_ENCHANTPOISON]
))
) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif->skill_nodamage(src,bl,skill_id,skill_lv,0);
break;
}
@@ -6440,7 +6452,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
// 100% success rate at lv4 & 5, but lasts longer at lv5
if(!clif->skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,(60+skill_lv*10),skill_lv, skill->get_time(skill_id,skill_lv)))) {
if (sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
if (skill->break_equip(bl, EQP_WEAPON, 10000, BCT_PARTY) && sd && sd != dstsd)
clif->message(sd->fd, msg_sd(sd,869)); // "You broke the target's weapon."
}
@@ -6507,7 +6519,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->slide(src, bl->x, bl->y);
}
} else if (sd != NULL) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
}
break;
@@ -6629,7 +6641,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
case HP_ASSUMPTIO:
if( sd && dstmd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
else
clif->skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
@@ -6682,7 +6694,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case AS_ENCHANTPOISON: // Prevent spamming [Valaris]
if (sd && dstsd && dstsd->sc.count) {
@@ -6695,7 +6707,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
//dstsd->sc.data[SC_ENCHANTPOISON] //People say you should be able to recast to lengthen the timer. [Skotlex]
) {
clif->skill_nodamage(src,bl,skill_id,skill_lv,0);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -6725,12 +6737,12 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int id;
if (sd->mission_mobid && (sd->mission_count || rnd()%100)) { //Cannot change target when already have one
clif->mission_info(sd, sd->mission_mobid, sd->mission_count);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
id = mob->get_random_id(0,0xF, sd->status.base_level);
if (!id) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
sd->mission_mobid = id;
@@ -6765,7 +6777,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
(failure = sc_start(src,bl,type, skill_id == SM_SELFPROVOKE ? 100:( 50 + 3*skill_lv + status->get_lv(src) - status->get_lv(bl)), skill_lv, skill->get_time(skill_id,skill_lv))));
if( !failure ) {
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -6795,7 +6807,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( !dstsd || (!sd && !mer) )
{ // Only players can be devoted
if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
@@ -6808,7 +6820,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
(dstsd->sc.data[SC_HELLPOWER])) // Players affected by SC_HELLPOWERR cannot be devoted.
{
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -6823,7 +6835,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
ARR_FIND(0, count, i, sd->devotion[i] == 0 );
if( i == count ) {
// No free slots, skill Fail
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -7084,7 +7096,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
)
) {
status->change_start(src,src,SC_STUN,10000,skill_lv,0,0,0,500,SCFLAG_FIXEDRATE);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -7111,7 +7123,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
return 0;
} else if( tsc && tsc->option&OPTION_MADOGEAR ) {
//Mado Gear cannot hide
- if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if( sd ) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -7137,7 +7149,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( failure )
clif->skill_nodamage(src,bl,skill_id,( skill_id == LG_FORCEOFVANGUARD ) ? skill_lv : -1,failure);
else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
if ( skill_id == LG_FORCEOFVANGUARD || skill_id == RA_CAMOUFLAGE )
break;
map->freeblock_unlock();
@@ -7147,7 +7159,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( failure )
clif->skill_nodamage(src,bl,skill_id,( skill_id == LG_FORCEOFVANGUARD ) ? skill_lv : -1,failure);
else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -7168,7 +7180,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
//NOTE: mobs don't have the sprite animation that is used when performing this skill (will cause glitches)
char temp[70];
snprintf(temp, sizeof(temp), "%s : %s !!", md->name, skill->get_desc(skill_id));
- clif->disp_overhead(&md->bl,temp);
+ clif->disp_overhead(&md->bl, temp, AREA_CHAT_WOC, NULL);
}
break;
@@ -7187,7 +7199,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,skill_lv, sc_start2(src,bl,type,70,skill_lv,src->id,skill->get_time(skill_id,skill_lv)));
} else {
clif->skill_nodamage(src,bl,skill_id,skill_lv,0);
- if(sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if(sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
}
break;
@@ -7197,7 +7209,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if(pc->steal_item(sd,bl,skill_lv))
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
}
break;
@@ -7210,7 +7222,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src, bl, skill_id, amount, 1);
} else
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -7218,7 +7230,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
{
int brate = 0;
if (tstatus->mode&MD_BOSS) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if(status->isimmune(bl) || !tsc)
@@ -7237,7 +7249,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
skill->get_time2(skill_id,skill_lv)))
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
else if(sd) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
// Level 6-10 doesn't consume a red gem if it fails [celest]
if (skill_lv > 5) {
// not to consume items
@@ -7341,7 +7353,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
if( dstsd )
{ // Fail on Players
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if (dstmd && dstmd->class_ == MOBID_EMPELIUM)
@@ -7382,7 +7394,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd) {
//Prevent vending of GMs with unnecessary Level to trade/drop. [Skotlex]
if ( !pc_can_give_items(sd) )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
else {
sd->state.prevend = sd->state.workinprogress = 3;
clif->openvendingreq(sd,2+skill_lv);
@@ -7430,7 +7442,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (skill->produce_mix(sd, skill_id, ITEMID_HOLY_WATER, 0, 0, 0, 1))
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -7528,7 +7540,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
//Nothing stripped.
if( sd && !rate )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
@@ -7547,18 +7559,18 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int item_id = skill->get_itemid(skill_id, item_idx);
int inventory_idx = pc->search_inventory(sd, item_id);
if (inventory_idx == INDEX_NOT_FOUND || item_id <= 0) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
if (sd->inventory_data[inventory_idx] == NULL || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
if( skill_id == AM_BERSERKPITCHER ) {
if (dstsd != NULL && dstsd->status.base_level < sd->inventory_data[inventory_idx]->elv) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -7658,7 +7670,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
(dstsd && equip[skill_id - AM_CP_WEAPON] == EQP_SHIELD && pc->checkequip(dstsd, EQP_SHIELD) > 0
&& (index = dstsd->equip_index[EQI_HAND_L]) >= 0 && dstsd->inventory_data[index]
&& dstsd->inventory_data[index]->type != IT_ARMOR)) ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock(); // Don't consume item requirements
return 0;
}
@@ -7671,7 +7683,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
//Prepare 200 White Potions.
if (!skill->produce_mix(sd, skill_id, ITEMID_WHITE_POTION, 0, 0, 0, 200))
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
case AM_TWILIGHT2:
@@ -7679,7 +7691,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
//Prepare 200 Slim White Potions.
if (!skill->produce_mix(sd, skill_id, ITEMID_WHITE_SLIM_POTION, 0, 0, 0, 200))
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
case AM_TWILIGHT3:
@@ -7693,7 +7705,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
|| !skill->can_produce_mix(sd,ITEMID_FIRE_BOTTLE,-1, 50) //50 Flame Bottle
|| ebottle < 200 //200 empty bottle are required at total.
) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -7719,7 +7731,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
|| rnd()%100 >= 50+10*skill_lv )
{
if (sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if(status->isimmune(bl) || !tsc || !tsc->count)
@@ -7832,7 +7844,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
//Only 10% success chance against bosses. [Skotlex]
if (rnd()%100 < 90)
{
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
} else if (!dstsd || map_flag_vs(bl->m)) //HP damage only on pvp-maps when against players.
@@ -8123,7 +8135,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
we_baby_parents = true;
}
if (!we_baby_parents) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -8138,7 +8150,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
hp = sstatus->max_hp/10;
sp = hp * 10 * skill_lv / 100;
if (!status->charge(src,hp,0)) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
@@ -8191,7 +8203,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
}
skill->delunit(su);
}else if(sd)
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -8238,7 +8250,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
|| tstatus-> hp > tstatus->max_hp*3/4
#endif // RENEWAL
) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
}
@@ -8268,7 +8280,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (!clif->skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,55+5*skill_lv,skill_lv,skill->get_time(skill_id,skill_lv)))
) {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -8292,7 +8304,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
unsigned int sp1 = 0, sp2 = 0;
if (dstmd) {
if (dstmd->state.soul_change_flag) {
- if(sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if(sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
dstmd->state.soul_change_flag = 1;
@@ -8368,7 +8380,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
s++;
}
if ( sd && !s ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock(); // Don't consume item requirements
return 0;
}
@@ -8400,7 +8412,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
}
if (rnd() % 100 > skill_lv * 8 || (dstmd && ((dstmd->guardian_data && dstmd->class_ == MOBID_EMPELIUM) || mob_is_battleground(dstmd)))) {
if (sd != NULL)
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
@@ -8508,7 +8520,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SL_WIZARD:
//NOTE: here, 'type' has the value of the associated MAPID, not of the SC_SOULLINK constant.
if (sd != NULL && !(dstsd != NULL && (dstsd->job & MAPID_UPPERMASK) == type)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if (skill_id == SL_SUPERNOVICE && dstsd && dstsd->die_counter && !(rnd()%100)) {
@@ -8524,7 +8536,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
case SL_HIGH:
if (sd != NULL && !(dstsd != NULL && (dstsd->job & JOBL_UPPER) != 0 && (dstsd->job & JOBL_2) == 0 && dstsd->status.base_level < 70)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,
@@ -8535,7 +8547,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SL_SWOO:
if (tsce) {
if(sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
status->change_start(src,src,SC_STUN,10000,skill_lv,0,0,0,10000,SCFLAG_FIXEDRATE);
status_change_end(bl, SC_SWOO, INVALID_TIMER);
break;
@@ -8543,7 +8555,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case SL_SKA: // [marquis007]
case SL_SKE:
if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
status->change_start(src,src,SC_STUN,10000,skill_lv,0,0,0,500,SCFLAG_FIXEDTICK|SCFLAG_FIXEDRATE);
break;
}
@@ -8635,7 +8647,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd) {
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
if (!pc->set_hate_mob(sd, skill_lv-1, bl))
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -8665,7 +8677,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (homun->call(sd))
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -8674,7 +8686,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (homun->vaporize(sd,HOM_ST_REST))
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -8709,9 +8721,9 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
}
// Failed
else if (hd && hd->master)
- clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(hd->master, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
else if (sd)
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case HVAN_CHAOTIC: // [orn]
{
@@ -8814,7 +8826,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
{
if( !sd->status.party_id )
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
party->foreachsamemap(skill->area_sub, sd, skill->get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill->castend_nodamage_id);
@@ -8870,7 +8882,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( status->charge(bl,heal,0) )
clif->skill_nodamage(src,bl,skill_id,skill_lv,sc_start2(src,bl,type,100,skill_lv,heal,skill->get_time(skill_id,skill_lv)));
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
case RK_REFRESH:
@@ -9048,11 +9060,11 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
{
int heal = status_get_max_hp(bl) * ( 18 - 2 * skill_lv ) / 100;
if( status_get_hp(bl) < heal ) { // if you haven't enough HP skill fails.
- if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_HP_INSUFFICIENT,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
break;
}
if( !status->charge(bl,heal,0) ) {
- if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_HP_INSUFFICIENT,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
@@ -9078,7 +9090,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, level + (sd?(sd->status.job_level / 10):0), skill->get_time(skill_id,skill_lv)));
else if( sd ) {
if( !level )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
else
party->foreachsamemap(skill->area_sub, sd, skill->get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill->castend_nodamage_id);
}
@@ -9184,7 +9196,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if ((dstsd != NULL && (dstsd->job & MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || rnd()%100 >= 60 + 8 * skill_lv) {
if (sd)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if(status->isimmune(bl) || !tsc || !tsc->count)
@@ -9247,11 +9259,11 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
int failure = sc_start2(src,bl,type,rate,skill_lv,src->id,(src == bl)?5000:(bl->type == BL_PC)?skill->get_time(skill_id,skill_lv):skill->get_time2(skill_id, skill_lv));
clif->skill_nodamage(src,bl,skill_id,skill_lv,failure);
if( sd && !failure )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
}else
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_TOTARGET,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
break;
case WL_FROSTMISTY:
@@ -9287,7 +9299,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
map->foreachinrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_nodamage_id);
}else if( sd ) // Failure on Rate
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
}
break;
@@ -9317,7 +9329,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( sc && !sc->data[i] )
break;
if( i == SC_SPELLBOOK7 ) {
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_READING, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_READING, 0, 0);
break;
}
@@ -9421,7 +9433,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( sd ) {
int heal, hp = 0; // % of max hp regen
if( !dstsd || !pc_ismadogear(dstsd) ) {
- clif->skill_fail(sd, skill_id,USESKILL_FAIL_TOTARGET,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
break;
}
switch (cap_value(skill_lv, 1, 5)) {
@@ -9455,7 +9467,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_nodamage(src,bl,skill_id,1,1);
}
else
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_IMITATION_SKILL_NONE,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_IMITATION_SKILL_NONE, 0, 0);
}
break;
@@ -9465,7 +9477,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
dstsd->shadowform_id = src->id;
}
else if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case SC_BODYPAINT:
@@ -9526,7 +9538,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
}
}
} else if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case LG_TRAMPLE:
@@ -9553,7 +9565,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
struct item_data *shield_data = NULL;
if( sd->equip_index[EQI_HAND_L] < 0 || !( shield_data = sd->inventory_data[sd->equip_index[EQI_HAND_L]] ) || shield_data->type != IT_ARMOR ) {
//Skill will first check if a shield is equipped. If none is found on the caster the skill will fail.
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
//Generates a number between 1 - 3. The number generated will determine which effect will be triggered.
@@ -9887,7 +9899,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case WM_GLOOMYDAY:
if ( tsc && tsc->data[type] ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
// val4 indicates caster's voice lesson level
@@ -10019,7 +10031,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
}
if( !mapindex ) { //Given map not found?
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 0;
}
@@ -10114,7 +10126,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
// Summoning the new one.
if( !elemental->create(sd,elemental_class,skill->get_time(skill_id,skill_lv)) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -10136,7 +10148,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case 3: mode = EL_MODE_AGGRESSIVE; break;
}
if (!elemental->change_mode(sd->ed, mode)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -10180,7 +10192,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( !ed ) break;
if( !status->charge(&sd->bl,s_hp,s_sp) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
e_hp = ed->battle_status.max_hp * 10 / 100;
@@ -10211,7 +10223,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
sc_start2(src,bl, type, 100, skill_lv, src->id, skill->get_time(skill_id,skill_lv));
(sc->bs_counter)++;
} else if( sd ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -10234,7 +10246,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case GN_SLINGITEM:
if( sd ) {
- short ammo_id;
+ int ammo_id;
int equip_idx = sd->equip_index[EQI_AMMO];
if( equip_idx <= 0 )
break; // No ammo.
@@ -10249,7 +10261,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
else
skill->attack(BF_WEAPON,src,src,bl,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag);
} else //Otherwise, it fails, shows animation and removes items.
- clif->skill_fail(sd,GN_SLINGITEM_RANGEMELEEATK,0xa,0);
+ clif->skill_fail(sd, GN_SLINGITEM_RANGEMELEEATK, 0xa, 0, 0);
} else if( itemdb_is_GNthrowable(ammo_id) ) {
struct script_code *scriptroot = sd->inventory_data[equip_idx]->script;
if( !scriptroot )
@@ -10377,7 +10389,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case KO_KYOUGAKU:
if (!map_flag_vs(src->m) || !dstsd) {
- if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_SIZE, 0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_SIZE, 0, 0);
break;
} else {
int time;
@@ -10399,14 +10411,14 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if( status->get_lv(bl) <= status->get_lv(src) )
status->change_start(src, bl, SC_COMA, skill_lv, skill_lv, 0, src->id, 0, 0, SCFLAG_NONE);
} else if( sd )
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
case KO_GENWAKU:
if ( !map_flag_gvg2(src->m) && ( dstsd || dstmd ) && !(tstatus->mode&MD_PLANT) && battle->check_target(src,bl,BCT_ENEMY) > 0 ) {
int x = src->x, y = src->y;
if( sd && rnd()%100 > max(5, (45 + 5 * skill_lv) - status_get_int(bl) / 10) ){//[(Base chance of success) - ( target's int / 10)]%.
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
@@ -10428,7 +10440,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case OB_OBOROGENSOU:
if( sd && ( (skill_id == OB_OBOROGENSOU && bl->type == BL_MOB) // This skill does not work on monsters.
|| is_boss(bl) ) ){ // Does not work on Boss monsters.
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET_PLAYER, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET_PLAYER, 0, 0);
break;
}
case KO_IZAYOI:
@@ -10592,22 +10604,22 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
return 0;
}
-bool skill_castend_nodamage_id_dead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static bool skill_castend_nodamage_id_dead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
return true;
}
-bool skill_castend_nodamage_id_undead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static bool skill_castend_nodamage_id_undead_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
return true;
}
-bool skill_castend_nodamage_id_mado_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static bool skill_castend_nodamage_id_mado_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
return false;
}
-bool skill_castend_nodamage_id_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+static bool skill_castend_nodamage_id_unknown(struct block_list *src, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
nullpo_retr(true, skill_id);
nullpo_retr(true, skill_lv);
@@ -10620,7 +10632,7 @@ bool skill_castend_nodamage_id_unknown(struct block_list *src, struct block_list
/*==========================================
*
*------------------------------------------*/
-int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
+static int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
{
struct block_list* src = map->id2bl(id);
struct map_session_data *sd;
@@ -10662,7 +10674,7 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
skill->check_unit_range(src,ud->skillx,ud->skilly,ud->skill_id,ud->skill_lv)
)
{
- if (sd) clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if( src->type&battle_config.skill_nofootset &&
@@ -10670,7 +10682,7 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
skill->check_unit_range2(src,ud->skillx,ud->skilly,ud->skill_id,ud->skill_lv)
)
{
- if (sd) clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
if( src->type&battle_config.land_skill_limit &&
@@ -10683,7 +10695,7 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
}
if( maxcount == 0 )
{
- if (sd) clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, ud->skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -10781,7 +10793,7 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
}
-int skill_check_npc_chaospanic(struct block_list *bl, va_list args)
+static int skill_check_npc_chaospanic(struct block_list *bl, va_list args)
{
const struct npc_data *nd = NULL;
@@ -10796,7 +10808,7 @@ int skill_check_npc_chaospanic(struct block_list *bl, va_list args)
}
/* skill count without self */
-int skill_count_wos(struct block_list *bl, va_list ap)
+static int skill_count_wos(struct block_list *bl, va_list ap)
{
struct block_list* src = va_arg(ap, struct block_list*);
nullpo_retr(1, bl);
@@ -10810,7 +10822,7 @@ int skill_count_wos(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char *mapname)
+static int skill_castend_map(struct map_session_data *sd, uint16 skill_id, const char *mapname)
{
nullpo_ret(sd);
nullpo_ret(mapname);
@@ -10883,7 +10895,7 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char
map_index = mapindex->name2id(mapname);
if(!map_index) { //Given map not found?
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
skill_failed(sd);
return 0;
}
@@ -10898,7 +10910,7 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char
maxcount--;
}
if(!maxcount) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
skill_failed(sd);
return 0;
}
@@ -10950,7 +10962,7 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char
/*==========================================
*
*------------------------------------------*/
-int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
struct map_session_data* sd;
struct status_change* sc;
@@ -11046,7 +11058,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case SC_CHAOSPANIC:
case SC_MAELSTROM:
if (sd && map->foreachinarea(skill->check_npc_chaospanic, src->m, x-3, y-3, x+3, y+3, BL_NPC) > 0 ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
FALLTHROUGH
@@ -11194,7 +11206,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
else { // Create Basilica. Start SC on caster. Unit timer start SC on others.
if( map->foreachinrange(skill->count_wos, src, 2, BL_MOB|BL_PC, src) ) {
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
return 1;
}
@@ -11348,7 +11360,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|| sd->inventory_data[inventory_idx] == NULL
|| sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx)
) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
script->potion_flag = 1;
@@ -11404,7 +11416,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
r = skill->get_splash(skill_id, skill_lv);
map->foreachinarea(skill->cell_overlap, src->m, x-r, y-r, x+r, y+r, BL_SKILL, HW_GANBANTEIN, &dummy, src);
} else {
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
break;
@@ -11419,12 +11431,12 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case CR_CULTIVATION:
if (sd) {
if( map->count_oncell(src->m,x,y,BL_CHAR,0) > 0 ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
clif->skill_poseffect(src,skill_id,skill_lv,x,y,tick);
if (rnd()%100 < 50) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
} else {
int mob_id = skill_lv < 2 ? MOBID_BLACK_MUSHROOM + rnd()%2 : MOBID_RED_PLANT + rnd()%6;
struct mob_data *md = mob->once_spawn_sub(src, src->m, x, y, DEFAULT_MOB_JNAME, mob_id, "", SZ_SMALL, AI_NONE);
@@ -11473,7 +11485,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case AM_RESURRECTHOMUN: // [orn]
if (sd) {
if (!homun->ressurect(sd, 20*skill_lv, x, y)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
break;
}
}
@@ -11517,7 +11529,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case GC_POISONSMOKE:
if( !(sc && sc->data[SC_POISONINGWEAPON]) ) {
if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_GC_POISONINGWEAPON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_POISONINGWEAPON, 0, 0);
return 0;
}
clif->skill_damage(src,src,tick,status_get_amotion(src),0,-30000,1,skill_id,skill_lv,BDT_SKILL);
@@ -11626,7 +11638,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
map->foreachinarea(skill->area_sub,src->m,x-r,y-r,x+r,y+r,skill->splash_target(src),
src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id);
} else if( sd )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
break;
case WM_DOMINION_IMPULSE:
@@ -11735,20 +11747,22 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
return 0;
}
-void skill_castend_pos2_effect_unknown(struct block_list* src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
+static void skill_castend_pos2_effect_unknown(struct block_list *src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+{
if (skill->get_inf(*skill_id) & INF_SELF_SKILL)
clif->skill_nodamage(src, src, *skill_id, *skill_lv, 1);
else
clif->skill_poseffect(src, *skill_id, *skill_lv, *x, *y, *tick);
}
-bool skill_castend_pos2_unknown(struct block_list* src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) {
+static bool skill_castend_pos2_unknown(struct block_list *src, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
+{
ShowWarning("skill_castend_pos2: Unknown skill used:%d\n", *skill_id);
return true;
}
/// transforms 'target' skill unit into dissonance (if conditions are met)
-int skill_dance_overlap_sub(struct block_list *bl, va_list ap)
+static int skill_dance_overlap_sub(struct block_list *bl, va_list ap)
{
struct skill_unit *target = NULL;
struct skill_unit *src = va_arg(ap, struct skill_unit*);
@@ -11778,7 +11792,7 @@ int skill_dance_overlap_sub(struct block_list *bl, va_list ap)
//Does the song/dance overlapping -> dissonance check. [Skotlex]
//When flag is 0, this unit is about to be removed, cancel the dissonance effect
//When 1, this unit has been positioned, so start the cancel effect.
-int skill_dance_overlap(struct skill_unit* su, int flag)
+static int skill_dance_overlap(struct skill_unit *su, int flag)
{
if (!su || !su->group || !(su->group->state.song_dance&0x1))
return 0;
@@ -11801,7 +11815,7 @@ int skill_dance_overlap(struct skill_unit* su, int flag)
* @param flag 1 Revert
* @retval true success
**/
-bool skill_dance_switch(struct skill_unit* su, int flag)
+static bool skill_dance_switch(struct skill_unit *su, int flag)
{
static int prevflag = 1; // by default the backup is empty
static struct skill_unit_group backup;
@@ -11858,7 +11872,7 @@ bool skill_dance_switch(struct skill_unit* su, int flag)
* Initializes and sets a ground skill.
* flag&1 is used to determine when the skill 'morphs' (Warp portal becomes active, or Fire Pillar becomes active)
*------------------------------------------*/
-struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_id, uint16 skill_lv, int16 x, int16 y, int flag)
+static struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_id, uint16 skill_lv, int16 x, int16 y, int flag)
{
struct skill_unit_group *group;
int i,limit,val1=0,val2=0,val3=0;
@@ -12379,11 +12393,11 @@ struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_
return group;
}
-void skill_unitsetting1_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *val1, int *val2, int *val3)
+static void skill_unitsetting1_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *val1, int *val2, int *val3)
{
}
-void skill_unitsetting2_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *unit_flag, int *val1, int *val2, int *val3, struct skill_unit_group *group)
+static void skill_unitsetting2_unknown(struct block_list *src, uint16 *skill_id, uint16 *skill_lv, int16 *x, int16 *y, int *flag, int *unit_flag, int *val1, int *val2, int *val3, struct skill_unit_group *group)
{
nullpo_retv(group);
nullpo_retv(val2);
@@ -12395,7 +12409,7 @@ void skill_unitsetting2_unknown(struct block_list *src, uint16 *skill_id, uint16
/*==========================================
*
*------------------------------------------*/
-int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick)
+static int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick)
{
struct skill_unit_group *sg;
struct block_list *ss;
@@ -12650,14 +12664,14 @@ int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick
return skill_id;
}
-void skill_unit_onplace_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick)
+static void skill_unit_onplace_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick)
{
}
/*==========================================
*
*------------------------------------------*/
-int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int64 tick)
+static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int64 tick)
{
struct skill_unit_group *sg;
struct block_list *ss;
@@ -13455,14 +13469,14 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
return skill_id;
}
-void skill_unit_onplace_timer_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick)
+static void skill_unit_onplace_timer_unknown(struct skill_unit *src, struct block_list *bl, int64 *tick)
{
}
/*==========================================
* Triggered when a char steps out of a skill cell
*------------------------------------------*/
-int skill_unit_onout(struct skill_unit *src, struct block_list *bl, int64 tick)
+static int skill_unit_onout(struct skill_unit *src, struct block_list *bl, int64 tick)
{
struct skill_unit_group *sg;
struct status_change *sc;
@@ -13528,7 +13542,7 @@ int skill_unit_onout(struct skill_unit *src, struct block_list *bl, int64 tick)
/*==========================================
* Triggered when a char steps out of a skill group (entirely) [Skotlex]
*------------------------------------------*/
-int skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick)
+static int skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick)
{
struct status_change *sc;
struct status_change_entry *sce;
@@ -13643,7 +13657,7 @@ int skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick)
* flag&1: Invoke onplace function (otherwise invoke onout)
* flag&4: Invoke a onleft call (the unit might be scheduled for deletion)
*------------------------------------------*/
-int skill_unit_effect(struct block_list* bl, va_list ap)
+static int skill_unit_effect(struct block_list *bl, va_list ap)
{
struct skill_unit* su = va_arg(ap,struct skill_unit*);
struct skill_unit_group* group;
@@ -13687,7 +13701,7 @@ int skill_unit_effect(struct block_list* bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64 damage, int64 tick)
+static int skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64 damage, int64 tick)
{
struct skill_unit_group *sg;
@@ -13722,7 +13736,7 @@ int skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64 da
/*==========================================
*
*------------------------------------------*/
-int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
+static int skill_check_condition_char_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *tsd = NULL;
struct block_list *src = va_arg(ap, struct block_list *);
@@ -13808,7 +13822,7 @@ int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
/*==========================================
* Checks and stores partners for ensemble skills [Skotlex]
*------------------------------------------*/
-int skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16* skill_lv, int range, int cast_flag)
+static int skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16 *skill_lv, int range, int cast_flag)
{
static int c=0;
static int p_sd[2] = { 0, 0 };
@@ -13867,7 +13881,7 @@ int skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16*
/*==========================================
*
*------------------------------------------*/
-int skill_check_condition_mob_master_sub (struct block_list *bl, va_list ap)
+static int skill_check_condition_mob_master_sub(struct block_list *bl, va_list ap)
{
const struct mob_data *md = NULL;
int src_id = va_arg(ap, int);
@@ -13892,7 +13906,7 @@ int skill_check_condition_mob_master_sub (struct block_list *bl, va_list ap)
* Determines if a given skill should be made to consume ammo
* when used by the player. [Skotlex]
*------------------------------------------*/
-int skill_isammotype (struct map_session_data *sd, int skill_id)
+static int skill_isammotype(struct map_session_data *sd, int skill_id)
{
nullpo_ret(sd);
return (
@@ -13908,7 +13922,7 @@ int skill_isammotype (struct map_session_data *sd, int skill_id)
/**
* Checks whether a skill can be used in combos or not
**/
-bool skill_is_combo( int skill_id )
+static bool skill_is_combo(int skill_id)
{
switch( skill_id )
{
@@ -13934,7 +13948,7 @@ bool skill_is_combo( int skill_id )
return false;
}
-int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv)
+static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
struct status_data *st;
struct status_change *sc;
@@ -14004,7 +14018,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
}
if( pc_is90overweight(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_WEIGHTOVER,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_WEIGHTOVER, 0, 0);
return 0;
}
@@ -14137,15 +14151,28 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
// perform skill-specific checks (and actions)
switch( skill_id ) {
+ case MC_VENDING:
+ case ALL_BUYING_STORE:
+ if (map->list[sd->bl.m].flag.novending) {
+ clif->message(sd->fd, msg_sd(sd, 276)); // "You can't open a shop on this map"
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
+ return 0;
+ }
+ if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING)) {
+ clif->message(sd->fd, msg_sd(sd, 204)); // "You can't open a shop on this cell."
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
+ return 0;
+ }
+ break;
case SO_SPELLFIST:
if(sd->skill_id_old != MG_FIREBOLT && sd->skill_id_old != MG_COLDBOLT && sd->skill_id_old != MG_LIGHTNINGBOLT){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case SA_CASTCANCEL:
if(sd->ud.skilltimer == INVALID_TIMER) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14160,7 +14187,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if(sc && sc->data[SC_RAISINGDRAGON])
skill_lv += sc->data[SC_RAISINGDRAGON]->val1;
if(sd->spiritball >= skill_lv) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14181,7 +14208,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if (sc->data[SC_COMBOATTACK]) {
if( sc->data[SC_COMBOATTACK]->val1 == MO_TRIPLEATTACK )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_TRIPLEATTACK);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_TRIPLEATTACK, 0);
}
return 0;
case MO_COMBOFINISH:
@@ -14190,7 +14217,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_COMBOATTACK] ) {
if ( sc->data[SC_COMBOATTACK]->val1 == MO_CHAINCOMBO )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_CHAINCOMBO);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_CHAINCOMBO, 0);
}
return 0;
case CH_TIGERFIST:
@@ -14199,7 +14226,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_COMBOATTACK] ) {
if ( sc->data[SC_COMBOATTACK]->val1 == MO_COMBOFINISH )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_COMBOFINISH);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, MO_COMBOFINISH, 0);
}
return 0;
case CH_CHAINCRUSH:
@@ -14208,7 +14235,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_COMBOATTACK] ) {
if( sc->data[SC_COMBOATTACK]->val1 == CH_TIGERFIST )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, CH_TIGERFIST);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, CH_TIGERFIST, 0);
}
return 0;
case MO_EXTREMITYFIST:
@@ -14229,7 +14256,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
}
} else if (!unit->can_move(&sd->bl)) {
//Placed here as ST_MOVE_ENABLE should not apply if rooted or on a combo. [Skotlex]
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14237,7 +14264,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case TK_MISSION:
if ((sd->job & MAPID_UPPERMASK) != MAPID_TAEKWON) {
// Cannot be used by Non-Taekwon classes
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14249,7 +14276,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case TK_JUMPKICK:
if ((sd->job & MAPID_UPPERMASK) == MAPID_SOUL_LINKER) {
// Soul Linkers cannot use this skill
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14282,7 +14309,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
int time;
if(!(sc && sc->data[SC_DANCING]))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
time = 1000*(sc->data[SC_DANCING]->val3>>16);
@@ -14291,7 +14318,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
(sc->data[SC_DANCING]->val1>>16)) //Dance Skill LV
- time < skill->get_time2(skill_id,skill_lv))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
}
@@ -14300,7 +14327,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case PR_BENEDICTIO:
if (skill->check_pc_partner(sd, skill_id, &skill_lv, 1, 0) < 2)
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14318,7 +14345,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case CG_HERMODE:
if(!npc->check_areanpc(1,sd->bl.m,sd->bl.x,sd->bl.y,skill->get_splash(skill_id, skill_lv)))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14330,7 +14357,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
int x = sd->bl.x+(i%size-range);
int y = sd->bl.y+(i/size-range);
if (map->getcell(sd->bl.m, &sd->bl, x, y, CELL_CHKWALL)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
}
@@ -14341,7 +14368,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
int64 exp;
if (((exp = pc->nextbaseexp(sd)) > 0 && get_percentage64(sd->status.base_exp, exp) < 1) ||
((exp = pc->nextjobexp(sd)) > 0 && get_percentage64(sd->status.job_exp, exp) < 1)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); //Not enough exp.
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); //Not enough exp.
return 0;
}
break;
@@ -14350,7 +14377,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case AM_TWILIGHT3:
if (!party->skill_check(sd, sd->status.party_id, skill_id, skill_lv))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14361,7 +14388,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
break;
if (sd->bl.m == sd->feel_map[skill_id-SG_SUN_WARM].m)
break;
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
break;
case SG_SUN_COMFORT:
@@ -14372,7 +14399,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if (sd->bl.m == sd->feel_map[skill_id-SG_SUN_COMFORT].m &&
(battle_config.allow_skill_without_day || pc->sg_info[skill_id-SG_SUN_COMFORT].day_func()))
break;
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
case SG_FUSION:
if (sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_STAR)
@@ -14381,7 +14408,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
//Only invoke on skill begin cast (instant cast skill). [Kevin]
if( require.sp > 0 ) {
if (st->sp < (unsigned int)require.sp)
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SP_INSUFFICIENT,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
else
status_zap(&sd->bl, 0, require.sp);
}
@@ -14390,7 +14417,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case GD_REGENERATION:
case GD_RESTORE:
if (!map_flag_gvg2(sd->bl.m)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
@@ -14402,7 +14429,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case GS_GLITTERING:
if(sd->spiritball >= 10) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14413,13 +14440,13 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
#else
if (st->hp < 2) {
#endif
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case NJ_BUNSINJYUTSU:
if (!(sc && sc->data[SC_NJ_NEN])) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14427,7 +14454,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case NJ_ZENYNAGE:
case KO_MUCHANAGE:
if(sd->status.zeny < require.zeny) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_MONEY,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_MONEY, 0, 0);
return 0;
}
break;
@@ -14437,14 +14464,14 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
break;
case AM_CALLHOMUN: //Can't summon if a hom is already out
if (sd->status.hom_id && sd->hd && !sd->hd->homunculus.vaporize) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case AM_REST: //Can't vapo homun if you don't have an active homun or it's hp is < 80%
if (!homun_alive(sd->hd) || sd->hd->battle_status.hp < (sd->hd->battle_status.max_hp*80/100))
{
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14458,7 +14485,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if (sd->status.inventory[i].nameid == ITEMID_ANSILA)
count += sd->status.inventory[i].amount;
if( count >= 3 ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_ANCILLA_NUMOVER, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_ANCILLA_NUMOVER, 0, 0);
return 0;
}
}
@@ -14478,8 +14505,8 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
&& ((idx = pc->search_inventory(sd,require.itemid[0])) == INDEX_NOT_FOUND
|| sd->status.inventory[idx].amount < require.amount[0])
) {
- //clif->skill_fail(sd,skill_id,USESKILL_FAIL_NEED_ITEM,require.amount[0],require.itemid[0]);
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ //clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_ITEM, require.amount[0], 0, require.itemid[0]);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14499,7 +14526,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
switch(skill_id){
case WL_TETRAVORTEX:
if( i < 4 ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
@@ -14508,13 +14535,13 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[j] )
i++;
if( i == 0 ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SUMMON_NONE,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON_NONE, 0, 0);
return 0;
}
break;
default:
if( i == 5 ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SUMMON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0, 0);
return 0;
}
}
@@ -14525,14 +14552,14 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
**/
case GC_HALLUCINATIONWALK:
if( sc && (sc->data[SC_HALLUCINATIONWALK] || sc->data[SC_HALLUCINATIONWALK_POSTDELAY]) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case GC_COUNTERSLASH:
case GC_WEAPONCRUSH:
if( !(sc && sc->data[SC_COMBOATTACK] && sc->data[SC_COMBOATTACK]->val1 == GC_WEAPONBLOCKING) ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0, 0);
return 0;
}
break;
@@ -14541,25 +14568,25 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
**/
case RA_WUGMASTERY:
if( pc_isfalcon(sd) || pc_isridingwug(sd) || sd->sc.data[SC__GROOMY] ) {
- clif->skill_fail(sd,skill_id,sd->sc.data[SC__GROOMY]?USESKILL_FAIL_MANUAL_NOTIFY:USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, sd->sc.data[SC__GROOMY] ? USESKILL_FAIL_MANUAL_NOTIFY : USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
case RA_WUGSTRIKE:
if( !pc_iswug(sd) && !pc_isridingwug(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
case RA_WUGRIDER:
if( pc_isfalcon(sd) || ( !pc_isridingwug(sd) && !pc_iswug(sd) ) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
case RA_WUGDASH:
if(!pc_isridingwug(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CONDITION,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
@@ -14568,13 +14595,13 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
**/
case LG_BANDING:
if( sc && sc->data[SC_INSPIRATION] ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case LG_PRESTIGE:
if( sc && (sc->data[SC_BANDING] || sc->data[SC_INSPIRATION]) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14583,7 +14610,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_INSPIRATION] )
return 1; // Don't check for partner.
if( !(sc && sc->data[SC_BANDING]) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL, 0, 0);
return 0;
}
if( sc->data[SC_BANDING] &&
@@ -14594,12 +14621,12 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sc && sc->data[SC_COMBOATTACK] ) {
if( sc->data[SC_COMBOATTACK]->val1 == SR_DRAGONCOMBO )
break;
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, SR_DRAGONCOMBO);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_COMBOSKILL, SR_DRAGONCOMBO, 0);
}
return 0;
case SR_CRESCENTELBOW:
if( sc && sc->data[SC_CRESCENTELBOW] ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_DUPLICATE, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_DUPLICATE, 0, 0);
return 0;
}
break;
@@ -14616,7 +14643,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if( sd->spiritball > 0 )
sd->spiritball_old = require.spiritball = sd->spiritball;
else {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14627,7 +14654,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case SC_MANHOLE:
case SC_DIMENSIONDOOR:
if( sc && sc->data[SC_MAGNETICFIELD] ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14635,7 +14662,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
int count;
count = skill->check_pc_partner(sd, skill_id, &skill_lv, skill->get_splash(skill_id,skill_lv), 0);
if( count < 1 ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_NEED_HELPER,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_HELPER, 0, 0);
return 0;
} else
require.sp -= require.sp * 20 * count / 100; // -20% each W/M in the party.
@@ -14645,7 +14672,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if (sd->equip_index[EQI_HAND_R] < 0
|| !itemid_is_pilebunker(sd->status.inventory[sd->equip_index[EQI_HAND_R]].nameid)
) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
return 0;
}
break;
@@ -14653,7 +14680,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if (( sd->equip_index[EQI_ACC_L] >= 0 && sd->status.inventory[sd->equip_index[EQI_ACC_L]].nameid == ITEMID_HOVERING_BOOSTER ) ||
( sd->equip_index[EQI_ACC_R] >= 0 && sd->status.inventory[sd->equip_index[EQI_ACC_R]].nameid == ITEMID_HOVERING_BOOSTER ));
else {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14661,25 +14688,25 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case SO_ELECTRICWALK: // Can't be casted until you've walked all cells.
if( sc && sc->data[SC_PROPERTYWALK] &&
sc->data[SC_PROPERTYWALK]->val3 < skill->get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case SO_EL_CONTROL:
if( !sd->status.ele_id || !sd->ed ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_EL_SUMMON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_EL_SUMMON, 0, 0);
return 0;
}
break;
case RETURN_TO_ELDICASTES:
if( pc_ismadogear(sd) ) { //Cannot be used if Mado is equipped.
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case CR_REFLECTSHIELD:
if( sc && sc->data[SC_KYOMU] && rnd()%100 < 5 * sc->data[SC_KYOMU]->val1 ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14688,14 +14715,14 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case KO_KAZEHU_SEIRAN:
case KO_DOHU_KOUKAI:
if (sd->charm_type == skill->get_ele(skill_id, skill_lv) && sd->charm_count >= MAX_SPIRITCHARM) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0, 0);
return 0;
}
break;
case KO_KAIHOU:
case KO_ZENKAI:
if (sd->charm_type == CHARM_TYPE_NONE || sd->charm_count <= 0) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SUMMON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0, 0);
return 0;
}
break;
@@ -14710,67 +14737,67 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
switch(require.state) {
case ST_HIDING:
if(!(sc && sc->option&OPTION_HIDE)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_CLOAKING:
if(!pc_iscloaking(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_HIDDEN:
if(!pc_ishiding(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_RIDING:
if (!pc_isridingpeco(sd) && !pc_isridingdragon(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_FALCON:
if(!pc_isfalcon(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_CARTBOOST:
if(!(sc && sc->data[SC_CARTBOOST])) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case ST_CART:
if(!pc_iscarton(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CART,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CART, 0, 0);
return 0;
}
break;
case ST_SHIELD:
if (!sd->has_shield) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_SIGHT:
if(!(sc && sc->data[SC_SIGHT])) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_EXPLOSIONSPIRITS:
if(!(sc && sc->data[SC_EXPLOSIONSPIRITS])) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_EXPLOSIONSPIRITS,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_EXPLOSIONSPIRITS, 0, 0);
return 0;
}
break;
case ST_RECOV_WEIGHT_RATE:
if(battle_config.natural_heal_weight_rate <= 100 && sd->weight*100/sd->max_weight >= (unsigned int)battle_config.natural_heal_weight_rate) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14779,7 +14806,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
sd->ud.canmove_tick = timer->gettick(); //When using a combo, cancel the can't move delay to enable the skill. [Skotlex]
if (!unit->can_move(&sd->bl)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14788,65 +14815,65 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
break;
if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKWATER))
break;
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
case ST_RIDINGDRAGON:
if( !pc_isridingdragon(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_DRAGON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_DRAGON, 0, 0);
return 0;
}
break;
case ST_WUG:
if( !pc_iswug(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_RIDINGWUG:
if( !pc_isridingwug(sd) ){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
case ST_MADO:
if( !pc_ismadogear(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_MADOGEAR,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_MADOGEAR, 0, 0);
return 0;
}
break;
case ST_ELEMENTALSPIRIT:
if(!sd->ed) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_EL_SUMMON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_EL_SUMMON, 0, 0);
return 0;
}
break;
case ST_POISONINGWEAPON:
if (!(sc && sc->data[SC_POISONINGWEAPON])) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_POISONINGWEAPON, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_POISONINGWEAPON, 0, 0);
return 0;
}
break;
case ST_ROLLINGCUTTER:
if (!(sc && sc->data[SC_ROLLINGCUTTER])) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CONDITION, 0, 0);
return 0;
}
break;
case ST_MH_FIGHTING:
if (!(sc && sc->data[SC_STYLE_CHANGE] && sc->data[SC_STYLE_CHANGE]->val2 == MH_MD_FIGHTING)){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case ST_MH_GRAPPLING:
if (!(sc && sc->data[SC_STYLE_CHANGE] && sc->data[SC_STYLE_CHANGE]->val2 == MH_MD_GRAPPLING)){
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
FALLTHROUGH
case ST_PECO:
if (!pc_isridingpeco(sd)) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
break;
@@ -14855,27 +14882,27 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
if(require.mhp > 0 && get_percentage(st->hp, st->max_hp) > require.mhp) {
//mhp is the max-hp-requirement, that is,
//you must have this % or less of HP to cast it.
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_HP_INSUFFICIENT,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
return 0;
}
if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
return 0;
}
if( require.sp > 0 && st->sp < (unsigned int)require.sp) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SP_INSUFFICIENT,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
return 0;
}
if( require.zeny > 0 && sd->status.zeny < require.zeny ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_MONEY,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_MONEY, 0, 0);
return 0;
}
if( require.spiritball > 0 && sd->spiritball < require.spiritball) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_SPIRITS,require.spiritball);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SPIRITS, require.spiritball, 0);
return 0;
}
@@ -14890,27 +14917,27 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
return 1;
}
-int skill_check_condition_castbegin_off_unknown(struct status_change *sc, uint16 *skill_id)
+static int skill_check_condition_castbegin_off_unknown(struct status_change *sc, uint16 *skill_id)
{
return -1;
}
-int skill_check_condition_castbegin_mount_unknown(struct status_change *sc, uint16 *skill_id)
+static int skill_check_condition_castbegin_mount_unknown(struct status_change *sc, uint16 *skill_id)
{
return 0;
}
-int skill_check_condition_castbegin_madogear_unknown(struct status_change *sc, uint16 *skill_id)
+static int skill_check_condition_castbegin_madogear_unknown(struct status_change *sc, uint16 *skill_id)
{
return 0;
}
-int skill_check_condition_castbegin_unknown(struct status_change *sc, uint16 *skill_id)
+static int skill_check_condition_castbegin_unknown(struct status_change *sc, uint16 *skill_id)
{
return -1;
}
-int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv)
+static int skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
struct skill_condition require;
struct status_data *st;
@@ -14957,7 +14984,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
if( sd->skillitem == skill_id )
return 1;
if( pc_is90overweight(sd) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_WEIGHTOVER,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_WEIGHTOVER, 0, 0);
return 0;
}
@@ -14991,7 +15018,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
|| (skill_id==AM_CANNIBALIZE && c != i && battle_config.summon_flora&2)
) {
//Fails when: exceed max limit. There are other plant types already out.
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
}
@@ -15011,7 +15038,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
map->foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, MOBID_SILVERSNIPER, skill_id, &c);
}
if( c >= maxcount ) {
- clif->skill_fail(sd , skill_id, USESKILL_FAIL_SUMMON, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SUMMON, 0, 0);
return 0;
}
}
@@ -15021,7 +15048,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
int c = 0;
i = map->foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, MOBID_KO_KAGE, skill_id, &c);
if( c >= skill->get_maxcount(skill_id,skill_lv) || c != i) {
- clif->skill_fail(sd , skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
}
@@ -15037,19 +15064,19 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
require = skill->get_requirement(sd,skill_id,skill_lv);
if( require.hp > 0 && st->hp <= (unsigned int)require.hp) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_HP_INSUFFICIENT,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
return 0;
}
if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
return 0;
}
if( require.ammo ) { //Skill requires stuff equipped in the arrow slot.
if((i=sd->equip_index[EQI_AMMO]) < 0 || !sd->inventory_data[i] ) {
if( require.ammo&1<<8 )
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_CANONBALL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_CANONBALL, 0, 0);
else
clif->arrow_fail(sd,0);
return 0;
@@ -15065,7 +15092,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
if (!(require.ammo&1<<sd->inventory_data[i]->subtype)) { //Ammo type check. Send the "wrong weapon type" message
//which is the closest we have to wrong ammo type. [Skotlex]
clif->arrow_fail(sd,0); //Haplo suggested we just send the equip-arrows message instead. [Skotlex]
- //clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
+ //clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
return 0;
}
}
@@ -15104,11 +15131,11 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
cause = USESKILL_FAIL_NEED_EQUIPMENT;
/* Fall through */
default:
- clif->skill_fail(sd, skill_id, cause, max(1,require.amount[i])|(require.itemid[i] << 16));
+ clif->skill_fail(sd, skill_id, cause, max(1, require.amount[i]), require.itemid[i]);
return 0;
}
}
- clif->skill_fail(sd, skill_id, cause, 0);
+ clif->skill_fail(sd, skill_id, cause, 0, 0);
return 0;
}
}
@@ -15116,14 +15143,14 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
return 1;
}
-bool skill_check_condition_castend_unknown(struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv)
+static bool skill_check_condition_castend_unknown(struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv)
{
return false;
}
// type&2: consume items (after skill was used)
// type&1: consume the others (before skill was used)
-int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type)
+static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type)
{
struct skill_condition req;
@@ -15205,7 +15232,7 @@ int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint
return 1;
}
-struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv)
+static struct skill_condition skill_get_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
struct skill_condition req;
struct status_data *st;
@@ -15536,24 +15563,24 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
return req;
}
-bool skill_get_requirement_off_unknown(struct status_change *sc, uint16 *skill_id)
+static bool skill_get_requirement_off_unknown(struct status_change *sc, uint16 *skill_id)
{
return false;
}
-bool skill_get_requirement_item_unknown(struct status_change *sc, struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv, uint16 *idx, int *i)
+static bool skill_get_requirement_item_unknown(struct status_change *sc, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv, uint16 *idx, int *i)
{
return false;
}
-void skill_get_requirement_unknown(struct status_change *sc, struct map_session_data* sd, uint16 *skill_id, uint16 *skill_lv, struct skill_condition *req)
+static void skill_get_requirement_unknown(struct status_change *sc, struct map_session_data *sd, uint16 *skill_id, uint16 *skill_lv, struct skill_condition *req)
{
}
/*==========================================
* Does cast-time reductions based on dex, item bonuses and config setting
*------------------------------------------*/
-int skill_castfix (struct block_list *bl, uint16 skill_id, uint16 skill_lv)
+static int skill_castfix(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
{
int time = skill->get_cast(skill_id, skill_lv);
@@ -15604,7 +15631,7 @@ int skill_castfix (struct block_list *bl, uint16 skill_id, uint16 skill_lv)
/*==========================================
* Does cast-time reductions based on sc data.
*------------------------------------------*/
-int skill_castfix_sc (struct block_list *bl, int time)
+static int skill_castfix_sc(struct block_list *bl, int time)
{
struct status_change *sc = status->get_sc(bl);
@@ -15640,7 +15667,7 @@ int skill_castfix_sc (struct block_list *bl, int time)
return time;
}
-int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv)
+static int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv)
{
#ifdef RENEWAL_CAST
struct status_change *sc = status->get_sc(bl);
@@ -15783,7 +15810,7 @@ int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16
/*==========================================
* Does delay reductions based on dex/agi, sc data, item bonuses, ...
*------------------------------------------*/
-int skill_delay_fix (struct block_list *bl, uint16 skill_id, uint16 skill_lv)
+static int skill_delay_fix(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
{
int delaynodex = skill->get_delaynodex(skill_id, skill_lv);
int time = skill->get_delay(skill_id, skill_lv);
@@ -15883,7 +15910,7 @@ struct square {
int val2[5];
};
-void skill_brandishspear_first (struct square *tc, uint8 dir, int16 x, int16 y)
+static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y)
{
nullpo_retv(tc);
@@ -15979,7 +16006,7 @@ void skill_brandishspear_first (struct square *tc, uint8 dir, int16 x, int16 y)
}
-void skill_brandishspear_dir (struct square* tc, uint8 dir, int are)
+static void skill_brandishspear_dir(struct square *tc, uint8 dir, int are)
{
int c;
nullpo_retv(tc);
@@ -15998,7 +16025,7 @@ void skill_brandishspear_dir (struct square* tc, uint8 dir, int are)
}
}
-void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
+static void skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
int c,n=4;
uint8 dir;
@@ -16053,7 +16080,7 @@ void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 s
/*==========================================
* Weapon Repair [Celest/DracoRPG]
*------------------------------------------*/
-void skill_repairweapon (struct map_session_data *sd, int idx)
+static void skill_repairweapon(struct map_session_data *sd, int idx)
{
int material;
int materials[4] = {
@@ -16070,7 +16097,7 @@ void skill_repairweapon (struct map_session_data *sd, int idx)
if ( !( target_sd = map->id2sd(sd->menuskill_val) ) ) //Failed....
return;
- if( idx == 0xFFFF ) // No item selected ('Cancel' clicked)
+ if (idx == 0xFFFF || idx == -1) // No item selected ('Cancel' clicked)
return;
if( idx < 0 || idx >= MAX_INVENTORY )
return; //Invalid index??
@@ -16089,7 +16116,7 @@ void skill_repairweapon (struct map_session_data *sd, int idx)
else
material = materials[2]; // Armors consume 1 Steel
if (pc->search_inventory(sd,material) == INDEX_NOT_FOUND) {
- clif->skill_fail(sd,sd->menuskill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->menuskill_id, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
@@ -16111,7 +16138,7 @@ void skill_repairweapon (struct map_session_data *sd, int idx)
/*==========================================
* Item Appraisal
*------------------------------------------*/
-void skill_identify (struct map_session_data *sd, int idx)
+static void skill_identify(struct map_session_data *sd, int idx)
{
int flag=1;
@@ -16129,7 +16156,7 @@ void skill_identify (struct map_session_data *sd, int idx)
/*==========================================
* Weapon Refine [Celest]
*------------------------------------------*/
-void skill_weaponrefine (struct map_session_data *sd, int idx)
+static void skill_weaponrefine(struct map_session_data *sd, int idx)
{
nullpo_retv(sd);
@@ -16149,7 +16176,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx)
int i = 0, per;
if( ditem->flag.no_refine ) {
// if the item isn't refinable
- clif->skill_fail(sd,sd->menuskill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, sd->menuskill_id, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
if( item->refine >= sd->menuskill_val || item->refine >= 10 ){
@@ -16218,7 +16245,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx)
/*==========================================
*
*------------------------------------------*/
-int skill_autospell (struct map_session_data *sd, uint16 skill_id)
+static int skill_autospell(struct map_session_data *sd, uint16 skill_id)
{
uint16 skill_lv;
int maxlv=1,lv;
@@ -16261,7 +16288,7 @@ int skill_autospell (struct map_session_data *sd, uint16 skill_id)
/*==========================================
* Sitting skills functions.
*------------------------------------------*/
-int skill_sit_count(struct block_list *bl, va_list ap)
+static int skill_sit_count(struct block_list *bl, va_list ap)
{
int type = va_arg(ap, int);
struct map_session_data *sd = NULL;
@@ -16282,7 +16309,7 @@ int skill_sit_count(struct block_list *bl, va_list ap)
return 0;
}
-int skill_sit_in(struct block_list *bl, va_list ap)
+static int skill_sit_in(struct block_list *bl, va_list ap)
{
int type = va_arg(ap, int);
struct map_session_data *sd = NULL;
@@ -16306,7 +16333,7 @@ int skill_sit_in(struct block_list *bl, va_list ap)
return 0;
}
-int skill_sit_out(struct block_list *bl, va_list ap)
+static int skill_sit_out(struct block_list *bl, va_list ap)
{
int type = va_arg(ap, int);
struct map_session_data *sd = NULL;
@@ -16325,7 +16352,7 @@ int skill_sit_out(struct block_list *bl, va_list ap)
return 0;
}
-int skill_sit (struct map_session_data *sd, int type)
+static int skill_sit(struct map_session_data *sd, int type)
{
int flag = 0;
int range = 0, lv;
@@ -16365,7 +16392,7 @@ int skill_sit (struct map_session_data *sd, int type)
/*==========================================
*
*------------------------------------------*/
-int skill_frostjoke_scream(struct block_list *bl, va_list ap)
+static int skill_frostjoke_scream(struct block_list *bl, va_list ap)
{
struct block_list *src;
uint16 skill_id,skill_lv;
@@ -16398,7 +16425,7 @@ int skill_frostjoke_scream(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-void skill_unitsetmapcell (struct skill_unit *src, uint16 skill_id, uint16 skill_lv, cell_t cell, bool flag)
+static void skill_unitsetmapcell(struct skill_unit *src, uint16 skill_id, uint16 skill_lv, cell_t cell, bool flag)
{
int range = skill->get_unit_range(skill_id,skill_lv);
int x,y;
@@ -16412,7 +16439,7 @@ void skill_unitsetmapcell (struct skill_unit *src, uint16 skill_id, uint16 skill
/*==========================================
*
*------------------------------------------*/
-int skill_attack_area(struct block_list *bl, va_list ap)
+static int skill_attack_area(struct block_list *bl, va_list ap)
{
struct block_list *src,*dsrc;
int atk_type,skill_id,skill_lv,flag,type;
@@ -16455,7 +16482,7 @@ int skill_attack_area(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_clear_group (struct block_list *bl, int flag)
+static int skill_clear_group(struct block_list *bl, int flag)
{
struct unit_data *ud = unit->bl2ud(bl);
struct skill_unit_group *group[MAX_SKILLUNITGROUP];
@@ -16499,7 +16526,7 @@ int skill_clear_group (struct block_list *bl, int flag)
/*==========================================
* Returns the first element field found [Skotlex]
*------------------------------------------*/
-struct skill_unit_group *skill_locate_element_field(struct block_list *bl)
+static struct skill_unit_group *skill_locate_element_field(struct block_list *bl)
{
struct unit_data *ud = unit->bl2ud(bl);
int i;
@@ -16522,7 +16549,7 @@ struct skill_unit_group *skill_locate_element_field(struct block_list *bl)
}
// for graffiti cleaner [Valaris]
-int skill_graffitiremover(struct block_list *bl, va_list ap)
+static int skill_graffitiremover(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
@@ -16538,7 +16565,7 @@ int skill_graffitiremover(struct block_list *bl, va_list ap)
return 0;
}
-int skill_greed(struct block_list *bl, va_list ap)
+static int skill_greed(struct block_list *bl, va_list ap)
{
struct block_list *src = va_arg(ap, struct block_list *);
@@ -16555,7 +16582,7 @@ int skill_greed(struct block_list *bl, va_list ap)
}
//For Ranger's Detonator [Jobbie/3CeAM]
-int skill_detonator(struct block_list *bl, va_list ap)
+static int skill_detonator(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
struct block_list *src = va_arg(ap,struct block_list *);
@@ -16606,7 +16633,7 @@ int skill_detonator(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_cell_overlap(struct block_list *bl, va_list ap)
+static int skill_cell_overlap(struct block_list *bl, va_list ap)
{
uint16 skill_id;
int *alive;
@@ -16704,7 +16731,7 @@ int skill_cell_overlap(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_chastle_mob_changetarget(struct block_list *bl, va_list ap)
+static int skill_chastle_mob_changetarget(struct block_list *bl, va_list ap)
{
struct unit_data *ud = unit->bl2ud(bl);
struct block_list *from_bl = va_arg(ap, struct block_list *);
@@ -16728,7 +16755,7 @@ int skill_chastle_mob_changetarget(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_trap_splash(struct block_list *bl, va_list ap)
+static int skill_trap_splash(struct block_list *bl, va_list ap)
{
struct block_list *src = va_arg(ap, struct block_list *);
int64 tick = va_arg(ap, int64);
@@ -16838,7 +16865,7 @@ int skill_trap_splash(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_enchant_elemental_end(struct block_list *bl, int type)
+static int skill_enchant_elemental_end(struct block_list *bl, int type)
{
struct status_change *sc;
const enum sc_type scs[] = { SC_ENCHANTPOISON, SC_ASPERSIO, SC_PROPERTYFIRE, SC_PROPERTYWATER, SC_PROPERTYWIND, SC_PROPERTYGROUND, SC_PROPERTYDARK, SC_PROPERTYTELEKINESIS, SC_ENCHANTARMS };
@@ -16855,7 +16882,7 @@ int skill_enchant_elemental_end(struct block_list *bl, int type)
return 0;
}
-bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce)
+static bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce)
{
bool wall = true;
@@ -16894,7 +16921,7 @@ bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce
/**
* Verifies if an user can use SC_CLOAKING
**/
-bool skill_can_cloak(struct map_session_data *sd)
+static bool skill_can_cloak(struct map_session_data *sd)
{
nullpo_retr(false, sd);
@@ -16912,7 +16939,7 @@ bool skill_can_cloak(struct map_session_data *sd)
* Verifies if an user can still be cloaked (AS_CLOAKING)
* Is called via map->foreachinrange when any kind of wall disapears
**/
-int skill_check_cloaking_end(struct block_list *bl, va_list ap)
+static int skill_check_cloaking_end(struct block_list *bl, va_list ap)
{
struct map_session_data *sd = BL_CAST(BL_PC, bl);
@@ -16922,7 +16949,7 @@ int skill_check_cloaking_end(struct block_list *bl, va_list ap)
return 0;
}
-bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *sce)
+static bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *sce)
{
bool wall = true;
@@ -16950,7 +16977,7 @@ bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *s
return wall;
}
-bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit)
+static bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit)
{
struct status_change *sc;
@@ -16989,7 +17016,7 @@ bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit)
/*==========================================
*
*------------------------------------------*/
-struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int x, int y, int val1, int val2)
+static struct skill_unit *skill_initunit(struct skill_unit_group *group, int idx, int x, int y, int val1, int val2)
{
struct skill_unit *su;
@@ -17042,7 +17069,7 @@ struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int
/*==========================================
*
*------------------------------------------*/
-int skill_delunit (struct skill_unit* su)
+static int skill_delunit(struct skill_unit *su)
{
struct skill_unit_group *group;
@@ -17118,14 +17145,14 @@ int skill_delunit (struct skill_unit* su)
*
*------------------------------------------*/
/// Returns the target skill_unit_group or NULL if not found.
-struct skill_unit_group* skill_id2group(int group_id)
+static struct skill_unit_group *skill_id2group(int group_id)
{
return (struct skill_unit_group*)idb_get(skill->group_db, group_id);
}
/// Returns a new group_id that isn't being used in skill->group_db.
/// Fatal error if nothing is available.
-int skill_get_new_group_id(void)
+static int skill_get_new_group_id(void)
{
if (skill->unit_group_newid > MAX_SKILL_ID && skill->id2group(skill->unit_group_newid) == NULL)
return skill->unit_group_newid++;// available
@@ -17145,7 +17172,7 @@ int skill_get_new_group_id(void)
}
}
-struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval)
+static struct skill_unit_group *skill_initunitgroup(struct block_list *src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval)
{
struct unit_data* ud = unit->bl2ud( src );
struct skill_unit_group* group;
@@ -17208,7 +17235,7 @@ struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count,
/*==========================================
*
*------------------------------------------*/
-int skill_delunitgroup(struct skill_unit_group *group, const char *file, int line, const char *func)
+static int skill_delunitgroup(struct skill_unit_group *group, const char *file, int line, const char *func)
{
struct block_list* src;
struct unit_data *ud;
@@ -17344,7 +17371,7 @@ int skill_delunitgroup(struct skill_unit_group *group, const char *file, int lin
/*==========================================
*
*------------------------------------------*/
-int skill_clear_unitgroup (struct block_list *src)
+static int skill_clear_unitgroup(struct block_list *src)
{
struct unit_data *ud = unit->bl2ud(src);
@@ -17359,7 +17386,7 @@ int skill_clear_unitgroup (struct block_list *src)
/*==========================================
*
*------------------------------------------*/
-struct skill_unit_group_tickset *skill_unitgrouptickset_search(struct block_list *bl, struct skill_unit_group *group, int64 tick)
+static struct skill_unit_group_tickset *skill_unitgrouptickset_search(struct block_list *bl, struct skill_unit_group *group, int64 tick)
{
int i,j=-1,s,id;
struct unit_data *ud;
@@ -17401,7 +17428,7 @@ struct skill_unit_group_tickset *skill_unitgrouptickset_search(struct block_list
/*==========================================
*
*------------------------------------------*/
-int skill_unit_timer_sub_onplace(struct block_list* bl, va_list ap)
+static int skill_unit_timer_sub_onplace(struct block_list *bl, va_list ap)
{
struct skill_unit* su;
struct skill_unit_group* group;
@@ -17431,7 +17458,7 @@ int skill_unit_timer_sub_onplace(struct block_list* bl, va_list ap)
/**
* @see DBApply
*/
-int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap)
+static int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct skill_unit* su;
struct skill_unit_group* group;
@@ -17651,7 +17678,7 @@ int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap)
/*==========================================
* Executes on all skill units every SKILLUNITTIMER_INTERVAL milliseconds.
*------------------------------------------*/
-int skill_unit_timer(int tid, int64 tick, int id, intptr_t data)
+static int skill_unit_timer(int tid, int64 tick, int id, intptr_t data)
{
map->freeblock_lock();
@@ -17665,7 +17692,7 @@ int skill_unit_timer(int tid, int64 tick, int id, intptr_t data)
/*==========================================
*
*------------------------------------------*/
-int skill_unit_move_sub(struct block_list* bl, va_list ap)
+static int skill_unit_move_sub(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
struct skill_unit_group *group = NULL;
@@ -17765,7 +17792,7 @@ int skill_unit_move_sub(struct block_list* bl, va_list ap)
* units to figure out when they have left a group.
* flag&4: Force a onleft event (triggered when the bl is killed, for example)
*------------------------------------------*/
-int skill_unit_move(struct block_list *bl, int64 tick, int flag)
+static int skill_unit_move(struct block_list *bl, int64 tick, int flag)
{
nullpo_ret(bl);
@@ -17791,7 +17818,7 @@ int skill_unit_move(struct block_list *bl, int64 tick, int flag)
/*==========================================
*
*------------------------------------------*/
-int skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16 dx, int16 dy)
+static int skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16 dx, int16 dy)
{
int i,j;
int64 tick = timer->gettick();
@@ -17881,7 +17908,7 @@ int skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16 dx
/*==========================================
*
*------------------------------------------*/
-int skill_can_produce_mix (struct map_session_data *sd, int nameid, int trigger, int qty)
+static int skill_can_produce_mix(struct map_session_data *sd, int nameid, int trigger, int qty)
{
int i,j;
@@ -17944,7 +17971,7 @@ int skill_can_produce_mix (struct map_session_data *sd, int nameid, int trigger,
/*==========================================
*
*------------------------------------------*/
-int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid, int slot1, int slot2, int slot3, int qty)
+static int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid, int slot1, int slot2, int slot3, int qty)
{
int slot[3];
int i,sc,ele,idx,equip,wlv,make_per = 0,flag = 0,skill_lv = 0;
@@ -18563,7 +18590,7 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid,
return 0;
}
-int skill_arrow_create (struct map_session_data *sd, int nameid)
+static int skill_arrow_create(struct map_session_data *sd, int nameid)
{
int i,j,flag,index=-1;
struct item tmp_item;
@@ -18605,13 +18632,13 @@ int skill_arrow_create (struct map_session_data *sd, int nameid)
return 0;
}
-int skill_poisoningweapon(struct map_session_data *sd, int nameid)
+static int skill_poisoningweapon(struct map_session_data *sd, int nameid)
{
sc_type type;
int chance, i;
nullpo_ret(sd);
if (nameid <= 0 || (i = pc->search_inventory(sd,nameid)) == INDEX_NOT_FOUND || pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME)) {
- clif->skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, GC_POISONINGWEAPON, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
switch( nameid )
@@ -18625,7 +18652,7 @@ int skill_poisoningweapon(struct map_session_data *sd, int nameid)
case ITEMID_POISON_LAUGHING: type = SC_MAGICMUSHROOM; break;
case ITEMID_POISON_OBLIVION: type = SC_OBLIVIONCURSE; break;
default:
- clif->skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, GC_POISONINGWEAPON, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -18637,7 +18664,7 @@ int skill_poisoningweapon(struct map_session_data *sd, int nameid)
return 0;
}
-void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id)
+static void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id)
{
struct status_change *sc = status->get_sc(bl);
@@ -18662,7 +18689,7 @@ void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id)
}
}
-int skill_magicdecoy(struct map_session_data *sd, int nameid)
+static int skill_magicdecoy(struct map_session_data *sd, int nameid)
{
int x, y, i, class_ = 0, skill_id;
struct mob_data *md;
@@ -18673,7 +18700,7 @@ int skill_magicdecoy(struct map_session_data *sd, int nameid)
|| (i = pc->search_inventory(sd, nameid)) == INDEX_NOT_FOUND
|| pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME) != 0
) {
- clif->skill_fail(sd,NC_MAGICDECOY,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, NC_MAGICDECOY, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -18714,7 +18741,7 @@ int skill_magicdecoy(struct map_session_data *sd, int nameid)
}
// Warlock Spellbooks. [LimitLine/3CeAM]
-int skill_spellbook(struct map_session_data *sd, int nameid)
+static int skill_spellbook(struct map_session_data *sd, int nameid)
{
int i, max_preserve, skill_id, point;
struct status_change *sc;
@@ -18727,7 +18754,7 @@ int skill_spellbook(struct map_session_data *sd, int nameid)
for(i=SC_SPELLBOOK1; i <= SC_SPELLBOOK7; i++) if( sc && !sc->data[i] ) break;
if( i > SC_SPELLBOOK7 )
{
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_READING, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_READING, 0, 0);
return 0;
}
@@ -18737,7 +18764,7 @@ int skill_spellbook(struct map_session_data *sd, int nameid)
if( !pc->checkskill(sd, (skill_id = skill->dbs->spellbook_db[i].skill_id)) )
{ // User don't know the skill
sc_start(&sd->bl, &sd->bl, SC_SLEEP, 100, 1, skill->get_time(WL_READING_SB, pc->checkskill(sd,WL_READING_SB)));
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP, 0, 0);
return 0;
}
@@ -18746,7 +18773,7 @@ int skill_spellbook(struct map_session_data *sd, int nameid)
if( sc && sc->data[SC_READING_SB] ) {
if( (sc->data[SC_READING_SB]->val2 + point) > max_preserve ) {
- clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT, 0, 0);
return 0;
}
for(i = SC_SPELLBOOK7; i >= SC_SPELLBOOK1; i--){ // This is how official saves spellbook. [malufett]
@@ -18764,7 +18791,7 @@ int skill_spellbook(struct map_session_data *sd, int nameid)
return 1;
}
-int skill_select_menu(struct map_session_data *sd,uint16 skill_id)
+static int skill_select_menu(struct map_session_data *sd, uint16 skill_id)
{
int id, lv, prob, aslvl = 0, idx = 0;
nullpo_ret(sd);
@@ -18778,7 +18805,7 @@ int skill_select_menu(struct map_session_data *sd,uint16 skill_id)
if( skill_id >= GS_GLITTERING || skill->get_type(skill_id) != BF_MAGIC ||
(id = sd->status.skill[idx].id) == 0 || sd->status.skill[idx].flag != SKILL_FLAG_PLAGIARIZED ) {
- clif->skill_fail(sd,SC_AUTOSHADOWSPELL,0,0);
+ clif->skill_fail(sd, SC_AUTOSHADOWSPELL, 0, 0, 0);
return 0;
}
@@ -18789,7 +18816,7 @@ int skill_select_menu(struct map_session_data *sd,uint16 skill_id)
return 0;
}
-int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const struct itemlist *item_list)
+static int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const struct itemlist *item_list)
{
int i;
@@ -18813,7 +18840,7 @@ int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const
if (idx < 0 || idx >= MAX_INVENTORY
|| (nameid = sd->status.inventory[idx].nameid) <= 0
|| del_amount < 0 || del_amount > sd->status.inventory[idx].amount) {
- clif->skill_fail(sd,SO_EL_ANALYSIS,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, SO_EL_ANALYSIS, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
@@ -18829,18 +18856,18 @@ int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const
case ITEMID_WIND_OF_VERDURE: product = ITEMID_ROUGH_WIND; break;
case ITEMID_YELLOW_LIVE: product = ITEMID_GREAT_NATURE; break;
default:
- clif->skill_fail(sd,SO_EL_ANALYSIS,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, SO_EL_ANALYSIS, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
if( pc->delitem(sd, idx, del_amount, 0, DELITEM_SKILLUSE, LOG_TYPE_CONSUME) ) {
- clif->skill_fail(sd,SO_EL_ANALYSIS,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, SO_EL_ANALYSIS, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
if( skill_lv == 2 && rnd()%100 < 25 ) {
// At level 2 have a fail chance. You loose your items if it fails.
- clif->skill_fail(sd,SO_EL_ANALYSIS,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, SO_EL_ANALYSIS, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
}
@@ -18862,7 +18889,7 @@ int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const
return 0;
}
-int skill_changematerial(struct map_session_data *sd, const struct itemlist *item_list)
+static int skill_changematerial(struct map_session_data *sd, const struct itemlist *item_list)
{
int i, j, k, c, p = 0, nameid, amount;
@@ -18917,7 +18944,7 @@ int skill_changematerial(struct map_session_data *sd, const struct itemlist *ite
/**
* for Royal Guard's LG_TRAMPLE
**/
-int skill_destroy_trap(struct block_list *bl, va_list ap)
+static int skill_destroy_trap(struct block_list *bl, va_list ap)
{
struct skill_unit *su = NULL;
struct skill_unit_group *sg;
@@ -18953,7 +18980,7 @@ int skill_destroy_trap(struct block_list *bl, va_list ap)
/*==========================================
*
*------------------------------------------*/
-int skill_blockpc_end(int tid, int64 tick, int id, intptr_t data)
+static int skill_blockpc_end(int tid, int64 tick, int id, intptr_t data)
{
struct map_session_data *sd = map->id2sd(id);
struct skill_cd * cd = NULL;
@@ -19006,7 +19033,7 @@ int skill_blockpc_end(int tid, int64 tick, int id, intptr_t data)
* @param tick the length of time the delay should last
* @return 0 if successful, -1 otherwise
*/
-int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick)
+static int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick)
{
struct skill_cd* cd = NULL;
uint16 idx = skill->get_index(skill_id);
@@ -19087,7 +19114,7 @@ int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick)
}
// [orn]
-int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data)
+static int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data)
{
struct homun_data *hd = map->id2hd(id);
if (data <= 0 || data >= MAX_SKILL_DB)
@@ -19099,7 +19126,7 @@ int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data)
}
// [orn]
-int skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick)
+static int skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick)
{
uint16 idx = skill->get_index(skill_id);
nullpo_retr (-1, hd);
@@ -19116,7 +19143,7 @@ int skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick)
}
// [orn]
-int skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data)
+static int skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data)
{
struct mercenary_data *md = map->id2mc(id);
if (data <= 0 || data >= MAX_SKILL_DB)
@@ -19127,7 +19154,7 @@ int skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data)
return 1;
}
-int skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tick)
+static int skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tick)
{
uint16 idx = skill->get_index(skill_id);
nullpo_retr (-1, md);
@@ -19146,7 +19173,7 @@ int skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tick)
/**
* Adds a new skill unit entry for this player to recast after map load
**/
-void skill_usave_add(struct map_session_data * sd, uint16 skill_id, uint16 skill_lv)
+static void skill_usave_add(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
struct skill_unit_save * sus = NULL;
@@ -19164,7 +19191,7 @@ void skill_usave_add(struct map_session_data * sd, uint16 skill_id, uint16 skill
return;
}
-void skill_usave_trigger(struct map_session_data *sd)
+static void skill_usave_trigger(struct map_session_data *sd)
{
struct skill_unit_save * sus = NULL;
@@ -19182,7 +19209,7 @@ void skill_usave_trigger(struct map_session_data *sd)
/*
*
*/
-int skill_split_atoi(char *str, int *val)
+static int skill_split_atoi(char *str, int *val)
{
int i, j, step = 1;
@@ -19229,7 +19256,7 @@ int skill_split_atoi(char *str, int *val)
/*
*
*/
-void skill_init_unit_layout (void)
+static void skill_init_unit_layout(void)
{
int i,j,pos = 0;
@@ -19501,13 +19528,13 @@ void skill_init_unit_layout (void)
}
-void skill_init_unit_layout_unknown(int skill_idx)
+static void skill_init_unit_layout_unknown(int skill_idx)
{
Assert_retv(skill_idx >= 0 && skill_idx < MAX_SKILL_DB);
ShowError("unknown unit layout at skill %d\n", skill->dbs->db[skill_idx].nameid);
}
-int skill_block_check(struct block_list *bl, sc_type type , uint16 skill_id)
+static int skill_block_check(struct block_list *bl, sc_type type, uint16 skill_id)
{
int inf = 0;
struct status_change *sc = status->get_sc(bl);
@@ -19655,7 +19682,7 @@ int skill_block_check(struct block_list *bl, sc_type type , uint16 skill_id)
return 0;
}
-int skill_get_elemental_type(uint16 skill_id , uint16 skill_lv)
+static int skill_get_elemental_type(uint16 skill_id, uint16 skill_lv)
{
int type = 0;
@@ -19675,7 +19702,7 @@ int skill_get_elemental_type(uint16 skill_id , uint16 skill_lv)
* update stored skill cooldowns for player logout
* @param sd the affected player structure
*/
-void skill_cooldown_save(struct map_session_data * sd)
+static void skill_cooldown_save(struct map_session_data *sd)
{
int i;
struct skill_cd* cd = NULL;
@@ -19704,7 +19731,7 @@ void skill_cooldown_save(struct map_session_data * sd)
* reload stored skill cooldowns when a player logs in.
* @param sd the affected player structure
*/
-void skill_cooldown_load(struct map_session_data * sd)
+static void skill_cooldown_load(struct map_session_data *sd)
{
int i;
struct skill_cd* cd = NULL;
@@ -19737,7 +19764,7 @@ void skill_cooldown_load(struct map_session_data * sd)
}
}
-bool skill_parse_row_producedb(char* split[], int columns, int current)
+static bool skill_parse_row_producedb(char *split[], int columns, int current)
{
// ProduceItemID,ItemLV,RequireSkill,Requireskill_lv,MaterialID1,MaterialAmount1,......
int x,y;
@@ -19761,7 +19788,7 @@ bool skill_parse_row_producedb(char* split[], int columns, int current)
return true;
}
-bool skill_parse_row_createarrowdb(char* split[], int columns, int current)
+static bool skill_parse_row_createarrowdb(char *split[], int columns, int current)
{
// SourceID,MakeID1,MakeAmount1,...,MakeID5,MakeAmount5
int x,y;
@@ -19782,7 +19809,7 @@ bool skill_parse_row_createarrowdb(char* split[], int columns, int current)
return true;
}
-bool skill_parse_row_spellbookdb(char* split[], int columns, int current)
+static bool skill_parse_row_spellbookdb(char *split[], int columns, int current)
{
// skill_id,PreservePoints
@@ -19812,7 +19839,7 @@ bool skill_parse_row_spellbookdb(char* split[], int columns, int current)
return false;
}
-bool skill_parse_row_improvisedb(char* split[], int columns, int current)
+static bool skill_parse_row_improvisedb(char *split[], int columns, int current)
{
// SkillID,Rate
uint16 skill_id;
@@ -19844,7 +19871,7 @@ bool skill_parse_row_improvisedb(char* split[], int columns, int current)
return true;
}
-bool skill_parse_row_magicmushroomdb(char* split[], int column, int current)
+static bool skill_parse_row_magicmushroomdb(char *split[], int column, int current)
{
// SkillID
uint16 skill_id;
@@ -19865,7 +19892,7 @@ bool skill_parse_row_magicmushroomdb(char* split[], int column, int current)
return true;
}
-bool skill_parse_row_abradb(char* split[], int columns, int current)
+static bool skill_parse_row_abradb(char *split[], int columns, int current)
{
// skill_id,DummyName,RequiredHocusPocusLevel,Rate
uint16 skill_id;
@@ -19887,10 +19914,10 @@ bool skill_parse_row_abradb(char* split[], int columns, int current)
return true;
}
-bool skill_parse_row_changematerialdb(char* split[], int columns, int current)
+static bool skill_parse_row_changematerialdb(char *split[], int columns, int current)
{
// ProductID,BaseRate,MakeAmount1,MakeAmountRate1...,MakeAmount5,MakeAmountRate5
- uint16 skill_id;
+ int skill_id;
short j;
int x,y;
@@ -19932,7 +19959,7 @@ bool skill_parse_row_changematerialdb(char* split[], int columns, int current)
* @param *conf pointer to config setting.
* @param *arr pointer to array to be set.
*/
-void skill_config_set_level(struct config_setting_t *conf, int *arr)
+static void skill_config_set_level(struct config_setting_t *conf, int *arr)
{
int i=0;
@@ -19961,7 +19988,7 @@ void skill_config_set_level(struct config_setting_t *conf, int *arr)
* @param value value being set for the array.
* @return (void)
*/
-void skill_level_set_value(int *arr, int value)
+static void skill_level_set_value(int *arr, int value)
{
int i=0;
@@ -19971,7 +19998,7 @@ void skill_level_set_value(int *arr, int value)
}
}
-void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
@@ -19996,7 +20023,7 @@ void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *t = NULL, *tt = NULL;
@@ -20050,7 +20077,7 @@ void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *t = NULL, *tt = NULL;
@@ -20188,7 +20215,7 @@ void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
@@ -20213,7 +20240,7 @@ void skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_element(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_element(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
struct config_setting_t *t = NULL;
@@ -20261,7 +20288,7 @@ void skill_validate_element(struct config_setting_t *conf, struct s_skill_db *sk
* @param sk struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *t = NULL, *tt = NULL;
@@ -20334,7 +20361,7 @@ void skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db
* @param delay boolean, switch for cast/delay setting
* @return (void)
*/
-void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *sk, bool delay)
+static void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *sk, bool delay)
{
struct config_setting_t *t = NULL, *tt = NULL;
@@ -20381,7 +20408,7 @@ void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *
* @param *sk struct, pointer to s_skill_db
* @return void
*/
-int skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *sk)
+static int skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *sk)
{
nullpo_ret(sk);
if (strcmpi(type, "NoWeapon") == 0) {
@@ -20584,7 +20611,7 @@ int skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *
* @param sk struct, struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *tt = NULL;
const char *type = NULL;
@@ -20611,7 +20638,7 @@ void skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db
* @param sk struct, pointer to s_skill_db
* @return void
*/
-int skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk)
+static int skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk)
{
nullpo_ret(sk);
if (strcmpi(type, "A_ARROW") == 0) {
@@ -20688,7 +20715,7 @@ int skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk
* @param sk struct, pointer to s_skill_db
* @return void
*/
-void skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *tt = NULL;
const char *tstr = NULL;
@@ -20714,7 +20741,7 @@ void skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *s
* @param sk struct, pointer to s_skill_db
* @return void
*/
-void skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
@@ -20755,7 +20782,7 @@ void skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk)
* @param sk struct, pointer to s_skill_db
* @return void
*/
-void skill_validate_item_requirements(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_item_requirements(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *tt = NULL;
@@ -20792,7 +20819,7 @@ void skill_validate_item_requirements(struct config_setting_t *conf, struct s_sk
* @param sk struct, pointer to s_skill_db
* @return void
*/
-void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk)
{
const char *type = NULL;
@@ -20834,7 +20861,7 @@ void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db
* @param sk struct, pointer to s_skill_db.
* @return (void)
*/
-int skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *sk)
+static int skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *sk)
{
nullpo_ret(type);
nullpo_ret(sk);
@@ -20930,7 +20957,7 @@ int skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *s
* @param sk struct, struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *sk)
{
struct config_setting_t *t = NULL;
@@ -20953,7 +20980,7 @@ void skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *
* @param sk struct, struct, pointer to s_skill_db
* @return (void)
*/
-void skill_validate_additional_fields(struct config_setting_t *conf, struct s_skill_db *sk)
+static void skill_validate_additional_fields(struct config_setting_t *conf, struct s_skill_db *sk)
{
// Does nothing like a boss. *cough* plugins *cough*
}
@@ -20964,7 +20991,7 @@ void skill_validate_additional_fields(struct config_setting_t *conf, struct s_sk
* @param *source filepath constant.
* @return boolean true on success.
*/
-bool skill_validate_skilldb(struct s_skill_db *sk, const char *source)
+static bool skill_validate_skilldb(struct s_skill_db *sk, const char *source)
{
int idx;
@@ -20995,7 +21022,7 @@ bool skill_validate_skilldb(struct s_skill_db *sk, const char *source)
* @param filename contains the file path and name.
* @return boolean true on success
*/
-bool skill_read_skilldb(const char *filename)
+static bool skill_read_skilldb(const char *filename)
{
struct config_t skilldb;
struct config_setting_t *sk, *conf;
@@ -21252,7 +21279,7 @@ bool skill_read_skilldb(const char *filename)
* create_arrow_db.txt
* abra_db.txt
*------------------------------*/
-void skill_readdb(bool minimal)
+static void skill_readdb(bool minimal)
{
// init skill db structures
db_clear(skill->name2id_db);
@@ -21291,7 +21318,7 @@ void skill_readdb(bool minimal)
sv->readdb(map->db_path, "skill_changematerial_db.txt", ',', 4, 4+2*5, MAX_SKILL_PRODUCE_DB, skill->parse_row_changematerialdb);
}
-void skill_reload(void)
+static void skill_reload(void)
{
struct s_mapiterator *iter;
struct map_session_data *sd;
@@ -21324,7 +21351,7 @@ void skill_reload(void)
/*==========================================
*
*------------------------------------------*/
-int do_init_skill(bool minimal)
+static int do_init_skill(bool minimal)
{
skill->name2id_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, MAX_SKILL_NAME_LENGTH);
skill->read_db(minimal);
@@ -21358,7 +21385,7 @@ int do_init_skill(bool minimal)
return 0;
}
-int do_final_skill(void)
+static int do_final_skill(void)
{
db_destroy(skill->name2id_db);
db_destroy(skill->group_db);
diff --git a/src/map/skill.h b/src/map/skill.h
index bd1dc3344..736417649 100644
--- a/src/map/skill.h
+++ b/src/map/skill.h
@@ -1726,7 +1726,7 @@ struct skill_condition {
// Database skills
struct s_skill_db {
- unsigned short nameid;
+ int nameid;
char name[MAX_SKILL_NAME_LENGTH];
char desc[40];
int range[MAX_SKILL_LEVEL],hit,inf,element[MAX_SKILL_LEVEL],nk,splash[MAX_SKILL_LEVEL],max;
diff --git a/src/map/status.c b/src/map/status.c
index f2275e47b..2bd3700b3 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -61,17 +61,17 @@
#include <string.h>
#include <time.h>
-struct status_interface status_s;
-struct s_status_dbs statusdbs;
+static struct status_interface status_s;
+static struct s_status_dbs statusdbs;
struct status_interface *status;
/**
-* Returns the status change associated with a skill.
-* @param skill The skill to look up
-* @return The status registered for this skill
-**/
-sc_type status_skill2sc(int skill_id)
+ * Returns the status change associated with a skill.
+ * @param skill The skill to look up
+ * @return The status registered for this skill
+ */
+static sc_type status_skill2sc(int skill_id)
{
int idx;
if( (idx = skill->get_index(skill_id)) == 0 ) {
@@ -82,12 +82,12 @@ sc_type status_skill2sc(int skill_id)
}
/**
-* Returns the FIRST skill (in order of definition in initChangeTables) to use a given status change.
-* Utilized for various duration lookups. Use with caution!
-* @param sc The status to look up
-* @return A skill associated with the status
-**/
-int status_sc2skill(sc_type sc)
+ * Returns the FIRST skill (in order of definition in initChangeTables) to use a given status change.
+ * Utilized for various duration lookups. Use with caution!
+ * @param sc The status to look up
+ * @return A skill associated with the status
+ */
+static int status_sc2skill(sc_type sc)
{
if( sc < 0 || sc >= SC_MAX ) {
ShowError("status_sc2skill: Unsupported status change id %d\n", sc);
@@ -98,11 +98,11 @@ int status_sc2skill(sc_type sc)
}
/**
-* Returns the status calculation flag associated with a given status change.
-* @param sc The status to look up
-* @return The scb_flag registered for this status (see enum scb_flag)
-**/
-unsigned int status_sc2scb_flag(sc_type sc)
+ * Returns the status calculation flag associated with a given status change.
+ * @param sc The status to look up
+ * @return The scb_flag registered for this status (see enum scb_flag)
+ */
+static unsigned int status_sc2scb_flag(sc_type sc)
{
if( sc < 0 || sc >= SC_MAX ) {
ShowError("status_sc2scb_flag: Unsupported status change id %d\n", sc);
@@ -113,11 +113,11 @@ unsigned int status_sc2scb_flag(sc_type sc)
}
/**
-* Returns the bl types which require a status change packet to be sent for a given client status identifier.
-* @param type The client-side status identifier to look up (see enum si_type)
-* @return The bl types relevant to the type (see enum bl_type)
-**/
-int status_type2relevant_bl_types(int type)
+ * Returns the bl types which require a status change packet to be sent for a given client status identifier.
+ * @param type The client-side status identifier to look up (see enum si_type)
+ * @return The bl types relevant to the type (see enum bl_type)
+ */
+static int status_type2relevant_bl_types(int type)
{
if( type < 0 || type >= SI_MAX ) {
ShowError("status_type2relevant_bl_types: Unsupported type %d\n", type);
@@ -127,7 +127,7 @@ int status_type2relevant_bl_types(int type)
return status->dbs->RelevantBLTypes[type];
}
-void status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag)
+static void status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag)
{
uint16 idx;
if( (idx = skill->get_index(skill_id)) == 0 ) {
@@ -149,7 +149,7 @@ void status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag)
status->dbs->Skill2SCTable[idx] = sc;
}
-void initChangeTables(void)
+static void initChangeTables(void)
{
#define add_sc(skill,sc) status->set_sc((skill),(sc),SI_BLANK,SCB_NONE)
// indicates that the status displays a visual effect for the affected unit, and should be sent to the client for all supported units
@@ -1211,7 +1211,7 @@ void initChangeTables(void)
#undef set_sc_with_vfx
}
-void initDummyData(void)
+static void initDummyData(void)
{
memset(&status->dummy, 0, sizeof(status->dummy));
status->dummy.hp =
@@ -1233,7 +1233,7 @@ void initDummyData(void)
}
//For copying a status_data structure from b to a, without overwriting current Hp and Sp
-void status_copy(struct status_data *a, const struct status_data *b)
+static void status_copy(struct status_data *a, const struct status_data *b)
{
nullpo_retv(a);
nullpo_retv(b);
@@ -1243,7 +1243,7 @@ void status_copy(struct status_data *a, const struct status_data *b)
//Sets HP to given value. Flag is the flag passed to status->heal in case
//final value is higher than current (use 2 to make a healing effect display
//on players) It will always succeed (overrides Berserk block), but it can't kill.
-int status_set_hp(struct block_list *bl, unsigned int hp, int flag)
+static int status_set_hp(struct block_list *bl, unsigned int hp, int flag)
{
struct status_data *st;
if (hp < 1) return 0;
@@ -1261,7 +1261,7 @@ int status_set_hp(struct block_list *bl, unsigned int hp, int flag)
//Sets SP to given value. Flag is the flag passed to status->heal in case
//final value is higher than current (use 2 to make a healing effect display
//on players)
-int status_set_sp(struct block_list *bl, unsigned int sp, int flag)
+static int status_set_sp(struct block_list *bl, unsigned int sp, int flag)
{
struct status_data *st;
@@ -1276,7 +1276,7 @@ int status_set_sp(struct block_list *bl, unsigned int sp, int flag)
return status_zap(bl, 0, st->sp - sp);
}
-int status_charge(struct block_list* bl, int64 hp, int64 sp)
+static int status_charge(struct block_list *bl, int64 hp, int64 sp)
{
nullpo_retr((int)(hp + sp), bl);
if(!(bl->type&BL_CONSUME))
@@ -1289,7 +1289,7 @@ int status_charge(struct block_list* bl, int64 hp, int64 sp)
//If flag&2, fail if target does not has enough to subtract.
//If flag&4, if killed, mob must not give exp/loot.
//flag will be set to &8 when damaging sp of a dead character
-int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, int64 in_sp, int walkdelay, int flag)
+static int status_damage(struct block_list *src, struct block_list *target, int64 in_hp, int64 in_sp, int walkdelay, int flag)
{
struct status_data *st;
struct status_change *sc;
@@ -1529,7 +1529,7 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp,
//Heals a character. If flag&1, this is forced healing (otherwise stuff like Berserk can block it)
//If flag&2, when the player is healed, show the HP/SP heal effect.
-int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, int flag)
+static int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, int flag)
{
struct status_data *st;
struct status_change *sc;
@@ -1609,7 +1609,7 @@ int status_heal(struct block_list *bl, int64 in_hp, int64 in_sp, int flag)
//If rates are < 0, percent is of max HP/SP
//If !flag, this is heal, otherwise it is damage.
//Furthermore, if flag==2, then the target must not die from the subtraction.
-int status_percent_change(struct block_list *src, struct block_list *target, signed char hp_rate, signed char sp_rate, int flag)
+static int status_percent_change(struct block_list *src, struct block_list *target, signed char hp_rate, signed char sp_rate, int flag)
{
struct status_data *st;
unsigned int hp = 0, sp = 0;
@@ -1662,7 +1662,7 @@ int status_percent_change(struct block_list *src, struct block_list *target, sig
return status->heal(target, hp, sp, 0);
}
-int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per_sp)
+static int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per_sp)
{
struct status_data *st;
unsigned int hp, sp;
@@ -1701,7 +1701,7 @@ int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per
return 1;
}
-int status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned int per_sp)
+static int status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned int per_sp)
{
struct status_data *st;
unsigned int hp, sp;
@@ -1739,17 +1739,17 @@ int status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned int
}
/*==========================================
-* Checks whether the src can use the skill on the target,
-* taking into account status/option of both source/target. [Skotlex]
-* flag:
-* 0 - Trying to use skill on target.
-* 1 - Cast bar is done.
-* 2 - Skill already pulled off, check is due to ground-based skills or splash-damage ones.
-* src MAY be null to indicate we shouldn't check it, this is a ground-based skill attack.
-* target MAY Be null, in which case the checks are only to see
-* whether the source can cast or not the skill on the ground.
-*------------------------------------------*/
-int status_check_skilluse(struct block_list *src, struct block_list *target, uint16 skill_id, int flag)
+ * Checks whether the src can use the skill on the target,
+ * taking into account status/option of both source/target. [Skotlex]
+ * flag:
+ * 0 - Trying to use skill on target.
+ * 1 - Cast bar is done.
+ * 2 - Skill already pulled off, check is due to ground-based skills or splash-damage ones.
+ * src MAY be null to indicate we shouldn't check it, this is a ground-based skill attack.
+ * target MAY Be null, in which case the checks are only to see
+ * whether the source can cast or not the skill on the ground.
+ *------------------------------------------*/
+static int status_check_skilluse(struct block_list *src, struct block_list *target, uint16 skill_id, int flag)
{
struct status_data *st;
struct status_change *sc=NULL, *tsc;
@@ -2049,7 +2049,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin
//Skotlex: Calculates the initial status for the given mob
//first will only be false when the mob leveled up or got a GuardUp level.
-int status_calc_mob_(struct mob_data *md, enum e_status_calc_opt opt)
+static int status_calc_mob_(struct mob_data *md, enum e_status_calc_opt opt)
{
struct status_data *mstatus;
struct block_list *mbl = NULL;
@@ -2220,7 +2220,7 @@ int status_calc_mob_(struct mob_data *md, enum e_status_calc_opt opt)
}
//Skotlex: Calculates the stats of the given pet.
-int status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt)
+static int status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt)
{
nullpo_ret(pd);
@@ -2282,7 +2282,7 @@ int status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt)
return 1;
}
-unsigned int status_get_base_maxsp(const struct map_session_data *sd, const struct status_data *st)
+static unsigned int status_get_base_maxsp(const struct map_session_data *sd, const struct status_data *st)
{
uint64 val;
@@ -2303,7 +2303,7 @@ unsigned int status_get_base_maxsp(const struct map_session_data *sd, const stru
return (unsigned int)cap_value(val, 0, UINT_MAX);
}
-unsigned int status_get_base_maxhp(const struct map_session_data *sd, const struct status_data *st)
+static unsigned int status_get_base_maxhp(const struct map_session_data *sd, const struct status_data *st)
{
uint64 val;
@@ -2330,13 +2330,13 @@ unsigned int status_get_base_maxhp(const struct map_session_data *sd, const stru
return (unsigned int)cap_value(val,0,UINT_MAX);
}
-void status_calc_pc_additional(struct map_session_data* sd, enum e_status_calc_opt opt)
+static void status_calc_pc_additional(struct map_session_data *sd, enum e_status_calc_opt opt)
{
/* Just used for Plugin to give bonuses. */
return;
}
-void status_calc_pc_recover_hp(struct map_session_data* sd, struct status_data *bstatus)
+static void status_calc_pc_recover_hp(struct map_session_data *sd, struct status_data *bstatus)
{
nullpo_retv(sd);
nullpo_retv(bstatus);
@@ -2350,7 +2350,7 @@ void status_calc_pc_recover_hp(struct map_session_data* sd, struct status_data *
//Calculates player data from scratch without counting SC adjustments.
//Should be invoked whenever players raise stats, learn passive skills or change equipment.
-int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
+static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt opt)
{
static int calculating = 0; //Check for recursive call preemption. [Skotlex]
struct status_data *bstatus; // pointer to the player's base status
@@ -3286,7 +3286,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
return 0;
}
-int status_calc_mercenary_(struct mercenary_data *md, enum e_status_calc_opt opt)
+static int status_calc_mercenary_(struct mercenary_data *md, enum e_status_calc_opt opt)
{
struct status_data *mstatus;
struct s_mercenary *merc;
@@ -3309,7 +3309,7 @@ int status_calc_mercenary_(struct mercenary_data *md, enum e_status_calc_opt opt
return 0;
}
-int status_calc_elemental_(struct elemental_data *ed, enum e_status_calc_opt opt)
+static int status_calc_elemental_(struct elemental_data *ed, enum e_status_calc_opt opt)
{
struct status_data *estatus;
struct s_elemental *ele;
@@ -3353,7 +3353,7 @@ int status_calc_elemental_(struct elemental_data *ed, enum e_status_calc_opt opt
return 0;
}
-int status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt)
+static int status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt)
{
struct status_data *nstatus;
@@ -3390,7 +3390,7 @@ int status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt)
return 0;
}
-int status_calc_homunculus_(struct homun_data *hd, enum e_status_calc_opt opt)
+static int status_calc_homunculus_(struct homun_data *hd, enum e_status_calc_opt opt)
{
struct status_data *hstatus;
struct s_homunculus *hom;
@@ -3480,7 +3480,7 @@ int status_calc_homunculus_(struct homun_data *hd, enum e_status_calc_opt opt)
}
//Calculates base regen values.
-void status_calc_regen(struct block_list *bl, struct status_data *st, struct regen_data *regen)
+static void status_calc_regen(struct block_list *bl, struct status_data *st, struct regen_data *regen)
{
struct map_session_data *sd;
int val, skill_lv, reg_flag;
@@ -3581,7 +3581,7 @@ void status_calc_regen(struct block_list *bl, struct status_data *st, struct reg
}
//Calculates SC related regen rates.
-void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, struct status_change *sc)
+static void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, struct status_change *sc)
{
nullpo_retv(bl);
if (!(bl->type&BL_REGEN) || !regen)
@@ -3705,7 +3705,7 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str
/// Recalculates parts of an object's battle status according to the specified flags.
/// @param flag bitfield of values from enum scb_flag
-void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
+static void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
{
const struct status_data *bst = status->get_base_status(bl);
struct status_data *st = status->get_status_data(bl);
@@ -4104,7 +4104,7 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
/// Also sends updates to the client wherever applicable.
/// @param flag bitfield of values from enum scb_flag
/// @param first if true, will cause status_calc_* functions to run their base status initialization code
-void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_calc_opt opt)
+static void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_calc_opt opt)
{
struct status_data bst; // previous battle status
struct status_data *st; // pointer to current battle status
@@ -4289,7 +4289,7 @@ void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_ca
}
//Checks whether the source can see and chase target.
-int status_check_visibility(struct block_list *src, struct block_list *target)
+static int status_check_visibility(struct block_list *src, struct block_list *target)
{
int view_range;
struct status_change *tsc = NULL;
@@ -4341,7 +4341,7 @@ int status_check_visibility(struct block_list *src, struct block_list *target)
}
// Basic ASPD value
-int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
+static int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
{
int amotion;
#ifdef RENEWAL_ASPD /* [malufett/Hercules] */
@@ -4396,7 +4396,7 @@ int status_base_amotion_pc(struct map_session_data *sd, struct status_data *st)
return amotion;
}
-unsigned short status_base_atk(const struct block_list *bl, const struct status_data *st)
+static unsigned short status_base_atk(const struct block_list *bl, const struct status_data *st)
{
int flag = 0, str, dex, dstr;
@@ -4456,19 +4456,24 @@ unsigned short status_base_atk(const struct block_list *bl, const struct status_
return cap_value(str, 0, USHRT_MAX);
}
-unsigned short status_base_matk_min(const struct status_data *st)
+static unsigned short status_base_matk_min(const struct status_data *st)
{
nullpo_ret(st);
+#ifdef RENEWAL
+ Assert_ret(0);
+ return 0;
+#else // not RENEWAL
return st->int_ + (st->int_ / 7) * (st->int_ / 7);
+#endif // RENEWAL
}
-unsigned short status_base_matk_max(const struct status_data *st)
+static unsigned short status_base_matk_max(const struct status_data *st)
{
nullpo_ret(st);
return st->int_ + (st->int_ / 5)*(st->int_ / 5);
}
-unsigned short status_base_matk(struct block_list *bl, const struct status_data *st, int level)
+static unsigned short status_base_matk(struct block_list *bl, const struct status_data *st, int level)
{
#ifdef RENEWAL
nullpo_ret(bl);
@@ -4485,12 +4490,13 @@ unsigned short status_base_matk(struct block_list *bl, const struct status_data
return st->int_ + (st->int_ / 2) + (st->dex / 5) + (st->luk / 3) + (level / 4);
}
#else
+ Assert_ret(0);
return 0;
#endif
}
//Fills in the misc data that can be calculated from the other status info (except for level)
-void status_calc_misc(struct block_list *bl, struct status_data *st, int level)
+static void status_calc_misc(struct block_list *bl, struct status_data *st, int level)
{
nullpo_retv(bl);
nullpo_retv(st);
@@ -4572,9 +4578,9 @@ void status_calc_misc(struct block_list *bl, struct status_data *st, int level)
}
/*==========================================
-* Apply shared stat mods from status changes [DracoRPG]
-*------------------------------------------*/
-unsigned short status_calc_str(struct block_list *bl, struct status_change *sc, int str)
+ * Apply shared stat mods from status changes [DracoRPG]
+ *------------------------------------------*/
+static unsigned short status_calc_str(struct block_list *bl, struct status_change *sc, int str)
{
if(!sc || !sc->count)
return cap_value(str,0,USHRT_MAX);
@@ -4637,7 +4643,7 @@ unsigned short status_calc_str(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(str,0,USHRT_MAX);
}
-unsigned short status_calc_agi(struct block_list *bl, struct status_change *sc, int agi)
+static unsigned short status_calc_agi(struct block_list *bl, struct status_change *sc, int agi)
{
if(!sc || !sc->count)
return cap_value(agi,0,USHRT_MAX);
@@ -4700,7 +4706,7 @@ unsigned short status_calc_agi(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(agi,0,USHRT_MAX);
}
-unsigned short status_calc_vit(struct block_list *bl, struct status_change *sc, int vit)
+static unsigned short status_calc_vit(struct block_list *bl, struct status_change *sc, int vit)
{
if(!sc || !sc->count)
return cap_value(vit,0,USHRT_MAX);
@@ -4751,7 +4757,7 @@ unsigned short status_calc_vit(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(vit,0,USHRT_MAX);
}
-unsigned short status_calc_int(struct block_list *bl, struct status_change *sc, int int_)
+static unsigned short status_calc_int(struct block_list *bl, struct status_change *sc, int int_)
{
nullpo_ret(bl);
if(!sc || !sc->count)
@@ -4818,7 +4824,7 @@ unsigned short status_calc_int(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(int_,0,USHRT_MAX);
}
-unsigned short status_calc_dex(struct block_list *bl, struct status_change *sc, int dex)
+static unsigned short status_calc_dex(struct block_list *bl, struct status_change *sc, int dex)
{
nullpo_ret(bl);
if(!sc || !sc->count)
@@ -4881,7 +4887,7 @@ unsigned short status_calc_dex(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(dex,0,USHRT_MAX);
}
-unsigned short status_calc_luk(struct block_list *bl, struct status_change *sc, int luk)
+static unsigned short status_calc_luk(struct block_list *bl, struct status_change *sc, int luk)
{
nullpo_ret(bl);
@@ -4936,7 +4942,7 @@ unsigned short status_calc_luk(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(luk, 0, USHRT_MAX);
}
-unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc, int batk, bool viewable)
+static unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc, int batk, bool viewable)
{
nullpo_ret(bl);
if(!sc || !sc->count)
@@ -5032,7 +5038,7 @@ unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(batk,0,USHRT_MAX);
}
-unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc, int watk, bool viewable)
+static unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc, int watk, bool viewable)
{
nullpo_ret(bl);
if(!sc || !sc->count)
@@ -5125,7 +5131,7 @@ unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(watk,0,USHRT_MAX);
}
-unsigned short status_calc_ematk(struct block_list *bl, struct status_change *sc, int matk)
+static unsigned short status_calc_ematk(struct block_list *bl, struct status_change *sc, int matk)
{
#ifdef RENEWAL
if (!sc || !sc->count)
@@ -5156,7 +5162,7 @@ unsigned short status_calc_ematk(struct block_list *bl, struct status_change *sc
#endif
}
-unsigned short status_calc_matk(struct block_list *bl, struct status_change *sc, int matk, bool viewable)
+static unsigned short status_calc_matk(struct block_list *bl, struct status_change *sc, int matk, bool viewable)
{
if (!sc || !sc->count)
return cap_value(matk,0,USHRT_MAX);
@@ -5226,7 +5232,7 @@ unsigned short status_calc_matk(struct block_list *bl, struct status_change *sc,
return (unsigned short)cap_value(matk, 0, USHRT_MAX);
}
-signed short status_calc_critical(struct block_list *bl, struct status_change *sc, int critical, bool viewable)
+static signed short status_calc_critical(struct block_list *bl, struct status_change *sc, int critical, bool viewable)
{
if (!sc || !sc->count)
return cap_value(critical, 10, SHRT_MAX);
@@ -5267,7 +5273,7 @@ signed short status_calc_critical(struct block_list *bl, struct status_change *s
return (short)cap_value(critical, 10, SHRT_MAX);
}
-signed short status_calc_hit(struct block_list *bl, struct status_change *sc, int hit, bool viewable)
+static signed short status_calc_hit(struct block_list *bl, struct status_change *sc, int hit, bool viewable)
{
if (!sc || !sc->count)
@@ -5322,7 +5328,7 @@ signed short status_calc_hit(struct block_list *bl, struct status_change *sc, in
return (short)cap_value(hit, 1, SHRT_MAX);
}
-signed short status_calc_flee(struct block_list *bl, struct status_change *sc, int flee, bool viewable)
+static signed short status_calc_flee(struct block_list *bl, struct status_change *sc, int flee, bool viewable)
{
nullpo_retr(1, bl);
@@ -5419,7 +5425,7 @@ signed short status_calc_flee(struct block_list *bl, struct status_change *sc, i
return (short)cap_value(flee, 1, SHRT_MAX);
}
-signed short status_calc_flee2(struct block_list *bl, struct status_change *sc, int flee2, bool viewable)
+static signed short status_calc_flee2(struct block_list *bl, struct status_change *sc, int flee2, bool viewable)
{
if(!sc || !sc->count)
return cap_value(flee2,10,SHRT_MAX);
@@ -5441,7 +5447,7 @@ signed short status_calc_flee2(struct block_list *bl, struct status_change *sc,
return (short)cap_value(flee2,10,SHRT_MAX);
}
-defType status_calc_def(struct block_list *bl, struct status_change *sc, int def, bool viewable)
+static defType status_calc_def(struct block_list *bl, struct status_change *sc, int def, bool viewable)
{
nullpo_retr(DEFTYPE_MIN, bl);
@@ -5546,7 +5552,7 @@ defType status_calc_def(struct block_list *bl, struct status_change *sc, int def
return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
}
-signed short status_calc_def2(struct block_list *bl, struct status_change *sc, int def2, bool viewable)
+static signed short status_calc_def2(struct block_list *bl, struct status_change *sc, int def2, bool viewable)
{
nullpo_retr(1, bl);
if(!sc || !sc->count)
@@ -5623,7 +5629,7 @@ signed short status_calc_def2(struct block_list *bl, struct status_change *sc, i
#endif
}
-defType status_calc_mdef(struct block_list *bl, struct status_change *sc, int mdef, bool viewable)
+static defType status_calc_mdef(struct block_list *bl, struct status_change *sc, int mdef, bool viewable)
{
if(!sc || !sc->count)
@@ -5680,7 +5686,7 @@ defType status_calc_mdef(struct block_list *bl, struct status_change *sc, int md
return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX);
}
-signed short status_calc_mdef2(struct block_list *bl, struct status_change *sc, int mdef2, bool viewable)
+static signed short status_calc_mdef2(struct block_list *bl, struct status_change *sc, int mdef2, bool viewable)
{
if(!sc || !sc->count)
#ifdef RENEWAL
@@ -5719,7 +5725,7 @@ signed short status_calc_mdef2(struct block_list *bl, struct status_change *sc,
#endif
}
-unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc, int speed)
+static unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc, int speed)
{
struct map_session_data *sd = BL_CAST(BL_PC, bl);
int speed_rate = -1;
@@ -5922,7 +5928,7 @@ unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc
// flag&1 - fixed value [malufett]
// flag&2 - percentage value
-short status_calc_aspd(struct block_list *bl, struct status_change *sc, short flag)
+static short status_calc_aspd(struct block_list *bl, struct status_change *sc, short flag)
{
#ifdef RENEWAL_ASPD
int pots = 0, bonus = 0;
@@ -6054,7 +6060,7 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl
#endif
}
-short status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int aspd)
+static short status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int aspd)
{
nullpo_ret(bl);
if (!sc || !sc->count)
@@ -6074,7 +6080,7 @@ short status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int
/// Calculates an object's ASPD modifier (alters the base amotion value).
/// Note that the scale of aspd_rate is 1000 = 100%.
-short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate)
+static short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate)
{
int i;
@@ -6217,7 +6223,7 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int
return (short)cap_value(aspd_rate,0,SHRT_MAX);
}
-unsigned short status_calc_dmotion(struct block_list *bl, struct status_change *sc, int dmotion)
+static unsigned short status_calc_dmotion(struct block_list *bl, struct status_change *sc, int dmotion)
{
nullpo_ret(bl);
// It has been confirmed on official servers that MvP mobs have no dmotion even without endure
@@ -6235,7 +6241,7 @@ unsigned short status_calc_dmotion(struct block_list *bl, struct status_change *
return (unsigned short)cap_value(dmotion,0,USHRT_MAX);
}
-unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc, uint64 maxhp)
+static unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc, uint64 maxhp)
{
if (!sc || !sc->count)
@@ -6315,7 +6321,7 @@ unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc,
return (unsigned int)cap_value(maxhp, 1, UINT_MAX);
}
-unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc, unsigned int maxsp)
+static unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc, unsigned int maxsp)
{
if (!sc || !sc->count)
return cap_value(maxsp, 1, UINT_MAX);
@@ -6354,7 +6360,7 @@ unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc,
return cap_value(maxsp, 1, UINT_MAX);
}
-unsigned char status_calc_element(struct block_list *bl, struct status_change *sc, int element)
+static unsigned char status_calc_element(struct block_list *bl, struct status_change *sc, int element)
{
if(!sc || !sc->count)
return element;
@@ -6375,7 +6381,7 @@ unsigned char status_calc_element(struct block_list *bl, struct status_change *s
return (unsigned char)cap_value(element,0,UCHAR_MAX);
}
-unsigned char status_calc_element_lv(struct block_list *bl, struct status_change *sc, int lv)
+static unsigned char status_calc_element_lv(struct block_list *bl, struct status_change *sc, int lv)
{
if(!sc || !sc->count)
return lv;
@@ -6398,7 +6404,7 @@ unsigned char status_calc_element_lv(struct block_list *bl, struct status_change
return (unsigned char)cap_value(lv,1,4);
}
-unsigned char status_calc_attack_element(struct block_list *bl, struct status_change *sc, int element)
+static unsigned char status_calc_attack_element(struct block_list *bl, struct status_change *sc, int element)
{
if(!sc || !sc->count)
return element;
@@ -6439,7 +6445,7 @@ unsigned char status_calc_attack_element(struct block_list *bl, struct status_ch
* @param mode The starting mode.
* @return The calculated mode.
*/
-uint32 status_calc_mode(const struct block_list *bl, const struct status_change *sc, uint32 mode)
+static uint32 status_calc_mode(const struct block_list *bl, const struct status_change *sc, uint32 mode)
{
if (sc == NULL || sc->count == 0)
return mode & MD_MASK;
@@ -6460,7 +6466,7 @@ uint32 status_calc_mode(const struct block_list *bl, const struct status_change
* @param bl The requested bl.
* @return The bl's name or NULL if not available.
*/
-const char *status_get_name(const struct block_list *bl)
+static const char *status_get_name(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6480,12 +6486,12 @@ const char *status_get_name(const struct block_list *bl)
}
/*==========================================
-* Get the class of the current bl
-* return
-* 0 = fail
-* class_id = success
-*------------------------------------------*/
-int status_get_class(const struct block_list *bl)
+ * Get the class of the current bl
+ * return
+ * 0 = fail
+ * class_id = success
+ *------------------------------------------*/
+static int status_get_class(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6500,12 +6506,12 @@ int status_get_class(const struct block_list *bl)
return 0;
}
/*==========================================
-* Get the base level of the current bl
-* return
-* 1 = fail
-* level = success
-*------------------------------------------*/
-int status_get_lv(const struct block_list *bl)
+ * Get the base level of the current bl
+ * return
+ * 1 = fail
+ * level = success
+ *------------------------------------------*/
+static int status_get_lv(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6520,7 +6526,7 @@ int status_get_lv(const struct block_list *bl)
return 1;
}
-struct regen_data *status_get_regen_data(struct block_list *bl)
+static struct regen_data *status_get_regen_data(struct block_list *bl)
{
nullpo_retr(NULL, bl);
switch (bl->type) {
@@ -6533,7 +6539,7 @@ struct regen_data *status_get_regen_data(struct block_list *bl)
}
}
-struct status_data *status_get_status_data(struct block_list *bl)
+static struct status_data *status_get_status_data(struct block_list *bl)
{
nullpo_retr(&status->dummy, bl);
@@ -6554,7 +6560,7 @@ struct status_data *status_get_status_data(struct block_list *bl)
}
}
-struct status_data *status_get_base_status(struct block_list *bl)
+static struct status_data *status_get_base_status(struct block_list *bl)
{
nullpo_retr(NULL, bl);
switch (bl->type) {
@@ -6578,7 +6584,7 @@ struct status_data *status_get_base_status(struct block_list *bl)
}
}
-defType status_get_def(struct block_list *bl)
+static defType status_get_def(struct block_list *bl)
{
struct unit_data *ud;
struct status_data *st = status->get_status_data(bl);
@@ -6590,7 +6596,7 @@ defType status_get_def(struct block_list *bl)
return cap_value(def, DEFTYPE_MIN, DEFTYPE_MAX);
}
-unsigned short status_get_speed(struct block_list *bl)
+static unsigned short status_get_speed(struct block_list *bl)
{
nullpo_ret(bl);
if (bl->type == BL_NPC) //Only BL with speed data but no status_data [Skotlex]
@@ -6598,7 +6604,7 @@ unsigned short status_get_speed(struct block_list *bl)
return status->get_status_data(bl)->speed;
}
-int status_get_party_id(const struct block_list *bl)
+static int status_get_party_id(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6654,7 +6660,7 @@ int status_get_party_id(const struct block_list *bl)
return 0;
}
-int status_get_guild_id(const struct block_list *bl)
+static int status_get_guild_id(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6720,7 +6726,7 @@ int status_get_guild_id(const struct block_list *bl)
return 0;
}
-int status_get_emblem_id(const struct block_list *bl)
+static int status_get_emblem_id(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
@@ -6782,7 +6788,7 @@ int status_get_emblem_id(const struct block_list *bl)
return 0;
}
-int status_get_mexp(const struct block_list *bl)
+static int status_get_mexp(const struct block_list *bl)
{
nullpo_ret(bl);
if (bl->type == BL_MOB)
@@ -6792,7 +6798,7 @@ int status_get_mexp(const struct block_list *bl)
return 0;
}
-int status_get_race2(const struct block_list *bl)
+static int status_get_race2(const struct block_list *bl)
{
nullpo_ret(bl);
if (bl->type == BL_MOB)
@@ -6802,13 +6808,13 @@ int status_get_race2(const struct block_list *bl)
return 0;
}
-int status_isdead(struct block_list *bl)
+static int status_isdead(struct block_list *bl)
{
nullpo_ret(bl);
return status->get_status_data(bl)->hp == 0;
}
-int status_isimmune(struct block_list *bl)
+static int status_isimmune(struct block_list *bl)
{
struct status_change *sc = NULL;
nullpo_ret(bl);
@@ -6825,7 +6831,7 @@ int status_isimmune(struct block_list *bl)
return 0;
}
-struct view_data *status_get_viewdata(struct block_list *bl)
+static struct view_data *status_get_viewdata(struct block_list *bl)
{
nullpo_retr(NULL, bl);
switch (bl->type) {
@@ -6840,7 +6846,7 @@ struct view_data *status_get_viewdata(struct block_list *bl)
return NULL;
}
-void status_set_viewdata(struct block_list *bl, int class_)
+static void status_set_viewdata(struct block_list *bl, int class_)
{
struct view_data* vd;
nullpo_retv(bl);
@@ -6991,7 +6997,7 @@ void status_set_viewdata(struct block_list *bl, int class_)
}
/// Returns the status_change data of bl or NULL if it doesn't exist.
-struct status_change *status_get_sc(struct block_list *bl)
+static struct status_change *status_get_sc(struct block_list *bl)
{
if (bl != NULL) {
switch (bl->type) {
@@ -7006,7 +7012,7 @@ struct status_change *status_get_sc(struct block_list *bl)
return NULL;
}
-void status_change_init(struct block_list *bl)
+static void status_change_init(struct block_list *bl)
{
struct status_change *sc = status->get_sc(bl);
nullpo_retv(sc);
@@ -7019,7 +7025,7 @@ void status_change_init(struct block_list *bl)
* @see status_change_start for the expected parameters.
* @return the adjusted duration based on flag values.
*/
-int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int tick, int flag)
+static int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int tick, int flag)
{
//Percentual resistance: 10000 = 100% Resist
//Example: 50% -> sc_def=5000 -> 25%; 5000ms -> tick_def=5000 -> 2500ms
@@ -7380,7 +7386,7 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ
}
/* [Ind/Hercules] fast-checkin sc-display array */
-void status_display_add(struct map_session_data *sd, enum sc_type type, int dval1, int dval2, int dval3)
+static void status_display_add(struct map_session_data *sd, enum sc_type type, int dval1, int dval2, int dval3)
{
struct sc_display_entry *entry;
int i;
@@ -7409,7 +7415,7 @@ void status_display_add(struct map_session_data *sd, enum sc_type type, int dval
sd->sc_display[ sd->sc_display_count - 1 ] = entry;
}
-void status_display_remove(struct map_session_data *sd, enum sc_type type)
+static void status_display_remove(struct map_session_data *sd, enum sc_type type)
{
int i;
@@ -7461,7 +7467,7 @@ void status_display_remove(struct map_session_data *sd, enum sc_type type)
* @retval 0 if no status change happened.
* @retval 1 if the status change was successfully applied.
*/
-int status_change_start(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag)
+static int status_change_start(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag)
{
struct map_session_data *sd = NULL;
struct status_change* sc;
@@ -9728,7 +9734,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
return 1;
}
-bool status_change_start_unknown_sc(struct block_list *src, struct block_list *bl, enum sc_type type, int calc_flag, int rate, int val1, int val2, int val3, int val4, int tick, int flag)
+static bool status_change_start_unknown_sc(struct block_list *src, struct block_list *bl, enum sc_type type, int calc_flag, int rate, int val1, int val2, int val3, int val4, int tick, int flag)
{
Assert_retr(false, type >= SC_NONE && type < SC_MAX);
if (calc_flag == SCB_NONE && status->dbs->SkillChangeTable[type] == 0 && status->dbs->IconChangeTable[type] == 0) {
@@ -9739,7 +9745,7 @@ bool status_change_start_unknown_sc(struct block_list *src, struct block_list *b
return false;
}
-void status_change_start_display(struct map_session_data *sd, enum sc_type type, int val1, int val2, int val3, int val4)
+static void status_change_start_display(struct map_session_data *sd, enum sc_type type, int val1, int val2, int val3, int val4)
{
Assert_retv(type >= SC_NONE && type < SC_MAX);
@@ -9769,7 +9775,7 @@ void status_change_start_display(struct map_session_data *sd, enum sc_type type,
*
* @retval val_flag.
*/
-int status_get_val_flag(enum sc_type type)
+static int status_get_val_flag(enum sc_type type)
{
int val_flag = 0;
switch (type) {
@@ -9921,7 +9927,7 @@ int status_get_val_flag(enum sc_type type)
*
* @retval option flag.
*/
-int status_change_start_set_option(struct block_list *bl, struct status_change* sc, enum sc_type type, int val1, int val2, int val3, int val4)
+static int status_change_start_set_option(struct block_list *bl, struct status_change *sc, enum sc_type type, int val1, int val2, int val3, int val4)
{
int opt_flag = 1;
@@ -10111,7 +10117,7 @@ int status_change_start_set_option(struct block_list *bl, struct status_change*
* @param bl Status change target bl.
* @param type Status change type.
*/
-void status_change_start_stop_action(struct block_list *bl, enum sc_type type)
+static void status_change_start_stop_action(struct block_list *bl, enum sc_type type)
{
nullpo_retv(bl);
switch (type) {
@@ -10198,7 +10204,7 @@ void status_change_start_stop_action(struct block_list *bl, enum sc_type type)
* @retval false if no status change happened, or the other sc can be started regardless.
* @retval true if the status change was successfully applied and the other sc shouldn't be started.
*/
-bool status_end_sc_before_start(struct block_list *bl, struct status_data *st, struct status_change* sc, enum sc_type type, int undead_flag, int val1, int val2, int val3, int val4)
+static bool status_end_sc_before_start(struct block_list *bl, struct status_data *st, struct status_change *sc, enum sc_type type, int undead_flag, int val1, int val2, int val3, int val4)
{
nullpo_retr(true, bl);
nullpo_retr(true, st);
@@ -10479,7 +10485,7 @@ bool status_end_sc_before_start(struct block_list *bl, struct status_data *st, s
* @retval true if boss resist.
* @retval false if boss not resist.
*/
-bool status_is_boss_resist_sc(enum sc_type type)
+static bool status_is_boss_resist_sc(enum sc_type type)
{
if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX)
return true;
@@ -10544,7 +10550,7 @@ bool status_is_boss_resist_sc(enum sc_type type)
* @retval true if immune resist.
* @retval false if not immune resist.
*/
-bool status_is_immune_to_status(struct status_change* sc, enum sc_type type)
+static bool status_is_immune_to_status(struct status_change *sc, enum sc_type type)
{
nullpo_retr(true, sc);
if (sc->data[SC_REFRESH]) {
@@ -10618,15 +10624,15 @@ bool status_is_immune_to_status(struct status_change* sc, enum sc_type type)
}
/*==========================================
-* Ending all status except those listed.
-* @TODO maybe usefull for dispel instead reseting a liste there.
-* type:
-* 0 - PC killed -> Place here statuses that do not dispel on death.
-* 1 - If for some reason status_change_end decides to still keep the status when quitting.
-* 2 - Do clif
-* 3 - Do not remove some permanent/time-independent effects
-*------------------------------------------*/
-int status_change_clear(struct block_list* bl, int type)
+ * Ending all status except those listed.
+ * @TODO maybe usefull for dispel instead reseting a liste there.
+ * type:
+ * 0 - PC killed -> Place here statuses that do not dispel on death.
+ * 1 - If for some reason status_change_end decides to still keep the status when quitting.
+ * 2 - Do clif
+ * 3 - Do not remove some permanent/time-independent effects
+ *------------------------------------------*/
+static int status_change_clear(struct block_list *bl, int type)
{
struct status_change* sc;
int i;
@@ -10683,9 +10689,9 @@ int status_change_clear(struct block_list* bl, int type)
}
/*==========================================
-* Special condition we want to effectuate, check before ending a status.
-*------------------------------------------*/
-int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const char* file, int line)
+ * Special condition we want to effectuate, check before ending a status.
+ *------------------------------------------*/
+static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, const char *file, int line)
{
struct map_session_data *sd;
struct status_change *sc;
@@ -11428,7 +11434,8 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
return 1;
}
-int kaahi_heal_timer(int tid, int64 tick, int id, intptr_t data) {
+static int kaahi_heal_timer(int tid, int64 tick, int id, intptr_t data)
+{
struct block_list *bl;
struct status_change *sc;
struct status_change_entry *sce;
@@ -11460,10 +11467,10 @@ int kaahi_heal_timer(int tid, int64 tick, int id, intptr_t data) {
}
/*==========================================
-* For recusive status, like for each 5s we drop sp etc.
-* Reseting the end timer.
-*------------------------------------------*/
-int status_change_timer(int tid, int64 tick, int id, intptr_t data)
+ * For recusive status, like for each 5s we drop sp etc.
+ * Reseting the end timer.
+ *------------------------------------------*/
+static int status_change_timer(int tid, int64 tick, int id, intptr_t data)
{
enum sc_type type = (sc_type)data;
struct block_list *bl;
@@ -12339,9 +12346,9 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
}
/*==========================================
-* Foreach iteration of repetitive status
-*------------------------------------------*/
-int status_change_timer_sub(struct block_list* bl, va_list ap)
+ * Foreach iteration of repetitive status
+ *------------------------------------------*/
+static int status_change_timer_sub(struct block_list *bl, va_list ap)
{
struct status_change* tsc;
@@ -12417,10 +12424,17 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
return 0;
}
-int status_get_total_def(struct block_list *src) { return status->get_status_data(src)->def2 + (short)status->get_def(src); }
-int status_get_total_mdef(struct block_list *src) { return status->get_status_data(src)->mdef2 + (short)status_get_mdef(src); }
+static int status_get_total_def(struct block_list *src)
+{
+ return status->get_status_data(src)->def2 + (short)status->get_def(src);
+}
-int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int flag)
+static int status_get_total_mdef(struct block_list *src)
+{
+ return status->get_status_data(src)->mdef2 + (short)status_get_mdef(src);
+}
+
+static int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int flag)
{
#ifdef RENEWAL
int min = 0, max = 0;
@@ -12483,13 +12497,13 @@ int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int fl
}
/**
-* Get bl's matk_max and matk_min values depending on flag
-* @param flag
-* 0 - Get MATK
-* 1 - Get MATK w/o SC bonuses
-* 3 - Get MATK w/o EATK & SC bonuses
-**/
-void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_max, unsigned short *matk_min)
+ * Get bl's matk_max and matk_min values depending on flag
+ * @param flag
+ * 0 - Get MATK
+ * 1 - Get MATK w/o SC bonuses
+ * 3 - Get MATK w/o EATK & SC bonuses
+ */
+static void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_max, unsigned short *matk_min)
{
struct status_data *st;
struct status_change *sc;
@@ -12601,9 +12615,9 @@ void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_m
#undef status_get_homluk
/**
-* Gets a random matk value depending on min matk and max matk
-**/
-unsigned short status_get_rand_matk(unsigned short matk_max, unsigned short matk_min)
+ * Gets a random matk value depending on min matk and max matk
+ */
+static unsigned short status_get_rand_matk(unsigned short matk_max, unsigned short matk_min)
{
if ( matk_max > matk_min )
return matk_min + rnd() % (matk_max - matk_min);
@@ -12612,17 +12626,17 @@ unsigned short status_get_rand_matk(unsigned short matk_max, unsigned short matk
}
/**
-* Get bl's matk value depending on flag
-* @param flag [malufett]
-* 1 - Get MATK w/o SC bonuses
-* 2 - Get modified MATK
-* 3 - Get MATK w/o eATK & SC bonuses
-* @retval 1 failure
-* @retval MATK success
-*
-* Shouldn't change _any_ value! [Panikon]
-**/
-int status_get_matk(struct block_list *bl, int flag)
+ * Get bl's matk value depending on flag
+ * @param flag [malufett]
+ * 1 - Get MATK w/o SC bonuses
+ * 2 - Get modified MATK
+ * 3 - Get MATK w/o eATK & SC bonuses
+ * @retval 1 failure
+ * @retval MATK success
+ *
+ * Shouldn't change _any_ value! [Panikon]
+ */
+static int status_get_matk(struct block_list *bl, int flag)
{
struct status_data *st;
unsigned short matk_max, matk_min;
@@ -12649,9 +12663,9 @@ int status_get_matk(struct block_list *bl, int flag)
}
/**
-* Updates bl's MATK values
-**/
-void status_update_matk(struct block_list *bl)
+ * Updates bl's MATK values
+ */
+static void status_update_matk(struct block_list *bl)
{
struct status_data *st;
struct status_change *sc;
@@ -12676,11 +12690,11 @@ void status_update_matk(struct block_list *bl)
}
/*==========================================
-* Clears buffs/debuffs of a character.
-* type&1 -> buffs, type&2 -> debuffs
-* type&4 -> especific debuffs(implemented with refresh)
-*------------------------------------------*/
-int status_change_clear_buffs (struct block_list* bl, int type)
+ * Clears buffs/debuffs of a character.
+ * type&1 -> buffs, type&2 -> debuffs
+ * type&4 -> especific debuffs(implemented with refresh)
+ *------------------------------------------*/
+static int status_change_clear_buffs(struct block_list *bl, int type)
{
int i;
struct status_change *sc= status->get_sc(bl);
@@ -12742,7 +12756,7 @@ int status_change_clear_buffs (struct block_list* bl, int type)
return 0;
}
-int status_change_spread(struct block_list *src, struct block_list *bl)
+static int status_change_spread(struct block_list *src, struct block_list *bl)
{
int i, flag = 0;
struct status_change *sc = status->get_sc(src);
@@ -12833,7 +12847,7 @@ int status_change_spread(struct block_list *src, struct block_list *bl)
}
//Natural regen related stuff.
-int status_natural_heal(struct block_list* bl, va_list args)
+static int status_natural_heal(struct block_list *bl, va_list args)
{
struct regen_data *regen;
struct status_data *st;
@@ -13021,7 +13035,7 @@ int status_natural_heal(struct block_list* bl, va_list args)
}
//Natural heal main timer.
-int status_natural_heal_timer(int tid, int64 tick, int id, intptr_t data)
+static int status_natural_heal_timer(int tid, int64 tick, int id, intptr_t data)
{
// This difference is always positive and lower than UINT_MAX (~24 days)
status->natural_heal_diff_tick = (unsigned int)cap_value(DIFF_TICK(tick,status->natural_heal_prev_tick), 0, UINT_MAX);
@@ -13031,12 +13045,12 @@ int status_natural_heal_timer(int tid, int64 tick, int id, intptr_t data)
}
/**
-* Get the chance to upgrade a piece of equipment.
-* @param wlv The weapon type of the item to refine (see see enum refine_type)
-* @param refine The target refine level
-* @return The chance to refine the item, in percent (0~100)
-**/
-int status_get_refine_chance(enum refine_type wlv, int refine, enum refine_chance_type type)
+ * Get the chance to upgrade a piece of equipment.
+ * @param wlv The weapon type of the item to refine (see see enum refine_type)
+ * @param refine The target refine level
+ * @return The chance to refine the item, in percent (0~100)
+ */
+static int status_get_refine_chance(enum refine_type wlv, int refine, enum refine_chance_type type)
{
Assert_ret((int)wlv >= REFINE_TYPE_ARMOR && wlv < REFINE_TYPE_MAX);
@@ -13049,7 +13063,7 @@ int status_get_refine_chance(enum refine_type wlv, int refine, enum refine_chanc
return status->dbs->refine_info[wlv].chance[type][refine];
}
-int status_get_sc_type(sc_type type)
+static int status_get_sc_type(sc_type type)
{
if( type <= SC_NONE || type >= SC_MAX )
@@ -13058,7 +13072,7 @@ int status_get_sc_type(sc_type type)
return status->dbs->sc_conf[type];
}
-void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *jdb)
+static void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *jdb)
{
struct config_setting_t *temp = NULL;
int i32 = 0;
@@ -13288,14 +13302,15 @@ void status_read_job_db_sub(int idx, const char *name, struct config_setting_t *
}
}
+/* [malufett/Hercules] */
/*------------------------------------------
-* DB reading.
-* job_db.conf - weight, hp, sp, aspd
-* job_db2.txt - job level stat bonuses
-* size_fix.txt - size adjustment table for weapons
-* refine_db.txt - refining data table
-*------------------------------------------*/
-void status_read_job_db(void) /* [malufett/Hercules] */
+ * DB reading.
+ * job_db.conf - weight, hp, sp, aspd
+ * job_db2.txt - job level stat bonuses
+ * size_fix.txt - size adjustment table for weapons
+ * refine_db.txt - refining data table
+ *------------------------------------------*/
+static void status_read_job_db(void)
{
int i = 0;
struct config_t job_db_conf;
@@ -13326,7 +13341,7 @@ void status_read_job_db(void) /* [malufett/Hercules] */
libconfig->destroy(&job_db_conf);
}
-bool status_readdb_job2(char* fields[], int columns, int current)
+static bool status_readdb_job2(char *fields[], int columns, int current)
{
int idx, class, i;
@@ -13346,7 +13361,7 @@ bool status_readdb_job2(char* fields[], int columns, int current)
return true;
}
-bool status_readdb_sizefix(char* fields[], int columns, int current)
+static bool status_readdb_sizefix(char *fields[], int columns, int current)
{
unsigned int i;
@@ -13370,7 +13385,7 @@ bool status_readdb_sizefix(char* fields[], int columns, int current)
* validation errors.
* @return # of the validated entry, or 0 in case of failure.
*/
-int status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *name, const char *source)
+static int status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *name, const char *source)
{
struct config_setting_t *rate = NULL;
int type = REFINE_TYPE_ARMOR, bonus_per_level = 0, rnd_bonus_v = 0, rnd_bonus_lv = 0;
@@ -13491,7 +13506,7 @@ int status_readdb_refine_libconfig_sub(struct config_setting_t *r, const char *n
* @param *filename File name, relative to the database path.
* @return The number of found entries.
*/
-int status_readdb_refine_libconfig(const char *filename)
+static int status_readdb_refine_libconfig(const char *filename)
{
bool duplicate[REFINE_TYPE_MAX];
struct config_t refine_db_conf;
@@ -13523,7 +13538,7 @@ int status_readdb_refine_libconfig(const char *filename)
return count;
}
-bool status_readdb_scconfig(char* fields[], int columns, int current)
+static bool status_readdb_scconfig(char *fields[], int columns, int current)
{
int val = 0;
char* type = fields[0];
@@ -13549,7 +13564,7 @@ bool status_readdb_scconfig(char* fields[], int columns, int current)
* size_fixe.txt
* refine_db.txt
**/
-int status_readdb(void)
+static int status_readdb(void)
{
int i, j;
@@ -13590,9 +13605,9 @@ int status_readdb(void)
}
/*==========================================
-* Status db init and destroy.
-*------------------------------------------*/
-int do_init_status(bool minimal)
+ * Status db init and destroy.
+ *------------------------------------------*/
+static int do_init_status(bool minimal)
{
if (minimal)
return 0;
@@ -13609,16 +13624,16 @@ int do_init_status(bool minimal)
return 0;
}
-void do_final_status(void)
+static void do_final_status(void)
{
ers_destroy(status->data_ers);
}
/*=====================================
-* Default Functions : status.h
-* Generated by HerculesInterfaceMaker
-* created by Susu
-*-------------------------------------*/
+ * Default Functions : status.h
+ * Generated by HerculesInterfaceMaker
+ * created by Susu
+ *-------------------------------------*/
void status_defaults(void)
{
status = &status_s;
@@ -13777,8 +13792,6 @@ void status_defaults(void)
status->read_job_db_sub = status_read_job_db_sub;
status->set_sc = status_set_sc;
status->copy = status_copy;
-#ifndef RENEWAL
status->base_matk_min = status_base_matk_min;
-#endif // RENEWAL
status->base_matk_max = status_base_matk_max;
}
diff --git a/src/map/storage.c b/src/map/storage.c
index 0465765e3..4123ddc7c 100644
--- a/src/map/storage.c
+++ b/src/map/storage.c
@@ -41,8 +41,8 @@
#include <stdlib.h>
#include <string.h>
-struct storage_interface storage_s;
-struct guild_storage_interface gstorage_s;
+static struct storage_interface storage_s;
+static struct guild_storage_interface gstorage_s;
struct storage_interface *storage;
struct guild_storage_interface *gstorage;
@@ -50,7 +50,7 @@ struct guild_storage_interface *gstorage;
/*==========================================
* Sort items in the warehouse
*------------------------------------------*/
-int storage_comp_item(const void *i1_, const void *i2_)
+static int storage_comp_item(const void *i1_, const void *i2_)
{
const struct item *i1 = i1_;
const struct item *i2 = i2_;
@@ -65,7 +65,7 @@ int storage_comp_item(const void *i1_, const void *i2_)
}
//Sort item by storage_comp_item (nameid)
-void storage_sortitem(struct item* items, unsigned int size)
+static void storage_sortitem(struct item *items, unsigned int size)
{
nullpo_retv(items);
@@ -79,7 +79,7 @@ void storage_sortitem(struct item* items, unsigned int size)
* Parses storage and saves 'dirty' ones upon reconnect. [Skotlex]
* @see DBApply
*/
-int storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap)
+static int storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap)
{
struct guild_storage *stor = DB->data2ptr(data);
nullpo_ret(stor);
@@ -90,7 +90,7 @@ int storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap)
}
//Function to be invoked upon server reconnection to char. To save all 'dirty' storages [Skotlex]
-void do_reconnect_storage(void)
+static void do_reconnect_storage(void)
{
gstorage->db->foreach(gstorage->db, storage->reconnect_sub);
}
@@ -100,7 +100,7 @@ void do_reconnect_storage(void)
* 0 - success
* 1 - fail
*------------------------------------------*/
-int storage_storageopen(struct map_session_data *sd)
+static int storage_storageopen(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -132,7 +132,7 @@ int storage_storageopen(struct map_session_data *sd)
/* helper function
* checking if 2 item structure are identique
*/
-int compare_item(struct item *a, struct item *b)
+static int compare_item(struct item *a, struct item *b)
{
if( a->nameid == b->nameid &&
a->identify == b->identify &&
@@ -155,7 +155,7 @@ int compare_item(struct item *a, struct item *b)
/*==========================================
* Internal add-item function.
*------------------------------------------*/
-int storage_additem(struct map_session_data* sd, struct item* item_data, int amount)
+static int storage_additem(struct map_session_data *sd, struct item *item_data, int amount)
{
struct item_data *data = NULL;
struct item *it = NULL;
@@ -238,7 +238,7 @@ int storage_additem(struct map_session_data* sd, struct item* item_data, int amo
/*==========================================
* Internal del-item function
*------------------------------------------*/
-int storage_delitem(struct map_session_data* sd, int n, int amount)
+static int storage_delitem(struct map_session_data *sd, int n, int amount)
{
struct item *it = NULL;
@@ -276,7 +276,7 @@ int storage_delitem(struct map_session_data* sd, int n, int amount)
* 0 : fail
* 1 : success
*------------------------------------------*/
-int storage_add_from_inventory(struct map_session_data* sd, int index, int amount)
+static int storage_add_from_inventory(struct map_session_data *sd, int index, int amount)
{
nullpo_ret(sd);
@@ -309,7 +309,7 @@ int storage_add_from_inventory(struct map_session_data* sd, int index, int amoun
* 0 : fail
* 1 : success
*------------------------------------------*/
-int storage_add_to_inventory(struct map_session_data* sd, int index, int amount)
+static int storage_add_to_inventory(struct map_session_data *sd, int index, int amount)
{
int flag;
struct item *it = NULL;
@@ -344,7 +344,7 @@ int storage_add_to_inventory(struct map_session_data* sd, int index, int amount)
* 0 : fail
* 1 : success
*------------------------------------------*/
-int storage_storageaddfromcart(struct map_session_data* sd, int index, int amount)
+static int storage_storageaddfromcart(struct map_session_data *sd, int index, int amount)
{
nullpo_ret(sd);
@@ -375,7 +375,7 @@ int storage_storageaddfromcart(struct map_session_data* sd, int index, int amoun
* 0 : fail
* 1 : success
*------------------------------------------*/
-int storage_storagegettocart(struct map_session_data* sd, int index, int amount)
+static int storage_storagegettocart(struct map_session_data *sd, int index, int amount)
{
int flag = 0;
struct item *it = NULL;
@@ -409,7 +409,7 @@ int storage_storagegettocart(struct map_session_data* sd, int index, int amount)
/*==========================================
* Modified By Valaris to save upon closing [massdriller]
*------------------------------------------*/
-void storage_storageclose(struct map_session_data* sd)
+static void storage_storageclose(struct map_session_data *sd)
{
int i = 0;
@@ -438,7 +438,7 @@ void storage_storageclose(struct map_session_data* sd)
/*==========================================
* When quitting the game.
*------------------------------------------*/
-void storage_storage_quit(struct map_session_data* sd, int flag)
+static void storage_storage_quit(struct map_session_data *sd, int flag)
{
nullpo_retv(sd);
@@ -451,7 +451,7 @@ void storage_storage_quit(struct map_session_data* sd, int flag)
/**
* @see DBCreateData
*/
-struct DBData create_guildstorage(union DBKey key, va_list args)
+static struct DBData create_guildstorage(union DBKey key, va_list args)
{
struct guild_storage *gs = NULL;
gs = (struct guild_storage *) aCalloc(sizeof(struct guild_storage), 1);
@@ -459,7 +459,7 @@ struct DBData create_guildstorage(union DBKey key, va_list args)
return DB->ptr2data(gs);
}
-struct guild_storage *guild2storage_ensure(int guild_id)
+static struct guild_storage *guild2storage_ensure(int guild_id)
{
struct guild_storage *gs = NULL;
if(guild->search(guild_id) != NULL)
@@ -467,20 +467,20 @@ struct guild_storage *guild2storage_ensure(int guild_id)
return gs;
}
-int guild_storage_delete(int guild_id)
+static int guild_storage_delete(int guild_id)
{
idb_remove(gstorage->db,guild_id);
return 0;
}
/*==========================================
-* Attempt to open guild storage for sd
-* return
-* 0 : success (open or req to create a new one)
-* 1 : fail
-* 2 : no guild for sd
+ * Attempt to open guild storage for sd
+ * return
+ * 0 : success (open or req to create a new one)
+ * 1 : fail
+ * 2 : no guild for sd
*------------------------------------------*/
-int storage_guild_storageopen(struct map_session_data* sd)
+static int storage_guild_storageopen(struct map_session_data *sd)
{
struct guild_storage *gstor;
@@ -516,12 +516,12 @@ int storage_guild_storageopen(struct map_session_data* sd)
}
/*==========================================
-* Attempt to add an item in guild storage, then refresh it
-* return
-* 0 : success
-* 1 : fail
+ * Attempt to add an item in guild storage, then refresh it
+ * return
+ * 0 : success
+ * 1 : fail
*------------------------------------------*/
-int guild_storage_additem(struct map_session_data* sd, struct guild_storage* stor, struct item* item_data, int amount)
+static int guild_storage_additem(struct map_session_data *sd, struct guild_storage *stor, struct item *item_data, int amount)
{
struct item_data *data;
int i;
@@ -579,12 +579,12 @@ int guild_storage_additem(struct map_session_data* sd, struct guild_storage* sto
}
/*==========================================
-* Attempt to delete an item in guild storage, then refresh it
-* return
-* 0 : success
-* 1 : fail
+ * Attempt to delete an item in guild storage, then refresh it
+ * return
+ * 0 : success
+ * 1 : fail
*------------------------------------------*/
-int guild_storage_delitem(struct map_session_data* sd, struct guild_storage* stor, int n, int amount)
+static int guild_storage_delitem(struct map_session_data *sd, struct guild_storage *stor, int n, int amount)
{
nullpo_retr(1, sd);
nullpo_retr(1, stor);
@@ -605,13 +605,13 @@ int guild_storage_delitem(struct map_session_data* sd, struct guild_storage* sto
}
/*==========================================
-* Attempt to add an item in guild storage from inventory, then refresh it
-* @index : inventory idx
-* return
-* 0 : fail
-* 1 : succes
+ * Attempt to add an item in guild storage from inventory, then refresh it
+ * @index : inventory idx
+ * return
+ * 0 : fail
+ * 1 : succes
*------------------------------------------*/
-int storage_guild_storageadd(struct map_session_data* sd, int index, int amount)
+static int storage_guild_storageadd(struct map_session_data *sd, int index, int amount)
{
struct guild_storage *stor;
@@ -644,13 +644,13 @@ int storage_guild_storageadd(struct map_session_data* sd, int index, int amount)
}
/*==========================================
-* Attempt to retrieve an item from guild storage to inventory, then refresh it
-* @index : storage idx
-* return
-* 0 : fail
-* 1 : success
+ * Attempt to retrieve an item from guild storage to inventory, then refresh it
+ * @index : storage idx
+ * return
+ * 0 : fail
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storageget(struct map_session_data* sd, int index, int amount)
+static int storage_guild_storageget(struct map_session_data *sd, int index, int amount)
{
struct guild_storage *stor;
int flag;
@@ -685,13 +685,13 @@ int storage_guild_storageget(struct map_session_data* sd, int index, int amount)
}
/*==========================================
-* Attempt to add an item in guild storage from cart, then refresh it
-* @index : cart inventory idx
-* return
-* 0 : fail
-* 1 : success
+ * Attempt to add an item in guild storage from cart, then refresh it
+ * @index : cart inventory idx
+ * return
+ * 0 : fail
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storageaddfromcart(struct map_session_data* sd, int index, int amount)
+static int storage_guild_storageaddfromcart(struct map_session_data *sd, int index, int amount)
{
struct guild_storage *stor;
@@ -717,13 +717,13 @@ int storage_guild_storageaddfromcart(struct map_session_data* sd, int index, int
}
/*==========================================
-* Attempt to retrieve an item from guild storage to cart, then refresh it
-* @index : storage idx
-* return
-* 0 : fail
-* 1 : success
+ * Attempt to retrieve an item from guild storage to cart, then refresh it
+ * @index : storage idx
+ * return
+ * 0 : fail
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storagegettocart(struct map_session_data* sd, int index, int amount)
+static int storage_guild_storagegettocart(struct map_session_data *sd, int index, int amount)
{
struct guild_storage *stor;
@@ -749,12 +749,12 @@ int storage_guild_storagegettocart(struct map_session_data* sd, int index, int a
}
/*==========================================
-* Request to save guild storage
-* return
-* 0 : fail (no storage)
-* 1 : success
+ * Request to save guild storage
+ * return
+ * 0 : fail (no storage)
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storagesave(int account_id, int guild_id, int flag)
+static int storage_guild_storagesave(int account_id, int guild_id, int flag)
{
struct guild_storage *stor = idb_get(gstorage->db,guild_id);
@@ -770,12 +770,12 @@ int storage_guild_storagesave(int account_id, int guild_id, int flag)
}
/*==========================================
-* ACK save of guild storage
-* return
-* 0 : fail (no storage)
-* 1 : success
+ * ACK save of guild storage
+ * return
+ * 0 : fail (no storage)
+ * 1 : success
*------------------------------------------*/
-int storage_guild_storagesaved(int guild_id)
+static int storage_guild_storagesaved(int guild_id)
{
struct guild_storage *stor;
@@ -790,7 +790,7 @@ int storage_guild_storagesaved(int guild_id)
}
//Close storage for sd and save it
-int storage_guild_storageclose(struct map_session_data* sd)
+static int storage_guild_storageclose(struct map_session_data *sd)
{
struct guild_storage *stor;
@@ -810,7 +810,7 @@ int storage_guild_storageclose(struct map_session_data* sd)
return 0;
}
-int storage_guild_storage_quit(struct map_session_data* sd, int flag)
+static int storage_guild_storage_quit(struct map_session_data *sd, int flag)
{
struct guild_storage *stor;
@@ -839,14 +839,14 @@ int storage_guild_storage_quit(struct map_session_data* sd, int flag)
return 0;
}
-void do_init_gstorage(bool minimal)
+static void do_init_gstorage(bool minimal)
{
if (minimal)
return;
gstorage->db = idb_alloc(DB_OPT_RELEASE_DATA);
}
-void do_final_gstorage(void)
+static void do_final_gstorage(void)
{
db_destroy(gstorage->db);
}
diff --git a/src/map/trade.c b/src/map/trade.c
index 316ed14d9..d4f846d19 100644
--- a/src/map/trade.c
+++ b/src/map/trade.c
@@ -40,13 +40,13 @@
#include <stdio.h>
#include <string.h>
-struct trade_interface trade_s;
+static struct trade_interface trade_s;
struct trade_interface *trade;
/*==========================================
* Initiates a trade request.
*------------------------------------------*/
-void trade_traderequest(struct map_session_data *sd, struct map_session_data *target_sd)
+static void trade_traderequest(struct map_session_data *sd, struct map_session_data *target_sd)
{
nullpo_retv(sd);
@@ -118,7 +118,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta
* Weird enough, the client should only send 3/4
* and the server is the one that can reply 0~2
*------------------------------------------*/
-void trade_tradeack(struct map_session_data *sd, int type)
+static void trade_tradeack(struct map_session_data *sd, int type)
{
struct map_session_data *tsd;
nullpo_retv(sd);
@@ -192,7 +192,7 @@ void trade_tradeack(struct map_session_data *sd, int type)
* @retval 0 The trade can continue
* @retval 1 Hack attempt
**/
-int impossible_trade_check(struct map_session_data *sd)
+static int impossible_trade_check(struct map_session_data *sd)
{
struct item inventory[MAX_INVENTORY];
char message_to_gm[200];
@@ -253,7 +253,7 @@ int impossible_trade_check(struct map_session_data *sd)
/*==========================================
* Checks if trade is possible (against zeny limits, inventory limits, etc)
*------------------------------------------*/
-int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
+static int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
{
struct item inventory[MAX_INVENTORY];
struct item inventory2[MAX_INVENTORY];
@@ -343,7 +343,7 @@ int trade_check(struct map_session_data *sd, struct map_session_data *tsd)
/*==========================================
* Adds an item/qty to the trade window
*------------------------------------------*/
-void trade_tradeadditem(struct map_session_data *sd, short index, short amount)
+static void trade_tradeadditem(struct map_session_data *sd, short index, short amount)
{
struct map_session_data *target_sd;
struct item *item;
@@ -438,7 +438,7 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount)
/*==========================================
* Adds the specified amount of zeny to the trade window
*------------------------------------------*/
-void trade_tradeaddzeny(struct map_session_data* sd, int amount)
+static void trade_tradeaddzeny(struct map_session_data *sd, int amount)
{
struct map_session_data* target_sd;
nullpo_retv(sd);
@@ -464,7 +464,7 @@ void trade_tradeaddzeny(struct map_session_data* sd, int amount)
/*==========================================
* 'Ok' button on the trade window is pressed.
*------------------------------------------*/
-void trade_tradeok(struct map_session_data *sd)
+static void trade_tradeok(struct map_session_data *sd)
{
struct map_session_data *target_sd;
@@ -485,7 +485,7 @@ void trade_tradeok(struct map_session_data *sd)
/*==========================================
* 'Cancel' is pressed. (or trade was force-canceled by the code)
*------------------------------------------*/
-void trade_tradecancel(struct map_session_data *sd)
+static void trade_tradecancel(struct map_session_data *sd)
{
struct map_session_data *target_sd;
int trade_i;
@@ -545,7 +545,7 @@ void trade_tradecancel(struct map_session_data *sd)
/*==========================================
* lock sd and tsd trade data, execute the trade, clear, then save players
*------------------------------------------*/
-void trade_tradecommit(struct map_session_data *sd)
+static void trade_tradecommit(struct map_session_data *sd)
{
struct map_session_data *tsd;
int trade_i;
diff --git a/src/map/unit.c b/src/map/unit.c
index 36e095b4b..2fd8d6efb 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -62,10 +62,10 @@
#include <stdlib.h>
#include <string.h>
-const short dirx[8]={0,-1,-1,-1,0,1,1,1};
-const short diry[8]={1,1,0,-1,-1,-1,0,1};
+const short dirx[8] = { 0, -1, -1, -1, 0, 1, 1, 1 };
+const short diry[8] = { 1, 1, 0, -1, -1, -1, 0, 1 };
-struct unit_interface unit_s;
+static struct unit_interface unit_s;
struct unit_interface *unit;
/**
@@ -74,7 +74,7 @@ struct unit_interface *unit;
* @param bl block_list to process
* @return a pointer to the given object's unit_data
**/
-struct unit_data* unit_bl2ud(struct block_list *bl)
+static struct unit_data *unit_bl2ud(struct block_list *bl)
{
if (bl == NULL) return NULL;
if (bl->type == BL_PC) return &BL_UCAST(BL_PC, bl)->ud;
@@ -94,7 +94,7 @@ struct unit_data* unit_bl2ud(struct block_list *bl)
* @param bl block_list to process
* @return a pointer to the given object's unit_data
*/
-struct unit_data *unit_bl2ud2(struct block_list *bl)
+static struct unit_data *unit_bl2ud2(struct block_list *bl)
{
struct npc_data *nd = BL_CAST(BL_NPC, bl);
if (nd != NULL && nd->ud == &npc->base_ud) {
@@ -105,7 +105,7 @@ struct unit_data *unit_bl2ud2(struct block_list *bl)
return unit->bl2ud(bl);
}
-int unit_walktoxy_sub(struct block_list *bl)
+static int unit_walktoxy_sub(struct block_list *bl)
{
int i;
struct walkpath_data wpd;
@@ -176,7 +176,7 @@ int unit_walktoxy_sub(struct block_list *bl)
* @param data: Not used
* @return 1: Success 0: Fail (No valid bl)
*/
-int unit_step_timer(int tid, int64 tick, int id, intptr_t data)
+static int unit_step_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl;
struct unit_data *ud;
@@ -236,7 +236,7 @@ int unit_step_timer(int tid, int64 tick, int id, intptr_t data)
return 1;
}
-int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
+static int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
{
int i;
int x,y,dx,dy;
@@ -488,7 +488,7 @@ int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
}
-int unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
+static int unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl = map->id2bl(id);
@@ -503,7 +503,7 @@ int unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
//&2 -> force walking
//&4 -> Delay walking if the reason you can't walk is the canwalk delay
//&8 -> Search for an unoccupied cell and cancel if none available
-int unit_walktoxy( struct block_list *bl, short x, short y, int flag)
+static int unit_walktoxy(struct block_list *bl, short x, short y, int flag)
{
struct unit_data* ud = NULL;
struct status_change* sc = NULL;
@@ -564,7 +564,7 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag)
}
//To set Mob's CHASE/FOLLOW states (shouldn't be done if there's no path to reach)
-static inline void set_mobstate(struct block_list* bl, int flag)
+static inline void set_mobstate(struct block_list *bl, int flag)
{
struct mob_data* md = BL_CAST(BL_MOB,bl);
@@ -572,7 +572,7 @@ static inline void set_mobstate(struct block_list* bl, int flag)
md->state.skillstate = md->state.aggressive ? MSS_FOLLOW : MSS_RUSH;
}
-int unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data)
+static int unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl = map->id2bl(id);
struct unit_data *ud = bl?unit->bl2ud(bl):NULL;
@@ -590,7 +590,7 @@ int unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data)
// Chases a tbl. If the flag&1, use hard-path seek,
// if flag&2, start attacking upon arrival within range, otherwise just walk to that character.
-int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int flag)
+static int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int flag)
{
struct unit_data *ud = NULL;
struct status_change *sc = NULL;
@@ -652,7 +652,7 @@ int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int
* Called by unit_run when an object was hit
* @param sd Required only when using SC_WUGDASH
**/
-void unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_session_data *sd, enum sc_type type)
+static void unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_session_data *sd, enum sc_type type)
{
int lv;
struct unit_data *ud;
@@ -687,7 +687,7 @@ void unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_se
* @retval true Finished running
* @retval false Hit an object/Couldn't run
**/
-bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_type type)
+static bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_type type)
{
struct status_change *sc;
short to_x,to_y,dir_x,dir_y;
@@ -748,7 +748,7 @@ bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc_type t
}
//Makes bl attempt to run dist cells away from target. Uses hard-paths.
-int unit_escape(struct block_list *bl, struct block_list *target, short dist)
+static int unit_escape(struct block_list *bl, struct block_list *target, short dist)
{
uint8 dir;
nullpo_ret(bl);
@@ -759,7 +759,7 @@ int unit_escape(struct block_list *bl, struct block_list *target, short dist)
}
//Instant warp function.
-int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath)
+static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath)
{
short dx,dy;
uint8 dir;
@@ -823,7 +823,7 @@ int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool
return 1;
}
-int unit_setdir(struct block_list *bl,unsigned char dir)
+static int unit_setdir(struct block_list *bl, unsigned char dir)
{
struct unit_data *ud;
nullpo_ret(bl );
@@ -836,7 +836,7 @@ int unit_setdir(struct block_list *bl,unsigned char dir)
return 0;
}
-uint8 unit_getdir(struct block_list *bl)
+static uint8 unit_getdir(struct block_list *bl)
{
struct unit_data *ud;
nullpo_ret(bl);
@@ -852,7 +852,7 @@ uint8 unit_getdir(struct block_list *bl)
// map cell restrictions are respected.
// flag:
// &1 Do not send position update packets.
-int unit_blown(struct block_list* bl, int dx, int dy, int count, int flag)
+static int unit_blown(struct block_list *bl, int dx, int dy, int count, int flag)
{
if(count) {
struct map_session_data* sd;
@@ -918,7 +918,7 @@ int unit_blown(struct block_list* bl, int dx, int dy, int count, int flag)
//Warps a unit/ud to a given map/position.
//In the case of players, pc->setpos is used.
//it respects the no warp flags, so it is safe to call this without doing nowarpto/nowarp checks.
-int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type)
+static int unit_warp(struct block_list *bl, short m, short x, short y, clr_type type)
{
struct unit_data *ud;
nullpo_ret(bl);
@@ -994,7 +994,7 @@ int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type)
* Flag values: @see unit_stopwalking_flag.
* Upper bytes may be used for other purposes depending on the unit type.
*------------------------------------------*/
-int unit_stop_walking(struct block_list *bl, int flag)
+static int unit_stop_walking(struct block_list *bl, int flag)
{
struct unit_data *ud;
const struct TimerData* td;
@@ -1037,7 +1037,7 @@ int unit_stop_walking(struct block_list *bl, int flag)
return 1;
}
-int unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv)
+static int unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv)
{
return unit->skilluse_id2(
src, target_id, skill_id, skill_lv,
@@ -1046,7 +1046,7 @@ int unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id, uin
);
}
-int unit_is_walking(struct block_list *bl)
+static int unit_is_walking(struct block_list *bl)
{
struct unit_data *ud = unit->bl2ud(bl);
nullpo_ret(bl);
@@ -1057,7 +1057,7 @@ int unit_is_walking(struct block_list *bl)
/*==========================================
* Determines if the bl can move based on status changes. [Skotlex]
*------------------------------------------*/
-int unit_can_move(struct block_list *bl)
+static int unit_can_move(struct block_list *bl)
{
struct map_session_data *sd;
struct unit_data *ud;
@@ -1169,7 +1169,7 @@ int unit_can_move(struct block_list *bl)
* Resume running after a walk delay
*------------------------------------------*/
-int unit_resume_running(int tid, int64 tick, int id, intptr_t data)
+static int unit_resume_running(int tid, int64 tick, int id, intptr_t data)
{
struct unit_data *ud = (struct unit_data *)data;
struct map_session_data *sd = map->id2sd(id);
@@ -1194,7 +1194,7 @@ int unit_resume_running(int tid, int64 tick, int id, intptr_t data)
* if type is 0, this is a damage induced delay: if previous delay is active, do not change it.
* if type is 1, this is a skill induced delay: walk-delay may only be increased, not decreased.
*------------------------------------------*/
-int unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type)
+static int unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type)
{
struct unit_data *ud = unit->bl2ud(bl);
if (delay <= 0 || !ud) return 0;
@@ -1236,7 +1236,7 @@ int unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type)
}
//-------------- stop here
-int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel)
+static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel)
{
struct unit_data *ud;
struct status_data *tstatus;
@@ -1303,7 +1303,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
return 0;
p_sd = map->charid2sd(sd->status.partner_id);
if (p_sd == NULL) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
target = &p_sd->bl;
@@ -1312,11 +1312,11 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
case GC_WEAPONCRUSH:
if( sc && sc->data[SC_COMBOATTACK] && sc->data[SC_COMBOATTACK]->val1 == GC_WEAPONBLOCKING ) {
if( (target=map->id2bl(sc->data[SC_COMBOATTACK]->val2)) == NULL ) {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_GC_WEAPONBLOCKING,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0, 0);
return 0;
}
} else {
- clif->skill_fail(sd,skill_id,USESKILL_FAIL_GC_WEAPONBLOCKING,0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_GC_WEAPONBLOCKING, 0, 0);
return 0;
}
break;
@@ -1375,7 +1375,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
if (sd) {
if ((skill->get_inf2(skill_id)&INF2_ENSEMBLE_SKILL) && skill->check_pc_partner(sd, skill_id, &skill_lv, 1, 0) < 1) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -1389,14 +1389,14 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
case BD_ENCORE:
//Prevent using the dance skill if you no longer have the skill in your tree.
if (!sd->skill_id_dance || pc->checkskill(sd, sd->skill_id_dance) <= 0){
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
sd->skill_id_old = skill_id;
break;
case WL_WHITEIMPRISON:
if (battle->check_target(src, target, BCT_SELF | BCT_ENEMY) < 0) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
return 0;
}
break;
@@ -1504,7 +1504,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
if (i == count) {
ARR_FIND(0, count, i, sd->devotion[i] == 0);
if(i == count) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0; // Can't cast on other characters when limit is reached
}
}
@@ -1512,7 +1512,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
break;
case AB_CLEARANCE:
if (target->type != BL_MOB && battle->check_target(src, target, BCT_PARTY) <= 0 && sd) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0, 0);
return 0;
}
break;
@@ -1674,7 +1674,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
return 1;
}
-int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv)
+static int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv)
{
return unit->skilluse_pos2(
src, skill_x, skill_y, skill_id, skill_lv,
@@ -1683,7 +1683,7 @@ int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, uint
);
}
-int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel)
+static int unit_skilluse_pos2(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel)
{
struct map_session_data *sd = NULL;
struct unit_data *ud = NULL;
@@ -1725,7 +1725,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui
if (map->getcell(src->m, src, skill_x, skill_y, CELL_CHKWALL)) {
// can't cast ground targeted spells on wall cells
- if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+ if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 0;
}
@@ -1827,7 +1827,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui
/*========================================
* update a block's attack target
*----------------------------------------*/
-int unit_set_target(struct unit_data* ud, int target_id)
+static int unit_set_target(struct unit_data *ud, int target_id)
{
nullpo_ret(ud);
@@ -1848,7 +1848,7 @@ int unit_set_target(struct unit_data* ud, int target_id)
* Stop a unit's attacks
* @param bl: Object to stop
*/
-void unit_stop_attack(struct block_list *bl)
+static void unit_stop_attack(struct block_list *bl)
{
struct unit_data *ud;
nullpo_retv(bl);
@@ -1870,7 +1870,7 @@ void unit_stop_attack(struct block_list *bl)
* Stop a unit's step action
* @param bl: Object to stop
*/
-void unit_stop_stepaction(struct block_list *bl)
+static void unit_stop_stepaction(struct block_list *bl)
{
struct unit_data *ud;
nullpo_retv(bl);
@@ -1892,7 +1892,7 @@ void unit_stop_stepaction(struct block_list *bl)
}
//Means current target is unattackable. For now only unlocks mobs.
-int unit_unattackable(struct block_list *bl)
+static int unit_unattackable(struct block_list *bl)
{
struct unit_data *ud = unit->bl2ud(bl);
nullpo_ret(bl);
@@ -1913,7 +1913,7 @@ int unit_unattackable(struct block_list *bl)
* Attack request
* If type is an ongoing attack
*------------------------------------------*/
-int unit_attack(struct block_list *src, int target_id, int continuous)
+static int unit_attack(struct block_list *src, int target_id, int continuous)
{
struct block_list *target;
struct unit_data *ud;
@@ -1983,7 +1983,7 @@ int unit_attack(struct block_list *src, int target_id, int continuous)
//Cancels an ongoing combo, resets attackable time and restarts the
//attack timer to resume attacking after amotion time. [Skotlex]
-int unit_cancel_combo(struct block_list *bl)
+static int unit_cancel_combo(struct block_list *bl)
{
struct unit_data *ud;
@@ -2006,7 +2006,7 @@ int unit_cancel_combo(struct block_list *bl)
/*==========================================
*
*------------------------------------------*/
-bool unit_can_reach_pos(struct block_list *bl,int x,int y, int easy)
+static bool unit_can_reach_pos(struct block_list *bl, int x, int y, int easy)
{
nullpo_retr(false, bl);
@@ -2019,7 +2019,7 @@ bool unit_can_reach_pos(struct block_list *bl,int x,int y, int easy)
/*==========================================
*
*------------------------------------------*/
-bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range, int easy, short *x, short *y)
+static bool unit_can_reach_bl(struct block_list *bl, struct block_list *tbl, int range, int easy, short *x, short *y)
{
short dx,dy;
struct walkpath_data wpd;
@@ -2070,7 +2070,7 @@ bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range,
/*==========================================
* Calculates position of Pet/Mercenary/Homunculus/Elemental
*------------------------------------------*/
-int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
+static int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
{
int dx, dy, x, y;
struct unit_data *ud = unit->bl2ud(bl);
@@ -2124,7 +2124,7 @@ int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
/*==========================================
* Continuous Attack (function timer)
*------------------------------------------*/
-int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick)
+static int unit_attack_timer_sub(struct block_list *src, int tid, int64 tick)
{
struct block_list *target;
struct unit_data *ud;
@@ -2170,7 +2170,7 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick)
if (!battle_config.sdelay_attack_enable && DIFF_TICK(ud->canact_tick, tick) > 0 && !(sd && (pc->checkskill(sd, SA_FREECAST) > 0 || (skill->get_inf2(ud->skill_id) & (INF2_FREE_CAST_REDUCED | INF2_FREE_CAST_NORMAL)) != 0)))
{ // attacking when under cast delay has restrictions:
if( tid == INVALID_TIMER ) { //requested attack.
- if(sd) clif->skill_fail(sd,1,USESKILL_FAIL_SKILLINTERVAL,0);
+ if(sd) clif->skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return 0;
}
//Otherwise, we are in a combo-attack, delay this until your canact time is over. [Skotlex]
@@ -2273,7 +2273,7 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick)
return 1;
}
-int unit_attack_timer(int tid, int64 tick, int id, intptr_t data)
+static int unit_attack_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl;
bl = map->id2bl(id);
@@ -2287,7 +2287,7 @@ int unit_attack_timer(int tid, int64 tick, int id, intptr_t data)
* flag&1: Cast-Cancel invoked.
* flag&2: Cancel only if skill is can be cancel.
*------------------------------------------*/
-int unit_skillcastcancel(struct block_list *bl,int type)
+static int unit_skillcastcancel(struct block_list *bl, int type)
{
struct map_session_data *sd = NULL;
struct unit_data *ud = unit->bl2ud( bl);
@@ -2345,7 +2345,7 @@ int unit_skillcastcancel(struct block_list *bl,int type)
}
// unit_data initialization process
-void unit_dataset(struct block_list *bl)
+static void unit_dataset(struct block_list *bl)
{
struct unit_data *ud = unit->bl2ud(bl);
nullpo_retv(ud);
@@ -2354,7 +2354,7 @@ void unit_dataset(struct block_list *bl)
ud->bl = bl;
}
-void unit_init_ud(struct unit_data *ud)
+static void unit_init_ud(struct unit_data *ud)
{
nullpo_retv(ud);
@@ -2371,7 +2371,7 @@ void unit_init_ud(struct unit_data *ud)
/*==========================================
* Counts the number of units attacking 'bl'
*------------------------------------------*/
-int unit_counttargeted(struct block_list* bl)
+static int unit_counttargeted(struct block_list *bl)
{
struct unit_data* ud;
if (bl && (ud = unit->bl2ud(bl)) != NULL)
@@ -2382,7 +2382,7 @@ int unit_counttargeted(struct block_list* bl)
/*==========================================
*
*------------------------------------------*/
-int unit_fixdamage(struct block_list *src, struct block_list *target, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2)
+static int unit_fixdamage(struct block_list *src, struct block_list *target, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2)
{
nullpo_ret(target);
@@ -2395,7 +2395,7 @@ int unit_fixdamage(struct block_list *src, struct block_list *target, int sdelay
/*==========================================
* To change the size of the char (player or mob only)
*------------------------------------------*/
-int unit_changeviewsize(struct block_list *bl,short size)
+static int unit_changeviewsize(struct block_list *bl, short size)
{
nullpo_ret(bl);
@@ -2419,7 +2419,7 @@ int unit_changeviewsize(struct block_list *bl,short size)
* Otherwise it is assumed bl is being warped.
* On-Kill specific stuff is not performed here, look at status->damage for that.
*------------------------------------------*/
-int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, int line, const char* func)
+static int unit_remove_map(struct block_list *bl, clr_type clrtype, const char *file, int line, const char *func)
{
struct unit_data *ud = unit->bl2ud(bl);
struct status_change *sc = status->get_sc(bl);
@@ -2665,7 +2665,7 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i
return 1;
}
-void unit_remove_map_pc(struct map_session_data *sd, clr_type clrtype)
+static void unit_remove_map_pc(struct map_session_data *sd, clr_type clrtype)
{
nullpo_retv(sd);
unit->remove_map(&sd->bl,clrtype,ALC_MARK);
@@ -2683,7 +2683,7 @@ void unit_remove_map_pc(struct map_session_data *sd, clr_type clrtype)
unit->remove_map(&sd->ed->bl, clrtype, ALC_MARK);
}
-void unit_free_pc(struct map_session_data *sd)
+static void unit_free_pc(struct map_session_data *sd)
{
nullpo_retv(sd);
if (sd->pd) unit->free(&sd->pd->bl,CLR_OUTSIGHT);
@@ -2697,7 +2697,7 @@ void unit_free_pc(struct map_session_data *sd)
* Function to free all related resources to the bl
* if unit is on map, it is removed using the clrtype specified
*------------------------------------------*/
-int unit_free(struct block_list *bl, clr_type clrtype)
+static int unit_free(struct block_list *bl, clr_type clrtype)
{
struct unit_data *ud = unit->bl2ud( bl );
nullpo_ret(bl);
@@ -2948,7 +2948,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
return 0;
}
-int do_init_unit(bool minimal)
+static int do_init_unit(bool minimal)
{
if (minimal)
return 0;
@@ -2961,7 +2961,7 @@ int do_init_unit(bool minimal)
return 0;
}
-int do_final_unit(void)
+static int do_final_unit(void)
{
// nothing to do
return 0;
diff --git a/src/map/unit.h b/src/map/unit.h
index 761b3a0b6..0c1c2405c 100644
--- a/src/map/unit.h
+++ b/src/map/unit.h
@@ -81,16 +81,16 @@ struct unit_data {
struct view_data {
int16 class;
- uint16 weapon,
+ int weapon,
shield, //Or left-hand weapon.
robe,
head_top,
head_mid,
head_bottom,
hair_style,
- hair_color,
- cloth_color,
body_style;
+ uint16 hair_color,
+ cloth_color;
char sex;
unsigned dead_sit : 2;
};
diff --git a/src/map/vending.c b/src/map/vending.c
index 9a35bdccb..692f5f378 100644
--- a/src/map/vending.c
+++ b/src/map/vending.c
@@ -40,7 +40,7 @@
#include <stdio.h>
#include <string.h>
-struct vending_interface vending_s;
+static struct vending_interface vending_s;
struct vending_interface *vending;
/// Returns an unique vending shop id.
@@ -52,7 +52,7 @@ static inline unsigned int getid(void)
/*==========================================
* Close shop
*------------------------------------------*/
-void vending_closevending(struct map_session_data* sd)
+static void vending_closevending(struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -66,7 +66,7 @@ void vending_closevending(struct map_session_data* sd)
/*==========================================
* Request a shop's item list
*------------------------------------------*/
-void vending_vendinglistreq(struct map_session_data* sd, unsigned int id)
+static void vending_vendinglistreq(struct map_session_data *sd, unsigned int id)
{
struct map_session_data* vsd;
nullpo_retv(sd);
@@ -89,7 +89,7 @@ void vending_vendinglistreq(struct map_session_data* sd, unsigned int id)
/*==========================================
* Purchase item(s) from a shop
*------------------------------------------*/
-void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, const uint8* data, int count)
+static void vending_purchasereq(struct map_session_data *sd, int aid, unsigned int uid, const uint8 *data, int count)
{
int i, j, cursor, w, new_ = 0, blank, vend_list[MAX_VENDING];
int64 z;
@@ -245,7 +245,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid,
* Open shop
* data := {<index>.w <amount>.w <value>.l}[count]
*------------------------------------------*/
-void vending_openvending(struct map_session_data* sd, const char* message, const uint8* data, int count)
+static void vending_openvending(struct map_session_data *sd, const char *message, const uint8 *data, int count)
{
int i, j;
int vending_skill_lvl;
@@ -257,14 +257,14 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
vending_skill_lvl = pc->checkskill(sd, MC_VENDING);
// skill level and cart check
if( !vending_skill_lvl || !pc_iscarton(sd) ) {
- clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
// check number of items in shop
if( count < 1 || count > MAX_VENDING || count > 2 + vending_skill_lvl ) {
// invalid item count
- clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0);
+ clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0, 0);
return;
}
@@ -298,7 +298,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
clif->message (sd->fd, msg_sd(sd,266)); //"Some of your items cannot be vended and were removed from the shop."
if( i == 0 ) { // no valid item found
- clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0); // custom reply packet
+ clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0, 0); // custom reply packet
return;
}
sd->state.prevend = sd->state.workinprogress = 0;
@@ -315,7 +315,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
/// Checks if an item is being sold in given player's vending.
-bool vending_search(struct map_session_data* sd, unsigned short nameid)
+static bool vending_search(struct map_session_data *sd, int nameid)
{
int i;
@@ -324,7 +324,7 @@ bool vending_search(struct map_session_data* sd, unsigned short nameid)
return false;
}
- ARR_FIND( 0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == (short)nameid );
+ ARR_FIND(0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == nameid);
if( i == sd->vend_num ) { // not found
return false;
}
@@ -335,7 +335,7 @@ bool vending_search(struct map_session_data* sd, unsigned short nameid)
/// Searches for all items in a vending, that match given ids, price and possible cards.
/// @return Whether or not the search should be continued.
-bool vending_searchall(struct map_session_data* sd, const struct s_search_store_search* s)
+static bool vending_searchall(struct map_session_data *sd, const struct s_search_store_search *s)
{
int i, c, slot;
unsigned int idx, cidx;
@@ -347,7 +347,7 @@ bool vending_searchall(struct map_session_data* sd, const struct s_search_store_
return true;
for( idx = 0; idx < s->item_count; idx++ ) {
- ARR_FIND( 0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == (short)s->itemlist[idx] );
+ ARR_FIND(0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == s->itemlist[idx]);
if( i == sd->vend_num ) {// not found
continue;
}
@@ -389,12 +389,12 @@ bool vending_searchall(struct map_session_data* sd, const struct s_search_store_
return true;
}
-void final(void)
+static void final(void)
{
db_destroy(vending->db);
}
-void init(bool minimal)
+static void init(bool minimal)
{
vending->db = idb_alloc(DB_OPT_BASE);
vending->next_id = 0;
diff --git a/src/map/vending.h b/src/map/vending.h
index 831e122e7..c994aad3a 100644
--- a/src/map/vending.h
+++ b/src/map/vending.h
@@ -45,7 +45,7 @@ struct vending_interface {
void (*open) (struct map_session_data* sd, const char* message, const uint8* data, int count);
void (*list) (struct map_session_data* sd, unsigned int id);
void (*purchase) (struct map_session_data* sd, int aid, unsigned int uid, const uint8* data, int count);
- bool (*search) (struct map_session_data* sd, unsigned short nameid);
+ bool (*search) (struct map_session_data* sd, int nameid);
bool (*searchall) (struct map_session_data* sd, const struct s_search_store_search* s);
};
diff --git a/src/plugins/HPMHooking.c b/src/plugins/HPMHooking.c
index e3b694c2b..ca64aca6a 100644
--- a/src/plugins/HPMHooking.c
+++ b/src/plugins/HPMHooking.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index 8aa1c6512..3bc6956ae 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -330,16 +330,16 @@ typedef void (*HPMHOOK_post_bg_config_read) (void);
#ifdef MAP_BUYINGSTORE_H /* buyingstore */
typedef bool (*HPMHOOK_pre_buyingstore_setup) (struct map_session_data **sd, unsigned char *slots);
typedef bool (*HPMHOOK_post_buyingstore_setup) (bool retVal___, struct map_session_data *sd, unsigned char slots);
-typedef void (*HPMHOOK_pre_buyingstore_create) (struct map_session_data **sd, int *zenylimit, unsigned char *result, const char **storename, const uint8 **itemlist, unsigned int *count);
-typedef void (*HPMHOOK_post_buyingstore_create) (struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const uint8 *itemlist, unsigned int count);
+typedef void (*HPMHOOK_pre_buyingstore_create) (struct map_session_data **sd, int *zenylimit, unsigned char *result, const char **storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub **itemlist, unsigned int *count);
+typedef void (*HPMHOOK_post_buyingstore_create) (struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist, unsigned int count);
typedef void (*HPMHOOK_pre_buyingstore_close) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_buyingstore_close) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_buyingstore_open) (struct map_session_data **sd, int *account_id);
typedef void (*HPMHOOK_post_buyingstore_open) (struct map_session_data *sd, int account_id);
-typedef void (*HPMHOOK_pre_buyingstore_trade) (struct map_session_data **sd, int *account_id, unsigned int *buyer_id, const uint8 **itemlist, unsigned int *count);
-typedef void (*HPMHOOK_post_buyingstore_trade) (struct map_session_data *sd, int account_id, unsigned int buyer_id, const uint8 *itemlist, unsigned int count);
-typedef bool (*HPMHOOK_pre_buyingstore_search) (struct map_session_data **sd, unsigned short *nameid);
-typedef bool (*HPMHOOK_post_buyingstore_search) (bool retVal___, struct map_session_data *sd, unsigned short nameid);
+typedef void (*HPMHOOK_pre_buyingstore_trade) (struct map_session_data **sd, int *account_id, unsigned int *buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub **itemlist, unsigned int *count);
+typedef void (*HPMHOOK_post_buyingstore_trade) (struct map_session_data *sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub *itemlist, unsigned int count);
+typedef bool (*HPMHOOK_pre_buyingstore_search) (struct map_session_data **sd, int *nameid);
+typedef bool (*HPMHOOK_post_buyingstore_search) (bool retVal___, struct map_session_data *sd, int nameid);
typedef bool (*HPMHOOK_pre_buyingstore_searchall) (struct map_session_data **sd, const struct s_search_store_search **s);
typedef bool (*HPMHOOK_post_buyingstore_searchall) (bool retVal___, struct map_session_data *sd, const struct s_search_store_search *s);
typedef unsigned int (*HPMHOOK_pre_buyingstore_getuid) (void);
@@ -436,8 +436,10 @@ typedef bool (*HPMHOOK_pre_chr_char_slotchange) (struct char_session_data **sd,
typedef bool (*HPMHOOK_post_chr_char_slotchange) (bool retVal___, struct char_session_data *sd, int fd, unsigned short from, unsigned short to);
typedef int (*HPMHOOK_pre_chr_rename_char_sql) (struct char_session_data **sd, int *char_id);
typedef int (*HPMHOOK_post_chr_rename_char_sql) (int retVal___, struct char_session_data *sd, int char_id);
-typedef int (*HPMHOOK_pre_chr_check_char_name) (char **name, char **esc_name);
-typedef int (*HPMHOOK_post_chr_check_char_name) (int retVal___, char *name, char *esc_name);
+typedef bool (*HPMHOOK_pre_chr_name_exists) (const char **name, const char **esc_name);
+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_divorce_char_sql) (int *partner_id1, int *partner_id2);
@@ -1028,10 +1030,8 @@ typedef void (*HPMHOOK_pre_clif_unequipitemack) (struct map_session_data **sd, i
typedef void (*HPMHOOK_post_clif_unequipitemack) (struct map_session_data *sd, int n, int pos, enum e_UNEQUIP_ITEM_ACK result);
typedef void (*HPMHOOK_pre_clif_useitemack) (struct map_session_data **sd, int *index, int *amount, bool *ok);
typedef void (*HPMHOOK_post_clif_useitemack) (struct map_session_data *sd, int index, int amount, bool ok);
-typedef void (*HPMHOOK_pre_clif_addcards) (unsigned char **buf, struct item **item);
-typedef void (*HPMHOOK_post_clif_addcards) (unsigned char *buf, struct item *item);
-typedef void (*HPMHOOK_pre_clif_addcards2) (unsigned short **cards, struct item **item);
-typedef void (*HPMHOOK_post_clif_addcards2) (unsigned short *cards, struct item *item);
+typedef void (*HPMHOOK_pre_clif_addcards) (struct EQUIPSLOTINFO **buf, struct item **item);
+typedef void (*HPMHOOK_post_clif_addcards) (struct EQUIPSLOTINFO *buf, struct item *item);
typedef void (*HPMHOOK_pre_clif_item_sub) (unsigned char **buf, int *n, struct item **i, struct item_data **id, int *equip);
typedef void (*HPMHOOK_post_clif_item_sub) (unsigned char *buf, int n, struct item *i, struct item_data *id, int equip);
typedef void (*HPMHOOK_pre_clif_getareachar_item) (struct map_session_data **sd, struct flooritem_data **fitem);
@@ -1040,10 +1040,12 @@ typedef void (*HPMHOOK_pre_clif_cart_additem_ack) (struct map_session_data **sd,
typedef void (*HPMHOOK_post_clif_cart_additem_ack) (struct map_session_data *sd, int flag);
typedef void (*HPMHOOK_pre_clif_cashshop_load) (void);
typedef void (*HPMHOOK_post_clif_cashshop_load) (void);
-typedef void (*HPMHOOK_pre_clif_package_announce) (struct map_session_data **sd, unsigned short *nameid, unsigned short *containerid);
-typedef void (*HPMHOOK_post_clif_package_announce) (struct map_session_data *sd, unsigned short nameid, unsigned short containerid);
-typedef void (*HPMHOOK_pre_clif_item_drop_announce) (struct map_session_data **sd, unsigned short *nameid, char **monsterName);
-typedef void (*HPMHOOK_post_clif_item_drop_announce) (struct map_session_data *sd, unsigned short nameid, char *monsterName);
+typedef void (*HPMHOOK_pre_clif_cashShopSchedule) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_cashShopSchedule) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_package_announce) (struct map_session_data **sd, int *nameid, int *containerid);
+typedef void (*HPMHOOK_post_clif_package_announce) (struct map_session_data *sd, int nameid, int containerid);
+typedef void (*HPMHOOK_pre_clif_item_drop_announce) (struct map_session_data **sd, int *nameid, char **monsterName);
+typedef void (*HPMHOOK_post_clif_item_drop_announce) (struct map_session_data *sd, int nameid, char *monsterName);
typedef void (*HPMHOOK_pre_clif_clearunit_single) (int *id, clr_type *type, int *fd);
typedef void (*HPMHOOK_post_clif_clearunit_single) (int id, clr_type type, int fd);
typedef void (*HPMHOOK_pre_clif_clearunit_area) (struct block_list **bl, clr_type *type);
@@ -1190,8 +1192,8 @@ typedef int (*HPMHOOK_pre_clif_outsight) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_clif_outsight) (int retVal___, struct block_list *bl, va_list ap);
typedef void (*HPMHOOK_pre_clif_skillcastcancel) (struct block_list **bl);
typedef void (*HPMHOOK_post_clif_skillcastcancel) (struct block_list *bl);
-typedef void (*HPMHOOK_pre_clif_skill_fail) (struct map_session_data **sd, uint16 *skill_id, enum useskill_fail_cause *cause, int *btype);
-typedef void (*HPMHOOK_post_clif_skill_fail) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype);
+typedef void (*HPMHOOK_pre_clif_skill_fail) (struct map_session_data **sd, uint16 *skill_id, enum useskill_fail_cause *cause, int *btype, int32 *item_id);
+typedef void (*HPMHOOK_post_clif_skill_fail) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id);
typedef void (*HPMHOOK_pre_clif_skill_cooldown) (struct map_session_data **sd, uint16 *skill_id, unsigned int *duration);
typedef void (*HPMHOOK_post_clif_skill_cooldown) (struct map_session_data *sd, uint16 skill_id, unsigned int duration);
typedef void (*HPMHOOK_pre_clif_skill_memomessage) (struct map_session_data **sd, int *type);
@@ -1254,8 +1256,8 @@ typedef int (*HPMHOOK_pre_clif_hpmeter_sub) (struct block_list **bl, va_list ap)
typedef int (*HPMHOOK_post_clif_hpmeter_sub) (int retVal___, struct block_list *bl, va_list ap);
typedef void (*HPMHOOK_pre_clif_upgrademessage) (int *fd, int *result, int *item_id);
typedef void (*HPMHOOK_post_clif_upgrademessage) (int fd, int result, int item_id);
-typedef void (*HPMHOOK_pre_clif_get_weapon_view) (struct map_session_data **sd, unsigned short **rhand, unsigned short **lhand);
-typedef void (*HPMHOOK_post_clif_get_weapon_view) (struct map_session_data *sd, unsigned short *rhand, unsigned short *lhand);
+typedef void (*HPMHOOK_pre_clif_get_weapon_view) (struct map_session_data **sd, int **rhand, int **lhand);
+typedef void (*HPMHOOK_post_clif_get_weapon_view) (struct map_session_data *sd, int *rhand, int *lhand);
typedef void (*HPMHOOK_pre_clif_gospel_info) (struct map_session_data **sd, int *type);
typedef void (*HPMHOOK_post_clif_gospel_info) (struct map_session_data *sd, int type);
typedef void (*HPMHOOK_pre_clif_feel_req) (int *fd, struct map_session_data **sd, uint16 *skill_lv);
@@ -1446,8 +1448,10 @@ typedef void (*HPMHOOK_pre_clif_messagecolor_self) (int *fd, uint32 *color, cons
typedef void (*HPMHOOK_post_clif_messagecolor_self) (int fd, uint32 color, const char *msg);
typedef void (*HPMHOOK_pre_clif_messagecolor) (struct block_list **bl, uint32 *color, const char **msg);
typedef void (*HPMHOOK_post_clif_messagecolor) (struct block_list *bl, uint32 color, const char *msg);
-typedef void (*HPMHOOK_pre_clif_disp_overhead) (struct block_list **bl, const char **mes);
-typedef void (*HPMHOOK_post_clif_disp_overhead) (struct block_list *bl, const char *mes);
+typedef void (*HPMHOOK_pre_clif_disp_overhead) (struct block_list **bl, const char **mes, enum send_target *target, struct block_list **target_bl);
+typedef void (*HPMHOOK_post_clif_disp_overhead) (struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl);
+typedef void (*HPMHOOK_pre_clif_notify_playerchat) (struct block_list **bl, const char **mes);
+typedef void (*HPMHOOK_post_clif_notify_playerchat) (struct block_list *bl, const char *mes);
typedef void (*HPMHOOK_pre_clif_msgtable) (struct map_session_data **sd, enum clif_messages *msg_id);
typedef void (*HPMHOOK_post_clif_msgtable) (struct map_session_data *sd, enum clif_messages msg_id);
typedef void (*HPMHOOK_pre_clif_msgtable_num) (struct map_session_data **sd, enum clif_messages *msg_id, int *value);
@@ -1502,6 +1506,8 @@ typedef void (*HPMHOOK_pre_clif_buyvending) (struct map_session_data **sd, int *
typedef void (*HPMHOOK_post_clif_buyvending) (struct map_session_data *sd, int index, int amount, int fail);
typedef void (*HPMHOOK_pre_clif_openvending) (struct map_session_data **sd, int *id, struct s_vending **vending_list);
typedef void (*HPMHOOK_post_clif_openvending) (struct map_session_data *sd, int id, struct s_vending *vending_list);
+typedef void (*HPMHOOK_pre_clif_openvendingAck) (int *fd, int *result);
+typedef void (*HPMHOOK_post_clif_openvendingAck) (int fd, int result);
typedef void (*HPMHOOK_pre_clif_vendingreport) (struct map_session_data **sd, int *index, int *amount, uint32 *char_id, int *zeny);
typedef void (*HPMHOOK_post_clif_vendingreport) (struct map_session_data *sd, int index, int amount, uint32 char_id, int zeny);
typedef void (*HPMHOOK_pre_clif_storagelist) (struct map_session_data **sd, struct item **items, int *items_length);
@@ -1794,12 +1800,12 @@ typedef void (*HPMHOOK_pre_clif_buyingstore_itemlist) (struct map_session_data *
typedef void (*HPMHOOK_post_clif_buyingstore_itemlist) (struct map_session_data *sd, struct map_session_data *pl_sd);
typedef void (*HPMHOOK_pre_clif_buyingstore_trade_failed_buyer) (struct map_session_data **sd, short *result);
typedef void (*HPMHOOK_post_clif_buyingstore_trade_failed_buyer) (struct map_session_data *sd, short result);
-typedef void (*HPMHOOK_pre_clif_buyingstore_update_item) (struct map_session_data **sd, unsigned short *nameid, unsigned short *amount, uint32 *char_id, int *zeny);
-typedef void (*HPMHOOK_post_clif_buyingstore_update_item) (struct map_session_data *sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny);
+typedef void (*HPMHOOK_pre_clif_buyingstore_update_item) (struct map_session_data **sd, int *nameid, unsigned short *amount, uint32 *char_id, int *zeny);
+typedef void (*HPMHOOK_post_clif_buyingstore_update_item) (struct map_session_data *sd, int nameid, unsigned short amount, uint32 char_id, int zeny);
typedef void (*HPMHOOK_pre_clif_buyingstore_delete_item) (struct map_session_data **sd, short *index, unsigned short *amount, int *price);
typedef void (*HPMHOOK_post_clif_buyingstore_delete_item) (struct map_session_data *sd, short index, unsigned short amount, int price);
-typedef void (*HPMHOOK_pre_clif_buyingstore_trade_failed_seller) (struct map_session_data **sd, short *result, unsigned short *nameid);
-typedef void (*HPMHOOK_post_clif_buyingstore_trade_failed_seller) (struct map_session_data *sd, short result, unsigned short nameid);
+typedef void (*HPMHOOK_pre_clif_buyingstore_trade_failed_seller) (struct map_session_data **sd, short *result, int *nameid);
+typedef void (*HPMHOOK_post_clif_buyingstore_trade_failed_seller) (struct map_session_data *sd, short result, int nameid);
typedef void (*HPMHOOK_pre_clif_search_store_info_ack) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_search_store_info_ack) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_search_store_info_failed) (struct map_session_data **sd, unsigned char *reason);
@@ -1862,8 +1868,8 @@ typedef void (*HPMHOOK_pre_clif_npc_market_purchase_ack) (struct map_session_dat
typedef void (*HPMHOOK_post_clif_npc_market_purchase_ack) (struct map_session_data *sd, const struct itemlist *item_list, unsigned char response);
typedef bool (*HPMHOOK_pre_clif_parse_roulette_db) (void);
typedef bool (*HPMHOOK_post_clif_parse_roulette_db) (bool retVal___);
-typedef void (*HPMHOOK_pre_clif_roulette_generate_ack) (struct map_session_data **sd, unsigned char *result, short *stage, short *prizeIdx, short *bonusItemID);
-typedef void (*HPMHOOK_post_clif_roulette_generate_ack) (struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID);
+typedef void (*HPMHOOK_pre_clif_roulette_generate_ack) (struct map_session_data **sd, unsigned char *result, short *stage, short *prizeIdx, int *bonusItemID);
+typedef void (*HPMHOOK_post_clif_roulette_generate_ack) (struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, int bonusItemID);
typedef void (*HPMHOOK_pre_clif_openmergeitem) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_openmergeitem) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_cancelmergeitem) (int *fd, struct map_session_data **sd);
@@ -2354,8 +2360,8 @@ typedef void (*HPMHOOK_pre_clif_rodex_open_write_mail) (int *fd, const char **re
typedef void (*HPMHOOK_post_clif_rodex_open_write_mail) (int fd, const char *receiver_name, int8 result);
typedef void (*HPMHOOK_pre_clif_pRodexAddItem) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pRodexAddItem) (int fd, struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_rodex_add_item_result) (struct map_session_data **sd, int16 *idx, int16 *amount, int8 *result);
-typedef void (*HPMHOOK_post_clif_rodex_add_item_result) (struct map_session_data *sd, int16 idx, int16 amount, int8 result);
+typedef void (*HPMHOOK_pre_clif_rodex_add_item_result) (struct map_session_data **sd, int16 *idx, int16 *amount, enum rodex_add_item *result);
+typedef void (*HPMHOOK_post_clif_rodex_add_item_result) (struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result);
typedef void (*HPMHOOK_pre_clif_pRodexRemoveItem) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pRodexRemoveItem) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_rodex_remove_item_result) (struct map_session_data **sd, int16 *idx, int16 *amount);
@@ -2394,12 +2400,12 @@ typedef void (*HPMHOOK_pre_clif_pRodexRefreshMaillist) (int *fd, struct map_sess
typedef void (*HPMHOOK_post_clif_pRodexRefreshMaillist) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pRodexRequestZeny) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pRodexRequestZeny) (int fd, struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_rodex_request_zeny) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, int8 *result);
-typedef void (*HPMHOOK_post_clif_rodex_request_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result);
+typedef void (*HPMHOOK_pre_clif_rodex_request_zeny) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, enum rodex_get_zeny *result);
+typedef void (*HPMHOOK_post_clif_rodex_request_zeny) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result);
typedef void (*HPMHOOK_pre_clif_pRodexRequestItems) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pRodexRequestItems) (int fd, struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_rodex_request_items) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, int8 *result);
-typedef void (*HPMHOOK_post_clif_rodex_request_items) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result);
+typedef void (*HPMHOOK_pre_clif_rodex_request_items) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, enum rodex_get_items *result);
+typedef void (*HPMHOOK_post_clif_rodex_request_items) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result);
typedef void (*HPMHOOK_pre_clif_rodex_icon) (int *fd, bool *show);
typedef void (*HPMHOOK_post_clif_rodex_icon) (int fd, bool show);
typedef void (*HPMHOOK_pre_clif_skill_scale) (struct block_list **bl, int *src_id, int *x, int *y, uint16 *skill_id, uint16 *skill_lv, int *casttime);
@@ -2448,8 +2454,8 @@ typedef bool (*HPMHOOK_pre_clif_stylist_read_db_libconfig_sub) (struct config_se
typedef bool (*HPMHOOK_post_clif_stylist_read_db_libconfig_sub) (bool retVal___, struct config_setting_t *it, int idx, const char *source);
typedef bool (*HPMHOOK_pre_clif_style_change_validate_requirements) (struct map_session_data **sd, int *type, int16 *idx);
typedef bool (*HPMHOOK_post_clif_style_change_validate_requirements) (bool retVal___, struct map_session_data *sd, int type, int16 idx);
-typedef void (*HPMHOOK_pre_clif_stylist_send_rodexitem) (struct map_session_data **sd, int16 *itemid);
-typedef void (*HPMHOOK_post_clif_stylist_send_rodexitem) (struct map_session_data *sd, int16 itemid);
+typedef void (*HPMHOOK_pre_clif_stylist_send_rodexitem) (struct map_session_data **sd, int *itemid);
+typedef void (*HPMHOOK_post_clif_stylist_send_rodexitem) (struct map_session_data *sd, int itemid);
typedef void (*HPMHOOK_pre_clif_pReqStyleChange) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pReqStyleChange) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_cz_req_style_change_sub) (struct map_session_data **sd, int *type, int16 *idx, bool *isitem);
@@ -3022,6 +3028,14 @@ typedef void (*HPMHOOK_pre_inter_elemental_sql_final) (void);
typedef void (*HPMHOOK_post_inter_elemental_sql_final) (void);
typedef int (*HPMHOOK_pre_inter_elemental_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_elemental_parse_frommap) (int retVal___, int fd);
+typedef bool (*HPMHOOK_pre_inter_elemental_create) (struct s_elemental **ele);
+typedef bool (*HPMHOOK_post_inter_elemental_create) (bool retVal___, struct s_elemental *ele);
+typedef bool (*HPMHOOK_pre_inter_elemental_save) (const struct s_elemental **ele);
+typedef bool (*HPMHOOK_post_inter_elemental_save) (bool retVal___, const struct s_elemental *ele);
+typedef bool (*HPMHOOK_pre_inter_elemental_load) (int *ele_id, int *char_id, struct s_elemental **ele);
+typedef bool (*HPMHOOK_post_inter_elemental_load) (bool retVal___, int ele_id, int char_id, struct s_elemental *ele);
+typedef bool (*HPMHOOK_pre_inter_elemental_delete) (int *ele_id);
+typedef bool (*HPMHOOK_post_inter_elemental_delete) (bool retVal___, int ele_id);
#endif // CHAR_INT_ELEMENTAL_H
#ifdef CHAR_INT_GUILD_H /* inter_guild */
typedef int (*HPMHOOK_pre_inter_guild_save_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
@@ -3064,10 +3078,38 @@ typedef int (*HPMHOOK_pre_inter_guild_charname_changed) (int *guild_id, int *acc
typedef int (*HPMHOOK_post_inter_guild_charname_changed) (int retVal___, int guild_id, int account_id, int char_id, char *name);
typedef int (*HPMHOOK_pre_inter_guild_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_guild_parse_frommap) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_inter_guild_leave) (int *guild_id, int *account_id, int *char_id);
-typedef int (*HPMHOOK_post_inter_guild_leave) (int retVal___, int guild_id, int account_id, int char_id);
typedef int (*HPMHOOK_pre_inter_guild_broken) (int *guild_id);
typedef int (*HPMHOOK_post_inter_guild_broken) (int retVal___, int guild_id);
+typedef struct guild* (*HPMHOOK_pre_inter_guild_create) (const char **name, const struct guild_member **master);
+typedef struct guild* (*HPMHOOK_post_inter_guild_create) (struct guild* retVal___, const char *name, const struct guild_member *master);
+typedef bool (*HPMHOOK_pre_inter_guild_add_member) (int *guild_id, const struct guild_member **member, int *map_fd);
+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) (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);
+typedef bool (*HPMHOOK_post_inter_guild_disband) (bool retVal___, int guild_id);
+typedef bool (*HPMHOOK_pre_inter_guild_update_basic_info) (int *guild_id, int *type, const void **data, int *len);
+typedef bool (*HPMHOOK_post_inter_guild_update_basic_info) (bool retVal___, int guild_id, int type, const void *data, int len);
+typedef bool (*HPMHOOK_pre_inter_guild_update_position) (int *guild_id, int *idx, const struct guild_position **p);
+typedef bool (*HPMHOOK_post_inter_guild_update_position) (bool retVal___, int guild_id, int idx, const struct guild_position *p);
+typedef bool (*HPMHOOK_pre_inter_guild_use_skill_point) (int *guild_id, uint16 *skill_id, int *account_id, int *max);
+typedef bool (*HPMHOOK_post_inter_guild_use_skill_point) (bool retVal___, int guild_id, uint16 skill_id, int account_id, int max);
+typedef bool (*HPMHOOK_pre_inter_guild_remove_alliance) (struct guild **g, int *guild_id, int *account_id1, int *account_id2, int *flag);
+typedef bool (*HPMHOOK_post_inter_guild_remove_alliance) (bool retVal___, struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
+typedef bool (*HPMHOOK_pre_inter_guild_change_alliance) (int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag);
+typedef bool (*HPMHOOK_post_inter_guild_change_alliance) (bool retVal___, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
+typedef bool (*HPMHOOK_pre_inter_guild_update_notice) (int *guild_id, const char **mes1, const char **mes2);
+typedef bool (*HPMHOOK_post_inter_guild_update_notice) (bool retVal___, int guild_id, const char *mes1, const char *mes2);
+typedef bool (*HPMHOOK_pre_inter_guild_update_emblem) (int *len, int *guild_id, const char **data);
+typedef bool (*HPMHOOK_post_inter_guild_update_emblem) (bool retVal___, int len, int guild_id, const char *data);
+typedef bool (*HPMHOOK_pre_inter_guild_update_castle_data) (int *castle_id, int *index, int *value);
+typedef bool (*HPMHOOK_post_inter_guild_update_castle_data) (bool retVal___, int castle_id, int index, int value);
+typedef bool (*HPMHOOK_pre_inter_guild_change_leader) (int *guild_id, const char **name, int *len);
+typedef bool (*HPMHOOK_post_inter_guild_change_leader) (bool retVal___, int guild_id, const char *name, int len);
#endif // CHAR_INT_GUILD_H
#ifdef CHAR_INT_HOMUN_H /* inter_homunculus */
typedef int (*HPMHOOK_pre_inter_homunculus_sql_init) (void);
@@ -3076,6 +3118,16 @@ typedef void (*HPMHOOK_pre_inter_homunculus_sql_final) (void);
typedef void (*HPMHOOK_post_inter_homunculus_sql_final) (void);
typedef int (*HPMHOOK_pre_inter_homunculus_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_homunculus_parse_frommap) (int retVal___, int fd);
+typedef bool (*HPMHOOK_pre_inter_homunculus_create) (struct s_homunculus **hd);
+typedef bool (*HPMHOOK_post_inter_homunculus_create) (bool retVal___, struct s_homunculus *hd);
+typedef bool (*HPMHOOK_pre_inter_homunculus_save) (const struct s_homunculus **hd);
+typedef bool (*HPMHOOK_post_inter_homunculus_save) (bool retVal___, const struct s_homunculus *hd);
+typedef bool (*HPMHOOK_pre_inter_homunculus_load) (int *homun_id, struct s_homunculus **hd);
+typedef bool (*HPMHOOK_post_inter_homunculus_load) (bool retVal___, int homun_id, struct s_homunculus *hd);
+typedef bool (*HPMHOOK_pre_inter_homunculus_delete) (int *homun_id);
+typedef bool (*HPMHOOK_post_inter_homunculus_delete) (bool retVal___, int homun_id);
+typedef bool (*HPMHOOK_pre_inter_homunculus_rename) (const char **name);
+typedef bool (*HPMHOOK_post_inter_homunculus_rename) (bool retVal___, const char *name);
#endif // CHAR_INT_HOMUN_H
#ifdef CHAR_INTER_H /* inter */
typedef const char* (*HPMHOOK_pre_inter_msg_txt) (int *msg_number);
@@ -3114,6 +3166,16 @@ typedef bool (*HPMHOOK_pre_inter_config_read_log) (const char **filename, const
typedef bool (*HPMHOOK_post_inter_config_read_log) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
typedef bool (*HPMHOOK_pre_inter_config_read_connection) (const char **filename, const struct config_t **config, bool *imported);
typedef bool (*HPMHOOK_post_inter_config_read_connection) (bool retVal___, const char *filename, const struct config_t *config, bool imported);
+typedef void (*HPMHOOK_pre_inter_accinfo) (int *u_fd, int *aid, int *castergroup, const char **query, int *map_fd);
+typedef void (*HPMHOOK_post_inter_accinfo) (int u_fd, int aid, int castergroup, const char *query, int map_fd);
+typedef void (*HPMHOOK_pre_inter_accinfo2) (bool *success, int *map_fd, int *u_fd, int *u_aid, int *account_id, const char **userid, const char **user_pass, const char **email, const char **last_ip, const char **lastlogin, const char **pin_code, const char **birthdate, int *group_id, int *logincount, int *state);
+typedef void (*HPMHOOK_post_inter_accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
+typedef struct WisData* (*HPMHOOK_pre_inter_add_wisdata) (int *fd, const unsigned char **src, const unsigned char **dst, const unsigned char **msg, int *msg_len);
+typedef struct WisData* (*HPMHOOK_post_inter_add_wisdata) (struct WisData* retVal___, int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len);
+typedef struct WisData* (*HPMHOOK_pre_inter_get_wisdata) (int *id);
+typedef struct WisData* (*HPMHOOK_post_inter_get_wisdata) (struct WisData* retVal___, int id);
+typedef void (*HPMHOOK_pre_inter_remove_wisdata) (int *id);
+typedef void (*HPMHOOK_post_inter_remove_wisdata) (int id);
#endif // CHAR_INTER_H
#ifdef CHAR_INT_MAIL_H /* inter_mail */
typedef int (*HPMHOOK_pre_inter_mail_sql_init) (void);
@@ -3132,6 +3194,16 @@ typedef bool (*HPMHOOK_pre_inter_mail_DeleteAttach) (int *mail_id);
typedef bool (*HPMHOOK_post_inter_mail_DeleteAttach) (bool retVal___, int mail_id);
typedef void (*HPMHOOK_pre_inter_mail_sendmail) (int *send_id, const char **send_name, int *dest_id, const char **dest_name, const char **title, const char **body, int *zeny, struct item **item);
typedef void (*HPMHOOK_post_inter_mail_sendmail) (int send_id, const char *send_name, int dest_id, const char *dest_name, const char *title, const char *body, int zeny, struct item *item);
+typedef bool (*HPMHOOK_pre_inter_mail_mark_read) (int *mail_id);
+typedef bool (*HPMHOOK_post_inter_mail_mark_read) (bool retVal___, int mail_id);
+typedef bool (*HPMHOOK_pre_inter_mail_get_attachment) (int *char_id, int *mail_id, struct mail_message **msg);
+typedef bool (*HPMHOOK_post_inter_mail_get_attachment) (bool retVal___, int char_id, int mail_id, struct mail_message *msg);
+typedef bool (*HPMHOOK_pre_inter_mail_delete) (int *char_id, int *mail_id);
+typedef bool (*HPMHOOK_post_inter_mail_delete) (bool retVal___, int char_id, int mail_id);
+typedef bool (*HPMHOOK_pre_inter_mail_return_message) (int *char_id, int *mail_id, int **new_mail);
+typedef bool (*HPMHOOK_post_inter_mail_return_message) (bool retVal___, int char_id, int mail_id, int *new_mail);
+typedef bool (*HPMHOOK_pre_inter_mail_send) (int *account_id, struct mail_message **msg);
+typedef bool (*HPMHOOK_post_inter_mail_send) (bool retVal___, int account_id, struct mail_message *msg);
#endif // CHAR_INT_MAIL_H
#ifdef CHAR_INT_MERCENARY_H /* inter_mercenary */
typedef bool (*HPMHOOK_pre_inter_mercenary_owner_fromsql) (int *char_id, struct mmo_charstatus **status);
@@ -3146,6 +3218,14 @@ typedef void (*HPMHOOK_pre_inter_mercenary_sql_final) (void);
typedef void (*HPMHOOK_post_inter_mercenary_sql_final) (void);
typedef int (*HPMHOOK_pre_inter_mercenary_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_mercenary_parse_frommap) (int retVal___, int fd);
+typedef bool (*HPMHOOK_pre_inter_mercenary_create) (struct s_mercenary **merc);
+typedef bool (*HPMHOOK_post_inter_mercenary_create) (bool retVal___, struct s_mercenary *merc);
+typedef bool (*HPMHOOK_pre_inter_mercenary_save) (const struct s_mercenary **merc);
+typedef bool (*HPMHOOK_post_inter_mercenary_save) (bool retVal___, const struct s_mercenary *merc);
+typedef bool (*HPMHOOK_pre_inter_mercenary_load) (int *merc_id, int *char_id, struct s_mercenary **merc);
+typedef bool (*HPMHOOK_post_inter_mercenary_load) (bool retVal___, int merc_id, int char_id, struct s_mercenary *merc);
+typedef bool (*HPMHOOK_pre_inter_mercenary_delete) (int *merc_id);
+typedef bool (*HPMHOOK_post_inter_mercenary_delete) (bool retVal___, int merc_id);
#endif // CHAR_INT_MERCENARY_H
#ifdef CHAR_INT_PARTY_H /* inter_party */
typedef int (*HPMHOOK_pre_inter_party_check_lv) (struct party_data **p);
@@ -3168,12 +3248,24 @@ typedef int (*HPMHOOK_pre_inter_party_check_empty) (struct party_data **p);
typedef int (*HPMHOOK_post_inter_party_check_empty) (int retVal___, struct party_data *p);
typedef int (*HPMHOOK_pre_inter_party_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_party_parse_frommap) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_inter_party_leave) (int *party_id, int *account_id, int *char_id);
-typedef int (*HPMHOOK_post_inter_party_leave) (int retVal___, int party_id, int account_id, int char_id);
+typedef bool (*HPMHOOK_pre_inter_party_leave) (int *party_id, int *account_id, int *char_id);
+typedef bool (*HPMHOOK_post_inter_party_leave) (bool retVal___, int party_id, int account_id, int char_id);
typedef int (*HPMHOOK_pre_inter_party_CharOnline) (int *char_id, int *party_id);
typedef int (*HPMHOOK_post_inter_party_CharOnline) (int retVal___, int char_id, int party_id);
typedef int (*HPMHOOK_pre_inter_party_CharOffline) (int *char_id, int *party_id);
typedef int (*HPMHOOK_post_inter_party_CharOffline) (int retVal___, int char_id, int party_id);
+typedef struct party_data* (*HPMHOOK_pre_inter_party_create) (const char **name, int *item, int *item2, const struct party_member **leader);
+typedef struct party_data* (*HPMHOOK_post_inter_party_create) (struct party_data* retVal___, const char *name, int item, int item2, const struct party_member *leader);
+typedef bool (*HPMHOOK_pre_inter_party_add_member) (int *party_id, const struct party_member **member);
+typedef bool (*HPMHOOK_post_inter_party_add_member) (bool retVal___, int party_id, const struct party_member *member);
+typedef bool (*HPMHOOK_pre_inter_party_change_option) (int *party_id, int *account_id, int *exp, int *item, int *map_fd);
+typedef bool (*HPMHOOK_post_inter_party_change_option) (bool retVal___, int party_id, int account_id, int exp, int item, int map_fd);
+typedef bool (*HPMHOOK_pre_inter_party_change_map) (int *party_id, int *account_id, int *char_id, unsigned short *map, int *online, unsigned int *lv);
+typedef bool (*HPMHOOK_post_inter_party_change_map) (bool retVal___, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
+typedef bool (*HPMHOOK_pre_inter_party_disband) (int *party_id);
+typedef bool (*HPMHOOK_post_inter_party_disband) (bool retVal___, int party_id);
+typedef bool (*HPMHOOK_pre_inter_party_change_leader) (int *party_id, int *account_id, int *char_id);
+typedef bool (*HPMHOOK_post_inter_party_change_leader) (bool retVal___, int party_id, int account_id, int char_id);
#endif // CHAR_INT_PARTY_H
#ifdef CHAR_INT_PET_H /* inter_pet */
typedef int (*HPMHOOK_pre_inter_pet_tosql) (const struct s_pet **p);
@@ -3188,10 +3280,24 @@ 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_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
#ifdef CHAR_INT_QUEST_H /* inter_quest */
typedef int (*HPMHOOK_pre_inter_quest_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_quest_parse_frommap) (int retVal___, int fd);
+typedef struct quest* (*HPMHOOK_pre_inter_quest_fromsql) (int *char_id, int **count);
+typedef struct quest* (*HPMHOOK_post_inter_quest_fromsql) (struct quest* retVal___, int char_id, int *count);
+typedef bool (*HPMHOOK_pre_inter_quest_delete) (int *char_id, int *quest_id);
+typedef bool (*HPMHOOK_post_inter_quest_delete) (bool retVal___, int char_id, int quest_id);
+typedef bool (*HPMHOOK_pre_inter_quest_add) (int *char_id, struct quest *qd);
+typedef bool (*HPMHOOK_post_inter_quest_add) (bool retVal___, int char_id, struct quest qd);
+typedef bool (*HPMHOOK_pre_inter_quest_update) (int *char_id, struct quest *qd);
+typedef bool (*HPMHOOK_post_inter_quest_update) (bool retVal___, int char_id, struct quest qd);
+typedef bool (*HPMHOOK_pre_inter_quest_save) (int *char_id, const struct quest **new_qd, int *new_n);
+typedef bool (*HPMHOOK_post_inter_quest_save) (bool retVal___, int char_id, const struct quest *new_qd, int new_n);
#endif // CHAR_INT_QUEST_H
#ifdef CHAR_INT_RODEX_H /* inter_rodex */
typedef int (*HPMHOOK_pre_inter_rodex_sql_init) (void);
@@ -3208,14 +3314,16 @@ typedef bool (*HPMHOOK_pre_inter_rodex_checkname) (const char **name, int **targ
typedef bool (*HPMHOOK_post_inter_rodex_checkname) (bool retVal___, const char *name, int *target_char_id, short *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);
+typedef bool (*HPMHOOK_post_inter_rodex_updatemail) (bool retVal___, int64 mail_id, int8 flag);
#endif // CHAR_INT_RODEX_H
#ifdef CHAR_INT_STORAGE_H /* inter_storage */
typedef int (*HPMHOOK_pre_inter_storage_tosql) (int *account_id, const struct storage_data **p);
typedef int (*HPMHOOK_post_inter_storage_tosql) (int retVal___, int account_id, const struct storage_data *p);
typedef int (*HPMHOOK_pre_inter_storage_fromsql) (int *account_id, struct storage_data **p);
typedef int (*HPMHOOK_post_inter_storage_fromsql) (int retVal___, int account_id, struct storage_data *p);
-typedef int (*HPMHOOK_pre_inter_storage_guild_storage_tosql) (int *guild_id, const struct guild_storage **p);
-typedef int (*HPMHOOK_post_inter_storage_guild_storage_tosql) (int retVal___, int guild_id, const struct guild_storage *p);
+typedef bool (*HPMHOOK_pre_inter_storage_guild_storage_tosql) (int *guild_id, const struct guild_storage **p);
+typedef bool (*HPMHOOK_post_inter_storage_guild_storage_tosql) (bool retVal___, int guild_id, const struct guild_storage *p);
typedef int (*HPMHOOK_pre_inter_storage_guild_storage_fromsql) (int *guild_id, struct guild_storage **p);
typedef int (*HPMHOOK_post_inter_storage_guild_storage_fromsql) (int retVal___, int guild_id, struct guild_storage *p);
typedef int (*HPMHOOK_pre_inter_storage_sql_init) (void);
@@ -3228,12 +3336,14 @@ typedef int (*HPMHOOK_pre_inter_storage_guild_storage_delete) (int *guild_id);
typedef int (*HPMHOOK_post_inter_storage_guild_storage_delete) (int retVal___, int guild_id);
typedef int (*HPMHOOK_pre_inter_storage_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_storage_parse_frommap) (int retVal___, int fd);
+typedef bool (*HPMHOOK_pre_inter_storage_retrieve_bound_items) (int *char_id, int *account_id, int *guild_id);
+typedef bool (*HPMHOOK_post_inter_storage_retrieve_bound_items) (bool retVal___, int char_id, int account_id, int guild_id);
#endif // CHAR_INT_STORAGE_H
#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, short *pet_egg_id, short *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, short pet_egg_id, short 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, 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_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);
@@ -3706,8 +3816,8 @@ typedef int (*HPMHOOK_pre_itemdb_options_final_sub) (union DBKey *key, struct DB
typedef int (*HPMHOOK_post_itemdb_options_final_sub) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
typedef void (*HPMHOOK_pre_itemdb_clear) (bool *total);
typedef void (*HPMHOOK_post_itemdb_clear) (bool total);
-typedef struct item_combo* (*HPMHOOK_pre_itemdb_id2combo) (unsigned short *id);
-typedef struct item_combo* (*HPMHOOK_post_itemdb_id2combo) (struct item_combo* retVal___, unsigned short id);
+typedef struct item_combo* (*HPMHOOK_pre_itemdb_id2combo) (int *id);
+typedef struct item_combo* (*HPMHOOK_post_itemdb_id2combo) (struct item_combo* retVal___, int id);
typedef bool (*HPMHOOK_pre_itemdb_is_item_usable) (struct item_data **item);
typedef bool (*HPMHOOK_post_itemdb_is_item_usable) (bool retVal___, struct item_data *item);
typedef bool (*HPMHOOK_pre_itemdb_lookup_const) (const struct config_setting_t **it, const char **name, int **value);
@@ -4394,8 +4504,8 @@ typedef int (*HPMHOOK_pre_map_sql_close) (void);
typedef int (*HPMHOOK_post_map_sql_close) (int retVal___);
typedef bool (*HPMHOOK_pre_map_zone_mf_cache) (int *m, char **flag, char **params);
typedef bool (*HPMHOOK_post_map_zone_mf_cache) (bool retVal___, int m, char *flag, char *params);
-typedef unsigned short (*HPMHOOK_pre_map_zone_str2itemid) (const char **name);
-typedef unsigned short (*HPMHOOK_post_map_zone_str2itemid) (unsigned short retVal___, const char *name);
+typedef int (*HPMHOOK_pre_map_zone_str2itemid) (const char **name);
+typedef int (*HPMHOOK_post_map_zone_str2itemid) (int retVal___, const char *name);
typedef unsigned short (*HPMHOOK_pre_map_zone_str2skillid) (const char **name);
typedef unsigned short (*HPMHOOK_post_map_zone_str2skillid) (unsigned short retVal___, const char *name);
typedef enum bl_type (*HPMHOOK_pre_map_zone_bl_type) (const char **entry, enum map_zone_skill_subtype **subtype);
@@ -4468,14 +4578,6 @@ typedef void (*HPMHOOK_pre_mapif_auction_bid) (int *fd, int *char_id, int *bid,
typedef void (*HPMHOOK_post_mapif_auction_bid) (int fd, int char_id, int bid, unsigned char result);
typedef void (*HPMHOOK_pre_mapif_parse_auction_bid) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_auction_bid) (int fd);
-typedef bool (*HPMHOOK_pre_mapif_elemental_create) (struct s_elemental **ele);
-typedef bool (*HPMHOOK_post_mapif_elemental_create) (bool retVal___, struct s_elemental *ele);
-typedef bool (*HPMHOOK_pre_mapif_elemental_save) (const struct s_elemental **ele);
-typedef bool (*HPMHOOK_post_mapif_elemental_save) (bool retVal___, const struct s_elemental *ele);
-typedef bool (*HPMHOOK_pre_mapif_elemental_load) (int *ele_id, int *char_id, struct s_elemental **ele);
-typedef bool (*HPMHOOK_post_mapif_elemental_load) (bool retVal___, int ele_id, int char_id, struct s_elemental *ele);
-typedef bool (*HPMHOOK_pre_mapif_elemental_delete) (int *ele_id);
-typedef bool (*HPMHOOK_post_mapif_elemental_delete) (bool retVal___, int ele_id);
typedef void (*HPMHOOK_pre_mapif_elemental_send) (int *fd, struct s_elemental **ele, unsigned char *flag);
typedef void (*HPMHOOK_post_mapif_elemental_send) (int fd, struct s_elemental *ele, unsigned char flag);
typedef void (*HPMHOOK_pre_mapif_parse_elemental_create) (int *fd, const struct s_elemental **ele);
@@ -4546,8 +4648,6 @@ typedef int (*HPMHOOK_pre_mapif_parse_GuildPosition) (int *fd, int *guild_id, in
typedef int (*HPMHOOK_post_mapif_parse_GuildPosition) (int retVal___, int fd, int guild_id, int idx, const struct guild_position *p);
typedef int (*HPMHOOK_pre_mapif_parse_GuildSkillUp) (int *fd, int *guild_id, uint16 *skill_id, int *account_id, int *max);
typedef int (*HPMHOOK_post_mapif_parse_GuildSkillUp) (int retVal___, int fd, int guild_id, uint16 skill_id, int account_id, int max);
-typedef int (*HPMHOOK_pre_mapif_parse_GuildDeleteAlliance) (struct guild **g, int *guild_id, int *account_id1, int *account_id2, int *flag);
-typedef int (*HPMHOOK_post_mapif_parse_GuildDeleteAlliance) (int retVal___, struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
typedef int (*HPMHOOK_pre_mapif_parse_GuildAlliance) (int *fd, int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag);
typedef int (*HPMHOOK_post_mapif_parse_GuildAlliance) (int retVal___, int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
typedef int (*HPMHOOK_pre_mapif_parse_GuildNotice) (int *fd, int *guild_id, const char **mes1, const char **mes2);
@@ -4570,16 +4670,6 @@ typedef void (*HPMHOOK_pre_mapif_homunculus_saved) (int *fd, int *account_id, bo
typedef void (*HPMHOOK_post_mapif_homunculus_saved) (int fd, int account_id, bool flag);
typedef void (*HPMHOOK_pre_mapif_homunculus_renamed) (int *fd, int *account_id, int *char_id, unsigned char *flag, const char **name);
typedef void (*HPMHOOK_post_mapif_homunculus_renamed) (int fd, int account_id, int char_id, unsigned char flag, const char *name);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_create) (struct s_homunculus **hd);
-typedef bool (*HPMHOOK_post_mapif_homunculus_create) (bool retVal___, struct s_homunculus *hd);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_save) (const struct s_homunculus **hd);
-typedef bool (*HPMHOOK_post_mapif_homunculus_save) (bool retVal___, const struct s_homunculus *hd);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_load) (int *homun_id, struct s_homunculus **hd);
-typedef bool (*HPMHOOK_post_mapif_homunculus_load) (bool retVal___, int homun_id, struct s_homunculus *hd);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_delete) (int *homun_id);
-typedef bool (*HPMHOOK_post_mapif_homunculus_delete) (bool retVal___, int homun_id);
-typedef bool (*HPMHOOK_pre_mapif_homunculus_rename) (const char **name);
-typedef bool (*HPMHOOK_post_mapif_homunculus_rename) (bool retVal___, const char *name);
typedef void (*HPMHOOK_pre_mapif_parse_homunculus_create) (int *fd, int *len, int *account_id, const struct s_homunculus **phd);
typedef void (*HPMHOOK_post_mapif_parse_homunculus_create) (int fd, int len, int account_id, const struct s_homunculus *phd);
typedef void (*HPMHOOK_pre_mapif_parse_homunculus_delete) (int *fd, int *homun_id);
@@ -4598,8 +4688,6 @@ typedef void (*HPMHOOK_pre_mapif_parse_mail_read) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_mail_read) (int fd);
typedef void (*HPMHOOK_pre_mapif_mail_sendattach) (int *fd, int *char_id, struct mail_message **msg);
typedef void (*HPMHOOK_post_mapif_mail_sendattach) (int fd, int char_id, struct mail_message *msg);
-typedef void (*HPMHOOK_pre_mapif_mail_getattach) (int *fd, int *char_id, int *mail_id);
-typedef void (*HPMHOOK_post_mapif_mail_getattach) (int fd, int char_id, int mail_id);
typedef void (*HPMHOOK_pre_mapif_parse_mail_getattach) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_mail_getattach) (int fd);
typedef void (*HPMHOOK_pre_mapif_mail_delete) (int *fd, int *char_id, int *mail_id, bool *failed);
@@ -4616,14 +4704,6 @@ typedef void (*HPMHOOK_pre_mapif_mail_send) (int *fd, struct mail_message **msg)
typedef void (*HPMHOOK_post_mapif_mail_send) (int fd, struct mail_message *msg);
typedef void (*HPMHOOK_pre_mapif_parse_mail_send) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_mail_send) (int fd);
-typedef bool (*HPMHOOK_pre_mapif_mercenary_create) (struct s_mercenary **merc);
-typedef bool (*HPMHOOK_post_mapif_mercenary_create) (bool retVal___, struct s_mercenary *merc);
-typedef bool (*HPMHOOK_pre_mapif_mercenary_save) (const struct s_mercenary **merc);
-typedef bool (*HPMHOOK_post_mapif_mercenary_save) (bool retVal___, const struct s_mercenary *merc);
-typedef bool (*HPMHOOK_pre_mapif_mercenary_load) (int *merc_id, int *char_id, struct s_mercenary **merc);
-typedef bool (*HPMHOOK_post_mapif_mercenary_load) (bool retVal___, int merc_id, int char_id, struct s_mercenary *merc);
-typedef bool (*HPMHOOK_pre_mapif_mercenary_delete) (int *merc_id);
-typedef bool (*HPMHOOK_post_mapif_mercenary_delete) (bool retVal___, int merc_id);
typedef void (*HPMHOOK_pre_mapif_mercenary_send) (int *fd, struct s_mercenary **merc, unsigned char *flag);
typedef void (*HPMHOOK_post_mapif_mercenary_send) (int fd, struct s_mercenary *merc, unsigned char flag);
typedef void (*HPMHOOK_pre_mapif_parse_mercenary_create) (int *fd, const struct s_mercenary **merc);
@@ -4684,10 +4764,6 @@ typedef int (*HPMHOOK_pre_mapif_save_pet_ack) (int *fd, int *account_id, int *fl
typedef int (*HPMHOOK_post_mapif_save_pet_ack) (int retVal___, int fd, int account_id, int flag);
typedef int (*HPMHOOK_pre_mapif_delete_pet_ack) (int *fd, int *flag);
typedef int (*HPMHOOK_post_mapif_delete_pet_ack) (int retVal___, int fd, int flag);
-typedef int (*HPMHOOK_pre_mapif_create_pet) (int *fd, int *account_id, int *char_id, short *pet_class, short *pet_lv, short *pet_egg_id, short *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, const char **pet_name);
-typedef int (*HPMHOOK_post_mapif_create_pet) (int retVal___, int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
-typedef int (*HPMHOOK_pre_mapif_load_pet) (int *fd, int *account_id, int *char_id, int *pet_id);
-typedef int (*HPMHOOK_post_mapif_load_pet) (int retVal___, int fd, int account_id, int char_id, int pet_id);
typedef int (*HPMHOOK_pre_mapif_save_pet) (int *fd, int *account_id, const struct s_pet **data);
typedef int (*HPMHOOK_post_mapif_save_pet) (int retVal___, int fd, int account_id, const struct s_pet *data);
typedef int (*HPMHOOK_pre_mapif_delete_pet) (int *fd, int *pet_id);
@@ -4700,14 +4776,6 @@ typedef int (*HPMHOOK_pre_mapif_parse_SavePet) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_SavePet) (int retVal___, int fd);
typedef int (*HPMHOOK_pre_mapif_parse_DeletePet) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_DeletePet) (int retVal___, int fd);
-typedef struct quest* (*HPMHOOK_pre_mapif_quests_fromsql) (int *char_id, int **count);
-typedef struct quest* (*HPMHOOK_post_mapif_quests_fromsql) (struct quest* retVal___, int char_id, int *count);
-typedef bool (*HPMHOOK_pre_mapif_quest_delete) (int *char_id, int *quest_id);
-typedef bool (*HPMHOOK_post_mapif_quest_delete) (bool retVal___, int char_id, int quest_id);
-typedef bool (*HPMHOOK_pre_mapif_quest_add) (int *char_id, struct quest *qd);
-typedef bool (*HPMHOOK_post_mapif_quest_add) (bool retVal___, int char_id, struct quest qd);
-typedef bool (*HPMHOOK_pre_mapif_quest_update) (int *char_id, struct quest *qd);
-typedef bool (*HPMHOOK_post_mapif_quest_update) (bool retVal___, int char_id, struct quest qd);
typedef void (*HPMHOOK_pre_mapif_quest_save_ack) (int *fd, int *char_id, bool *success);
typedef void (*HPMHOOK_post_mapif_quest_save_ack) (int fd, int char_id, bool success);
typedef int (*HPMHOOK_pre_mapif_parse_quest_save) (int *fd);
@@ -4716,22 +4784,22 @@ typedef void (*HPMHOOK_pre_mapif_send_quests) (int *fd, int *char_id, struct que
typedef void (*HPMHOOK_post_mapif_send_quests) (int fd, int char_id, struct quest *tmp_questlog, int num_quests);
typedef int (*HPMHOOK_pre_mapif_parse_quest_load) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_quest_load) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_mapif_parse_rodex_requestinbox) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_rodex_requestinbox) (int retVal___, int fd);
+typedef void (*HPMHOOK_pre_mapif_parse_rodex_requestinbox) (int *fd);
+typedef void (*HPMHOOK_post_mapif_parse_rodex_requestinbox) (int fd);
typedef void (*HPMHOOK_pre_mapif_rodex_sendinbox) (int *fd, int *char_id, int8 *opentype, int8 *flag, int *count, int64 *mail_id, struct rodex_maillist **mails);
typedef void (*HPMHOOK_post_mapif_rodex_sendinbox) (int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails);
-typedef int (*HPMHOOK_pre_mapif_parse_rodex_checkhasnew) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_rodex_checkhasnew) (int retVal___, int fd);
+typedef void (*HPMHOOK_pre_mapif_parse_rodex_checkhasnew) (int *fd);
+typedef void (*HPMHOOK_post_mapif_parse_rodex_checkhasnew) (int fd);
typedef void (*HPMHOOK_pre_mapif_rodex_sendhasnew) (int *fd, int *char_id, bool *has_new);
typedef void (*HPMHOOK_post_mapif_rodex_sendhasnew) (int fd, int char_id, bool has_new);
-typedef int (*HPMHOOK_pre_mapif_parse_rodex_updatemail) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_rodex_updatemail) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_mapif_parse_rodex_send) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_rodex_send) (int retVal___, int fd);
+typedef void (*HPMHOOK_pre_mapif_parse_rodex_updatemail) (int *fd);
+typedef void (*HPMHOOK_post_mapif_parse_rodex_updatemail) (int fd);
+typedef void (*HPMHOOK_pre_mapif_parse_rodex_send) (int *fd);
+typedef void (*HPMHOOK_post_mapif_parse_rodex_send) (int fd);
typedef void (*HPMHOOK_pre_mapif_rodex_send) (int *fd, int *sender_id, int *receiver_id, int *receiver_accountid, bool *result);
typedef void (*HPMHOOK_post_mapif_rodex_send) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result);
-typedef int (*HPMHOOK_pre_mapif_parse_rodex_checkname) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_rodex_checkname) (int retVal___, int fd);
+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 int (*HPMHOOK_pre_mapif_load_guild_storage) (int *fd, int *account_id, int *guild_id, char *flag);
@@ -4752,14 +4820,10 @@ typedef void (*HPMHOOK_pre_mapif_sAccountStorageSaveAck) (int *fd, int *account_
typedef void (*HPMHOOK_post_mapif_sAccountStorageSaveAck) (int fd, int account_id, bool save);
typedef int (*HPMHOOK_pre_mapif_itembound_ack) (int *fd, int *aid, int *guild_id);
typedef int (*HPMHOOK_post_mapif_itembound_ack) (int retVal___, int fd, int aid, int guild_id);
-typedef int (*HPMHOOK_pre_mapif_parse_ItemBoundRetrieve_sub) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_ItemBoundRetrieve_sub) (int retVal___, int fd);
typedef void (*HPMHOOK_pre_mapif_parse_ItemBoundRetrieve) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_ItemBoundRetrieve) (int fd);
typedef void (*HPMHOOK_pre_mapif_parse_accinfo) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_accinfo) (int fd);
-typedef void (*HPMHOOK_pre_mapif_parse_accinfo2) (bool *success, int *map_fd, int *u_fd, int *u_aid, int *account_id, const char **userid, const char **user_pass, const char **email, const char **last_ip, const char **lastlogin, const char **pin_code, const char **birthdate, int *group_id, int *logincount, int *state);
-typedef void (*HPMHOOK_post_mapif_parse_accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
typedef int (*HPMHOOK_pre_mapif_broadcast) (const unsigned char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY, int *sfd);
typedef int (*HPMHOOK_post_mapif_broadcast) (int retVal___, const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
typedef int (*HPMHOOK_pre_mapif_wis_message) (struct WisData **wd);
@@ -5122,6 +5186,12 @@ typedef void (*HPMHOOK_pre_mob_load) (bool *minimal);
typedef void (*HPMHOOK_post_mob_load) (bool minimal);
typedef void (*HPMHOOK_pre_mob_clear_spawninfo) (void);
typedef void (*HPMHOOK_post_mob_clear_spawninfo) (void);
+typedef struct item_drop_ratio* (*HPMHOOK_pre_mob_get_item_drop_ratio) (int *nameid);
+typedef struct item_drop_ratio* (*HPMHOOK_post_mob_get_item_drop_ratio) (struct item_drop_ratio* retVal___, int nameid);
+typedef void (*HPMHOOK_pre_mob_set_item_drop_ratio) (int *nameid, struct item_drop_ratio **ratio);
+typedef void (*HPMHOOK_post_mob_set_item_drop_ratio) (int nameid, struct item_drop_ratio *ratio);
+typedef int (*HPMHOOK_pre_mob_final_ratio_sub) (union DBKey *key, struct DBData **data, va_list ap);
+typedef int (*HPMHOOK_post_mob_final_ratio_sub) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
typedef void (*HPMHOOK_pre_mob_destroy_mob_db) (int *index);
typedef void (*HPMHOOK_post_mob_destroy_mob_db) (int index);
typedef bool (*HPMHOOK_pre_mob_skill_db_libconfig) (const char **filename, bool *ignore_missing);
@@ -5914,10 +5984,10 @@ typedef int (*HPMHOOK_pre_pc_inventory_rental_end) (int *tid, int64 *tick, int *
typedef int (*HPMHOOK_post_pc_inventory_rental_end) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef void (*HPMHOOK_pre_pc_check_skilltree) (struct map_session_data **sd, int *skill_id);
typedef void (*HPMHOOK_post_pc_check_skilltree) (struct map_session_data *sd, int skill_id);
-typedef int (*HPMHOOK_pre_pc_bonus_autospell) (struct s_autospell **spell, int *max, short *id, short *lv, short *rate, short *flag, short *card_id);
-typedef int (*HPMHOOK_post_pc_bonus_autospell) (int retVal___, struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id);
-typedef int (*HPMHOOK_pre_pc_bonus_autospell_onskill) (struct s_autospell **spell, int *max, short *src_skill, short *id, short *lv, short *rate, short *card_id);
-typedef int (*HPMHOOK_post_pc_bonus_autospell_onskill) (int retVal___, struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id);
+typedef int (*HPMHOOK_pre_pc_bonus_autospell) (struct s_autospell **spell, int *max, short *id, short *lv, short *rate, short *flag, int *card_id);
+typedef int (*HPMHOOK_post_pc_bonus_autospell) (int retVal___, struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id);
+typedef int (*HPMHOOK_pre_pc_bonus_autospell_onskill) (struct s_autospell **spell, int *max, short *src_skill, short *id, short *lv, short *rate, int *card_id);
+typedef int (*HPMHOOK_post_pc_bonus_autospell_onskill) (int retVal___, struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id);
typedef int (*HPMHOOK_pre_pc_bonus_addeff) (struct s_addeffect **effect, int *max, enum sc_type *id, int16 *rate, int16 *arrow_rate, uint8 *flag, uint16 *duration);
typedef int (*HPMHOOK_post_pc_bonus_addeff) (int retVal___, struct s_addeffect *effect, int max, enum sc_type id, int16 rate, int16 arrow_rate, uint8 flag, uint16 duration);
typedef int (*HPMHOOK_pre_pc_bonus_addeff_onskill) (struct s_addeffectonskill **effect, int *max, enum sc_type *id, short *rate, short *skill_id, unsigned char *target);
@@ -6070,8 +6140,8 @@ typedef int (*HPMHOOK_pre_pet_birth_process) (struct map_session_data **sd, stru
typedef int (*HPMHOOK_post_pet_birth_process) (int retVal___, struct map_session_data *sd, struct s_pet *petinfo);
typedef int (*HPMHOOK_pre_pet_recv_petdata) (int *account_id, struct s_pet **p, int *flag);
typedef int (*HPMHOOK_post_pet_recv_petdata) (int retVal___, int account_id, struct s_pet *p, int flag);
-typedef int (*HPMHOOK_pre_pet_select_egg) (struct map_session_data **sd, short *egg_index);
-typedef int (*HPMHOOK_post_pet_select_egg) (int retVal___, struct map_session_data *sd, short egg_index);
+typedef int (*HPMHOOK_pre_pet_select_egg) (struct map_session_data **sd, int *egg_index);
+typedef int (*HPMHOOK_post_pet_select_egg) (int retVal___, struct map_session_data *sd, int egg_index);
typedef int (*HPMHOOK_pre_pet_catch_process1) (struct map_session_data **sd, int *target_class);
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);
@@ -6614,8 +6684,8 @@ typedef void (*HPMHOOK_post_script_run_item_unequip_script) (struct map_session_
#ifdef MAP_SEARCHSTORE_H /* searchstore */
typedef bool (*HPMHOOK_pre_searchstore_open) (struct map_session_data **sd, unsigned int *uses, unsigned short *effect);
typedef bool (*HPMHOOK_post_searchstore_open) (bool retVal___, struct map_session_data *sd, unsigned int uses, unsigned short effect);
-typedef void (*HPMHOOK_pre_searchstore_query) (struct map_session_data **sd, unsigned char *type, unsigned int *min_price, unsigned int *max_price, const unsigned short **itemlist, unsigned int *item_count, const unsigned short **cardlist, unsigned int *card_count);
-typedef void (*HPMHOOK_post_searchstore_query) (struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short *itemlist, unsigned int item_count, const unsigned short *cardlist, unsigned int card_count);
+typedef void (*HPMHOOK_pre_searchstore_query) (struct map_session_data **sd, unsigned char *type, unsigned int *min_price, unsigned int *max_price, const uint32 **itemlist, unsigned int *item_count, const uint32 **cardlist, unsigned int *card_count);
+typedef void (*HPMHOOK_post_searchstore_query) (struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const uint32 *itemlist, unsigned int item_count, const uint32 *cardlist, unsigned int card_count);
typedef bool (*HPMHOOK_pre_searchstore_querynext) (struct map_session_data **sd);
typedef bool (*HPMHOOK_post_searchstore_querynext) (bool retVal___, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_searchstore_next) (struct map_session_data **sd);
@@ -6624,14 +6694,14 @@ typedef void (*HPMHOOK_pre_searchstore_clear) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_searchstore_clear) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_searchstore_close) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_searchstore_close) (struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_searchstore_click) (struct map_session_data **sd, int *account_id, int *store_id, unsigned short *nameid);
-typedef void (*HPMHOOK_post_searchstore_click) (struct map_session_data *sd, int account_id, int store_id, unsigned short nameid);
+typedef void (*HPMHOOK_pre_searchstore_click) (struct map_session_data **sd, int *account_id, int *store_id, int *nameid);
+typedef void (*HPMHOOK_post_searchstore_click) (struct map_session_data *sd, int account_id, int store_id, int nameid);
typedef bool (*HPMHOOK_pre_searchstore_queryremote) (struct map_session_data **sd, int *account_id);
typedef bool (*HPMHOOK_post_searchstore_queryremote) (bool retVal___, struct map_session_data *sd, int account_id);
typedef void (*HPMHOOK_pre_searchstore_clearremote) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_searchstore_clearremote) (struct map_session_data *sd);
-typedef bool (*HPMHOOK_pre_searchstore_result) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, unsigned short *nameid, unsigned short *amount, unsigned int *price, const short **card, unsigned char *refine, const struct item_option **option);
-typedef bool (*HPMHOOK_post_searchstore_result) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short *card, unsigned char refine, const struct item_option *option);
+typedef bool (*HPMHOOK_pre_searchstore_result) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, int *nameid, unsigned short *amount, unsigned int *price, const int **card, unsigned char *refine, const struct item_option **option);
+typedef bool (*HPMHOOK_post_searchstore_result) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine, const struct item_option *option);
#endif // MAP_SEARCHSTORE_H
#ifdef COMMON_SHOWMSG_H /* showmsg */
typedef void (*HPMHOOK_pre_showmsg_init) (void);
@@ -7828,8 +7898,8 @@ typedef void (*HPMHOOK_pre_vending_list) (struct map_session_data **sd, unsigned
typedef void (*HPMHOOK_post_vending_list) (struct map_session_data *sd, unsigned int id);
typedef void (*HPMHOOK_pre_vending_purchase) (struct map_session_data **sd, int *aid, unsigned int *uid, const uint8 **data, int *count);
typedef void (*HPMHOOK_post_vending_purchase) (struct map_session_data *sd, int aid, unsigned int uid, const uint8 *data, int count);
-typedef bool (*HPMHOOK_pre_vending_search) (struct map_session_data **sd, unsigned short *nameid);
-typedef bool (*HPMHOOK_post_vending_search) (bool retVal___, struct map_session_data *sd, unsigned short nameid);
+typedef bool (*HPMHOOK_pre_vending_search) (struct map_session_data **sd, int *nameid);
+typedef bool (*HPMHOOK_post_vending_search) (bool retVal___, struct map_session_data *sd, int nameid);
typedef bool (*HPMHOOK_pre_vending_searchall) (struct map_session_data **sd, const struct s_search_store_search **s);
typedef bool (*HPMHOOK_post_vending_searchall) (bool retVal___, struct map_session_data *sd, const struct s_search_store_search *s);
#endif // MAP_VENDING_H
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
index 0f9e48287..d77174ef5 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
@@ -78,6 +78,8 @@ struct {
struct HPMHookPoint *HP_chr_char_slotchange_post;
struct HPMHookPoint *HP_chr_rename_char_sql_pre;
struct HPMHookPoint *HP_chr_rename_char_sql_post;
+ struct HPMHookPoint *HP_chr_name_exists_pre;
+ struct HPMHookPoint *HP_chr_name_exists_post;
struct HPMHookPoint *HP_chr_check_char_name_pre;
struct HPMHookPoint *HP_chr_check_char_name_post;
struct HPMHookPoint *HP_chr_make_new_char_sql_pre;
@@ -476,6 +478,14 @@ struct {
struct HPMHookPoint *HP_inter_elemental_sql_final_post;
struct HPMHookPoint *HP_inter_elemental_parse_frommap_pre;
struct HPMHookPoint *HP_inter_elemental_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_elemental_create_pre;
+ struct HPMHookPoint *HP_inter_elemental_create_post;
+ struct HPMHookPoint *HP_inter_elemental_save_pre;
+ struct HPMHookPoint *HP_inter_elemental_save_post;
+ struct HPMHookPoint *HP_inter_elemental_load_pre;
+ struct HPMHookPoint *HP_inter_elemental_load_post;
+ struct HPMHookPoint *HP_inter_elemental_delete_pre;
+ struct HPMHookPoint *HP_inter_elemental_delete_post;
struct HPMHookPoint *HP_inter_guild_save_timer_pre;
struct HPMHookPoint *HP_inter_guild_save_timer_post;
struct HPMHookPoint *HP_inter_guild_removemember_tosql_pre;
@@ -516,16 +526,54 @@ struct {
struct HPMHookPoint *HP_inter_guild_charname_changed_post;
struct HPMHookPoint *HP_inter_guild_parse_frommap_pre;
struct HPMHookPoint *HP_inter_guild_parse_frommap_post;
- struct HPMHookPoint *HP_inter_guild_leave_pre;
- struct HPMHookPoint *HP_inter_guild_leave_post;
struct HPMHookPoint *HP_inter_guild_broken_pre;
struct HPMHookPoint *HP_inter_guild_broken_post;
+ struct HPMHookPoint *HP_inter_guild_create_pre;
+ struct HPMHookPoint *HP_inter_guild_create_post;
+ struct HPMHookPoint *HP_inter_guild_add_member_pre;
+ struct HPMHookPoint *HP_inter_guild_add_member_post;
+ struct HPMHookPoint *HP_inter_guild_leave_pre;
+ struct HPMHookPoint *HP_inter_guild_leave_post;
+ struct HPMHookPoint *HP_inter_guild_update_member_info_short_pre;
+ struct HPMHookPoint *HP_inter_guild_update_member_info_short_post;
+ struct HPMHookPoint *HP_inter_guild_update_member_info_pre;
+ struct HPMHookPoint *HP_inter_guild_update_member_info_post;
+ struct HPMHookPoint *HP_inter_guild_disband_pre;
+ struct HPMHookPoint *HP_inter_guild_disband_post;
+ struct HPMHookPoint *HP_inter_guild_update_basic_info_pre;
+ struct HPMHookPoint *HP_inter_guild_update_basic_info_post;
+ struct HPMHookPoint *HP_inter_guild_update_position_pre;
+ struct HPMHookPoint *HP_inter_guild_update_position_post;
+ struct HPMHookPoint *HP_inter_guild_use_skill_point_pre;
+ struct HPMHookPoint *HP_inter_guild_use_skill_point_post;
+ struct HPMHookPoint *HP_inter_guild_remove_alliance_pre;
+ struct HPMHookPoint *HP_inter_guild_remove_alliance_post;
+ struct HPMHookPoint *HP_inter_guild_change_alliance_pre;
+ struct HPMHookPoint *HP_inter_guild_change_alliance_post;
+ struct HPMHookPoint *HP_inter_guild_update_notice_pre;
+ struct HPMHookPoint *HP_inter_guild_update_notice_post;
+ struct HPMHookPoint *HP_inter_guild_update_emblem_pre;
+ struct HPMHookPoint *HP_inter_guild_update_emblem_post;
+ struct HPMHookPoint *HP_inter_guild_update_castle_data_pre;
+ struct HPMHookPoint *HP_inter_guild_update_castle_data_post;
+ struct HPMHookPoint *HP_inter_guild_change_leader_pre;
+ struct HPMHookPoint *HP_inter_guild_change_leader_post;
struct HPMHookPoint *HP_inter_homunculus_sql_init_pre;
struct HPMHookPoint *HP_inter_homunculus_sql_init_post;
struct HPMHookPoint *HP_inter_homunculus_sql_final_pre;
struct HPMHookPoint *HP_inter_homunculus_sql_final_post;
struct HPMHookPoint *HP_inter_homunculus_parse_frommap_pre;
struct HPMHookPoint *HP_inter_homunculus_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_homunculus_create_pre;
+ struct HPMHookPoint *HP_inter_homunculus_create_post;
+ struct HPMHookPoint *HP_inter_homunculus_save_pre;
+ struct HPMHookPoint *HP_inter_homunculus_save_post;
+ struct HPMHookPoint *HP_inter_homunculus_load_pre;
+ struct HPMHookPoint *HP_inter_homunculus_load_post;
+ struct HPMHookPoint *HP_inter_homunculus_delete_pre;
+ struct HPMHookPoint *HP_inter_homunculus_delete_post;
+ struct HPMHookPoint *HP_inter_homunculus_rename_pre;
+ struct HPMHookPoint *HP_inter_homunculus_rename_post;
struct HPMHookPoint *HP_inter_msg_txt_pre;
struct HPMHookPoint *HP_inter_msg_txt_post;
struct HPMHookPoint *HP_inter_msg_config_read_pre;
@@ -562,6 +610,16 @@ struct {
struct HPMHookPoint *HP_inter_config_read_log_post;
struct HPMHookPoint *HP_inter_config_read_connection_pre;
struct HPMHookPoint *HP_inter_config_read_connection_post;
+ struct HPMHookPoint *HP_inter_accinfo_pre;
+ struct HPMHookPoint *HP_inter_accinfo_post;
+ struct HPMHookPoint *HP_inter_accinfo2_pre;
+ struct HPMHookPoint *HP_inter_accinfo2_post;
+ struct HPMHookPoint *HP_inter_add_wisdata_pre;
+ struct HPMHookPoint *HP_inter_add_wisdata_post;
+ struct HPMHookPoint *HP_inter_get_wisdata_pre;
+ struct HPMHookPoint *HP_inter_get_wisdata_post;
+ struct HPMHookPoint *HP_inter_remove_wisdata_pre;
+ struct HPMHookPoint *HP_inter_remove_wisdata_post;
struct HPMHookPoint *HP_inter_mail_sql_init_pre;
struct HPMHookPoint *HP_inter_mail_sql_init_post;
struct HPMHookPoint *HP_inter_mail_sql_final_pre;
@@ -578,6 +636,16 @@ struct {
struct HPMHookPoint *HP_inter_mail_DeleteAttach_post;
struct HPMHookPoint *HP_inter_mail_sendmail_pre;
struct HPMHookPoint *HP_inter_mail_sendmail_post;
+ struct HPMHookPoint *HP_inter_mail_mark_read_pre;
+ struct HPMHookPoint *HP_inter_mail_mark_read_post;
+ struct HPMHookPoint *HP_inter_mail_get_attachment_pre;
+ struct HPMHookPoint *HP_inter_mail_get_attachment_post;
+ struct HPMHookPoint *HP_inter_mail_delete_pre;
+ struct HPMHookPoint *HP_inter_mail_delete_post;
+ struct HPMHookPoint *HP_inter_mail_return_message_pre;
+ struct HPMHookPoint *HP_inter_mail_return_message_post;
+ struct HPMHookPoint *HP_inter_mail_send_pre;
+ struct HPMHookPoint *HP_inter_mail_send_post;
struct HPMHookPoint *HP_inter_mercenary_owner_fromsql_pre;
struct HPMHookPoint *HP_inter_mercenary_owner_fromsql_post;
struct HPMHookPoint *HP_inter_mercenary_owner_tosql_pre;
@@ -590,6 +658,14 @@ struct {
struct HPMHookPoint *HP_inter_mercenary_sql_final_post;
struct HPMHookPoint *HP_inter_mercenary_parse_frommap_pre;
struct HPMHookPoint *HP_inter_mercenary_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_mercenary_create_pre;
+ struct HPMHookPoint *HP_inter_mercenary_create_post;
+ struct HPMHookPoint *HP_inter_mercenary_save_pre;
+ struct HPMHookPoint *HP_inter_mercenary_save_post;
+ struct HPMHookPoint *HP_inter_mercenary_load_pre;
+ struct HPMHookPoint *HP_inter_mercenary_load_post;
+ struct HPMHookPoint *HP_inter_mercenary_delete_pre;
+ struct HPMHookPoint *HP_inter_mercenary_delete_post;
struct HPMHookPoint *HP_inter_party_check_lv_pre;
struct HPMHookPoint *HP_inter_party_check_lv_post;
struct HPMHookPoint *HP_inter_party_calc_state_pre;
@@ -616,6 +692,18 @@ struct {
struct HPMHookPoint *HP_inter_party_CharOnline_post;
struct HPMHookPoint *HP_inter_party_CharOffline_pre;
struct HPMHookPoint *HP_inter_party_CharOffline_post;
+ struct HPMHookPoint *HP_inter_party_create_pre;
+ struct HPMHookPoint *HP_inter_party_create_post;
+ struct HPMHookPoint *HP_inter_party_add_member_pre;
+ struct HPMHookPoint *HP_inter_party_add_member_post;
+ struct HPMHookPoint *HP_inter_party_change_option_pre;
+ struct HPMHookPoint *HP_inter_party_change_option_post;
+ struct HPMHookPoint *HP_inter_party_change_map_pre;
+ struct HPMHookPoint *HP_inter_party_change_map_post;
+ struct HPMHookPoint *HP_inter_party_disband_pre;
+ struct HPMHookPoint *HP_inter_party_disband_post;
+ struct HPMHookPoint *HP_inter_party_change_leader_pre;
+ struct HPMHookPoint *HP_inter_party_change_leader_post;
struct HPMHookPoint *HP_inter_pet_tosql_pre;
struct HPMHookPoint *HP_inter_pet_tosql_post;
struct HPMHookPoint *HP_inter_pet_fromsql_pre;
@@ -628,8 +716,22 @@ struct {
struct HPMHookPoint *HP_inter_pet_delete__post;
struct HPMHookPoint *HP_inter_pet_parse_frommap_pre;
struct HPMHookPoint *HP_inter_pet_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_pet_create_pre;
+ struct HPMHookPoint *HP_inter_pet_create_post;
+ struct HPMHookPoint *HP_inter_pet_load_pre;
+ struct HPMHookPoint *HP_inter_pet_load_post;
struct HPMHookPoint *HP_inter_quest_parse_frommap_pre;
struct HPMHookPoint *HP_inter_quest_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_quest_fromsql_pre;
+ struct HPMHookPoint *HP_inter_quest_fromsql_post;
+ struct HPMHookPoint *HP_inter_quest_delete_pre;
+ struct HPMHookPoint *HP_inter_quest_delete_post;
+ struct HPMHookPoint *HP_inter_quest_add_pre;
+ struct HPMHookPoint *HP_inter_quest_add_post;
+ struct HPMHookPoint *HP_inter_quest_update_pre;
+ struct HPMHookPoint *HP_inter_quest_update_post;
+ struct HPMHookPoint *HP_inter_quest_save_pre;
+ struct HPMHookPoint *HP_inter_quest_save_post;
struct HPMHookPoint *HP_inter_rodex_sql_init_pre;
struct HPMHookPoint *HP_inter_rodex_sql_init_post;
struct HPMHookPoint *HP_inter_rodex_sql_final_pre;
@@ -644,6 +746,8 @@ struct {
struct HPMHookPoint *HP_inter_rodex_checkname_post;
struct HPMHookPoint *HP_inter_rodex_savemessage_pre;
struct HPMHookPoint *HP_inter_rodex_savemessage_post;
+ struct HPMHookPoint *HP_inter_rodex_updatemail_pre;
+ struct HPMHookPoint *HP_inter_rodex_updatemail_post;
struct HPMHookPoint *HP_inter_storage_tosql_pre;
struct HPMHookPoint *HP_inter_storage_tosql_post;
struct HPMHookPoint *HP_inter_storage_fromsql_pre;
@@ -662,6 +766,8 @@ struct {
struct HPMHookPoint *HP_inter_storage_guild_storage_delete_post;
struct HPMHookPoint *HP_inter_storage_parse_frommap_pre;
struct HPMHookPoint *HP_inter_storage_parse_frommap_post;
+ struct HPMHookPoint *HP_inter_storage_retrieve_bound_items_pre;
+ struct HPMHookPoint *HP_inter_storage_retrieve_bound_items_post;
struct HPMHookPoint *HP_libconfig_read_pre;
struct HPMHookPoint *HP_libconfig_read_post;
struct HPMHookPoint *HP_libconfig_write_pre;
@@ -868,14 +974,6 @@ struct {
struct HPMHookPoint *HP_mapif_auction_bid_post;
struct HPMHookPoint *HP_mapif_parse_auction_bid_pre;
struct HPMHookPoint *HP_mapif_parse_auction_bid_post;
- struct HPMHookPoint *HP_mapif_elemental_create_pre;
- struct HPMHookPoint *HP_mapif_elemental_create_post;
- struct HPMHookPoint *HP_mapif_elemental_save_pre;
- struct HPMHookPoint *HP_mapif_elemental_save_post;
- struct HPMHookPoint *HP_mapif_elemental_load_pre;
- struct HPMHookPoint *HP_mapif_elemental_load_post;
- struct HPMHookPoint *HP_mapif_elemental_delete_pre;
- struct HPMHookPoint *HP_mapif_elemental_delete_post;
struct HPMHookPoint *HP_mapif_elemental_send_pre;
struct HPMHookPoint *HP_mapif_elemental_send_post;
struct HPMHookPoint *HP_mapif_parse_elemental_create_pre;
@@ -946,8 +1044,6 @@ struct {
struct HPMHookPoint *HP_mapif_parse_GuildPosition_post;
struct HPMHookPoint *HP_mapif_parse_GuildSkillUp_pre;
struct HPMHookPoint *HP_mapif_parse_GuildSkillUp_post;
- struct HPMHookPoint *HP_mapif_parse_GuildDeleteAlliance_pre;
- struct HPMHookPoint *HP_mapif_parse_GuildDeleteAlliance_post;
struct HPMHookPoint *HP_mapif_parse_GuildAlliance_pre;
struct HPMHookPoint *HP_mapif_parse_GuildAlliance_post;
struct HPMHookPoint *HP_mapif_parse_GuildNotice_pre;
@@ -970,16 +1066,6 @@ struct {
struct HPMHookPoint *HP_mapif_homunculus_saved_post;
struct HPMHookPoint *HP_mapif_homunculus_renamed_pre;
struct HPMHookPoint *HP_mapif_homunculus_renamed_post;
- struct HPMHookPoint *HP_mapif_homunculus_create_pre;
- struct HPMHookPoint *HP_mapif_homunculus_create_post;
- struct HPMHookPoint *HP_mapif_homunculus_save_pre;
- struct HPMHookPoint *HP_mapif_homunculus_save_post;
- struct HPMHookPoint *HP_mapif_homunculus_load_pre;
- struct HPMHookPoint *HP_mapif_homunculus_load_post;
- struct HPMHookPoint *HP_mapif_homunculus_delete_pre;
- struct HPMHookPoint *HP_mapif_homunculus_delete_post;
- struct HPMHookPoint *HP_mapif_homunculus_rename_pre;
- struct HPMHookPoint *HP_mapif_homunculus_rename_post;
struct HPMHookPoint *HP_mapif_parse_homunculus_create_pre;
struct HPMHookPoint *HP_mapif_parse_homunculus_create_post;
struct HPMHookPoint *HP_mapif_parse_homunculus_delete_pre;
@@ -998,8 +1084,6 @@ struct {
struct HPMHookPoint *HP_mapif_parse_mail_read_post;
struct HPMHookPoint *HP_mapif_mail_sendattach_pre;
struct HPMHookPoint *HP_mapif_mail_sendattach_post;
- struct HPMHookPoint *HP_mapif_mail_getattach_pre;
- struct HPMHookPoint *HP_mapif_mail_getattach_post;
struct HPMHookPoint *HP_mapif_parse_mail_getattach_pre;
struct HPMHookPoint *HP_mapif_parse_mail_getattach_post;
struct HPMHookPoint *HP_mapif_mail_delete_pre;
@@ -1016,14 +1100,6 @@ struct {
struct HPMHookPoint *HP_mapif_mail_send_post;
struct HPMHookPoint *HP_mapif_parse_mail_send_pre;
struct HPMHookPoint *HP_mapif_parse_mail_send_post;
- struct HPMHookPoint *HP_mapif_mercenary_create_pre;
- struct HPMHookPoint *HP_mapif_mercenary_create_post;
- struct HPMHookPoint *HP_mapif_mercenary_save_pre;
- struct HPMHookPoint *HP_mapif_mercenary_save_post;
- struct HPMHookPoint *HP_mapif_mercenary_load_pre;
- struct HPMHookPoint *HP_mapif_mercenary_load_post;
- struct HPMHookPoint *HP_mapif_mercenary_delete_pre;
- struct HPMHookPoint *HP_mapif_mercenary_delete_post;
struct HPMHookPoint *HP_mapif_mercenary_send_pre;
struct HPMHookPoint *HP_mapif_mercenary_send_post;
struct HPMHookPoint *HP_mapif_parse_mercenary_create_pre;
@@ -1084,10 +1160,6 @@ struct {
struct HPMHookPoint *HP_mapif_save_pet_ack_post;
struct HPMHookPoint *HP_mapif_delete_pet_ack_pre;
struct HPMHookPoint *HP_mapif_delete_pet_ack_post;
- struct HPMHookPoint *HP_mapif_create_pet_pre;
- struct HPMHookPoint *HP_mapif_create_pet_post;
- struct HPMHookPoint *HP_mapif_load_pet_pre;
- struct HPMHookPoint *HP_mapif_load_pet_post;
struct HPMHookPoint *HP_mapif_save_pet_pre;
struct HPMHookPoint *HP_mapif_save_pet_post;
struct HPMHookPoint *HP_mapif_delete_pet_pre;
@@ -1100,14 +1172,6 @@ struct {
struct HPMHookPoint *HP_mapif_parse_SavePet_post;
struct HPMHookPoint *HP_mapif_parse_DeletePet_pre;
struct HPMHookPoint *HP_mapif_parse_DeletePet_post;
- struct HPMHookPoint *HP_mapif_quests_fromsql_pre;
- struct HPMHookPoint *HP_mapif_quests_fromsql_post;
- struct HPMHookPoint *HP_mapif_quest_delete_pre;
- struct HPMHookPoint *HP_mapif_quest_delete_post;
- struct HPMHookPoint *HP_mapif_quest_add_pre;
- struct HPMHookPoint *HP_mapif_quest_add_post;
- struct HPMHookPoint *HP_mapif_quest_update_pre;
- struct HPMHookPoint *HP_mapif_quest_update_post;
struct HPMHookPoint *HP_mapif_quest_save_ack_pre;
struct HPMHookPoint *HP_mapif_quest_save_ack_post;
struct HPMHookPoint *HP_mapif_parse_quest_save_pre;
@@ -1152,14 +1216,10 @@ struct {
struct HPMHookPoint *HP_mapif_sAccountStorageSaveAck_post;
struct HPMHookPoint *HP_mapif_itembound_ack_pre;
struct HPMHookPoint *HP_mapif_itembound_ack_post;
- struct HPMHookPoint *HP_mapif_parse_ItemBoundRetrieve_sub_pre;
- struct HPMHookPoint *HP_mapif_parse_ItemBoundRetrieve_sub_post;
struct HPMHookPoint *HP_mapif_parse_ItemBoundRetrieve_pre;
struct HPMHookPoint *HP_mapif_parse_ItemBoundRetrieve_post;
struct HPMHookPoint *HP_mapif_parse_accinfo_pre;
struct HPMHookPoint *HP_mapif_parse_accinfo_post;
- struct HPMHookPoint *HP_mapif_parse_accinfo2_pre;
- struct HPMHookPoint *HP_mapif_parse_accinfo2_post;
struct HPMHookPoint *HP_mapif_broadcast_pre;
struct HPMHookPoint *HP_mapif_broadcast_post;
struct HPMHookPoint *HP_mapif_wis_message_pre;
@@ -1617,6 +1677,8 @@ struct {
int HP_chr_char_slotchange_post;
int HP_chr_rename_char_sql_pre;
int HP_chr_rename_char_sql_post;
+ int HP_chr_name_exists_pre;
+ int HP_chr_name_exists_post;
int HP_chr_check_char_name_pre;
int HP_chr_check_char_name_post;
int HP_chr_make_new_char_sql_pre;
@@ -2015,6 +2077,14 @@ struct {
int HP_inter_elemental_sql_final_post;
int HP_inter_elemental_parse_frommap_pre;
int HP_inter_elemental_parse_frommap_post;
+ int HP_inter_elemental_create_pre;
+ int HP_inter_elemental_create_post;
+ int HP_inter_elemental_save_pre;
+ int HP_inter_elemental_save_post;
+ int HP_inter_elemental_load_pre;
+ int HP_inter_elemental_load_post;
+ int HP_inter_elemental_delete_pre;
+ int HP_inter_elemental_delete_post;
int HP_inter_guild_save_timer_pre;
int HP_inter_guild_save_timer_post;
int HP_inter_guild_removemember_tosql_pre;
@@ -2055,16 +2125,54 @@ struct {
int HP_inter_guild_charname_changed_post;
int HP_inter_guild_parse_frommap_pre;
int HP_inter_guild_parse_frommap_post;
- int HP_inter_guild_leave_pre;
- int HP_inter_guild_leave_post;
int HP_inter_guild_broken_pre;
int HP_inter_guild_broken_post;
+ int HP_inter_guild_create_pre;
+ int HP_inter_guild_create_post;
+ int HP_inter_guild_add_member_pre;
+ int HP_inter_guild_add_member_post;
+ int HP_inter_guild_leave_pre;
+ int HP_inter_guild_leave_post;
+ int HP_inter_guild_update_member_info_short_pre;
+ int HP_inter_guild_update_member_info_short_post;
+ int HP_inter_guild_update_member_info_pre;
+ int HP_inter_guild_update_member_info_post;
+ int HP_inter_guild_disband_pre;
+ int HP_inter_guild_disband_post;
+ int HP_inter_guild_update_basic_info_pre;
+ int HP_inter_guild_update_basic_info_post;
+ int HP_inter_guild_update_position_pre;
+ int HP_inter_guild_update_position_post;
+ int HP_inter_guild_use_skill_point_pre;
+ int HP_inter_guild_use_skill_point_post;
+ int HP_inter_guild_remove_alliance_pre;
+ int HP_inter_guild_remove_alliance_post;
+ int HP_inter_guild_change_alliance_pre;
+ int HP_inter_guild_change_alliance_post;
+ int HP_inter_guild_update_notice_pre;
+ int HP_inter_guild_update_notice_post;
+ int HP_inter_guild_update_emblem_pre;
+ int HP_inter_guild_update_emblem_post;
+ int HP_inter_guild_update_castle_data_pre;
+ int HP_inter_guild_update_castle_data_post;
+ int HP_inter_guild_change_leader_pre;
+ int HP_inter_guild_change_leader_post;
int HP_inter_homunculus_sql_init_pre;
int HP_inter_homunculus_sql_init_post;
int HP_inter_homunculus_sql_final_pre;
int HP_inter_homunculus_sql_final_post;
int HP_inter_homunculus_parse_frommap_pre;
int HP_inter_homunculus_parse_frommap_post;
+ int HP_inter_homunculus_create_pre;
+ int HP_inter_homunculus_create_post;
+ int HP_inter_homunculus_save_pre;
+ int HP_inter_homunculus_save_post;
+ int HP_inter_homunculus_load_pre;
+ int HP_inter_homunculus_load_post;
+ int HP_inter_homunculus_delete_pre;
+ int HP_inter_homunculus_delete_post;
+ int HP_inter_homunculus_rename_pre;
+ int HP_inter_homunculus_rename_post;
int HP_inter_msg_txt_pre;
int HP_inter_msg_txt_post;
int HP_inter_msg_config_read_pre;
@@ -2101,6 +2209,16 @@ struct {
int HP_inter_config_read_log_post;
int HP_inter_config_read_connection_pre;
int HP_inter_config_read_connection_post;
+ int HP_inter_accinfo_pre;
+ int HP_inter_accinfo_post;
+ int HP_inter_accinfo2_pre;
+ int HP_inter_accinfo2_post;
+ int HP_inter_add_wisdata_pre;
+ int HP_inter_add_wisdata_post;
+ int HP_inter_get_wisdata_pre;
+ int HP_inter_get_wisdata_post;
+ int HP_inter_remove_wisdata_pre;
+ int HP_inter_remove_wisdata_post;
int HP_inter_mail_sql_init_pre;
int HP_inter_mail_sql_init_post;
int HP_inter_mail_sql_final_pre;
@@ -2117,6 +2235,16 @@ struct {
int HP_inter_mail_DeleteAttach_post;
int HP_inter_mail_sendmail_pre;
int HP_inter_mail_sendmail_post;
+ int HP_inter_mail_mark_read_pre;
+ int HP_inter_mail_mark_read_post;
+ int HP_inter_mail_get_attachment_pre;
+ int HP_inter_mail_get_attachment_post;
+ int HP_inter_mail_delete_pre;
+ int HP_inter_mail_delete_post;
+ int HP_inter_mail_return_message_pre;
+ int HP_inter_mail_return_message_post;
+ int HP_inter_mail_send_pre;
+ int HP_inter_mail_send_post;
int HP_inter_mercenary_owner_fromsql_pre;
int HP_inter_mercenary_owner_fromsql_post;
int HP_inter_mercenary_owner_tosql_pre;
@@ -2129,6 +2257,14 @@ struct {
int HP_inter_mercenary_sql_final_post;
int HP_inter_mercenary_parse_frommap_pre;
int HP_inter_mercenary_parse_frommap_post;
+ int HP_inter_mercenary_create_pre;
+ int HP_inter_mercenary_create_post;
+ int HP_inter_mercenary_save_pre;
+ int HP_inter_mercenary_save_post;
+ int HP_inter_mercenary_load_pre;
+ int HP_inter_mercenary_load_post;
+ int HP_inter_mercenary_delete_pre;
+ int HP_inter_mercenary_delete_post;
int HP_inter_party_check_lv_pre;
int HP_inter_party_check_lv_post;
int HP_inter_party_calc_state_pre;
@@ -2155,6 +2291,18 @@ struct {
int HP_inter_party_CharOnline_post;
int HP_inter_party_CharOffline_pre;
int HP_inter_party_CharOffline_post;
+ int HP_inter_party_create_pre;
+ int HP_inter_party_create_post;
+ int HP_inter_party_add_member_pre;
+ int HP_inter_party_add_member_post;
+ int HP_inter_party_change_option_pre;
+ int HP_inter_party_change_option_post;
+ int HP_inter_party_change_map_pre;
+ int HP_inter_party_change_map_post;
+ int HP_inter_party_disband_pre;
+ int HP_inter_party_disband_post;
+ int HP_inter_party_change_leader_pre;
+ int HP_inter_party_change_leader_post;
int HP_inter_pet_tosql_pre;
int HP_inter_pet_tosql_post;
int HP_inter_pet_fromsql_pre;
@@ -2167,8 +2315,22 @@ struct {
int HP_inter_pet_delete__post;
int HP_inter_pet_parse_frommap_pre;
int HP_inter_pet_parse_frommap_post;
+ int HP_inter_pet_create_pre;
+ int HP_inter_pet_create_post;
+ int HP_inter_pet_load_pre;
+ int HP_inter_pet_load_post;
int HP_inter_quest_parse_frommap_pre;
int HP_inter_quest_parse_frommap_post;
+ int HP_inter_quest_fromsql_pre;
+ int HP_inter_quest_fromsql_post;
+ int HP_inter_quest_delete_pre;
+ int HP_inter_quest_delete_post;
+ int HP_inter_quest_add_pre;
+ int HP_inter_quest_add_post;
+ int HP_inter_quest_update_pre;
+ int HP_inter_quest_update_post;
+ int HP_inter_quest_save_pre;
+ int HP_inter_quest_save_post;
int HP_inter_rodex_sql_init_pre;
int HP_inter_rodex_sql_init_post;
int HP_inter_rodex_sql_final_pre;
@@ -2183,6 +2345,8 @@ struct {
int HP_inter_rodex_checkname_post;
int HP_inter_rodex_savemessage_pre;
int HP_inter_rodex_savemessage_post;
+ int HP_inter_rodex_updatemail_pre;
+ int HP_inter_rodex_updatemail_post;
int HP_inter_storage_tosql_pre;
int HP_inter_storage_tosql_post;
int HP_inter_storage_fromsql_pre;
@@ -2201,6 +2365,8 @@ struct {
int HP_inter_storage_guild_storage_delete_post;
int HP_inter_storage_parse_frommap_pre;
int HP_inter_storage_parse_frommap_post;
+ int HP_inter_storage_retrieve_bound_items_pre;
+ int HP_inter_storage_retrieve_bound_items_post;
int HP_libconfig_read_pre;
int HP_libconfig_read_post;
int HP_libconfig_write_pre;
@@ -2407,14 +2573,6 @@ struct {
int HP_mapif_auction_bid_post;
int HP_mapif_parse_auction_bid_pre;
int HP_mapif_parse_auction_bid_post;
- int HP_mapif_elemental_create_pre;
- int HP_mapif_elemental_create_post;
- int HP_mapif_elemental_save_pre;
- int HP_mapif_elemental_save_post;
- int HP_mapif_elemental_load_pre;
- int HP_mapif_elemental_load_post;
- int HP_mapif_elemental_delete_pre;
- int HP_mapif_elemental_delete_post;
int HP_mapif_elemental_send_pre;
int HP_mapif_elemental_send_post;
int HP_mapif_parse_elemental_create_pre;
@@ -2485,8 +2643,6 @@ struct {
int HP_mapif_parse_GuildPosition_post;
int HP_mapif_parse_GuildSkillUp_pre;
int HP_mapif_parse_GuildSkillUp_post;
- int HP_mapif_parse_GuildDeleteAlliance_pre;
- int HP_mapif_parse_GuildDeleteAlliance_post;
int HP_mapif_parse_GuildAlliance_pre;
int HP_mapif_parse_GuildAlliance_post;
int HP_mapif_parse_GuildNotice_pre;
@@ -2509,16 +2665,6 @@ struct {
int HP_mapif_homunculus_saved_post;
int HP_mapif_homunculus_renamed_pre;
int HP_mapif_homunculus_renamed_post;
- int HP_mapif_homunculus_create_pre;
- int HP_mapif_homunculus_create_post;
- int HP_mapif_homunculus_save_pre;
- int HP_mapif_homunculus_save_post;
- int HP_mapif_homunculus_load_pre;
- int HP_mapif_homunculus_load_post;
- int HP_mapif_homunculus_delete_pre;
- int HP_mapif_homunculus_delete_post;
- int HP_mapif_homunculus_rename_pre;
- int HP_mapif_homunculus_rename_post;
int HP_mapif_parse_homunculus_create_pre;
int HP_mapif_parse_homunculus_create_post;
int HP_mapif_parse_homunculus_delete_pre;
@@ -2537,8 +2683,6 @@ struct {
int HP_mapif_parse_mail_read_post;
int HP_mapif_mail_sendattach_pre;
int HP_mapif_mail_sendattach_post;
- int HP_mapif_mail_getattach_pre;
- int HP_mapif_mail_getattach_post;
int HP_mapif_parse_mail_getattach_pre;
int HP_mapif_parse_mail_getattach_post;
int HP_mapif_mail_delete_pre;
@@ -2555,14 +2699,6 @@ struct {
int HP_mapif_mail_send_post;
int HP_mapif_parse_mail_send_pre;
int HP_mapif_parse_mail_send_post;
- int HP_mapif_mercenary_create_pre;
- int HP_mapif_mercenary_create_post;
- int HP_mapif_mercenary_save_pre;
- int HP_mapif_mercenary_save_post;
- int HP_mapif_mercenary_load_pre;
- int HP_mapif_mercenary_load_post;
- int HP_mapif_mercenary_delete_pre;
- int HP_mapif_mercenary_delete_post;
int HP_mapif_mercenary_send_pre;
int HP_mapif_mercenary_send_post;
int HP_mapif_parse_mercenary_create_pre;
@@ -2623,10 +2759,6 @@ struct {
int HP_mapif_save_pet_ack_post;
int HP_mapif_delete_pet_ack_pre;
int HP_mapif_delete_pet_ack_post;
- int HP_mapif_create_pet_pre;
- int HP_mapif_create_pet_post;
- int HP_mapif_load_pet_pre;
- int HP_mapif_load_pet_post;
int HP_mapif_save_pet_pre;
int HP_mapif_save_pet_post;
int HP_mapif_delete_pet_pre;
@@ -2639,14 +2771,6 @@ struct {
int HP_mapif_parse_SavePet_post;
int HP_mapif_parse_DeletePet_pre;
int HP_mapif_parse_DeletePet_post;
- int HP_mapif_quests_fromsql_pre;
- int HP_mapif_quests_fromsql_post;
- int HP_mapif_quest_delete_pre;
- int HP_mapif_quest_delete_post;
- int HP_mapif_quest_add_pre;
- int HP_mapif_quest_add_post;
- int HP_mapif_quest_update_pre;
- int HP_mapif_quest_update_post;
int HP_mapif_quest_save_ack_pre;
int HP_mapif_quest_save_ack_post;
int HP_mapif_parse_quest_save_pre;
@@ -2691,14 +2815,10 @@ struct {
int HP_mapif_sAccountStorageSaveAck_post;
int HP_mapif_itembound_ack_pre;
int HP_mapif_itembound_ack_post;
- int HP_mapif_parse_ItemBoundRetrieve_sub_pre;
- int HP_mapif_parse_ItemBoundRetrieve_sub_post;
int HP_mapif_parse_ItemBoundRetrieve_pre;
int HP_mapif_parse_ItemBoundRetrieve_post;
int HP_mapif_parse_accinfo_pre;
int HP_mapif_parse_accinfo_post;
- int HP_mapif_parse_accinfo2_pre;
- int HP_mapif_parse_accinfo2_post;
int HP_mapif_broadcast_pre;
int HP_mapif_broadcast_post;
int HP_mapif_wis_message_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
index 099bd1e81..d91cc43c8 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
@@ -54,6 +54,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(chr->mmo_char_sql_init, HP_chr_mmo_char_sql_init) },
{ HP_POP(chr->char_slotchange, HP_chr_char_slotchange) },
{ HP_POP(chr->rename_char_sql, HP_chr_rename_char_sql) },
+ { HP_POP(chr->name_exists, HP_chr_name_exists) },
{ HP_POP(chr->check_char_name, HP_chr_check_char_name) },
{ HP_POP(chr->make_new_char_sql, HP_chr_make_new_char_sql) },
{ HP_POP(chr->divorce_char_sql, HP_chr_divorce_char_sql) },
@@ -262,6 +263,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_elemental->sql_init, HP_inter_elemental_sql_init) },
{ HP_POP(inter_elemental->sql_final, HP_inter_elemental_sql_final) },
{ HP_POP(inter_elemental->parse_frommap, HP_inter_elemental_parse_frommap) },
+ { HP_POP(inter_elemental->create, HP_inter_elemental_create) },
+ { HP_POP(inter_elemental->save, HP_inter_elemental_save) },
+ { HP_POP(inter_elemental->load, HP_inter_elemental_load) },
+ { HP_POP(inter_elemental->delete, HP_inter_elemental_delete) },
/* inter_guild_interface */
{ HP_POP(inter_guild->save_timer, HP_inter_guild_save_timer) },
{ HP_POP(inter_guild->removemember_tosql, HP_inter_guild_removemember_tosql) },
@@ -283,12 +288,31 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_guild->sex_changed, HP_inter_guild_sex_changed) },
{ HP_POP(inter_guild->charname_changed, HP_inter_guild_charname_changed) },
{ HP_POP(inter_guild->parse_frommap, HP_inter_guild_parse_frommap) },
- { HP_POP(inter_guild->leave, HP_inter_guild_leave) },
{ HP_POP(inter_guild->broken, HP_inter_guild_broken) },
+ { HP_POP(inter_guild->create, HP_inter_guild_create) },
+ { HP_POP(inter_guild->add_member, HP_inter_guild_add_member) },
+ { HP_POP(inter_guild->leave, HP_inter_guild_leave) },
+ { HP_POP(inter_guild->update_member_info_short, HP_inter_guild_update_member_info_short) },
+ { HP_POP(inter_guild->update_member_info, HP_inter_guild_update_member_info) },
+ { HP_POP(inter_guild->disband, HP_inter_guild_disband) },
+ { HP_POP(inter_guild->update_basic_info, HP_inter_guild_update_basic_info) },
+ { HP_POP(inter_guild->update_position, HP_inter_guild_update_position) },
+ { HP_POP(inter_guild->use_skill_point, HP_inter_guild_use_skill_point) },
+ { HP_POP(inter_guild->remove_alliance, HP_inter_guild_remove_alliance) },
+ { HP_POP(inter_guild->change_alliance, HP_inter_guild_change_alliance) },
+ { HP_POP(inter_guild->update_notice, HP_inter_guild_update_notice) },
+ { HP_POP(inter_guild->update_emblem, HP_inter_guild_update_emblem) },
+ { HP_POP(inter_guild->update_castle_data, HP_inter_guild_update_castle_data) },
+ { HP_POP(inter_guild->change_leader, HP_inter_guild_change_leader) },
/* inter_homunculus_interface */
{ HP_POP(inter_homunculus->sql_init, HP_inter_homunculus_sql_init) },
{ HP_POP(inter_homunculus->sql_final, HP_inter_homunculus_sql_final) },
{ HP_POP(inter_homunculus->parse_frommap, HP_inter_homunculus_parse_frommap) },
+ { HP_POP(inter_homunculus->create, HP_inter_homunculus_create) },
+ { HP_POP(inter_homunculus->save, HP_inter_homunculus_save) },
+ { HP_POP(inter_homunculus->load, HP_inter_homunculus_load) },
+ { HP_POP(inter_homunculus->delete, HP_inter_homunculus_delete) },
+ { HP_POP(inter_homunculus->rename, HP_inter_homunculus_rename) },
/* inter_interface */
{ HP_POP(inter->msg_txt, HP_inter_msg_txt) },
{ HP_POP(inter->msg_config_read, HP_inter_msg_config_read) },
@@ -308,6 +332,11 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter->config_read, HP_inter_config_read) },
{ HP_POP(inter->config_read_log, HP_inter_config_read_log) },
{ HP_POP(inter->config_read_connection, HP_inter_config_read_connection) },
+ { HP_POP(inter->accinfo, HP_inter_accinfo) },
+ { HP_POP(inter->accinfo2, HP_inter_accinfo2) },
+ { HP_POP(inter->add_wisdata, HP_inter_add_wisdata) },
+ { HP_POP(inter->get_wisdata, HP_inter_get_wisdata) },
+ { HP_POP(inter->remove_wisdata, HP_inter_remove_wisdata) },
/* inter_mail_interface */
{ HP_POP(inter_mail->sql_init, HP_inter_mail_sql_init) },
{ HP_POP(inter_mail->sql_final, HP_inter_mail_sql_final) },
@@ -317,6 +346,11 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_mail->loadmessage, HP_inter_mail_loadmessage) },
{ HP_POP(inter_mail->DeleteAttach, HP_inter_mail_DeleteAttach) },
{ HP_POP(inter_mail->sendmail, HP_inter_mail_sendmail) },
+ { HP_POP(inter_mail->mark_read, HP_inter_mail_mark_read) },
+ { HP_POP(inter_mail->get_attachment, HP_inter_mail_get_attachment) },
+ { HP_POP(inter_mail->delete, HP_inter_mail_delete) },
+ { HP_POP(inter_mail->return_message, HP_inter_mail_return_message) },
+ { HP_POP(inter_mail->send, HP_inter_mail_send) },
/* inter_mercenary_interface */
{ HP_POP(inter_mercenary->owner_fromsql, HP_inter_mercenary_owner_fromsql) },
{ HP_POP(inter_mercenary->owner_tosql, HP_inter_mercenary_owner_tosql) },
@@ -324,6 +358,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_mercenary->sql_init, HP_inter_mercenary_sql_init) },
{ HP_POP(inter_mercenary->sql_final, HP_inter_mercenary_sql_final) },
{ HP_POP(inter_mercenary->parse_frommap, HP_inter_mercenary_parse_frommap) },
+ { HP_POP(inter_mercenary->create, HP_inter_mercenary_create) },
+ { HP_POP(inter_mercenary->save, HP_inter_mercenary_save) },
+ { HP_POP(inter_mercenary->load, HP_inter_mercenary_load) },
+ { HP_POP(inter_mercenary->delete, HP_inter_mercenary_delete) },
/* inter_party_interface */
{ HP_POP(inter_party->check_lv, HP_inter_party_check_lv) },
{ HP_POP(inter_party->calc_state, HP_inter_party_calc_state) },
@@ -338,6 +376,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_party->leave, HP_inter_party_leave) },
{ HP_POP(inter_party->CharOnline, HP_inter_party_CharOnline) },
{ HP_POP(inter_party->CharOffline, HP_inter_party_CharOffline) },
+ { HP_POP(inter_party->create, HP_inter_party_create) },
+ { HP_POP(inter_party->add_member, HP_inter_party_add_member) },
+ { HP_POP(inter_party->change_option, HP_inter_party_change_option) },
+ { HP_POP(inter_party->change_map, HP_inter_party_change_map) },
+ { HP_POP(inter_party->disband, HP_inter_party_disband) },
+ { HP_POP(inter_party->change_leader, HP_inter_party_change_leader) },
/* inter_pet_interface */
{ HP_POP(inter_pet->tosql, HP_inter_pet_tosql) },
{ HP_POP(inter_pet->fromsql, HP_inter_pet_fromsql) },
@@ -345,8 +389,15 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_pet->sql_final, HP_inter_pet_sql_final) },
{ HP_POP(inter_pet->delete_, HP_inter_pet_delete_) },
{ HP_POP(inter_pet->parse_frommap, HP_inter_pet_parse_frommap) },
+ { HP_POP(inter_pet->create, HP_inter_pet_create) },
+ { HP_POP(inter_pet->load, HP_inter_pet_load) },
/* inter_quest_interface */
{ HP_POP(inter_quest->parse_frommap, HP_inter_quest_parse_frommap) },
+ { HP_POP(inter_quest->fromsql, HP_inter_quest_fromsql) },
+ { HP_POP(inter_quest->delete, HP_inter_quest_delete) },
+ { HP_POP(inter_quest->add, HP_inter_quest_add) },
+ { HP_POP(inter_quest->update, HP_inter_quest_update) },
+ { HP_POP(inter_quest->save, HP_inter_quest_save) },
/* inter_rodex_interface */
{ HP_POP(inter_rodex->sql_init, HP_inter_rodex_sql_init) },
{ HP_POP(inter_rodex->sql_final, HP_inter_rodex_sql_final) },
@@ -355,6 +406,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_rodex->hasnew, HP_inter_rodex_hasnew) },
{ HP_POP(inter_rodex->checkname, HP_inter_rodex_checkname) },
{ HP_POP(inter_rodex->savemessage, HP_inter_rodex_savemessage) },
+ { HP_POP(inter_rodex->updatemail, HP_inter_rodex_updatemail) },
/* inter_storage_interface */
{ HP_POP(inter_storage->tosql, HP_inter_storage_tosql) },
{ HP_POP(inter_storage->fromsql, HP_inter_storage_fromsql) },
@@ -365,6 +417,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter_storage->delete_, HP_inter_storage_delete_) },
{ HP_POP(inter_storage->guild_storage_delete, HP_inter_storage_guild_storage_delete) },
{ HP_POP(inter_storage->parse_frommap, HP_inter_storage_parse_frommap) },
+ { HP_POP(inter_storage->retrieve_bound_items, HP_inter_storage_retrieve_bound_items) },
/* libconfig_interface */
{ HP_POP(libconfig->read, HP_libconfig_read) },
{ HP_POP(libconfig->write, HP_libconfig_write) },
@@ -471,10 +524,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_auction_close, HP_mapif_parse_auction_close) },
{ HP_POP(mapif->auction_bid, HP_mapif_auction_bid) },
{ HP_POP(mapif->parse_auction_bid, HP_mapif_parse_auction_bid) },
- { HP_POP(mapif->elemental_create, HP_mapif_elemental_create) },
- { HP_POP(mapif->elemental_save, HP_mapif_elemental_save) },
- { HP_POP(mapif->elemental_load, HP_mapif_elemental_load) },
- { HP_POP(mapif->elemental_delete, HP_mapif_elemental_delete) },
{ HP_POP(mapif->elemental_send, HP_mapif_elemental_send) },
{ HP_POP(mapif->parse_elemental_create, HP_mapif_parse_elemental_create) },
{ HP_POP(mapif->parse_elemental_load, HP_mapif_parse_elemental_load) },
@@ -510,7 +559,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_GuildMemberInfoChange, HP_mapif_parse_GuildMemberInfoChange) },
{ HP_POP(mapif->parse_GuildPosition, HP_mapif_parse_GuildPosition) },
{ HP_POP(mapif->parse_GuildSkillUp, HP_mapif_parse_GuildSkillUp) },
- { HP_POP(mapif->parse_GuildDeleteAlliance, HP_mapif_parse_GuildDeleteAlliance) },
{ HP_POP(mapif->parse_GuildAlliance, HP_mapif_parse_GuildAlliance) },
{ HP_POP(mapif->parse_GuildNotice, HP_mapif_parse_GuildNotice) },
{ HP_POP(mapif->parse_GuildEmblem, HP_mapif_parse_GuildEmblem) },
@@ -522,11 +570,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->homunculus_loaded, HP_mapif_homunculus_loaded) },
{ HP_POP(mapif->homunculus_saved, HP_mapif_homunculus_saved) },
{ HP_POP(mapif->homunculus_renamed, HP_mapif_homunculus_renamed) },
- { HP_POP(mapif->homunculus_create, HP_mapif_homunculus_create) },
- { HP_POP(mapif->homunculus_save, HP_mapif_homunculus_save) },
- { HP_POP(mapif->homunculus_load, HP_mapif_homunculus_load) },
- { HP_POP(mapif->homunculus_delete, HP_mapif_homunculus_delete) },
- { HP_POP(mapif->homunculus_rename, HP_mapif_homunculus_rename) },
{ HP_POP(mapif->parse_homunculus_create, HP_mapif_parse_homunculus_create) },
{ HP_POP(mapif->parse_homunculus_delete, HP_mapif_parse_homunculus_delete) },
{ HP_POP(mapif->parse_homunculus_load, HP_mapif_parse_homunculus_load) },
@@ -536,7 +579,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_mail_requestinbox, HP_mapif_parse_mail_requestinbox) },
{ HP_POP(mapif->parse_mail_read, HP_mapif_parse_mail_read) },
{ HP_POP(mapif->mail_sendattach, HP_mapif_mail_sendattach) },
- { HP_POP(mapif->mail_getattach, HP_mapif_mail_getattach) },
{ HP_POP(mapif->parse_mail_getattach, HP_mapif_parse_mail_getattach) },
{ HP_POP(mapif->mail_delete, HP_mapif_mail_delete) },
{ HP_POP(mapif->parse_mail_delete, HP_mapif_parse_mail_delete) },
@@ -545,10 +587,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_mail_return, HP_mapif_parse_mail_return) },
{ HP_POP(mapif->mail_send, HP_mapif_mail_send) },
{ HP_POP(mapif->parse_mail_send, HP_mapif_parse_mail_send) },
- { HP_POP(mapif->mercenary_create, HP_mapif_mercenary_create) },
- { HP_POP(mapif->mercenary_save, HP_mapif_mercenary_save) },
- { HP_POP(mapif->mercenary_load, HP_mapif_mercenary_load) },
- { HP_POP(mapif->mercenary_delete, HP_mapif_mercenary_delete) },
{ HP_POP(mapif->mercenary_send, HP_mapif_mercenary_send) },
{ HP_POP(mapif->parse_mercenary_create, HP_mapif_parse_mercenary_create) },
{ HP_POP(mapif->parse_mercenary_load, HP_mapif_parse_mercenary_load) },
@@ -579,18 +617,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->pet_noinfo, HP_mapif_pet_noinfo) },
{ HP_POP(mapif->save_pet_ack, HP_mapif_save_pet_ack) },
{ HP_POP(mapif->delete_pet_ack, HP_mapif_delete_pet_ack) },
- { HP_POP(mapif->create_pet, HP_mapif_create_pet) },
- { HP_POP(mapif->load_pet, HP_mapif_load_pet) },
{ HP_POP(mapif->save_pet, HP_mapif_save_pet) },
{ HP_POP(mapif->delete_pet, HP_mapif_delete_pet) },
{ HP_POP(mapif->parse_CreatePet, HP_mapif_parse_CreatePet) },
{ HP_POP(mapif->parse_LoadPet, HP_mapif_parse_LoadPet) },
{ HP_POP(mapif->parse_SavePet, HP_mapif_parse_SavePet) },
{ HP_POP(mapif->parse_DeletePet, HP_mapif_parse_DeletePet) },
- { HP_POP(mapif->quests_fromsql, HP_mapif_quests_fromsql) },
- { HP_POP(mapif->quest_delete, HP_mapif_quest_delete) },
- { HP_POP(mapif->quest_add, HP_mapif_quest_add) },
- { HP_POP(mapif->quest_update, HP_mapif_quest_update) },
{ HP_POP(mapif->quest_save_ack, HP_mapif_quest_save_ack) },
{ HP_POP(mapif->parse_quest_save, HP_mapif_parse_quest_save) },
{ HP_POP(mapif->send_quests, HP_mapif_send_quests) },
@@ -613,10 +645,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->pAccountStorageSave, HP_mapif_pAccountStorageSave) },
{ HP_POP(mapif->sAccountStorageSaveAck, HP_mapif_sAccountStorageSaveAck) },
{ HP_POP(mapif->itembound_ack, HP_mapif_itembound_ack) },
- { HP_POP(mapif->parse_ItemBoundRetrieve_sub, HP_mapif_parse_ItemBoundRetrieve_sub) },
{ HP_POP(mapif->parse_ItemBoundRetrieve, HP_mapif_parse_ItemBoundRetrieve) },
{ HP_POP(mapif->parse_accinfo, HP_mapif_parse_accinfo) },
- { HP_POP(mapif->parse_accinfo2, HP_mapif_parse_accinfo2) },
{ HP_POP(mapif->broadcast, HP_mapif_broadcast) },
{ HP_POP(mapif->wis_message, HP_mapif_wis_message) },
{ HP_POP(mapif->wis_response, HP_mapif_wis_response) },
diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
index 6ce1c5015..831c9da63 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
@@ -744,11 +744,38 @@ int HP_chr_rename_char_sql(struct char_session_data *sd, int char_id) {
}
return retVal___;
}
-int HP_chr_check_char_name(char *name, char *esc_name) {
+bool HP_chr_name_exists(const char *name, const char *esc_name) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_chr_name_exists_pre > 0) {
+ bool (*preHookFunc) (const char **name, const char **esc_name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_name_exists_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_chr_name_exists_pre[hIndex].func;
+ retVal___ = preHookFunc(&name, &esc_name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.chr.name_exists(name, esc_name);
+ }
+ if (HPMHooks.count.HP_chr_name_exists_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *name, const char *esc_name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_name_exists_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_chr_name_exists_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name, esc_name);
+ }
+ }
+ return retVal___;
+}
+int HP_chr_check_char_name(const char *name, const char *esc_name) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_chr_check_char_name_pre > 0) {
- int (*preHookFunc) (char **name, char **esc_name);
+ int (*preHookFunc) (const char **name, const char **esc_name);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_char_name_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_check_char_name_pre[hIndex].func;
@@ -763,7 +790,7 @@ int HP_chr_check_char_name(char *name, char *esc_name) {
retVal___ = HPMHooks.source.chr.check_char_name(name, esc_name);
}
if (HPMHooks.count.HP_chr_check_char_name_post > 0) {
- int (*postHookFunc) (int retVal___, char *name, char *esc_name);
+ int (*postHookFunc) (int retVal___, const char *name, const char *esc_name);
for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_check_char_name_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_check_char_name_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, esc_name);
@@ -6015,6 +6042,114 @@ int HP_inter_elemental_parse_frommap(int fd) {
}
return retVal___;
}
+bool HP_inter_elemental_create(struct s_elemental *ele) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_elemental_create_pre > 0) {
+ bool (*preHookFunc) (struct s_elemental **ele);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_elemental_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&ele);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_elemental.create(ele);
+ }
+ if (HPMHooks.count.HP_inter_elemental_create_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct s_elemental *ele);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_elemental_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ele);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_elemental_save(const struct s_elemental *ele) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_elemental_save_pre > 0) {
+ bool (*preHookFunc) (const struct s_elemental **ele);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_elemental_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&ele);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_elemental.save(ele);
+ }
+ if (HPMHooks.count.HP_inter_elemental_save_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct s_elemental *ele);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_elemental_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ele);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_elemental_load(int ele_id, int char_id, struct s_elemental *ele) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_elemental_load_pre > 0) {
+ bool (*preHookFunc) (int *ele_id, int *char_id, struct s_elemental **ele);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_elemental_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&ele_id, &char_id, &ele);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_elemental.load(ele_id, char_id, ele);
+ }
+ if (HPMHooks.count.HP_inter_elemental_load_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int ele_id, int char_id, struct s_elemental *ele);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_elemental_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ele_id, char_id, ele);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_elemental_delete(int ele_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_elemental_delete_pre > 0) {
+ bool (*preHookFunc) (int *ele_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_elemental_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&ele_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_elemental.delete(ele_id);
+ }
+ if (HPMHooks.count.HP_inter_elemental_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int ele_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_elemental_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_elemental_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, ele_id);
+ }
+ }
+ return retVal___;
+}
/* inter_guild_interface */
int HP_inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
@@ -6561,15 +6696,96 @@ int HP_inter_guild_parse_frommap(int fd) {
}
return retVal___;
}
-int HP_inter_guild_leave(int guild_id, int account_id, int char_id) {
+int HP_inter_guild_broken(int guild_id) {
int hIndex = 0;
int retVal___ = 0;
+ if (HPMHooks.count.HP_inter_guild_broken_pre > 0) {
+ int (*preHookFunc) (int *guild_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_broken_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_broken_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.broken(guild_id);
+ }
+ if (HPMHooks.count.HP_inter_guild_broken_post > 0) {
+ int (*postHookFunc) (int retVal___, int guild_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_broken_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_broken_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id);
+ }
+ }
+ return retVal___;
+}
+struct guild* HP_inter_guild_create(const char *name, const struct guild_member *master) {
+ int hIndex = 0;
+ struct guild* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_guild_create_pre > 0) {
+ struct guild* (*preHookFunc) (const char **name, const struct guild_member **master);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&name, &master);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.create(name, master);
+ }
+ if (HPMHooks.count.HP_inter_guild_create_post > 0) {
+ struct guild* (*postHookFunc) (struct guild* retVal___, const char *name, const struct guild_member *master);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name, master);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_add_member(int guild_id, const struct guild_member *member, int map_fd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_add_member_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, const struct guild_member **member, int *map_fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_add_member_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_add_member_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &member, &map_fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.add_member(guild_id, member, map_fd);
+ }
+ if (HPMHooks.count.HP_inter_guild_add_member_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, const struct guild_member *member, int map_fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_add_member_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_add_member_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, member, map_fd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_leave(int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd) {
+ int hIndex = 0;
+ bool retVal___ = false;
if (HPMHooks.count.HP_inter_guild_leave_pre > 0) {
- int (*preHookFunc) (int *guild_id, int *account_id, int *char_id);
+ bool (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *flag, const char **mes, int *map_fd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_leave_pre[hIndex].func;
- retVal___ = preHookFunc(&guild_id, &account_id, &char_id);
+ retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &flag, &mes, &map_fd);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -6577,25 +6793,79 @@ int HP_inter_guild_leave(int guild_id, int account_id, int char_id) {
}
}
{
- retVal___ = HPMHooks.source.inter_guild.leave(guild_id, account_id, char_id);
+ retVal___ = HPMHooks.source.inter_guild.leave(guild_id, account_id, char_id, flag, mes, map_fd);
}
if (HPMHooks.count.HP_inter_guild_leave_post > 0) {
- int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id);
+ bool (*postHookFunc) (bool retVal___, int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_leave_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id);
+ retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, flag, mes, map_fd);
}
}
return retVal___;
}
-int HP_inter_guild_broken(int guild_id) {
+bool HP_inter_guild_update_member_info_short(int guild_id, int account_id, int char_id, int online, int lv, int16 class) {
int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_inter_guild_broken_pre > 0) {
- int (*preHookFunc) (int *guild_id);
+ 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);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_broken_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_inter_guild_broken_pre[hIndex].func;
+ 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;
+ retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &online, &lv, &class);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ 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);
+ 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);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_member_info(int guild_id, int account_id, int char_id, int type, const char *data, int len) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_member_info_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *type, const char **data, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_member_info_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_member_info_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &account_id, &char_id, &type, &data, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_member_info(guild_id, account_id, char_id, type, data, len);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_member_info_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, int account_id, int char_id, int type, const char *data, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_member_info_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_member_info_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, type, data, len);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_disband(int guild_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_disband_pre > 0) {
+ bool (*preHookFunc) (int *guild_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_disband_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_disband_pre[hIndex].func;
retVal___ = preHookFunc(&guild_id);
}
if (*HPMforce_return) {
@@ -6604,17 +6874,260 @@ int HP_inter_guild_broken(int guild_id) {
}
}
{
- retVal___ = HPMHooks.source.inter_guild.broken(guild_id);
+ retVal___ = HPMHooks.source.inter_guild.disband(guild_id);
}
- if (HPMHooks.count.HP_inter_guild_broken_post > 0) {
- int (*postHookFunc) (int retVal___, int guild_id);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_broken_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_inter_guild_broken_post[hIndex].func;
+ if (HPMHooks.count.HP_inter_guild_disband_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_disband_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_disband_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id);
}
}
return retVal___;
}
+bool HP_inter_guild_update_basic_info(int guild_id, int type, const void *data, int len) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_basic_info_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, int *type, const void **data, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_basic_info_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_basic_info_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &type, &data, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_basic_info(guild_id, type, data, len);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_basic_info_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, int type, const void *data, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_basic_info_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_basic_info_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, type, data, len);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_position(int guild_id, int idx, const struct guild_position *p) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_position_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, int *idx, const struct guild_position **p);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_position_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_position_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &idx, &p);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_position(guild_id, idx, p);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_position_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, int idx, const struct guild_position *p);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_position_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_position_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, idx, p);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_use_skill_point(int guild_id, uint16 skill_id, int account_id, int max) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_use_skill_point_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, uint16 *skill_id, int *account_id, int *max);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_use_skill_point_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_use_skill_point_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &skill_id, &account_id, &max);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.use_skill_point(guild_id, skill_id, account_id, max);
+ }
+ if (HPMHooks.count.HP_inter_guild_use_skill_point_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, uint16 skill_id, int account_id, int max);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_use_skill_point_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_use_skill_point_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, skill_id, account_id, max);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_remove_alliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_remove_alliance_pre > 0) {
+ bool (*preHookFunc) (struct guild **g, int *guild_id, int *account_id1, int *account_id2, int *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_remove_alliance_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_remove_alliance_pre[hIndex].func;
+ retVal___ = preHookFunc(&g, &guild_id, &account_id1, &account_id2, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.remove_alliance(g, guild_id, account_id1, account_id2, flag);
+ }
+ if (HPMHooks.count.HP_inter_guild_remove_alliance_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_remove_alliance_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_remove_alliance_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, g, guild_id, account_id1, account_id2, flag);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_change_alliance(int guild_id1, int guild_id2, int account_id1, int account_id2, int flag) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_change_alliance_pre > 0) {
+ bool (*preHookFunc) (int *guild_id1, int *guild_id2, int *account_id1, int *account_id2, int *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_change_alliance_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_change_alliance_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id1, &guild_id2, &account_id1, &account_id2, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.change_alliance(guild_id1, guild_id2, account_id1, account_id2, flag);
+ }
+ if (HPMHooks.count.HP_inter_guild_change_alliance_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_change_alliance_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_change_alliance_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id1, guild_id2, account_id1, account_id2, flag);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_notice(int guild_id, const char *mes1, const char *mes2) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_notice_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, const char **mes1, const char **mes2);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_notice_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_notice_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &mes1, &mes2);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_notice(guild_id, mes1, mes2);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_notice_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, const char *mes1, const char *mes2);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_notice_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_notice_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, mes1, mes2);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_emblem(int len, int guild_id, const char *data) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_emblem_pre > 0) {
+ bool (*preHookFunc) (int *len, int *guild_id, const char **data);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_emblem_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_emblem_pre[hIndex].func;
+ retVal___ = preHookFunc(&len, &guild_id, &data);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_emblem(len, guild_id, data);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_emblem_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int len, int guild_id, const char *data);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_emblem_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_emblem_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, len, guild_id, data);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_update_castle_data(int castle_id, int index, int value) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_update_castle_data_pre > 0) {
+ bool (*preHookFunc) (int *castle_id, int *index, int *value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_castle_data_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_update_castle_data_pre[hIndex].func;
+ retVal___ = preHookFunc(&castle_id, &index, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.update_castle_data(castle_id, index, value);
+ }
+ if (HPMHooks.count.HP_inter_guild_update_castle_data_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int castle_id, int index, int value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_castle_data_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_update_castle_data_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, castle_id, index, value);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_guild_change_leader(int guild_id, const char *name, int len) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_guild_change_leader_pre > 0) {
+ bool (*preHookFunc) (int *guild_id, const char **name, int *len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_change_leader_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_guild_change_leader_pre[hIndex].func;
+ retVal___ = preHookFunc(&guild_id, &name, &len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_guild.change_leader(guild_id, name, len);
+ }
+ if (HPMHooks.count.HP_inter_guild_change_leader_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int guild_id, const char *name, int len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_change_leader_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_guild_change_leader_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, guild_id, name, len);
+ }
+ }
+ return retVal___;
+}
/* inter_homunculus_interface */
int HP_inter_homunculus_sql_init(void) {
int hIndex = 0;
@@ -6696,6 +7209,141 @@ int HP_inter_homunculus_parse_frommap(int fd) {
}
return retVal___;
}
+bool HP_inter_homunculus_create(struct s_homunculus *hd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_create_pre > 0) {
+ bool (*preHookFunc) (struct s_homunculus **hd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&hd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.create(hd);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_create_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct s_homunculus *hd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, hd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_homunculus_save(const struct s_homunculus *hd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_save_pre > 0) {
+ bool (*preHookFunc) (const struct s_homunculus **hd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&hd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.save(hd);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_save_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct s_homunculus *hd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, hd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_homunculus_load(int homun_id, struct s_homunculus *hd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_load_pre > 0) {
+ bool (*preHookFunc) (int *homun_id, struct s_homunculus **hd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&homun_id, &hd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.load(homun_id, hd);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_load_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int homun_id, struct s_homunculus *hd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, homun_id, hd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_homunculus_delete(int homun_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_delete_pre > 0) {
+ bool (*preHookFunc) (int *homun_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&homun_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.delete(homun_id);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int homun_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, homun_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_homunculus_rename(const char *name) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_homunculus_rename_pre > 0) {
+ bool (*preHookFunc) (const char **name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_rename_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_homunculus_rename_pre[hIndex].func;
+ retVal___ = preHookFunc(&name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_homunculus.rename(name);
+ }
+ if (HPMHooks.count.HP_inter_homunculus_rename_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_homunculus_rename_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_homunculus_rename_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name);
+ }
+ }
+ return retVal___;
+}
/* inter_interface */
const char* HP_inter_msg_txt(int msg_number) {
int hIndex = 0;
@@ -7197,6 +7845,138 @@ bool HP_inter_config_read_connection(const char *filename, const struct config_t
}
return retVal___;
}
+void HP_inter_accinfo(int u_fd, int aid, int castergroup, const char *query, int map_fd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_inter_accinfo_pre > 0) {
+ void (*preHookFunc) (int *u_fd, int *aid, int *castergroup, const char **query, int *map_fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accinfo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_accinfo_pre[hIndex].func;
+ preHookFunc(&u_fd, &aid, &castergroup, &query, &map_fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.inter.accinfo(u_fd, aid, castergroup, query, map_fd);
+ }
+ if (HPMHooks.count.HP_inter_accinfo_post > 0) {
+ void (*postHookFunc) (int u_fd, int aid, int castergroup, const char *query, int map_fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accinfo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_accinfo_post[hIndex].func;
+ postHookFunc(u_fd, aid, castergroup, query, map_fd);
+ }
+ }
+ return;
+}
+void HP_inter_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_inter_accinfo2_pre > 0) {
+ void (*preHookFunc) (bool *success, int *map_fd, int *u_fd, int *u_aid, int *account_id, const char **userid, const char **user_pass, const char **email, const char **last_ip, const char **lastlogin, const char **pin_code, const char **birthdate, int *group_id, int *logincount, int *state);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accinfo2_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_accinfo2_pre[hIndex].func;
+ preHookFunc(&success, &map_fd, &u_fd, &u_aid, &account_id, &userid, &user_pass, &email, &last_ip, &lastlogin, &pin_code, &birthdate, &group_id, &logincount, &state);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.inter.accinfo2(success, map_fd, u_fd, u_aid, account_id, userid, user_pass, email, last_ip, lastlogin, pin_code, birthdate, group_id, logincount, state);
+ }
+ if (HPMHooks.count.HP_inter_accinfo2_post > 0) {
+ void (*postHookFunc) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_accinfo2_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_accinfo2_post[hIndex].func;
+ postHookFunc(success, map_fd, u_fd, u_aid, account_id, userid, user_pass, email, last_ip, lastlogin, pin_code, birthdate, group_id, logincount, state);
+ }
+ }
+ return;
+}
+struct WisData* HP_inter_add_wisdata(int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len) {
+ int hIndex = 0;
+ struct WisData* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_add_wisdata_pre > 0) {
+ struct WisData* (*preHookFunc) (int *fd, const unsigned char **src, const unsigned char **dst, const unsigned char **msg, int *msg_len);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_add_wisdata_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_add_wisdata_pre[hIndex].func;
+ retVal___ = preHookFunc(&fd, &src, &dst, &msg, &msg_len);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter.add_wisdata(fd, src, dst, msg, msg_len);
+ }
+ if (HPMHooks.count.HP_inter_add_wisdata_post > 0) {
+ struct WisData* (*postHookFunc) (struct WisData* retVal___, int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_add_wisdata_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_add_wisdata_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, fd, src, dst, msg, msg_len);
+ }
+ }
+ return retVal___;
+}
+struct WisData* HP_inter_get_wisdata(int id) {
+ int hIndex = 0;
+ struct WisData* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_get_wisdata_pre > 0) {
+ struct WisData* (*preHookFunc) (int *id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_get_wisdata_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_get_wisdata_pre[hIndex].func;
+ retVal___ = preHookFunc(&id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter.get_wisdata(id);
+ }
+ if (HPMHooks.count.HP_inter_get_wisdata_post > 0) {
+ struct WisData* (*postHookFunc) (struct WisData* retVal___, int id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_get_wisdata_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_get_wisdata_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, id);
+ }
+ }
+ return retVal___;
+}
+void HP_inter_remove_wisdata(int id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_inter_remove_wisdata_pre > 0) {
+ void (*preHookFunc) (int *id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_remove_wisdata_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_remove_wisdata_pre[hIndex].func;
+ preHookFunc(&id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.inter.remove_wisdata(id);
+ }
+ if (HPMHooks.count.HP_inter_remove_wisdata_post > 0) {
+ void (*postHookFunc) (int id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_remove_wisdata_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_remove_wisdata_post[hIndex].func;
+ postHookFunc(id);
+ }
+ }
+ return;
+}
/* inter_mail_interface */
int HP_inter_mail_sql_init(void) {
int hIndex = 0;
@@ -7412,6 +8192,141 @@ void HP_inter_mail_sendmail(int send_id, const char *send_name, int dest_id, con
}
return;
}
+bool HP_inter_mail_mark_read(int mail_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_mark_read_pre > 0) {
+ bool (*preHookFunc) (int *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_mark_read_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_mark_read_pre[hIndex].func;
+ retVal___ = preHookFunc(&mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.mark_read(mail_id);
+ }
+ if (HPMHooks.count.HP_inter_mail_mark_read_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_mark_read_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_mark_read_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, mail_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mail_get_attachment(int char_id, int mail_id, struct mail_message *msg) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_get_attachment_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *mail_id, struct mail_message **msg);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_get_attachment_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_get_attachment_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &mail_id, &msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.get_attachment(char_id, mail_id, msg);
+ }
+ if (HPMHooks.count.HP_inter_mail_get_attachment_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int mail_id, struct mail_message *msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_get_attachment_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_get_attachment_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, mail_id, msg);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mail_delete(int char_id, int mail_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_delete_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *mail_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &mail_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.delete(char_id, mail_id);
+ }
+ if (HPMHooks.count.HP_inter_mail_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int mail_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, mail_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mail_return_message(int char_id, int mail_id, int *new_mail) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_return_message_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *mail_id, int **new_mail);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_return_message_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_return_message_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &mail_id, &new_mail);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.return_message(char_id, mail_id, new_mail);
+ }
+ if (HPMHooks.count.HP_inter_mail_return_message_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int mail_id, int *new_mail);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_return_message_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_return_message_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, mail_id, new_mail);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mail_send(int account_id, struct mail_message *msg) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mail_send_pre > 0) {
+ bool (*preHookFunc) (int *account_id, struct mail_message **msg);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_send_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mail_send_pre[hIndex].func;
+ retVal___ = preHookFunc(&account_id, &msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mail.send(account_id, msg);
+ }
+ if (HPMHooks.count.HP_inter_mail_send_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int account_id, struct mail_message *msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mail_send_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mail_send_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, account_id, msg);
+ }
+ }
+ return retVal___;
+}
/* inter_mercenary_interface */
bool HP_inter_mercenary_owner_fromsql(int char_id, struct mmo_charstatus *status) {
int hIndex = 0;
@@ -7574,6 +8489,114 @@ int HP_inter_mercenary_parse_frommap(int fd) {
}
return retVal___;
}
+bool HP_inter_mercenary_create(struct s_mercenary *merc) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mercenary_create_pre > 0) {
+ bool (*preHookFunc) (struct s_mercenary **merc);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mercenary_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&merc);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mercenary.create(merc);
+ }
+ if (HPMHooks.count.HP_inter_mercenary_create_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct s_mercenary *merc);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mercenary_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, merc);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mercenary_save(const struct s_mercenary *merc) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mercenary_save_pre > 0) {
+ bool (*preHookFunc) (const struct s_mercenary **merc);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mercenary_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&merc);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mercenary.save(merc);
+ }
+ if (HPMHooks.count.HP_inter_mercenary_save_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const struct s_mercenary *merc);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mercenary_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, merc);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mercenary_load_pre > 0) {
+ bool (*preHookFunc) (int *merc_id, int *char_id, struct s_mercenary **merc);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mercenary_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&merc_id, &char_id, &merc);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mercenary.load(merc_id, char_id, merc);
+ }
+ if (HPMHooks.count.HP_inter_mercenary_load_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int merc_id, int char_id, struct s_mercenary *merc);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mercenary_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, merc_id, char_id, merc);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_mercenary_delete(int merc_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_mercenary_delete_pre > 0) {
+ bool (*preHookFunc) (int *merc_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_mercenary_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&merc_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_mercenary.delete(merc_id);
+ }
+ if (HPMHooks.count.HP_inter_mercenary_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int merc_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_mercenary_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_mercenary_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, merc_id);
+ }
+ }
+ return retVal___;
+}
/* inter_party_interface */
int HP_inter_party_check_lv(struct party_data *p) {
int hIndex = 0;
@@ -7843,11 +8866,11 @@ int HP_inter_party_parse_frommap(int fd) {
}
return retVal___;
}
-int HP_inter_party_leave(int party_id, int account_id, int char_id) {
+bool HP_inter_party_leave(int party_id, int account_id, int char_id) {
int hIndex = 0;
- int retVal___ = 0;
+ bool retVal___ = false;
if (HPMHooks.count.HP_inter_party_leave_pre > 0) {
- int (*preHookFunc) (int *party_id, int *account_id, int *char_id);
+ bool (*preHookFunc) (int *party_id, int *account_id, int *char_id);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_leave_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_party_leave_pre[hIndex].func;
@@ -7862,7 +8885,7 @@ int HP_inter_party_leave(int party_id, int account_id, int char_id) {
retVal___ = HPMHooks.source.inter_party.leave(party_id, account_id, char_id);
}
if (HPMHooks.count.HP_inter_party_leave_post > 0) {
- int (*postHookFunc) (int retVal___, int party_id, int account_id, int char_id);
+ bool (*postHookFunc) (bool retVal___, int party_id, int account_id, int char_id);
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_leave_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_party_leave_post[hIndex].func;
retVal___ = postHookFunc(retVal___, party_id, account_id, char_id);
@@ -7924,6 +8947,168 @@ int HP_inter_party_CharOffline(int char_id, int party_id) {
}
return retVal___;
}
+struct party_data* HP_inter_party_create(const char *name, int item, int item2, const struct party_member *leader) {
+ int hIndex = 0;
+ struct party_data* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_party_create_pre > 0) {
+ struct party_data* (*preHookFunc) (const char **name, int *item, int *item2, const struct party_member **leader);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_create_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_create_pre[hIndex].func;
+ retVal___ = preHookFunc(&name, &item, &item2, &leader);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.create(name, item, item2, leader);
+ }
+ if (HPMHooks.count.HP_inter_party_create_post > 0) {
+ struct party_data* (*postHookFunc) (struct party_data* retVal___, const char *name, int item, int item2, const struct party_member *leader);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_create_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_create_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name, item, item2, leader);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_add_member(int party_id, const struct party_member *member) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_add_member_pre > 0) {
+ bool (*preHookFunc) (int *party_id, const struct party_member **member);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_add_member_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_add_member_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id, &member);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.add_member(party_id, member);
+ }
+ if (HPMHooks.count.HP_inter_party_add_member_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id, const struct party_member *member);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_add_member_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_add_member_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id, member);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_change_option(int party_id, int account_id, int exp, int item, int map_fd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_change_option_pre > 0) {
+ bool (*preHookFunc) (int *party_id, int *account_id, int *exp, int *item, int *map_fd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_option_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_change_option_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id, &account_id, &exp, &item, &map_fd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.change_option(party_id, account_id, exp, item, map_fd);
+ }
+ if (HPMHooks.count.HP_inter_party_change_option_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id, int account_id, int exp, int item, int map_fd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_option_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_change_option_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id, account_id, exp, item, map_fd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_change_map(int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_change_map_pre > 0) {
+ bool (*preHookFunc) (int *party_id, int *account_id, int *char_id, unsigned short *map, int *online, unsigned int *lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_map_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_change_map_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id, &account_id, &char_id, &map, &online, &lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.change_map(party_id, account_id, char_id, map, online, lv);
+ }
+ if (HPMHooks.count.HP_inter_party_change_map_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_map_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_change_map_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id, account_id, char_id, map, online, lv);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_disband(int party_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_disband_pre > 0) {
+ bool (*preHookFunc) (int *party_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_disband_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_disband_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.disband(party_id);
+ }
+ if (HPMHooks.count.HP_inter_party_disband_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_disband_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_disband_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_party_change_leader(int party_id, int account_id, int char_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_party_change_leader_pre > 0) {
+ bool (*preHookFunc) (int *party_id, int *account_id, int *char_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_leader_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_party_change_leader_pre[hIndex].func;
+ retVal___ = preHookFunc(&party_id, &account_id, &char_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_party.change_leader(party_id, account_id, char_id);
+ }
+ if (HPMHooks.count.HP_inter_party_change_leader_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int party_id, int account_id, int char_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_party_change_leader_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_party_change_leader_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, party_id, account_id, char_id);
+ }
+ }
+ return retVal___;
+}
/* inter_pet_interface */
int HP_inter_pet_tosql(const struct s_pet *p) {
int hIndex = 0;
@@ -8086,6 +9271,60 @@ 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) {
+ 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);
+ *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;
+ retVal___ = preHookFunc(&account_id, &char_id, &pet_class, &pet_lv, &pet_egg_id, &pet_equip, &intimate, &hungry, &rename_flag, &incubate, &pet_name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ 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);
+ 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);
+ }
+ }
+ return retVal___;
+}
+struct s_pet* HP_inter_pet_load(int account_id, int char_id, int pet_id) {
+ int hIndex = 0;
+ struct s_pet* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_pet_load_pre > 0) {
+ struct s_pet* (*preHookFunc) (int *account_id, int *char_id, int *pet_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_load_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_pet_load_pre[hIndex].func;
+ retVal___ = preHookFunc(&account_id, &char_id, &pet_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_pet.load(account_id, char_id, pet_id);
+ }
+ if (HPMHooks.count.HP_inter_pet_load_post > 0) {
+ struct s_pet* (*postHookFunc) (struct s_pet* retVal___, int account_id, int char_id, int pet_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_load_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_pet_load_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, account_id, char_id, pet_id);
+ }
+ }
+ return retVal___;
+}
/* inter_quest_interface */
int HP_inter_quest_parse_frommap(int fd) {
int hIndex = 0;
@@ -8114,6 +9353,141 @@ int HP_inter_quest_parse_frommap(int fd) {
}
return retVal___;
}
+struct quest* HP_inter_quest_fromsql(int char_id, int *count) {
+ int hIndex = 0;
+ struct quest* retVal___ = NULL;
+ if (HPMHooks.count.HP_inter_quest_fromsql_pre > 0) {
+ struct quest* (*preHookFunc) (int *char_id, int **count);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_fromsql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_fromsql_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &count);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.fromsql(char_id, count);
+ }
+ if (HPMHooks.count.HP_inter_quest_fromsql_post > 0) {
+ struct quest* (*postHookFunc) (struct quest* retVal___, int char_id, int *count);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_fromsql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_fromsql_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, count);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_quest_delete(int char_id, int quest_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_quest_delete_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *quest_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_delete_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_delete_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &quest_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.delete(char_id, quest_id);
+ }
+ if (HPMHooks.count.HP_inter_quest_delete_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int quest_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_delete_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_delete_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, quest_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_quest_add(int char_id, struct quest qd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_quest_add_pre > 0) {
+ bool (*preHookFunc) (int *char_id, struct quest *qd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_add_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_add_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &qd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.add(char_id, qd);
+ }
+ if (HPMHooks.count.HP_inter_quest_add_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, struct quest qd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_add_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_add_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, qd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_quest_update(int char_id, struct quest qd) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_quest_update_pre > 0) {
+ bool (*preHookFunc) (int *char_id, struct quest *qd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_update_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_update_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &qd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.update(char_id, qd);
+ }
+ if (HPMHooks.count.HP_inter_quest_update_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, struct quest qd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_update_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_update_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, qd);
+ }
+ }
+ return retVal___;
+}
+bool HP_inter_quest_save(int char_id, const struct quest *new_qd, int new_n) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_quest_save_pre > 0) {
+ bool (*preHookFunc) (int *char_id, const struct quest **new_qd, int *new_n);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_save_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_quest_save_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &new_qd, &new_n);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_quest.save(char_id, new_qd, new_n);
+ }
+ if (HPMHooks.count.HP_inter_quest_save_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, const struct quest *new_qd, int new_n);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_quest_save_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_quest_save_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, new_qd, new_n);
+ }
+ }
+ return retVal___;
+}
/* inter_rodex_interface */
int HP_inter_rodex_sql_init(void) {
int hIndex = 0;
@@ -8303,6 +9677,33 @@ int64 HP_inter_rodex_savemessage(struct rodex_message *msg) {
}
return retVal___;
}
+bool HP_inter_rodex_updatemail(int64 mail_id, int8 flag) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_rodex_updatemail_pre > 0) {
+ bool (*preHookFunc) (int64 *mail_id, int8 *flag);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_updatemail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_rodex_updatemail_pre[hIndex].func;
+ retVal___ = preHookFunc(&mail_id, &flag);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_rodex.updatemail(mail_id, flag);
+ }
+ if (HPMHooks.count.HP_inter_rodex_updatemail_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int64 mail_id, int8 flag);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_updatemail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_rodex_updatemail_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, mail_id, flag);
+ }
+ }
+ return retVal___;
+}
/* inter_storage_interface */
int HP_inter_storage_tosql(int account_id, const struct storage_data *p) {
int hIndex = 0;
@@ -8358,11 +9759,11 @@ int HP_inter_storage_fromsql(int account_id, struct storage_data *p) {
}
return retVal___;
}
-int HP_inter_storage_guild_storage_tosql(int guild_id, const struct guild_storage *p) {
+bool HP_inter_storage_guild_storage_tosql(int guild_id, const struct guild_storage *p) {
int hIndex = 0;
- int retVal___ = 0;
+ bool retVal___ = false;
if (HPMHooks.count.HP_inter_storage_guild_storage_tosql_pre > 0) {
- int (*preHookFunc) (int *guild_id, const struct guild_storage **p);
+ bool (*preHookFunc) (int *guild_id, const struct guild_storage **p);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_storage_guild_storage_tosql_pre[hIndex].func;
@@ -8377,7 +9778,7 @@ int HP_inter_storage_guild_storage_tosql(int guild_id, const struct guild_storag
retVal___ = HPMHooks.source.inter_storage.guild_storage_tosql(guild_id, p);
}
if (HPMHooks.count.HP_inter_storage_guild_storage_tosql_post > 0) {
- int (*postHookFunc) (int retVal___, int guild_id, const struct guild_storage *p);
+ bool (*postHookFunc) (bool retVal___, int guild_id, const struct guild_storage *p);
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_guild_storage_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_storage_guild_storage_tosql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, p);
@@ -8546,6 +9947,33 @@ int HP_inter_storage_parse_frommap(int fd) {
}
return retVal___;
}
+bool HP_inter_storage_retrieve_bound_items(int char_id, int account_id, int guild_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_inter_storage_retrieve_bound_items_pre > 0) {
+ bool (*preHookFunc) (int *char_id, int *account_id, int *guild_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_retrieve_bound_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_inter_storage_retrieve_bound_items_pre[hIndex].func;
+ retVal___ = preHookFunc(&char_id, &account_id, &guild_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.inter_storage.retrieve_bound_items(char_id, account_id, guild_id);
+ }
+ if (HPMHooks.count.HP_inter_storage_retrieve_bound_items_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int char_id, int account_id, int guild_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_storage_retrieve_bound_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_inter_storage_retrieve_bound_items_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, char_id, account_id, guild_id);
+ }
+ }
+ return retVal___;
+}
/* libconfig_interface */
int HP_libconfig_read(struct config_t *config, FILE *stream) {
int hIndex = 0;
@@ -11288,114 +12716,6 @@ void HP_mapif_parse_auction_bid(int fd) {
}
return;
}
-bool HP_mapif_elemental_create(struct s_elemental *ele) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_elemental_create_pre > 0) {
- bool (*preHookFunc) (struct s_elemental **ele);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_create_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_elemental_create_pre[hIndex].func;
- retVal___ = preHookFunc(&ele);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.elemental_create(ele);
- }
- if (HPMHooks.count.HP_mapif_elemental_create_post > 0) {
- bool (*postHookFunc) (bool retVal___, struct s_elemental *ele);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_create_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_elemental_create_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, ele);
- }
- }
- return retVal___;
-}
-bool HP_mapif_elemental_save(const struct s_elemental *ele) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_elemental_save_pre > 0) {
- bool (*preHookFunc) (const struct s_elemental **ele);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_save_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_elemental_save_pre[hIndex].func;
- retVal___ = preHookFunc(&ele);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.elemental_save(ele);
- }
- if (HPMHooks.count.HP_mapif_elemental_save_post > 0) {
- bool (*postHookFunc) (bool retVal___, const struct s_elemental *ele);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_save_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_elemental_save_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, ele);
- }
- }
- return retVal___;
-}
-bool HP_mapif_elemental_load(int ele_id, int char_id, struct s_elemental *ele) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_elemental_load_pre > 0) {
- bool (*preHookFunc) (int *ele_id, int *char_id, struct s_elemental **ele);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_load_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_elemental_load_pre[hIndex].func;
- retVal___ = preHookFunc(&ele_id, &char_id, &ele);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.elemental_load(ele_id, char_id, ele);
- }
- if (HPMHooks.count.HP_mapif_elemental_load_post > 0) {
- bool (*postHookFunc) (bool retVal___, int ele_id, int char_id, struct s_elemental *ele);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_load_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_elemental_load_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, ele_id, char_id, ele);
- }
- }
- return retVal___;
-}
-bool HP_mapif_elemental_delete(int ele_id) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_elemental_delete_pre > 0) {
- bool (*preHookFunc) (int *ele_id);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_delete_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_elemental_delete_pre[hIndex].func;
- retVal___ = preHookFunc(&ele_id);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.elemental_delete(ele_id);
- }
- if (HPMHooks.count.HP_mapif_elemental_delete_post > 0) {
- bool (*postHookFunc) (bool retVal___, int ele_id);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_elemental_delete_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_elemental_delete_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, ele_id);
- }
- }
- return retVal___;
-}
void HP_mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag) {
int hIndex = 0;
if (HPMHooks.count.HP_mapif_elemental_send_pre > 0) {
@@ -12334,33 +13654,6 @@ int HP_mapif_parse_GuildSkillUp(int fd, int guild_id, uint16 skill_id, int accou
}
return retVal___;
}
-int HP_mapif_parse_GuildDeleteAlliance(struct guild *g, int guild_id, int account_id1, int account_id2, int flag) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_parse_GuildDeleteAlliance_pre > 0) {
- int (*preHookFunc) (struct guild **g, int *guild_id, int *account_id1, int *account_id2, int *flag);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildDeleteAlliance_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_GuildDeleteAlliance_pre[hIndex].func;
- retVal___ = preHookFunc(&g, &guild_id, &account_id1, &account_id2, &flag);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.parse_GuildDeleteAlliance(g, guild_id, account_id1, account_id2, flag);
- }
- if (HPMHooks.count.HP_mapif_parse_GuildDeleteAlliance_post > 0) {
- int (*postHookFunc) (int retVal___, struct guild *g, int guild_id, int account_id1, int account_id2, int flag);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildDeleteAlliance_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_GuildDeleteAlliance_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, g, guild_id, account_id1, account_id2, flag);
- }
- }
- return retVal___;
-}
int HP_mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_id1, int account_id2, int flag) {
int hIndex = 0;
int retVal___ = 0;
@@ -12653,141 +13946,6 @@ void HP_mapif_homunculus_renamed(int fd, int account_id, int char_id, unsigned c
}
return;
}
-bool HP_mapif_homunculus_create(struct s_homunculus *hd) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_homunculus_create_pre > 0) {
- bool (*preHookFunc) (struct s_homunculus **hd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_create_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_create_pre[hIndex].func;
- retVal___ = preHookFunc(&hd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_create(hd);
- }
- if (HPMHooks.count.HP_mapif_homunculus_create_post > 0) {
- bool (*postHookFunc) (bool retVal___, struct s_homunculus *hd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_create_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_create_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, hd);
- }
- }
- return retVal___;
-}
-bool HP_mapif_homunculus_save(const struct s_homunculus *hd) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_homunculus_save_pre > 0) {
- bool (*preHookFunc) (const struct s_homunculus **hd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_save_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_save_pre[hIndex].func;
- retVal___ = preHookFunc(&hd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_save(hd);
- }
- if (HPMHooks.count.HP_mapif_homunculus_save_post > 0) {
- bool (*postHookFunc) (bool retVal___, const struct s_homunculus *hd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_save_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_save_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, hd);
- }
- }
- return retVal___;
-}
-bool HP_mapif_homunculus_load(int homun_id, struct s_homunculus *hd) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_homunculus_load_pre > 0) {
- bool (*preHookFunc) (int *homun_id, struct s_homunculus **hd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_load_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_load_pre[hIndex].func;
- retVal___ = preHookFunc(&homun_id, &hd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_load(homun_id, hd);
- }
- if (HPMHooks.count.HP_mapif_homunculus_load_post > 0) {
- bool (*postHookFunc) (bool retVal___, int homun_id, struct s_homunculus *hd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_load_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_load_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, homun_id, hd);
- }
- }
- return retVal___;
-}
-bool HP_mapif_homunculus_delete(int homun_id) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_homunculus_delete_pre > 0) {
- bool (*preHookFunc) (int *homun_id);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_delete_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_delete_pre[hIndex].func;
- retVal___ = preHookFunc(&homun_id);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_delete(homun_id);
- }
- if (HPMHooks.count.HP_mapif_homunculus_delete_post > 0) {
- bool (*postHookFunc) (bool retVal___, int homun_id);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_delete_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_delete_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, homun_id);
- }
- }
- return retVal___;
-}
-bool HP_mapif_homunculus_rename(const char *name) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_homunculus_rename_pre > 0) {
- bool (*preHookFunc) (const char **name);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_rename_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_homunculus_rename_pre[hIndex].func;
- retVal___ = preHookFunc(&name);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.homunculus_rename(name);
- }
- if (HPMHooks.count.HP_mapif_homunculus_rename_post > 0) {
- bool (*postHookFunc) (bool retVal___, const char *name);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_homunculus_rename_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_homunculus_rename_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, name);
- }
- }
- return retVal___;
-}
void HP_mapif_parse_homunculus_create(int fd, int len, int account_id, const struct s_homunculus *phd) {
int hIndex = 0;
if (HPMHooks.count.HP_mapif_parse_homunculus_create_pre > 0) {
@@ -13022,32 +14180,6 @@ void HP_mapif_mail_sendattach(int fd, int char_id, struct mail_message *msg) {
}
return;
}
-void HP_mapif_mail_getattach(int fd, int char_id, int mail_id) {
- int hIndex = 0;
- if (HPMHooks.count.HP_mapif_mail_getattach_pre > 0) {
- void (*preHookFunc) (int *fd, int *char_id, int *mail_id);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_getattach_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_mail_getattach_pre[hIndex].func;
- preHookFunc(&fd, &char_id, &mail_id);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.mapif.mail_getattach(fd, char_id, mail_id);
- }
- if (HPMHooks.count.HP_mapif_mail_getattach_post > 0) {
- void (*postHookFunc) (int fd, int char_id, int mail_id);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mail_getattach_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_mail_getattach_post[hIndex].func;
- postHookFunc(fd, char_id, mail_id);
- }
- }
- return;
-}
void HP_mapif_parse_mail_getattach(int fd) {
int hIndex = 0;
if (HPMHooks.count.HP_mapif_parse_mail_getattach_pre > 0) {
@@ -13256,114 +14388,6 @@ void HP_mapif_parse_mail_send(int fd) {
}
return;
}
-bool HP_mapif_mercenary_create(struct s_mercenary *merc) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_mercenary_create_pre > 0) {
- bool (*preHookFunc) (struct s_mercenary **merc);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_create_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_mercenary_create_pre[hIndex].func;
- retVal___ = preHookFunc(&merc);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.mercenary_create(merc);
- }
- if (HPMHooks.count.HP_mapif_mercenary_create_post > 0) {
- bool (*postHookFunc) (bool retVal___, struct s_mercenary *merc);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_create_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_mercenary_create_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, merc);
- }
- }
- return retVal___;
-}
-bool HP_mapif_mercenary_save(const struct s_mercenary *merc) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_mercenary_save_pre > 0) {
- bool (*preHookFunc) (const struct s_mercenary **merc);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_save_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_mercenary_save_pre[hIndex].func;
- retVal___ = preHookFunc(&merc);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.mercenary_save(merc);
- }
- if (HPMHooks.count.HP_mapif_mercenary_save_post > 0) {
- bool (*postHookFunc) (bool retVal___, const struct s_mercenary *merc);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_save_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_mercenary_save_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, merc);
- }
- }
- return retVal___;
-}
-bool HP_mapif_mercenary_load(int merc_id, int char_id, struct s_mercenary *merc) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_mercenary_load_pre > 0) {
- bool (*preHookFunc) (int *merc_id, int *char_id, struct s_mercenary **merc);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_load_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_mercenary_load_pre[hIndex].func;
- retVal___ = preHookFunc(&merc_id, &char_id, &merc);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.mercenary_load(merc_id, char_id, merc);
- }
- if (HPMHooks.count.HP_mapif_mercenary_load_post > 0) {
- bool (*postHookFunc) (bool retVal___, int merc_id, int char_id, struct s_mercenary *merc);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_load_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_mercenary_load_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, merc_id, char_id, merc);
- }
- }
- return retVal___;
-}
-bool HP_mapif_mercenary_delete(int merc_id) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_mercenary_delete_pre > 0) {
- bool (*preHookFunc) (int *merc_id);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_delete_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_mercenary_delete_pre[hIndex].func;
- retVal___ = preHookFunc(&merc_id);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.mercenary_delete(merc_id);
- }
- if (HPMHooks.count.HP_mapif_mercenary_delete_post > 0) {
- bool (*postHookFunc) (bool retVal___, int merc_id);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_mercenary_delete_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_mercenary_delete_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, merc_id);
- }
- }
- return retVal___;
-}
void HP_mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char flag) {
int hIndex = 0;
if (HPMHooks.count.HP_mapif_mercenary_send_pre > 0) {
@@ -14164,60 +15188,6 @@ int HP_mapif_delete_pet_ack(int fd, int flag) {
}
return retVal___;
}
-int HP_mapif_create_pet(int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_create_pet_pre > 0) {
- int (*preHookFunc) (int *fd, int *account_id, int *char_id, short *pet_class, short *pet_lv, short *pet_egg_id, short *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_mapif_create_pet_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_create_pet_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &account_id, &char_id, &pet_class, &pet_lv, &pet_egg_id, &pet_equip, &intimate, &hungry, &rename_flag, &incubate, &pet_name);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.create_pet(fd, account_id, char_id, pet_class, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
- }
- if (HPMHooks.count.HP_mapif_create_pet_post > 0) {
- int (*postHookFunc) (int retVal___, int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_create_pet_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_create_pet_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, account_id, char_id, pet_class, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
- }
- }
- return retVal___;
-}
-int HP_mapif_load_pet(int fd, int account_id, int char_id, int pet_id) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_load_pet_pre > 0) {
- int (*preHookFunc) (int *fd, int *account_id, int *char_id, int *pet_id);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_load_pet_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_load_pet_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &account_id, &char_id, &pet_id);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.load_pet(fd, account_id, char_id, pet_id);
- }
- if (HPMHooks.count.HP_mapif_load_pet_post > 0) {
- int (*postHookFunc) (int retVal___, int fd, int account_id, int char_id, int pet_id);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_load_pet_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_load_pet_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, account_id, char_id, pet_id);
- }
- }
- return retVal___;
-}
int HP_mapif_save_pet(int fd, int account_id, const struct s_pet *data) {
int hIndex = 0;
int retVal___ = 0;
@@ -14380,114 +15350,6 @@ int HP_mapif_parse_DeletePet(int fd) {
}
return retVal___;
}
-struct quest* HP_mapif_quests_fromsql(int char_id, int *count) {
- int hIndex = 0;
- struct quest* retVal___ = NULL;
- if (HPMHooks.count.HP_mapif_quests_fromsql_pre > 0) {
- struct quest* (*preHookFunc) (int *char_id, int **count);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quests_fromsql_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_quests_fromsql_pre[hIndex].func;
- retVal___ = preHookFunc(&char_id, &count);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.quests_fromsql(char_id, count);
- }
- if (HPMHooks.count.HP_mapif_quests_fromsql_post > 0) {
- struct quest* (*postHookFunc) (struct quest* retVal___, int char_id, int *count);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quests_fromsql_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_quests_fromsql_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, char_id, count);
- }
- }
- return retVal___;
-}
-bool HP_mapif_quest_delete(int char_id, int quest_id) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_quest_delete_pre > 0) {
- bool (*preHookFunc) (int *char_id, int *quest_id);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_delete_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_quest_delete_pre[hIndex].func;
- retVal___ = preHookFunc(&char_id, &quest_id);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.quest_delete(char_id, quest_id);
- }
- if (HPMHooks.count.HP_mapif_quest_delete_post > 0) {
- bool (*postHookFunc) (bool retVal___, int char_id, int quest_id);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_delete_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_quest_delete_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, char_id, quest_id);
- }
- }
- return retVal___;
-}
-bool HP_mapif_quest_add(int char_id, struct quest qd) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_quest_add_pre > 0) {
- bool (*preHookFunc) (int *char_id, struct quest *qd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_add_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_quest_add_pre[hIndex].func;
- retVal___ = preHookFunc(&char_id, &qd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.quest_add(char_id, qd);
- }
- if (HPMHooks.count.HP_mapif_quest_add_post > 0) {
- bool (*postHookFunc) (bool retVal___, int char_id, struct quest qd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_add_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_quest_add_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, char_id, qd);
- }
- }
- return retVal___;
-}
-bool HP_mapif_quest_update(int char_id, struct quest qd) {
- int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_mapif_quest_update_pre > 0) {
- bool (*preHookFunc) (int *char_id, struct quest *qd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_update_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_quest_update_pre[hIndex].func;
- retVal___ = preHookFunc(&char_id, &qd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.quest_update(char_id, qd);
- }
- if (HPMHooks.count.HP_mapif_quest_update_post > 0) {
- bool (*postHookFunc) (bool retVal___, int char_id, struct quest qd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_quest_update_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_quest_update_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, char_id, qd);
- }
- }
- return retVal___;
-}
void HP_mapif_quest_save_ack(int fd, int char_id, bool success) {
int hIndex = 0;
if (HPMHooks.count.HP_mapif_quest_save_ack_pre > 0) {
@@ -14594,32 +15456,31 @@ int HP_mapif_parse_quest_load(int fd) {
}
return retVal___;
}
-int HP_mapif_parse_rodex_requestinbox(int fd) {
+void HP_mapif_parse_rodex_requestinbox(int fd) {
int hIndex = 0;
- int retVal___ = 0;
if (HPMHooks.count.HP_mapif_parse_rodex_requestinbox_pre > 0) {
- int (*preHookFunc) (int *fd);
+ void (*preHookFunc) (int *fd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_requestinbox_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_requestinbox_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
+ preHookFunc(&fd);
}
if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.mapif.parse_rodex_requestinbox(fd);
+ HPMHooks.source.mapif.parse_rodex_requestinbox(fd);
}
if (HPMHooks.count.HP_mapif_parse_rodex_requestinbox_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
+ void (*postHookFunc) (int fd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_requestinbox_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_requestinbox_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
+ postHookFunc(fd);
}
}
- return retVal___;
+ return;
}
void HP_mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, int64 mail_id, struct rodex_maillist *mails) {
int hIndex = 0;
@@ -14647,32 +15508,31 @@ void HP_mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int
}
return;
}
-int HP_mapif_parse_rodex_checkhasnew(int fd) {
+void HP_mapif_parse_rodex_checkhasnew(int fd) {
int hIndex = 0;
- int retVal___ = 0;
if (HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_pre > 0) {
- int (*preHookFunc) (int *fd);
+ void (*preHookFunc) (int *fd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkhasnew_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
+ preHookFunc(&fd);
}
if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.mapif.parse_rodex_checkhasnew(fd);
+ HPMHooks.source.mapif.parse_rodex_checkhasnew(fd);
}
if (HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
+ void (*postHookFunc) (int fd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkhasnew_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkhasnew_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
+ postHookFunc(fd);
}
}
- return retVal___;
+ return;
}
void HP_mapif_rodex_sendhasnew(int fd, int char_id, bool has_new) {
int hIndex = 0;
@@ -14700,59 +15560,57 @@ void HP_mapif_rodex_sendhasnew(int fd, int char_id, bool has_new) {
}
return;
}
-int HP_mapif_parse_rodex_updatemail(int fd) {
+void HP_mapif_parse_rodex_updatemail(int fd) {
int hIndex = 0;
- int retVal___ = 0;
if (HPMHooks.count.HP_mapif_parse_rodex_updatemail_pre > 0) {
- int (*preHookFunc) (int *fd);
+ void (*preHookFunc) (int *fd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_updatemail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_updatemail_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
+ preHookFunc(&fd);
}
if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.mapif.parse_rodex_updatemail(fd);
+ HPMHooks.source.mapif.parse_rodex_updatemail(fd);
}
if (HPMHooks.count.HP_mapif_parse_rodex_updatemail_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
+ void (*postHookFunc) (int fd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_updatemail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_updatemail_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
+ postHookFunc(fd);
}
}
- return retVal___;
+ return;
}
-int HP_mapif_parse_rodex_send(int fd) {
+void HP_mapif_parse_rodex_send(int fd) {
int hIndex = 0;
- int retVal___ = 0;
if (HPMHooks.count.HP_mapif_parse_rodex_send_pre > 0) {
- int (*preHookFunc) (int *fd);
+ void (*preHookFunc) (int *fd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_send_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_send_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
+ preHookFunc(&fd);
}
if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.mapif.parse_rodex_send(fd);
+ HPMHooks.source.mapif.parse_rodex_send(fd);
}
if (HPMHooks.count.HP_mapif_parse_rodex_send_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
+ void (*postHookFunc) (int fd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_send_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_send_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
+ postHookFunc(fd);
}
}
- return retVal___;
+ return;
}
void HP_mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_accountid, bool result) {
int hIndex = 0;
@@ -14780,32 +15638,31 @@ void HP_mapif_rodex_send(int fd, int sender_id, int receiver_id, int receiver_ac
}
return;
}
-int HP_mapif_parse_rodex_checkname(int fd) {
+void HP_mapif_parse_rodex_checkname(int fd) {
int hIndex = 0;
- int retVal___ = 0;
if (HPMHooks.count.HP_mapif_parse_rodex_checkname_pre > 0) {
- int (*preHookFunc) (int *fd);
+ void (*preHookFunc) (int *fd);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkname_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
+ preHookFunc(&fd);
}
if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.mapif.parse_rodex_checkname(fd);
+ HPMHooks.source.mapif.parse_rodex_checkname(fd);
}
if (HPMHooks.count.HP_mapif_parse_rodex_checkname_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
+ void (*postHookFunc) (int fd);
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_rodex_checkname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_rodex_checkname_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
+ postHookFunc(fd);
}
}
- return retVal___;
+ return;
}
void HP_mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name) {
int hIndex = 0;
@@ -15075,33 +15932,6 @@ int HP_mapif_itembound_ack(int fd, int aid, int guild_id) {
}
return retVal___;
}
-int HP_mapif_parse_ItemBoundRetrieve_sub(int fd) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_sub_pre > 0) {
- int (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_sub_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_ItemBoundRetrieve_sub_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.parse_ItemBoundRetrieve_sub(fd);
- }
- if (HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_sub_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_sub_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_ItemBoundRetrieve_sub_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
- }
- }
- return retVal___;
-}
void HP_mapif_parse_ItemBoundRetrieve(int fd) {
int hIndex = 0;
if (HPMHooks.count.HP_mapif_parse_ItemBoundRetrieve_pre > 0) {
@@ -15154,32 +15984,6 @@ void HP_mapif_parse_accinfo(int fd) {
}
return;
}
-void HP_mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state) {
- int hIndex = 0;
- if (HPMHooks.count.HP_mapif_parse_accinfo2_pre > 0) {
- void (*preHookFunc) (bool *success, int *map_fd, int *u_fd, int *u_aid, int *account_id, const char **userid, const char **user_pass, const char **email, const char **last_ip, const char **lastlogin, const char **pin_code, const char **birthdate, int *group_id, int *logincount, int *state);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_accinfo2_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_accinfo2_pre[hIndex].func;
- preHookFunc(&success, &map_fd, &u_fd, &u_aid, &account_id, &userid, &user_pass, &email, &last_ip, &lastlogin, &pin_code, &birthdate, &group_id, &logincount, &state);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.mapif.parse_accinfo2(success, map_fd, u_fd, u_aid, account_id, userid, user_pass, email, last_ip, lastlogin, pin_code, birthdate, group_id, logincount, state);
- }
- if (HPMHooks.count.HP_mapif_parse_accinfo2_post > 0) {
- void (*postHookFunc) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_accinfo2_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_accinfo2_post[hIndex].func;
- postHookFunc(success, map_fd, u_fd, u_aid, account_id, userid, user_pass, email, last_ip, lastlogin, pin_code, birthdate, group_id, logincount, state);
- }
- }
- return;
-}
int HP_mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd) {
int hIndex = 0;
int retVal___ = 0;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index 803948d89..1a689494f 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -626,8 +626,6 @@ struct {
struct HPMHookPoint *HP_clif_useitemack_post;
struct HPMHookPoint *HP_clif_addcards_pre;
struct HPMHookPoint *HP_clif_addcards_post;
- struct HPMHookPoint *HP_clif_addcards2_pre;
- struct HPMHookPoint *HP_clif_addcards2_post;
struct HPMHookPoint *HP_clif_item_sub_pre;
struct HPMHookPoint *HP_clif_item_sub_post;
struct HPMHookPoint *HP_clif_getareachar_item_pre;
@@ -636,6 +634,8 @@ struct {
struct HPMHookPoint *HP_clif_cart_additem_ack_post;
struct HPMHookPoint *HP_clif_cashshop_load_pre;
struct HPMHookPoint *HP_clif_cashshop_load_post;
+ struct HPMHookPoint *HP_clif_cashShopSchedule_pre;
+ struct HPMHookPoint *HP_clif_cashShopSchedule_post;
struct HPMHookPoint *HP_clif_package_announce_pre;
struct HPMHookPoint *HP_clif_package_announce_post;
struct HPMHookPoint *HP_clif_item_drop_announce_pre;
@@ -1044,6 +1044,8 @@ struct {
struct HPMHookPoint *HP_clif_messagecolor_post;
struct HPMHookPoint *HP_clif_disp_overhead_pre;
struct HPMHookPoint *HP_clif_disp_overhead_post;
+ struct HPMHookPoint *HP_clif_notify_playerchat_pre;
+ struct HPMHookPoint *HP_clif_notify_playerchat_post;
struct HPMHookPoint *HP_clif_msgtable_pre;
struct HPMHookPoint *HP_clif_msgtable_post;
struct HPMHookPoint *HP_clif_msgtable_num_pre;
@@ -1098,6 +1100,8 @@ struct {
struct HPMHookPoint *HP_clif_buyvending_post;
struct HPMHookPoint *HP_clif_openvending_pre;
struct HPMHookPoint *HP_clif_openvending_post;
+ struct HPMHookPoint *HP_clif_openvendingAck_pre;
+ struct HPMHookPoint *HP_clif_openvendingAck_post;
struct HPMHookPoint *HP_clif_vendingreport_pre;
struct HPMHookPoint *HP_clif_vendingreport_post;
struct HPMHookPoint *HP_clif_storagelist_pre;
@@ -3794,6 +3798,12 @@ struct {
struct HPMHookPoint *HP_mob_load_post;
struct HPMHookPoint *HP_mob_clear_spawninfo_pre;
struct HPMHookPoint *HP_mob_clear_spawninfo_post;
+ struct HPMHookPoint *HP_mob_get_item_drop_ratio_pre;
+ struct HPMHookPoint *HP_mob_get_item_drop_ratio_post;
+ struct HPMHookPoint *HP_mob_set_item_drop_ratio_pre;
+ struct HPMHookPoint *HP_mob_set_item_drop_ratio_post;
+ struct HPMHookPoint *HP_mob_final_ratio_sub_pre;
+ struct HPMHookPoint *HP_mob_final_ratio_sub_post;
struct HPMHookPoint *HP_mob_destroy_mob_db_pre;
struct HPMHookPoint *HP_mob_destroy_mob_db_post;
struct HPMHookPoint *HP_mob_skill_db_libconfig_pre;
@@ -7013,8 +7023,6 @@ struct {
int HP_clif_useitemack_post;
int HP_clif_addcards_pre;
int HP_clif_addcards_post;
- int HP_clif_addcards2_pre;
- int HP_clif_addcards2_post;
int HP_clif_item_sub_pre;
int HP_clif_item_sub_post;
int HP_clif_getareachar_item_pre;
@@ -7023,6 +7031,8 @@ struct {
int HP_clif_cart_additem_ack_post;
int HP_clif_cashshop_load_pre;
int HP_clif_cashshop_load_post;
+ int HP_clif_cashShopSchedule_pre;
+ int HP_clif_cashShopSchedule_post;
int HP_clif_package_announce_pre;
int HP_clif_package_announce_post;
int HP_clif_item_drop_announce_pre;
@@ -7431,6 +7441,8 @@ struct {
int HP_clif_messagecolor_post;
int HP_clif_disp_overhead_pre;
int HP_clif_disp_overhead_post;
+ int HP_clif_notify_playerchat_pre;
+ int HP_clif_notify_playerchat_post;
int HP_clif_msgtable_pre;
int HP_clif_msgtable_post;
int HP_clif_msgtable_num_pre;
@@ -7485,6 +7497,8 @@ struct {
int HP_clif_buyvending_post;
int HP_clif_openvending_pre;
int HP_clif_openvending_post;
+ int HP_clif_openvendingAck_pre;
+ int HP_clif_openvendingAck_post;
int HP_clif_vendingreport_pre;
int HP_clif_vendingreport_post;
int HP_clif_storagelist_pre;
@@ -10181,6 +10195,12 @@ struct {
int HP_mob_load_post;
int HP_mob_clear_spawninfo_pre;
int HP_mob_clear_spawninfo_post;
+ int HP_mob_get_item_drop_ratio_pre;
+ int HP_mob_get_item_drop_ratio_post;
+ int HP_mob_set_item_drop_ratio_pre;
+ int HP_mob_set_item_drop_ratio_post;
+ int HP_mob_final_ratio_sub_pre;
+ int HP_mob_final_ratio_sub_post;
int HP_mob_destroy_mob_db_pre;
int HP_mob_destroy_mob_db_post;
int HP_mob_skill_db_libconfig_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index 2658bef00..01e5e166b 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -336,11 +336,11 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->unequipitemack, HP_clif_unequipitemack) },
{ HP_POP(clif->useitemack, HP_clif_useitemack) },
{ HP_POP(clif->addcards, HP_clif_addcards) },
- { HP_POP(clif->addcards2, HP_clif_addcards2) },
{ HP_POP(clif->item_sub, HP_clif_item_sub) },
{ HP_POP(clif->getareachar_item, HP_clif_getareachar_item) },
{ HP_POP(clif->cart_additem_ack, HP_clif_cart_additem_ack) },
{ HP_POP(clif->cashshop_load, HP_clif_cashshop_load) },
+ { HP_POP(clif->cashShopSchedule, HP_clif_cashShopSchedule) },
{ HP_POP(clif->package_announce, HP_clif_package_announce) },
{ HP_POP(clif->item_drop_announce, HP_clif_item_drop_announce) },
{ HP_POP(clif->clearunit_single, HP_clif_clearunit_single) },
@@ -545,6 +545,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->messagecolor_self, HP_clif_messagecolor_self) },
{ HP_POP(clif->messagecolor, HP_clif_messagecolor) },
{ HP_POP(clif->disp_overhead, HP_clif_disp_overhead) },
+ { HP_POP(clif->notify_playerchat, HP_clif_notify_playerchat) },
{ HP_POP(clif->msgtable, HP_clif_msgtable) },
{ HP_POP(clif->msgtable_num, HP_clif_msgtable_num) },
{ HP_POP(clif->msgtable_skill, HP_clif_msgtable_skill) },
@@ -572,6 +573,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->vendinglist, HP_clif_vendinglist) },
{ HP_POP(clif->buyvending, HP_clif_buyvending) },
{ HP_POP(clif->openvending, HP_clif_openvending) },
+ { HP_POP(clif->openvendingAck, HP_clif_openvendingAck) },
{ HP_POP(clif->vendingreport, HP_clif_vendingreport) },
{ HP_POP(clif->storagelist, HP_clif_storagelist) },
{ HP_POP(clif->updatestorageamount, HP_clif_updatestorageamount) },
@@ -1945,6 +1947,9 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mob->readdb_itemratio, HP_mob_readdb_itemratio) },
{ HP_POP(mob->load, HP_mob_load) },
{ HP_POP(mob->clear_spawninfo, HP_mob_clear_spawninfo) },
+ { HP_POP(mob->get_item_drop_ratio, HP_mob_get_item_drop_ratio) },
+ { HP_POP(mob->set_item_drop_ratio, HP_mob_set_item_drop_ratio) },
+ { HP_POP(mob->final_ratio_sub, HP_mob_final_ratio_sub) },
{ HP_POP(mob->destroy_mob_db, HP_mob_destroy_mob_db) },
{ HP_POP(mob->skill_db_libconfig, HP_mob_skill_db_libconfig) },
{ HP_POP(mob->skill_db_libconfig_sub, HP_mob_skill_db_libconfig_sub) },
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index 497d1b646..d2d3c515a 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -3526,10 +3526,10 @@ bool HP_buyingstore_setup(struct map_session_data *sd, unsigned char slots) {
}
return retVal___;
}
-void HP_buyingstore_create(struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const uint8 *itemlist, unsigned int count) {
+void HP_buyingstore_create(struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist, unsigned int count) {
int hIndex = 0;
if (HPMHooks.count.HP_buyingstore_create_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int *zenylimit, unsigned char *result, const char **storename, const uint8 **itemlist, unsigned int *count);
+ void (*preHookFunc) (struct map_session_data **sd, int *zenylimit, unsigned char *result, const char **storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub **itemlist, unsigned int *count);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_create_pre[hIndex].func;
@@ -3544,7 +3544,7 @@ void HP_buyingstore_create(struct map_session_data *sd, int zenylimit, unsigned
HPMHooks.source.buyingstore.create(sd, zenylimit, result, storename, itemlist, count);
}
if (HPMHooks.count.HP_buyingstore_create_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const uint8 *itemlist, unsigned int count);
+ void (*postHookFunc) (struct map_session_data *sd, int zenylimit, unsigned char result, const char *storename, const struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub *itemlist, unsigned int count);
for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_create_post[hIndex].func;
postHookFunc(sd, zenylimit, result, storename, itemlist, count);
@@ -3604,10 +3604,10 @@ void HP_buyingstore_open(struct map_session_data *sd, int account_id) {
}
return;
}
-void HP_buyingstore_trade(struct map_session_data *sd, int account_id, unsigned int buyer_id, const uint8 *itemlist, unsigned int count) {
+void HP_buyingstore_trade(struct map_session_data *sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub *itemlist, unsigned int count) {
int hIndex = 0;
if (HPMHooks.count.HP_buyingstore_trade_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int *account_id, unsigned int *buyer_id, const uint8 **itemlist, unsigned int *count);
+ void (*preHookFunc) (struct map_session_data **sd, int *account_id, unsigned int *buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub **itemlist, unsigned int *count);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_trade_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_trade_pre[hIndex].func;
@@ -3622,7 +3622,7 @@ void HP_buyingstore_trade(struct map_session_data *sd, int account_id, unsigned
HPMHooks.source.buyingstore.trade(sd, account_id, buyer_id, itemlist, count);
}
if (HPMHooks.count.HP_buyingstore_trade_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int account_id, unsigned int buyer_id, const uint8 *itemlist, unsigned int count);
+ void (*postHookFunc) (struct map_session_data *sd, int account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub *itemlist, unsigned int count);
for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_trade_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_trade_post[hIndex].func;
postHookFunc(sd, account_id, buyer_id, itemlist, count);
@@ -3630,11 +3630,11 @@ void HP_buyingstore_trade(struct map_session_data *sd, int account_id, unsigned
}
return;
}
-bool HP_buyingstore_search(struct map_session_data *sd, unsigned short nameid) {
+bool HP_buyingstore_search(struct map_session_data *sd, int nameid) {
int hIndex = 0;
bool retVal___ = false;
if (HPMHooks.count.HP_buyingstore_search_pre > 0) {
- bool (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid);
+ bool (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_buyingstore_search_pre[hIndex].func;
@@ -3649,7 +3649,7 @@ bool HP_buyingstore_search(struct map_session_data *sd, unsigned short nameid) {
retVal___ = HPMHooks.source.buyingstore.search(sd, nameid);
}
if (HPMHooks.count.HP_buyingstore_search_post > 0) {
- bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned short nameid);
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int nameid);
for (hIndex = 0; hIndex < HPMHooks.count.HP_buyingstore_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_buyingstore_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
@@ -8094,10 +8094,10 @@ void HP_clif_useitemack(struct map_session_data *sd, int index, int amount, bool
}
return;
}
-void HP_clif_addcards(unsigned char *buf, struct item *item) {
+void HP_clif_addcards(struct EQUIPSLOTINFO *buf, struct item *item) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_addcards_pre > 0) {
- void (*preHookFunc) (unsigned char **buf, struct item **item);
+ void (*preHookFunc) (struct EQUIPSLOTINFO **buf, struct item **item);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_addcards_pre[hIndex].func;
@@ -8112,7 +8112,7 @@ void HP_clif_addcards(unsigned char *buf, struct item *item) {
HPMHooks.source.clif.addcards(buf, item);
}
if (HPMHooks.count.HP_clif_addcards_post > 0) {
- void (*postHookFunc) (unsigned char *buf, struct item *item);
+ void (*postHookFunc) (struct EQUIPSLOTINFO *buf, struct item *item);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_addcards_post[hIndex].func;
postHookFunc(buf, item);
@@ -8120,32 +8120,6 @@ void HP_clif_addcards(unsigned char *buf, struct item *item) {
}
return;
}
-void HP_clif_addcards2(unsigned short *cards, struct item *item) {
- int hIndex = 0;
- if (HPMHooks.count.HP_clif_addcards2_pre > 0) {
- void (*preHookFunc) (unsigned short **cards, struct item **item);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards2_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_clif_addcards2_pre[hIndex].func;
- preHookFunc(&cards, &item);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.clif.addcards2(cards, item);
- }
- if (HPMHooks.count.HP_clif_addcards2_post > 0) {
- void (*postHookFunc) (unsigned short *cards, struct item *item);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_addcards2_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_clif_addcards2_post[hIndex].func;
- postHookFunc(cards, item);
- }
- }
- return;
-}
void HP_clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *id, int equip) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_item_sub_pre > 0) {
@@ -8250,10 +8224,36 @@ void HP_clif_cashshop_load(void) {
}
return;
}
-void HP_clif_package_announce(struct map_session_data *sd, unsigned short nameid, unsigned short containerid) {
+void HP_clif_cashShopSchedule(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_cashShopSchedule_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashShopSchedule_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_cashShopSchedule_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.cashShopSchedule(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_cashShopSchedule_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_cashShopSchedule_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_cashShopSchedule_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_package_announce(struct map_session_data *sd, int nameid, int containerid) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_package_announce_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid, unsigned short *containerid);
+ void (*preHookFunc) (struct map_session_data **sd, int *nameid, int *containerid);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_package_announce_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_package_announce_pre[hIndex].func;
@@ -8268,7 +8268,7 @@ void HP_clif_package_announce(struct map_session_data *sd, unsigned short nameid
HPMHooks.source.clif.package_announce(sd, nameid, containerid);
}
if (HPMHooks.count.HP_clif_package_announce_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short nameid, unsigned short containerid);
+ void (*postHookFunc) (struct map_session_data *sd, int nameid, int containerid);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_package_announce_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_package_announce_post[hIndex].func;
postHookFunc(sd, nameid, containerid);
@@ -8276,10 +8276,10 @@ void HP_clif_package_announce(struct map_session_data *sd, unsigned short nameid
}
return;
}
-void HP_clif_item_drop_announce(struct map_session_data *sd, unsigned short nameid, char *monsterName) {
+void HP_clif_item_drop_announce(struct map_session_data *sd, int nameid, char *monsterName) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_item_drop_announce_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid, char **monsterName);
+ void (*preHookFunc) (struct map_session_data **sd, int *nameid, char **monsterName);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_drop_announce_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_item_drop_announce_pre[hIndex].func;
@@ -8294,7 +8294,7 @@ void HP_clif_item_drop_announce(struct map_session_data *sd, unsigned short name
HPMHooks.source.clif.item_drop_announce(sd, nameid, monsterName);
}
if (HPMHooks.count.HP_clif_item_drop_announce_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short nameid, char *monsterName);
+ void (*postHookFunc) (struct map_session_data *sd, int nameid, char *monsterName);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_item_drop_announce_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_item_drop_announce_post[hIndex].func;
postHookFunc(sd, nameid, monsterName);
@@ -10225,14 +10225,14 @@ void HP_clif_skillcastcancel(struct block_list *bl) {
}
return;
}
-void HP_clif_skill_fail(struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype) {
+void HP_clif_skill_fail(struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_skill_fail_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, enum useskill_fail_cause *cause, int *btype);
+ void (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id, enum useskill_fail_cause *cause, int *btype, int32 *item_id);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_fail_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_fail_pre[hIndex].func;
- preHookFunc(&sd, &skill_id, &cause, &btype);
+ preHookFunc(&sd, &skill_id, &cause, &btype, &item_id);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -10240,13 +10240,13 @@ void HP_clif_skill_fail(struct map_session_data *sd, uint16 skill_id, enum usesk
}
}
{
- HPMHooks.source.clif.skill_fail(sd, skill_id, cause, btype);
+ HPMHooks.source.clif.skill_fail(sd, skill_id, cause, btype, item_id);
}
if (HPMHooks.count.HP_clif_skill_fail_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype);
+ void (*postHookFunc) (struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int32 item_id);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_fail_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_fail_post[hIndex].func;
- postHookFunc(sd, skill_id, cause, btype);
+ postHookFunc(sd, skill_id, cause, btype, item_id);
}
}
return;
@@ -11065,10 +11065,10 @@ void HP_clif_upgrademessage(int fd, int result, int item_id) {
}
return;
}
-void HP_clif_get_weapon_view(struct map_session_data *sd, unsigned short *rhand, unsigned short *lhand) {
+void HP_clif_get_weapon_view(struct map_session_data *sd, int *rhand, int *lhand) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_get_weapon_view_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short **rhand, unsigned short **lhand);
+ void (*preHookFunc) (struct map_session_data **sd, int **rhand, int **lhand);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_weapon_view_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_get_weapon_view_pre[hIndex].func;
@@ -11083,7 +11083,7 @@ void HP_clif_get_weapon_view(struct map_session_data *sd, unsigned short *rhand,
HPMHooks.source.clif.get_weapon_view(sd, rhand, lhand);
}
if (HPMHooks.count.HP_clif_get_weapon_view_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short *rhand, unsigned short *lhand);
+ void (*postHookFunc) (struct map_session_data *sd, int *rhand, int *lhand);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_get_weapon_view_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_get_weapon_view_post[hIndex].func;
postHookFunc(sd, rhand, lhand);
@@ -13570,14 +13570,14 @@ void HP_clif_messagecolor(struct block_list *bl, uint32 color, const char *msg)
}
return;
}
-void HP_clif_disp_overhead(struct block_list *bl, const char *mes) {
+void HP_clif_disp_overhead(struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_disp_overhead_pre > 0) {
- void (*preHookFunc) (struct block_list **bl, const char **mes);
+ void (*preHookFunc) (struct block_list **bl, const char **mes, enum send_target *target, struct block_list **target_bl);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_overhead_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_disp_overhead_pre[hIndex].func;
- preHookFunc(&bl, &mes);
+ preHookFunc(&bl, &mes, &target, &target_bl);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -13585,12 +13585,38 @@ void HP_clif_disp_overhead(struct block_list *bl, const char *mes) {
}
}
{
- HPMHooks.source.clif.disp_overhead(bl, mes);
+ HPMHooks.source.clif.disp_overhead(bl, mes, target, target_bl);
}
if (HPMHooks.count.HP_clif_disp_overhead_post > 0) {
- void (*postHookFunc) (struct block_list *bl, const char *mes);
+ void (*postHookFunc) (struct block_list *bl, const char *mes, enum send_target target, struct block_list *target_bl);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_disp_overhead_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_disp_overhead_post[hIndex].func;
+ postHookFunc(bl, mes, target, target_bl);
+ }
+ }
+ return;
+}
+void HP_clif_notify_playerchat(struct block_list *bl, const char *mes) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_notify_playerchat_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, const char **mes);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_playerchat_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_notify_playerchat_pre[hIndex].func;
+ preHookFunc(&bl, &mes);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.notify_playerchat(bl, mes);
+ }
+ if (HPMHooks.count.HP_clif_notify_playerchat_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, const char *mes);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_notify_playerchat_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_notify_playerchat_post[hIndex].func;
postHookFunc(bl, mes);
}
}
@@ -14300,6 +14326,32 @@ void HP_clif_openvending(struct map_session_data *sd, int id, struct s_vending *
}
return;
}
+void HP_clif_openvendingAck(int fd, int result) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_openvendingAck_pre > 0) {
+ void (*preHookFunc) (int *fd, int *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvendingAck_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_openvendingAck_pre[hIndex].func;
+ preHookFunc(&fd, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.openvendingAck(fd, result);
+ }
+ if (HPMHooks.count.HP_clif_openvendingAck_post > 0) {
+ void (*postHookFunc) (int fd, int result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_openvendingAck_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_openvendingAck_post[hIndex].func;
+ postHookFunc(fd, result);
+ }
+ }
+ return;
+}
void HP_clif_vendingreport(struct map_session_data *sd, int index, int amount, uint32 char_id, int zeny) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_vendingreport_pre > 0) {
@@ -18105,10 +18157,10 @@ void HP_clif_buyingstore_trade_failed_buyer(struct map_session_data *sd, short r
}
return;
}
-void HP_clif_buyingstore_update_item(struct map_session_data *sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny) {
+void HP_clif_buyingstore_update_item(struct map_session_data *sd, int nameid, unsigned short amount, uint32 char_id, int zeny) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_buyingstore_update_item_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid, unsigned short *amount, uint32 *char_id, int *zeny);
+ void (*preHookFunc) (struct map_session_data **sd, int *nameid, unsigned short *amount, uint32 *char_id, int *zeny);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_update_item_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_update_item_pre[hIndex].func;
@@ -18123,7 +18175,7 @@ void HP_clif_buyingstore_update_item(struct map_session_data *sd, unsigned short
HPMHooks.source.clif.buyingstore_update_item(sd, nameid, amount, char_id, zeny);
}
if (HPMHooks.count.HP_clif_buyingstore_update_item_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny);
+ void (*postHookFunc) (struct map_session_data *sd, int nameid, unsigned short amount, uint32 char_id, int zeny);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_update_item_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_update_item_post[hIndex].func;
postHookFunc(sd, nameid, amount, char_id, zeny);
@@ -18157,10 +18209,10 @@ void HP_clif_buyingstore_delete_item(struct map_session_data *sd, short index, u
}
return;
}
-void HP_clif_buyingstore_trade_failed_seller(struct map_session_data *sd, short result, unsigned short nameid) {
+void HP_clif_buyingstore_trade_failed_seller(struct map_session_data *sd, short result, int nameid) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, short *result, unsigned short *nameid);
+ void (*preHookFunc) (struct map_session_data **sd, short *result, int *nameid);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_buyingstore_trade_failed_seller_pre[hIndex].func;
@@ -18175,7 +18227,7 @@ void HP_clif_buyingstore_trade_failed_seller(struct map_session_data *sd, short
HPMHooks.source.clif.buyingstore_trade_failed_seller(sd, result, nameid);
}
if (HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, short result, unsigned short nameid);
+ void (*postHookFunc) (struct map_session_data *sd, short result, int nameid);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_buyingstore_trade_failed_seller_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_buyingstore_trade_failed_seller_post[hIndex].func;
postHookFunc(sd, result, nameid);
@@ -18993,10 +19045,10 @@ bool HP_clif_parse_roulette_db(void) {
}
return retVal___;
}
-void HP_clif_roulette_generate_ack(struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID) {
+void HP_clif_roulette_generate_ack(struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, int bonusItemID) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_roulette_generate_ack_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned char *result, short *stage, short *prizeIdx, short *bonusItemID);
+ void (*preHookFunc) (struct map_session_data **sd, unsigned char *result, short *stage, short *prizeIdx, int *bonusItemID);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_roulette_generate_ack_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_roulette_generate_ack_pre[hIndex].func;
@@ -19011,7 +19063,7 @@ void HP_clif_roulette_generate_ack(struct map_session_data *sd, unsigned char re
HPMHooks.source.clif.roulette_generate_ack(sd, result, stage, prizeIdx, bonusItemID);
}
if (HPMHooks.count.HP_clif_roulette_generate_ack_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID);
+ void (*postHookFunc) (struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, int bonusItemID);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_roulette_generate_ack_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_roulette_generate_ack_post[hIndex].func;
postHookFunc(sd, result, stage, prizeIdx, bonusItemID);
@@ -25394,10 +25446,10 @@ void HP_clif_pRodexAddItem(int fd, struct map_session_data *sd) {
}
return;
}
-void HP_clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 amount, int8 result) {
+void HP_clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_rodex_add_item_result_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount, int8 *result);
+ void (*preHookFunc) (struct map_session_data **sd, int16 *idx, int16 *amount, enum rodex_add_item *result);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_add_item_result_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_rodex_add_item_result_pre[hIndex].func;
@@ -25412,7 +25464,7 @@ void HP_clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16
HPMHooks.source.clif.rodex_add_item_result(sd, idx, amount, result);
}
if (HPMHooks.count.HP_clif_rodex_add_item_result_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount, int8 result);
+ void (*postHookFunc) (struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_add_item_result_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_rodex_add_item_result_post[hIndex].func;
postHookFunc(sd, idx, amount, result);
@@ -25914,10 +25966,10 @@ void HP_clif_pRodexRequestZeny(int fd, struct map_session_data *sd) {
}
return;
}
-void HP_clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result) {
+void HP_clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_rodex_request_zeny_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, int8 *result);
+ void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, enum rodex_get_zeny *result);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_zeny_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_rodex_request_zeny_pre[hIndex].func;
@@ -25932,7 +25984,7 @@ void HP_clif_rodex_request_zeny(struct map_session_data *sd, int8 opentype, int6
HPMHooks.source.clif.rodex_request_zeny(sd, opentype, mail_id, result);
}
if (HPMHooks.count.HP_clif_rodex_request_zeny_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result);
+ void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_zeny result);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_zeny_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_rodex_request_zeny_post[hIndex].func;
postHookFunc(sd, opentype, mail_id, result);
@@ -25966,10 +26018,10 @@ void HP_clif_pRodexRequestItems(int fd, struct map_session_data *sd) {
}
return;
}
-void HP_clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result) {
+void HP_clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_rodex_request_items_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, int8 *result);
+ void (*preHookFunc) (struct map_session_data **sd, int8 *opentype, int64 *mail_id, enum rodex_get_items *result);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_items_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_rodex_request_items_pre[hIndex].func;
@@ -25984,7 +26036,7 @@ void HP_clif_rodex_request_items(struct map_session_data *sd, int8 opentype, int
HPMHooks.source.clif.rodex_request_items(sd, opentype, mail_id, result);
}
if (HPMHooks.count.HP_clif_rodex_request_items_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result);
+ void (*postHookFunc) (struct map_session_data *sd, int8 opentype, int64 mail_id, enum rodex_get_items result);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_request_items_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_rodex_request_items_post[hIndex].func;
postHookFunc(sd, opentype, mail_id, result);
@@ -26623,10 +26675,10 @@ bool HP_clif_style_change_validate_requirements(struct map_session_data *sd, int
}
return retVal___;
}
-void HP_clif_stylist_send_rodexitem(struct map_session_data *sd, int16 itemid) {
+void HP_clif_stylist_send_rodexitem(struct map_session_data *sd, int itemid) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_stylist_send_rodexitem_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int16 *itemid);
+ void (*preHookFunc) (struct map_session_data **sd, int *itemid);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_send_rodexitem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_stylist_send_rodexitem_pre[hIndex].func;
@@ -26641,7 +26693,7 @@ void HP_clif_stylist_send_rodexitem(struct map_session_data *sd, int16 itemid) {
HPMHooks.source.clif.stylist_send_rodexitem(sd, itemid);
}
if (HPMHooks.count.HP_clif_stylist_send_rodexitem_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int16 itemid);
+ void (*postHookFunc) (struct map_session_data *sd, int itemid);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_stylist_send_rodexitem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_stylist_send_rodexitem_post[hIndex].func;
postHookFunc(sd, itemid);
@@ -33501,11 +33553,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, short pet_egg_id, short 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, 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 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, short *pet_egg_id, short *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
+ 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);
*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;
@@ -33520,7 +33572,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, short pet_egg_id, short pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
+ 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);
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);
@@ -39502,11 +39554,11 @@ void HP_itemdb_clear(bool total) {
}
return;
}
-struct item_combo* HP_itemdb_id2combo(unsigned short id) {
+struct item_combo* HP_itemdb_id2combo(int id) {
int hIndex = 0;
struct item_combo* retVal___ = NULL;
if (HPMHooks.count.HP_itemdb_id2combo_pre > 0) {
- struct item_combo* (*preHookFunc) (unsigned short *id);
+ struct item_combo* (*preHookFunc) (int *id);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_id2combo_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_itemdb_id2combo_pre[hIndex].func;
@@ -39521,7 +39573,7 @@ struct item_combo* HP_itemdb_id2combo(unsigned short id) {
retVal___ = HPMHooks.source.itemdb.id2combo(id);
}
if (HPMHooks.count.HP_itemdb_id2combo_post > 0) {
- struct item_combo* (*postHookFunc) (struct item_combo* retVal___, unsigned short id);
+ struct item_combo* (*postHookFunc) (struct item_combo* retVal___, int id);
for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_id2combo_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_itemdb_id2combo_post[hIndex].func;
retVal___ = postHookFunc(retVal___, id);
@@ -45588,11 +45640,11 @@ bool HP_map_zone_mf_cache(int m, char *flag, char *params) {
}
return retVal___;
}
-unsigned short HP_map_zone_str2itemid(const char *name) {
+int HP_map_zone_str2itemid(const char *name) {
int hIndex = 0;
- unsigned short retVal___ = 0;
+ int retVal___ = 0;
if (HPMHooks.count.HP_map_zone_str2itemid_pre > 0) {
- unsigned short (*preHookFunc) (const char **name);
+ int (*preHookFunc) (const char **name);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2itemid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_zone_str2itemid_pre[hIndex].func;
@@ -45607,7 +45659,7 @@ unsigned short HP_map_zone_str2itemid(const char *name) {
retVal___ = HPMHooks.source.map.zone_str2itemid(name);
}
if (HPMHooks.count.HP_map_zone_str2itemid_post > 0) {
- unsigned short (*postHookFunc) (unsigned short retVal___, const char *name);
+ int (*postHookFunc) (int retVal___, const char *name);
for (hIndex = 0; hIndex < HPMHooks.count.HP_map_zone_str2itemid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_zone_str2itemid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name);
@@ -50347,6 +50399,92 @@ void HP_mob_clear_spawninfo(void) {
}
return;
}
+struct item_drop_ratio* HP_mob_get_item_drop_ratio(int nameid) {
+ int hIndex = 0;
+ struct item_drop_ratio* retVal___ = NULL;
+ if (HPMHooks.count.HP_mob_get_item_drop_ratio_pre > 0) {
+ struct item_drop_ratio* (*preHookFunc) (int *nameid);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_item_drop_ratio_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mob_get_item_drop_ratio_pre[hIndex].func;
+ retVal___ = preHookFunc(&nameid);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mob.get_item_drop_ratio(nameid);
+ }
+ if (HPMHooks.count.HP_mob_get_item_drop_ratio_post > 0) {
+ struct item_drop_ratio* (*postHookFunc) (struct item_drop_ratio* retVal___, int nameid);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_get_item_drop_ratio_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mob_get_item_drop_ratio_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, nameid);
+ }
+ }
+ return retVal___;
+}
+void HP_mob_set_item_drop_ratio(int nameid, struct item_drop_ratio *ratio) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mob_set_item_drop_ratio_pre > 0) {
+ void (*preHookFunc) (int *nameid, struct item_drop_ratio **ratio);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_set_item_drop_ratio_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mob_set_item_drop_ratio_pre[hIndex].func;
+ preHookFunc(&nameid, &ratio);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mob.set_item_drop_ratio(nameid, ratio);
+ }
+ if (HPMHooks.count.HP_mob_set_item_drop_ratio_post > 0) {
+ void (*postHookFunc) (int nameid, struct item_drop_ratio *ratio);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_set_item_drop_ratio_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mob_set_item_drop_ratio_post[hIndex].func;
+ postHookFunc(nameid, ratio);
+ }
+ }
+ return;
+}
+int HP_mob_final_ratio_sub(union DBKey key, struct DBData *data, va_list ap) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_mob_final_ratio_sub_pre > 0) {
+ int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_final_ratio_sub_pre; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ preHookFunc = HPMHooks.list.HP_mob_final_ratio_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.mob.final_ratio_sub(key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ if (HPMHooks.count.HP_mob_final_ratio_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_final_ratio_sub_post; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ postHookFunc = HPMHooks.list.HP_mob_final_ratio_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ }
+ return retVal___;
+}
void HP_mob_destroy_mob_db(int index) {
int hIndex = 0;
if (HPMHooks.count.HP_mob_destroy_mob_db_pre > 0) {
@@ -60837,11 +60975,11 @@ void HP_pc_check_skilltree(struct map_session_data *sd, int skill_id) {
}
return;
}
-int HP_pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id) {
+int HP_pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_pc_bonus_autospell_pre > 0) {
- int (*preHookFunc) (struct s_autospell **spell, int *max, short *id, short *lv, short *rate, short *flag, short *card_id);
+ int (*preHookFunc) (struct s_autospell **spell, int *max, short *id, short *lv, short *rate, short *flag, int *card_id);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus_autospell_pre[hIndex].func;
@@ -60856,7 +60994,7 @@ int HP_pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv
retVal___ = HPMHooks.source.pc.bonus_autospell(spell, max, id, lv, rate, flag, card_id);
}
if (HPMHooks.count.HP_pc_bonus_autospell_post > 0) {
- int (*postHookFunc) (int retVal___, struct s_autospell *spell, int max, short id, short lv, short rate, short flag, short card_id);
+ int (*postHookFunc) (int retVal___, struct s_autospell *spell, int max, short id, short lv, short rate, short flag, int card_id);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus_autospell_post[hIndex].func;
retVal___ = postHookFunc(retVal___, spell, max, id, lv, rate, flag, card_id);
@@ -60864,11 +61002,11 @@ int HP_pc_bonus_autospell(struct s_autospell *spell, int max, short id, short lv
}
return retVal___;
}
-int HP_pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id) {
+int HP_pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_pc_bonus_autospell_onskill_pre > 0) {
- int (*preHookFunc) (struct s_autospell **spell, int *max, short *src_skill, short *id, short *lv, short *rate, short *card_id);
+ int (*preHookFunc) (struct s_autospell **spell, int *max, short *src_skill, short *id, short *lv, short *rate, int *card_id);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_onskill_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_bonus_autospell_onskill_pre[hIndex].func;
@@ -60883,7 +61021,7 @@ int HP_pc_bonus_autospell_onskill(struct s_autospell *spell, int max, short src_
retVal___ = HPMHooks.source.pc.bonus_autospell_onskill(spell, max, src_skill, id, lv, rate, card_id);
}
if (HPMHooks.count.HP_pc_bonus_autospell_onskill_post > 0) {
- int (*postHookFunc) (int retVal___, struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, short card_id);
+ int (*postHookFunc) (int retVal___, struct s_autospell *spell, int max, short src_skill, short id, short lv, short rate, int card_id);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_bonus_autospell_onskill_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_bonus_autospell_onskill_post[hIndex].func;
retVal___ = postHookFunc(retVal___, spell, max, src_skill, id, lv, rate, card_id);
@@ -62892,11 +63030,11 @@ int HP_pet_recv_petdata(int account_id, struct s_pet *p, int flag) {
}
return retVal___;
}
-int HP_pet_select_egg(struct map_session_data *sd, short egg_index) {
+int HP_pet_select_egg(struct map_session_data *sd, int egg_index) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_pet_select_egg_pre > 0) {
- int (*preHookFunc) (struct map_session_data **sd, short *egg_index);
+ int (*preHookFunc) (struct map_session_data **sd, int *egg_index);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_select_egg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_select_egg_pre[hIndex].func;
@@ -62911,7 +63049,7 @@ int HP_pet_select_egg(struct map_session_data *sd, short egg_index) {
retVal___ = HPMHooks.source.pet.select_egg(sd, egg_index);
}
if (HPMHooks.count.HP_pet_select_egg_post > 0) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, short egg_index);
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, int egg_index);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_select_egg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_select_egg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, egg_index);
@@ -69723,10 +69861,10 @@ bool HP_searchstore_open(struct map_session_data *sd, unsigned int uses, unsigne
}
return retVal___;
}
-void HP_searchstore_query(struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short *itemlist, unsigned int item_count, const unsigned short *cardlist, unsigned int card_count) {
+void HP_searchstore_query(struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const uint32 *itemlist, unsigned int item_count, const uint32 *cardlist, unsigned int card_count) {
int hIndex = 0;
if (HPMHooks.count.HP_searchstore_query_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, unsigned char *type, unsigned int *min_price, unsigned int *max_price, const unsigned short **itemlist, unsigned int *item_count, const unsigned short **cardlist, unsigned int *card_count);
+ void (*preHookFunc) (struct map_session_data **sd, unsigned char *type, unsigned int *min_price, unsigned int *max_price, const uint32 **itemlist, unsigned int *item_count, const uint32 **cardlist, unsigned int *card_count);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_query_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_query_pre[hIndex].func;
@@ -69741,7 +69879,7 @@ void HP_searchstore_query(struct map_session_data *sd, unsigned char type, unsig
HPMHooks.source.searchstore.query(sd, type, min_price, max_price, itemlist, item_count, cardlist, card_count);
}
if (HPMHooks.count.HP_searchstore_query_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const unsigned short *itemlist, unsigned int item_count, const unsigned short *cardlist, unsigned int card_count);
+ void (*postHookFunc) (struct map_session_data *sd, unsigned char type, unsigned int min_price, unsigned int max_price, const uint32 *itemlist, unsigned int item_count, const uint32 *cardlist, unsigned int card_count);
for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_query_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_query_post[hIndex].func;
postHookFunc(sd, type, min_price, max_price, itemlist, item_count, cardlist, card_count);
@@ -69854,10 +69992,10 @@ void HP_searchstore_close(struct map_session_data *sd) {
}
return;
}
-void HP_searchstore_click(struct map_session_data *sd, int account_id, int store_id, unsigned short nameid) {
+void HP_searchstore_click(struct map_session_data *sd, int account_id, int store_id, int nameid) {
int hIndex = 0;
if (HPMHooks.count.HP_searchstore_click_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int *account_id, int *store_id, unsigned short *nameid);
+ void (*preHookFunc) (struct map_session_data **sd, int *account_id, int *store_id, int *nameid);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_click_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_click_pre[hIndex].func;
@@ -69872,7 +70010,7 @@ void HP_searchstore_click(struct map_session_data *sd, int account_id, int store
HPMHooks.source.searchstore.click(sd, account_id, store_id, nameid);
}
if (HPMHooks.count.HP_searchstore_click_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int account_id, int store_id, unsigned short nameid);
+ void (*postHookFunc) (struct map_session_data *sd, int account_id, int store_id, int nameid);
for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_click_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_click_post[hIndex].func;
postHookFunc(sd, account_id, store_id, nameid);
@@ -69933,11 +70071,11 @@ void HP_searchstore_clearremote(struct map_session_data *sd) {
}
return;
}
-bool HP_searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short *card, unsigned char refine, const struct item_option *option) {
+bool HP_searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine, const struct item_option *option) {
int hIndex = 0;
bool retVal___ = false;
if (HPMHooks.count.HP_searchstore_result_pre > 0) {
- bool (*preHookFunc) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, unsigned short *nameid, unsigned short *amount, unsigned int *price, const short **card, unsigned char *refine, const struct item_option **option);
+ bool (*preHookFunc) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, int *nameid, unsigned short *amount, unsigned int *price, const int **card, unsigned char *refine, const struct item_option **option);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_result_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_searchstore_result_pre[hIndex].func;
@@ -69952,7 +70090,7 @@ bool HP_searchstore_result(struct map_session_data *sd, unsigned int store_id, i
retVal___ = HPMHooks.source.searchstore.result(sd, store_id, account_id, store_name, nameid, amount, price, card, refine, option);
}
if (HPMHooks.count.HP_searchstore_result_post > 0) {
- bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, unsigned short nameid, unsigned short amount, unsigned int price, const short *card, unsigned char refine, const struct item_option *option);
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine, const struct item_option *option);
for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_result_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_searchstore_result_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, store_id, account_id, store_name, nameid, amount, price, card, refine, option);
@@ -85788,11 +85926,11 @@ void HP_vending_purchase(struct map_session_data *sd, int aid, unsigned int uid,
}
return;
}
-bool HP_vending_search(struct map_session_data *sd, unsigned short nameid) {
+bool HP_vending_search(struct map_session_data *sd, int nameid) {
int hIndex = 0;
bool retVal___ = false;
if (HPMHooks.count.HP_vending_search_pre > 0) {
- bool (*preHookFunc) (struct map_session_data **sd, unsigned short *nameid);
+ bool (*preHookFunc) (struct map_session_data **sd, int *nameid);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_search_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_vending_search_pre[hIndex].func;
@@ -85807,7 +85945,7 @@ bool HP_vending_search(struct map_session_data *sd, unsigned short nameid) {
retVal___ = HPMHooks.source.vending.search(sd, nameid);
}
if (HPMHooks.count.HP_vending_search_post > 0) {
- bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned short nameid);
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int nameid);
for (hIndex = 0; hIndex < HPMHooks.count.HP_vending_search_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_vending_search_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, nameid);
diff --git a/src/plugins/Makefile.in b/src/plugins/Makefile.in
index ef3f1124b..e90a04f8b 100644
--- a/src/plugins/Makefile.in
+++ b/src/plugins/Makefile.in
@@ -1,7 +1,7 @@
# This file is part of Hercules.
# http://herc.ws - http://github.com/HerculesWS/Hercules
#
-# Copyright (C) 2013-2016 Hercules Dev Team
+# Copyright (C) 2013-2018 Hercules Dev Team
#
# Hercules is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/db2sql.c b/src/plugins/db2sql.c
index 38e5ead5d..57e68432e 100644
--- a/src/plugins/db2sql.c
+++ b/src/plugins/db2sql.c
@@ -242,7 +242,7 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
StrBuf->Init(&buf);
// id
- StrBuf->Printf(&buf, "'%u',", it->nameid);
+ StrBuf->Printf(&buf, "'%u',", (uint32)it->nameid);
// name_english
SQL->EscapeString(NULL, e_name, it->name);
@@ -449,7 +449,7 @@ void itemdb2sql_tableheader(void)
"\n"
"DROP TABLE IF EXISTS `%s`;\n"
"CREATE TABLE `%s` (\n"
- " `id` smallint(5) UNSIGNED NOT NULL DEFAULT '0',\n"
+ " `id` int(11) UNSIGNED NOT NULL DEFAULT '0',\n"
" `name_english` varchar(50) NOT NULL DEFAULT '',\n"
" `name_japanese` varchar(50) NOT NULL DEFAULT '',\n"
" `type` tinyint(2) UNSIGNED NOT NULL DEFAULT '0',\n"
diff --git a/src/plugins/script_mapquit.c b/src/plugins/script_mapquit.c
index 767292f2d..b212ce1c6 100644
--- a/src/plugins/script_mapquit.c
+++ b/src/plugins/script_mapquit.c
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2015 Hercules Dev Team
+ * Copyright (C) 2014-2018 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/tools/HPMHookGen/HPMDataCheckGen.pl b/tools/HPMHookGen/HPMDataCheckGen.pl
index e78a7bd93..f6e4dac24 100644
--- a/tools/HPMHookGen/HPMDataCheckGen.pl
+++ b/tools/HPMHookGen/HPMDataCheckGen.pl
@@ -3,7 +3,7 @@
# This file is part of Hercules.
# http://herc.ws - http://github.com/HerculesWS/Hercules
#
-# Copyright (C) 2014-2016 Hercules Dev Team
+# Copyright (C) 2014-2018 Hercules Dev Team
#
# Hercules is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tools/ci/travis.sh b/tools/ci/travis.sh
index f6c799934..fa7d5be93 100755
--- a/tools/ci/travis.sh
+++ b/tools/ci/travis.sh
@@ -49,10 +49,10 @@ function run_server {
echo "Running: $1 --run-once $2"
$1 --run-once $2 2>runlog.txt
export errcode=$?
- export teststr=$(cat runlog.txt)
+ export teststr=$(head -c 10000 runlog.txt)
if [[ -n "${teststr}" ]]; then
echo "Errors found in running server $1."
- cat runlog.txt
+ head -c 10000 runlog.txt
aborterror "Errors found in running server $1."
else
echo "No errors found for server $1."
@@ -67,10 +67,10 @@ function run_test {
echo "Running: test_$1"
./test_$1 2>runlog.txt
export errcode=$?
- export teststr=$(cat runlog.txt)
+ export teststr=$(head -c 10000 runlog.txt)
if [[ -n "${teststr}" ]]; then
echo "Errors found in running test $1."
- cat runlog.txt
+ head -c 10000 runlog.txt
aborterror "Errors found in running test $1."
else
echo "No errors found for test $1."
diff --git a/tools/skilldbconverter.php b/tools/skilldbconverter.php
index d926e4474..8e241ff6f 100644
--- a/tools/skilldbconverter.php
+++ b/tools/skilldbconverter.php
@@ -955,7 +955,7 @@ function getcomments($re)
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2014-2016 Hercules Dev Team
+//= Copyright (C) 2014-2018 Hercules Dev Team
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by