holy 发表于 2021-9-25 19:08:13

【求助】 想搞一个根据去除飞行甲板数量增加装甲的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;
      }

}

holy 发表于 2021-9-25 19:11:33

stats.getArmorBonus().modifyFlat(id,ARMOR_BONUS * WingsNums(ship));


报错上看应该是这里不对。。。

saya39 发表于 2021-9-25 19:27:38

没有定义ship这个变量。编程建议使用ide。

holy 发表于 2021-9-25 19:32:31

saya39 发表于 2021-9-25 19:27
没有定义ship这个变量。编程建议使用ide。

大佬为啥下面返回说明的地方能得到 甲板数量。。这个地方却不行呢。。应该怎么改。。。

Soul_liu 发表于 2021-9-25 19:53:36

本帖最后由 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,不然会报错

holy 发表于 2021-9-25 20:47:27

Soul_liu 发表于 2021-9-25 19:53
算了好像也不对,我再想想

    public void applyEffectsBeforeShipCreation(HullSize hullSize, Mutable ...

可以不报错了!!大佬牛逼!!!感谢!!!!!
页: [1]
查看完整版本: 【求助】 想搞一个根据去除飞行甲板数量增加装甲的MOD