diff options
-rw-r--r-- | .gitlab-ci.yml | 2 | ||||
-rw-r--r-- | src/echar/init.c | 3 | ||||
-rw-r--r-- | src/elogin/init.c | 3 | ||||
-rw-r--r-- | src/emap/init.c | 27 | ||||
-rw-r--r-- | src/emap/parse.c | 29 | ||||
-rwxr-xr-x | tools/ci/jobs/clang39.sh | 2 | ||||
-rwxr-xr-x | tools/vars.sh | 2 |
7 files changed, 47 insertions, 21 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 01b3c36..0952285 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -72,7 +72,7 @@ clang-3.9: stage: build script: - ./tools/ci/jobs/clang39.sh --enable-werror - image: debian:unstable + image: debian:stable .clang-3.9-i386: stage: build diff --git a/src/echar/init.c b/src/echar/init.c index d241d8c..d9f39c7 100644 --- a/src/echar/init.c +++ b/src/echar/init.c @@ -11,6 +11,7 @@ #include "common/memmgr.h" #include "common/mapindex.h" #include "common/mmo.h" +#include "common/packets.h" #include "common/socket.h" #include "common/strlib.h" #include "common/sql.h" @@ -54,6 +55,8 @@ HPExport void plugin_init (void) addPacket(0x5001, 7, echar_parse_login_password_change_ack, hpParse_FromLogin); addPacket(0x5002, 4, echar_parse_map_serverexit, hpParse_FromMap); + packets->addLen(0xb17 + evolPacketOffset, 19); + addHookPre(chr, parse_char_create_new_char, echar_parse_char_create_new_char); addHookPre(chr, creation_failed, echar_creation_failed); addHookPre(chr, parse_char_connect, echar_parse_char_connect_pre); diff --git a/src/elogin/init.c b/src/elogin/init.c index c3d3fb7..5f17a46 100644 --- a/src/elogin/init.c +++ b/src/elogin/init.c @@ -10,6 +10,7 @@ #include "common/HPMi.h" #include "common/memmgr.h" #include "common/mmo.h" +#include "common/packets.h" #include "common/socket.h" #include "common/strlib.h" #include "common/timer.h" @@ -47,6 +48,8 @@ HPExport void plugin_init (void) addPacket(0x027c, 91, elogin_parse_client_login2, hpParse_Login); addPacket(0x5000, 54, elogin_parse_change_paassword, hpParse_FromChar); addPacket(0x5003, 4, elogin_parse_serverexit, hpParse_FromChar); + packets->addLen(0x7531, -1); + packets->addLen(0x63, -1); addHookPre(login, client_login, elogin_client_login_pre); addHookPre(login, check_password, elogin_check_password_pre); diff --git a/src/emap/init.c b/src/emap/init.c index a12e1c5..ee6ea9d 100644 --- a/src/emap/init.c +++ b/src/emap/init.c @@ -13,6 +13,7 @@ #include "common/mapindex.h" #include "common/mmo.h" #include "common/nullpo.h" +#include "common/packets.h" #include "common/socket.h" #include "common/strlib.h" #include "common/timer.h" @@ -221,6 +222,32 @@ HPExport void plugin_init (void) addPacket(0xb14 + evolPacketOffset, 3, map_parse_homun_emote, hpClif_Parse); addPacket(0xb15 + evolPacketOffset, 9, map_parse_homun_dir, hpClif_Parse); addPacket(0xb26 + evolPacketOffset, 6, map_clif_parse_useitem2, hpClif_Parse); + packets->addLen(0xB00 + evolPacketOffset, 16); + packets->addLen(0xB01 + evolPacketOffset, -1); + packets->addLen(0xb02 + evolPacketOffset, 10); + packets->addLen(0xb03 + evolPacketOffset, -1); + packets->addLen(0xb04 + evolPacketOffset, -1); + packets->addLen(0xb05 + evolPacketOffset, -1); + packets->addLen(0xb06 + evolPacketOffset, -1); + packets->addLen(0xb08 + evolPacketOffset, 27); + packets->addLen(0xb0a + evolPacketOffset, -1); + packets->addLen(0xb0b + evolPacketOffset, -1); + packets->addLen(0xb10 + evolPacketOffset, -1); + packets->addLen(0xb16 + evolPacketOffset, -1); + packets->addLen(0xb17 + evolPacketOffset, 19); + packets->addLen(0xb18 + evolPacketOffset, 28); + packets->addLen(0xb1a + evolPacketOffset, 34); + packets->addLen(0xb1b + evolPacketOffset, 34); + packets->addLen(0xb1c + evolPacketOffset, -1); + packets->addLen(0xb1d + evolPacketOffset, 6); + packets->addLen(0xb1f + evolPacketOffset, -1); + packets->addLen(0xb20 + evolPacketOffset, -1); + packets->addLen(0xb21 + evolPacketOffset, 10); + packets->addLen(0xb22 + evolPacketOffset, 10); + packets->addLen(0xb23 + evolPacketOffset, -1); + packets->addLen(0xb24 + evolPacketOffset, 23); + packets->addLen(0xb25 + evolPacketOffset, 8); + addHookPre(atcommand, msgfd, eatcommand_msgfd_pre); addHookPre(atcommand, msgsd, eatcommand_msgsd_pre); diff --git a/src/emap/parse.c b/src/emap/parse.c index 1d620f4..966c8bb 100644 --- a/src/emap/parse.c +++ b/src/emap/parse.c @@ -56,8 +56,8 @@ void map_parse_join_channel(int fd) if (chan) { int k; - ARR_FIND(0, sd->channel_count, k, sd->channels[k] == chan); - if (k < sd->channel_count || channel->join(chan, sd, "", true) == HCS_STATUS_OK) + ARR_FIND(0, VECTOR_LENGTH(sd->channels), k, VECTOR_INDEX(sd->channels, k) == chan); + if (k < VECTOR_LENGTH(sd->channels) || channel->join(chan, sd, "", true) == HCS_STATUS_OK) res = 1; else res = 0; @@ -81,33 +81,26 @@ void map_parse_part_channel(int fd) else p = name; - for (k = 0; k < sd->channel_count; k ++) + ARR_FIND(0, VECTOR_LENGTH(sd->channels), k, strcmpi(p, VECTOR_INDEX(sd->channels, k)->name) == 0); + if (k == VECTOR_LENGTH(sd->channels)) { - if (strcmpi(p, sd->channels[k]->name) == 0) - break; - } - - if (k == sd->channel_count) return; + } - if (sd->channels[k]->type == HCS_TYPE_ALLY) + if (VECTOR_INDEX(sd->channels, k)->type == HCS_TYPE_ALLY) { - do + for (k = VECTOR_LENGTH(sd->channels) - 1; k >= 0; k--) { - for (k = 0; k < sd->channel_count; k++) + // Loop downward to avoid issues when channel->leave() compacts the array + if (VECTOR_INDEX(sd->channels, k)->type == HCS_TYPE_ALLY) { - if (sd->channels[k]->type == HCS_TYPE_ALLY) - { - channel->leave(sd->channels[k], sd); - break; - } + channel->leave(VECTOR_INDEX(sd->channels, k), sd); } } - while (k != sd->channel_count); } else { - channel->leave(sd->channels[k], sd); + channel->leave(VECTOR_INDEX(sd->channels, k), sd); } } diff --git a/tools/ci/jobs/clang39.sh b/tools/ci/jobs/clang39.sh index 41e4e8a..ba6c23e 100755 --- a/tools/ci/jobs/clang39.sh +++ b/tools/ci/jobs/clang39.sh @@ -9,7 +9,7 @@ source ./tools/ci/scripts/init.sh aptget_install clang-3.9 \ git-core \ make autoconf automake autopoint \ - libtool libmysqlclient-dev libz-dev libpcre3-dev + libtool mariadb-client libmariadbclient-dev-compat libz-dev libpcre3-dev do_init build_init diff --git a/tools/vars.sh b/tools/vars.sh index 7876cbe..3627808 100755 --- a/tools/vars.sh +++ b/tools/vars.sh @@ -10,5 +10,5 @@ # can be used for custom skill id: 10016 - 10036+20 -export VARS=" -DOLD_MAX_SKILL_DB=1510 -DMAX_SKILL_DB=1552 -DMAX_SKILL_ID=20042 -DMAX_EVOL_SKILLS=42 -DEVOL_FIRST_SKILL=20000 -DSC_MAX=658 -DSI_MAX=971" +export VARS=" -DOLD_MAX_SKILL_DB=1510 -DMAX_SKILL_DB=1552 -DMAX_SKILL_ID=20042 -DMAX_EVOL_SKILLS=42 -DEVOL_FIRST_SKILL=20000 -DSC_MAX=658 -DSI_MAX=971 -DMIN_PACKET_DB=0x63 -DMAX_PACKET_DB=0x7531" export CPPFLAGS="${VARS}" |