sarbian

[1.8.x-1.10.x] Module Manager 4.1.4 (July 7th 2020) - Locked inside edition

Recommended Posts

I'm trying to create a config for the SimpleFuelSwitch mod and this is pretty much the first time I'm writing a MM patch which contains more than a couple of row, so I have a couple of questions here^^

The Config is supposed to add every fuel type to every fuel tank but it is also configurable in a separate config file. The config file is not part of the mod, this is just my idea how to realize this via MM.

My testing config file contains these values:

SFS_Alternative_Config
{
	//LF_Only tanks	
	LF_Add_LFO = true
	LF_Add_Ox = false
	LF_Add_Mono = false
	LF_Add_Xe = true
	
	//LFO tanks	
	LFO_Add_LF = false
	LFO_Add_Ox = true
	LFO_Add_Mono = true
	LFO_Add_Xe = true
	
	//MonoProp tanks
	Mono_Add_LF = false
	Mono_Add_LFO = false
	Mono_Add_Ox = true
	Mono_Add_Xe = false
	
	//Xenon tanks
	Xe_Add_LF = true
	Xe_Add_LFO = true
	Xe_Add_Ox = true
	Xe_Add_Mono = true
}

The actual patch (not finished yet):

//Add dummy modules to write the config settings into the required parts
//These modules can be used to set up MM filter to progress further 

//Take care of LF only tanks
@PART[*]:HAS[@RESOURCE[LiquidFuel],!RESOURCE[Oxidizer],!RESOURCE[IntakeAir]]
{
	//Add dummy module
	MODULE
	{
		name = SFS_LF
		LF_Add_LFO = #$@SFS_Alternative_Config/LF_Add_LFO$
		LF_Add_Ox = #$@SFS_Alternative_Config/LF_Add_Ox$
		LF_Add_Mono = #$@SFS_Alternative_Config/LF_Add_Mono$
		LF_Add_Xe = #$@SFS_Alternative_Config/LF_Add_Xe$
		LF_Amount = #$/RESOURCE[LiquidFuel]/amount$
		LF_MaxAmount = #$/RESOURCE[LiquidFuel]/maxAmount$		
	}	
	//Remove stock LF resources
	//!RESOURCE[LiquidFuel] {}
}

//Take care of LFO tanks
@PART[*]:HAS[@RESOURCE[Oxidizer],@RESOURCE[LiquidFuel],!MODULE[ModuleEnginesFX],!MODULE[ModuleCommand]]
{
	//Add dummy module
	MODULE
	{
		name = SFS_LFO
		LFO_Add_LF = #$@SFS_Alternative_Config/LFO_Add_LF$
		LFO_Add_Ox = #$@SFS_Alternative_Config/LFO_Add_Ox$
		LFO_Add_Mono = #$@SFS_Alternative_Config/LFO_Add_Mono$
		LFO_Add_Xe = #$@SFS_Alternative_Config/LFO_Add_Xe$
		LF_Amount = #$/RESOURCE[LiquidFuel]/amount$
		LF_MaxAmount = #$/RESOURCE[LiquidFuel]/maxAmount$
		Ox_Amount = #$/RESOURCE[Oxidizer]/amount$
		Ox_MaxAmount = #$/RESOURCE[Oxidizer]/maxAmount$
	}	
	//Remove stock LFO resources
	//!RESOURCE[LiquidFuel] {}
	//!RESOURCE[Oxidizer] {}
}

//Take care of monoprop tanks
@PART[*]:HAS[@RESOURCE[MonoPropellant],!MODULE[ModuleCommand]]
{
	//Add dummy module
	MODULE
	{
		name = SFS_MONO
		Mono_Add_LF = #$@SFS_Alternative_Config/Mono_Add_LF$
		Mono_Add_LFO = #$@SFS_Alternative_Config/Mono_Add_LFO$
		Mono_Add_Ox = #$@SFS_Alternative_Config/Mono_Add_Ox$
		Mono_Add_Xe = #$@SFS_Alternative_Config/Mono_Add_Xe$
		Mono_Amount = #$/RESOURCE[MonoPropellant]/amount$
		Mono_MaxAmount = #$/RESOURCE[MonoPropellant]/maxAmount$
	}	
	//Remove stock LFO resources
	//!RESOURCE[MonoPropellant] {}
}

