找回密码
 初始化身份识别芯片
查看: 2583|回复: 5

【求助】 想搞一个根据去除飞行甲板数量增加装甲的MOD

[复制链接]

势力巨擘

发表于 2021-9-25 19:08:13 | 显示全部楼层 |阅读模式
本帖最后由 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;
        }

}

势力巨擘

 楼主| 发表于 2021-9-25 19:11:33 | 显示全部楼层
stats.getArmorBonus().modifyFlat(id,ARMOR_BONUS * WingsNums(ship));


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

英仙统领

高级机师译码专家学院教员搬运能手战术专家通讯记者

发表于 2021-9-25 19:27:38 | 显示全部楼层
没有定义ship这个变量。编程建议使用ide。

点评

大佬为啥下面返回说明的地方能得到 甲板数量。。这个地方却不行呢。。应该怎么改。。。  详情 回复 发表于 2021-9-25 19:32

势力巨擘

 楼主| 发表于 2021-9-25 19:32:31 | 显示全部楼层
saya39 发表于 2021-9-25 19:27
没有定义ship这个变量。编程建议使用ide。

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

点评

stats.getArmorBonus().modifyFlat(id, ARMOR_BONUS * WingsNums(id));  详情 回复 发表于 2021-9-25 19:53

势力巨擘

发表于 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,不然会报错

点评

可以不报错了!!大佬牛逼!!!感谢!!!!!  详情 回复 发表于 2021-9-25 20:47

势力巨擘

 楼主| 发表于 2021-9-25 20:47:27 | 显示全部楼层
Soul_liu 发表于 2021-9-25 19:53
算了好像也不对,我再想想

    public void applyEffectsBeforeShipCreation(HullSize hullSize, Mutable ...

可以不报错了!!大佬牛逼!!!感谢!!!!!

本版积分规则

Archiver|手机版|小黑屋|远行星号中文论坛

GMT+8, 2024-11-21 23:03

Powered by Discuz! X3.5

© 2001-2077 Tencent Cloud | Durian Software Studio

快速回复 返回顶部 返回列表