diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index ef3977707a..35595231c6 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/09/19 + * Fixed nocommand mapflag causing the "you can't use commands on this map" + message to trigger one very single chat, instead of only for actual @/# + command invocation. [Skotlex] * Added support for skipping empty string menu entries for the select() command (just as `menu` has it already) [Skotlex] * Fixed pc_set_hate_mob letting you place mobs on any of the three diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 8d3756441b..5c579f05b3 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -807,17 +807,20 @@ is_atcommand(const int fd, struct map_session_data* sd, const char* message, int if (!*str) return AtCommand_None; - if (map[sd->bl.m].nocommand && - (gmlvl > 0? gmlvl:pc_isGM(sd)) < map[sd->bl.m].nocommand) - { //Command not allowed on this map. - sprintf(atcmd_output, msg_txt(143)); - clif_displaymessage(fd, atcmd_output); - return AtCommand_None; - } - type = atcommand(sd, gmlvl > 0 ? gmlvl : pc_isGM(sd), str, &info); + if (!gmlvl) gmlvl = pc_isGM(sd); + type = atcommand(sd, gmlvl, str, &info); if (type != AtCommand_None) { char command[100]; const char* p = str; + + if (map[sd->bl.m].nocommand && + gmlvl < map[sd->bl.m].nocommand) + { //Command not allowed on this map. + sprintf(atcmd_output, msg_txt(143)); + clif_displaymessage(fd, atcmd_output); + return AtCommand_None; + } + malloc_tsetdword(command, '\0', sizeof(command)); malloc_tsetdword(atcmd_output, '\0', sizeof(atcmd_output)); while (*p && !isspace(*p)) diff --git a/src/map/charcommand.c b/src/map/charcommand.c index c4530dcd0c..8772c18dc7 100644 --- a/src/map/charcommand.c +++ b/src/map/charcommand.c @@ -148,20 +148,21 @@ is_charcommand(const int fd, struct map_session_data* sd, const char* message, i if (!*str) return CharCommand_None; - if (map[sd->bl.m].nocommand && - (gmlvl > 0? gmlvl:pc_isGM(sd)) < map[sd->bl.m].nocommand) - { //Command not allowed on this map. - char output[200]; - sprintf(output, msg_table[143]); - clif_displaymessage(fd, output); - return AtCommand_None; - } - - type = charcommand(sd, gmlvl > 0 ? gmlvl : pc_isGM(sd), str, &info); + if (!gmlvl) gmlvl = pc_isGM(sd); + type = charcommand(sd, gmlvl, str, &info); if (type != CharCommand_None) { char command[100]; char output[200]; const char* p = str; + + if (map[sd->bl.m].nocommand && + gmlvl < map[sd->bl.m].nocommand) + { //Command not allowed on this map. + sprintf(output, msg_txt(143)); + clif_displaymessage(fd, output); + return AtCommand_None; + } + malloc_tsetdword(command, '\0', sizeof(command)); malloc_tsetdword(output, '\0', sizeof(output)); while (*p && !isspace(*p))