• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

Independent multiple smoke fx

#1
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
 
#2
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:
#3
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
#4
...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:


It will be interesting to see what purpose -if any- to which some clever person might decide to use this...
 
#5
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
#6
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.
 
#7
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
#8
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...
 
#9
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
 
#10
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
#11
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:
 
#12
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:

n4gix

Resource contributor
#15
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
 
#16
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
 
#17
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.
 
#19
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.




Please, awaiting positive response asap, many thanks Sir.
 
#20
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