• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

Independent multiple smoke fx

Messages
14
Country
sweden
Just discovered that it is possible to control multiple smoke effects (smoke.0, smoke1, etc) independently by parsing a number to the SMOKE_ON event (in XML at least). According to the SDK the variable is a boolean, but that is obviously untrue:
Code:
1 (&gt;K:SMOKE_ON)  <!-- enables smoke.0 -->
2 (&gt;K:SMOKE_ON)  <!-- enables smoke.1 -->
0 (&gt;K:SMOKE_ON)  <!-- enables all smokes -->
1 (&gt;K:SMOKE_OFF)  <!-- disables smoke.0 -->
2 (&gt;K:SMOKE_OFF)  <!-- disables smoke.1 -->
0 (&gt;K:SMOKE_OFF)  <!-- disables all smokes -->
...and so on.

The nifty thing about this is of course that it can be used to trigger any fx, not just smoke.

/Tom
 
Messages
52
Country
scotland
Tom,

THIS IS A GREAT DISCOVERY!! There have been many occasions where I've wanted to be able to have control over multiple smoke effects in a model!

I've just tried this out in a short piece of XML that I use to create exhaust smoke from four engines...and it works perfectly...I can control which of the four engines the smoke comes out of now. There are sooo many people who are going to be able now to get their smoke effects out of the [lights] section of the aircraft.cfg file and back into the [smokesystem] section where they should be!!!!

WELL DONE, SIR!!!
 
Last edited:
Messages
14
Country
sweden
My humble thanks...

As I said, this trick can be used for any fx such as map lights in the cockpit (suggested by Fr. Bill in another forum), weapons fx, etc.

The only catch is that at least one engine has to be running (combustion=ON) for the smoke system to work. So when the last engine dies, all of them stop smoking. Which is good for their health but not for realism. ;)
 

n4gix

Resource contributor
Messages
11,674
Country
unitedstates
...this discovery opens up some interesting possibilities, as we can use any type of .fx file and have it "controllable" now, including .fx files that play sounds... ;D

For example, I put the following in the C172's aircraft.cfg file. This will display the "lights" just forward of the windshield in either 2d or VC view:

Code:
[SMOKESYSTEM]
smoke.1=13.3, -1.0, 4.0, fx_navred.fx
smoke.2=13.3, -0.5,  4.0, fx_navgre.fx
smoke.3=13.3, 0.5, 4.0, fx_strobe.fx
smoke.4=13.3, 1.0,  4.0, fx_beacon.fx

I then created a simple XML "gauge" to control each of the four smoke.n .fx files independently:

Code:
<Gauge Name="SmokeTest" Version="1.0">
    <Image Name="SmokeTest.bmp" />
    <Mouse>
      <Area Left="0" Top="0" Height="30" Width="150">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">1 (>K:SMOKE_ON)</Click>
         <Tooltip>Smoke 1 On</Tooltip>
      </Area>
      <Area Left="151" Top="0" Height="30" Width="150">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">1 (>K:SMOKE_OFF)</Click>
         <Tooltip>Smoke 1 Off</Tooltip>
      </Area>
            
      <Area Left="0" Top="32" Height="30" Width="150">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">2 (>K:SMOKE_ON)</Click>
         <Tooltip>Smoke 2 On</Tooltip>
      </Area> 
      <Area Left="151" Top="32" Height="30" Width="150">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">2 (>K:SMOKE_OFF)</Click>
         <Tooltip>Smoke 2 Off</Tooltip>
      </Area>       
      
      <Area Left="0" Top="64" Height="30" Width="150">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">3 (>K:SMOKE_ON)</Click>
         <Tooltip>Smoke 3 On</Tooltip>
      </Area>  
      <Area Left="151" Top="64" Height="30" Width="150">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">3 (>K:SMOKE_OFF)</Click>
         <Tooltip>Smoke 3 Off</Tooltip>
      </Area>       
      
      <Area Left="0" Top="96" Height="30" Width="150">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">4 (>K:SMOKE_ON)</Click>
         <Tooltip>Smoke 4 On</Tooltip>
      </Area>
      <Area Left="151" Top="96" Height="30" Width="150">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">4 (>K:SMOKE_OFF)</Click>
         <Tooltip>Smoke 4 Off</Tooltip>
      </Area>       
       
      <Area Left="0" Top="128" Height="30" Width="300">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">0 (>K:SMOKE_ON)</Click>
         <Tooltip>All Smoke On</Tooltip>
      </Area>  
      <Area Left="0" Top="160" Height="30" Width="300">
         <Cursor Type="Hand"/>
         <Click Kind="LeftSingle">0 (>K:SMOKE_OFF)</Click>
         <Tooltip>All Smoke Off</Tooltip>
      </Area> 
    </Mouse>
