放置玩家几种形式



这是创建地图最后一个教程了,地图做好了,但是有一个很头疼的问题,对那些用河流控制不规则轮廓的地图更是如此,如果是两人地图还好,八人就不一定能生成,先不说这个我给你的地图模板一直使用“rmPlacePlayersCircular(0.35, 0.35, 0.0);//圆形放置玩家”这个语句来放置玩家,下面列出所有放置玩家命令以及解释作用:。

[(      )] rmPlacePlayer(int playerID, float xFraction, float zFraction): Sets one player location. 

[(      )] rmPlacePlayersCircular(float minFraction, float maxFraction, float angleVariation): Makes a circle of player locations. 

[(      )] rmPlacePlayersLine(float x1, float z1, float x2, float z2, float distVariation, float spacingVariation): Makes a line of player locations. 

[(      )] rmPlacePlayersRiver(int riverID, float distVariation, float spacingVariation, float edgeDistance): Makes a line of player locations along the specified river. 

[(      )] rmPlacePlayersSquare(float dist, float distVariation, float spacingVariationfloat): Makes a square of player locations. 

[(      )] rmSetPlacementTeam(int teamID): Sets the team to place.

[(      )] rmSetPlacementSection(float fromPercent, float toPercent): Sets the section of the placement line to use
-----------------------------------------------------------------------

[(      )] rmPlacePlayer(玩家ID, X坐标, Z坐标);//设定某个玩家放置点

[(      )] rmPlacePlayersCircular(最小半径, 最大半径, 浮动变化值);//设定圆形放置所有玩家

[(      )] rmPlacePlayersLine(X坐标1, Z坐标1, X坐标2, Z坐标2, 浮动变化值, 空间范围大小【数值越大间隔越大】);//直线放置所有玩家

[(      )] rmPlacePlayersRiver(int riverID, float distVariation, float spacingVariation, float edgeDistance);所有玩家在某条河流附近放置

[(      )] rmPlacePlayersSquare(float dist, 浮动变化值, 空间范围大小);// 方形放置玩家

