|
|
老是找不到距离核心星区近一些的星系做殖民地,又不想殖民地分的太开,就研究了一下怎么手搓殖民地星球,论坛里可以找到最基本的添加星球命令,但复杂一点的情况就找不到了。
研究了下把方法分享给大家。
最简单的添加星球,这个也是论坛里找到的
runcode import com.fs.starfarer.api.util.Misc; String planetName = "星球名字";
float planetOrbitDays = 180; // 公转周期,就是绕着太阳多久转一圈,这个单位是天
float planetSize = 150; //星球大小,普通星球就100到150就够了。
Vector2f playerCoords = $playerFleet.getLocation();
float angleCCW = Misc.getAngleInDegreesStrict(playerCoords);
StarSystemAPI sys = (StarSystemAPI)$playerFleet.getContainingLocation();
PlanetAPI star = sys.getStar();
float orbitRadius = Misc.getDistance(star.getLocation(), playerCoords);
PlanetAPI planet = sys.addPlanet(planetName, star, planetName, "terran", angleCCW, planetSize, orbitRadius, planetOrbitDays );//terran是星球类型,论坛里很容易找到
下面的内容是添加星球特征的,论坛里也很容易找到,就不多说了。
MarketAPI market = sys.getEntityById(planetName).getMarket();
market.addCondition("organics_plentiful");
market.addCondition("farmland_bountiful");
market.addCondition("ore_ultrarich");
market.addCondition("rare_ore_ultrarich");
market.addCondition("volatiles_plentiful");
market.addCondition("habitable");
market.addCondition("mild_climate");
再举一个例子,添加一个气态行星
runcode import com.fs.starfarer.api.util.Misc;
String planetName = "星球名字"; // 修改为你想要的名字
float planetOrbitDays = 180; // 公转周期
float planetSize = 280; // 气态巨行星视觉较大,建议 250–350
Vector2f playerCoords = $playerFleet.getLocation();
float angleCCW = Misc.getAngleInDegreesStrict(playerCoords);
StarSystemAPI sys = (StarSystemAPI)$playerFleet.getContainingLocation();
PlanetAPI star = sys.getStar();
float orbitRadius = Misc.getDistance(star.getLocation(), playerCoords);
PlanetAPI planet = sys.addPlanet(planetName, star, planetName, "gas_giant", angleCCW, planetSize, orbitRadius, planetOrbitDays); // gas_giant为星球类型
MarketAPI market = sys.getEntityById(planetName).getMarket();
// 气态巨行星通常富含挥发物,添加此条件
market.addCondition("volatiles_plentiful");
现在出现一个情况如果你想添加一个卫星给这个气态行星该怎么做?
runcode import com.fs.starfarer.api.util.Misc;
String moonName = "卫星";//
String giantName = "气态行星";//注意,这里的名字如果是你生成的,那就是那个你输入的,如果是原生星球,你需要通过list planet命令去看一下,因为显示出来的那个名字好像不管用,得用那个星球的一个标识符,类似“system_22b3:planet_1”这样的
StarSystemAPI sys = (StarSystemAPI)$playerFleet.getContainingLocation();
Object giantObj = sys.getEntityById(giantName);
PlanetAPI gasGiant = (PlanetAPI) giantObj;
// 设定卫星参数
float moonSize = 100;
float moonOrbitRadius = 450; //这个是卫星和气态行星的距离
float moonOrbitDays = 90;
float moonAngle = 0;
String moonType = "cryovolcanic";这个是这个卫星的星球类型
// 添加卫星
PlanetAPI moon = sys.addPlanet(moonName, gasGiant, moonName, moonType, moonAngle, moonSize, moonOrbitRadius, moonOrbitDays);
MarketAPI moonMarket = sys.getEntityById(moonName).getMarket();
moonMarket.addCondition("volatiles_plentiful");
moonMarket.addCondition("cold");
我不小心把一个星球和原生星球放在一个轨道上了,公转还不一样,最后会重叠,干脆研究了下怎么把那个星球删了
删除一个星球
runcode import com.fs.starfarer.api.util.Misc;
String planetName = "system_22b3:planet_1";//这是要删除星球的名字,可以通过list planet命令查看
StarSystemAPI sys = (StarSystemAPI)$playerFleet.getContainingLocation();
SectorEntityToken entity = sys.getEntityById(planetName);
PlanetAPI planet = (PlanetAPI) entity;
sys.removeEntity(planet);
|
|