Jump to content

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


nightingale

Recommended Posts

@nightingale - Sorry I missed your reply! I got it working again by going back to the last stable 1.8 version (1.28). But glad to see there's an update! Sorry, I'm a bit new still to this; where would I find the log that you would like to see?

 

Now that I have my saved career working, should everything still be ok when I update the mod?

Edited by Lignite
Link to comment
Share on other sites

39 minutes ago, Lignite said:

@nightingale - Sorry I missed your reply! I got it working again by going back to the last stable 1.8 version (1.28). But glad to see there's an update! Sorry, I'm a bit new still to this; where would I find the log that you would like to see?

No worries.  No log needed anymore, but next time you can get it the KSP.log file from your KSP directory (if you're on Windows/Steam it's C:\Program Files (x86)\Steam\steamapps\common\Kerbal Space Program\KSP.log by default).

39 minutes ago, Lignite said:

Now that I have my saved career working, should everything still be ok when I update the mod?

Yup, everything should be fine now.

Link to comment
Share on other sites

I've been working on adding a contract to Progressive Colonization System.  The first one I want to make involves rescuing a kerbal from orbit of a random moon of Jool and bringing it to a moon of Jool that as an evolved colony.  I've made some progress towards figuring out ContractConfigurator, but I'm stuck on a couple points. The big two are:

  1. I can't seem to figure out how to reference the kerbal that gets spawned by SpawnVessel
  2. I can't seem to figure out how to get a random ORBIT out of SpawnVessel

If anybody wants to point me in the right direction, maybe it'd make more sense to comment on this pull request instead of putting it here so you can see exactly what stupid I'm perpetrating:

https://github.com/SteveBenz/ProgressiveColonizationSystem/pull/7/files

Thanks in advance!

Link to comment
Share on other sites

1 hour ago, NermNermNerm said:
  1. I can't seem to figure out how to reference the kerbal that gets spawned by SpawnVessel

https://github.com/jrossignol/ContractConfigurator/wiki/SpawnKerbal-Behaviour

1 hour ago, NermNermNerm said:

 

       2. I can't seem to figure out how to get a random ORBIT out of SpawnVessel

https://github.com/jrossignol/ContractConfigurator/wiki/SpawnVessel-Behaviour

Link to comment
Share on other sites

7 hours ago, NermNermNerm said:

I've been working on adding a contract to Progressive Colonization System.  The first one I want to make involves rescuing a kerbal from orbit of a random moon of Jool and bringing it to a moon of Jool that as an evolved colony.  I've made some progress towards figuring out ContractConfigurator, but I'm stuck on a couple points. The big two are:

  1. I can't seem to figure out how to reference the kerbal that gets spawned by SpawnVessel

Untested, but looking at the code I think you would want to just reference it with a Kerbal expression.  So something like this:

    DATA
    {
        type = Kerbal
        myKerbal = Skeebop Kerman
    }

    BEHAVIOUR
    {
        type = SpawnVessel

        VESSEL
        {
            name = A vessel

            CREW
            {
                name = Skeebop Kerman
            }
        }
     }

Using the above you could then just reference @/myKerbal whenever a Kerbal is allowed.  You could also shorthand this with just Kerbal(Skeebop Kerman).  I *think* it should work.

7 hours ago, NermNermNerm said:
  1. I can't seem to figure out how to get a random ORBIT out of SpawnVessel

