Jump to content

CT96B

Members
  • Posts

    14
  • Joined

  • Last visited

Reputation

11 Good

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I use the Orbital Decay mod, so the S-II stage pretty rapidly falls out of orbit... and I use stationkeeping/occasional boosts from visiting craft to keep the Skylab in a fairly stable orbit. With the staging retros on the S-II, execute the staging from a prograde orientation at Ap, and you should get sufficient separation to at least not have the S-II hanging around close for a while.
  2. yeah... they were quite different from the current set, and they were KSP/Kerbal States instead of USA/United States. I was able to convert and modify the bluedog_saturnV texture set, but I have no means to write .dds files. Here is my .png that I now will be using. I wanted to modify the S-IVB stage as well, but as the texture is mirrored, one side would always have a backwards S. For now, I'll leave that alone. Thanks for the tips and advice.
  3. Is there a set of alternate textures for the Saturn boosters that has the historic livery (e.g. the UNITED STATES on the S-IC and the USA on the S-IVB tanks)? I don't have the means to edit the .dds files directly, and converting them to png does not result in something that I think I have the graphic editing skill levels to know what to do with. I can easily enough change the .cfg files to point at new textures if someone can point me at the right tools to edit the textures myself.
  4. I strongly concur. DLC should be optional at most for this mod. Keep the mod fully compatible with the "minimum package" so that the most users have the opportunity to use it. An optional extension utilizing DLC would be viable, but should not be the default.
  5. I had this problem for a while - turned out to be I had the wrong (and, in fact multiple) Model Managers loaded. Make sure you have the up-to-date Model Manager - and only one.
  6. Is there any way to set a negative maxPeA? Scenario: Apollo-IV after parking orbit set to an ApA of 17218km, and a PeA of -45.7km to ensure destruction of the S-IV-B stage and to help put the CM high enough to test the heat-shield at lunar return reentry conditions. I can set a minApA to match, but I can't seem to set a negative maxPeA (as a fallback I know I can set it to surface, but it would be nice to be able to set it to the historic parameters).
  7. I have an optional objective with Gemini-IX, where if possible the player can dock with the ATDA-02186 (historically, the fairing failed to deploy properly, so they were unable to dock). This allows the player to go historic and Rendezvous, or go with the historic plan and Rendezvous AND dock for some rewards. PARAMETER { name = Rendezvous type = Rendezvous vessel = ATDA-02186 distance = 12.0 title = Rendezvous with the ATDA. completeInSequence = true disableOnStateChange = true PARAMETER { name = Docking type = Docking vessel = ATDA-02186 title = Dock with Automated Target Docking Adapter optional = true rewardScience = 5 rewardReputation = 5 rewardFunds = 1000 disableOnStateChange = true } }
  8. you mean like this that I have in the last parameter specified above? PARAMETER { name = ReturnHome type = ReturnHome completeInSequence = true } I'm already doing that. I'll try flattening things out and see if I can get it to work that way.
  9. Next round of confusion... I can't seem to specify multiple EVAs on one contract. I am trying to specify a contract wherein EVA1 is conducted, something else happens (change orbit, rendezvous, dock, whatever), then EVA2 happens, then something else happens, then EVA3 happens. Every time I run this test configuration, ALL The EVA's are recording simultaneously. PARAMETER { name = HasAstronautA type = All disableOnStateChange = true PARAMETER { name = EVA1 type = VesselIsType vesselType = EVA } PARAMETER { name = Duration type = Duration duration = 3m preWaitText = Perform Standup EVA waitingText = Walking in Space... completionText = Get back in. disableOnStateChange = true startCriteria = PARAMETER_COMPLETION parameter = EVA1 } } PARAMETER { name = Duration type = Duration duration = 3m preWaitText = Perform EVA waitingText = Retrieve Science from Agena Target Vehicle completionText = Get back in. disableOnStateChange = true startCriteria = PARAMETER_COMPLETION parameter = HasAstronautA } PARAMETER { name = HasAstronaut2 type = All PARAMETER { name = myEVA2 type = VesselIsType vesselType = EVA } PARAMETER { name = Duration type = Duration duration = 5m preWaitText = Perform EVA waitingText = Retrieve Science from Agena Target Vehicle completionText = Get back in. disableOnStateChange = true startCriteria = PARAMETER_COMPLETION parameter = myEVA2 } } PARAMETER { name = Duration type = Duration duration = 7m preWaitText = wait waitingText = Retrieve Science from Agena Target Vehicle completionText = Get back in. disableOnStateChange = true startCriteria = PARAMETER_COMPLETION parameter = HasAstronaut2 } PARAMETER { name = ReturnHome type = ReturnHome completeInSequence = true } So, when HasAstronautA/EVA1 happens, that Duration counter starts... but so does the one under HasAstronaut2/myEVA2. When I complete the EVA (note that I can get back in, let the timer run out, then get back out to close out the parameter), the top level Duration starts (As expected, as the start parameter is "HasAstronautA"), but both HasAstronautA and HasAstronautB both score success before the first top level Duration starts... and then BOTH top level Durations start. I'm trying to write a detailed Gemini-X contract - there was a "standup EVA" early in the mission, a docking with the Agena, an EVA associated with that docking, and then a rendezvous with an older Agena and an EVA associated with that. This is not the whole contract I have, just a stripped down parameter set to figure out the EVA sequencing (actually doing this on the ground right now). I'm still sure I'm doing something wrong, but I just can't figure out what. KSP 1.3.1 CC 1.23.3
  10. Thank you @nightingale! I finally got it to spawn without throwing exceptions. BEHAVIOUR { name = SpawnKerbal type = SpawnKerbal KERBAL { kerbal = NewKerbal(Female, "Kerbediah Kerman", "Engineer") kerbalType = Crew owned = true addToRoster = True targetBody = HomeWorld() pqsCity = KSC pqsOffset = 800, 5, 24 } } Spawns the kerbal just north of the runway, which for what I'm doing with this is just fine. Now on to figure out some alternate name generation and how to use the persistent datastore...
  11. For the record, here is my whole contract: CONTRACT_TYPE { name = M2 group = NASARecruits title = M2 description = The Aggregate 3 (M1) was the third in a series of ballistic missiles designed and developed by Wernher von Braun in 1937 under the leadership of Dr. Walter Robert Dornberger, at Kummersdorf south of Berlin. synopsis = Launch the M1 ballistic missile completedMessage = Mission Success! agent = NASA minExpiry = 1 maxExpiry = 30 deadline = 70 prestige = Trivial targetBody = HomeWorld() maxCompletions = 1 rewardScience = 2500 rewardReputation = 25 rewardFunds = 7500 advanceFunds = 10000 PARAMETER { name = M2 type = VesselParameterGroup PARAMETER { name = NewVessel type = NewVessel hidden = true } PARAMETER { name = Crewmembers type = HasCrew minCrew = 0 maxCrew = 1 } PARAMETER { name = ReachState type = ReachState situation = FLYING } } BEHAVIOUR { name = SpawnKerbal type = SpawnKerbal KERBAL { kerbal = NewKerbal("Engineer") name = Kerbediah Kerman gender = Female kerbalType = Unowned owned = true addToRoster = true targetBody = Kerbin lat = 10.595910968977 lon = 239.804476675472 alt = 387.929475510377 heading = 180.0 } } } which is itself mostly a copy from somewhere else just trying to make this behaviour work. And here is the full output of that contract import: [LOG 18:50:12.071] [INFO] ContractConfigurator.ContractType: Loading CONTRACT_TYPE: 'M2' [ERR 18:50:12.076] ContractConfigurator.Behaviour.SpawnKerbalFactory: CONTRACT_TYPE 'M2', BEHAVIOUR 'Kerbediah Kerman' of type 'SpawnKerbal: Error parsing kerbal [EXC 18:50:12.187] DataStoreCastException: Cannot cast from System.String to ProtoCrewMember+Gender. ContractConfigurator.ExpressionParser.ExpressionParser`1[System.String].ConvertType[Gender] (System.String value) ContractConfigurator.ExpressionParser.ExpressionParser`1[System.String].ParseStatement[Gender] (System.String lval) Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation. System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) ContractConfigurator.ExpressionParser.ExpressionParser`1[ProtoCrewMember+Gender].ParseStatement[Gender] () Rethrow as DataStoreCastException: Cannot cast from System.String to ProtoCrewMember+Gender. ContractConfigurator.ExpressionParser.ExpressionParser`1[ProtoCrewMember+Gender].ParseStatement[Gender] () Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation. System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].GetCalledFunction (System.String functionName, Function& selectedMethod, Boolean isFunction) Rethrow as DataStoreCastException: Cannot cast from System.String to ProtoCrewMember+Gender. ContractConfigurator.ExpressionParser.ExpressionParser`1[T].GetCalledFunction (System.String functionName, Function& selectedMethod, Boolean isFunction) ContractConfigurator.ExpressionParser.ExpressionParser`1[System.String].ParseMethod[String] (ContractConfigurator.ExpressionParser.Token token, System.String obj, Boolean isFunction) Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation. System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) ContractConfigurator.ExpressionParser.ExpressionParser`1[ContractConfigurator.Kerbal].ParseStatement[Kerbal] () Rethrow as DataStoreCastException: Cannot cast from System.String to ProtoCrewMember+Gender. ContractConfigurator.ExpressionParser.ExpressionParser`1[ContractConfigurator.Kerbal].ParseStatement[Kerbal] () Rethrow as Exception: Error parsing statement. Error occurred near '*': NewKerbal("Engineer") ....................* <-- HERE ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseExpression (System.String key, System.String expression, ContractConfigurator.ExpressionParser.DataNode dataNode) ContractConfigurator.ConfigNodeUtil.ParseSingleValue[Kerbal] (System.String key, System.String stringValue, Boolean allowExpression) ContractConfigurator.ConfigNodeUtil.ParseValue[Kerbal] (.ConfigNode configNode, System.String key, Boolean allowExpression) ContractConfigurator.ConfigNodeUtil.ParseValue[Kerbal] (.ConfigNode configNode, System.String key, System.Action`1 setter, IContractConfiguratorFactory obj, ContractConfigurator.Kerbal defaultValue, System.Func`2 validation) UnityEngine.Debug:LogException(Exception) ContractConfigurator.LoggingUtil:LogException(Exception) ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, Kerbal, Func`2) ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory) ContractConfigurator.Behaviour.SpawnKerbal:Create(ConfigNode, SpawnKerbalFactory) ContractConfigurator.Behaviour.SpawnKerbalFactory:Load(ConfigNode) ContractConfigurator.BehaviourFactory:GenerateBehaviourFactory(ConfigNode, ContractType, BehaviourFactory&) ContractConfigurator.ContractType:Load(ConfigNode) ContractConfigurator.<LoadContractTypeConfig>d__30:MoveNext() ContractConfigurator.<FinalizeContractTypeLoad>d__29:MoveNext() UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) [WRN 18:50:12.188] ContractConfigurator.Behaviour.SpawnKerbalFactory: CONTRACT_TYPE 'M2', BEHAVIOUR 'SpawnKerbal' of type 'SpawnKerbal': unexpected attribute 'name' found, ignored. [WRN 18:50:12.188] ContractConfigurator.Behaviour.SpawnKerbalFactory: CONTRACT_TYPE 'M2', BEHAVIOUR 'SpawnKerbal' of type 'SpawnKerbal': unexpected attribute 'gender' found, ignored. [WRN 18:50:12.188] ContractConfigurator.ContractType: Errors encountered while trying to load CONTRACT_TYPE 'M2'
  12. Sorry @nightingale - dyslexia strikes again. I meant 1.3.1 Unfortunately, for other mods I want to run I'm stuck at no higher than 1.3.1. I'm willing to run 1.4.x to debug the cfg. I will setup and try that this weekend - but the documentation to the mod and the mod itself don't seem to agree on SpawnKerbal. I'm not asking anyone to fix it - I'm asking how it's supposed to work without having to reverse the code to make it work. From the Sample Code on the wiki: BEHAVIOUR { name = SpawnKerbal type = SpawnKerbal KERBAL { kerbal = NewKerbal("Engineer") name = Kerbediah Kerman //variable 'name' not known, ignoring. gender = Female kerbalType = Unowned owned = true addToRoster = true targetBody = Kerbin lat = 10.595910968977 lon = 239.804476675472 alt = 387.929475510377 heading = 180.0 } } This generates the following exception: [EXC 16:28:15.827] ArgumentException: Expected ',' or ')', got: end of statement ContractConfigurator.ExpressionParser.ExpressionParser`1[T].GetCalledFunction (System.String functionName, Function& selectedMethod, Boolean isFunction) ContractConfigurator.ExpressionParser.ExpressionParser`1[ContractConfigurator.Kerbal].ParseMethod[Kerbal] (ContractConfigurator.ExpressionParser.Token token, ContractConfigurator.Kerbal obj, Boolean isFunction) Rethrow as Exception: Error parsing statement. Error occurred near '*': NewKerbal("Engineer") ..........* <-- HERE ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseExpression (System.String key, System.String expression, ContractConfigurator.ExpressionParser.DataNode dataNode) ContractConfigurator.ConfigNodeUtil.ParseSingleValue[Kerbal] (System.String key, System.String stringValue, Boolean allowExpression) ContractConfigurator.ConfigNodeUtil.ParseValue[Kerbal] (.ConfigNode configNode, System.String key, Boolean allowExpression) ContractConfigurator.ConfigNodeUtil.ParseValue[Kerbal] (.ConfigNode configNode, System.String key, System.Action`1 setter, IContractConfiguratorFactory obj, ContractConfigurator.Kerbal defaultValue, System.Func`2 validation) UnityEngine.Debug:LogException(Exception) ContractConfigurator.LoggingUtil:LogException(Exception) ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, Kerbal, Func`2) ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory) ContractConfigurator.Behaviour.SpawnKerbal:Create(ConfigNode, SpawnKerbalFactory) ContractConfigurator.Behaviour.SpawnKerbalFactory:Load(ConfigNode) ContractConfigurator.BehaviourFactory:GenerateBehaviourFactory(ConfigNode, ContractType, BehaviourFactory&) ContractConfigurator.ContractType:Load(ConfigNode) ContractConfigurator.<LoadContractTypeConfig>d__30:MoveNext() ContractConfigurator.<FinalizeContractTypeLoad>d__29:MoveNext() UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) So CLEARLY the SpawnKerbal function does not work as advertised. By iterative effort I was able to get it to at least stop throwing an exception when trying to parse in the contract, but it still won't execute the contract without the previously listed exception. The wiki page in question hasn't been updated since 2016 - so regardless if I'm running 1.3.1 from 2017 or 1.4.x from 2018, it's not working. I am 100% certain I am doing something wrong in my config, but absent some working documentation I am left with two options: Ask, or reverse engineer the code myself. I asked.
  13. I'm working on a contract which will spawn kerbals of a specific name, but it doesn't seem to want to work. Here is the pertinent part of the contract: BEHAVIOUR { name = SpawnKerbal type = SpawnKerbal KERBAL { kerbal = NewKerbal(Male,"Pilot", "Norman Thuot") kerbalType = Crew owned = true addToRoster = True targetBody = HomeWorld() lat = 10.5959 lon = 239.8044 alt = 0 heading = 180.0 } } And here is the error I am getting in the log when it is called: [EXC 18:44:11.553] MissingMethodException: Method not found: 'ProtoCrewMember.ChangeName'. ContractConfigurator.Behaviour.SpawnKerbal.OnAccepted () ContractConfigurator.ContractBehaviour.Accept () ContractConfigurator.ConfiguredContract.OnAccepted () Contracts.Contract.SetState (State newState) Contracts.Contract.Accept () ContractConfigurator.Util.MissionControlUI.OnClickAccept () UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) UnityEngine.Events.InvokableCallList.Invoke (System.Object[] parameters) UnityEngine.Events.UnityEventBase.Invoke (System.Object[] parameters) UnityEngine.Events.UnityEvent.Invoke () UnityEngine.UI.Button.Press () UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) UnityEngine.EventSystems.EventSystem:Update() I am running KSP.x86_64 version 3.1.1 and ContractConfigurator 1.24.4.0 I tried running the SpawnKerbal behavior detailed on the wiki https://github.com/jrossignol/ContractConfigurator/wiki/SpawnKerbal-Behaviour but that won't even load the contract to run. Suggestions, pointers, questions? What am I missing in how to do this?
×
×
  • Create New...