Jump to content

[1.10.1+] Contract Configurator [v1.30.5] [2020-10-05]


nightingale

Recommended Posts

New version out, should be the last of the issues with the new functionality used by the SCANsat pack. Download here.

​Contract Configurator 1.1.3

  • Fix additional case where uniqueValue can cause an exception (thanks MikeSalvatierra).
  • Add RemainingScience method to Biome class.
  • Various minor science changes.
  • Various minor bug fixes.

Link to comment
Share on other sites

Hey Nightingale,

I am using severedsolo's excellent Contract Pack: Kerbin Space Station, but in my last play session, I failed to win a contract to conduct an experiment on my station and return the science to Kerbin. Alas, I had not updated to your 1.12 yet, and I see the changelog for 1.12 has a fix to collecting science. Do you think that was the issue? I've now updated to 1.13, and my guess is I should just re-run the mission, but I thought I'd ask in case it's something else.

I've saved my log file, though I didn't see any exceptions relating to either of your mods. Not sure how to post it here.

Details and screenshot here: http://forum.kerbalspaceprogram.com/threads/113642-1-0-2-Contract-Pack-Kerbin-Space-Station-1-4-1-%2816-05-15%29?p=1956281&viewfull=1#post1956281

Link to comment
Share on other sites

Hey Nightingale,

I am using severedsolo's excellent Contract Pack: Kerbin Space Station, but in my last play session, I failed to win a contract to conduct an experiment on my station and return the science to Kerbin. Alas, I had not updated to your 1.12 yet, and I see the changelog for 1.12 has a fix to collecting science. Do you think that was the issue? I've now updated to 1.13, and my guess is I should just re-run the mission, but I thought I'd ask in case it's something else.

I've saved my log file, though I didn't see any exceptions relating to either of your mods. Not sure how to post it here.

Details and screenshot here: http://forum.kerbalspaceprogram.com/threads/113642-1-0-2-Contract-Pack-Kerbin-Space-Station-1-4-1-%2816-05-15%29?p=1956281&viewfull=1#post1956281

I've changed CollectScience so much over the past couple releases, that I highly suspect you had a broken version before it got fixed. I'm quite confident it's working in 1.1.2 (1.1.3 changes to CollectScience were mostly cosmetic). Before that, there were definitely issues - so I would try again when you get the chance and report back. I'm pretty sure you'll have more luck the second time around.

Link to comment
Share on other sites

I've changed CollectScience so much over the past couple releases, that I highly suspect you had a broken version before it got fixed. I'm quite confident it's working in 1.1.2 (1.1.3 changes to CollectScience were mostly cosmetic). Before that, there were definitely issues - so I would try again when you get the chance and report back. I'm pretty sure you'll have more luck the second time around.

I wouldn't be at all surprised if it was the contract to be honest. I just went through it, ripped the whole thing out and started again.

Speaking of which, no idea if this is possible, but CC does not like it if you use an expression to define docked vessels.

Example:


PARAMETER
{
name = Docking
type = Docking
vessel = @/targetVessel1
defineDockedVessel = @/targetVessel1
title = Dock with @/targetVessel1
disableOnStateChange = true
}

I think technically defineDockedVessel is not needed if the definition is already there, but I like to "redefine" to be on the safe side (because I know KSP does weird things when you dock/undock).

Edit:

Hmm, I'm getting some CC errors on loading up my new contracts:

Exception occured while loading contract contract 'LSResupply':

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.FormatException: Invalid format for Guid.Guid(string).

at System.Guid+GuidParser.ParseChar (Char c) [0x00000] in <filename unknown>:0

at System.Guid+GuidParser.ParseGuid2 () [0x00000] in <filename unknown>:0

at System.Guid+GuidParser.Parse () [0x00000] in <filename unknown>:0

at System.Guid..ctor (System.String g) [0x00000] in <filename unknown>:0

at ContractConfigurator.ConfigNodeUtil.ParseVesselValue (System.String name) [0x00000] in <filename unknown>:0

at ContractConfigurator.ConfigNodeUtil.ParseSingleValue[Vessel] (System.String key, System.String stringValue, Boolean allowExpression) [0x00000] in <filename unknown>:0

at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)

at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0

--- End of inner exception stack trace ---

at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0

at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0

at ContractConfigurator.ConfiguredContract.OnLoad (.ConfigNode node) [0x00000] in <filename unknown>:0

Log: https://www.dropbox.com/s/ivrtklna104p7ty/output_log.txt?dl=0

