nightingale

[1.8.x+] Contract Configurator [v1.28.0] [2019-10-17]

Recommended Posts

I'm brewing up (yet another in a series of failed attempts at) a contract pack idea but (as usual) what I want does not seem available. I don't know how hard it would be (or if it would take more work once Breaking Ground came out) but I've been told my job is to ask if something can be done, and it's he programmers job to determine if it actually can. So here goes.

I've not seen anywhere a way to determine the distance between 2 parts (or a part and - say - a position on the craft like the Root part, or the COM, or whatever). Mostly I'm thinking of science parts, like a Thermometer must be x meters away from any part with any modules on it that might generate heat. or a contract states that you need 2 gravioli detectors, y meters apart from each other, during a flyby of world z.

I searched the wiki and this thread, and I didn't see anything even suggested along these lines.

Share this post


Link to post
Share on other sites

I'm noticed follwing in log on KSP 1.7.1.

[LOG 17:39:51.413] [INFO] ContractConfigurator.ContractType: Loading CONTRACT_TYPE: 'AS_Jool_Monolith'
[ERR 17:39:51.426] ContractConfigurator.ParameterFactory: CONTRACT_TYPE 'AS_Jool_Monolith',PARAMETER 'Monolith' of type 'Monolith': Unknown parameter 'Monolith'.

[WRN 17:39:51.446] ContractConfigurator.ContractType: Errors encountered while trying to load CONTRACT_TYPE 'AS_Jool_Monolith'
[LOG 17:39:51.451] [INFO] ContractConfigurator.ContractType: Loading CONTRACT_TYPE: 'AS_Kerbin_IslandAirfield'

Have no idea from what contract pack it coming from. I have installed Anomaly Surveyor, Bases and Stations Reborn, Clever Sats, Field Research, GAP, Kerbal Academy, Tourism Plus.

Share this post


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

I'm noticed follwing in log on KSP 1.7.1.


[LOG 17:39:51.413] [INFO] ContractConfigurator.ContractType: Loading CONTRACT_TYPE: 'AS_Jool_Monolith'
[ERR 17:39:51.426] ContractConfigurator.ParameterFactory: CONTRACT_TYPE 'AS_Jool_Monolith',PARAMETER 'Monolith' of type 'Monolith': Unknown parameter 'Monolith'.

[WRN 17:39:51.446] ContractConfigurator.ContractType: Errors encountered while trying to load CONTRACT_TYPE 'AS_Jool_Monolith'
[LOG 17:39:51.451] [INFO] ContractConfigurator.ContractType: Loading CONTRACT_TYPE: 'AS_Kerbin_IslandAirfield'

Have no idea from what contract pack it coming from. I have installed Anomaly Surveyor, Bases and Stations Reborn, Clever Sats, Field Research, GAP, Kerbal Academy, Tourism Plus.

Jool Monolith and Island Airfield are from Anomaly Surveyor contract pack.

Share this post


Link to post
Share on other sites

I'm having a problem where in the stock contracts from Breaking Ground, I can pick up a mun stone (I get the science confirmation dialog), but when I get back to Kerbin, it doesn't complete the contract. Could that be something to do with CC's contract completion detection code?

Share this post


Link to post
Share on other sites
21 hours ago, BlackHat said:

Jool Monolith and Island Airfield are from Anomaly Surveyor contract pack.

@kcs123

Further to this answer, I seem to remember that back in the day an earlier update to KSP broke the Jool monolith component of Anomaly Surveyor as well, but that was eventually fixed that time. AS hasn't been updated for some time, though. Not sure if the author is still active. 

Share this post


Link to post
Share on other sites
1 minute ago, UnanimousCoward said:

@kcs123

Further to this answer, I seem to remember that back in the day an earlier update to KSP broke the Jool monolith component of Anomaly Surveyor as well, but that was eventually fixed that time. AS hasn't been updated for some time, though. Not sure if the author is still active. 

Thanks to both of you @BlackHat and @UnanimousCoward, you have helped me to narrow down culprit mod. I will try to investigate it further to see if I can find what should need changes in config files to fix it. Or at least to remove such contract, so that error wil not happen anymore.

Share this post


Link to post
Share on other sites
On 6/2/2019 at 2:04 PM, UnanimousCoward said:

@kcs123

Not sure if the author is still active. 

The Author is nightingale, same as for this mod. Contract Configuator. And he is still active.

@kcs123 Bring up the problems in the Anomaly Surveyor thread and I am sure he will look into it.

Share this post


Link to post
Share on other sites

I have been enjoying this mod and several contract packs for a long time now, so first a warm thanks to all of the great modders around :-)

After getting the Breaking Ground DLC I've noticed this in the log:
 

