diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-07-05 19:57:34 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-07-05 19:57:34 +0300 |
commit | 4bbed18ded183c528aebdf3918d63e06b6896821 (patch) | |
tree | 1dfd2103624a4e4e3585b60dff20db2745beaeca /src | |
parent | 5c7857eac4512a38cd02843d377430e4a33697af (diff) | |
download | plugin-4bbed18ded183c528aebdf3918d63e06b6896821.tar.gz plugin-4bbed18ded183c528aebdf3918d63e06b6896821.tar.bz2 plugin-4bbed18ded183c528aebdf3918d63e06b6896821.tar.xz plugin-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.
Diffstat (limited to 'src')
-rw-r--r-- | src/emap/atcommand.c | 11 | ||||
-rw-r--r-- | src/emap/atcommand.h | 11 | ||||
-rw-r--r-- | src/emap/init.c | 1 |
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); |