Edited by severedsolo
Link to comment
Share on other sites

I wouldn't be at all surprised if it was the contract to be honest. I just went through it, ripped the whole thing out and started again.

Speaking of which, no idea if this is possible, but CC does not like it if you use an expression to define docked vessels.

Example:


PARAMETER
{
name = Docking
type = Docking
vessel = @/targetVessel1
defineDockedVessel = @/targetVessel1
title = Dock with @/targetVessel1
disableOnStateChange = true
}

I think technically defineDockedVessel is not needed if the definition is already there, but I like to "redefine" to be on the safe side (because I know KSP does weird things when you dock/undock).

Technically, defineDockedVessel is a string and not a Vessel, which is probably why it's giving you grief. A while back I added a ton of logic for better handling of docking/undocking, so I don't think the defineDockedVessel will do anything for you here anyway - it's intention was more for defining a new name, like if you wanted to add to KSS and then call it BiggerKSS or something (it would exist under both names/tags).

Edit:

Hmm, I'm getting some CC errors on loading up my new contracts:

Exception occured while loading contract contract 'LSResupply':

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.FormatException: Invalid format for Guid.Guid(string).

at System.Guid+GuidParser.ParseChar (Char c) [0x00000] in <filename unknown>:0

at System.Guid+GuidParser.ParseGuid2 () [0x00000] in <filename unknown>:0

at System.Guid+GuidParser.Parse () [0x00000] in <filename unknown>:0

at System.Guid..ctor (System.String g) [0x00000] in <filename unknown>:0

at ContractConfigurator.ConfigNodeUtil.ParseVesselValue (System.String name) [0x00000] in <filename unknown>:0

at ContractConfigurator.ConfigNodeUtil.ParseSingleValue[Vessel] (System.String key, System.String stringValue, Boolean allowExpression) [0x00000] in <filename unknown>:0

at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)

at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0

--- End of inner exception stack trace ---

at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0

at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0

at ContractConfigurator.ConfiguredContract.OnLoad (.ConfigNode node) [0x00000] in <filename unknown>:0

Log: https://www.dropbox.com/s/ivrtklna104p7ty/output_log.txt?dl=0

Hmmm, can I get a save file? Unless my guess is right, and you're trying to use the uniqueValue flag for a DATA node with type of Vessel? If that's the case then let me know and I can fix that.

Link to comment
Share on other sites

You guess correctly, I applied the uniqueValue flag to a Vessel DATA node.

Here is a save anyway: https://www.dropbox.com/s/1toby7nw6aewmzv/Testbed.zip?dl=0

I don't know how useful it will be, this is my testing save. So the contracts are all messed up (haven't done escape the atmosphere for example) as I hyperedit everything.

Edited by severedsolo
Link to comment
Share on other sites

You guess correctly, I applied the uniqueValue flag to a Vessel DATA node.

Here is a save anyway: https://www.dropbox.com/s/1toby7nw6aewmzv/Testbed.zip?dl=0

I don't know how useful it will be, this is my testing save. So the contracts are all messed up (haven't done escape the atmosphere for example) as I hyperedit everything.

Fixed for next release. Workaround would be to change the type to string - should just use the vessel name then. However, it would then be prone to exploits from renaming vessels. Of course, using the vessel id is prone to all the docking stuff... but hopefully that's a rare enough occurrence for your contract that it's okay.

Link to comment
Share on other sites

Of course, using the vessel id is prone to all the docking stuff... but hopefully that's a rare enough occurrence for your contract that it's okay.

It won't be any worse than it is now though right? In which case that should be ok, it seems to be rare enough.

Link to comment
Share on other sites

I have tried to make a contract pack, and it is not working... I know it is something simple I have missed so I was wondering if there was documentation on this somewhere I have not seen. something that might help me find what I have done wrong.

I was trying to estimate memory requirements for contract packs and such so I decided to make some and see what options are available and what they various options do to memory requirements. I have read the Git Hub page, but I was looking for something like a list of "gotchas" things that are easy to overlook and cause problems.

Edited by Bit Fiddler
Link to comment
Share on other sites

It won't be any worse than it is now though right? In which case that should be ok, it seems to be rare enough.

It depends on what the contract is. If the contract requires docking, and the docked ship's id changes... then you could end up with a duplicate contract.

I have tried to make a contract pack, and it is not working... I know it is something simple I have missed so I was wondering if there was documentation on this somewhere I have not seen. something that might help me find what I have done wrong.

