Updated instance_warpall script command (#7591)
* Added a parameter to the instance_warpall script command to prevent dead players from being warped Thanks to @aleos89, @Lemongrass3110 and @vstumpf for the reviews!
This commit is contained in:
@@ -21528,6 +21528,7 @@ static int buildin_instance_warpall_sub(struct block_list *bl, va_list ap)
|
||||
int x = va_arg(ap,int);
|
||||
int y = va_arg(ap,int);
|
||||
int instance_id = va_arg(ap, int);
|
||||
int flag = va_arg(ap, int);
|
||||
map_session_data *sd;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
@@ -21537,6 +21538,9 @@ static int buildin_instance_warpall_sub(struct block_list *bl, va_list ap)
|
||||
|
||||
sd = (TBL_PC *)bl;
|
||||
|
||||
if ((flag & IWA_NOTDEAD) != 0 && pc_isdead(sd))
|
||||
return 0;
|
||||
|
||||
std::shared_ptr<s_instance_data> idata = util::umap_find(instances, instance_id);
|
||||
|
||||
if (!idata)
|
||||
@@ -21572,19 +21576,18 @@ BUILDIN_FUNC(instance_warpall)
|
||||
{
|
||||
int16 m;
|
||||
int instance_id;
|
||||
const char *mapn;
|
||||
int x, y;
|
||||
|
||||
mapn = script_getstr(st,2);
|
||||
x = script_getnum(st,3);
|
||||
y = script_getnum(st,4);
|
||||
const char *mapn = script_getstr(st,2);
|
||||
|
||||
if( script_hasdata(st,5) )
|
||||
instance_id = script_getnum(st,5);
|
||||
else
|
||||
instance_id = script_instancegetid(st, IM_PARTY);
|
||||
|
||||
if( instance_id <= 0 || (m = map_mapname2mapid(mapn)) < 0 || (m = instance_mapid(m, instance_id)) < 0)
|
||||
if( instance_id <= 0 || (m = map_mapname2mapid(mapn)) < 0 || (m = instance_mapid(m, instance_id)) < 0) {
|
||||
ShowError("buildin_instance_warpall: Instance map for instance ID %d is not found.\n", instance_id);
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
std::shared_ptr<s_instance_data> idata = util::umap_find(instances, instance_id);
|
||||
|
||||
@@ -21593,8 +21596,15 @@ BUILDIN_FUNC(instance_warpall)
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
int flag = IWA_NONE;
|
||||
int x = script_getnum(st,3);
|
||||
int y = script_getnum(st,4);
|
||||
|
||||
if( script_hasdata(st, 6) )
|
||||
flag = script_getnum(st, 6);
|
||||
|
||||
for(const auto &it : idata->map)
|
||||
map_foreachinmap(buildin_instance_warpall_sub, it.m, BL_PC, map_id2index(m), x, y, instance_id);
|
||||
map_foreachinmap(buildin_instance_warpall_sub, it.m, BL_PC, map_id2index(m), x, y, instance_id, flag);
|
||||
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
@@ -27447,7 +27457,7 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(instance_enter,"s????"),
|
||||
BUILDIN_DEF(instance_npcname,"s?"),
|
||||
BUILDIN_DEF(instance_mapname,"s?"),
|
||||
BUILDIN_DEF(instance_warpall,"sii?"),
|
||||
BUILDIN_DEF(instance_warpall,"sii??"),
|
||||
BUILDIN_DEF(instance_announce,"isi?????"),
|
||||
BUILDIN_DEF(instance_check_party,"i???"),
|
||||
BUILDIN_DEF(instance_check_guild,"i???"),
|
||||
|
||||
Reference in New Issue
Block a user