</Gauge>

Here is the test gauge's bitmap:
smoketest.jpg


It will be interesting to see what purpose -if any- to which some clever person might decide to use this...
 
Messages
14
Country
sweden
For what it's worth, here's my test script (minus the xml gauge wrapping). I really have 99 smoke instances though in this example I only show four.
Code:
<Update Hidden="No">
		(L:SMOKE1,bool) if{ 1 (&gt;K:SMOKE_ON) } els{ 1 (&gt;K:SMOKE_OFF) } 
		(L:SMOKE2,bool) if{ 2 (&gt;K:SMOKE_ON) } els{ 2 (&gt;K:SMOKE_OFF) } 
		(L:SMOKE3,bool) if{ 3 (&gt;K:SMOKE_ON) } els{ 3 (&gt;K:SMOKE_OFF) } 
		(L:SMOKE4,bool) if{ 4 (&gt;K:SMOKE_ON) } els{ 4 (&gt;K:SMOKE_OFF) } 
		(L:SMOKEALL,bool) if{ 0 (&gt;K:SMOKE_ON) } els{ 0 (&gt;K:SMOKE_OFF) } 
</Update>

	<Element>
		<Position X="0" Y="0"/>
		<Rectangle Height="12" Width="12" LineWidth="0" Color="0" FillColor="%('#00ff00' '#ff0000' (L:SMOKE1,bool) ?)" Bright="1" Luminous="0"/>
	</Element>
	<Element>
		<Position X="15" Y="0"/>
		<Rectangle Height="12" Width="12" LineWidth="0" Color="0" FillColor="%('#00ff00' '#ff0000' (L:SMOKE2,bool) ?)" Bright="1" Luminous="0"/>
	</Element>
	<Element>
		<Position X="30" Y="0"/>
		<Rectangle Height="12" Width="12" LineWidth="0" Color="0" FillColor="%('#00ff00' '#ff0000' (L:SMOKE3,bool) ?)" Bright="1" Luminous="0"/>
	</Element>
	<Element>
		<Position X="45" Y="0"/>
		<Rectangle Height="12" Width="12" LineWidth="0" Color="0" FillColor="%('#00ff00' '#ff0000' (L:SMOKE4,bool) ?)" Bright="1" Luminous="0"/>
	</Element>
	<Element>
		<Position X="60" Y="0"/>
		<Rectangle Height="12" Width="12" LineWidth="0" Color="0" FillColor="%('#ffff00' '#ff00ff' (L:SMOKEALL,bool) ?)" Bright="1" Luminous="0"/>
	</Element>

	<Mouse>
		<Area Left="0" Top="0" Width="12" Height="12">
			<Cursor Type="Hand"/>
			<Click>(L:SMOKE1,bool) ! (&gt;L:SMOKE1,bool)</Click>
		</Area>
		<Area Left="15" Top="0" Width="12" Height="12">
			<Cursor Type="Hand"/>
			<Click>(L:SMOKE2,bool) ! (&gt;L:SMOKE2,bool)</Click>
		</Area>
		<Area Left="30" Top="0" Width="12" Height="12">
			<Cursor Type="Hand"/>
			<Click>(L:SMOKE3,bool) ! (&gt;L:SMOKE3,bool)</Click>
		</Area>
		<Area Left="45" Top="0" Width="12" Height="12">
			<Cursor Type="Hand"/>
			<Click>(L:SMOKE4,bool) ! (&gt;L:SMOKE4,bool)</Click>
		</Area>
		<Area Left="60" Top="0" Width="12" Height="12">
			<Cursor Type="Hand"/>
			<Click>(L:SMOKEALL,bool) ! (&gt;L:SMOKEALL,bool)</Click>
		</Area>
	</Mouse>