Quote

[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'deployedSeismicSensor' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'deployedWeatherReport' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'deployedGooObservation' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'deployedIONCollector' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_KerbinBaobabTree' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_KerbinGiantQuartz' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_GillyRidgeline' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_DunaEjectaOnIke' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_BopGravelPile' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_PolYellowStones' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_MinmusGreenSandstone' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_MinmusOlivineFormation' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_MohoStone' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_MohoWrinkleRidge' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_EveVolcanicRock' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_EveBasaltFormation' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_EvePancakeDome' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_DunaStone' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_DunaMeteorite' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_DunaDune' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_DunaBlueberries' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_DresMeteorite' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_DresCrater' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_MunStone' is unknown, assuming a standard experiment.
[WRN 09:01:02.669] ContractConfigurator.Util.Science: Experiment 'ROCScience_MunCrater' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_MunLargeCrater' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_LaytheStone' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_LaytheBoulder' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_LaytheGeyser' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_VallIceChunk' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_VallStone' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_VallCryovolcano' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_TyloLightStone' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_TyloDarkBoulder' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_TyloCheckerboard' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_EelooIceChunk' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_EelooBrownBoulder' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'ROCScience_EelooBerg' is unknown, assuming a standard experiment.
[WRN 09:01:02.670] ContractConfigurator.Util.Science: Experiment 'recovery' is unknown, assuming a standard experiment.

It's seems obvious that this mod simply just don't know about the new experiments and might need some form of update, but I just wonder if this could cause issues with actual gameplay? If it's just a matter of the new contracts not behaving the way they should, then I can live with that as there are plenty of other ways of getting science, money and rep. :-)

Share this post


Link to post
Share on other sites

I'm making my own contract pack, and in the first contract, and when I press alt+F10 and to look if it works,and in the log details section one of the things is an error,  but I don't know what it is supposed to mean or how to fix it, the error is like this: [ERROR] Contract.Configurator.ContractType: CONTRACT_TYPE 'Satellite Launch'.Error parsing group

If anyone knows how to fix it, that would be helpful, thank.

Share this post


Link to post
Share on other sites
Posted (edited)
On 6/9/2019 at 4:03 AM, JPGSP said:

I'm making my own contract pack, and in the first contract, and when I press alt+F10 and to look if it works,and in the log details section one of the things is an error,  but I don't know what it is supposed to mean or how to fix it, the error is like this: [ERROR] Contract.Configurator.ContractType: CONTRACT_TYPE 'Satellite Launch'.Error parsing group

If anyone knows how to fix it, that would be helpful, thank.

I'm updating the Sounding Rockets contract pack and recently ran into the same issue. You need to define a CONTRACT_GROUP.

CONTRACT_GROUP
{
    name = <use a more unique name than "Satellite Launch" like JPGSP Satellites>
    displayName = Satellite Launch
    agent = <agent for Satellite Launch>
//    sortKey =

    maxSimultaneous = 1
    maxCompletions = 0
//    disabledContractType =

    minVersion = 1.27
//    tip = 
}

Put it in a folder with your Agent.cfg.

 

Also read here: https://github.com/jrossignol/ContractConfigurator/wiki

Edited by TranceaddicT
added Wiki info

Share this post


Link to post
Share on other sites

@TranceaddicT Thanks, but unfortunately it didn't work, it still gives me the same error(P.S. its in version 1.3.1)

Share this post


Link to post
Share on other sites

@TranceaddicT Yes, I have an agent.

Share this post


Link to post
Share on other sites

Okay, so, as I said before, the root of your problem is that your contract calls for a group (group = Space Agency Satellite Launch) without a CONTRACT_GROUP being defined.

If I understand the way things are set up to work, AGENT can have member GROUPS.  You need an AGENT.  GROUPS are optional.

 

Create another file called 'Groups.cfg' and put this in there:

CONTRACT_GROUP
{
	name = JSLG
	displayName = JPGSP Satellite Launch Group
	agent = JPGSP Space Agency
//	sortKey =

//	maxSimultaneous =
///	maxCompletions =
//	disabledContractType =

	minVersion = 1.27
//	tip =
}

 

To make everything play nicely, change your Agent file to be something like this:

AGENT
{
    name = JPGSP Space Agency
    title = JPGSP Space Agency
    description = We give you contracts from the videogame Space Agency

    logoURL = ContractPacks/Custom Missions(Space Agency)/Agency/AgencyLogo
    logoScaledURL = ContractPacks/Custom Missions(Space Agency)/AgencyLogoSmall

	mentality = NoRandomContractMentality
}

 

Now, change your contract so that the naming scheme matches the above.

    group = JSLG
    agent = JPGSP Space Agency
 

I'm telling you to do this because your naming convention ('Space Agency') is far too generic. 

 

The only thing more generic and mundane than 'Space Agency' is ...

Spaaaaaaaace Force!

Share this post


Link to post
Share on other sites

My turn for help.

I've been trying to set up a contract that requires a sounding rocket to reach a target zone and return safely for recovery.  I've managed to get the second half of the requirement to work but cannot for the life of me fail the contract if altitude exceeds maxAltitude.

Here's the code snippet:

		PARAMETER
		{
			name = VesselParameterGroup
			type = VesselParameterGroup
			title = Reach the target zone ...

			PARAMETER
			{
				name = ReachState
				type = ReachState

				situation = FLYING
				minAltitude = 2000
				maxAltitude = 4000
			}

			hideChildren = true
		}

 

Share this post


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

My turn for help.

I've been trying to set up a contract that requires a sounding rocket to reach a target zone and return safely for recovery.  I've managed to get the second half of the requirement to work but cannot for the life of me fail the contract if altitude exceeds maxAltitude.

Here's the code snippet:


		PARAMETER
		{
			name = VesselParameterGroup
			type = VesselParameterGroup
			title = Reach the target zone ...

			PARAMETER
			{
				name = ReachState
				type = ReachState

				situation = FLYING
				minAltitude = 2000
				maxAltitude = 4000
			}

			hideChildren = true
		}

 

Reading that, I'd expect it to succeed the second you got to 2000 meters, and stay successful. Also, that code should be functionally the same as:

PARAMETER
			{
				name = ReachState
				type = ReachState

				situation = FLYING
				minAltitude = 2000
				maxAltitude = 4000
			}

because a group with only 1 member is just that one member. :)

