From 1e96fe7d63e6ec25cad98a5b1bef1b81e2c00fb6 Mon Sep 17 00:00:00 2001 From: Lance Date: Thu, 16 Nov 2006 15:26:27 +0000 Subject: * Edited atcommand and charcommand syntax. Now it doesn't need the useless character name and ":". modified Changelog-Trunk.txt modified src/map/atcommand.c modified src/map/atcommand.h modified src/map/charcommand.c modified src/map/charcommand.h modified src/map/clif.c modified src/map/map.c modified src/map/script.c git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9230 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 2 ++ src/map/atcommand.c | 56 ++++++++++++++++++++++++++++----------------------- src/map/atcommand.h | 4 +++- src/map/charcommand.c | 50 +++++++++++++++++++++++++-------------------- src/map/charcommand.h | 4 +++- src/map/clif.c | 18 ++++++++--------- src/map/map.c | 5 ++--- src/map/script.c | 8 ++++---- 8 files changed, 82 insertions(+), 65 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 464449661..6f7a4dafe 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,8 @@ 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/11/16 + * Edited atcommand and charcommand syntax. Now it doesn't need the useless + character name and ":". [Lance] * Shadow Jump and Kirikage won't "move" you if you use them in GvG grounds. Fixed Kirikage so it first warps you, and then you unhide. [Skotlex] * Corrected Zeny Nage so the Zeny spent on the attack is always the exact diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 7e641bd1e..213f864d5 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -776,37 +776,13 @@ int get_atcommand_level(const AtCommandType type) { return 100; // 100: command can not be used } -/*========================================== - *is_atcommand @コマンドに存在するかどうか確認する - *------------------------------------------ - */ AtCommandType -is_atcommand(const int fd, struct map_session_data* sd, const char* message, int gmlvl) { - const char* str = message; - int s_flag = 0; +atcommand_sub(const int fd, struct map_session_data* sd, const char* str, int gmlvl) { AtCommandInfo info; AtCommandType type; - nullpo_retr(AtCommand_None, sd); - - if (sd->sc.count && sd->sc.data[SC_NOCHAT].timer != -1 && sd->sc.data[SC_NOCHAT].val1&MANNER_NOCOMMAND) { - return AtCommand_Unknown; - } - - if (!message || !*message) - return AtCommand_None; - malloc_set(&info, 0, sizeof(info)); - str += strlen(sd->status.name); - while (*str && (isspace(*str) || (s_flag == 0 && *str == ':'))) { - if (*str == ':') - s_flag = 1; - str++; - } - if (!*str) - return AtCommand_None; - if (!gmlvl) gmlvl = pc_isGM(sd); type = atcommand(sd, gmlvl, str, &info); if (type != AtCommand_None) { char command[100]; @@ -847,6 +823,36 @@ is_atcommand(const int fd, struct map_session_data* sd, const char* message, int return AtCommand_None; } +/*========================================== + *is_atcommand @コマンドに存在するかどうか確認する + *------------------------------------------ + */ +AtCommandType +is_atcommand(const int fd, struct map_session_data* sd, const char* message) { + const char* str = message; + int s_flag = 0; + + nullpo_retr(AtCommand_None, sd); + + if (sd->sc.count && sd->sc.data[SC_NOCHAT].timer != -1 && sd->sc.data[SC_NOCHAT].val1&MANNER_NOCOMMAND) { + return AtCommand_Unknown; + } + + if (!message || !*message) + return AtCommand_None; + + str += strlen(sd->status.name); + while (*str && (isspace(*str) || (s_flag == 0 && *str == ':'))) { + if (*str == ':') + s_flag = 1; + str++; + } + if (!*str) + return AtCommand_None; + + return atcommand_sub(fd,sd,str,pc_isGM(sd)); +} + /*========================================== * *------------------------------------------ diff --git a/src/map/atcommand.h b/src/map/atcommand.h index 06bd3664f..aebe49965 100644 --- a/src/map/atcommand.h +++ b/src/map/atcommand.h @@ -299,7 +299,9 @@ typedef struct AtCommandInfo { } AtCommandInfo; AtCommandType -is_atcommand(const int fd, struct map_session_data* sd, const char* message, int gmlvl); +is_atcommand(const int fd, struct map_session_data* sd, const char* message); +AtCommandType +atcommand_sub(const int fd, struct map_session_data* sd, const char* str, int gmlvl); AtCommandType atcommand( struct map_session_data *sd, diff --git a/src/map/charcommand.c b/src/map/charcommand.c index 8264aa6ef..0b6bd8c60 100644 --- a/src/map/charcommand.c +++ b/src/map/charcommand.c @@ -122,33 +122,13 @@ int get_charcommand_level(const CharCommandType type) { return 100; // 100: command can not be used } -/*========================================== - *is_charcommand @コマンドに存在するかどうか確認する - *------------------------------------------ - */ -CharCommandType -is_charcommand(const int fd, struct map_session_data* sd, const char* message, int gmlvl) { - const char* str = message; - int s_flag = 0; +CharCommandType +charcommand_sub(const int fd, struct map_session_data* sd, const char* str, int gmlvl) { CharCommandInfo info; CharCommandType type; - nullpo_retr(CharCommand_None, sd); - - if (!message || !*message) - return CharCommand_None; - malloc_set(&info, 0, sizeof(info)); - str += strlen(sd->status.name); - while (*str && (isspace(*str) || (s_flag == 0 && *str == ':'))) { - if (*str == ':') - s_flag = 1; - str++; - } - if (!*str) - return CharCommand_None; - if (!gmlvl) gmlvl = pc_isGM(sd); type = charcommand(sd, gmlvl, str, &info); if (type != CharCommand_None) { char command[100]; @@ -190,6 +170,32 @@ is_charcommand(const int fd, struct map_session_data* sd, const char* message, i return CharCommand_None; } +/*========================================== + *is_charcommand @コマンドに存在するかどうか確認する + *------------------------------------------ + */ +CharCommandType +is_charcommand(const int fd, struct map_session_data* sd, const char* message) { + const char* str = message; + int s_flag = 0; + + nullpo_retr(CharCommand_None, sd); + + if (!message || !*message) + return CharCommand_None; + + str += strlen(sd->status.name); + while (*str && (isspace(*str) || (s_flag == 0 && *str == ':'))) { + if (*str == ':') + s_flag = 1; + str++; + } + if (!*str) + return CharCommand_None; + + return charcommand_sub(fd,sd,str,pc_isGM(sd)); +} + /*========================================== * *------------------------------------------ diff --git a/src/map/charcommand.h b/src/map/charcommand.h index a081000d8..2f75f75c5 100644 --- a/src/map/charcommand.h +++ b/src/map/charcommand.h @@ -60,7 +60,9 @@ typedef struct CharCommandInfo { } CharCommandInfo; CharCommandType -is_charcommand(const int fd, struct map_session_data* sd, const char* message, int gmlvl); +is_charcommand(const int fd, struct map_session_data* sd, const char* message); +CharCommandType +charcommand_sub(const int fd, struct map_session_data* sd, const char* str, int gmlvl); CharCommandType charcommand( struct map_session_data* sd, const int level, const char* message, CharCommandInfo* info); diff --git a/src/map/clif.c b/src/map/clif.c index 27f634164..a79cbf0fd 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8694,8 +8694,8 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) { // S 008c < return; } - if ((is_atcommand(fd, sd, message, 0) != AtCommand_None) || - (is_charcommand(fd, sd, message,0) != CharCommand_None)) + if ((is_atcommand(fd, sd, message) != AtCommand_None) || + (is_charcommand(fd, sd, message) != CharCommand_None)) return; if (sd->sc.count && @@ -9059,8 +9059,8 @@ void clif_parse_Wis(int fd, struct map_session_data *sd) { // S 0096 .w status.name, RFIFOP(fd,28)); - if ((is_charcommand(fd, sd, gm_command, 0) != CharCommand_None) || - (is_atcommand(fd, sd, gm_command, 0) != AtCommand_None)) { + if ((is_charcommand(fd, sd, gm_command) != CharCommand_None) || + (is_atcommand(fd, sd, gm_command) != AtCommand_None)) { if(gm_command) aFree(gm_command); return; } @@ -10428,8 +10428,8 @@ void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) { void clif_parse_PartyMessage(int fd, struct map_session_data *sd) { RFIFOHEAD(fd); - if (is_charcommand(fd, sd, (char*)RFIFOP(fd,4), 0) != CharCommand_None || - is_atcommand(fd, sd, (char*)RFIFOP(fd,4), 0) != AtCommand_None) + if (is_charcommand(fd, sd, (char*)RFIFOP(fd,4)) != CharCommand_None || + is_atcommand(fd, sd, (char*)RFIFOP(fd,4)) != AtCommand_None) return; if (sd->sc.count && ( @@ -10672,8 +10672,8 @@ void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd) { void clif_parse_GuildMessage(int fd,struct map_session_data *sd) { RFIFOHEAD(fd); - if (is_charcommand(fd, sd, (char*)RFIFOP(fd, 4), 0) != CharCommand_None || - is_atcommand(fd, sd, (char*)RFIFOP(fd, 4), 0) != AtCommand_None) + if (is_charcommand(fd, sd, (char*)RFIFOP(fd, 4)) != CharCommand_None || + is_atcommand(fd, sd, (char*)RFIFOP(fd, 4)) != AtCommand_None) return; if (sd->sc.count && ( @@ -11427,7 +11427,7 @@ void clif_parse_GMKillAll(int fd,struct map_session_data *sd) char message[50]; strncpy(message,sd->status.name, NAME_LENGTH); - is_atcommand(fd, sd, strcat(message," : @kickall"),0); + is_atcommand(fd, sd, strcat(message," : @kickall")); return; } diff --git a/src/map/map.c b/src/map/map.c index 1036edd15..75c428293 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -3233,7 +3233,7 @@ static int char_ip_set = 0; *------------------------------------------ */ int parse_console(char *buf) { - char type[64],command[64],map[64], buf2[72]; + char type[64],command[64],map[64]; int x = 0, y = 0; int m, n; struct map_session_data sd; @@ -3263,8 +3263,7 @@ int parse_console(char *buf) { ShowInfo("Type of command: %s || Command: %s || Map: %s Coords: %d %d\n",type,command,map,x,y); if ( strcmpi("admin",type) == 0 && n == 5 ) { - sprintf(buf2,"console: %s",command); - if( is_atcommand(sd.fd,&sd,buf2,99) == AtCommand_None ) + if( atcommand_sub(sd.fd,&sd,command,99) == AtCommand_None ) printf("Console: not atcommand\n"); } else if ( strcmpi("server",type) == 0 && n == 2 ) { if ( strcmpi("shutdown", command) == 0 || strcmpi("exit",command) == 0 || strcmpi("quit",command) == 0 ) { diff --git a/src/map/script.c b/src/map/script.c index 551e286f1..414181f98 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -10102,7 +10102,7 @@ int buildin_atcommand(struct script_state *st) if (st->rid) sd = script_rid2sd(st); - if (sd) is_atcommand(sd->fd, sd, cmd, 99); + if (sd) atcommand_sub(sd->fd, sd, cmd, 99); else { //Use a dummy character. struct map_session_data dummy_sd; struct block_list *bl = NULL; @@ -10113,7 +10113,7 @@ int buildin_atcommand(struct script_state *st) if (bl->type == BL_NPC) strncpy(dummy_sd.status.name, ((TBL_NPC*)bl)->name, NAME_LENGTH); } - is_atcommand(0, &dummy_sd, cmd, 99); + atcommand_sub(0, &dummy_sd, cmd, 99); } return 0; @@ -10129,7 +10129,7 @@ int buildin_charcommand(struct script_state *st) if (st->rid) sd = script_rid2sd(st); - if (sd) is_charcommand(sd->fd, sd, cmd, 99); + if (sd) charcommand_sub(sd->fd, sd, cmd,99); else { //Use a dummy character. struct map_session_data dummy_sd; struct block_list *bl = NULL; @@ -10140,7 +10140,7 @@ int buildin_charcommand(struct script_state *st) if (bl->type == BL_NPC) strncpy(dummy_sd.status.name, ((TBL_NPC*)bl)->name, NAME_LENGTH); } - is_charcommand(0, &dummy_sd, cmd, 99); + charcommand_sub(0, &dummy_sd, cmd, 99); } return 0; -- cgit v1.2.3-70-g09d2