冷龙在睡觉 发表于 2023-3-31 14:44:54

[mod制作中]CRSID跨河系统合部—你甚至能在远行星号中玩EVE

本帖最后由 冷龙在睡觉 于 2023-5-9 15:01 编辑

////阅前注:新的mod帖子已经迁移至////[[新帖传送门]]
   ==========================   势力背景故事..有时间再写...写完会放出来
   ==========================   初期计划做4艘护卫穿梭机,4艘护卫舰,4艘驱逐舰,4艘巡洋舰,4艘战列巡洋舰,4艘战列舰,8艘旗舰(分为4艘超级航母和4艘泰坦),分为四个势力风格(艾玛,盖伦特,加达里,米玛塔尔,更详细的信息在下面文档里)
以及——几艘货船和矿船,主打工业方面,在下面文档最下面有细说
实现了eve原版中武器使用货舱子弹的效果,但因为某些奇怪的原因子弹很贵,不过一场战斗可能也装不了几次...这是方便跑商!   ==========================   


   ==========================   
2023.3.31:最初的版本,四种穿梭机与艾玛泰坦
2023.4.7:更新四艘护卫舰与小槽武器
2023.4.11:实现了武器从货舱获取子弹装载进战斗的效果,感谢@zyx 和@cjy4312 大佬的代码指导
2023.4.12:更新四艘驱逐舰与蓝图包
2023.4.13:加入了四种舰船的风格 修改了一些武器特效 修复了一些bug
2023.4.20:更新四艘巡洋舰,细微调整了一些数值
2023.4.23:更新了四架岗哨无人机
2023.4.30:更新了四架轻型侦查无人机
2023.5.2:更新了四种中槽武器市场会出现子弹极端供不应求的问题...我先看看怎么改掉这个再启用货舱装弹效果
2023.5.5:势力更新,现在可以作为正常的势力mod添加游玩了
2023.5.6:更新了一艘加达里的无畏舰和配套内置导弹
2023.5.9:更新了一艘朱庇特的特殊护卫舰和配套内置武器,以及一个新战役

   ==========================   
//下载地址//
~游玩请加内测群~
(内测版交流群:**** Hidden Message *****,内测版交流反馈使用)
   ==========================   (版权说明:因为我不清楚拿eve的船模改成二维俯视图修改细节做远行星号的自制mod算不算侵权行为,所以如果确实有,请告知我,我会即刻删掉mod贴)   ==========================   2023.4.1 2023愚人节版


   ==========================   
最后更新于2023年5月9日15:00:00








XZCW 发表于 2023-3-31 14:59:54

都统合部了,加点马裤螺丝要素呗,带核弹能全弹发射的战斗机

冷龙在睡觉 发表于 2023-3-31 15:03:00

XZCW 发表于 2023-3-31 14:59
都统合部了,加点马裤螺丝要素呗,带核弹能全弹发射的战斗机

核弹小飞机倒是能搞,但是那样的话直接大航全上重轰带核弹岂不秒天秒地{:5_124:}

屠戏人间 发表于 2023-3-31 15:05:06

注意可能的版权问题就好

XZCW 发表于 2023-3-31 15:10:18

冷龙在睡觉 发表于 2023-3-31 15:03
核弹小飞机倒是能搞,但是那样的话直接大航全上重轰带核弹岂不秒天秒地 ...

像骤雨机甲那样的带核弹的驱逐/护卫飞机

冷龙在睡觉 发表于 2023-3-31 15:12:51

XZCW 发表于 2023-3-31 15:10
像骤雨机甲那样的带核弹的驱逐/护卫飞机

空间站可能会搞,加进去内置的驱逐护卫飞机
主要是核弹这个玩意就怕平衡性搞炸了{:5_132:}

冷龙在睡觉 发表于 2023-3-31 15:13:49

屠戏人间 发表于 2023-3-31 15:05
注意可能的版权问题就好

结尾有这方面的注释说明啦
如果确实有版权问题我直接撤销公开的{:5_124:}

111222333 发表于 2023-3-31 15:41:29

早年有过这么一个EVE的MOD,还没玩游戏就更新了。期待楼主早点搞出来

冷龙在睡觉 发表于 2023-3-31 15:43:58

111222333 发表于 2023-3-31 15:41
早年有过这么一个EVE的MOD,还没玩游戏就更新了。期待楼主早点搞出来

还真没听过,是远古版本嘛{:5_127:}

偏见进逼 发表于 2023-3-31 17:25:07

支持

111222333 发表于 2023-3-31 17:42:21

冷龙在睡觉 发表于 2023-3-31 15:43
还真没听过,是远古版本嘛

远古版本了,好像是0.6~0.7时代的

冷龙在睡觉 发表于 2023-4-1 03:02:21