I suspect your "land safely" parameter is outside the vesselparametergroup and needs to be moved inside it.

Share this post


Link to post
Share on other sites
Posted (edited)
 
 
1
17 minutes ago, 5thHorseman said:
4 minutes ago, 5thHorseman said:

I suspect your "land safely" parameter is outside the vesselparametergroup and needs to be moved inside it.

It's in 1 of 3 vpg/

1. Reach Target Zone (2000-4000) ...

2. ... return safely AND in one piece ...

3. ... recover craft.

 

here's the full config:

CONTRACT_TYPE:NEEDS[UmbraSpaceIndustries]
{
//	Text
	name = KSP-SR2000
	sortKey = a1

	title = Fly a sounding rocket above 2000m.

	description = [KSP-SR2000] The fine folks at Umbra Space Industries have developed an avionics package they want you to test by flying it to a target zone between 2000m and 4000m, and safely return the payload for recovery.  Do this right and we can seek the support of sponsors. With adequate funding this could become a successful long-term program for testing and scientific discovery.
	synopsis = Launch the USI Avionics Package to between 2000m and 4000m on a sounding rocket and recover it.
	completedMessage = Well done! An unidentified individual shared unspecified specifics with someone's someone about something and now we have a some funding for the next flight!
	notes = Easy peasy. Remember to reduce your propellant so you don't exceed 4000m.

	agent = Kerbal Sounding Project
	group = UUA


//	Reqs & Data
	REQUIREMENT
	{
		name = PartUnlocked1
		type = PartUnlocked
		part = SR_ProbeCore
	}

	DATA
	{
		type = string
		craft = KSP-SR2000
	}


//	Limitations
	maxCompletions = 3
	maxSimultaneous = 1

	autoAccept = false
	declinable = true
	cancellable = true

	minExpiry = 24
	maxExpiry = 100
	deadline = 24


//	Rewards & Penalties Info
	advanceFunds = 0

	rewardFunds = 366.667
	rewardReputation = 2
	rewardScience = 2

	failureFunds = 0
	failureReputation = 0.1

	prestige = Trivial


//	Craft Requirements
	PARAMETER
	{
		name = VesselParameterGroup
		type = VesselParameterGroup
		title = Your sounding rocket must have:

		define = @/craft
		dissassociateVesselsOnContractCompletion = true

		disableOnStateChange = false
		hidden = false
		hideChildren = false

		PARAMETER
		{
			name = PartValidation1
			type = PartValidation
			title = a USI Avionics Package

			VALIDATE
			{
				part = SR_ProbeCore
			}

			disableOnStateChange = true
			hideChildren = true
		}

		PARAMETER
		{
			name = PartValidation2
			type = PartValidation
			title = a USI Sounding Rocket motor or a Sepratron motor

			VALIDATE
			{
				part = SR_Rocket_35_01
				part = SR_Rocket_35_02
				part = SR_Rocket_625_01
				part = sepMotor1
			}

			disableOnStateChange = true
			hideChildren = true
		}
	}


//	Contract Goals
	PARAMETER
	{
		name = All
		type = All

		vessel = @/craft

		hidden = false
		hideChildren = false

		PARAMETER
		{
			name = VesselParameterGroup
			type = VesselParameterGroup
			title = Reach the target zone ...

			PARAMETER
			{
				name = ReachState
				type = ReachState

				minAltitude = 2000

				disableOnStateChange = true
			}

			PARAMETER
			{
				name = ReachState
				type = ReachState

				maxAltitude = 4000

				disableOnStateChange = false
			}

			hideChildren = true
			disableOnStateChange = true
		}

		PARAMETER
		{
			name = VesselParameterGroup
			type = VesselParameterGroup
			title = ... return safely AND in one piece ...

			vessel = @/craft

			PARAMETER
			{
				name = ReachState
				type = ReachState

				situation = LANDED
				situation = SPLASHED
			}

			PARAMETER
			{
				name = VesselNotDestroyed
				type = VesselNotDestroyed

				vessel = @/craft
			}

			hideChildren = true
		}

		PARAMETER
		{
			name = VesselParameterGroup
			type = VesselParameterGroup
			title = ... and recover your rocket.

			vessel = @/craft

			PARAMETER
			{
				name = RecoverVessel
				type = RecoverVessel
			}

			hideChildren = true
		}
	}
}

 

