summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-07-05 19:57:34 +0300
committerAndrei Karas <akaras@inbox.ru>2016-07-05 19:57:34 +0300
commit4bbed18ded183c528aebdf3918d63e06b6896821 (patch)
tree1dfd2103624a4e4e3585b60dff20db2745beaeca
parent5c7857eac4512a38cd02843d377430e4a33697af (diff)
downloadevol-hercules-4bbed18ded183c528aebdf3918d63e06b6896821.tar.gz
evol-hercules-4bbed18ded183c528aebdf3918d63e06b6896821.tar.bz2
evol-hercules-4bbed18ded183c528aebdf3918d63e06b6896821.tar.xz
evol-hercules-4bbed18ded183c528aebdf3918d63e06b6896821.zip
Override server gm command @mapexit.s20160706
New format: @mapexit [code] This command will terminate map server and return status code with value 'code'. If code missing it return 0.
-rw-r--r--src/emap/atcommand.c11
-rw-r--r--src/emap/atcommand.h11
-rw-r--r--src/emap/init.c1
3 files changed, 22 insertions, 1 deletions
diff --git a/src/emap/atcommand.c b/src/emap/atcommand.c
index b7acb4a..7c3f345 100644
--- a/src/emap/atcommand.c
+++ b/src/emap/atcommand.c
@@ -129,3 +129,14 @@ ACMD2(slide)
unit->movepos(&sd->bl, x, y, 1, 0);
return true;
}
+
+ACMD1(mapExit)
+{
+ int code = 0;
+ if (!*message || sscanf(message, "%5d", &code) < 1)
+ code = 0;
+
+ map->retval = code;
+ map->do_shutdown();
+ return true;
+}
diff --git a/src/emap/atcommand.h b/src/emap/atcommand.h
index fa40548..cd4cd41 100644
--- a/src/emap/atcommand.h
+++ b/src/emap/atcommand.h
@@ -9,9 +9,18 @@ const char* eatcommand_msgsd_pre(struct map_session_data **sdPtr,
const char* eatcommand_msgfd_pre(int *fdPtr,
int *msgPtr);
-#define ACMD2(x) bool atcommand_ ## x (const int fd, struct map_session_data* sd, const char* command __attribute__ ((unused)), const char* message, struct AtCommandInfo *info)
+#define ACMD1(x) bool atcommand_ ## x (const int fd __attribute__ ((unused)), \
+ struct map_session_data* sd __attribute__ ((unused)), \
+ const char* command __attribute__ ((unused)), \
+ const char* message, struct AtCommandInfo *info __attribute__ ((unused)))
+#define ACMD2(x) bool atcommand_ ## x (const int fd, \
+ struct map_session_data* sd, \
+ const char* command __attribute__ ((unused)), \
+ const char* message, \
+ struct AtCommandInfo *info)
ACMD2(setSkill);
ACMD2(slide);
+ACMD1(mapExit);
#endif // EVOL_MAP_ATCOMMAND
diff --git a/src/emap/init.c b/src/emap/init.c
index 3442b26..8f2de51 100644
--- a/src/emap/init.c
+++ b/src/emap/init.c
@@ -88,6 +88,7 @@ HPExport void plugin_init (void)
addAtcommand("setskill", setSkill);
addAtcommand("slide", slide);
+ addAtcommand("mapexit", mapExit);
addScriptCommand("chatjoin", "i*", chatJoin);
addScriptCommand("setcamnpc", "*", setCamNpc);