- Modified the nocommand mapflag so you can specify the GM range that is blocked from using commands (eg: "prontera.gat mapflag nocommand 40" disables commands to characters in the GM range 0~39)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8733 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2006-09-13 16:11:22 +00:00
parent c06808095d
commit 84f86fa96e
6 changed files with 18 additions and 9 deletions

View File

@ -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. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/09/13 2006/09/13
* Modified the nocommand mapflag so you can specify the GM range that is
blocked from using commands (eg: "prontera.gat mapflag nocommand 40"
disables commands to characters in the GM range 0~39) [Skotlex]
* Modified the char-server TXT whisper system to use the online_db to know * Modified the char-server TXT whisper system to use the online_db to know
to which map server forward whispers, instead of just sending the whisper to which map server forward whispers, instead of just sending the whisper
to every map server. [Skotlex] to every map server. [Skotlex]

View File

@ -807,8 +807,8 @@ is_atcommand(const int fd, struct map_session_data* sd, const char* message, int
if (!*str) if (!*str)
return AtCommand_None; return AtCommand_None;
if (map[sd->bl.m].flag.nocommand && if (map[sd->bl.m].nocommand &&
(gmlvl > 0? gmlvl:pc_isGM(sd)) < battle_config.gm_skilluncond) (gmlvl > 0? gmlvl:pc_isGM(sd)) < map[sd->bl.m].nocommand)
{ //Command not allowed on this map. { //Command not allowed on this map.
sprintf(atcmd_output, msg_txt(143)); sprintf(atcmd_output, msg_txt(143));
clif_displaymessage(fd, atcmd_output); clif_displaymessage(fd, atcmd_output);
@ -5820,7 +5820,7 @@ int atcommand_mapinfo(
clif_displaymessage(fd, atcmd_output); clif_displaymessage(fd, atcmd_output);
strcpy(atcmd_output,"Other Flags: "); strcpy(atcmd_output,"Other Flags: ");
if (map[m_id].flag.nocommand) if (map[m_id].nocommand)
strcat(atcmd_output, "NoCommand | "); strcat(atcmd_output, "NoCommand | ");
if (map[m_id].flag.nobaseexp) if (map[m_id].flag.nobaseexp)
strcat(atcmd_output, "NoBaseEXP | "); strcat(atcmd_output, "NoBaseEXP | ");

View File

@ -148,8 +148,8 @@ is_charcommand(const int fd, struct map_session_data* sd, const char* message, i
if (!*str) if (!*str)
return CharCommand_None; return CharCommand_None;
if (map[sd->bl.m].flag.nocommand && if (map[sd->bl.m].nocommand &&
(gmlvl > 0? gmlvl:pc_isGM(sd)) < battle_config.gm_skilluncond) (gmlvl > 0? gmlvl:pc_isGM(sd)) < map[sd->bl.m].nocommand)
{ //Command not allowed on this map. { //Command not allowed on this map.
char output[200]; char output[200];
sprintf(output, msg_table[143]); sprintf(output, msg_table[143]);

View File

@ -1115,7 +1115,6 @@ struct map_data {
unsigned nomvploot : 1; // [Lorky] unsigned nomvploot : 1; // [Lorky]
unsigned nightenabled :1; //For night display. [Skotlex] unsigned nightenabled :1; //For night display. [Skotlex]
unsigned restricted : 1; // [Komurka] unsigned restricted : 1; // [Komurka]
unsigned nocommand : 1; //Blocks @/# commands for non-gms. [Skotlex]
unsigned nodrop : 1; unsigned nodrop : 1;
unsigned novending : 1; unsigned novending : 1;
unsigned loadevent : 1; unsigned loadevent : 1;
@ -1134,6 +1133,7 @@ struct map_data {
int zone; // [Komurka] int zone; // [Komurka]
int jexp; // map experience multiplicator int jexp; // map experience multiplicator
int bexp; // map experience multiplicator int bexp; // map experience multiplicator
int nocommand; //Blocks @/# commands for non-gms. [Skotlex]
}; };
struct map_data_other_server { struct map_data_other_server {

View File

@ -2521,7 +2521,13 @@ static int npc_parse_mapflag (char *w1, char *w2, char *w3, char *w4)
map[m].flag.nomvploot=state; map[m].flag.nomvploot=state;
} }
else if (strcmpi(w3,"nocommand")==0) { // Skotlex else if (strcmpi(w3,"nocommand")==0) { // Skotlex
map[m].flag.nocommand=state; if (state) {
if (sscanf(w4, "%d", &state) == 1)
map[m].nocommand =state;
else //No level specified, block everyone.
map[m].nocommand =100;
} else
map[m].nocommand=0;
} }
else if (strcmpi(w3,"restricted")==0) { // Komurka else if (strcmpi(w3,"restricted")==0) { // Komurka
if (state) { if (state) {

View File

@ -8317,7 +8317,7 @@ int buildin_setmapflag(struct script_state *st)
map[m].flag.restricted=1; map[m].flag.restricted=1;
break; break;
case MF_NOCOMMAND: case MF_NOCOMMAND:
map[m].flag.nocommand=1; map[m].nocommand = (!val || atoi(val) <= 0) ? 100 : atoi(val);
break; break;
case MF_JEXP: case MF_JEXP:
map[m].jexp = (!val || atoi(val) < 0) ? 100 : atoi(val); map[m].jexp = (!val || atoi(val) < 0) ? 100 : atoi(val);
@ -8461,7 +8461,7 @@ int buildin_removemapflag(struct script_state *st)
map[m].flag.restricted=0; map[m].flag.restricted=0;
break; break;
case MF_NOCOMMAND: case MF_NOCOMMAND:
map[m].flag.nocommand=0; map[m].nocommand=0;
break; break;
case MF_JEXP: case MF_JEXP:
map[m].jexp=100; map[m].jexp=100;