diff options
author | momacabu <momacabu@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-11-27 21:53:07 +0000 |
---|---|---|
committer | momacabu <momacabu@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-11-27 21:53:07 +0000 |
commit | 19a9eb956b628d9e43e98491a2b2ebdc483b243f (patch) | |
tree | e3dc6fc9a05d2661c6208300f5c31a5460bb6708 /src/map/script.c | |
parent | 390b8d0b8eebfb8274df1244d3e378ccc0ddbfd5 (diff) | |
download | hercules-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/script.c')
-rw-r--r-- | src/map/script.c | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/src/map/script.c b/src/map/script.c index e1ae149b7..351d5d615 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -14233,7 +14233,7 @@ BUILDIN_FUNC(strpos) else i = 0; - if (strlen(needle) == 0) { + if (needle[0] == '\0') { script_pushint(st, -1); return 0; } @@ -17350,6 +17350,45 @@ BUILDIN_FUNC(getrandgroupitem) return 0; } +/* cleanmap <map_name>; + * cleanfloor <map_name, <x0>, <y0>, <x1>, <y1>; */ +static int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) +{ + nullpo_ret(bl); + map_clearflooritem(bl); + + return 0; +} + +BUILDIN_FUNC(cleanmap) +{ + const char *map; + int m, index; + short x0, y0, x1, y1; + + map = script_getstr(st, 2); + index = mapindex_name2id(map); + if (index) + m = map_mapindex2mapid(index); + + if ((script_lastdata(st) - 2) < 4) { + map_foreachinmap(atcommand_cleanfloor_sub, m, BL_ITEM); + } else { + x0 = script_getnum(st, 3); + y0 = script_getnum(st, 4); + x1 = script_getnum(st, 5); + y1 = script_getnum(st, 6); + if (x0 > 0 && y0 > 0 && x1 > 0 && y1 > 0) { + map_foreachinarea(atcommand_cleanfloor_sub, m, x0, y0, x1, y1, BL_ITEM); + } else { + ShowError("cleanarea: invalid coordinate defined!\n"); + return 1; + } + } + + return 0; +} + // declarations that were supposed to be exported from npc_chat.c #ifdef PCRE_SUPPORT @@ -17791,6 +17830,8 @@ struct script_function buildin_func[] = { BUILDIN_DEF(get_revision,""), BUILDIN_DEF(freeloop,"i"), BUILDIN_DEF(getrandgroupitem, "ii"), + BUILDIN_DEF(cleanmap, "s"), + BUILDIN_DEF2(cleanmap, "cleanarea", "siiii"), /** * @commands (script based) **/ |