modulemanager's People
Forkers
dhxgit kaisforza bwheatley vosechu ozraven bfishman taraniselsu erendrake toadicus nathankell teknoman117 futuramaking robertgiesecke alewx pjf gerry1135 kitoma mgsdk csvoltage speedio kerbas-ad-astra felbourn sirdiazo starwaster stolld tonweight bengt anxcon techman83 jplrepo nanathan kramax mwerle olympic1 xchgrbprsp fatalhermit shadowmage45 ihsoft jrossignol threebiscuits ksp-modularmanagement satanicmadman mark-breen slipstreamza jestersage zhumoumoumou crab453 cake-pie smartdummies imperceptum inadequated sibyrd cbase2 ackcen yixi435 hebarusan ysdavy sigma88 voidcosmo tuita520 monniasza tomfancy joeh1234 gregorrycz guilucand cscala2 elitelex stmen filomino al2me6 raysab colton103 scottdb8 kanixlix spacemir1 hangao0905 mrcolin99 mamengda vortiger2 kozzakrr staticboi emeraldik43 ziroven joshua12432 shonertns tinygrox adadadwafsertgeadwad linuxgurugamer kspmodstewards jayfu763 tem016modulemanager's Issues
KSP stuck on loading applying module manager patches
While loading KSP when it says loading Module manager patches it gets stuck at the part FS nose engine electric and just sits there. If I remove Firespitter it loads I've tried deleteing the module manager cache and reinstalling it.
From KSP log
'Firespitter/Parts/Engine/FS_noseEngineElectric/part/FSnoseEngineElectric'
[ERR 17:44:23.819] [ShipTemplate]: No Resource definition found for RESOURCE
[LOG 17:44:23.822] FSCoolant not found in resource database. Propellant Setup has failed.
[EXC 17:44:23.824] NullReferenceException: Object reference not set to an instance of an object
ModuleEngines.SetupPropellant ()
ModuleEngines.OnLoad (.ConfigNode node)
PartModule.Load (.ConfigNode node)
Part.AddModule (.ConfigNode node)
PartLoader.ParsePart (.UrlConfig urlConfig, .ConfigNode node)
PartLoader+��.MoveNext ()
[EXC 17:44:23.827] NullReferenceException: Object reference not set to an instance of an object
Firespitter.engine.FSengineSounds.createGroup (.FXGroup group, System.String name, Boolean loop)
Firespitter.engine.FSengineSounds.OnStart (StartState state)
Part.ModulesOnStart ()
Part+��.MoveNext ()
[LOG 17:44:41.074] RemoteTech: ModuleRTAntennaPassive: OnDestroy
Making on linux?
I have no idea how to make it on linux. simply trying to make yeilds error CS0006: Metadata file 'UnityEngine' could not be found
. I assume I have to get the unity editor, but is there a mistake in the file first?
delete issues in 2.6.15
there's an issue in 2.6.15 with the delete (!) command for keys.
how to reproduce:
//// CFG /////////////////
TESTNODE
{
testkey = 0
testkey = 1
testkey = 2
testkey = 3
}
@TESTNODE
{
!testkey,* = DEL
}
//////////////////////////
// RESULT ////////////////
UrlConfig
{
name = TESTNODE
type = TESTNODE
parentUrl = /test
url = /test/TESTNODE
TESTNODE
{
testkey = 1
testkey = 2
testkey = 3
}
}
//////////////////////////
!testkey,* = DEL
should delete all "testkey"s but deletes only the first one instead
I guess this is not intended, maybe it has something to do with the patch @ThomasKerman added for issue #37
Feature request: Multiple HAS conditions.
As far as I can tell, (I didn't read the source that deeply, but extant documentation and experiments seem to indicate so) only one HAS condition is allowed per patch.
It would significantly help to have more than one though, because see comments here: https://github.com/Mihara/RasterPropMonitor/blob/master/RasterPropMonitor/Auxiliary%20modules/JSITransparentPod.cs#L254
Target All keys bug
using the feature FindAndReplace is now failing to apply when targetting all keys with ,*
Steps to reproduce:
1- clean install of KSP 1.2.1
2- MM 2.7.2
3- following custom config
TEST
{
key = 1 2 3 4
key = 4 5 6 7
key = 7 8 9 0
key = 10 11
}
@TEST
{
@key ^= :$:x:
@key,* ^= :$:y:
@key,1 ^= :$:z:
@key,* ^= :4:w:
@key,2 ^= :7:k:
}
this is what the cache contains at the end:
UrlConfig
{
name = TEST
type = TEST
parentUrl = /TEST
url = /TEST/TEST
TEST
{
key = 1 2 3 4x
key = 4 5 6 7z
key = k 8 9 0
key = 10 11
}
}
as you can see the only missing letters are y and w which are both supposed to be applied to all keys by using ,*
find attached logs and other relevant files
(I've added .txt at the end, because github)
Spaces in Part name
Is there any way to properly deal with spaces in a part name while making a config? I am currently just putting a * where the space should go, but I would like to use a more eloquent solution if it is available.
White space errors message not readable.
A edit will Generate a error if there is a space in the wrong place
@PART[DERP_FuelCan | DERP_InlineTank] {...}
compared to
@PART[DERP_FuelCan|DERP_InlineTank] {...}
This error is very hard to find in the ksp logs.
MM_REINITIALIZE not working
KSP-1.3, MM 2.8.0
Hi.
I'm trying to utilize the MM_REINITIALIZE feature as described in the Wiki.
The setup is as follows:
- A mod (ConfigurableContainers) is installed and a vessel is launched.
- This vessel contains a stock part with a ModuleSwitchableTank installed via MM patch.
- The game is saved and exited.
- Then I edit the MM patch and replace ModuleSwitchableTank with the ModuleTankManager.
- The game is loaded again, and ModuleTankManager tries to check for MM_REINITIALIZE value in OnLoad to recreate its configuration from scratch in flight.
But its OnLoad method never gets called, and it ends up with the configuration copied from the prefab, which is the opposite to the desired behaviour.
Hidden folder support on Linux
On ubuntu the default folder for steam games is ~/.local/share/Steam/steamapps/common
The dialogue for selecting the location of KSP does not show any hidden folders, at least having the option to input the folder path manually would fix it. As a workaround I had to create a link.
MM gets stuck in load screen.
If MM loads (not from cache) and works on the cfg files it's getting stuck and only continuous to load when I click into the KSP screen. I run KSP with the options -popupwindow and -force-opengl.
This happens only if I change to my to my second screen and doing something there like reading emails and so on.
No errors in the log related to this.
Handled exception when reloading the game database
[LOG 20:08:42.437] [ModuleManager] Checking Cache
[LOG 20:08:42.459] [ModuleManager] Exception in IsCacheUpToDate : An element with the same key already exists in the dictionary.
at System.Collections.Generic.Dictionary`2[System.String,System.String].Add (System.String key, System.String value) [0x00000] in <filename unknown>:0
at ModuleManager.MMPatchLoader.IsCacheUpToDate () [0x00000] in <filename unknown>:0
at ModuleManager.MMPatchLoader+<ProcessPatch>d__46.MoveNext () [0x00000] in <filename unknown>:0
I noticed this when making changes for the prerelease, but confirmed on KSP 1.2.2 and the last official release of MM. I discovered that filesSha
isn't being cleared and MM tries to add all the configs in the database to it again.
Target all keys with a math operator bug
MM 2.7.3. Using target all keys with a math operator assigns garbage on the last match. It does appear to work fine with simple assignment. Can't access the server to grab the previous version. It does happen with 2.7.0 though.
(I'm trying to do this: @node_stack*,*[1,,] *= #$factor$
)
Addition:
MMADD
{
field_a = 1
field_b = 1
field_b = 1
field_c = 1
field_c = 1
field_c = 1
field_c = 1
}
@MMADD
{
@field_a,* += 2
@field_b,* += 2
@field_c,* += 2
}
Result:
MMADD
{
field_a = 15
field_b = 3
field_b = 13
field_c = 3
field_c = 3
field_c = 3
field_c = 9
}
Multiplication:
MMMULT
{
field_a = 1
field_b = 1
field_b = 1
field_c = 1
field_c = 1
field_c = 1
field_c = 1
}
@MMMULT
{
@field_a,* *= 2
@field_b,* *= 2
@field_c,* *= 2
}
Result:
MMMULT
{
field_a = 128
field_b = 2
field_b = 64
field_c = 2
field_c = 2
field_c = 2
field_c = 16
}
Assignment is ok:
MMASSIGN
{
field_a = 1
field_b = 1
field_b = 1
field_c = 1
field_c = 1
field_c = 1
field_c = 1
}
@MMASSIGN
{
@field_a,* = 2
@field_b,* = 2
@field_c,* = 2
}
Result:
MMASSIGN
{
field_a = 2
field_b = 2
field_b = 2
field_c = 2
field_c = 2
field_c = 2
field_c = 2
}
Doing math on vectors
these are a couple of features that I think could be really useful:
1 - the ability of doing math on vectors
example:
key = 1,0,3,4 // original vector
@key[1] += 2 // adds 2 to the second element in the vector
key = 1,2,3,4 // final result
2- the ability of targetting a specific vector in a node that has multiple copies of it
example:
Curve // Original Node
{
key = 1,2,3
key = 2,0,4
key = 3,4,5
}
@Curve
{
@key[1],1 += 3 // adds 3 to the second element, of the second "key"
}
Curve
{
key = 1,2,3
key = 2,3,4 // final result
key = 3,4,5
}
the syntax I used is just an example :)
PS:
I hope this will allow also for the modification of all "key" vectors by using " ,* " instead of a specific number
targetting + checking content weird bug
this is a really weird behaviour, when I made the test config I wasn't expecting this to be the result:
// CONFIG
TESTNODE
{
SUBNODE
{
name = one
}
SUBNODE
{
name = two
}
SUBNODE
{
name = three
}
}
@TESTNODE
{
@SUBNODE,1:HAS[#name[*]]
{
second = true
}
}
// RESULT
UrlConfig
{
name = TESTNODE
type = TESTNODE
parentUrl = /test
url = /test/TESTNODE
TESTNODE
{
SUBNODE
{
name = one
}
SUBNODE
{
name = two
second = true
}
SUBNODE
{
name = three
second = true
}
}
}
the behaviour is the same both in 2.6.13 and 2.6.16
1.1 and Kopernicus
looks like dies on reflection when loading Kopernicus.
My rig is linux, running ksp 64bit (don't be misled by log saying x86, it is a link to x86_64). happens on 2.6.18 and 21
https://gist.github.com/swavkulinski/a0536426d41fe01e2f3022350f267c50
Possible problem with long parameters for NEEDS.
OK Sarbian, sorry for last time let's try this again with a log file this time:
Using the same example as the last time, check my log at line 10199. The patch is applied even though FAR is not present. That particular patch is:
@part[quizTechMk1K10Cockpit]:NEEDS[FerramAerospaceResearch]:BEFORE[FerramAerospaceResearch]
{
@minimum_drag = 0
@maximum_drag = 0
@angularDrag = 0
!MODULE[ModuleLiftingSurface] {}
}
Cannot attach the ZIP file here for some reason, here is a link to it:
Checking pass-order as intended?
Hey Sarbian,
I'm very sorry to trouble you, but I'm in the process of writing a bunch of ModuleManager tutorials¹, as I keep finding myself needing to reference the same things over and over again, and assume other folks therefore must also do the same.
I'm wanting to check the pass order run by MM is "as intended". In particular, where a set of patches run depends on on if a mod has a .dll
or not. I keep being surprised when AIES_Aerospace
runs after RealismOverhaul
, because the first doesn't have a .dll
, and the second does.
At first glance these doesn't feel right; if AIES releases with a .dll
in the future, then the run ordering changes, and folks writing MM .cfgs
need to know if their target bundles a .dll
or not. (This came up because RealismOverhaul
clearly thought it was running after the AIES pass, but instead runs before it.)
If this is as-intended, I can say so in the tutorials. If not, then I can say the behaviour may change.
Many, many thanks!
~ Paul
¹ The tutorials are being written as part of my work on The Kerbal Book, which means they may take a little time to finish, but I can assure you they'll be unencumbered when they are.
Exception from doing stuff I shouldn't have
I deleted a file that I didn't need anymore while KSP was starting up, and managed to trigger this exception. I wouldn't bother to raise it, except that it did cause the coroutine to die, which caused KSP to stop loading. Also, figured it would be an easy enough fix, if you choose to do it.
[EXC 22:40:33.381] IsolatedStorageException: Could not find file "C:\Program Files (x86)\Kerbal Space Program\GameData\ContractConfigurator\kso.cfg".
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options)
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share)
System.IO.File.OpenRead (System.String path)
System.IO.File.ReadAllBytes (System.String path)
ModuleManager.MMPatchLoader.IsCacheUpToDate ()
ModuleManager.MMPatchLoader+<ProcessPatch>c__Iterator0.MoveNext ()
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
ModuleManager.MMPatchLoader:StartCoroutine(IEnumerator, Boolean)
ModuleManager.MMPatchLoader:StartLoad(Boolean)
ModuleManager.MMPatchLoader:StartLoad()
��:MoveNext()
target keys based on their value
I was thinking that it could be useful to have a way to target a key based on its value
let's say we have a node that looks like this:
BASKET
{
fruit = banana
fruit = blueberry
fruit = lemon
}
and a patch that looks like this:
@BASKET
{
@fruit:IS[lemon] = orange
!fruit:IS[banana] = DEL
}
to get this output:
BASKET
{
fruit = blueberry
fruit = orange
}
also, having support for wildcard characters and math would be awesome, so you could do :IS[*berry] or :IS[>0]
stuff like that
I could look into implement this myself, but I'm scared by MM code xD
so for now I'm putting the idea out there to see what ppl think about it
Cache patched configurations to speed up loading times
When launching KSP with modded installs, ModuleManager can frequently take a significant amount of time to patch all of the configurations that need patching. If ModuleManager could be modified to cache the patched files, this could help speed up loading times.
Crashes when ModuleManger trying to finish compiling B9 parts
When putting RemoteTech and B9 together, the ModuleManager seems cannot compile some parts of B9.
error.log
output_log.txt
Wrong version can run if all dlls aren't located in the same folder
The version election code doesn't work as-is because KSP only instantiates the last type loaded. A simple example:
[KSPAddon(KSPAddon.Startup.Instantly, true)]
public class VersionTester : MonoBehaviour
{
void Start()
{
print(string.Format("Hello, world from {0}", Assembly.GetExecutingAssembly().GetName().Version));
}
}
If you build three different versions of this, you'll end up with the output of only the last version loaded. Normally this will be the correct version assuming a sane naming scheme. If you name them out of order, you break the versioning.
What makes this subtle is that KSP appears to select the correct version regardless of name if the assemblies have same-name but differing version KSPAssembly attributes. But this only works for same-folder assemblies; otherwise it defaults to the breadth-first last-loaded assembly when resolving types.
A concrete example: let's say some mod distributes an outdated version of MM inside its own subfolder:
GameData/ModuleManager_1_5.dll
GameData/ModuleManager_1_6.dll
GameData/ModDistributingMM/ModuleManager_1_4.dll
In the above example, the wrong really old version will be loaded. The exact same version of any KSPAddon-carrying MonoBehaviours will then be run, once for each dll found. Even if you specify the exact type using reflection and try to instantiate a GameObject from a particular version, Unity will end up resolving to the latest-loaded type matching its name. The only way I could find around this was to put each version of the DLL in its own namespace.
Possible problem with long parameters for NEEDS.
After seeing several patches getting applied even though their NEEDS is not met, I have come to the following conclusion:
Long parameters are not processed correctly by NEEDS.
Prime example of this, verifiable on several mod that use similar syntax:
@part[aeroPartxx]:NEEDS[FerramAerospaceResearch]:BEFORE[FerramAerospaceResearch]
{
@minimum_drag = 0
@maximum_drag = 0
@angularDrag = 0
!MODULE[ModuleLiftingSurface] {}
}
Even though FerramAerospaceResearch IS NOT available, the patch still gets applied.
MM cache is not compatible with \n
example:
NODE
{
description = FirstLine\nSecondLine
}
will be saved to the cache as
UrlConfig
{
name = NODE
type = NODE
parentUrl = /test
url = /test/NODE
NODE
{
description = FirstLine
SecondLine
}
}
which means that when running KSP without MM cache the description will be loaded as
FirstLine\nSecondLine
while when running KSP and loading the nodes from the MM cache, the description will be loaded as just
FirstLine
/= operator produces the reciprocal of the expected value.
Test case:
The stock SP-L solar panel (solarPanels2
) has a mass of 0.025.
Apply this patch with MM 2.3.2:
$PART[solarPanels2] {
@name = solarPanelsMMTestDivide
@title = SP-L Solar Panels (hacked)
@mass /= 2
}
Expected: The "hacked" copy of the panel has a mass of 0.0125.
Actual: The "hacked" panel has a mass of 80.
Probable fix: Reverse the order of operands s
and os
on moduleManager.cs
line 1130.
The same problem likely affects the subtraction operator a few lines later.
Kerbal loading stuck at "ModuleManager: 369 patches loaded from cache"
Willing to get a more in depth bug report, let me know what you'd like to see (list of installed mods from CKAN, log files wherever they are)
Create-or-replace semantics with nodes that don't have a name
This is a follow-up to Majiir/Kethane#263. I'm interested in writing MM patches for parts that use the Kethane modules, which are identified by the (hopefully) unique identifier Name
, rather than the conventional name
. I've been running into the problem that create-or-replace syntax doesn't work if you can't identify a node by name
. Something like
%NODE[*]:HAS[#Name[Foo]]
doesn't work by design because of uniqueness issues. As @Majiir pointed out, the same problem can occur with other parts of the KSP config space, such as testing for the presence of an EXPERIMENT_DEFINITION
(where id
appears to be a unique key).
! Not deleting in .21
In a cfg I have
!mesh
Which used to remove "mesh=model". However when I check the database in game, the mesh=model key remains in ksp1.1. The various additions my cfg makes to the part in question appear as expected.
Among them is a MODEL{...} node of course.
Antennas cause crash
Allow renaming of value.name
Right now the only way to rename a value is to create a new value with the same data as the original, i.e.
MoonSrfLanded = #$MunSrfLanded$
!MunSrfLanded = DEL
It would be very convenient to have a new operator (is % used?) like
MunSrfLanded %= MoonSrfLanded
where the value.name would be changed to MoonSrfLanded.
Even better would be supporting
Mun* %= Moon*
Save File Backup
Your save file backup method can overwrite every .sfs file in the save file directory when it triggers, including the quicksave.sfs and any backup .sfs files present. I'm not sure exactly which circumstances trigger the plugin to create a backup folder, and overwrite the default files (needsBackup and needsSave both set to true).
Only the persistent.sfs should be updated, as the quicksave and any backup files may have been created for a reason and should not be overwritten, even if the backup folder contains the originals.
Cloned parts appear to be located in same path (file?) as originals
When queried by other plugins, cloned parts appear as if they're all added to the file of the original part.
Filter Extensions uses the cfg path for some of the filtering and I've had several queries about cloned & modded Squad parts showing up as Squad parts rather than the associated mod.
Is there reason that this is not the file the clone patch was located in?
Alternatively, is there any data pointing to the patch location?
FE uses the following to load the path to the part (assuming ap.partURL is invalid, which it normally is):
https://github.com/Crzyrndm/FilterExtension/blob/master/FilterExtension/LoadAndProcess.cs#L425-L432
using :BEFORE and :AFTER on the same node
not sure if this is how MM is intended to work, or if it's a bug so I'll just leave this here to discussion
when doing something like:
TESTNODE
{
name = testnode
}
@TESTNODE:FOR[MOD]
{
mod = now
}
@TESTNODE:BEFORE[MOD]:AFTER[MOD]
{
runs = now
}
basically, I wanted to check if I could use :BEFORE[MOD]:AFTER[MOD] to run the same patch 2 times once before and once after a certain mod
I was expecting 2 results, either:
1- The patch runs only at :BEFORE[] because it's the first condition that is met and then the patch is "deleted"
2- The patch runs both before and after the mod
of course, it didn't run at all :D
if this is not intended I can share logs
EDIT:
to clarify, MM throws no errors. but the cache only shows:
UrlConfig
{
name = testnode
type = TESTNODE
parentUrl = /test1
url = /test1/testnode
TESTNODE
{
name = testnode
mod = now
}
}
when if I use 2 different patches, one with BEFORE and one with AFTER the result is as you would expect:
UrlConfig
{
name = testnode
type = TESTNODE
parentUrl = /test1
url = /test1/testnode
TESTNODE
{
name = testnode
runs = now
mod = now
runs = now
}
}
Feature Request: Flags (and not the type you fly)
Is there a way we can get flag indicators. These are basically strings that would indicate either user preferences or the existence of mods.
For instance:
$FuelSwitch=Firespitter
could be used to set to use Firespitter fuelswitch to switch fuels.
and
$FuelSwitch=Intersteller
could be used to set to use Intersteller fuelswitch instead.
Likewise these two could be detected with
@if $FuelSwitch=Firespitter { . . . }
and
@if $FuelSwitch=Intersteller { . . . }
Likewise:
$Firespitter could indicate that Firespitter was installed AND should be used for mods that it is not mandatory for, without using problematic autodetection methods. By default it would be filled with a default value non-null value to indicate that the variable exists, because this type of flag would be searched for.
This would make life a lot easier for mod makers, who could best utilize the system provided to them.
& not working properly
I had reports that KWRocketry had issues with one of the tech node missing, so I investigated and found the following:
This is the original syntax:
RDNode :NEEDS[!CommunityTechTree&!B9_Aerospace]
The above syntax was not working, in that it was not seeing that both the CommunityTechTree & B9_Aerospace were not installed.
The following worked individually:
RDNode :NEEDS[&!B9_Aerospace]
and
RDNode :NEEDS[!CommunityTechTree]
but together, it fails.
here is a zip with all the logs: https://www.dropbox.com/s/y7xnckqlrrq7bq4/kw-mm%20logs.zip?dl=0
!EXPERIMENT_DEFINITION doesn't delete definition; duplicates cause KSP to throw exception
Affects: versions 1.5.6 and 2.0.3
A config like this:
!EXPERIMENT_DEFINITION[crewReport]
EXPERIMENT_DEFINITION
{
id = crewReport
title = Crew Report
baseValue = 5
scienceCap = 5
dataScale = 1
requireAtmosphere = False
situationMask = 63
biomeMask = 7
RESULTS
{
default = You record the crew's assessment of the situation.
}
}
Will cause two "crewReport" ConfigNodes to exist (verified by:)
foreach (var node in GameDatabase.Instance.GetConfigNodes("EXPERIMENT_DEFINITION"))
Log.Write("Experiment_def: {0}", node.ToString());
Then, any time ResearchAndDevelopment.GetExperimentIDs() is called, KSP will throw the following exception:
ArgumentException: An element with the same key already exists in the dictionary.
at System.Collections.Generic.Dictionary`2[System.String,ScienceExperiment].Add (System.String key, .ScienceExperiment value) [0x00000] in <filename unknown>:0
at ResearchAndDevelopment.loadExperiments () [0x00000] in <filename unknown>:0
at ResearchAndDevelopment.GetExperimentIDs () [0x00000] in <filename unknown>:0
at ScienceAlert.Settings..ctor () [0x00000] in <filename unknown>:0
at ScienceAlert.Settings.get_Instance () [0x00000] in <filename unknown>:0
at ScienceAlert.AudioController..ctor () [0x00000] in <filename unknown>:0
at ScienceAlert.EffectController..ctor (ScienceAlert.ScienceAlert indi) [0x00000] in <filename unknown>:0
at ScienceAlert.ScienceAlert.Start () [0x00000] in <filename unknown>:0
@<node>,1 adds to first resource if there is only one.
When running the following script "testval" is added to the first resource (index 0) if there is only one.
@PART[*]:HAS[@RESOURCE[MonoPropellant]]
{
@RESOURCE,1
{
testval = yes
}
}
Any part that has ONLY MonoPropellant as a resource will have "testval" set on the resource. If the part has more than one resource, including MonoPropellant, "testval" is correctly added to the second resource (index 1).
If this is expected behavior, please close.
Killing KSP invalidates the cache
If I exit KSP properly, "Leave to main menu -> back -> quit -> yes really", I get to reload the configs from cache.
If I just kill it (close window, CTRL-C, or similar), ModuleManager will reprocess everything from scratch on the next startup.
Until just now, I've hardly ever bothered with leaving KSP. The unexpected reload of 14k modules from cache was quite a surprise :)
Makefile seems to mess up compilation?
If I compile MM using make, the assembly fails to load in KSP with the following error:
AddonLoader: Instantiating addon 'ModuleManager' from assembly 'ModuleManager'
[ModuleManager] Adding ModuleManager to the loading screen 2
MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "ModuleManager.Properties.Resources.resources" was correctly embedded or linked into assembly "ModuleManager" at compile time, or that all the satellite assemblies required are loadable and fully signed.
at System.Resources.ResourceManager.AssemblyResourceMissing (System.String fileName) [0x00000] in :0
at System.Resources.ResourceManager.InternalGetResourceSet (System.Globalization.CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) [0x00000] in :0
at System.Resources.ResourceManager.GetObject (System.String name, System.Globalization.CultureInfo culture) [0x00000] in :0
at ModuleManager.Properties.Resources.get_cat () [0x00000] in :0
at ModuleManager.ModuleManager.Awake () [0x00000] in :0
UnityEngine.GameObject:Internal_AddComponentWithType(Type)
UnityEngine.GameObject:AddComponent(Type)
AddonLoader:StartAddon(LoadedAssembly, Type, KSPAddon, Startup)
AddonLoader:StartAddons(Startup)
^^C:MoveNext()
UnityEngine.MonoBehaviour:StartCoroutine_Auto(IEnumerator)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
ESC^C:MoveNext()
UnityEngine.MonoBehaviour:StartCoroutine_Auto(IEnumerator)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
GameDatabase:StartLoad()
^C^E:MoveNext()
UnityEngine.MonoBehaviour:StartCoroutine_Auto(IEnumerator)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
LoadingScreen:Start()
Since it appears related to a localization error I can point that my default locale is Spanish, although I run KSP in an English one.
If I compile from MonoDevelop I don't run into the same issue.
Mod Compatibility (KOS(0.13.1)
Not sure who to bother with this issue so have reported it on both repositories.
When using the following .cfg
@part[probeCoreSphere]
{
MODULE
{
name = kOSProcessor
diskSpace = 512
}
}
I can launch the craft as normal, open the terminal and everything works fine and as it should. However, if i revert to launch the part does not load properly. It doesn't become active, the throttle doesn't jump up to 50% and the physics is not loaded so no 'pop' out of the ground. (I have left it for half an hour and it still didn't load so not a just need to wait a bit longer issue.)
If you then press Esc you get the game paused menu and the buttons activate as you mouse over them but they don't do anything. To exit you have to Alt + Tab out of the game.
For me this has tested at 100% repeat-ability on both 32 and 64 bit versions of the game.
The KOS parts don't cause this and using Module Manager to edit parts in other ways doesn't cause the bug.
Other than these 2 mods ksp is a clean copy of 0.24.2.
Can't seem to make this work - RESULTS
@sarbian Trying to nuke existing RESULTS in experiments.
I've tried this after this old version didn't work. Neither works, although other things on BEFORE[RP-0] do run, and I get no MM errors.
(there area couple MM errors from another patch, but they're caught.)
Any ideas? :\
Localization Modding
I'm working on localization for Dutch (later French and German), but in order to get it to work you need to edit the settings.cfg
and buildID.txt
files. Would it be possible to edit both files using MM?
Documentation not in the repository
Documentation isn't the repository neither as file or as github wiki page, pretty much all the useful stuff is in the forum thread.
"add only if missing" feature request
do not take this as an issue or anything, just a simple suggestion
if you have the time to do something like this I would really apreciate it, otherwise no hurt feelings :D
basically, I'd like to have an operation that adds a variable only if it's missing
example:
starting from this nodes
TESTNODE
{
name = first
notmissing = true
}
TESTNODE
{
name = second
}
TESTNODE
{
name = third
notmissing = true
}
to add "notmissing = true" to the second node I would need to use this:
@TESTNODE:HAS[~notmissing[*]]
{
notmissing = true
}
this will check all the nodes and add notmissing = true only to those without it.
this is fine when you have only 1 variable to check, but when (like in my case) there are many different values to check, the lenght of the cfg increases a lot.
it would be nice to have an operator (let's say §) that adds a variable only if it's missing so I could do something like this:
TESTNODE
{
notmissing1 = true
notmissing3 = true
notmissing5 = true
}
@TESTNODE
{
§notmissing1 = true
§notmissing2 = true
§notmissing3 = true
§notmissing4 = true
§notmissing5 = true
}
Spammed exception while in VAB/SPH or flying craft
Subnodes with :NEEDS are no longer being deleted
v3.0.0 broke this, it's applying to the old node, not the new node, I will fix it
More consistent syntax
Can the & and | operators be added to the syntax for HAS
blocks as well as NEEDS
blocks? It would make some filters much easier to write than in the present version, where an or-clause can only be represented with multiple patches. Thanks!
Incorrect use of closing Curly Braces didn't result in a error?
The following file silently processed and didn't succeed totally, threw no mismatch or similar errors regards the brackets?
+PART[US_m_Wedge_Oxygen]
{
@name = US_TAC_Wedge_Oxygen
@title = TAC enabled Universal Storage Life Support Oxygen Block
@RESOURCE[Oxygen]
}
@amount = 70
@maxAmount = 70
}
RESOURCE
}
name = CarbonDioxide
amount = 0
maxAmount = 70
}
}
+PART[US_Radial_Oxygen]
{
@name = US_TAC_Radial_Oxygen
@title = TAC enabled Universal Storage Radial Oxygen Tank
@RESOURCE[Oxygen]
}
@amount = 20
@maxAmount = 20
}
RESOURCE
}
name = CarbonDioxide
amount = 0
maxAmount = 20
}
}
+PART[US_q_Wedge_Water]
{
@name = US_TAC_Wedge_Water
@title = TAC enabled Universal Storage Water Block
@RESOURCE[Water]
}
@amount = 45
@maxAmount = 45
}
RESOURCE
}
name = WasteWater
amount = 0
maxAmount = 45
}
}
+PART[US_Wedge_KASContainer]
{
@name = US_TAC_Wedge_FoodContainer
@title = TAC Universal Storage Food Container
-MODULE[KASModuleContainer]
RESOURCE
}
name = Food
amount = 50
maxAmount = 50
}
RESOURCE
}
name = Waste
amount = 0
maxAmount = 50
}
}
deleting .dll files and MM cache
when deleting a dll from gamedata all the patches that uses :NEEDS[thatDLLname] should not get loaded, however, if the cache is generated with the DLL in place, then the DLL gets removed, MM will still load the old cache instead of generating a new one, leading to weird issues
type-less nodes break mm
I know this is not a mm bug per se, and it's just the result of bad cfg from modders.
but I have received a decent number of bug reports that were related to this issue, so I would like to know if a simple solution could be found in mm.
THE ISSUE
these are a couple of examples of code that break mm
ROOTNODE
{
SUBNODE
{
stuff = optional
{
}
}
}
ROOTNODE
{
SUBNODE
{
stuff = optional
//DUMBNODE
{
}
}
}
would it be possible to tell mm to just delete those "nodes" which do not have a type defined (either because it was commented out or because it was never defined) so that bad configs are less an issue than they are now?
thanks :)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.