I was trying to estimate memory requirements for contract packs and such so I decided to make some and see what options are available and what they various options do to memory requirements. I have read the Git Hub page, but I was looking for something like a list of "gotchas" things that are easy to overlook and cause problems.

There's the very basic stuff in the How-To page, but really that's about it in terms of gotchas. It's probably time for me to update that page, and a common errors section/page would probably be a good thing... I'll try to get that done in the near future.

Otherwise, the content of this thread is the known "gotchas".... so if you're not inclined to read 100 pages, post up your error or describe your problem and I'll see if I can help. :)

Link to comment
Share on other sites

I've changed CollectScience so much over the past couple releases, that I highly suspect you had a broken version before it got fixed. I'm quite confident it's working in 1.1.2 (1.1.3 changes to CollectScience were mostly cosmetic). Before that, there were definitely issues - so I would try again when you get the chance and report back. I'm pretty sure you'll have more luck the second time around.

Alas, I tried again, this time with the most recent CC installed, and I still didn't fulfill the contract. It sounds like severedsolo is on track to fix it, though, so I'm good. I've got plenty of other missions to do in the meantime.

Link to comment
Share on other sites

I'm having a weird problem.

I have the SETI contracts installed (among others) and noticed that when attempting the "kerbin powered landing" mission that the requirement for reaching 500m altitude never gets set no matter how long I hover over 500m. I tried a couple part test type missions from the launch pad and they are never marked as completed, and I never get a contract complete announcement, but when I go to mission control they show up in the archives as completed. Doing a "transmit science data from x orbit" type mission shows up as green in the contract window, but again, no announcement.

Link to comment
Share on other sites

I'm having a weird problem.

I have the SETI contracts installed (among others) and noticed that when attempting the "kerbin powered landing" mission that the requirement for reaching 500m altitude never gets set no matter how long I hover over 500m. I tried a couple part test type missions from the launch pad and they are never marked as completed, and I never get a contract complete announcement, but when I go to mission control they show up in the archives as completed. Doing a "transmit science data from x orbit" type mission shows up as green in the contract window, but again, no announcement.

Sounds like you're getting an exception in flight and it's bringing down some of the contracts stuff. I'll need a log file to investigate further (see this post for more info on where to get the log file).

Link to comment
Share on other sites

I'll need some time to investigate this one, it's difficult to tell what contract it's from (it looks like it could be anything from SpaceTux or SETI). Let me know if removing either of those makes the problem go away - that'll help me narrow it down (it's not the current contract that's causing an issue, it's a new one it's trying to generate).

Raised [#212] to investigate.

Link to comment
Share on other sites

I'll need some time to investigate this one, it's difficult to tell what contract it's from (it looks like it could be anything from SpaceTux or SETI). Let me know if removing either of those makes the problem go away - that'll help me narrow it down (it's not the current contract that's causing an issue, it's a new one it's trying to generate).

Raised [#212] to investigate.

I opened the alt+F10 debug window and saw a bunch of the spacetux contracts were messed up

Screenshot

Deleting the spacetux contracts and restarting seems to have cleared up the issue.

Link to comment
Share on other sites

Desdinova: I haven't fixed the underlying issue, but put in some exception handling logic that'll prevent it from messing up your game. However, it will probably pop up an annoying exception window... If you can grab the details from that window and pass it along, that would be great.

The fixed dll can be downloaded here, just overwrite the old one in GameData/ContractConfigurator.

Link to comment
Share on other sites

Just simple question.. Sorry to bother :)

in the HasResource PARAMETER, can i declare multiple resources in the same parameter? or do i have to declare them individually?

Doing a check for Life support (with TAC)


PARAMETER:NEEDS[TacLifeSupport]
{
name = LifeSupportValidationTAC
type = HasResource
resource = Oxygen
minQuantity = 1
title = Have at least one Supplies!
}

Link to comment
Share on other sites

Just simple question.. Sorry to bother :)

in the HasResource PARAMETER, can i declare multiple resources in the same parameter? or do i have to declare them individually?

Doing a check for Life support (with TAC)


PARAMETER:NEEDS[TacLifeSupport]
{
name = LifeSupportValidationTAC
type = HasResource
resource = Oxygen
minQuantity = 1
title = Have at least one Supplies!
}

That one doesn't support multiples. Raise an enhancement request if it's something you'd like, and I'll see when I can get that one in. :)

Link to comment
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.

×
×
  • Create New...