A little clean up in atcommand

* Typo "status" should be "equip" at 267d521
* Follow up 3428ae2, use the 'parent' command name -atcommand_checkalias()- to compare the command, so it won't breaks alias recognition

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
This commit is contained in:
Cydh Ramdh 2014-12-09 13:22:40 +07:00
parent 2015b127dd
commit 47e33084ea
2 changed files with 96 additions and 64 deletions

View File

@ -450,7 +450,7 @@
432: change the sex of
433: This character has been banned until
434: Char-server has been asked to %s the character '%.*s'.
435: Please enter a player name (usage: @charunblock <char name>).
435: Please enter a player name (usage: %s <char name>).
436: VIP
437: GM's cannot become a VIP.
438: You are no longer VIP.
@ -922,18 +922,15 @@
// @recall
1020: You are not authorized to warp this player from their map.
// @charblock
1021: Please enter a player name (usage: @charblock/@block <char name>).
// @charblock/@charunblock
1021: Please enter a player name (usage: %s <char name>).
// @charban
1022: Please enter ban time and a player name (usage: @charban/@ban/@banish/@charbanish <time> <char name>).
// @ban/@charban
1022: Please enter ban time and a player name (usage: %s <time> <char name>).
1023: You are not allowed to alter the time of a ban.
// @charunblock
1024: Please enter a player name (usage: @charunblock <char name>).
// @charunban
1025: Please enter a player name (usage: @charunban <char name>).
//1024: free
//1025: free
// @kick
1026: Please enter a player name (usage: @kick <char name/ID>).

View File

