diff options
author | Haru <haru@dotalux.com> | 2019-10-19 17:45:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-19 17:45:35 +0200 |
commit | ddd0e461fb8e451912a6aee90869023e2c2d8272 (patch) | |
tree | 4dc1d7ab1c36534420636ee0769b7650fcbe2272 | |
parent | 574e63d3e04e6b1cdb2d9d19fa164263ba5d5bf7 (diff) | |
parent | f174b0c7067be290a00882e09746d8a51d46f9c0 (diff) | |
download | hercules-ddd0e461fb8e451912a6aee90869023e2c2d8272.tar.gz hercules-ddd0e461fb8e451912a6aee90869023e2c2d8272.tar.bz2 hercules-ddd0e461fb8e451912a6aee90869023e2c2d8272.tar.xz hercules-ddd0e461fb8e451912a6aee90869023e2c2d8272.zip |
Merge pull request #2563 from MishimaHaruna/cpcmds-fixes
Console command fixes
-rw-r--r-- | src/common/console.c | 17 | ||||
-rw-r--r-- | src/map/map.c | 4 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/common/console.c b/src/common/console.c index a990d86b3..0075ac2a1 100644 --- a/src/common/console.c +++ b/src/common/console.c @@ -322,6 +322,7 @@ static void console_parse_create(char *name, CParseFunc func) nullpo_retv(name); safestrncpy(sublist, name, CP_CMD_LENGTH * 5); tok = strtok(sublist,":"); + nullpo_retv(tok); ARR_FIND(0, VECTOR_LENGTH(console->input->command_list), i, strcmpi(tok, VECTOR_INDEX(console->input->command_list, i)->cmd) == 0); @@ -404,6 +405,10 @@ static void console_parse_sub(char *line) nullpo_retv(line); memcpy(bline, line, 200); tok = strtok(line, " "); + if (tok == NULL) { + // Ignore empty commands + return; + } ARR_FIND(0, VECTOR_LENGTH(console->input->command_list), i, strcmpi(tok, VECTOR_INDEX(console->input->command_list, i)->cmd) == 0); if (i == VECTOR_LENGTH(console->input->command_list)) { @@ -417,6 +422,12 @@ static void console_parse_sub(char *line) if (cmd->type == CPET_FUNCTION) { tok = strtok(NULL, ""); + if (tok != NULL) { + while (tok[0] == ' ') + tok++; + if (tok[0] == '\0') + tok = NULL; + } cmd->u.func(tok); return; } @@ -444,6 +455,12 @@ static void console_parse_sub(char *line) entry = VECTOR_INDEX(cmd->u.children, i); if (entry->type == CPET_FUNCTION) { tok = strtok(NULL, ""); + if (tok != NULL) { + while (tok[0] == ' ') + tok++; + if (tok[0] == '\0') + tok = NULL; + } entry->u.func(tok); return; } diff --git a/src/map/map.c b/src/map/map.c index f3fc9d46b..957098dd4 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -45,7 +45,6 @@ #include "map/mapreg.h" #include "map/mercenary.h" #include "map/mob.h" -#include "map/npc.h" #include "map/npc.h" // npc_setcells(), npc_unsetcells() #include "map/party.h" #include "map/path.h" @@ -6305,6 +6304,7 @@ static CPCMD(gm_position) map->cpsd->bl.x = x; map->cpsd->bl.y = y; map->cpsd->bl.m = m; + map->cpsd->mapindex = map_id2index(m); } static CPCMD(gm_use) { @@ -6333,6 +6333,8 @@ static void map_cp_defaults(void) map->cpsd->bl.x = mapindex->default_x; map->cpsd->bl.y = mapindex->default_y; map->cpsd->bl.m = map->mapname2mapid(mapindex->default_map); + Assert_retv(map->cpsd->bl.m >= 0); + map->cpsd->mapindex = map_id2index(map->cpsd->bl.m); console->input->addCommand("gm:info",CPCMD_A(gm_position)); console->input->addCommand("gm:use",CPCMD_A(gm_use)); |