...and in Aircraft.cfg I put this:
Code:
smoke.1=        -33.0,  0.00,    0.00,  fx_navred  
smoke.2=        -35.0,  0.00,    0.00,  fx_navred  
smoke.3=        -37.0,  0.00,    0.00,  fx_navred  
smoke.4=        -39.0,  0.00,    0.00,  fx_navred
...and so on up to smoke.98 which was the last that worked.

I am now putting all this into a control gauge for a weapons system, launching missiles in different combinations. Including sounds of course (thanks Bill). :)

Next steps: KEY_SMOKE_SET and bitflags? Readback of which smokes are on/off? This will keep me up all night. :eek:
 

n4gix

Resource contributor
Messages
11,674
Country
unitedstates
Nope, that won't work. That is simply another command event (K:event)...

To "read" the variable you would need something like this:

(L:SMOKE ENABLE,number)

Returned values would likely be:

0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
ect.
 
Messages
36
Country
austria
Excuse me to bring up this little older one... I have read the article over and over again, and tested myself in FS9 but it didn't work. Is this only working in FSX? I'm just asking because I haven't found anywhere a statement that this is for FSX only...

Thanks, Jakob
 

n4gix

Resource contributor
Messages
11,674
Country
unitedstates
I only tested this in FSX. If you've tried it in FS9 and it doesn't work... :(

I'll give it a try myself later today and see if it can be made to work...
 
Messages
36
Country
austria
Thank you very much for your effort, as I have tried it first and nowhere was mentioned FSX only, I wasn't sure if it is either that FS9 doesn't support this, or that I did something wrong...

I'll do a quick test setup today and come back here...

Jakob
 
Messages
36
Country
austria
Ok tested it now again on a simple default C172, didn't work as expected... it just triggers all smoke sections at the same time, regardless of what is parsed to the key event...

Maybe you have more luck but I think this is indeed a FSX only feature... :(

Jakob
 

n4gix

Resource contributor
Messages
11,674
Country
unitedstates
It is more likely a serendipitous accident rather than a "planned feature." In either case though it is a pity, because it would be of more real benefit in FS9 than in FSX, where we have the ability to attach/control an unlimited number of .fx files in the model itself... :cool:
 
Messages
52
Country
scotland
I tinkered around with this to create a number of typical aircraft effects. Once I got the hang of it I found it a reasonably easy process, and I post the example here for anyone who wants to make use of it as a template for adding their own effects to their end-user aircraft.

(EDIT The effects are now included in a working C130 package available for download at voodoo.wikispaces.com)

This particular example invokes, an engine exhaust effect, a countermeasure flares effect, propwash effects for both wet and dusty conditions, and reverser spray and dust effects for wet and dry terrain.

There are three simple steps to the method:

1. A line of code in your Panel.cfg file to call the XML file that controls the effects.
2. A general purpose XML file with all the effects controlled within it. I called mine smoke_effects.xml (and stuck it in a CAB file just for neatness).
3. Some lines in your aircraft.cfg file [SMOKESYSTEM] section to attach the effects to your aircraft.

Here's the working example of those three steps:

1. The line for the panel.cfg file (just placed in the main "Window00" section)
Code:
gauge62=voodoo_c130!smoke_effects, 1,1,1,1

2. The full code for the smoke_effects.xml file
Code:
<Gauge Name="Smoke Effects">
   <Element>
    <Select>
     <Value>
(A:TURB ENG1 N1,percent) 90 &gt;
(A:GROUND VELOCITY,knots) 80 &gt; &amp;&amp;
(A:INDICATED ALTITUDE,feet) 28000 &lt; &amp;&amp;
if{ 1 (&gt;K:SMOKE_ON) } els{ 1 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:TURB ENG2 N1,percent) 90 &gt;
(A:GROUND VELOCITY,knots) 80 &gt; &amp;&amp;
(A:INDICATED ALTITUDE,feet) 28000 &lt; &amp;&amp;
if{ 2 (&gt;K:SMOKE_ON) } els{ 2 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:TURB ENG3 N1,percent) 90 &gt;
(A:GROUND VELOCITY,knots) 80 &gt; &amp;&amp;
(A:INDICATED ALTITUDE,feet) 28000 &lt; &amp;&amp;
if{ 3 (&gt;K:SMOKE_ON) } els{ 3 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:TURB ENG4 N1,percent) 90 &gt;
(A:GROUND VELOCITY,knots) 80 &gt; &amp;&amp;
(A:INDICATED ALTITUDE,feet) 28000 &lt; &amp;&amp;
if{ 4 (&gt;K:SMOKE_ON) } els{ 4 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:LIGHT WING,bool) 1; if{ 5 (&gt;K:SMOKE_ON) } els{ 5 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:LIGHT WING,bool) 1; if{ 6 (&gt;K:SMOKE_ON) } els{ 6 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:LIGHT WING,bool) 1; if{ 7 (&gt;K:SMOKE_ON) } els{ 7 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:LIGHT TAXI,bool) 1; if{ 8 (&gt;K:SMOKE_ON) } els{ 8 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:LIGHT TAXI,bool) 1; if{ 9 (&gt;K:SMOKE_ON) } els{ 9 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:TURB ENG1 N1,percent) 20 &gt; &amp;&amp; 
(A:GENERAL ENG1 THROTTLE LEVER POSITION,percent) 49 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 10 (&gt;K:SMOKE_ON) } els{ 10 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:TURB ENG2 N1,percent) 20 &gt; &amp;&amp; 
(A:GENERAL ENG2 THROTTLE LEVER POSITION,percent) 49 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 11 (&gt;K:SMOKE_ON) } els{ 11 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt; 
(A:TURB ENG3 N1,percent) 20 &gt; &amp;&amp;
(A:GENERAL ENG3 THROTTLE LEVER POSITION,percent) 49 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 12 (&gt;K:SMOKE_ON) } els{ 12 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:TURB ENG4 N1,percent) 20 &gt; &amp;&amp; 
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) 49 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 13 (&gt;K:SMOKE_ON) } els{ 13 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:TURB ENG1 N1,percent) 20 &gt; &amp;&amp; 
(A:GENERAL ENG1 THROTTLE LEVER POSITION,percent) 50 &lt; &amp;&amp;
(A:GENERAL ENG1 THROTTLE LEVER POSITION,percent) 5 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 14 (&gt;K:SMOKE_ON) } els{ 14 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:TURB ENG2 N1,percent) 20 &gt; &amp;&amp; 
(A:GENERAL ENG2 THROTTLE LEVER POSITION,percent) 50 &lt; &amp;&amp;
(A:GENERAL ENG2 THROTTLE LEVER POSITION,percent) 5 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 15 (&gt;K:SMOKE_ON) } els{ 15 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:TURB ENG3 N1,percent) 20 &gt; &amp;&amp; 
(A:GENERAL ENG3 THROTTLE LEVER POSITION,percent) 50 &lt; &amp;&amp;
(A:GENERAL ENG3 THROTTLE LEVER POSITION,percent) 5 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 16 (&gt;K:SMOKE_ON) } els{ 16 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt; 
(A:TURB ENG4 N1,percent) 20 &gt; &amp;&amp;
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) 50 &lt; &amp;&amp;
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) 5 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 17 (&gt;K:SMOKE_ON) } els{ 17 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG1 THROTTLE LEVER POSITION,percent) 49 &gt;
(A:TURB ENG1 N1,percent) 20 &gt; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 18 (&gt;K:SMOKE_ON) } els{ 18 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG2 THROTTLE LEVER POSITION,percent) 49 &gt;
(A:TURB ENG2 N1,percent) 20 &gt; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 19 (&gt;K:SMOKE_ON) } els{ 19 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG3 THROTTLE LEVER POSITION,percent) 49 &gt;
(A:TURB ENG3 N1,percent) 20 &gt; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 20 (&gt;K:SMOKE_ON) } els{ 20 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) 49 &gt;
(A:TURB ENG4 N1,percent) 20 &gt; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 21 (&gt;K:SMOKE_ON) } els{ 21 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG1 THROTTLE LEVER POSITION,percent) 50 &lt;
(A:GENERAL ENG1 THROTTLE LEVER POSITION,percent) 5 &gt; &amp;&amp;
(A:TURB ENG1 N1,percent) 20 &gt; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 22 (&gt;K:SMOKE_ON) } els{ 22 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG2 THROTTLE LEVER POSITION,percent) 50 &lt;
(A:GENERAL ENG2 THROTTLE LEVER POSITION,percent) 5 &gt; &amp;&amp;
(A:TURB ENG2 N1,percent) 20 &gt; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 23 (&gt;K:SMOKE_ON) } els{ 23 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG3 THROTTLE LEVER POSITION,percent) 50 &lt;
(A:GENERAL ENG3 THROTTLE LEVER POSITION,percent) 5 &gt; &amp;&amp;
(A:TURB ENG3 N1,percent) 20 &gt; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 24 (&gt;K:SMOKE_ON) } els{ 24 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) 50 &lt;
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) 5 &gt; &amp;&amp;
(A:TURB ENG4 N1,percent) 20 &gt; &amp;&amp;
(A:GROUND VELOCITY,knots) 50 &lt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 25 (&gt;K:SMOKE_ON) } els{ 25 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG1 THROTTLE LEVER POSITION,percent) -10 &lt;
(A:TURB ENG1 N1,percent) 20 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 26 (&gt;K:SMOKE_ON) } els{ 26 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG2 THROTTLE LEVER POSITION,percent) -10 &lt;
(A:TURB ENG2 N1,percent) 20 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 27 (&gt;K:SMOKE_ON) } els{ 27 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG3 THROTTLE LEVER POSITION,percent) -10 &lt;
(A:TURB ENG3 N1,percent) 20 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 28 (&gt;K:SMOKE_ON) } els{ 28 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) -10 &lt;
(A:TURB ENG4 N1,percent) 20 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 2 &gt; &amp;&amp;
if{ 29 (&gt;K:SMOKE_ON) } els{ 29 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) -10 &lt; &amp;&amp;
(A:TURB ENG4 N1,percent) 20 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 30 (&gt;K:SMOKE_ON) } els{ 30 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) -10 &lt; &amp;&amp;
(A:TURB ENG4 N1,percent) 20 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 31 (&gt;K:SMOKE_ON) } els{ 31 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) -10 &lt; &amp;&amp;
(A:TURB ENG4 N1,percent) 20 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 32 (&gt;K:SMOKE_ON) } els{ 32 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
<Element>
    <Select>
     <Value>
(A:SURFACE TYPE,enum) 4 &gt;
(A:GENERAL ENG4 THROTTLE LEVER POSITION,percent) -10 &lt; &amp;&amp;
(A:TURB ENG4 N1,percent) 20 &gt; &amp;&amp;
(A:SIM ON GROUND,bool) 1; &amp;&amp;
(A:AMBIENT PRECIP STATE,mask) 4 &lt; &amp;&amp;
if{ 33 (&gt;K:SMOKE_ON) } els{ 33 (&gt;K:SMOKE_OFF) }
     </Value>
    </Select>
   </Element>
</Gauge>

3. And the entries for the aircraft.cfg file
Code:
[smokesystem]
smoke.0= 0,-32, -2, voo_c130_smoke
smoke.1= 0,-16, -2, voo_c130_smoke
smoke.2= 0, 16, -2, voo_c130_smoke
smoke.3= 0, 32, -2, voo_c130_smoke

smoke.4 = 0.00, 0.00, 0.00, voo_intrepid_flares_c130
smoke.5 = 0.00, -120.0, 80.0, voo_intrepid_vortexl_c130
smoke.6 = 0.00, 120.0, 80.0, voo_intrepid_vortexr_c130

smoke.7 =  -17, -7.4, -5.5, voo_c130_jato_smoke 
smoke.8 =  -17,  7.4, -5.5, voo_c130_jato_smoke 

smoke.10 = -8,-32, 0, voo_c130_drypropwashhi
smoke.11 = -9,-16, 0, voo_c130_drypropwashhi
smoke.12 = -9, 16, 0, voo_c130_drypropwashhi
smoke.13 = -8, 32, 0, voo_c130_drypropwashhi

smoke.14 = -8,-32, 0, voo_c130_drypropwashlo
smoke.15 = -9,-16, 0, voo_c130_drypropwashlo
smoke.16 = -9, 16, 0, voo_c130_drypropwashlo
smoke.17 = -8, 32, 0, voo_c130_drypropwashlo

smoke.18 = -8,-32, 0, voo_c130_wetpropwashhi
smoke.19 = -9,-16, 0, voo_c130_wetpropwashhi
smoke.20 = -9, 16, 0, voo_c130_wetpropwashhi
smoke.21 = -8, 32, 0, voo_c130_wetpropwashhi

smoke.22 = -8,-32, 0, voo_c130_wetpropwashlo
smoke.23 = -9,-16, 0, voo_c130_wetpropwashlo
smoke.24 = -9, 16, 0, voo_c130_wetpropwashlo
smoke.25 = -8, 32, 0, voo_c130_wetpropwashlo

smoke.26 = 10,-32, 0, voo_revspray
smoke.27 = 9,-16, 0, voo_revspray
smoke.28 = 9, 16, 0, voo_revspray
smoke.29 = 10, 32, 0, voo_revspray

smoke.30 = 10,-32, 0, voo_revdust
smoke.31 = 9,-16, 0, voo_revdust
smoke.32 = 9, 16, 0, voo_revdust
smoke.33 = 10, 32, 0, voo_revdust


You'll easily see how the numbered smoke effects in the XML file relate to the effects attached in the SMOKESYSTEM section of the aircraft.cfg file.

ONE THING TO NOTE: The aircraft.cfg SMOKESYSTEM numbers start off "out of sync" with the XML smoke numbers. That is, smoke.0 in the aircraft.cfg file is related to if{ 1 (&gt;K:SMOKE_ON) } in the XML, BUT smoke.9 doesn't seem to relate properly, causing the numbers to come into sync! Study the example and you'll see what I mean.

Hope some may find this example of use as a starter.
- Voodoo
 
Last edited:
Messages
52
Country
scotland
I'm sure FS9 users would be interested and would appreciate you posting, Eric.
 

n4gix

Resource contributor
Messages
11,674
Country
unitedstates
ONE THING TO NOTE: The aircraft.cfg SMOKESYSTEM numbers start off "out of sync" with the XML smoke numbers. That is, smoke.0 in the aircraft.cfg file is related to if{ 1 (&gt;K:SMOKE_ON) } in the XML, BUT smoke.9 doesn't seem to relate properly, causing the numbers to come into sync! Study the example and you'll see what I mean.

If you leave out the .0 entry entirely, then you can use .1 to .99 without problems. This will allow everything to remain in sync... :D
 
Messages
531
Country
france
He might possibly sell you the infomation, but don't expect anything from Eric for free... :(
Bill,
I see the use of the word "mercenary" was not a joke. I'm not really happy about this, but I guess you don't care...

Consequently, I will correct your sentence. Don't say "don't expect anything from Eric for free", but say instead "don't expect anything from Eric". I'm really not happy about the reaction of people when I propose to bring something new to the community. That's the end...

Eric
 
Messages
56
Country
poland
Is there any way to edit/change or add smoke to plane without orginal file.I mean I wish add red smoke to G key(or other,Planes dont have retracted gears).So basically it should be "i" key for white smoke and "g" for red.Maybe is other method?I cant edit mdl file because orginal do not exist.
Thank you.
 
Messages
14
Country
unitedkingdom
Hello Guys, good evenings.

I'm very interesting in this discussion as I'm trying to control the effects for my C-17 Globemater III.
I'm getting confuse, there's 2/3 versions here and I like the idea of the bmp image buttons by Bill Leaming that I can select the effects to show like paratroops, Airdrop, flares deploy, etc., but it doesn't work, there is an error by me in the xml file, and I don't know how to fix it, PLEASE, could you explain, step by step, like a child,(no offence lol) how to create the gauge? I download the ms.cab.maker (free) to create the cab file to use it in the fs panel studio.


smoketest.jpg


Please, awaiting positive response asap, many thanks Sir.
 
Messages
14
Country
sweden
Hello yourself, and a good evening/night/morning to you too.

The original post was made by me 6 years ago and I am not really sure what you are asking for at this point, although I will of course try to help. I noticed that you also sent me a PM with your mail address so I will contact you directly. If anyone else reading this feels that this should be discussed in the forum, please let me know and I will start a thread.

Cheers /Tom
 
Top