Edited by TranceaddicT

Share this post


Link to post
Share on other sites

Alright, so I figured out the previous problem.  It required the vessel definition (vessel = @/craft) to be placed within the 'ReachState' PARAMETER stanza.  Why it didn't flow down from the upstream parameter like the other two VPGs .. I dunno.  But, hey it works. (To quote TheMightyJingles, If it's stupid but it works ... It ain't stupid.)

So with that fixed, on to the final problem: getting the green checkmarks.

On the launchpad, the contract recognized the presence of required parts and disables the requirement.  Unfortunately, during the build process, they don't tick off in the VAB (green arrows).

e0kbE8e.png

 

Share this post


Link to post
Share on other sites
Posted (edited)
12 minutes ago, TranceaddicT said:

Alright, so I figured out the previous problem.  It required the vessel definition (vessel = @/craft) to be placed within the 'ReachState' PARAMETER stanza.  Why it didn't flow down from the upstream parameter like the other two VPGs .. I dunno.  But, hey it works. (To quote TheMightyJingles, If it's stupid but it works ... It ain't stupid.)

So with that fixed, on to the final problem: getting the green checkmarks.

On the launchpad, the contract recognized the presence of required parts and disables the requirement.  Unfortunately, during the build process, they don't tick off in the VAB (green arrows).

e0kbE8e.png

 

 

OI! What are you doin' 'ere?! Get back in the salt mine!

edit: Yes sorry, incredibly off-topic. Just couldn't resist. ;)

Edited by Jognt

Share this post


Link to post
Share on other sites

Is it possible to know which contract is broken?

Thx

Spoiler

[ERR 17:49:27.711] Input is null for field 'agent' in config node 'CONTRACT'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at Contracts.Contract.Save(.ConfigNode node)
   at SSTUTools.RescueContractPartSelector.OnContractOffered(Contracts.Contract contract)
   at EventData`1[[Contracts.Contract, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]].Fire(Contracts.Contract data)
   at Contracts.Contract.SetState(State newState)
   at ContractConfigurator.ConfiguredContract.set_ContractState(State value)
   at ContractConfigurator.ContractPreLoader+<GenerateContract>d__33.MoveNext()
   at ContractConfigurator.ContractPreLoader+<ContractEnumerator>d__32.MoveNext()
   at ContractConfigurator.ContractPreLoader.Update()
 

 

Share this post


Link to post
Share on other sites
58 minutes ago, Tacombel said:

Is it possible to know which contract is broken?

Thx

It's a missing title in an agent definition somewhere. I got tired of hunting these down and came up with the following patch to just fix them on the fly. Copy the contents of the box and stick it in a text file ending .cfg somewhere under GameData.

// Fix missing agent title string
@AGENT[*]:HAS[~title]:FINAL { title = #$name$ }

Share this post


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

It's a missing title in an agent definition somewhere. I got tired of hunting these down and came up with the following patch to just fix them on the fly. Copy the contents of the box and stick it in a text file ending .cfg somewhere under GameData.


// Fix missing agent title string
@AGENT[*]:HAS[~title]:FINAL { title = #$name$ }

Aaaand another tinyTweak_*.cfg has been added to my collection courtesy of Tonka Crash.. Cheers!

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.