• Warbirds Library V4 (Resources for now) How to


    We just posted part one of the how to on uploading new files to the Library. Part 1 covers adding new files. Part 2 will cover making changes to your the uploads you own.


    Questions or comments please post them in the regular forums. Which forum is that... Well it is the one you spend the most time in.

    Thanks the Staff

    Library How to

Better programs than gmax? Anybody around here make planes or have advice?

Sweetd31

Members +
Hi, i was told simouthouse has a lot of og's who made planes.

Reading over old forum posts i keep seeing gmax repeatedly mentioned for working on models, adding clickables and code for switches. It is no longer supported but is archived as a torrent.

Is there something more modern than gmax that will allow me to create clickable cockpits, etc?

--edit: i do have blender but it wont recognize mdl files? I just want to learn how to make cockpits more dynamic. I.e. take a already existing cockpit and add button function to functionless buttons
 
Last edited:
Specifically i am looking to add function to buttons on an f15. The buttons are already recognized meaning when i hover ther is the finger pointer, but no function. Maybe add switch from nav 1 to nav 2 to ils, or the mode button on the mfd make it switch between gps and nav/nav2.
 
If I understand correctly you are trying to add functions to buttons that are already modeled in the cockpit.
Therefore you don't need a modelling tool you need gauge development skills (the ability to code XML is a good starting point).

In extremely simplified terms you will need to do the following steps

You would write the code to do the function that you want

As an example this code will mute the radio
XML:
  <PartInfo>
    <Name>switch_mute_radios</Name>
    <AnimLength>50</AnimLength>
    <Animation>
      <Parameter>
        <Sim>
          <Variable>COM RECEIVE ALL</Variable>
          <Units>bool</Units>
          <Scale>-50</Scale>
          <Bias>50</Bias>
        </Sim>
      </Parameter>
    </Animation>
    <MouseRect>
      <Cursor>Hand</Cursor>
      <EventID>COM_RECEIVE_ALL_TOGGLE</EventID>
      <TooltipID>TOOLTIPTEXT_COM_RECEIVE_ALL</TooltipID>
    </MouseRect>
  </PartInfo>

Once you have the code written you can import the model into ModelconverterX and (hopefully) be able to find the button. Now you can attach your xml code to the button using the "mouse rectangle" function.

Re-compile the model and if you are incredibly lucky you can go into FSX, load your aircraft, click on the button and it will do what you expect.
If not, you need to debug your XML and try again.

good luck
Gavin
 
Here is one of the two goals I have currently:
I want to swap the F-15 gauge into the left MFD of the F16, because the localizer works. But the default screen is off, and the buttons of the F16 obviously wont match up with the buttons of the F15, so it just remains off. I'd like to approach this one of two ways, either add the ability to click on the F16 buttons and have it recognize the F15 (superhornet) MFD commands, OR have the game load into with the left MFD already on displaying the HSI by default. I could care less about the radar tbh, and i could just display it on the fully functional R MFD. Option #1 will help me for my second goal.
<Gauge Name="DCD F-18 Super Hornet MFD" Version="1.0">
<Image Name="Screen_Off.bmp"/>

<Element>
<Visible>(A:Circuit Avionics on, bool)</Visible>
<Image Name="Background.bmp"/>
</Element>

**** I skipped over the checklist line******
<!--HSI Screen-->

<Element>
<Visible>(A:Circuit Avionics on, bool) (L:MFD Button, enum) 2 == &amp;&amp;</Visible>
<Image Name="Background.bmp"/>

<Element>
<Visible>(A:Circuit Avionics on, bool) (L:MFD Button, enum) 2 == &amp;&amp;</Visible>
<Image Name="DCD_HSI.bmp"/>

<Element>
<Visible>(A:Circuit Avionics on,bool)</Visible>
<Position X="256" Y="256"/>
<Image Name="HSI_ROSE.bmp" Bright="1">
<Axis X="150" Y="150"/>
</Image>
<Rotate>
<Value>(A:plane heading degrees gyro,radians) /-/</Value>
</Rotate>
</Element>

.... because the line goes on.
Here is a pic of the MFD on the left that I wish to display 24/7, option #1 would be cool if I could map the buttons to the f16, but a permanent display of the HSI would be totally fine, because I fly IFR/ILS often
1716516831149.png
 
