Caerfinon Posted March 21 Share Posted March 21 I've never nested one vessel parameter group inside another. But I have used the Type Any parameter to nest multiple Vessel Parameter groups as separate solutions to completing the contract requirements PARAMETER { name = Any type = Any PARAMETER { name = VesselParameterGroup1 type = VesselParameterGroup ... } PARAMETER { name = VesselParameterGroup2 type = VesselParameterGroup ... } PARAMETER { name = VesselParameterGroup3 type = VesselParameterGroup ... } } Quote Link to comment Share on other sites More sharing options...
Ooglak Kerman Posted March 21 Share Posted March 21 (edited) 11 hours ago, Caerfinon said: I've never nested one vessel parameter group inside another. But I have used the Type Any parameter to nest multiple Vessel Parameter groups as separate solutions to completing the contract requirements PARAMETER { name = Any type = Any PARAMETER { name = VesselParameterGroup1 type = VesselParameterGroup ... } PARAMETER { name = VesselParameterGroup2 type = VesselParameterGroup ... } PARAMETER { name = VesselParameterGroup3 type = VesselParameterGroup ... } } Reviewing the doc, it looks like what I want is the type = ALL since I'm wanting all the child parameters/groups to have completed. Thanks for getting me moving again. Edited March 21 by Ooglak Kerman Quote Link to comment Share on other sites More sharing options...
Ooglak Kerman Posted March 22 Share Posted March 22 It looks like you can nest vessel parameter groups. But the PARAMETER ReachState with a situation = ORBITING comes up true for all bodies. I can work with it I think Quote Link to comment Share on other sites More sharing options...
mark7 Posted April 9 Share Posted April 9 I have been playing around with contract configurator to make some new contract lately and have encountered a pop-up exception in game which suggested me to post the error here. the exception is Exception occured while loading contract 'KerbalAcademy.KerbalAcademy_PilotingTraining': System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidCastException: Invalid cast from 'System.String' to 'System.Collections.Generic.List`1[[ContractConfigurator.Kerbal, ContractConfigurator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. at System.Convert.DefaultToType (System.IConvertible value, System.Type targetType, System.IFormatProvider provider) [0x00269] in <9577ac7a62ef43179789031239ba8798>:0 at System.String.System.IConvertible.ToType (System.Type type, System.IFormatProvider provider) [0x00000] in <9577ac7a62ef43179789031239ba8798>:0 at System.Convert.ChangeType (System.Object value, System.Type conversionType, System.IFormatProvider provider) [0x0021b] in <9577ac7a62ef43179789031239ba8798>:0 at System.Convert.ChangeType (System.Object value, System.Type conversionType) [0x0000c] in <9577ac7a62ef43179789031239ba8798>:0 at ContractConfigurator.ConfigNodeUtil.ParseSingleValue[T] (System.String key, System.String stringValue, System.Boolean allowExpression) [0x006a0] in <20a3a039060941bfb465629683bb64bf>:0 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <9577ac7a62ef43179789031239ba8798>:0 --- End of inner exception stack trace --- at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00048] in <9577ac7a62ef43179789031239ba8798>:0 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <9577ac7a62ef43179789031239ba8798>:0 at ContractConfigurator.ConfiguredContract.OnLoad (ConfigNode node) [0x00233] in <20a3a039060941bfb465629683bb64bf>:0 and the exact contract is: CONTRACT_TYPE { name = KerbalAcademy_PilotingTraining title = Kerbal Academy: Pilot Training Program group = KerbalAcademy description = It seems that a group of pilots is ready to improve their piloting skills. Take them to @targetVessel, along with 2 mentors to train them, then bring them back home. genericDescription = Put a gourp of pilots throught the training Program. synopsis = Complete the training course. completedMessage = Congratulations, we now have more experienced pilots on our team agent = Kerbal Academy notes = The parameters must be completed in order. minExpiry = 1 maxExpiry = 7 maxSimultaneous = 1 cancellable = true declinable = true prestige = Significant targetBody = HomeWorld() rewardScience = 0.0 rewardReputation = 10 rewardFunds = 0 failureReputation = 0 failureFunds = 0 advanceFunds = -50000 - @crew_size * 20000 DATA { type = List<Kerbal> uniquenessCheck = CONTRACT_ACTIVE all_candidates = AllKerbals().Where(m => m.ExperienceTrait() == Pilot && m.ExperienceLevel()<= 2 && m.Type() == Crew && m.RosterStatus() == Available) trainee_list = @all_candidates.Random(@crew_size) title = Must have a group of Kerbals who qualify for the basic program. } DATA { type = int selectionIndex = Random(0, @validOTFs.Count() - 1) crew_size = @is_random_crewsize ? 2 : Random(3, 6) } DATA { type = double expAward = 8 } DATA { type = bool is_random_crewsize = 6 < @all_candidates.Count() } DATA { type = List<VesselIdentifier> requiredValue = false validOTFs = $KerbalAcademy_OrbitalTraingFacility.Where(vi => Vessel(vi).IsOrbiting() && Vessel(vi).EmptyCrewSpace() >= 8) } DATA { type = Vessel uniquenessCheck = CONTRACT_ACTIVE title = Must have an Orbital Training Facility with sufficient empty space targetVessel = @validOTFs.ElementAt(@selectionIndex) } BEHAVIOUR { name = AwardExperience type = AwardExperience kerbal = @/trainee_list experience = @/expAward } PARAMETER { name = HasTrainee type = HasCrew kerbal = @/trainee_list } PARAMETER { name = HasMentor type = HasCrew trait = Pilot title = Must have an experienced Pilot on board minExperience = 4 } PARAMETER { name = HasCommander type = HasCrew trait = Commander title = Must have a commander to oversee the training minExperience = 2 } PARAMETER { name = DockwithStation type = Docking vessel = @/targetVessel title = Dock with @/targetVessel completeInSequence = true } PARAMETER { name = Duration type = Duration duration = 15d preWaitText = Waiting for the Crew. waitingText = Crew at the station completionText = Mission accomplished! Bring the crew back home. completeInSequence = true } PARAMETER { name = RecoverKerbal type = RecoverKerbal completeInSequence = true kerbal = @/trainee_list } REQUIREMENT { name = check_crew_count type = Expression expression = @/all_candidates.Count() > 1 title = Must enough crew } } Anyone know what could be the problem? Quote Link to comment Share on other sites More sharing options...
leroidangleterre Posted April 18 Share Posted April 18 I've used aircraft contracts and this one seemed interesting: stay above a requested altitude for a given time. Yet the timer starts when the flight starts, and the mark gets checked by just waiting, not even flying. To fix this, i've tried changing the contract code to this: //Contract Goals PARAMETER { name = VesselParameterGroup type = All title = fly up to 1,000m vessel = @/craft PARAMETER { name = ReachState type = ReachState targetBody = Kerbin situation = FLYING minAltitude = 1000 hideChildren = true hidden = true PARAMETER { name = VesselParameterGroup type = VesselParameterGroup title = Hold for 3min PARAMETER { name = Duration type = Duration duration = 180s preWaitText = and hold for: waitingText = and hold for: completionText = You did it! } } } completeInSequence = true disableOnStateChange = true hideChildren = false } What I did is I included the "hold for 3min" requirement inside the ReachState part. Yet the timer still starts even before the altitude is reached. How would you solve that ? What syntax should I use ? Quote Link to comment Share on other sites More sharing options...
Aelfhe1m Posted April 18 Share Posted April 18 1 hour ago, leroidangleterre said: How would you solve that ? What syntax should I use ? I think the problem is the position of the disableOnStateChange field - it applies to the vessel (so switching vessels would disable it) rather than the vessel state (so changes in altitude would affect it). Try this (untested): Spoiler PARAMETER { name = VesselGroup type = VesselParameterGroup title = Fly above 1000m for 3 minutes. PARAMETER { name = Has Crew type = HasCrew minCrew = 1 title = Have at least 1 crewmember on board } PARAMETER { name = holdAltitude type = ReachState minAltitude = 1000 situation = FLYING disableOnStateChange = true PARAMETER { name = Duration type = Duration duration = 3m preWaitText = Reach 1000m. waitingText = Hold above 1000m for 3 minutes. completedText = You did it! } } } Quote Link to comment Share on other sites More sharing options...
MinchinWeb Posted May 20 Share Posted May 20 On 7/4/2016 at 2:25 PM, nightingale said: I think I know what it is - it's because of the way @inigma set up the contracts with the vessel tracking. I'm willing to bet that it's tracking some old vessel (maybe one that doesn't exist any more). There is a long standing issue with the Sounding Rockets contract pack. Is there a better way to do vessel tracking? I would love to update the contract pack and get this resolved once and for all, but I need some pointers on how to go about that. Conceptually, the idea is to require the rocket to use the Sounding Rockets' Avionics Package and to start with (but not be required to finish with) one of the two Sounding Rockets' boosters. The current WIP code is here --> https://github.com/MinchinWeb/ksp-ContractPack-SoundingRockets/blob/retry/Core/KSP-SR-2000m.cfg Many thanks! Quote Link to comment Share on other sites More sharing options...
stk2008 Posted May 21 Share Posted May 21 (edited) is contracts suppose to place a waypoint if you also have waypoint manager installed? I see no waypoint for this. Now unlike you smart lot I never knew what hadopelagic meant so googled it and it means deepest part of ocean?. but in the contract window it says about orbiting kerbin so I am very confused how you can be orbiting Kerbin and also be in the deepest part of the ocean at the same time. Please advise thanks in advance P.S I think my install may be bugged or a few contracts I am using are bugged because I also had a contact to scan and transmit the data from a baobab tree which I did with the OP-E arm but never completes the transmit part always stays at 0% even though it clearly sent VIA the message at top left. Edited May 21 by stk2008 Quote Link to comment Share on other sites More sharing options...
Ooglak Kerman Posted June 5 Share Posted June 5 Anyone know if it is possible to access the state of a contract - I.E. contract complete - from ModuleManager? What I'm looking to do is to change the true | false of a PQSCities property if a specific contract has been completed. I understand that I need to be able to access that PQSCities property. I'm approaching this from both ends at this point. Quote Link to comment Share on other sites More sharing options...
Ooglak Kerman Posted August 5 Share Posted August 5 (edited) Can a CompleteContract REQUIREMENT be based on completion of THIS OR THAT contract? Context: A contract that is centric to OPM vs one that is centric to !OPM Edited August 5 by Ooglak Kerman Quote Link to comment Share on other sites More sharing options...
siimav Posted August 11 Share Posted August 11 (edited) v2.11.0.0 What's Changed Add support for generating waypoints centered on vessels by @siimav in #47 Fix various issues with showing generated waypoint markers Eliminate many double or triple dictionary lookups Full Changelog: v2.10.0.0...v2.11.0.0 Edited August 11 by siimav Quote Link to comment Share on other sites More sharing options...
Ooglak Kerman Posted August 16 Share Posted August 16 I'm looking to trigger a Module Manager patch based on CONTRACT_COMPLETED status of a contract. Can anyone help me with how I access that property? Thanks Quote Link to comment Share on other sites More sharing options...
Ooglak Kerman Posted August 16 Share Posted August 16 @siimav A feature recommendation if you please Behaviour to rename a .txt file to a .cfg (RenameTextFile) Example use case: enable a MM patch to add a resource or module to a part upon successful completion of a contract or parameter. It is understood that a game restart would be necessary. Quote Link to comment Share on other sites More sharing options...
siimav Posted August 16 Share Posted August 16 3 hours ago, Ooglak Kerman said: @siimav A feature recommendation if you please Behaviour to rename a .txt file to a .cfg (RenameTextFile) Example use case: enable a MM patch to add a resource or module to a part upon successful completion of a contract or parameter. It is understood that a game restart would be necessary. I'm sorry but that sounds like a terrible idea. I refuse to do anything that would affect MM patches after the game has loaded. There's always a better way. Quote Link to comment Share on other sites More sharing options...
Ooglak Kerman Posted August 16 Share Posted August 16 1 hour ago, siimav said: I'm sorry but that sounds like a terrible idea. I refuse to do anything that would affect MM patches after the game has loaded. There's always a better way. The other possibility I can think of would be a MM filter that would detect successful completion of a given contract and enable the MM patch to load. Is that a node visible to MM? Quote Link to comment Share on other sites More sharing options...
siimav Posted August 16 Share Posted August 16 Just no. This still applies: 1 hour ago, siimav said: I refuse to do anything that would affect MM patches after the game has loaded. Quote Link to comment Share on other sites More sharing options...
Ooglak Kerman Posted August 17 Share Posted August 17 48 minutes ago, siimav said: Just no. This still applies: I apologize for being unclear about what I was requesting in the previous exchange. Absent the behaviour in CC, I was not asking for any feature. I'll head on back to the drawing board though. Thanks for this great mod, though Quote Link to comment Share on other sites More sharing options...
Gupyzer0 Posted September 6 Share Posted September 6 On 8/11/2024 at 11:12 AM, siimav said: v2.11.0.0 What's Changed Add support for generating waypoints centered on vessels by @siimav in #47 Fix various issues with showing generated waypoint markers Eliminate many double or triple dictionary lookups Full Changelog: v2.10.0.0...v2.11.0.0 Hello Siimav! Wouldn't it be better to move CC to a newer post? I think I'm not the only one that though that CC is still in the 1.3X version becasue of the first post in this thread. I mena, I found out about that CC was still being updated by peeking on the RO's Github Quote Link to comment Share on other sites More sharing options...
siimav Posted September 6 Share Posted September 6 7 hours ago, Gupyzer0 said: Wouldn't it be better to move CC to a newer post? Not really. Sure, the title of the topic could be fixed then but all the knowledge would get split between 2 different threads. Besides that, CC is maintained by an organization now, not me personally. The model of only a single person being able to modify the thread doesn't fit well at all. Quote Link to comment Share on other sites More sharing options...
Gupyzer0 Posted September 7 Share Posted September 7 18 hours ago, siimav said: Not really. Sure, the title of the topic could be fixed then but all the knowledge would get split between 2 different threads. Besides that, CC is maintained by an organization now, not me personally. The model of only a single person being able to modify the thread doesn't fit well at all. Yeah fixing the title could be good enough I guess Quote Link to comment Share on other sites More sharing options...
Eleven Posted September 13 Share Posted September 13 I get this pop up error all the time in 2.11.0.0 Not sure exactly what it means! Quote Link to comment Share on other sites More sharing options...
Streetwind Posted September 17 Share Posted September 17 (edited) I have a question about the "Exploration contracts" / progression contracts. As in, the one where it tells you to do a bunch of stuff around the Mun, then there's a series for Minmus, and so on. And you can only ever have one of them at any given time. I understand that these are not defined in config files like the procedural contracts, but rather in the game's codebase. Would it be possible for Contract Configurator to coax the game into offering more than one such contract at the same time? Specifically, it would be great if two separate celestial bodies could have their Exploration contract series running in parallel. For example, after reaching orbit, instead of generating the one Exploration contract for a flyby of the Mun, it generates both that and also one for a flyby of Minmus. There would always be one Exploration contract active for the Mun, and one for Minmus, following their normal progressions. You could work on both moons in parallel, or choose in which order you want to do them. After all, many players consider Minmus no harder than, or even easier than, the Mun. Once one of the moons has been completed, it would start offering you destinations in solar orbit while the other moon still has contracts up, again letting you work on things in parallel. And if you really don't want to do a specific destination or task, and refuse to complete that contract, you wouldn't stall out the entire Exploration contract chain for the rest of your playthrough - there would still be a second series running for a different celestial body. Edited September 17 by Streetwind Quote Link to comment Share on other sites More sharing options...
Zelda Posted September 19 Share Posted September 19 Based on my experience, Contract Configurator cannot modify stock contracts. However, you might be able to write a Module Manager patch that can make the changes you want, since the stock contracts are all defined in a .cfg file under GameData/Squad/Contracts/Contracts.cfg. Maybe play with adding / modifying the 'MaximumExistent', 'MaximumActive', and/or 'MaximumAvailable' values. Quote Link to comment Share on other sites More sharing options...
Streetwind Posted September 19 Share Posted September 19 I added those lines to the file, but it doesn't seem to be working. I didn't expect it to, given that it did not have those lines in the first place, which indicates those contracts are using an entirely different method of controlling their frequency. It'll need a DLL mod to make changes to this, hence my suggestion for Contract Configurator. Quote Link to comment Share on other sites More sharing options...
Zelda Posted October 5 Share Posted October 5 Some of the contracts do have those values, some do not (at least in my copy of the file). My thinking was adding those values to the contracts that were missing them may override a default value, but I guess not. Darn. I agree it would take a DLL mod, but personally I am not sure Contract Configurator is/should be that mod. CC has an entirely different and complex contract definition system, and it seems like writing in support for the stock system alongside of it would add a ton of extra complexity and compatibility surface area that would be a headache to maintain. Releasing an entirely separate mod for modifying the stock system makes more sense to me. Just my $0.02 though. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.