叉烧要配米线发表于 2017-2-1 09:46:00
举一反三,之后的以string开头的语句则是说明后面的变量类型是字符串。
好了下面我们继续第二课的内容。
// Map Basics
bool weird = false; int teamZeroCount = rmGetNumberPlayersOnTeam(0); int teamOneCount = rmGetNumberPlayersOnTeam(1); /* if (theNumberTeams > 2 || (teamZeroCount - teamOneCount) > 2 || (teamOneCount - teamZeroCount) > 2) weird = true;*/ int playerTiles = 13000; if (PlayerNum >4) playerTiles = 12500; if (PlayerNum >6) playerTiles = 12000; if (weird == true) playerTiles = playerTiles*1.75;
rmEchoInfo("Player Tiles = "+playerTiles); int size=2.0*sqrt(PlayerNum*playerTiles); rmEchoInfo("Map size="+size+"m x "+size+"m"); rmSetMapSize(size, size);
rmSetMapElevationParameters(cElevTurbulence, 0.05, 10, 0.4, 7.0); rmSetMapElevationHeightBlend(1);
rmSetSeaLevel(1.0); rmSetLightingSet(lightingType);
rmSetBaseTerrainMix(baseMix); rmTerrainInitialize(baseTerrain, 0.0); rmEnableLocalWater(false); rmSetMapType(mapType1); rmSetMapType(mapType2); rmSetMapType("land"); rmSetWorldCircleConstraint(true); rmSetWindMagnitude(2.0);
chooseMercs();
这一段中需要首先注意//和/* */两种字符,//是指后面一整行的内容是忽略不计的(可以用来标注解),而/**/之间的内容也是同样的意思,都是忽略不计的意思,这里的用法是把原始地图的一段内容屏蔽了。掌握这个知识点的好处是我在之后的内容就会以这2种标记来作为注释。
int playerTiles = 13000;//设定第一个整数参数为13000 if (PlayerNum >4) playerTiles = 12500;//如果PlayerNum(玩家人数)大于4,让playerTiles变成12500 if (PlayerNum >6) playerTiles = 12000;//如果PlayerNum(玩家人数)大于6,让playerTiles变成12000 if (weird == true) playerTiles = playerTiles*1.75;//weird是一个被屏蔽的参数这里先不说明,因为地图内容中设定的默认值是false,所以这个语句并不会执行(false是指假(数值是0),true是指真(数值可以是非0的任意值,通常是1或-1))
rmEchoInfo("Player Tiles = "+playerTiles);//这里是输出文字的函数 int size=2.0*sqrt(PlayerNum*playerTiles);//这里是一个计算式,也就是playerTiles乘以玩家数(PlayerNum)的平方根再乘以2的数值赋予size参数。
rmEchoInfo("Map size="+size+"m x "+size+"m");//这里是输出文字的函数 rmSetMapSize(size, size);//这里是地图尺寸的最终数据,以size的数值为长和宽
总的来说这一段是在确认地图大小,有些标准地图具有大型地图,区别就是在这里。这段代码的主要内容是以玩家数量来确定地图生成的实际大小。不难看到玩家人数越多,虽然地图更大,但地图人均面积好像却越小 |
|