Last edited:
If I understand correctly you are trying to add functions to buttons that are already modeled in the cockpit.
Therefore you don't need a modelling tool you need gauge development skills (the ability to code XML is a good starting point).

In extremely simplified terms you will need to do the following steps

You would write the code to do the function that you want

As an example this code will mute the radio
XML:
  <PartInfo>
    <Name>switch_mute_radios</Name>
    <AnimLength>50</AnimLength>
    <Animation>
      <Parameter>
        <Sim>
          <Variable>COM RECEIVE ALL</Variable>
          <Units>bool</Units>
          <Scale>-50</Scale>
          <Bias>50</Bias>
        </Sim>
      </Parameter>
    </Animation>
    <MouseRect>
      <Cursor>Hand</Cursor>
      <EventID>COM_RECEIVE_ALL_TOGGLE</EventID>
      <TooltipID>TOOLTIPTEXT_COM_RECEIVE_ALL</TooltipID>
    </MouseRect>
  </PartInfo>

Once you have the code written you can import the model into ModelconverterX and (hopefully) be able to find the button. Now you can attach your xml code to the button using the "mouse rectangle" function.

Re-compile the model and if you are incredibly lucky you can go into FSX, load your aircraft, click on the button and it will do what you expect.
If not, you need to debug your XML and try again.

good luck
Gavin
Screenshot 2024-05-23 214856.png
Here is my view in modelconverterx, weirdly when I loaded the interior file, it loaded the entire model. Inside the cockpit, I am trying to figure out what you mean by mouse rectangle function, I see the buttons, in front of me that are already animated in the F16 (beneath and flanking the MFD). The XML file for the F15 is up above, now how to make peanut butter mix with jelly? Getting started with a gauge that already exists would get the ball rolling for me, I just need to know how to assign to these buttons. ABOVE in the F15 MFD.xml you can see buttons are accounted for

(L:MFD Button, enum) 2 == &amp;&amp;</Visible>
Now just how to map it to one of these rectangles. It would be cool to learn how to add those rectangles/attachment points as well. Update:
piecing it together I think.... when you say attach, you mean via the xml editor inside the modelconverterx?
 
Last edited:
Also, I did download the following books and added the following pages to my reading list.
- Understanding XML
- XML for dummies
- XML in a Nutshell
- Numerous pages from fsdeveloper.com
- FS2x.com (a whole page dedicated to teaching FSX related XML topics)

Feel free to add any resources you found useful. Again, I really appreciate it.
-Edit Holy F, I looked at a milviz plane and they used 6,662 lines of code... thank goodness i'm not using that one.
 
