From 4bbed18ded183c528aebdf3918d63e06b6896821 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 5 Jul 2016 19:57:34 +0300 Subject: Override server gm command @mapexit. New format: @mapexit [code] This command will terminate map server and return status code with value 'code'. If code missing it return 0. --- src/emap/atcommand.c | 11 +++++++++++ src/emap/atcommand.h | 11 ++++++++++- src/emap/init.c | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) (limited to 'src/emap') 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); -- cgit v1.2.3-70-g09d2