//Take care of xenon tanks
@PART[*]:HAS[@RESOURCE[XenonGas]]
{
	//Add dummy module
	MODULE
	{
		name = SFS_XENON
		Xe_Add_LF = #$@SFS_Alternative_Config/Xe_Add_LF$
		Xe_Add_LFO = #$@SFS_Alternative_Config/Xe_Add_LFO$
		Xe_Add_Ox = #$@SFS_Alternative_Config/Xe_Add_Ox$
		Xe_Add_Mono = #$@SFS_Alternative_Config/Xe_Add_Mono$
		Xe_Amount = #$/RESOURCE[XenonGas]/amount$
		Xe_MaxAmount = #$/RESOURCE[XenonGas]/maxAmount$
	}	
	//Remove stock LFO resources
	//!RESOURCE[XenonGas] {}
}

//Add SimpleFuelSwitch module if any fuel type is added
//LF tanks            
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_LFO[true]]|[#LF_Add_Ox[true]]|[#LF_Add_Mono[true]]|[#LF_Add_Xe[true]]]
{	
	MODULE
	{
		name = ModuleSimpleFuelSwitch
	}
}

//LFO tanks
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_LF[true]]|[#LFO_Add_Ox[true]]|[#LFO_Add_Mono[true]]|[#LFO_Add_Xe[true]]]
{	
	MODULE
	{
		name = ModuleSimpleFuelSwitch
	}
}

//MonoProp tanks
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_LFO[true]]|[#Mono_Add_Ox[true]]|[#Mono_Add_LF[true]]|[#Mono_Add_Xe[true]]]
{	
	MODULE
	{
		name = ModuleSimpleFuelSwitch
	}
}

//Xenon tanks
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_LFO[true]]|[#Xe_Add_Ox[true]]|[#Xe_Add_Mono[true]]|[#Xe_Add_LF[true]]]
{	
	MODULE
	{
		name = ModuleSimpleFuelSwitch
	}
}

//Add fuel resources for SimpleFuelSwitch

//LF tanks
//Add default fuel
@PART[*]:HAS[@MODULE[SFS_LF],@MODULE[ModuleSimpleFuelSwitch]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_only
		displayName = #SimpleFuelSwitch_LiquidFuel
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		isDefault = true
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
		}
	}
}

//Add LFO
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_LFO[true]]]
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_oxidizer
		displayName = #SimpleFuelSwitch_LiquidFuelAndOxidizer
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount *= 0.45
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount *= 0.45
		}
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount *= 0.55
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount *= 0.55
		}
	}
}

//Add MonoProp
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_Mono[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = mono_only
		displayName = #SimpleFuelSwitch_Mono
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = MonoPropellant
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount *= 1.25 
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount *= 1.25 
		}
	}
}

//Add Ox_Only
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_Ox[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = oxidizer_only
		displayName = #SimpleFuelSwitch_OxOnly
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount /= 0.45
			@amount *= 0.55
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount /= 0.45
			@maxAmount *= 0.55
		}
	}
}

//Add Xenon
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_Xe[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = xenon_only
		displayName = #SimpleFuelSwitch_Xenon
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = XenonGas
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount *= 50 
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount *= 50
		}
	}
}

//LFO tanks
//Add default fuel
@PART[*]:HAS[@MODULE[SFS_LFO],@MODULE[ModuleSimpleFuelSwitch]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_oxidizer
		displayName = #SimpleFuelSwitch_LiquidFuelAndOxidizer
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		isDefault = true
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
		}
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_LFO]/Ox_Amount$
			maxAmount = #$/MODULE[SFS_LFO]/Ox_MaxAmount$
		}
	}
}

//Add LF_Only
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_LF[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_only
		displayName = #SimpleFuelSwitch_LiquidFuel
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			@amount += #$/MODULE[SFS_LFO]/Ox_Amount$
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
			@maxAmount += #$/MODULE[SFS_LFO]/Ox_MaxAmount$
		}
	}
}

//Add MonoProp
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_Mono[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = mono_only
		displayName = #SimpleFuelSwitch_Mono
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = MonoPropellant
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			@amount += #$/MODULE[SFS_LFO]/Ox_Amount$
			@amount *= 1.25
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
			@maxAmount += #$/MODULE[SFS_LFO]/Ox_MaxAmount$
			@maxAmount *= 1.25
		}
	}
}

