-
Posts
15,690 -
Joined
-
Last visited
Content Type
Profiles
Forums
Developer Articles
KSP2 Release Notes
Everything posted by Superfluous J
-
While waiting for 1.1 to release I've played a LOT of Darkest Dungeon. I'm also supposedly playing Just Cause 3, but I've not touched it in about 2 weeks. On my phone I've been a bit addicted to Soda Dungeon.
-
@crapstar That's quite a set of mods there I think at least I'd need to see your log file. At the best, it'll find some sort of problem. At the worst, I can give you a version with extra logging to try. But first, if you would load up a fresh game, start a fresh save, plop 2 solar panels on a command pod and try to "extend all" on them. Then upload the log file somewhere so I can take a peek. Information on the log file location can be found here:
-
That's the one. It would be, if it was the way it worked. But it doesn't. You don't have to do it in the same mission for it to overwrite. If you orbit Mun and then 18 years and 152 mission later plant a flag on Mun, the Mun XP will be equal to the flag XP, not (flag + orbit) XP. So to maximize XP, just plant flags everywhere. except Kerbin. Orbiting is more XP than planting a flag because it's harder. The reason we do the "Mun flyby, escape Kerbin SOI, land on Minmus and plant a flag" mission is because if you add up those XPs it is JUST enough to get to level 3. Once you're at level 3, you're halfway to anywhere fully leveled up, essentially.
-
[1.1] StrutFinder 0.2, Updated April 19, 2016
Superfluous J replied to kujuman's topic in KSP1 Mod Releases
Very cool. Auto-delete of "bad" struts would be useful as well. -
Me modding KSP Some bad news regarding this mod: All the planned updates are being put off indefinitely. I'm not going to rule any future updates out, but I will say right now that modding KSP is EXCRUCIATINGLY DIFFICULT when you don't have any practical experience in C# or Unity, and haven't seriously programmed in decades. I threw in the towel on a prettier interface and decided to just code in the extra stuff, and wouldn't you know that each and every one was uniquely more difficult than the 3 I had chosen to put in to start. Seeing as those 3 (solar panels, radiators, and science) are the most important to me personally I still consider the mod very useful, but I don't see the possibility of extending this to cargo bays, drills, reaction wheels, or fuel cells any time soon. I asked for and received endless and wonderful help from many modders here and I appreciate all the effort they put in, but sadly I just don't think anything beyond what I've already done is practical to expect any time soon. :/ So, 0.3 is currently a release candidate. If I have no breakthroughs in the next couple weeks I'll wash my hands of it and be done.
-
It should be, unless the user screws around with the modulemanager config. I suppose I could check for it and then skip it if the module's not there? Check if it's null? That code gets this error: Error CS0021 Cannot apply indexing with [] to an expression of type 'IEnumerable<AYA_Solar_Test>' Removing the [0] at the end gets: Error CS0266 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<AllYAll.AYA_Solar_Test>' to 'AllYAll.AYA_Solar_Test'. An explicit conversion exists (are you missing a cast?)
-
Weird. I had no statement there and VS was giving me an error. I just removed it to get the error, and VS is totally fine with it. #NoobModder UPDATE: After much fiddling I'm almost positive I just don't have the correct syntax for something. Nothing I do will modify the text or the visibility of the button on other solar panels. All I can do is modify those on the CURRENT one (my first code block above). Other than knowing that, though, I've got no clue where to proceed. UPDATE 2: More fiddling, and digging through logging. I found that in the coroutine the following line gets a null reference exception: solarPanel.Events["ToggleAllSolar"].guiActive = false; solarPanel.Events["ToggleAllSolar"].guiActive = false; I think it's because this is the "ModuleDeployableSolarPanel" module and I need to reference, on the same part with that module, the AYA_Solar_Test module. I just (as always) don't know how to do that.
-
Okay as expected some liquidity and sleep has invigorated me anew, and I'm seeming to make progress. However I seem to still be missing some critical things, and would love some more help. @Crzyrndm, If you've said something above that I didn't implement below, don't think I'm ignoring you. I'm just .that. .lost. here. Here's the code I have. It technically works but not the way I want. the text ("extend all" and "retract all") don't change and the buttons don't disappear during movement, but the panels DO all extend and retract: public class AYA_Solar_Test : PartModule { [KSPEvent(guiActive = true, guiActiveEditor = false, guiName = "UNINITIALIZED!")] public void ToggleAllSolar() { foreach (Part eachPart in vessel.Parts) { var panel = eachPart.FindModuleImplementing<ModuleDeployableSolarPanel>(); if (panel != null) { if (panel.panelState == ModuleDeployableSolarPanel.panelStates.RETRACTED) { panel.Extend(); } if (panel.panelState == ModuleDeployableSolarPanel.panelStates.EXTENDED) { panel.Retract(); } StartCoroutine(waitForExtendRetractSolar(panel)); } } } public System.Collections.IEnumerator waitForExtendRetractSolar(ModuleDeployableSolarPanel solarPanel) { solarPanel.Events["ToggleAllSolar"].guiActive = false; while (solarPanel.panelState == ModuleDeployableSolarPanel.panelStates.EXTENDING || solarPanel.panelState == ModuleDeployableSolarPanel.panelStates.RETRACTING) { yield return new WaitForSeconds(1); } if (solarPanel.panelState == ModuleDeployableSolarPanel.panelStates.RETRACTED) { solarPanel.Events["ToggleAllSolar"].guiName = "Extend All TEST"; } if (solarPanel.panelState == ModuleDeployableSolarPanel.panelStates.EXTENDED) { solarPanel.Events["ToggleAllSolar"].guiName = "Retract All TEST"; } solarPanel.Events["ToggleAllSolar"].guiActive = true; yield return new WaitForSeconds(0) ; // This is totally a kludge I have it in here because it doesn't error out. I'll happily fix it if someone tells me how. } } Earlier, I had this code and it worked perfectly. The hide/reveal part worked, and the text changed from "extend" to "retract" as expected. However, it only did it on the panel I right-clicked on. The other panels extended and retracted, but their buttons stayed visible and their text didn't change. It's why I made the changes in the first code block: public class AYA_Solar_Test : PartModule { [KSPEvent(guiActive = true, guiActiveEditor = false, guiName = "Extend All TEST")] public void ToggleAllSolar() { foreach (Part eachPart in vessel.Parts) { var panel = eachPart.FindModuleImplementing<ModuleDeployableSolarPanel>(); if (panel != null) { if (panel.panelState == ModuleDeployableSolarPanel.panelStates.RETRACTED) { panel.Extend(); } if (panel.panelState == ModuleDeployableSolarPanel.panelStates.EXTENDED) { panel.Retract(); } StartCoroutine(waitForExtendRetractSolar(panel)); } } } System.Collections.IEnumerator waitForExtendRetractSolar(ModuleDeployableSolarPanel solarPanel) { Events["ToggleAllSolar"].guiActive = false; while (solarPanel.panelState == ModuleDeployableSolarPanel.panelStates.EXTENDING || solarPanel.panelState == ModuleDeployableSolarPanel.panelStates.RETRACTING) { yield return new WaitForSeconds(1); } if (solarPanel.panelState == ModuleDeployableSolarPanel.panelStates.RETRACTED) { Events["ToggleAllSolar"].guiName = "Extend All TEST"; } if (solarPanel.panelState == ModuleDeployableSolarPanel.panelStates.EXTENDED) { Events["ToggleAllSolar"].guiName = "Retract All TEST"; } Events["ToggleAllSolar"].guiActive = true; // blah blah blah... yield return new WaitForSeconds(0) ; // This is totally a kludge I have it in here because it doesn't error out. I'll happily fix it if someone tells me how. } } Also, note that final "yield return." If someone could tell me the correct way to get out of that function (just "return" doesn't fly with Visual Studio) I'd appreciate it, though I'll happily keep the code there if it works. I don't think it's causing any problems (though my opinion is at best suspect on these matters)
-
I used to do a similar thing but I did mun flyby->escape, then burn back to Minmus, land, flag, return to Kerbin. Not necessary to do any science or whatnot. I liked doing the Minmus part last because I figured the flag planting ceremony was their graduation. Nowadays I use that mod that gives them experience in flight. The name totally escapes me right now.
-
If the game allows it, it's legit. If the failure is (in my sole opinion) the game's fault, I can revert. Testing is free and infinitely available, but I must decide BEFORE I START that it's a test. I use(d?) Holodeck for this a lot to help enforce it. If a disaster is so bad that I'm willing to just give up on the save, I can revert even if it's my fault. I'm sure there are more, but those are the big ones.
-
How to transfer from Mun to Minmus ?
Superfluous J replied to Tatonf's topic in KSP1 Gameplay Questions and Tutorials
And one final thing (until I think of another final thing), I was once where you are now, and eventually decided that the transfer planners are great for telling you WHEN to transfer, but when it comes to telling you HOW you're better off just fiddling with maneuver nodes until you nail it. That's the engineer in me beating the mathematician. I don't care what the equations say SHOULD work. I care what actually DOES work. -
How to transfer from Mun to Minmus ?
Superfluous J replied to Tatonf's topic in KSP1 Gameplay Questions and Tutorials
Just eyeballing the picture, it looks like you're totally fine except you're escaping too fast (my first guess). If you just tone down the prograde on the maneuver node a little bit I bet you'll nail it. Super easy to do with PreciseNode installed. Just dial it down to 0.1 or so and click it down. Regarding dV to the transfer, if time is of no importance you can get to Minmus with just about the minimum dV possible by just burning to escape Mun at the point where your resultant orbit will be crossing Minmus' orbit right at the An/Dn markers (which you are just about doing) and also nail your orbit's Ap to touch Minmus' orbit right at that point (which slowing down here should do). When those are touching, the game should most assuredly give you close approach markers. One will be right there showing your ship's position at that time, and the other will be somewhere else on Minmus' orbit (in this case I bet very nearby, but in general - with no pre-planning or timing - it could be anywhere). The trick is, after you get this near encounter, to place a maneuver node just AFTER your ship's location marker (up just past Ap) and set it to burn PROGRADE a little, which will cause Minmus' location marker to move around its orbit until you get an encounter. You need to burn that fuel anyway to stop at Minmus, and Oberth gains at Minmus aren't THAT great, that doing this small burn really doesn't waste enough fuel to worry about. And, as a bonus, it always works. I should do a video on this some day. -
90t to Kerbin Orbit
Superfluous J replied to ibanix's topic in KSP1 Gameplay Questions and Tutorials
I prefer - in order - reaction wheels, gimbals, fins, vernors, monoprop. Mostly due to weight vs utility concerns. I love not having to bring monoprop tanks, and reaction wheels work everywhere. You can't beat the stopping power of escaping gas, though. Except with a planet's surface, but that's outside our mission parameters. -
90t to Kerbin Orbit
Superfluous J replied to ibanix's topic in KSP1 Gameplay Questions and Tutorials
Regarding your last question, yes. It's far easier to fly up 500 tons of fuel than it is 400 tons of fuel attached to 100 tons of spaceship. This is because you have a large amount of control over the shape of your fuel lifter, while the ship has to fit into the confines of the mission parameters. Also, you can use the final engine of your fuel ship in the very first stage if you build correctly. This is the "Why God, Why." It can get 660 tons into LKO, most of that fuel. Just as an example: It's more than you need, obviously. Your fuel lifter could probably be half this size. -
How to transfer from Mun to Minmus ?
Superfluous J replied to Tatonf's topic in KSP1 Gameplay Questions and Tutorials
I don't know about the planner (I don't use it for moon-to-moon transfers, as the scale is so small it's easier to just go) but based solely on that 3rd pic, you're either going way too fast or ejecting at way the wrong time. Based on your Kerbin Pe (which looks good for an efficient transfer) I'd say the problem is your exit velocity. Bring it down until your Ap gets closer to Minmus' orbit. Getting intersect markers is not a science, it's an art. A dark art that usually involves sacrificing chickens. Smaller worlds like Minmus and Gilly (And Pol and Bop) can be really finicky about it. I can't give you much advice there except "Keep fiddling with the maneuver node" :/ -
First sattelite attempt
Superfluous J replied to strider3's topic in KSP1 Gameplay Questions and Tutorials
You should use nothing. Just leave the fuel and engine on there. I've never left fuel and engines on a satellite and regretted it, but I HAVE tossed perfectly useful stuff aside and realized later it would have been nice to have. But if you really want to disconnect it (aesthetic and all that) then you can tweak the decoupler force to 0 (is that an option in stock? It used to be TweakableEverything but they implemented a lot of that into stock) or use stack separators, which are heavier and leave more junk in orbit. Or, you can figure out how much speed the decoupler will impart on your satellite and set up your orbit to require a burn of that many m/s. Then use the decoupler to initiate that "burn." I've done it, but it's not worth it IMO. Especially because that was one of the satellites that I realized later I'd need to move. -
So wait, that would change the visibility of each button in all of the panels' right click menus? That's actually super cool and I didn't even know I wanted it to work that way until just now. Okay one last thing and I'm (hopefully) out of your hair. VS is complaining that I have to return a value, but I don't even know what an IEnumerator is. I tried 1 and 0 but it says Int doesn't count.
-
1) Aha. Am I right in thinking that that first method will just pick the first Solar Panel it finds? I don't mind that as a backup, but I'd prefer it pick the actual part we're dealing with if possible. It should be a solar panel, I'm setting that in a modulemanager config. 2) Oops. I thought maybe I could simplify it I'll fiddle a bit more and undoubtedly come up with something else that I can't figure out. As always, thank you very much.
-
I think something like this should work for me as this will always be running in a Solar panel. However, it's still not liking the syntax for some reason. I think it's because I'm not actually modifying ModuleDepoloyableSolarPanel, but instead adding a new module. Among all the things I don't know is how to tell it I'm in a solar panel. Here's the full code I have so far. I put the error as a comment on the line that the compiler's complaining about: public class AYA_Solar_Test : PartModule { public bool togglesolar = true; // may need changed to take into account already open panels [KSPEvent(guiActive = true, guiActiveEditor = false, guiName = "Extend All TEST")] public void ToggleAllSolar() { foreach (Part eachPart in vessel.Parts) { var panel = eachPart.FindModuleImplementing<ModuleDeployableSolarPanel>(); if (togglesolar) if (panel != null) panel.Extend(); if (!togglesolar) if (panel != null) panel.Retract(); } Events["ToggleAllSolar"].guiActive = false; while (panelState == panelstates.Extending) // CS0103 The name 'panelState' does not exist in th current context (Same with panelStates) { // do stuff } if (togglesolar) Events["ToggleAllSolar"].guiName = "Retract All TEST"; if (!togglesolar) Events["ToggleAllSolar"].guiName = "Extend All TEST"; togglesolar = !togglesolar; } }
-
That actually makes sense to me. Thank you. I may need a little more help with the "module.state != extended" part as that looks like pseudocode, especially with the comment I don't actually know how to check that state, either on the part or the module or what. I also don't know how to find out what it should be, or even the exact syntax. For fun I just tried typing "module" into VS (which is pretty helpful in at least letting you know you're on the right track) and it doesn't seem to be valid.
-
While retractable things (say, Solar panels) are moving, the "extend" and "retract" buttons are not visible. Once they stop moving, the appropriate button becomes displayed. I know that buttons are KSPEvent() and I can make one that shows up or not. I even figured out how to enable and disable them (and change their text, in case that's needed). However, I can't seem to grasp how to change these states based on the status of the part. Specifically, this is for All Y'All. I'm trying to make it so my buttons work the same way the stock ones do visually. So you only have one button "Extend all" and that only is there if the selected panel is retracted. When you click it, it goes away, the panel (and all panels) extends, then when it's done extending a "Retract all" button appears.
-
I liked 'The Lounge' better than 'General Discussion'.
Superfluous J replied to cubinator's topic in Kerbal Network
I don't care what any of the forums are named so long as I can find a place to put my posts. If it's a general piece of discussion, then I suppose General Discussion is a good place for it. I don't think I've ever been not lounging while browsing the forums, so that seems more vague.