summaryrefslogtreecommitdiff
path: root/src/map/script.c
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2018-11-13 15:05:05 +0100
committerGitHub <noreply@github.com>2018-11-13 15:05:05 +0100
commitbb2858fda55ca4ca3144232da9b837d9551aafc0 (patch)
tree05f4f3908f6246b902e6d4a13894f20ac2990cf8 /src/map/script.c
parent26efcebad2f3d316013cc1458925cd0ca70cb347 (diff)
parentf3af2d37a90a83bbec25c15e59c29e0f9802daca (diff)
downloadhercules-bb2858fda55ca4ca3144232da9b837d9551aafc0.tar.gz
hercules-bb2858fda55ca4ca3144232da9b837d9551aafc0.tar.bz2
hercules-bb2858fda55ca4ca3144232da9b837d9551aafc0.tar.xz
hercules-bb2858fda55ca4ca3144232da9b837d9551aafc0.zip
Merge pull request #2105 from Helianthella/getunits3
break the loop in buildin_getunits when the max is reached
Diffstat (limited to 'src/map/script.c')
-rw-r--r--src/map/script.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/src/map/script.c b/src/map/script.c
index d1839676f..8aceb0532 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -11300,7 +11300,7 @@ static int buildin_getunits_sub(struct block_list *bl, va_list ap)
(const void *)h64BPTRSIZE(bl->id), ref);
(*count)++;
- return 0;
+ return 1;
}
static int buildin_getunits_sub_pc(struct map_session_data *sd, va_list ap)
@@ -11372,18 +11372,10 @@ static BUILDIN(getunits)
int16 x2 = script_getnum(st, 8);
int16 y2 = script_getnum(st, 9);
- // FIXME: map_foreachinarea does NOT stop iterating when the callback
- // function returns -1. we still limit the array size, but
- // this doesn't break the loop. We need a foreach function
- // that behaves like map_foreachiddb, but for areas
- map->foreachinarea(buildin_getunits_sub, m, x1, y1, x2, y2, type,
+ map->forcountinarea(buildin_getunits_sub, m, x1, y1, x2, y2, limit, type,
st, sd, id, start, &count, limit, name, ref, type);
} else {
- // FIXME: map_foreachinmap does NOT stop iterating when the callback
- // function returns -1. we still limit the array size, but
- // this doesn't break the loop. We need a foreach function
- // that behaves like map_foreachiddb, but for maps
- map->foreachinmap(buildin_getunits_sub, m, type,
+ map->forcountinmap(buildin_getunits_sub, m, limit, type,
st, sd, id, start, &count, limit, name, ref, type);
}
} else {