//Add Ox_Only
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_Ox[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = oxidizer_only
		displayName = #SimpleFuelSwitch_OxOnly
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			@amount += #$/MODULE[SFS_LFO]/Ox_Amount$
			@amount *= #$/MODULE[SFS_LFO]/Ox_Amount$
			@amount /= #$/MODULE[SFS_LFO]/LF_Amount$
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
			@maxAmount += #$/MODULE[SFS_LFO]/Ox_MaxAmount$
			@maxAmount *= #$/MODULE[SFS_LFO]/Ox_Amount$
			@maxAmount /= #$/MODULE[SFS_LFO]/LF_Amount$
		}
	}
}

//Add Xenon
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_Xe[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = xenon_only
		displayName = #SimpleFuelSwitch_Xenon
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = XenonGas
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			@amount += #$/MODULE[SFS_LFO]/Ox_Amount$
			@amount *= 50
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
			@maxAmount += #$/MODULE[SFS_LFO]/Ox_MaxAmount$
			@maxAmount *= 50
		}
	}
}

//MonoProp tanks
//Add default fuel
@PART[*]:HAS[@MODULE[SFS_MONO],@MODULE[ModuleSimpleFuelSwitch]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = mono_only
		displayName = #SimpleFuelSwitch_Mono
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		isDefault = true
		RESOURCE
		{
			name = MonoPropellant
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$			
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$		
		}		
	}
}

//Add LF_Only
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_LF[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_only
		displayName = #SimpleFuelSwitch_LiquidFuel
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 0.8
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 0.8
		}
	}
}

//Add LFO
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_LFO[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_oxidizer
		displayName = #SimpleFuelSwitch_LiquidFuelAndOxidizer
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 0.36
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 0.36
		}
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 0.44
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 0.44
		}
	}
}

//Add Ox_Only
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_Ox[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = oxidizer_only
		displayName = #SimpleFuelSwitch_OxOnly
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 0.44
			@amount /= 0.45
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 0.44
			@maxAmount /= 0.45
		}
	}
}

//Add Xenon
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_Xe[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = xenon_only
		displayName = #SimpleFuelSwitch_Xenon
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = XenonGas
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 40
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 40
		}
	}
}

//Xenon tanks
//Add default fuel
@PART[*]:HAS[@MODULE[SFS_XENON],@MODULE[ModuleSimpleFuelSwitch]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = xenon_only
		displayName = #SimpleFuelSwitch_Xenon
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		isDefault = true
		RESOURCE
		{
			name = XenonGas
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$			
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
		}
	}
}

//Add LF_Only
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_LF[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_only
		displayName = #SimpleFuelSwitch_LiquidFuel
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.02
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.02
		}
	}
}

//Add LFO
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_LFO[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_oxidizer
		displayName = #SimpleFuelSwitch_LiquidFuelAndOxidizer
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.009
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.009
		}
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.011
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.011
		}
	}
}

//Add MonoProp
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_Mono[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = mono_only
		displayName = #SimpleFuelSwitch_Mono
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = MonoPropellant
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.025
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.025
		}
	}
}

//Add Ox_Only
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_Ox[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = oxidizer_only
		displayName = #SimpleFuelSwitch_OxOnly
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.011
			@amount /= 0.45
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.011
			@maxAmount /= 0.45
		}
	}
}

Basically:

  • I'm writing the config values into a dummy module
  • add this module to each tank that is supposed to be changed (so I can use the name of the dummy module in the filter)
  • If at least one of these values is true, add the module 'ModuleSimpleFuelSwitch'
  • If the dummy module AND ModuleSimpleFuelSwitch is available, add the default fuel type
  • If the dummy module is available, add other fuels as well
  • (Missing so far: remove stock resource entries and the dummy modules after everything is done)

So my questions so far:

Is it possible to multiply factions of numbers, so I can simplify terms like this:

maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
@maxAmount *= 0.011
@maxAmount /= 0.45

