[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
都统合部了,加点马裤螺丝要素呗,带核弹能全弹发射的战斗机
核弹小飞机倒是能搞,但是那样的话直接大航全上重轰带核弹岂不秒天秒地{:5_124:} 注意可能的版权问题就好 冷龙在睡觉 发表于 2023-3-31 15:03
核弹小飞机倒是能搞,但是那样的话直接大航全上重轰带核弹岂不秒天秒地 ...
像骤雨机甲那样的带核弹的驱逐/护卫飞机 XZCW 发表于 2023-3-31 15:10
像骤雨机甲那样的带核弹的驱逐/护卫飞机
空间站可能会搞,加进去内置的驱逐护卫飞机
主要是核弹这个玩意就怕平衡性搞炸了{:5_132:} 屠戏人间 发表于 2023-3-31 15:05
注意可能的版权问题就好
结尾有这方面的注释说明啦
如果确实有版权问题我直接撤销公开的{:5_124:} 早年有过这么一个EVE的MOD,还没玩游戏就更新了。期待楼主早点搞出来 111222333 发表于 2023-3-31 15:41
早年有过这么一个EVE的MOD,还没玩游戏就更新了。期待楼主早点搞出来
还真没听过,是远古版本嘛{:5_127:} 支持 冷龙在睡觉 发表于 2023-3-31 15:43
还真没听过,是远古版本嘛
远古版本了,好像是0.6~0.7时代的 本帖最后由 冷龙在睡觉 于 2023-4-1 04:56 编辑
看看这个点还有没有没睡的神仙{:5_124:},更新一丢丢怪东西
顺带着把不好看的小槽武器贴图重新画了一下,虽然还是不好看但是至少能看了,我再把四艘穿梭机的细节改一改,看看能不能尽早先传个能玩的上来{:5_127:}
////
修图修了一晚上...感觉还是不咋地...就这样先端上来罢(
小槽武器我再看看,虽然大修完了但是感觉细节还能在更好,修一修修一修,质量为上
果然我在美工这方面还是一窍不通(碎碎念)
冷龙在睡觉 发表于 2023-4-1 03:02
看看这个点还有没有没睡的神仙,更新一丢丢怪东西
顺带着把不好看的小槽武器贴图重新画了一下,虽 ...
没有休闲,但是起床了(早起确认)。 突然想起了cjb里可以从货仓填充的导弹,这能不能弄个船插,让武器自动选择填充货仓里不同的导弹/晶体/弹药,就想eve本游那样,从而获得不同的加成,这样子和别的mod比,一下子就有特色了
还可以名正言顺的的搞超模主力舰 XZCW 发表于 2023-4-2 00:14
突然想起了cjb里可以从货仓填充的导弹,这能不能弄个船插,让武器自动选择填充货仓里不同的导弹/晶体/弹药 ...
可以搞得,我先看看能不能整吧,主要是两个游戏花的弹药什么的数量也不一样,想要平衡一些的数据是有点难搞得{:5_124:}
加进计划小本本,改天就去看看代码是怎么实现的(雾 冷龙在睡觉 发表于 2023-4-2 00:18
可以搞得,我先看看能不能整吧,主要是两个游戏花的弹药什么的数量也不一样,想要平衡一些的数据是有点难 ...
可以单位弄成箱,比如一箱导弹占货仓1,可以填充12发导弹这样 XZCW 发表于 2023-4-2 00:23
可以单位弄成箱,比如一箱导弹占货仓1,可以填充12发导弹这样
有道理,明天看看,今天不修仙了{:5_128:} 冷龙在睡觉 发表于 2023-4-2 00:24
有道理,明天看看,今天不修仙了
我测,怎么这么难...
我得花几天琢磨琢磨代码,所以先一边摸出来四艘护卫舰一边研究这个效果,这样的话武器特殊效果先不上线了,到时候放测试版可能还写不出来效果,就是个纯数值武器(雾 研究半夜一看时间快四点了,今天又是修仙的一天{:5_132:} 还是注意一下身体吧,这么快燃烧殆尽小心身体{:tieba_30:} 维尔拉 发表于 2023-4-4 17:55
还是注意一下身体吧,这么快燃烧殆尽小心身体
会注意的会注意的,一般还是作息规律些,谢谢关心{:5_124:} 冷龙在睡觉 发表于 2023-3-31 15:03
核弹小飞机倒是能搞,但是那样的话直接大航全上重轰带核弹岂不秒天秒地 ...
直接配置点数高上天,只能带一架 想法很好,我也喜欢EVE,不过你的 工作量真的巨大。感觉这无畏舰就巨期待人。 尾焰 发表于 2023-4-4 23:11
想法很好,我也喜欢EVE,不过你的 工作量真的巨大。感觉这无畏舰就巨期待人。 ...
没办法啊,话说出来了不能咕咕咕啊(
会尽力去还原大部分eve的船(当然,保证平衡的前提下)
以及现在在做从货舱拿子弹在战斗中使用的效果...我还得搓船模
因为就我一个人做,效率没多高,所以距离第一个测试版丢出来可能还要一小段时间{:5_132:}
感谢支持的说{:5_124:} 这个已经很简单了,给船加个listener 然后监控舰队里的cargo就行了
别的大佬是这么回我的
@zyx 大佬说简单,可以试试问问他怎么弄
{:5_124:}写出来了 但是可能因为没有生产设施的原因这个玩意全星域缺货...价格奇贵无比...
我也没啥解决办法,只能把武器子弹数调高到一场战斗装不了多少发的水平(比如几百发最大弹容,反正开场会默认装满)
是时候考虑写个军工厂设施用来造弹药了(但我不会写啊寄)
我先把驱逐搓出来 然后发个测试版...可能放论坛,也可能给群放群文件
{:5_118:}稍等,今天晚上我有时间给你贴个方便版的装填系统代码 本帖最后由 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;
}
}
}
}
我看你好像自己写出来了,给你提醒一下:
{:5_127:}
抽取货物的代码写一个关于试驾的判定engine.isInCampaignSim()
试驾不要真的去抽货物了,不然如果用了稀有道具去装填血亏到爆炸 cjy4312 发表于 2023-4-12 16:02
我看你好像自己写出来了,给你提醒一下:
抽取货物的代码写一个关于试驾的判定engine.isInCampai ...
我测 谢谢大佬,但是已经根据您那个基础上摸索出来了,试驾装填判定也在写出来的时候发现了这么个问题,目前来说好像就剩下那个莫名其妙的全星域缺货问题了...这个物品能设置全星域市场库存不缺货吗...?感觉这东西似乎没那么好搞
阿里嘎多!膜拜一下大佬{:5_124:} 冷龙在睡觉 发表于 2023-4-12 16:51
我测 谢谢大佬,但是已经根据您那个基础上摸索出来了,试驾装填判定也在写出来的时候发现了这么个问题, ...
你可以新建一个Market Condition,就是在市场界面右上角那些小方框的buff,apply里面添加需求你这个新物品(Demand) ,然后在modPlugin的onNewGame函数里面,在开新档时运行代码,寻找你想要设置需求的星球,并添加一个这个condition
原版星球市场的id我记得在campaign文件夹里某个文件里有 这么做的前提是你做好了能生产这种货物的工业设施并且已经在地图上放置了。
如果你是既没有星球能生产也没有星球有需求,但是希望这种货物铺遍各处而且不会因为缺货价格虚高的话,condition里面不止要设置需求(Demand),还要设置供给(Supply),数值设置为1:1
如果你想要这种货物通过工业设施生产,你得写一个自己的工业并且通过代码添加到星球市场里。 测试测试,大佬牛逼{:5_118:} 支持! 旧年酱 发表于 2023-4-19 00:36
支持!
{:5_124:} 6666 期待 6666666666666 666 喵!喵?喵。喵!! 加油更新 期待期待 EVE可还行 可以下载吗? ::D {:tieba_43:}牛的,希望坚持下去 大佬牛啤 ::lol 想试试 666666666
页:
[1]
2