summaryrefslogtreecommitdiff
path: root/src/map/atcommand.c
diff options
context:
space:
mode:
authormomacabu <momacabu@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-11-27 21:53:07 +0000
committermomacabu <momacabu@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-11-27 21:53:07 +0000
commit19a9eb956b628d9e43e98491a2b2ebdc483b243f (patch)
treee3dc6fc9a05d2661c6208300f5c31a5460bb6708 /src/map/atcommand.c
parent390b8d0b8eebfb8274df1244d3e378ccc0ddbfd5 (diff)
downloadhercules-19a9eb956b628d9e43e98491a2b2ebdc483b243f.tar.gz
hercules-19a9eb956b628d9e43e98491a2b2ebdc483b243f.tar.bz2
hercules-19a9eb956b628d9e43e98491a2b2ebdc483b243f.tar.xz
hercules-19a9eb956b628d9e43e98491a2b2ebdc483b243f.zip
Applied suggestion in tid:74775. Added script command cleanmap and cleanarea script commands. Also modified @cleanmap to properly clean the entire map and added @cleanarea to clean an specified area. A documentation will be done in shortly.
Automagically copy files from import-tmpl to import folder on Windows after building the project (only works with rAthena-10 and rAthena-12) (tid:74635). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16971 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/atcommand.c')
-rw-r--r--src/map/atcommand.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 33a389db9..395cb1cba 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -6100,8 +6100,9 @@ ACMD_FUNC(mobsearch)
/*==========================================
* @cleanmap - cleans items on the ground
+ * @cleanarea - cleans items on the ground within an specified area
*------------------------------------------*/
-static int atcommand_cleanmap_sub(struct block_list *bl, va_list ap)
+static int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap)
{
nullpo_ret(bl);
map_clearflooritem(bl);
@@ -6111,10 +6112,25 @@ static int atcommand_cleanmap_sub(struct block_list *bl, va_list ap)
ACMD_FUNC(cleanmap)
{
- map_foreachinarea(atcommand_cleanmap_sub, sd->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);
+ map_foreachinmap(atcommand_cleanfloor_sub, sd->bl.m, BL_ITEM);
+ clif_displaymessage(fd, msg_txt(1221)); // All dropped items have been cleaned up.
+ return 0;
+}
+
+ACMD_FUNC(cleanarea)
+{
+ int x0 = 0, y0 = 0, x1 = 0, y1 = 0;
+
+ if (!message || !*message || sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) < 1) {
+ map_foreachinarea(atcommand_cleanfloor_sub, sd->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) {
+ 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) {
+ map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM);
+ }
+
clif_displaymessage(fd, msg_txt(1221)); // All dropped items have been cleaned up.
return 0;
}
@@ -8931,6 +8947,7 @@ void atcommand_basecommands(void)
ACMD_DEF(misceffect),
ACMD_DEF(mobsearch),
ACMD_DEF(cleanmap),
+ ACMD_DEF(cleanarea),
ACMD_DEF(npctalk),
ACMD_DEF(pettalk),
ACMD_DEF(users),