diff --git a/conf/msg_conf/map_msg.conf b/conf/msg_conf/map_msg.conf index 07501ee83d..e00f5ee326 100644 --- a/conf/msg_conf/map_msg.conf +++ b/conf/msg_conf/map_msg.conf @@ -423,7 +423,7 @@ 404: War of Emperium SE is currently in progress. 405: War of Emperium SE has been ended. 406: War of Emperium SE is currently not in progress. -//407 free +407: Invalid amount of parameters. //chrif related 408: Need disconnection to perform change-sex request... 409: Your sex has been changed (need disconnection by the server)... diff --git a/conf/msg_conf/map_msg_chn.conf b/conf/msg_conf/map_msg_chn.conf index e1a23aa0c0..c67ff30058 100644 --- a/conf/msg_conf/map_msg_chn.conf +++ b/conf/msg_conf/map_msg_chn.conf @@ -412,7 +412,7 @@ 404: 攻城戰第二版正在進行中 405: 攻城戰第二版結束了 406: 攻城戰第二版尚未開始 -//407 free +407: Invalid amount of parameters. //chrif related 408: 需要斷線以更改性別 409: 你的性別已更改(你將會被伺服器中斷連線) diff --git a/conf/msg_conf/map_msg_frn.conf b/conf/msg_conf/map_msg_frn.conf index ddb1537624..f870714775 100644 --- a/conf/msg_conf/map_msg_frn.conf +++ b/conf/msg_conf/map_msg_frn.conf @@ -420,7 +420,7 @@ 404: War of Emperium SE en cours. 405: War of Emperium SE est termine. 406: War of Emperium SE n'est pas en cours. -//407 free +407: Invalid amount of parameters. //chrif related 408: Besoin de vous dconnecter pour effectuer la demande de changement de sexe... 409: Changement de sexe (le serveur a besoin de vous dconnecter)... diff --git a/conf/msg_conf/map_msg_grm.conf b/conf/msg_conf/map_msg_grm.conf index 1dcfa7ec91..b9aa9cfb70 100644 --- a/conf/msg_conf/map_msg_grm.conf +++ b/conf/msg_conf/map_msg_grm.conf @@ -403,7 +403,7 @@ 404: War of Emperium SE ist derzeitig im Gange. 405: War of Emperium SE wurde Beendet. 406: War of Emperium SE ist derzeitig nicht im Gange. - +407: Invalid amount of parameters. // Homunculus messages 450: Du hast bereitz ein Homunculus diff --git a/conf/msg_conf/map_msg_idn.conf b/conf/msg_conf/map_msg_idn.conf index 7171feceec..128a3fae2b 100644 --- a/conf/msg_conf/map_msg_idn.conf +++ b/conf/msg_conf/map_msg_idn.conf @@ -423,7 +423,7 @@ 404: War of Emperium SE saat ini sedang berjalan. 405: War of Emperium SE telah dimulai. 406: War of Emperium SE saat ini sedang tidak berjalan. -//407 kosong +407: Invalid amount of parameters. //berkaitan dengan chrif 408: Dibutuhkan pemutusan koneksi untuk melakukan permintaan ubah jenis kelamin ... 409: Jenis kelaminmu telah diganti (membutuhkan pemutusan koneksi oleh server) ... diff --git a/conf/msg_conf/map_msg_por.conf b/conf/msg_conf/map_msg_por.conf index 2f4f9a6cc6..722977e3ba 100644 --- a/conf/msg_conf/map_msg_por.conf +++ b/conf/msg_conf/map_msg_por.conf @@ -410,7 +410,7 @@ 404: A Guerra do Emperium SE j est em progresso. 405: A Guerra do Emperium SE terminou! 406: A Guerra do Emperium SE ainda no foi iniciada. -//407 livre +407: Invalid amount of parameters. //Mensagens relacionadas ao chrif 408: preciso desconectar-se para que o pedido de mudana de sexo seja processado... 409: O seu sexo foi alterado ( preciso desconectar-se do servidor)... diff --git a/conf/msg_conf/map_msg_rus.conf b/conf/msg_conf/map_msg_rus.conf index 36a8d5faa7..cc01c88fb7 100644 --- a/conf/msg_conf/map_msg_rus.conf +++ b/conf/msg_conf/map_msg_rus.conf @@ -420,7 +420,7 @@ 404: 2.0 . 405: 2.0 . 406: 2.0 . -//407 +407: Invalid amount of parameters. //chrif related 408: ... 409: ( )... diff --git a/conf/msg_conf/map_msg_spn.conf b/conf/msg_conf/map_msg_spn.conf index c517024bd8..cff756c3bd 100644 --- a/conf/msg_conf/map_msg_spn.conf +++ b/conf/msg_conf/map_msg_spn.conf @@ -411,7 +411,7 @@ 404: Hay una Guerra del Emperium de la2 edicin en marcha. 405: Ha finalizado la Guerra del Emperium de la 2 edicin. 406: No hay ninguna Guerra del Emperium de la 2 edicin en marcha. -//407 vaco +407: Invalid amount of parameters. //Mensajes de chrif 408: Necesitas desconectarte para realizar el cambio de sexo. 409: Has cambiado de sexo (necesitas desconectarte y volver a entrar) diff --git a/conf/msg_conf/map_msg_tha.conf b/conf/msg_conf/map_msg_tha.conf index 16c58f5d1a..d0f39fad2e 100644 --- a/conf/msg_conf/map_msg_tha.conf +++ b/conf/msg_conf/map_msg_tha.conf @@ -418,7 +418,7 @@ 404: War of Emperium SE ѧӧҹ㹢й. 405: War of Emperium SE 騺ŧ. 406: War of Emperium SE ӧҹ㹢й. -//407 free +407: Invalid amount of parameters. //chrif related 408: ͧѴ㹡ôԹâŧ ... 409: سŧº (ͧѴͨҡ)... diff --git a/src/char/char.c b/src/char/char.c index 2bdef31a85..594a8839f6 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -2631,9 +2631,11 @@ bool char_config_read(const char* cfgName, bool normal){ charserv_config.save_log = config_switch(w2); } else if (strcmpi(w1, "start_point") == 0) { char map[MAP_NAME_LENGTH_EXT]; - int x, y; - if (sscanf(w2, "%15[^,],%d,%d", map, &x, &y) < 3) + short x, y; + if (sscanf(w2, "%15[^,],%6hd,%6hd", map, &x, &y) < 3){ + ShowWarning( "Specified start_point has an invalid format.\n" ); continue; + } charserv_config.start_point.map = mapindex_name2id(map); if (!charserv_config.start_point.map) ShowError("Specified start_point %s not found in map-index cache.\n", map); diff --git a/src/common/core.c b/src/common/core.c index 8180059382..78900db392 100644 --- a/src/common/core.c +++ b/src/common/core.c @@ -218,7 +218,7 @@ const char* get_svn_revision(void) { // XML File format while (fgets(line,sizeof(line),fp)) if (strstr(line,"revision=")) break; - if (sscanf(line," %*[^\"]\"%d%*[^\n]", &rev) == 1) { + if (sscanf(line," %*[^\"]\"%11d%*[^\n]", &rev) == 1) { snprintf(svn_version_buffer, sizeof(svn_version_buffer), "%d", rev); } } diff --git a/src/map/atcommand.c b/src/map/atcommand.c index d7e318a1ed..1fd370dbaa 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -140,8 +140,8 @@ ACMD_FUNC(send) int len=0,type; // read message type as hex number (without the 0x) if(!message || !*message || - !((sscanf(message, "len %x", &type)==1 && (len=1)) - || sscanf(message, "%x", &type)==1) ) + !((sscanf(message, "len %8x", &type)==1 && (len=1)) + || sscanf(message, "%8x", &type)==1) ) { int i; for (i = 900; i <= 903; ++i) @@ -173,7 +173,7 @@ ACMD_FUNC(send) #define GET_VALUE(p,num) \ {\ - if(sscanf((p), "x%lx", &(num)) < 1 && sscanf((p), "%ld ", &(num)) < 1){\ + if(sscanf((p), "x%16lx", &(num)) < 1 && sscanf((p), "%20ld ", &(num)) < 1){\ PARSE_ERROR("Invalid number in:",(p));\ return -1;\ }\ @@ -449,8 +449,8 @@ ACMD_FUNC(mapmove) memset(map_name, '\0', sizeof(map_name)); if (!message || !*message || - (sscanf(message, "%15s %hd %hd", map_name, &x, &y) < 3 && - sscanf(message, "%15[^,],%hd,%hd", map_name, &x, &y) < 1)) { + (sscanf(message, "%15s %6hd %6hd", map_name, &x, &y) < 3 && + sscanf(message, "%15[^,],%6hd,%6hd", map_name, &x, &y) < 1)) { clif_displaymessage(fd, msg_txt(sd,909)); // Please enter a map (usage: @warp/@rura/@mapmove ). return -1; } @@ -577,7 +577,10 @@ ACMD_FUNC(jump) memset(atcmd_output, '\0', sizeof(atcmd_output)); - sscanf(message, "%hd %hd", &x, &y); + if (sscanf(message, "%6hd %6hd", &x, &y) != 2) { + clif_displaymessage(fd, msg_txt(sd,407)); + return -1; + } if (map[sd->bl.m].flag.noteleport && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif_displaymessage(fd, msg_txt(sd,248)); // You are not authorized to warp from your current map. @@ -844,13 +847,13 @@ ACMD_FUNC(load) *------------------------------------------*/ ACMD_FUNC(speed) { - int speed; + short speed; nullpo_retr(-1, sd); memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &speed) < 1) { + if (!message || !*message || sscanf(message, "%6hd", &speed) < 1) { sprintf(atcmd_output, msg_txt(sd,918), MIN_WALK_SPEED, MAX_WALK_SPEED); // Please enter a speed value (usage: @speed <%d-%d>). clif_displaymessage(fd, atcmd_output); return -1; @@ -934,7 +937,7 @@ ACMD_FUNC(option) int param1 = 0, param2 = 0, param3 = 0; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d %d %d", ¶m1, ¶m2, ¶m3) < 1 || param1 < 0 || param2 < 0 || param3 < 0) + if (!message || !*message || sscanf(message, "%11d %11d %11d", ¶m1, ¶m2, ¶m3) < 1 || param1 < 0 || param2 < 0 || param3 < 0) {// failed to match the parameters so inform the user of the options const char* text; @@ -1012,7 +1015,7 @@ ACMD_FUNC(jobchange) const char* text; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d %d", &job, &upper) < 1) { + if (!message || !*message || sscanf(message, "%11d %11d", &job, &upper) < 1) { int i; bool found = false; @@ -1119,7 +1122,7 @@ ACMD_FUNC(kami) else intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, (*(command + 5) == 'b' || *(command + 5) == 'B') ? BC_BLUE : BC_DEFAULT); } else { - if(!message || !*message || (sscanf(message, "%lx %199[^\n]", &color, atcmd_output) < 2)) { + if(!message || !*message || (sscanf(message, "%20lx %199[^\n]", &color, atcmd_output) < 2)) { clif_displaymessage(fd, msg_txt(sd,981)); // Please enter color and message (usage: @kamic ). return -1; } @@ -1141,7 +1144,10 @@ ACMD_FUNC(heal) int hp = 0, sp = 0; // [Valaris] thanks to fov nullpo_retr(-1, sd); - sscanf(message, "%d %d", &hp, &sp); + if (sscanf(message, "%11d %11d", &hp, &sp) != 2) { + clif_displaymessage(fd, msg_txt(sd,407)); + return -1; + } // some overflow checks if( hp == INT_MIN ) hp++; @@ -1212,8 +1218,8 @@ ACMD_FUNC(item) 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)) + sscanf(message, "\"%99[^\"]\" %11d %11d", item_name, &number, &bound) < 3 && + sscanf(message, "%99s %11d %11d", item_name, &number, &bound) < 3)) { clif_displaymessage(fd, msg_txt(sd,295)); // Please enter an item name or ID (usage: @item ). clif_displaymessage(fd, msg_txt(sd,298)); // Invalid bound type @@ -1224,8 +1230,8 @@ ACMD_FUNC(item) return -1; } } else if (!message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d", item_name, &number) < 1 && - sscanf(message, "%99s %d", item_name, &number) < 1 + sscanf(message, "\"%99[^\"]\" %11d", item_name, &number) < 1 && + sscanf(message, "%99s %11d", item_name, &number) < 1 )) { clif_displaymessage(fd, msg_txt(sd,983)); // Please enter an item name or ID (usage: @item ). return -1; @@ -1289,8 +1295,8 @@ ACMD_FUNC(item2) 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 )) + sscanf(message, "\"%99[^\"]\" %11d %11d %11d %11d %11d %11d %11d %11d %11d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 && + sscanf(message, "%99s %11d %11d %11d %11d %11d %11d %11d %11d %11d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 )) { clif_displaymessage(fd, msg_txt(sd,296)); // Please enter all parameters (usage: @item2 clif_displaymessage(fd, msg_txt(sd,297)); // ). @@ -1302,8 +1308,8 @@ ACMD_FUNC(item2) return -1; } } else if ( !message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 && - sscanf(message, "%99s %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 + sscanf(message, "\"%99[^\"]\" %11d %11d %11d %11d %11d %11d %11d %11d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 && + sscanf(message, "%99s %11d %11d %11d %11d %11d %11d %11d %11d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 )) { clif_displaymessage(fd, msg_txt(sd,984)); // Please enter all parameters (usage: @item2 clif_displaymessage(fd, msg_txt(sd,985)); // ). @@ -1704,7 +1710,7 @@ ACMD_FUNC(model) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d %d %d", &hair_style, &hair_color, &cloth_color) < 1) { + if (!message || !*message || sscanf(message, "%11d %11d %11d", &hair_style, &hair_color, &cloth_color) < 1) { sprintf(atcmd_output, msg_txt(sd,991), // Please enter at least one value (usage: @model ). MIN_HAIR_STYLE, MAX_HAIR_STYLE, MIN_HAIR_COLOR, MAX_HAIR_COLOR, MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); clif_displaymessage(fd, atcmd_output); @@ -1736,7 +1742,7 @@ ACMD_FUNC(dye) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &cloth_color) < 1) { + if (!message || !*message || sscanf(message, "%11d", &cloth_color) < 1) { sprintf(atcmd_output, msg_txt(sd,992), MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); // Please enter a clothes color (usage: @dye/@ccolor ). clif_displaymessage(fd, atcmd_output); return -1; @@ -1763,7 +1769,7 @@ ACMD_FUNC(hair_style) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &hair_style) < 1) { + if (!message || !*message || sscanf(message, "%11d", &hair_style) < 1) { sprintf(atcmd_output, msg_txt(sd,993), MIN_HAIR_STYLE, MAX_HAIR_STYLE); // Please enter a hair style (usage: @hairstyle/@hstyle ). clif_displaymessage(fd, atcmd_output); return -1; @@ -1790,7 +1796,7 @@ ACMD_FUNC(hair_color) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &hair_color) < 1) { + if (!message || !*message || sscanf(message, "%11d", &hair_color) < 1) { sprintf(atcmd_output, msg_txt(sd,994), MIN_HAIR_COLOR, MAX_HAIR_COLOR); // Please enter a hair color (usage: @haircolor/@hcolor ). clif_displaymessage(fd, atcmd_output); return -1; @@ -1815,7 +1821,6 @@ ACMD_FUNC(go) int i; int town; char map_name[MAP_NAME_LENGTH]; - int16 m; const struct { char map[MAP_NAME_LENGTH]; @@ -1984,7 +1989,7 @@ ACMD_FUNC(go) if (town >= 0 && town < ARRAYLENGTH(data)) { - m = map_mapname2mapid(data[town].map); + int16 m = map_mapname2mapid(data[town].map); if (m >= 0 && map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif_displaymessage(fd, msg_txt(sd,247)); return -1; @@ -2031,14 +2036,14 @@ ACMD_FUNC(monster) clif_displaymessage(fd, msg_txt(sd,80)); // Give the display name or monster name/id please. return -1; } - if (sscanf(message, "\"%23[^\"]\" %23s %d", name, monster, &number) > 1 || - sscanf(message, "%23s \"%23[^\"]\" %d", monster, name, &number) > 1) { + if (sscanf(message, "\"%23[^\"]\" %23s %11d", name, monster, &number) > 1 || + sscanf(message, "%23s \"%23[^\"]\" %11d", monster, name, &number) > 1) { //All data can be left as it is. - } else if ((count=sscanf(message, "%23s %d %23s", monster, &number, name)) > 1) { + } else if ((count=sscanf(message, "%23s %11d %23s", monster, &number, name)) > 1) { //Here, it is possible name was not given and we are using monster for it. if (count < 3) //Blank mob's name. name[0] = '\0'; - } else if (sscanf(message, "%23s %23s %d", name, monster, &number) > 1) { + } else if (sscanf(message, "%23s %23s %11d", name, monster, &number) > 1) { //All data can be left as it is. } else if (sscanf(message, "%23s", monster) > 0) { //As before, name may be already filled. @@ -2168,7 +2173,7 @@ ACMD_FUNC(refine) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d %d", &position, &refine) < 2) { + if (!message || !*message || sscanf(message, "%11d %11d", &position, &refine) < 2) { clif_displaymessage(fd, msg_txt(sd,996)); // Please enter a position and an amount (usage: @refine <+/- amount>). sprintf(atcmd_output, msg_txt(sd,997), EQP_HEAD_LOW); // %d: Lower Headgear clif_displaymessage(fd, atcmd_output); @@ -2250,8 +2255,8 @@ ACMD_FUNC(produce) memset(item_name, '\0', sizeof(item_name)); if (!message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d %d", item_name, &attribute, &star) < 1 && - sscanf(message, "%99s %d %d", item_name, &attribute, &star) < 1 + sscanf(message, "\"%99[^\"]\" %11d %11d", item_name, &attribute, &star) < 1 && + sscanf(message, "%99s %11d %11d", item_name, &attribute, &star) < 1 )) { clif_displaymessage(fd, msg_txt(sd,1007)); // Please enter at least one item name/ID (usage: @produce <# of very's>). return -1; @@ -2304,7 +2309,7 @@ ACMD_FUNC(memo) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if( !message || !*message || sscanf(message, "%d", &position) < 1 ) + if( !message || !*message || sscanf(message, "%11d", &position) < 1 ) { int i; clif_displaymessage(sd->fd, msg_txt(sd,668)); @@ -2362,7 +2367,7 @@ ACMD_FUNC(displaystatus) int i, type, flag, tick, val1 = 0, val2 = 0, val3 = 0; nullpo_retr(-1, sd); - if (!message || !*message || (i = sscanf(message, "%d %d %d %d %d %d", &type, &flag, &tick, &val1, &val2, &val3)) < 1) { + if (!message || !*message || (i = sscanf(message, "%11d %11d %11d %11d %11d %11d", &type, &flag, &tick, &val1, &val2, &val3)) < 1) { clif_displaymessage(fd, msg_txt(sd,1009)); // Please enter a status type/flag (usage: @displaystatus { { {}}}). return -1; } @@ -2511,7 +2516,7 @@ ACMD_FUNC(param) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) { + if (!message || !*message || sscanf(message, "%11d", &value) < 1 || value == 0) { clif_displaymessage(fd, msg_txt(sd,1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>). return -1; } @@ -2583,7 +2588,7 @@ ACMD_FUNC(stat_all) status[4] = &sd->status.dex; status[5] = &sd->status.luk; - if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) { + if (!message || !*message || sscanf(message, "%11d", &value) < 1 || value == 0) { max_status[0] = pc_maxparameter(sd,PARAM_STR); max_status[1] = pc_maxparameter(sd,PARAM_AGI); max_status[2] = pc_maxparameter(sd,PARAM_VIT); @@ -2645,7 +2650,7 @@ ACMD_FUNC(guildlevelup) { struct guild *guild_info; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d", &level) < 1 || level == 0) { + if (!message || !*message || sscanf(message, "%11d", &level) < 1 || level == 0) { clif_displaymessage(fd, msg_txt(sd,1014)); // Please enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>). return -1; } @@ -3887,7 +3892,7 @@ ACMD_FUNC(mapinfo) { memset(mapname, '\0', sizeof(mapname)); memset(direction, '\0', sizeof(direction)); - sscanf(message, "%d %23[^\n]", &list, mapname); + sscanf(message, "%11d %23[^\n]", &list, mapname); if (list < 0 || list > 3) { clif_displaymessage(fd, msg_txt(sd,1038)); // Please enter at least one valid list number (usage: @mapinfo <0-3> ). @@ -5134,7 +5139,7 @@ ACMD_FUNC(effect) int type = 0, flag = 0; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d", &type) < 1) { + if (!message || !*message || sscanf(message, "%11d", &type) < 1) { clif_displaymessage(fd, msg_txt(sd,1152)); // Please enter an effect number (usage: @effect ). return -1; } @@ -5210,12 +5215,12 @@ ACMD_FUNC(skilloff) *------------------------------------------*/ ACMD_FUNC(npcmove) { - int x = 0, y = 0, m; + short x = 0, y = 0, m; struct npc_data *nd = 0; nullpo_retr(-1, sd); memset(atcmd_player_name, '\0', sizeof atcmd_player_name); - if (!message || !*message || sscanf(message, "%d %d %23[^\n]", &x, &y, atcmd_player_name) < 3) { + if (!message || !*message || sscanf(message, "%6hd %6hd %23[^\n]", &x, &y, atcmd_player_name) < 3) { clif_displaymessage(fd, msg_txt(sd,1153)); // Usage: @npcmove return -1; } @@ -5248,15 +5253,15 @@ ACMD_FUNC(npcmove) *------------------------------------------*/ ACMD_FUNC(addwarp) { - char mapname[32], warpname[NAME_LENGTH+1]; - int x,y; + char mapname[32], warpname[MAP_NAME_LENGTH_EXT]; + short x,y; unsigned short m; struct npc_data* nd; nullpo_retr(-1, sd); memset(warpname, '\0', sizeof(warpname)); - if (!message || !*message || sscanf(message, "%31s %d %d %23[^\n]", mapname, &x, &y, warpname) < 4) { + if (!message || !*message || sscanf(message, "%31s %6hd %6hd %23[^\n]", mapname, &x, &y, warpname) < 4) { clif_displaymessage(fd, msg_txt(sd,1156)); // Usage: @addwarp return -1; } @@ -5543,7 +5548,7 @@ ACMD_FUNC(useskill) char target[100]; nullpo_retr(-1, sd); - if(!message || !*message || sscanf(message, "%hu %hu %23[^\n]", &skill_id, &skill_lv, target) != 3) { + if(!message || !*message || sscanf(message, "%6hu %6hu %23[^\n]", &skill_id, &skill_lv, target) != 3) { clif_displaymessage(fd, msg_txt(sd,1165)); // Usage: @useskill return -1; } @@ -5587,7 +5592,7 @@ ACMD_FUNC(displayskill) uint16 skill_lv = 1; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%hu %hu", &skill_id, &skill_lv) < 1) + if (!message || !*message || sscanf(message, "%6hu %6hu", &skill_id, &skill_lv) < 1) { clif_displaymessage(fd, msg_txt(sd,1166)); // Usage: @displayskill {} return -1; @@ -5613,7 +5618,7 @@ ACMD_FUNC(skilltree) struct skill_tree_entry *ent; nullpo_retr(-1, sd); - if(!message || !*message || sscanf(message, "%hu %23[^\r\n]", &skill_id, target) != 2) { + if(!message || !*message || sscanf(message, "%6hu %23[^\r\n]", &skill_id, target) != 2) { clif_displaymessage(fd, msg_txt(sd,1167)); // Usage: @skilltree return -1; } @@ -5737,7 +5742,7 @@ ACMD_FUNC(changelook) int i, j = 0, k = 0; int pos[7] = { LOOK_HEAD_TOP,LOOK_HEAD_MID,LOOK_HEAD_BOTTOM,LOOK_WEAPON,LOOK_SHIELD,LOOK_SHOES,LOOK_ROBE }; - if((i = sscanf(message, "%d %d", &j, &k)) < 1) { + if((i = sscanf(message, "%11d %11d", &j, &k)) < 1) { clif_displaymessage(fd, msg_txt(sd,1177)); // Usage: @changelook {} clif_displaymessage(fd, msg_txt(sd,1178)); // Position: 1-Top 2-Middle 3-Bottom 4-Weapon 5-Shield 6-Shoes 7-Robe return -1; @@ -6046,7 +6051,7 @@ ACMD_FUNC(autolootitem) *------------------------------------------*/ ACMD_FUNC(autoloottype) { - uint8 i = 0, action = 3; // 1=add, 2=remove, 3=help+list (default), 4=reset + uint8 action = 3; // 1=add, 2=remove, 3=help+list (default), 4=reset enum item_types type = -1; int ITEM_MAX = 1533; @@ -6120,6 +6125,7 @@ ACMD_FUNC(autoloottype) if (sd->state.autoloottype == 0) clif_displaymessage(fd, msg_txt(sd,1489)); // Your autoloottype list is empty. else { + uint8 i = 0; clif_displaymessage(fd, msg_txt(sd,1490)); // Item types on your autoloottype list: while (i < IT_MAX) { if (sd->state.autoloottype&(1<bl.m, sd->bl.x - (AREA_SIZE * 2), sd->bl.y - (AREA_SIZE * 2), sd->bl.x + (AREA_SIZE * 2), sd->bl.y + (AREA_SIZE * 2), BL_ITEM); } - else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 1) { + else if (sscanf(message, "%6hd %6hd %6hd %6hd", &x0, &y0, &x1, &y1) == 1) { map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, sd->bl.x - x0, sd->bl.y - x0, sd->bl.x + x0, sd->bl.y + x0, BL_ITEM); } - else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 4) { + else if (sscanf(message, "%6hd %6hd %6hd %6hd", &x0, &y0, &x1, &y1) == 4) { map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM); } @@ -6448,7 +6454,7 @@ ACMD_FUNC(npctalk) } } else { - if (!message || !*message || sscanf(message, "%lx %23[^,], %99[^\n]", &color, name, mes) < 3) { + if (!message || !*message || sscanf(message, "%16lx %23[^,], %99[^\n]", &color, name, mes) < 3) { clif_displaymessage(fd, msg_txt(sd,1223)); // Please enter the correct parameters (usage: @npctalkc , ). return -1; } @@ -6601,7 +6607,7 @@ ACMD_FUNC(summon) nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%23s %d", name, &duration) < 1) + if (!message || !*message || sscanf(message, "%23s %11d", name, &duration) < 1) { clif_displaymessage(fd, msg_txt(sd,1225)); // Please enter a monster name (usage: @summon {duration}). return -1; @@ -6647,7 +6653,7 @@ ACMD_FUNC(adjgroup) int new_group = 0; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d", &new_group) != 1) { + if (!message || !*message || sscanf(message, "%11d", &new_group) != 1) { clif_displaymessage(fd, msg_txt(sd,1226)); // Usage: @adjgroup return -1; } @@ -6792,7 +6798,7 @@ ACMD_FUNC(mute) int manner; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d %23[^\n]", &manner, atcmd_player_name) < 1) { + if (!message || !*message || sscanf(message, "%11d %23[^\n]", &manner, atcmd_player_name) < 1) { clif_displaymessage(fd, msg_txt(sd,1237)); // Usage: @mute