Looks like it's not possible.  Create a feature request on GitHub with exactly what you want and I'll give some thought of how to do it (I'm thinking either new Orbit functions to generate orbits, OR just having it so you can actually get the Orbit out from OrbitGenerator.  The OrbitGenerator is responsible for other stuff though (like drawing the orbits), so it may be a little heavy for what we want here.

2 hours ago, gamerscircle said:

Hi there!  Thank you for the update, I ran into a slight issue and was curious if this is a known issue, I can supply a .log file, but I thought I would post a screen shot first.

I have the same thing in mine.  I'll take a look.

Link to comment
Share on other sites

15 hours ago, nightingale said:

Untested, but looking at the code I think you would want to just reference it with a Kerbal expression.  So something like this:


    DATA
    {
        type = Kerbal
        myKerbal = Skeebop Kerman
    }

    BEHAVIOUR
    {
        type = SpawnVessel

        VESSEL
        {
            name = A vessel

            CREW
            {
                name = Skeebop Kerman
            }
        }
     }

Using the above you could then just reference @/myKerbal whenever a Kerbal is allowed.  You could also shorthand this with just Kerbal(Skeebop Kerman).  I *think* it should work.

i think it would too - but the trouble is that I need to generate a new kerbal; we can't have a whole lotta Skeebop's running around the station.  Life would get confusing.

 

15 hours ago, nightingale said:

Looks like it's not possible.  Create a feature request on GitHub with exactly what you want and I'll give some thought of how to do it (I'm thinking either new Orbit functions to generate orbits, OR just having it so you can actually get the Orbit out from OrbitGenerator.  The OrbitGenerator is responsible for other stuff though (like drawing the orbits), so it may be a little heavy for what we want here.

Yeah  I thought you'd say that based on my reading of the code.  A random orbit would be pretty much required e.g. if multiple contracts pop up, they'd all stack on top of each other...  hm.  or would they?  Perhaps they'd be like the Kerbals that spawn in LKO in stock, where they all spawn at a precise 72km equitorial orbit, just staggered by time (probably not so much by-design as by the workings of the contracts engine).  That wouldn't be so bad.  Only hassle being that I'd have to come up with a whole bunch of contracts because an orbit for Jool wouldn't work well at Bop...  Still, not so bad as a temporary measure.

One thing that I'm pretty sure would work would be for kerbals that need to be rescued from krash-sites on the ground.  You could bind lat/long to a variable that's generated from a random number.  But...  I have a feeling that there's no code to place the kerbal at the surface at that position.  (Might it spawn them at sea level, rather than ground level if height isn't supplied or supplied incorrectly?)

Link to comment
Share on other sites

29 minutes ago, NermNermNerm said:

i think it would too - but the trouble is that I need to generate a new kerbal; we can't have a whole lotta Skeebop's running around the station.  Life would get confusing.

The example was meant to be simple - you could instead do this:

    DATA
    {
        type = Kerbal
        myKerbal = NewKerbal()
    }
29 minutes ago, NermNermNerm said:

Yeah  I thought you'd say that based on my reading of the code.  A random orbit would be pretty much required e.g. if multiple contracts pop up, they'd all stack on top of each other...  hm.  or would they?  Perhaps they'd be like the Kerbals that spawn in LKO in stock, where they all spawn at a precise 72km equitorial orbit, just staggered by time (probably not so much by-design as by the workings of the contracts engine).  That wouldn't be so bad.  Only hassle being that I'd have to come up with a whole bunch of contracts because an orbit for Jool wouldn't work well at Bop...  Still, not so bad as a temporary measure.

Well, without a code change, the orbit can have some randomness, but it's not easy to control as with the orbit generator:

BEHAVIOUR
{
    type = OrbitGenerator

    // Use this to generate an orbit with specific parameters
    FIXED_ORBIT
    {
        targetBody = Kerbin

        // Actual orbit details. Note that REF represents the reference
        // body - but will be overriden by the targetBody.
        ORBIT
        {
            // Semi-major axis
            SMA = Random(100000, 1000000)
            // Eccentricity, keep less than 1 for an non-escaping orbit
            ECC = Random(0, 0.5)
            // Inclination
            INC = Random(-45, 45)
            // Longitude of Periapsis
            LPE = Random(0, 360)
            // Longitude of Ascending Node
            LAN =  Random(0, 360)
            // You can pretty much ignore these for a random orbit - they just move the ship along the orbit.
            // They are important when you want a ship at an exact position at an exact time.
            MNA = 1.55872660382504
            EPH = 31.3999999999994
            // Always ignored by Contract Configurator
            REF = 1
        }
    }
}

If you want anything more fancy, it would be a code change similar to what I suggested above (SpawnKerbal and WaypointGenerator are already hooked  into the expression system, so it wouldn't be much of a stretch to do it for OrbitGenerator).

29 minutes ago, NermNermNerm said:

One thing that I'm pretty sure would work would be for kerbals that need to be rescued from krash-sites on the ground.  You could bind lat/long to a variable that's generated from a random number.  But...  I have a feeling that there's no code to place the kerbal at the surface at that position.  (Might it spawn them at sea level, rather than ground level if height isn't supplied or supplied incorrectly?)

SpawnKerbal supports this.  If you specify an altitude, it's above sea level.  If you leave out the altitude attribute, they are spawned on the ground.

Link to comment
Share on other sites

Thanks @nightingale - I think I have all the pieces put together.  I hope to have some time to play around with it this weekend.

As I read it - it allows the possibility of building an actual craft rather than just a boring old mk1-capsule for the kerbal to be found in...  I'm thinking that my space-adventuring would-be-colonists might just end up needing to be collected from some interesting spacecraft.  That would give contract fulfillment a more interesting vibe.

Link to comment
Share on other sites

29 minutes ago, NermNermNerm said:

Thanks @nightingale - I think I have all the pieces put together.  I hope to have some time to play around with it this weekend.

As I read it - it allows the possibility of building an actual craft rather than just a boring old mk1-capsule for the kerbal to be found in...  I'm thinking that my space-adventuring would-be-colonists might just end up needing to be collected from some interesting spacecraft.  That would give contract fulfillment a more interesting vibe.

Yup, that was the idea, but you definitely have to be careful when building the craft (the wiki page for SpawnVessel has examples of things to watch out for).

Link to comment
Share on other sites

New release, changelog below.  But first, a couple items to discuss.

  • There is now support for localization, but so far I only have @tinygrox's Chinese localization.  If anyone wants to put in the effort for localization in other languages, please let me know.
  • There is also better support for contract pack localization.  I'll make updates to any of my contract packs that people want to localize, but only if Contract Configurator already supports the language, and only if someone says they are interested (because there's a non-trivial amount of work of re-organizing the contract pack for localization.
  • I re-enabled the Reload Contracts button.  I honestly can't remember what was broken about it now (it was a specific scenario).  I think the safest is to do re-loads in the main menu, but otherwise let me know if you run into any problems with that functionality.

Contract Configurator 1.30.3

  • Deployed Science from Breaking Ground no longer generates tons of message spam.  Instead, the messages (including screen messages) are intercepted and combined into a single more useful message.
  • Re-enable the reload contracts button (may or may not work).
  • Fixed issue where invertRequirement was no longer allowed for Any (and All) REQUIREMENT nodes (thanks Morphisor).
  • Made Asteroid and Comet science into Sun-only science to prevent them from showing up in weird (but valid according to the game) scenarios.  Prevents contracts for things like "comet sample while landed on Kerbin" (thanks Lathari).
  • Cleaned up some duplicated name in the contract type selection settings window (thanks gamerscircle).
  • Added Experiment.ID().
  • Removed a workaround for a stock bug fixed in 1.4.3 (#18267).
Link to comment
Share on other sites

18 hours ago, nightingale said:

New release, changelog below.  But first, a couple items to discuss.

  • There is now support for localization, but so far I only have @tinygrox's Chinese localization.  If anyone wants to put in the effort for localization in other languages, please let me know.
  • There is also better support for contract pack localization.  I'll make updates to any of my contract packs that people want to localize, but only if Contract Configurator already supports the language, and only if someone says they are interested (because there's a non-trivial amount of work of re-organizing the contract pack for localization.
  • I re-enabled the Reload Contracts button.  I honestly can't remember what was broken about it now (it was a specific scenario).  I think the safest is to do re-loads in the main menu, but otherwise let me know if you run into any problems with that functionality.

Contract Configurator 1.30.3

  • Deployed Science from Breaking Ground no longer generates tons of message spam.  Instead, the messages (including screen messages) are intercepted and combined into a single more useful message.
  • Re-enable the reload contracts button (may or may not work).
  • Fixed issue where invertRequirement was no longer allowed for Any (and All) REQUIREMENT nodes (thanks Morphisor).
  • Made Asteroid and Comet science into Sun-only science to prevent them from showing up in weird (but valid according to the game) scenarios.  Prevents contracts for things like "comet sample while landed on Kerbin" (thanks Lathari).
  • Cleaned up some duplicated name in the contract type selection settings window (thanks gamerscircle).
  • Added Experiment.ID().
  • Removed a workaround for a stock bug fixed in 1.4.3 (#18267).


After the update to 1.30.3 I get this error:

KeyNotFoundException: The given key was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 
  at KSP.Localization.Localizer.GetStringByTag (System.String tag) [0x00005] in <948fceea813942b7ac6b6d1b2dc2d0a3>:0 
  at ContractConfigurator.ScienceReporter..cctor () [0x00036] in <bc64947a45c449da9ea110e47628c100>:0 
Rethrow as TypeInitializationException: The type initializer for 'ContractConfigurator.ScienceReporter' threw an exception.

Then nothing works anymore and I have to kill KSP from the commandline (I'm on linux).
Full log https://drive.google.com/file/d/1PSPx5bFuXhnhSk56Iemq4mqlUdcgdzd6/view?usp=sharing

I have over 100 mods installed and more stability issues, but at least this one I could trace back. :)It doesn't happen happen when I revert to 1.30.2.

Link to comment
Share on other sites

While I did not get the error reported above and found no difference in the loading sequence so far, of course I could not resist trying out the reload contracts button.
As recommended, I clicked it from the main menu. The game proceeded to hang for a while, after which the graphics started glitching and I could see in the debug log that all game models were being loaded in anew.

It did not end well:

dLHx40v.png

The contracts menu never recovered and the graphics/models never seemed to load back in properly.

Link to comment
Share on other sites

I had issue with the latest update of this mod. I'm playing 1.9.1 with JNSQ and bunch of other mods; Whenver I went to the Mission Control and tried to exit from it the MC stayed open and had to either force quit or reload the game, it didn't even allow me to quit to main menu, just load saves and alt+f4. Unfortunately I did not take screenshots from it before jumping back to older version. I can try to reproduce the issue with either same mod loadout or with stock world of 1.9.1 if you need any info about the issue- =D

Otherwise, thanks for keeping CC updated! :D

Link to comment
Share on other sites

@boribori - Oops, looks like it's an issue when Breaking Ground isn't installed.  I may have to testing with & without expansions.  I'll fix it shortly.

@Morphisor - Hmmm...  okay, don't do that then. :D  Curious, if you do a Module Manager reload (through the Alt-F11 menu), does it do the same thing?

@KPD87 - I'm guessing you hit the same issue as boribori, for which I'll be release a fix ASAP.  If it's still not working after that, please send a KSP.log file.

Link to comment
Share on other sites

8 hours ago, nightingale said:

@Morphisor - Hmmm...  okay, don't do that then. :D  Curious, if you do a Module Manager reload (through the Alt-F11 menu), does it do the same thing?

That pretty much has the same result, indeed. Though I dare say it may actually be even worse - it threw loads of nullref exceptions on basically everything that was reloaded, except the part models. It also takes way longer than the original game startup.

Link to comment
Share on other sites

11 minutes ago, Morphisor said:

That pretty much has the same result, indeed. Though I dare say it may actually be even worse - it threw loads of nullref exceptions on basically everything that was reloaded, except the part models. It also takes way longer than the original game startup.

Yaaaaaaah....  okay, that's why it was disabled.  It's funny because in my one (very quick) test it seemed okay.  I'll still try to play around with it, but it may just be a lost cause.

Link to comment
Share on other sites

14 hours ago, nightingale said:

New release!

Contract Configurator 1.30.4

  • Fixed major issue when Breaking Ground wasn't installed (thanks boribori).

I still see a KeyNotFoundException in the log, but no more crashes, so I guess it's fine. Thanks!

Player.log: https://drive.google.com/file/d/1q9W-ocaPuA2Ek87ZoNyEAuo8_2ZA35_o/view?usp=sharing

(The log shows ContractConfigurator v1.0.0.0 / v1.30.3, but the version file shows 1.30.4)

 

Link to comment
Share on other sites

1 hour ago, boribori said:

I still see a KeyNotFoundException in the log, but no more crashes, so I guess it's fine. Thanks!

Player.log: https://drive.google.com/file/d/1q9W-ocaPuA2Ek87ZoNyEAuo8_2ZA35_o/view?usp=sharing

(The log shows ContractConfigurator v1.0.0.0 / v1.30.3, but the version file shows 1.30.4)

I fixed the downloaded (the version that was up just had the version number wrong in one part, nothing else).

The KeyNotFoundException where it's happening now shouldn't have any adverse effect (but I've still cleaned it up for next release).

Link to comment
Share on other sites

Hey @nightingale,

Since a couple of days I have an quite interesting issue between CC and the new ScanSat (20.4 atm), though this also happened with the two or three previous CC versions.

What happens is, when I accept a new contract (seems independent of the contract pack), fly the rocket, switch to map view, and active a ScanSat overlay (terrain, or biome, makes no difference), the terrain info under the mouse pointer flickers alternating with the initial contract duration time (e.g. recover a satellite after 60 days, the ScanSat terrain info alternates with a small box displaying "60 days") several times a second. Finishing the contract, all all is back to normal.

Console doesn't give any output about this, and before I bother you with any logs: any at least faint idea what's going, or have you heard / seen this ever before?

Edited by VoidSquid
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...