This 'OR' query does not work properly and actually just checks the very first value (:HAS[#LF_Add_LFO[true] in this case):

@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_LFO[true]]|[#LF_Add_Ox[true]]|[#LF_Add_Mono[true]]|[#LF_Add_Xe[true]]]

I cannot figure out what's wrong there...ideas?

In general: Is this a proper approach? Does it make sense to split the patch in these small steps? Any suggestions for improvements? :)

edit:

Apparently, using the 'OR' operator in a :HAS block will only parse the first value:

@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_LFO[true]]|@MODULE[SFS_LF]:HAS[#LF_Add_Ox[true]]]

^ this doesn't work.

BUT, the 'AND' operator works fine, so:

@PART[*]:HAS[@MODULE[SFS_LF]:HAS[!#LF_Add_LFO[false]],@MODULE[SFS_LF]:HAS[!#LF_Add_Ox[false]]]

^ will do the job.

Basically, I cannot check multiple entries to be 'true' but I can check multiple values to be not 'false'. Sounds like a bug to me :o

Nope, still doesn't work if both values are 'false'

Edited by 4x4cheesecake

Share this post


Link to post
Share on other sites

I updated my modded save to KSP 1.6.1 and every time I've loaded it up, It crashes when trying to load the part configs. I kept removing mods that it crashed while loading, but it kept crashing on a different one. I narrowed down the problem to Module Manager, and when I removed it, KSP loaded fine with no errors. I then stripped down the GameData folder to nothing but stock files and a single test config. It loaded everything fine.

Here is the crash file.

Screenshot of GameData folder here.

All mods are up to date, including Module Manager.

Nevermind, It was InFlightFlagSwitcher that was causing the crash.

Edited by Mrsupersonic8

Share this post


Link to post
Share on other sites
2 hours ago, Mrsupersonic8 said:

I updated my modded save to KSP 1.6.1 and every time I've loaded it up, It crashes when trying to load the part configs. I kept removing mods that it crashed while loading, but it kept crashing on a different one. I narrowed down the problem to Module Manager, and when I removed it, KSP loaded fine with no errors. I then stripped down the GameData folder to nothing but stock files and a single test config. It loaded everything fine.

Here is the crash file.

Screenshot of GameData folder here.

All mods are up to date, including Module Manager.

 

Can you provide the log (just KSP.log or output_log.txt will do) from when you actually experienced the crash?  It doesn't look like ModuleManager was installed when that output_log.txt was generated

E: that output_log.txt is from KSP 1.3.1 - maybe it was just left over in an upgraded install?  Unity writes that file to %AppData%/LocalLow/Squad/Kerbal Space Program/ now

Edited by blowfish

Share this post


Link to post
Share on other sites
1 hour ago, emirkustirika said:

https://imgur.com/QrO2Rc1

where is the log or same thing  Explanation this i search but not find ??? 

where is the 1 warning Explanation ???

It's in the log somewhere.  Post it and I can look through, unfortunately there's not an easy way to find them.

Share this post


Link to post
Share on other sites
3 hours ago, emirkustirika said:

DecouplerShroud when i install this mod modul manager  have the 1 warning 

 

https://drive.google.com/file/d/1Jb5nd37Vv0voJPJ0CZRo3rMg-fm_LHai/view?usp=sharing     this is the kps.log  file i hope  usefull

Thanks.  Since you uninstalled the mod before that log was generated I wasn't able to find the error in there, but since you figured out which mod it was I installed it and saw the warning

[WRN 13:16:31.683] [ModuleManager] more than one :HAS tag detected, ignoring all but the first: DecouplerShroud/DecouplerShroud/@PART[*]:FOR[DecouplerShroud]:HAS[@MODULE[ModuleDecouple]]:HAS[!MODULE[ModuleDecouplerShroud]]

It looks like it's actually already been fixed: https://github.com/nav0t/DecouplerShroud/commit/dad42944fdd7b32946763f703a65b0195056fa27 but the mod author just hasn't released a new version yet.  You could ask the author to release a new version to fix this, but in the mean time I think it's safe to allow this warning to happen and just ignore it.

Share this post


Link to post
Share on other sites

And sorry there will be no 1.3 build for this one. I tried but the code changes with the engine upgrade are way too large

I was wrong. See 2 post down

Edited by sarbian

Share this post


Link to post
Share on other sites
25 minutes ago, sarbian said:

Version 4.0.0

  • @blowfish worked his magic once more and now MM does the patching while the game loads the models and textures.

Downloads :

ModuleManager-4.0.0.zip

ModuleManager.4.0.0.dll

Does this eliminate the need for Hyperspace?

Share this post


Link to post
Share on other sites

 

7 minutes ago, linuxgurugamer said:

Does this eliminate the need for Hyperspace?

Nope. Hyperspace load the texture and models faster.

 

I managed to build it for 1.3

ModuleManager-4.0.0.zip

ModuleManager.4.0.0.dll

Those links are for KSP 1.3 only! See earlier post for 1.6

 

Share this post


Link to post
Share on other sites

Module Manager 4.0.0 seems to break the Community Tech Tree. It's been brought up in the CTT thread. I started a new career save and verified I did not have the correct tech tree. I reverted to 3.1.3 and the CTT tech tree was back.

Share this post


Link to post
Share on other sites

Just noticed the same thing in my KSP1.5.1 Career game. With MM4.0 the CTT Tech tree I had been using reverted to Stock. Switched back to MM3.1.3 and CTT was back.

Share this post


Link to post
Share on other sites
57 minutes ago, Tonka Crash said:

Module Manager 4.0.0 seems to break the Community Tech Tree. It's been brought up in the CTT thread. I started a new career save and verified I did not have the correct tech tree. I reverted to 3.1.3 and the CTT tech tree was back.

 

11 minutes ago, BlackHat said:

Just noticed the same thing in my KSP1.5.1 Career game. With MM4.0 the CTT Tech tree I had been using reverted to Stock. Switched back to MM3.1.3 and CTT was back.

Thanks, I'm looking into it

Share this post


Link to post
Share on other sites

Does MM allow for Partupgrades to use :NEEDS[modofchoice] ? If it does then I'm doing it wrong.

If it doesn't can we please have it added to the MM patch please.

Peace.

Share this post


Link to post
Share on other sites
4 minutes ago, theJesuit said:

Does MM allow for Partupgrades to use :NEEDS[modofchoice] ? If it does then I'm doing it wrong.

If it doesn't can we please have it added to the MM patch please.

Peace.

Any node or value at any level can use :NEEDS

Share this post


Link to post
Share on other sites
27 minutes ago, blowfish said:

Any node or value at any level can use :NEEDS

I must be misusing then.  I'll have a look.

Thanks. Peace.

Share this post


Link to post
Share on other sites
11 hours ago, sarbian said:

 

Nope. Hyperspace load the texture and models faster.

 

I managed to build it for 1.3

ModuleManager-4.0.0.zip

ModuleManager.4.0.0.dll

Those links are for KSP 1.3 only! See earlier post for 1.6

 

Might I suggest adding ‘_1.3’ and ‘_1.6’ to those filenames for their respective version?

Having them both have the same name yet different contents is a nightmare waiting to happen. 

Share this post


Link to post
Share on other sites
2 hours ago, Tonka Crash said:

Module Manager 4.0.0 seems to break the Community Tech Tree.

Just checked version for KSP 1.3 - the same issue with CTT, tech tree reverted to stock.

But I really like the new version loading  :)

Share this post


Link to post
Share on other sites
1 hour ago, blowfish said:

Any node or value at any level can use :NEEDS

PARTUPGRADE:NEEDS[Profilesimplex]:FOR[Kerbalism]
        {    name = Upgrade-Slots
             etc

When :NEEDS[Profilesimplex]:FOR[Kerbalism]  is added it produces a MM error.  The same NEEDS is used on parts with no problems.Can you point me in the right direction please?

EDIT

the ksp.log says:

 pass specifier detected on insert node (not a patch): AngleCanMods/SIMPLEXLiving/SIMPLEXLiving-KerbalismProfile/PARTUPGRADE:NEEDS[Profilesimplex]:FOR[Kerbalism]

so... if I made a part upgrade wand then patched it, it would then work?

 

Edited by theJesuit

Share this post


Link to post
Share on other sites
19 minutes ago, theJesuit said:

PARTUPGRADE:NEEDS[Profilesimplex]:FOR[Kerbalism]
        {    name = Upgrade-Slots
             etc

When :NEEDS[Profilesimplex]:FOR[Kerbalism]  is added it produces a MM error.  The same NEEDS is used on parts with no problems.Can you point me in the right direction please?

EDIT

the ksp.log says:

 pass specifier detected on insert node (not a patch): AngleCanMods/SIMPLEXLiving/SIMPLEXLiving-KerbalismProfile/PARTUPGRADE:NEEDS[Profilesimplex]:FOR[Kerbalism]

so... if I made a part upgrade wand then patched it, it would then work?

 

It's complaining about :FOR[Kerbalism] - the :NEEDS is fine.  Non-patch nodes can't have a pass - they're all inserted at the beginning.

Share this post


Link to post
Share on other sites
5 minutes ago, blowfish said:

It's complaining about :FOR[Kerbalism] - the :NEEDS is fine.  Non-patch nodes can't have a pass - they're all inserted at the beginning.

You're a star.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.