summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--src/echar/init.c3
-rw-r--r--src/elogin/init.c3
-rw-r--r--src/emap/init.c27
-rw-r--r--src/emap/parse.c29
-rwxr-xr-xtools/ci/jobs/clang39.sh2
-rwxr-xr-xtools/vars.sh2
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}"