本帖最后由 冷龙在睡觉 于 2023-4-1 04:56 编辑

看看这个点还有没有没睡的神仙{:5_124:},更新一丢丢怪东西
顺带着把不好看的小槽武器贴图重新画了一下,虽然还是不好看但是至少能看了,我再把四艘穿梭机的细节改一改,看看能不能尽早先传个能玩的上来{:5_127:}

////
修图修了一晚上...感觉还是不咋地...就这样先端上来罢(
小槽武器我再看看,虽然大修完了但是感觉细节还能在更好,修一修修一修,质量为上
果然我在美工这方面还是一窍不通(碎碎念)

维尔拉 发表于 2023-4-1 09:06:32

冷龙在睡觉 发表于 2023-4-1 03:02
看看这个点还有没有没睡的神仙,更新一丢丢怪东西
顺带着把不好看的小槽武器贴图重新画了一下,虽 ...

没有休闲,但是起床了(早起确认)。

XZCW 发表于 2023-4-2 00:14:55

突然想起了cjb里可以从货仓填充的导弹,这能不能弄个船插,让武器自动选择填充货仓里不同的导弹/晶体/弹药,就想eve本游那样,从而获得不同的加成,这样子和别的mod比,一下子就有特色了
还可以名正言顺的的搞超模主力舰

冷龙在睡觉 发表于 2023-4-2 00:18:48

XZCW 发表于 2023-4-2 00:14
突然想起了cjb里可以从货仓填充的导弹,这能不能弄个船插,让武器自动选择填充货仓里不同的导弹/晶体/弹药 ...

可以搞得,我先看看能不能整吧,主要是两个游戏花的弹药什么的数量也不一样,想要平衡一些的数据是有点难搞得{:5_124:}
加进计划小本本,改天就去看看代码是怎么实现的(雾

XZCW 发表于 2023-4-2 00:23:25

冷龙在睡觉 发表于 2023-4-2 00:18
可以搞得,我先看看能不能整吧,主要是两个游戏花的弹药什么的数量也不一样,想要平衡一些的数据是有点难 ...

可以单位弄成箱,比如一箱导弹占货仓1,可以填充12发导弹这样

冷龙在睡觉 发表于 2023-4-2 00:24:43

XZCW 发表于 2023-4-2 00:23
可以单位弄成箱,比如一箱导弹占货仓1,可以填充12发导弹这样

有道理,明天看看,今天不修仙了{:5_128:}

冷龙在睡觉 发表于 2023-4-2 03:46:22

冷龙在睡觉 发表于 2023-4-2 00:24
有道理,明天看看,今天不修仙了

我测,怎么这么难...
我得花几天琢磨琢磨代码,所以先一边摸出来四艘护卫舰一边研究这个效果,这样的话武器特殊效果先不上线了,到时候放测试版可能还写不出来效果,就是个纯数值武器(雾

冷龙在睡觉 发表于 2023-4-2 03:52:20

研究半夜一看时间快四点了,今天又是修仙的一天{:5_132:}

维尔拉 发表于 2023-4-4 17:55:41

还是注意一下身体吧,这么快燃烧殆尽小心身体{:tieba_30:}

冷龙在睡觉 发表于 2023-4-4 18:04:12

维尔拉 发表于 2023-4-4 17:55
还是注意一下身体吧,这么快燃烧殆尽小心身体

会注意的会注意的,一般还是作息规律些,谢谢关心{:5_124:}

尾焰 发表于 2023-4-4 23:10:33

冷龙在睡觉 发表于 2023-3-31 15:03
核弹小飞机倒是能搞,但是那样的话直接大航全上重轰带核弹岂不秒天秒地 ...

直接配置点数高上天,只能带一架

尾焰 发表于 2023-4-4 23:11:19

想法很好,我也喜欢EVE,不过你的 工作量真的巨大。感觉这无畏舰就巨期待人。

冷龙在睡觉 发表于 2023-4-4 23:16:42

尾焰 发表于 2023-4-4 23:11
想法很好,我也喜欢EVE,不过你的 工作量真的巨大。感觉这无畏舰就巨期待人。 ...

没办法啊,话说出来了不能咕咕咕啊(
会尽力去还原大部分eve的船(当然,保证平衡的前提下)
以及现在在做从货舱拿子弹在战斗中使用的效果...我还得搓船模
因为就我一个人做,效率没多高,所以距离第一个测试版丢出来可能还要一小段时间{:5_132:}
感谢支持的说{:5_124:}

XZCW 发表于 2023-4-8 19:17:03

这个已经很简单了,给船加个listener 然后监控舰队里的cargo就行了

别的大佬是这么回我的
@zyx 大佬说简单,可以试试问问他怎么弄

冷龙在睡觉 发表于 2023-4-11 09:40:34

{:5_124:}写出来了 但是可能因为没有生产设施的原因这个玩意全星域缺货...价格奇贵无比...
我也没啥解决办法,只能把武器子弹数调高到一场战斗装不了多少发的水平(比如几百发最大弹容,反正开场会默认装满)
是时候考虑写个军工厂设施用来造弹药了(但我不会写啊寄)
我先把驱逐搓出来 然后发个测试版...可能放论坛,也可能给群放群文件

cjy4312 发表于 2023-4-12 14:51:44

{:5_118:}稍等,今天晚上我有时间给你贴个方便版的装填系统代码

cjy4312 发表于 2023-4-12 15:37:43

本帖最后由 cjy4312 于 2023-4-12 15:49 编辑


package data.scripts.weapons;

import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.campaign.CargoAPI;
import com.fs.starfarer.api.combat.CombatEngineAPI;
import com.fs.starfarer.api.combat.EveryFrameWeaponEffectPlugin;
import com.fs.starfarer.api.combat.ShipAPI;
import com.fs.starfarer.api.combat.WeaponAPI;
import java.util.HashMap;
import java.util.Map;

/**
*
* @author cjy4312
*/
public class ReloadFromCargoEveryFramePlugin implements EveryFrameWeaponEffectPlugin {

    private static final Map<String, Float> weapon_reload_time = new HashMap();
    private static final Map<String, Integer> weapon_reload_num = new HashMap();
    private static final Map<String, Integer> weapon_reload_start = new HashMap();
    private static final Map<String, String> weapon_reload_commodity = new HashMap();
    private static final Map<String, Float> weapon_reload_commodity_ammo = new HashMap();
    private static final Map<String, Integer> weapon_reload_ammo_AI = new HashMap();
    private int ammo = -999;
    private float timer = 0f;
    private boolean usecargo = true;

    static {
      weapon_reload_time.put("武器ID", 1f);//写1意思是装填要花1秒
      weapon_reload_num.put("武器ID", 1);//写1意思是一次装填1发弹药
      weapon_reload_start.put("武器ID", 0);//写0意思是武器弹药剩余0才开始启动装填
      weapon_reload_commodity.put("武器ID", "货物ID");//武器消耗的货物id
      weapon_reload_commodity_ammo.put("武器ID", 1f);//写1意思是每消耗1单位的货物可以换取1发弹药
      weapon_reload_ammo_AI.put("武器ID", 1);//写1意思是敌人或者友军AI使用该武器时有1发备用弹药 //不建议调用AI货仓,AI未必会带你的自定义货物
    }

    public boolean checkCargoAvailable(CombatEngineAPI engine, ShipAPI ship) { //检查当前环境是否支持调用玩家货仓
      return !(!engine.isInCampaign() || engine.isInCampaignSim() || ship == null || ship.isFighter());
    }

    public CargoAPI getCargo(CombatEngineAPI engine, ShipAPI ship, WeaponAPI weapon) { //获取玩家货仓
      if (ship.getParentStation() != null) {
            ship = ship.getParentStation();
      }
      if (ship.getFleetMember() != null) {
            if (engine.getPlayerShip().getOwner() != ship.getOwner()) {
                usecargo = false;
                return null;
            }
            return Global.getSector().getPlayerFleet().getCargo();
      }
      usecargo = false;
      return null;
    }

    @Override
    public void advance(float amount, CombatEngineAPI engine, WeaponAPI weapon) {
      if (engine.isPaused()) {
            return;
      }
      if (!weapon.getShip().isAlive()) {
            return;
      }
      String weaponid = weapon.getId();
      if (!weapon_reload_time.containsKey(weaponid) //当数据填写不正确,无法通过武器id找到全部数据,代码不运行。
                || !weapon_reload_num.containsKey(weaponid)
                || !weapon_reload_start.containsKey(weaponid)
                || !weapon_reload_commodity.containsKey(weaponid)
                || !weapon_reload_commodity_ammo.containsKey(weaponid)
                || !weapon_reload_ammo_AI.containsKey(weaponid)) {
            return;
      }
      if (ammo < weapon_reload_num.get(weaponid)) {// 补充备弹
            String commodity_id = weapon_reload_commodity.get(weapon.getId());
            ShipAPI ship = weapon.getShip();
            usecargo = checkCargoAvailable(engine, ship);
            if (commodity_id == null && usecargo) {
                usecargo = false;
            }
            CargoAPI cargo = null;
            if (usecargo) {
                cargo = getCargo(engine, ship, weapon);
            }
            if (usecargo && cargo != null) {
                while (ammo < weapon_reload_num.get(weaponid) && cargo.getCommodityQuantity(commodity_id) > 1) {
                  if (ammo == -999) {
                        ammo = 0;
                  }
                  cargo.removeCommodity(commodity_id, 1);
                  ammo += weapon_reload_commodity_ammo.get(weaponid);
                }
            } else {
                if (ship.getOwner() != engine.getPlayerShip().getOwner()) {
                  if (ammo == -999) {//给AI添加备用弹药,仅限一次
                        ammo = weapon_reload_ammo_AI.get(weaponid);
                  }
                } else {
                  if (ammo == -999) {
                        ammo = 0;
                  }
                  while (ammo < weapon_reload_num.get(weaponid)) {
                        ammo += weapon_reload_commodity_ammo.get(weaponid);
                  }
                }
            }
      }
      if(ammo<=0){
            return;
      }
      int now = weapon.getAmmo();
      if (now <= weapon_reload_start.get(weaponid)) {//当弹药量小于设定值,开始装填
            timer += amount;
            if (timer >= weapon_reload_time.get(weaponid)) {
                timer = 0;
                int r =weapon_reload_num.get(weaponid);
                if(r>ammo){
                  r=ammo;
                }
                weapon.setAmmo(now+r);
                ammo-=r;
            }
      }
    }
}

cjy4312 发表于 2023-4-12 16:02:21

我看你好像自己写出来了,给你提醒一下:
{:5_127:}
抽取货物的代码写一个关于试驾的判定engine.isInCampaignSim()
试驾不要真的去抽货物了,不然如果用了稀有道具去装填血亏到爆炸

冷龙在睡觉 发表于 2023-4-12 16:51:25

cjy4312 发表于 2023-4-12 16:02
我看你好像自己写出来了,给你提醒一下:

抽取货物的代码写一个关于试驾的判定engine.isInCampai ...

我测 谢谢大佬,但是已经根据您那个基础上摸索出来了,试驾装填判定也在写出来的时候发现了这么个问题,目前来说好像就剩下那个莫名其妙的全星域缺货问题了...这个物品能设置全星域市场库存不缺货吗...?感觉这东西似乎没那么好搞
阿里嘎多!膜拜一下大佬{:5_124:}

cjy4312 发表于 2023-4-12 19:07:32

冷龙在睡觉 发表于 2023-4-12 16:51
我测 谢谢大佬,但是已经根据您那个基础上摸索出来了,试驾装填判定也在写出来的时候发现了这么个问题, ...

你可以新建一个Market Condition,就是在市场界面右上角那些小方框的buff,apply里面添加需求你这个新物品(Demand) ,然后在modPlugin的onNewGame函数里面,在开新档时运行代码,寻找你想要设置需求的星球,并添加一个这个condition
原版星球市场的id我记得在campaign文件夹里某个文件里有

cjy4312 发表于 2023-4-12 19:23:18

这么做的前提是你做好了能生产这种货物的工业设施并且已经在地图上放置了。
如果你是既没有星球能生产也没有星球有需求,但是希望这种货物铺遍各处而且不会因为缺货价格虚高的话,condition里面不止要设置需求(Demand),还要设置供给(Supply),数值设置为1:1
如果你想要这种货物通过工业设施生产,你得写一个自己的工业并且通过代码添加到星球市场里。

阿西吧啦 发表于 2023-4-16 23:08:10

测试测试,大佬牛逼{:5_118:}

EtrnOlyet 发表于 2023-4-19 00:36:21

支持!

冷龙在睡觉 发表于 2023-4-19 00:37:32

旧年酱 发表于 2023-4-19 00:36
支持!

{:5_124:}

冉042 发表于 2023-4-20 17:33:32

6666

维尔拉 发表于 2023-4-21 17:19:08

期待

弹道无痕 发表于 2023-4-21 18:38:07

6666666666666

OmegaΩ 发表于 2023-4-21 20:35:00

666

茶念 发表于 2023-5-5 23:08:35

喵!喵?喵。喵!!

长空之舞 发表于 2023-5-6 23:27:43

加油更新

羽夜之殇 发表于 2023-5-7 15:28:22

期待期待

quin33 发表于 2023-5-8 11:55:39

EVE可还行

2375436554 发表于 2023-5-8 13:29:20

可以下载吗?

huihui 发表于 2023-5-8 15:35:44

::D

LittleMercy 发表于 2023-5-9 20:30:36

{:tieba_43:}牛的,希望坚持下去

深海余烬 发表于 2023-5-9 22:21:16

大佬牛啤

doc. 发表于 2023-5-13 16:23:47

::lol

狼符 发表于 2023-5-13 22:19:35

想试试

PanCake 发表于 2023-5-13 23:22:50

666666666
页: [1] 2
查看完整版本: [mod制作中]CRSID跨河系统合部—你甚至能在远行星号中玩EVE