|
发表于 2023-6-18 13:20:38
|
显示全部楼层
你要生成势力的教程是吧?
势力你已经写好了,能在势力争霸生成了,你缺的应该是创建星系的教程
我给你一个样板吧。
生成星系的代码,一般是在ModPlugin的onNewGame()下运行,用于仅在开新档时运行一次生成星系
当然,只要你愿意,存档加载后实际上代码在哪儿运行都行
StarSystemAPI system = sector.createStarSystem("新星系ID"); 用于生一个白板星系,id不能与其他东西的id重复
system.getLocation().set(100f, 100f); 将新星系移动至坐标100,100 地图正中央是0,0,X正数向右,Y正数向上,想把星系放哪儿自己填
PlanetAPI mainStar = system.initStar("newStar", // 创建主恒星,这行是id,不能与其他东西的id重复
"star_white", // 在 planets.json 找你喜欢的恒星id往里填
400f, // 半径400(1倍缩放下400像素)
200f, // 日冕宽度,
10f, //WindBurn等级
2f,//耀斑概率
1f);//靠近后的CR下降率
mainStar.getLocation().set(0, 0F); 将主星球放到星系正中央
system.setLightColor(new Color(200, 200, 200)); // 设置主星球对星系的光照颜色 上面填的是白色恒星,所以这里是偏白色
mainStar.setCustomDescriptionId("star_white"); //设置描述为白矮星,可以在descriptions.csv里面创建自己的描述进行替换
PlanetAPI planet1= system.addPlanet("my_p1", //行星id
mainStar, //环绕的星球
"行星1", //行星名字,会直接显示在游戏内
"terran", //在planets.json找你喜欢的,我这里用得是类地
0, //轨道初始角度 0 为恒星正右方,180为正左方
120, //星球半径
4000, //轨道半径
180);//运行周期 180天绕恒星一周
planet1.setCustomDescriptionId("新的描述id");
接下来是为星球添加市场
你可以新建一个类,然后调用,如果不会但是不嫌麻烦也可以每个星球都这么写一段
EconomyAPI globalEconomy = Global.getSector().getEconomy(); //get全局经济
String planetID = primaryEntity.getId(); //这个primaryEntity,可以是刚才的planet1,也可以是任何你想添加市场的星球或者空间站啥的
marketID = primaryEntity.getId()+ "_market"; //定义市场id,这里用的是星球id加上"_market"后缀,也可以完全自己起一个
MarketAPI newMarket = Global.getFactory().createMarket(marketID,
"新市场", //市场名称,想起什么名字自己定
3);//市场规模,3是玩家自建殖民地的初始大小
newMarket.setFactionId("你自己势力的id");
newMarket.setPrimaryEntity(primaryEntity); //将你的星球设置为市场的主要实体对象
//你可以通过newMarket.getConnectedEntities().add(xxx);来添加捆绑对象,来让数个星球、空间站或者啥玩意儿共享一个市场
下面几条按自己需求选择:
newMarket.addSubmarket(Submarkets.GENERIC_MILITARY); //添加军用市场
newMarket.addSubmarket(Submarkets.SUBMARKET_BLACK); // 添加黑市
newMarket.addSubmarket(Submarkets.SUBMARKET_OPEN); // 添加公开市场
newMarket.addSubmarket(Submarkets.SUBMARKET_STORAGE); // 添加仓库
//添加市场条件等
newMarket.addCondition("在market_conditions.csv找你自己想要的id");
newMarket.addIndustry(("在industries.csv找你自己想要的id");
为特殊工业添加道具,示例:
if(newMarket.getIndustry("heavyindustry")!=null){ // 假如市场有重工
newMarket.getIndustry("heavyindustry").setSpecialItem(new SpecialItemData("corrupted_nanoforge", null)); //添加一个红纳米熔炉
newMarket.getIndustry("heavyindustry").setAICoreId("gamma_core");给重工塞一个Gamma核心
}
globalEconomy.addMarket(newMarket,//向全局经济加入自己的新建市场
false);//是否为星球添加环绕的垃圾和无线电音效,false为不添加
primaryEntity.setMarket(newMarket);
primaryEntity.setFaction(factionID);
|
|