【求助】 想搞一个根据去除飞行甲板数量增加装甲的MOD
本帖最后由 holy 于 2021-9-25 19:10 编辑想搞一个根据去除飞行甲板数量增加舰船装甲的插件MOD
因为不懂程序,所以找了一个类似的插件抄了一下,但是报错了。。。
实在搞不懂哪里不对。。。求大佬们帮忙看下。。。
public class fighterpower extends BaseHullMod {
private final float ARMOR_BONUS = 50f;
public static float WingsNums(ShipAPI ship) {
int originalBayCount = (int)ship.getMutableStats().getNumFighterBays().getBaseValue();
return originalBayCount;
}
public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
stats.getNumFighterBays().modifyFlat(id, 0f);
stats.getNumFighterBays().modifyMult(id, 0f);
stats.getArmorBonus().modifyFlat(id,ARMOR_BONUS * WingsNums(ship));
}
public boolean isApplicableToShip(ShipAPI ship) {
return ship != null &&ship.getHullSpec().getBuiltInWings().size() > 0 &&
!ship.isFrigate() && ship.getHullSpec().getFighterBays() >= 2 &&
!ship.getVariant().hasHullMod(HullMods.CONVERTED_BAY) &&
!ship.getVariant().hasHullMod(HullMods.PHASE_FIELD);
}
public String getUnapplicableReason(ShipAPI ship) {
if (ship.getHullSpec().getBuiltInWings().size() > 0)return "无法移除内置战机";
if (ship != null && ship.isFrigate()) return "无法安装在护卫舰上";
if (ship != null && ship.getVariant().hasHullMod(HullMods.CONVERTED_BAY)) return "改装甲板无法移除";
if (ship != null && ship.getHullSpec().getFighterBays() < 1) return "舰船无法移除飞行甲板";
}
public String getDescriptionParam(int index, HullSize hullSize, ShipAPI ship) {
if (index == 0) return "" + (Float) WingsNums(ship) + "%";
return null;
}
}
stats.getArmorBonus().modifyFlat(id,ARMOR_BONUS * WingsNums(ship));
报错上看应该是这里不对。。。 没有定义ship这个变量。编程建议使用ide。 saya39 发表于 2021-9-25 19:27
没有定义ship这个变量。编程建议使用ide。
大佬为啥下面返回说明的地方能得到 甲板数量。。这个地方却不行呢。。应该怎么改。。。 本帖最后由 Soul_liu 于 2021-9-25 20:19 编辑
holy 发表于 2021-9-25 19:32
大佬为啥下面返回说明的地方能得到 甲板数量。。这个地方却不行呢。。应该怎么改。。。 ...
算了好像也不对,我再想想
public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
stats.getNumFighterBays().modifyMult(id, 0f);
float originalBayCount = stats.getNumFighterBays().getBaseValue();
stats.getArmorBonus().modifyFlat(id,ARMOR_BONUS * originalBayCount);
}
这么写就可以
不需要wingsNum那个函数,可以直接删掉,不过留着也不会报错就是了
但是你的安装条件和安装冲突返回原因的函数有巨大问题
ship.getHullSpec().getBuiltInWings().size() > 0 代表必须有内置战机,要加感叹号
!ship.getVariant().hasHullMod(HullMods.CONVERTED_BAY) hasHullMod里面的值应该是字符串
正确用法是!ship.getVariant().hasHullMod("converted_bay") 但我不知道这个插件的id到底是啥,我懒得查,随便写的
下面的返回原因,需要在最底下加一个没有if的return null,不然会报错
Soul_liu 发表于 2021-9-25 19:53
算了好像也不对,我再想想
public void applyEffectsBeforeShipCreation(HullSize hullSize, Mutable ...
可以不报错了!!大佬牛逼!!!感谢!!!!!
页:
[1]