Last edited:
When you have the interior file open in MCX you can use the Hierarchy Editor to step thru all the parts of the model to find the one you need (there is no quick way that I have come across to do this - you just need to systematically click until the part you are looking for is highlighted.

Here is a shot of the interior of the default FSX F-18 - you can see that one of the buttons of the display is highlighted in red.
1716589026038.png
Now in the Hierarchy Editor of MCX you can see the attributes of that part
1716589200611.png

You can see that the Mouse Rectangle links to the code called ddi_l_btn_13
This code looks like this
XML:
 <PartInfo>
    <Name>ddi_l_btn_13</Name>
    <AnimLength>50</AnimLength>
    <Animation>
      <Parameter>
        <Code>
          (L:ddi_l_btn_13,number) 50 *
        </Code>
        <Lag>250</Lag>
      </Parameter>
    </Animation>
    <MouseRect>
      <Cursor>Hand</Cursor>
      <MouseFlags>LeftSingle</MouseFlags>
      <EventID>0x0001110D</EventID>
    </MouseRect>
  </PartInfo>

So you can change it to some other code (or add a mouse function if there is none) by clicking on the entry under Mouse Rectangle which then opens a drop down box with all the appropriate parts.

Hope this helps a bit.

As to why you are seeing the external model it could be that is the way the model is built. Are these native FSX aircraft or conversions from FS9?
 
When you have the interior file open in MCX you can use the Hierarchy Editor to step thru all the parts of the model to find the one you need (there is no quick way that I have come across to do this - you just need to systematically click until the part you are looking for is highlighted.

Here is a shot of the interior of the default FSX F-18 - you can see that one of the buttons of the display is highlighted in red.
View attachment 124510
Now in the Hierarchy Editor of MCX you can see the attributes of that part
View attachment 124511

You can see that the Mouse Rectangle links to the code called ddi_l_btn_13
This code looks like this
XML:
 <PartInfo>
    <Name>ddi_l_btn_13</Name>
    <AnimLength>50</AnimLength>
    <Animation>
      <Parameter>
        <Code>
          (L:ddi_l_btn_13,number) 50 *
        </Code>
        <Lag>250</Lag>
      </Parameter>
    </Animation>
    <MouseRect>
      <Cursor>Hand</Cursor>
      <MouseFlags>LeftSingle</MouseFlags>
      <EventID>0x0001110D</EventID>
    </MouseRect>
  </PartInfo>

So you can change it to some other code (or add a mouse function if there is none) by clicking on the entry under Mouse Rectangle which then opens a drop down box with all the appropriate parts.

Hope this helps a bit.

As to why you are seeing the external model it could be that is the way the model is built. Are these native FSX aircraft or conversions from FS9?
Aerosoft F16, the milviz and DC designs F15 as well. I just want to map the DC designs left MFD to the buttons of the aerosoft F16 so I can have a functional localizer. The F16 has a gauge that is functional, but I have to look down to my lap and its small. I assume that the localizer function will automatically detect if I MFD gauge swap. Thought this would be a good first homework assignment to learn.

If I knew more about XML I'd just load the HSI upon spawn, but its default state is "off", and without the buttons, you can't click HSI.
 
Last edited:
Hierarchy was a big help, i'm going to see if this works out. custom_rec_event_101 is the one I am aiming for.Screenshot 2024-05-24 192450.pngScreenshot 2024-05-24 195502.png
^^^ F16

Below is the beginning of the code of the F15 MFD
<!--HSI Screen-->

<Element>
<Visible>(A:Circuit Avionics on, bool) (L:MFD Button, enum) 2 == &amp;&amp;</Visible>
<Image Name="Background.bmp"/>

<Element>
<Visible>(A:Circuit Avionics on, bool) (L:MFD Button, enum) 2 == &amp;&amp;</Visible>
<Image Name="DCD_HSI.bmp"/>

<Element>
<Visible>(A:Circuit Avionics on,bool)</Visible>
<Position X="256" Y="256"/>
<Image Name="HSI_ROSE.bmp" Bright="1">
<Axis X="150" Y="150"/>
</Image>
<Rotate>
<Value>(A:plane heading degrees gyro,radians) /-/</Value>
</Rotate>
</Element>
 
My question would be, do I take the line from the XML editor and add it to the F15 MFDxml? I guess I could throw the F15 interior into the editor to cross-reference. OR vice versa, change the name of the custom rec in the F16 to match the xml file from the F15?

I've tried just plugging it in from the other xml file, but I don't think it is correct because the button wont respond
I'll highlight in bold the pieces from the F15 xml
<PartInfo>
<Name>custom_rec_Event_101</Name>
<MouseRect>
<Cursor>Hand</Cursor>
<MouseFlags>LeftRelease+LeftSingle</MouseFlags>
<TooltipText>HSI</TooltipText>
<CallbackCode>
(M:Event) 'LeftSingle' scmp 0 ==
if{
25 (&gt; L:LMFD_bb_2, position)
2 (&gt;L:MFD Button, enum)
}
(M:Event) 'LeftRelease' scmp 0 ==
if{
0 (&gt; L:LMFD_bb_2, position)
}
</CallbackCode>
</MouseRect>
</PartInfo>

I tried a few other combinations, but I think I need to start reading the xml for dummies book. The MFD loads in, but I can't get custom_rec_event_101 to pull up the F15 HMI.Microsoft Flight Simulator X 5_24_2024 9_27_30 PM.png
It's loading in fine, but in order for it to switch to HSI I need the button to work. Unless I can figure out how to load the HSI on startup, that would solve my need for a button.
 
Last edited:
Turns out the F16 has a fully functioning localizer and glideslope, it was user error. I am definitely not going to give up and want to keep learning. I am going to keep this project and tinker with it for practice.
 
Back
Top