ソースを参照

Fixes to Battleground script commands (#4764)

* Fixes #4763.
* Cleans up script commands bg_getareausers and bg_get_data.
Thanks to @voyfmyuh and @Lemongrass3110!
Aleos 5 年 前
コミット
8716121b4c
1 ファイル変更6 行追加11 行削除
  1. 6 11
      src/map/script.cpp

+ 6 - 11
src/map/script.cpp

@@ -19933,8 +19933,7 @@ BUILDIN_FUNC(bg_getareausers)
 {
 {
 	const char *str = script_getstr(st, 3);
 	const char *str = script_getstr(st, 3);
 	int16 m, x0, y0, x1, y1;
 	int16 m, x0, y0, x1, y1;
-	int bg_id = script_getnum(st, 2);
-	int i = 0, c = 0;
+	int bg_id = script_getnum(st, 2), c = 0;
 	std::shared_ptr<s_battleground_data> bg = util::umap_find(bg_team_db, bg_id);
 	std::shared_ptr<s_battleground_data> bg = util::umap_find(bg_team_db, bg_id);
 
 
 	if (!bg || (m = map_mapname2mapid(str)) < 0) {
 	if (!bg || (m = map_mapname2mapid(str)) < 0) {
@@ -19947,12 +19946,8 @@ BUILDIN_FUNC(bg_getareausers)
 	x1 = script_getnum(st,6);
 	x1 = script_getnum(st,6);
 	y1 = script_getnum(st,7);
 	y1 = script_getnum(st,7);
 
 
-	for( i = 0; i < bg->members.size(); i++ )
-	{
-		struct map_session_data *sd;
-		if( (sd = bg->members[i].sd) == NULL )
-			continue;
-		if( sd->bl.m != m || sd->bl.x < x0 || sd->bl.y < y0 || sd->bl.x > x1 || sd->bl.y > y1 )
+	for (const auto &member : bg->members) {
+		if( member.sd->bl.m != m || member.sd->bl.x < x0 || member.sd->bl.y < y0 || member.sd->bl.x > x1 || member.sd->bl.y > y1 )
 			continue;
 			continue;
 		c++;
 		c++;
 	}
 	}
@@ -19981,7 +19976,7 @@ BUILDIN_FUNC(bg_updatescore)
 
 
 BUILDIN_FUNC(bg_get_data)
 BUILDIN_FUNC(bg_get_data)
 {
 {
-	int bg_id = script_getnum(st,2), type = script_getnum(st,3), i;
+	int bg_id = script_getnum(st,2), type = script_getnum(st,3), i = 0;
 	std::shared_ptr<s_battleground_data> bg = util::umap_find(bg_team_db, bg_id);
 	std::shared_ptr<s_battleground_data> bg = util::umap_find(bg_team_db, bg_id);
 
 
 	if (bg) {
 	if (bg) {
@@ -19990,8 +19985,8 @@ BUILDIN_FUNC(bg_get_data)
 			script_pushint(st, bg->members.size());
 			script_pushint(st, bg->members.size());
 			break;
 			break;
 		case 1:
 		case 1:
-			for (i = 0; bg->members[i].sd != NULL; i++)
-				mapreg_setreg(reference_uid(add_str("$@arenamembers"), i), bg->members[i].sd->bl.id);
+			for (const auto &member : bg->members)
+				mapreg_setreg(reference_uid(add_str("$@arenamembers"), i++), member.sd->bl.id);
 			mapreg_setreg(add_str("$@arenamemberscount"), i);
 			mapreg_setreg(add_str("$@arenamemberscount"), i);
 			script_pushint(st, i);
 			script_pushint(st, i);
 			break;
 			break;