[(      )] rmSetPlacementTeam(int teamID);//将放置所有玩家改成放置某个队伍,0就是队伍1,1就是队伍2。(与int playerID不一样,playerID“0”是大自然,playerID“1”才是玩家1;int teamID“0”是队伍1,teamID“1”是队伍2)**使用该语句后,未设定的队伍将会出局,例如你只设定了队伍1,未设定队伍2会导致所有队伍2的玩家出局。

		rmPlacePlayer(1,0.5,0.5);
		rmPlacePlayer(2,0.3,0.3);
		rmPlacePlayer(3,0.6,0.6);
		rmPlacePlayer(4,0.4,0.6);
		rmPlacePlayer(5,0.1,0.3);
		rmPlacePlayer(1,0.5,0.5);
		rmPlacePlayer(2,0.3,0.3);
		rmPlacePlayer(3,0.6,0.6);
		rmPlacePlayer(4,0.4,0.6);
		rmPlacePlayer(5,0.1,0.3);
		rmPlacePlayer(6,0.5,0.3);
		rmPlacePlayer(7,0.7,0.5);
		rmPlacePlayer(8,0.8,0.8);
		rmPlacePlayersCircular(0.35, 0.35, 0.0);
		rmPlacePlayersCircular(0.10, 0.45, 0.0);
		rmPlacePlayersLine(0.0,0.0,1.0,1.0,0,0)
		string RiverName ="Northwest Territory Water";
		int River2ID = rmRiverCreate(-1, RiverName, 1, 1, 10, 10);
		rmRiverAddWaypoint(River2ID, 1.0, 1.0 );
		rmRiverAddWaypoint(River2ID, 0.0, 0.0 );
		rmRiverBuild(River2ID);

		rmPlacePlayersRiver(River2ID,50,30,20);
		rmSetPlacementTeam(0);
		rmPlacePlayersLine(0.6,0.9,0.9,0.6,0,50);
		rmSetPlacementTeam(1); 
		rmPlacePlayersLine(0.6,0.1,0.1,0.6,0,50);
		rmSetPlacementSection(0.6, 0.15);
		rmPlacePlayersCircular(0.40, 0.40, 0.0);
		rmSetPlacementSection(0.15, 0.60);
		rmPlacePlayersCircular(0.40, 0.40, 0.0);
		rmSetPlacementSection(0.15, 0.90);
		rmPlacePlayersCircular(0.40, 0.40, 0.0);
		rmSetPlacementSection(0.9, 0.15);
		rmPlacePlayersCircular(0.40, 0.40, 0.0);
		rmSetPlacementSection(0.9, 0.5);
		rmPlacePlayersCircular(0.40, 0.40, 0.0);
		rmSetPlacementSection(0.9, 0.6);
		rmPlacePlayersCircular(0.40, 0.40, 0.0);
		rmSetPlacementSection(0.6, 0.90);
		rmPlacePlayersCircular(0.40, 0.40, 0.0);
		作者智商不行,无法给出rmSetPlacementSection的用法。

		
		我差不多已经是只废喵了



	一般的地图都是将团队战(包括1V1)设定为直线放置玩家,两个队伍均在地图的一侧,然后自由就用圆形放置,当然也有直线放置的,对于一些极端的地图,无论用什么语句都不能完整生成八个玩家(有些玩家开局无法生成城镇中心出局),可以采用单个坐标定位例如下面的语句:

	int FFAType=rmRandInt(rmRandInt(1,2),rmRandInt(3,4));	//定义随机数,用来随机更换玩家位置
	
	//设定8个坐标
	float Coordinate1X = 0.76;	float Coordinate1Z = 0.835;	float Coordinate2X = 0.24;	float Coordinate2Z = 0.835;
	float Coordinate3X = 0.85;	float Coordinate3Z = 0.25;	float Coordinate4X = 0.15;	float Coordinate4Z = 0.25;
	float Coordinate5X = 0.50;	float Coordinate5Z = 0.90;	float Coordinate6X = 0.50;	float Coordinate6Z = 0.60;
	float Coordinate7X = 0.65;	float Coordinate7Z = 0.15;	float Coordinate8X = 0.35;	float Coordinate8Z = 0.15;

	//这个也是坐标,一般是不用设定的,但是为了更改坐标不用一次改四次坐标,所以这样设定
	float Player1X = 0.76;		float Player1Z = 0.835;		float Player2X = 0.24;		float Player2Z = 0.835;
	float Player3X = 0.85;		float Player3Z = 0.25;		float Player4X = 0.15;		float Player4Z = 0.25;
	float Player5X = 0.50;		float Player5Z = 0.90;		float Player6X = 0.50;		float Player6Z = 0.60;
	float Player7X = 0.65;		float Player7Z = 0.15;		float Player8X = 0.35;		float Player8Z = 0.15;
	if(FFAType == 1)	/*1234&5678*/	//根据FFAType返回的随机数更换不同的坐标。
	{
		Player1X = Coordinate1X;	Player1Z = Coordinate1Z;	Player2X = Coordinate2X;	Player2Z = Coordinate2Z;
		Player3X = Coordinate3X;	Player3Z = Coordinate3Z;	Player4X = Coordinate4X;	Player4Z = Coordinate4Z;
		Player5X = Coordinate5X;	Player5Z = Coordinate5Z;	Player6X = Coordinate6X;	Player6Z = Coordinate6Z;
		Player7X = Coordinate7X;	Player7Z = Coordinate7Z;	Player8X = Coordinate8X;	Player8Z = Coordinate8Z;
	}
	else if(FFAType == 2)	/*3412&7856*/
	{
		Player1X = Coordinate3X;	Player1Z = Coordinate3Z;	Player2X = Coordinate4X;	Player2Z = Coordinate4Z;
		Player3X = Coordinate1X;	Player3Z = Coordinate1Z;	Player4X = Coordinate2X;	Player4Z = Coordinate2Z;
		Player5X = Coordinate7X;	Player5Z = Coordinate7Z;	Player6X = Coordinate8X;	Player6Z = Coordinate8Z;
		Player7X = Coordinate5X;	Player7Z = Coordinate5Z;	Player8X = Coordinate6X;	Player8Z = Coordinate6Z;
	}
	else if(FFAType == 3)	/*2143&6587*/
	{
		Player1X = Coordinate2X;	Player1Z = Coordinate2Z;	Player2X = Coordinate1X;	Player2Z = Coordinate1Z;
		Player3X = Coordinate4X;	Player3Z = Coordinate4Z;	Player4X = Coordinate3X;	Player4Z = Coordinate3Z;
		Player5X = Coordinate6X;	Player5Z = Coordinate6Z;	Player6X = Coordinate5X;	Player6Z = Coordinate5Z;
		Player7X = Coordinate8X;	Player7Z = Coordinate8Z;	Player8X = Coordinate7X;	Player8Z = Coordinate7Z;
	}
	else		/*4321&8765*/
	{
		Player1X = Coordinate4X;	Player1Z = Coordinate4Z;	Player2X = Coordinate3X;	Player2Z = Coordinate3Z;
		Player3X = Coordinate2X;	Player3Z = Coordinate2Z;	Player4X = Coordinate1X;	Player4Z = Coordinate1Z;
		Player5X = Coordinate8X;	Player5Z = Coordinate8Z;	Player6X = Coordinate7X;	Player6Z = Coordinate7Z;
		Player7X = Coordinate6X;	Player7Z = Coordinate6Z;	Player8X = Coordinate5X;	Player8Z = Coordinate5Z;
	}

	//设定8个玩家的定位点
	rmSetPlacementTeam(0);		rmPlacePlayer(1,Player1X,Player1Z);
	rmSetPlacementTeam(1);		rmPlacePlayer(2,Player2X,Player2Z);
	rmSetPlacementTeam(2);		rmPlacePlayer(3,Player3X,Player3Z);
	rmSetPlacementTeam(3);		rmPlacePlayer(4,Player4X,Player4Z);
	rmSetPlacementTeam(4);		rmPlacePlayer(5,Player5X,Player5Z);
	rmSetPlacementTeam(5);		rmPlacePlayer(6,Player6X,Player6Z);
	rmSetPlacementTeam(6);		rmPlacePlayer(7,Player7X,Player7Z);
	rmSetPlacementTeam(7);		rmPlacePlayer(8,Player8X,Player8Z);






	如何判断是否是自由对战呢?
	用rmGetIsFFA(): Returns true if this map is set to be a FFA game which means each player on their own team.

	例如:
		if(rmGetIsFFA()==true)
		{
			//如果本场游戏是自由对战:
		}


		if(rmGetIsFFA()!=true)
		{
			//如果本场游戏不是自由对战:
		}





		其他类似语句还有判断是否为王者山丘模式: rmGetIsKOTH(): Returns true if this map is set to be a King of the Hill game. 
		
		开局是否为游牧时代:[(      )] rmGetNomadStart(): Returns true if this map is to place a covered wagon instead of a town center. 

		
	本教程结束。