@ -89,6 +89,7 @@ static config_t atcommand_config;
static char atcmd_output[CHAT_SIZE_MAX];
static char atcmd_player_name[NAME_LENGTH];
const char *parent_cmd;
static AtCommandInfo* get_atcommandinfo_byname(const char *name); // @help
static const char* atcommand_checkalias(const char *aliasname); // @help
@ -1048,15 +1049,15 @@ ACMD_FUNC(jobchange)
if (!found) {
text = atcommand_help_string(command);
if (text)
clif_displaymessage(fd, text);
if (text)
clif_displaymessage(fd, text);
return -1;
}
}
if (job == JOB_KNIGHT2 || job == JOB_CRUSADER2 || job == JOB_WEDDING || job == JOB_XMAS || job == JOB_SUMMER || job == JOB_HANBOK || job == JOB_OKTOBERFEST
|| job == JOB_LORD_KNIGHT2 || job == JOB_PALADIN2 || job == JOB_BABY_KNIGHT2 || job == JOB_BABY_CRUSADER2 || job == JOB_STAR_GLADIATOR2
|| (job >= JOB_RUNE_KNIGHT2 && job <= JOB_MECHANIC_T2) || (job >= JOB_BABY_RUNE2 && job <= JOB_BABY_MECHANIC2))
if (job == JOB_KNIGHT2 || job == JOB_CRUSADER2 || job == JOB_WEDDING || job == JOB_XMAS || job == JOB_SUMMER || job == JOB_HANBOK || job == JOB_OKTOBERFEST
|| job == JOB_LORD_KNIGHT2 || job == JOB_PALADIN2 || job == JOB_BABY_KNIGHT2 || job == JOB_BABY_CRUSADER2 || job == JOB_STAR_GLADIATOR2
|| (job >= JOB_RUNE_KNIGHT2 && job <= JOB_MECHANIC_T2) || (job >= JOB_BABY_RUNE2 && job <= JOB_BABY_MECHANIC2))
{ // Deny direct transformation into dummy jobs
clif_displaymessage(fd, msg_txt(sd,923)); //"You can not change to this job by command."
return 0;
@ -1072,8 +1073,8 @@ ACMD_FUNC(jobchange)
}
} else {
text = atcommand_help_string(command);
if (text)
clif_displaymessage(fd, text);
if (text)
clif_displaymessage(fd, text);
return -1;
}
@ -1220,7 +1221,9 @@ ACMD_FUNC(item)
nullpo_retr(-1, sd);
memset(item_name, '\0', sizeof(item_name));
if (!strcmpi(command+1,"itembound")) {
parent_cmd = atcommand_checkalias(command+1);
if (!strcmpi(parent_cmd,"itembound")) {
if (!message || !*message || (
sscanf(message, "\"%99[^\"]\" %d %d", item_name, &number, &bound) < 3 &&
sscanf(message, "%99s %d %d", item_name, &number, &bound) < 3))
@ -1296,7 +1299,9 @@ ACMD_FUNC(item2)
memset(item_name, '\0', sizeof(item_name));
if (!strcmpi(command+1,"itembound2")) {
parent_cmd = atcommand_checkalias(command+1);
if (!strcmpi(parent_cmd+1,"itembound2")) {
if (!message || !*message || (
sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 &&
sscanf(message, "%99s %d %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 ))
@ -2080,9 +2085,11 @@ ACMD_FUNC(monster)
if (battle_config.atc_spawn_quantity_limit && number > battle_config.atc_spawn_quantity_limit)
number = battle_config.atc_spawn_quantity_limit;
if (strcmp(command+1, "monstersmall") == 0)
parent_cmd = atcommand_checkalias(command+1);
if (strcmp(parent_cmd, "monstersmall") == 0)
size = SZ_MEDIUM; // This is just gorgeous [mkbu95]
else if (strcmp(command+1, "monsterbig") == 0)
else if (strcmp(parent_cmd, "monsterbig") == 0)
size = SZ_BIG;
else
size = SZ_SMALL;
@ -2153,7 +2160,9 @@ ACMD_FUNC(killmonster)
map_id = sd->bl.m;
}
drop_flag = strcmp(command+1, "killmonster2");
parent_cmd = atcommand_checkalias(command+1);
drop_flag = strcmp(parent_cmd, "killmonster2");
map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, -drop_flag);
@ -2885,11 +2894,12 @@ ACMD_FUNC(char_block)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
clif_displaymessage(fd, msg_txt(sd,1021)); // Please enter a player name (usage: @charblock/@block <char name>).
sprintf(atcmd_output, msg_txt(sd, 1021), command); // Please enter a player name (usage: %s <char name>).
clif_displaymessage(fd, atcmd_output);
return -1;
}
chrif_req_login_operation(sd->status.account_id, atcmd_player_name, CHRIF_OP_LOGIN_BLOCK, 0, 0, 0); // type: 1 - block
chrif_req_login_operation(sd->status.account_id, atcmd_player_name, CHRIF_OP_LOGIN_BLOCK, 0, 0, 0);
sprintf(atcmd_output, msg_txt(sd,88), "login"); // Sending request to %s server...
clif_displaymessage(fd, atcmd_output);
@ -2903,54 +2913,59 @@ ACMD_FUNC(char_block)
*------------------------------------------*/
ACMD_FUNC(char_ban)
{
char * modif_p;
char *modif_p, output[CHAT_SIZE_MAX];
int32 timediff = 0; //don't set this as uint as we may want to decrease banned time
int bantype = 0; //2=account block, 6=char specific
int bantype = 0;
nullpo_retr(-1, sd);
memset(atcmd_output, '\0', sizeof(atcmd_output));
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
bantype = strcmpi(command+1,"charban") ? CHRIF_OP_LOGIN_BAN : CHRIF_OP_BAN; //! FIXME this breaking alias recognition
parent_cmd = atcommand_checkalias(command+1);
if (strcmpi(parent_cmd,"charban") == 0)
bantype = CHRIF_OP_BAN;
else if (strcmpi(parent_cmd,"ban") == 0)
bantype = CHRIF_OP_LOGIN_BAN;
else
return -1;
if (!message || !*message || sscanf(message, "%255s %23[^\n]", atcmd_output, atcmd_player_name) < 2) {
clif_displaymessage(fd, msg_txt(sd,1022)); // Please enter ban time and a player name (usage: @charban/@ban/@banish/@charbanish <time> <char name>).
sprintf(output, msg_txt(sd,1022), command); // Please enter ban time and a player name (usage: %s <time> <char name>).
clif_displaymessage(fd, output);
return -1;
}
atcmd_output[sizeof(atcmd_output)-1] = '\0';
modif_p = atcmd_output;
timediff = (int32)solve_time(modif_p); //discard seconds
if (timediff == 0) { //allow negative ?
char output[256];
safesnprintf(output, sizeof(output), msg_txt(sd,85), bantype == CHRIF_OP_BAN ? "charban" : "ban", timediff); // Invalid time for %s command (time=%d)
safesnprintf(output, sizeof(output), msg_txt(sd,85), command, timediff); // Invalid time for %s command (time=%d)
clif_displaymessage(fd, output);
clif_displaymessage(fd, msg_txt(sd,702)); // Time parameter format is +/-<value> to alter. y/a = Year, m = Month, d/j = Day, h = Hour, n/mn = Minute, s = Second.
return -1;
}
if( timediff<0 && (
( bantype==CHRIF_OP_LOGIN_BAN && !pc_can_use_command(sd, "unban", COMMAND_ATCOMMAND) )
|| ( bantype==CHRIF_OP_BAN && !pc_can_use_command(sd, "charunban", COMMAND_ATCOMMAND)) )
)
if( timediff < 0 && (
(bantype == CHRIF_OP_LOGIN_BAN && !pc_can_use_command(sd, parent_cmd, COMMAND_ATCOMMAND))
|| (bantype == CHRIF_OP_BAN && !pc_can_use_command(sd, parent_cmd, COMMAND_ATCOMMAND))
))
{
clif_displaymessage(fd,msg_txt(sd,1023)); // You are not allowed to alter the time of a ban.
return -1;
}
if (bantype == CHRIF_OP_LOGIN_BAN)
chrif_req_login_operation(sd->status.account_id, atcmd_player_name, CHRIF_OP_LOGIN_BAN, timediff, 0, 0); // type: 2 - ban
else
chrif_req_charban(sd->status.account_id, atcmd_player_name,timediff);
{
char output[256];
safesnprintf(output, sizeof(output), msg_txt(sd,88), bantype == CHRIF_OP_BAN ? "char" : "login"); // Sending request to %s server...
clif_displaymessage(fd, output);
}
if (bantype == CHRIF_OP_BAN)
chrif_req_charban(sd->status.account_id, atcmd_player_name,timediff);
else
chrif_req_login_operation(sd->status.account_id, atcmd_player_name, bantype, timediff, 0, 0);
safesnprintf(output, sizeof(output), msg_txt(sd,88), bantype == CHRIF_OP_BAN ? "char" : "login"); // Sending request to %s server...
clif_displaymessage(fd, output);
return 0;
}
@ -2964,12 +2979,13 @@ ACMD_FUNC(char_unblock)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
clif_displaymessage(fd, msg_txt(sd,1024)); // Please enter a player name (usage: @charunblock <char name>).
sprintf(atcmd_output, msg_txt(sd, 1021), command); // Please enter a player name (usage: %s <char name>).
clif_displaymessage(fd, atcmd_output);
return -1;
}
// send answer to login server via char-server
chrif_req_login_operation(sd->status.account_id, atcmd_player_name, CHRIF_OP_LOGIN_UNBLOCK, 0, 0, 0); // type: 3 - unblock
chrif_req_login_operation(sd->status.account_id, atcmd_player_name, CHRIF_OP_LOGIN_UNBLOCK, 0, 0, 0);
sprintf(atcmd_output, msg_txt(sd,88), "login"); // Sending request to %s server...
clif_displaymessage(fd, atcmd_output);
@ -2986,18 +3002,27 @@ ACMD_FUNC(char_unban){
memset(atcmd_output, '\0', sizeof(atcmd_output));
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
unbantype = strcmpi(command+1,"charunban") ? CHRIF_OP_LOGIN_UNBAN : CHRIF_OP_UNBAN; //! FIXME this breaking alias recognition
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
if(unbantype==4) clif_displaymessage(fd, msg_txt(sd,1025)); // Please enter a player name (usage: @unblock <char name>).
else clif_displaymessage(fd, msg_txt(sd,435)); //Please enter a player name (usage: @charunban <char name>).
parent_cmd = atcommand_checkalias(command+1);
if (strcmpi(parent_cmd,"charunban") == 0)
unbantype = CHRIF_OP_UNBAN;
else if (strcmpi(parent_cmd,"unban") == 0)
unbantype = CHRIF_OP_LOGIN_UNBAN;
else
return -1;
}
if (unbantype == CHRIF_OP_LOGIN_UNBAN) // send answer to login server via char-server
chrif_req_login_operation(sd->status.account_id, atcmd_player_name, CHRIF_OP_LOGIN_UNBAN, 0, 0, 0); // type: 4 - unban
else //directly unban via char-serv
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
sprintf(atcmd_output, msg_txt(sd,435), command); // Please enter a player name (usage: %s <char name>).
clif_displaymessage(fd, atcmd_output);
return -1;
}
if (unbantype == CHRIF_OP_UNBAN)
chrif_req_charunban(sd->status.account_id,atcmd_player_name);
else
chrif_req_login_operation(sd->status.account_id, atcmd_player_name, unbantype, 0, 0, 0);
sprintf(atcmd_output, msg_txt(sd,88), unbantype == CHRIF_OP_UNBAN ? "char":"login"); // Sending request to %s server...
clif_displaymessage(fd, atcmd_output);
@ -8198,7 +8223,9 @@ ACMD_FUNC(cash)
return -1;
}
if( !strcmpi(command+1,"cash") )
parent_cmd = atcommand_checkalias(command+1);
if( !strcmpi(parent_cmd,"cash") )
{
if( value > 0 ) {
if( (ret=pc_getcash(sd, value, 0, LOG_TYPE_COMMAND)) >= 0){
@ -8263,9 +8290,11 @@ ACMD_FUNC(clone)
return 0;
}
if (strcmpi(command+1, "clone") == 0)
parent_cmd = atcommand_checkalias(command+1);
if (strcmpi(parent_cmd, "clone") == 0)
flag = 1;
else if (strcmpi(command+1, "slaveclone") == 0) {
else if (strcmpi(parent_cmd, "slaveclone") == 0) {
flag = 2;
if(pc_isdead(sd)){
clif_displaymessage(fd, msg_txt(sd,129+flag*2));
@ -8445,15 +8474,17 @@ ACMD_FUNC(itemlist)
nullpo_retr(-1, sd);
if( strcmp(command+1, "storagelist") == 0 ) {
parent_cmd = atcommand_checkalias(command+1);
if( strcmp(parent_cmd, "storagelist") == 0 ) {
location = "storage";
items = sd->status.storage.items;
size = sd->storage_size;
} else if( strcmp(command+1, "cartlist") == 0 ) {
} else if( strcmp(parent_cmd, "cartlist") == 0 ) {
location = "cart";
items = sd->status.cart;
size = MAX_CART;
} else if( strcmp(command+1, "itemlist") == 0 ) {
} else if( strcmp(parent_cmd, "itemlist") == 0 ) {
location = "inventory";
items = sd->status.inventory;
size = MAX_INVENTORY;
@ -9022,9 +9053,13 @@ ACMD_FUNC(set) {
}
ACMD_FUNC(addperm) {
int perm_size = ARRAYLENGTH(pc_g_permission_name);
bool add = (strcmpi(command+1, "addperm") == 0) ? true : false;
bool add;
int i;
parent_cmd = atcommand_checkalias(command+1);
add = (strcmpi(parent_cmd, "addperm") == 0) ? true : false;
if( !message || !*message ) {
sprintf(atcmd_output, msg_txt(sd,1378),command); // Usage: %s <permission_name>
clif_displaymessage(fd, atcmd_output);
@ -9580,7 +9615,7 @@ ACMD_FUNC(cloneequip) {
}
}
memset(atcmd_output, '\0', sizeof(atcmd_output));
sprintf(atcmd_output, msg_txt(sd, 738), "status");
sprintf(atcmd_output, msg_txt(sd, 738), "equip");
clif_displaymessage(fd, atcmd_output);
return 0;