Jump to content

[WIP] [1.12.x] MOARdV's Avionics Systems - MAS Interactive IVA! (v1.3.7, 7 April 2023)


MOARdV

Recommended Posts

14 hours ago, toxicgu23 said:

Unfortunately, I don't understand programming code.

How did you make a custom high G voice alarm? If you show me the cfg you used I can help you with removing the disruption

Edited by Manul
Link to comment
Share on other sites

7 hours ago, Manul said:

How did you make a custom high G voice alarm? If you show me the cfg you used I can help you with removing the disruption

I just replace the alarm audio file in the folder(D:\GAME\Steam\steamapps\common\Kerbal Space Program\GameData\ASET\ASET_Props\Sounds) with my own voice, for example (LOWALT.wav   HighG.wav GroundProximity.wav) .Maybe it's because the length of the original file is different. When encountering power failure, the last audio has not finished playing, and it starts to play again.

I tried to find the relevant configuration options in the \MOARdV\FlightSystems folder according to the WIKI tutorial you sent, for example

MAS_mk1-3.cfg

@PART[mk1-3pod]:NEEDS[AvionicsSystems]
{
    @INTERNAL
    {
        @name = MAS_Mk1-3
    }

    MODULE
    {
        name = MASFlightComputer
        requiresPower = true
        gLimit = 14.7
        baseDisruptionChance = 0.20

I changed the original gLimit=4.7 to gLimit=14.7, but when using the MK1-3 cockpit in the game, it will still be powered off at 4.7G.Is it a problem I understand or an operation error?

Later, I opened all the CFG and TXT files in the module folder and searched for fc. Conditioned,give an example

MAS_LUA
{
    name = MAS IFMS scripts

    script = MOARdV/MFD/IFMS/IFMS_Scripts.lua
}

PROP
{
    name = MAS_IFMS_MainCompUnit
    MODEL
    {
        model = ASET/ASET_Props/Misc/JSIMainCompUnit/JSIMainCompUnit
    }

    MODULE
    {
        name = MASComponent

        startupScript = IFMS_MCU_Init("%AUTOID%")

        //--- Decorative Elements
        COLOR_SHIFT
        {
            name = JSI Label backlight
            transform = pCube30
            passiveColor = 0, 0, 0, 255
            activeColor = 255,255,255,255
            blend = true
            variable = fc.Conditioned(fc.GetPersistentAsNumber("Backlight"))
        }
     I deleted the content in brackets, but MFD in the game doesn't work properly:confused:

Link to comment
Share on other sites

52 minutes ago, toxicgu23 said:

but when using the MK1-3 cockpit in the game

Mk1-3 isn't a cockpit is's an appolo style command pod

Did you delete the function in brackets and not brackets themselves?

variable = fc.Conditioned(fc.GetPersistentAsNumber("Backlight")) should look like variable = fc.GetPersistentAsNumber("Backlight")

Link to comment
Share on other sites

30 minutes ago, Manul said:

Mk1-3 isn't a cockpit is's an appolo style command pod

Did you delete the function in brackets and not brackets themselves?

variable = fc.Conditioned(fc.GetPersistentAsNumber("Backlight")) should look like variable = fc.GetPersistentAsNumber("Backlight")

Thanks, I got it. I'll take a test

Link to comment
Share on other sites

1 hour ago, Manul said:

Mk1-3 isn't a cockpit is's an appolo style command pod

Did you delete the function in brackets and not brackets themselves?

variable = fc.Conditioned(fc.GetPersistentAsNumber("Backlight")) should look like variable = fc.GetPersistentAsNumber("Backlight")

You are Awesome!!! I made a mistake. Because of the localization language, the two command modules are translated with the same name.:D

If change the gLimit parameter to 14.7,  the power will be interrupted when the G value reaches 14.7

But there is a small problem that I hope can be solved. There is no mk1InlineInternal file in the GameData\MOARdV\FlightSystems folder. How can I add or modify it

Link to comment
Share on other sites

6 hours ago, Manul said:

Mk1-3不是驾驶舱是阿波罗风格的命令舱

您是否删除了括号中的函数,而不是括号本身?

变量 = fc。条件反射获取常量编号(“背光”)应类似于变量 = fc。GetPersentAsNumber(“背光”)

Ha ha ha ha ha ha, I got it!!! Thanks very much.

Edited by toxicgu23
Link to comment
Share on other sites

There's a slight problem with this prop, you can enter parameters, it works fine with Mechjeb (although not fully integrated in number of parameters) except you can't use "." or "," to separate numbers, which is pretty usual when defining an inclination. In this case I wanted to try 36.62, but only could 36.

Also I'm unsure what all the other "F02", "F04", "F10" buttons are supposed to do. Or perhaps they're blank for future features? The keyboard is nice but don't see where to use it? Is this prop integrated with kOS?

Spoiler

YgTYD5q.png

Link to comment
Share on other sites

19 hours ago, Sesshaku said:

There's a slight problem with this prop, you can enter parameters, it works fine with Mechjeb (although not fully integrated in number of parameters) except you can't use "." or "," to separate numbers, which is pretty usual when defining an inclination.

Yes, that's because adding decimal support was non-trivial without custom code to manage the correct placement of the decimal, or the inclusion/exclusion of the decimal character.  The data entry space accepts characters as input, and it has to convert them to a numeric value to feed to MechJeb.  But it also has to convert numeric values to strings when reading values from MechJeb.  At the end of the day, I decided I did not want to have to write all of the custom code required to implement those capabilities and handle edge cases.  What it needs is a bespoke set of functions built in to MAS to handle all of that overhead, instead of trying to do it in Lua scripts.

As for the F02 buttons, etc.  They don't do anything.  I left placeholders on the screen so that I would not need to position text later, but I never finished working on that MFD.  I keep starting on MFDs, getting them partially working, and then run out of ideas.  This is another example of that. :( 

Right now, the keyboard doesn't do anything, either.  All of the keys work, but there's nothing that takes advantage of them.  The original prop was intended to integrate with kOS, but RPM wasn't well-suited to support that integration.  If I ever figure out how to integrate kOS and MAS, you would be able to use that keyboard to type commands into kOS (or whatever else you do with kOS - I've never used it).

Link to comment
Share on other sites

  • 1 month later...
On 9/7/2022 at 6:16 PM, Stone Blue said:

I know Vulkan submitted a ton of converted props a couple years ago that you merged. I've scrubbed the "new" ~185 props he converted, which i have permission to release, but I wanna scrub one moar time, just to make sure nothing is duplicated with what may already be converted/included, in MAS, ASET Props, and a couple other things.

There are lots of entirely new  props made by @vulkans in his M2X Angler IVA mod and they are awesome. I already found a good use for some of them in my attempt to make "a perfect aerospace fighter IVA"(tm), now this project is even further from completion than it used to be before I discovered this treasure chest. I also made a few props based on his stuff like external buttons for a holographic MFD and adjustable height for ASET HUD to make a watermark face the right direction (once the HUD height is found using adjustments it can be added to the cockpit's persistent variables)

E2RYo65.png

Finally got the idea how the MFD pages switching works (with lots of trial and error like having the MFD stuck in one page or not displaying any pages at all) now I'm trying to make a science MFD with biome map. Still can not get the map aligned and scaled correctly (only @MOARdV and @vulkans can do this magic) and menu items being displayed where I want them to be.

While messing with science MFDs in my career playthrough discovered that contracts like "do science XXX at area YYY" don't get any progress when science is done using MAS. Had to dump results and activate the experiment again using VesselView or in the old boring fasion with PAW

Link to comment
Share on other sites

  • 1 month later...

Hello! Thank you first for making such an amazing add-on.However, I've been consistently encountering "[AvionicsSystems] INITIALIZATION ERROR" on all MAS IVA-installed craft. After investigating the log, it appears what is causing this is that UpdateNeighboringVessels invoked by TargetVesselCount is attempting to sort an empty array:

Spoiler
IComparer.Compare() method returns inconsistent results. Either a value does not compare equal to itself, or one value repeatedly compared to another value yields different results. IComparer: 'AvionicsSystems.MASFlightComputerProxy+VesselDistanceComparer'.
  at System.Collections.Generic.IntrospectiveSortUtilities.ThrowOrIgnoreBadComparer (System.Object comparer) [0x0000b] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Collections.Generic.ArraySortHelper`1[T].Sort (T[] keys, System.Int32 index, System.Int32 length, System.Collections.Generic.IComparer`1[T] comparer) [0x00022] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Array.Sort[T] (T[] array, System.Int32 index, System.Int32 length, System.Collections.Generic.IComparer`1[T] comparer) [0x00048] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Array.Sort[T] (T[] array, System.Collections.Generic.IComparer`1[T] comparer) [0x0000e] in <9577ac7a62ef43179789031239ba8798>:0 
  at AvionicsSystems.MASFlightComputerProxy.UpdateNeighboringVessels () [0x000f3] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputerProxy.TargetVesselCount () [0x00000] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at (wrapper dynamic-method) AvionicsSystems.DynamicMethodFactory.(object)
  at AvionicsSystems.MASFlightComputer+<>c__DisplayClass69_2.<Generate0ParmCallVariable>b__1 () [0x00000] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.DoubleVariable.Evaluate (System.Boolean invokeCallbacks) [0x00019] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.DoubleVariable..ctor (System.String name, System.Func`1[TResult] evaluator, System.Boolean cacheable, System.Boolean mutable, AvionicsSystems.Variable+VariableType variableType) [0x0002e] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.Generate0ParmCallVariable (System.String canonical, System.Object tableInstance, System.Reflection.MethodInfo method, System.Boolean cacheable, System.Boolean mutable, System.Type methodReturn) [0x000bd] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateCallVariable (AvionicsSystems.CodeGen.CallExpression callExpression) [0x00163] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateVariable (AvionicsSystems.CodeGen.Expression expression) [0x0008a] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateOperatorVariable (AvionicsSystems.CodeGen.OperatorExpression operatorExpression) [0x0000e] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateVariable (AvionicsSystems.CodeGen.Expression expression) [0x0006c] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateCallVariable (AvionicsSystems.CodeGen.CallExpression callExpression) [0x0004a] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateVariable (AvionicsSystems.CodeGen.Expression expression) [0x0008a] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateOperatorVariable (AvionicsSystems.CodeGen.OperatorExpression operatorExpression) [0x0000e] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateVariable (AvionicsSystems.CodeGen.Expression expression) [0x0006c] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateOperatorVariable (AvionicsSystems.CodeGen.OperatorExpression operatorExpression) [0x00020] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GenerateVariable (AvionicsSystems.CodeGen.Expression expression) [0x0006c] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.GetVariable (System.String variableName, InternalProp prop) [0x000ee] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASFlightComputer.RegisterVariableChangeCallback (System.String variableName, InternalProp prop, System.Action`1[T] callback, System.Boolean initializeNow) [0x00002] in <ff56794a86ce45679e4e44f4fa41242c>:0 
   --- End of inner exception stack trace ---
  at AvionicsSystems.MASFlightComputer.RegisterVariableChangeCallback (System.String variableName, InternalProp prop, System.Action`1[T] callback, System.Boolean initializeNow) [0x0003b] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.VariableRegistrar.RegisterVariableChangeCallback (System.String name, System.Action`1[T] action, System.Boolean initializeNow) [0x00008] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASComponentAnimation..ctor (ConfigNode config, InternalProp prop, AvionicsSystems.MASFlightComputer comp) [0x0019c] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASComponent.CreateAction (ConfigNode config, InternalProp prop, AvionicsSystems.MASFlightComputer comp) [0x0028b] in <ff56794a86ce45679e4e44f4fa41242c>:0 
  at AvionicsSystems.MASComponent.Start () [0x00062] in <ff56794a86ce45679e4e44f4fa41242c>:0 

I'm wondering if there could be something done about this edge case in the function to fix the error.

Thank you so much again!

Link to comment
Share on other sites

8 hours ago, /not/pol/ said:

I am going to have to reverse Engineer BDA in order to get the RWR on a monitor arent i ;;;

Uhh... IIRC, that *should* be relatively easy. I imagine the mirror just has a rear-ward facing camera transform...
Should be able to whip up an MM patch, that adds that transform to the camera pages on any MFD vOv

Link to comment
Share on other sites

9 hours ago, Stone Blue said:

Uhh... IIRC, that *should* be relatively easy. I imagine the mirror just has a rear-ward facing camera transform...
Should be able to whip up an MM patch, that adds that transform to the camera pages on any MFD vOv

YO
LEGIT?

That be LIT.

Link to comment
Share on other sites

18 hours ago, /not/pol/ said:

YO
LEGIT?

That be LIT.

At the least, if you have basic modelling knowlegde, you could probably just create a model, that is just a simple parent object, & a childed camera transform, placed to match specific external cockpit part models, and add your simple model to those relative cockpit parts, with an MM patch, then add a module in another MM patch, to the relative MFD prop cfg.

Basically, its making an external camera part, like those in HullcamVDS, or even the integrated external cameras in the ASET ALCOR pod...
*just without any external skin*, and also not having to actually place them as parts in the editor

Edited by Stone Blue
Link to comment
Share on other sites

On 12/20/2022 at 4:13 PM, Stone Blue said:

Uhh... IIRC, that *should* be relatively easy. I imagine the mirror just has a rear-ward facing camera transform...
Should be able to whip up an MM patch, that adds that transform to the camera pages on any MFD vOv

Nope. Radar Warning Receiver is not about transforms. It's requires getting data from BDArmory about radar threats, distance and bearing of these threats and displaying all this stuff at the MFD. Possibly some new classes and PartModules inherited from MASFlightComputer and BDA RWR will be required to do this.

Edited by Manul
Link to comment
Share on other sites

14 minutes ago, Manul said:

Nope. Radar Warning Receiver is not about transforms.

OH!... gotcha.. I thought it was simply the *camera view* aspect... didnt know there was other *stuff* being asked about/involved.

Edited by Stone Blue
Link to comment
Share on other sites

5 hours ago, Stone Blue said:

OH!... gotcha.. I thought it was simply the *camera view* aspect... didnt know there was other *stuff* being asked about/involved.

Ah, yeah i was wondering what you meant about cameras n stuff, i need to figure out how BDA outputs and displays data within Unity menus/sub-windows and figure out how to make that data displayable by a monitor within the IVA.

Edited by /not/pol/
Link to comment
Share on other sites

On 12/21/2022 at 4:38 PM, /not/pol/ said:

i need to figure out how BDA outputs and displays data

See this https://github.com/BrettRyland/BDArmory/blob/master/BDArmory/Radar/RadarWarningReceiver.cs

But there is no answer how to enable the RWR. Using RadarWarningReceiver.EnableRWR() doesn't do anytning.
I managed to turn the radar on and off by calling the method  ModuleRadar.EnableRadar with  MAS custom actions but it didn't work with RWR.

Quote

        MAS_ACTION_GROUP
        {
            name = RWR
            id = 17

            ACTION
            {
                      name = Falcon_RWR
                      part = PCA_Falcon_Cockpit
                      module = RadarWarningReceiver.EnableRWR
                      action = toggle

            }
    
        }
 
        MAS_ACTION_GROUP
        {
            name = Radar
            id = 18

            ACTION
            {
                      name = Falcon_Radar
                      part = PCA_Falcon_Cockpit
                      module = ModuleRadar.EnableRadar
                      action = toggle

            }
    
        }

The green stuff works just fine, when I hit MAS switch the radar window pops up. The red stuff doesn't have any effect.

Edited by Manul
Link to comment
Share on other sites

Finally got all Unity stuff working on my new PC so it's time to go back to the drawing board. I love the new Touchscreen MFD

dZLh5t3.png

This is the result of my attempts to make a Science page. Can't make it respect situation restrictions for running experiments. Both fc.RunExperiment() and fc.RunAvailableExperiment() allow me to run seismic scan in flight or magnetometer report landed. Is it a bug or I have something important missing?

B2vT03O.png

Edited by Manul
Link to comment
Share on other sites

3 hours ago, MajorTom74 said:

i see files named kOS in the gamedata but i'm not sure what they do

MAS already has some instruments to work with kOS. There is a MAS-powered  kOS monitor aboard Buffalo 2 you can give it a try and see what it is capable of.

 

Link to comment
Share on other sites

12 hours ago, MajorTom74 said:

any plans to add kOS integration? or does a addon already exist for it?

edit: i see files named kOS in the gamedata but i'm not sure what they do as i'm not well versed in KSP mod development.

Lmk know, here on this thread, if theres any problems with that kOS MFD cfg I posted in the BakerOS thread, please. ;)

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...