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

Independent multiple smoke fx

Discussion in 'Special Effects General' started by knivpekka, 22 Mar 2009.

  1. knivpekka

    knivpekka

    Joined:
    4 Jan 2009
    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
     
  2. Voodoo

    Voodoo

    Joined:
    8 Mar 2008
    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: 30 Mar 2009
  3. knivpekka

    knivpekka

    Joined:
    4 Jan 2009
    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. ;)
     
  4. n4gix

    n4gix Resource contributor

    Joined:
    26 Sep 2006
    Messages:
    10,603
    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:
    [​IMG]

    It will be interesting to see what purpose -if any- to which some clever person might decide to use this...
     
    antaris likes this.
  5. knivpekka

    knivpekka

    Joined:
    4 Jan 2009
    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:
     
    antaris likes this.
  6. n4gix

    n4gix Resource contributor

    Joined:
    26 Sep 2006
    Messages:
    10,603
    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.
     
  7. kleinjakob

    kleinjakob

    Joined:
    25 Sep 2008
    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
     
  8. n4gix

    n4gix Resource contributor

    Joined:
    26 Sep 2006
    Messages:
    10,603
    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...
     
  9. kleinjakob

    kleinjakob

    Joined:
    25 Sep 2008
    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
     
  10. kleinjakob

    kleinjakob

    Joined:
    25 Sep 2008
    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
     
  11. n4gix

    n4gix Resource contributor

    Joined:
    26 Sep 2006
    Messages:
    10,603
    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:
     
  12. Voodoo

    Voodoo

    Joined:
    8 Mar 2008
    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: 20 Jan 2010
  13. eric_marciano

    eric_marciano

    Joined:
    16 Jan 2007
    Messages:
    138
    Country:
    france
    I found the way to make it work in fs9. It is tricky, but it works.
    If someone is interested...

    Eric
     
  14. Voodoo

    Voodoo

    Joined:
    8 Mar 2008
    Messages:
    52
    Country:
    scotland
    I'm sure FS9 users would be interested and would appreciate you posting, Eric.
     
  15. n4gix

    n4gix Resource contributor

    Joined:
    26 Sep 2006
    Messages:
    10,603
    Country:
    unitedstates
    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. eric_marciano

    eric_marciano

    Joined:
    16 Jan 2007
    Messages:
    138
    Country:
    france
    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. mirage9

    mirage9

    Joined:
    30 Mar 2009
    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.
     
  18. mirage9

    mirage9

    Joined:
    30 Mar 2009
    Messages:
    56
    Country:
    poland
  19. k5m5desousa

    k5m5desousa

    Joined:
    19 Mar 2010
    Messages:
    12
    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.


    [​IMG]

    Please, awaiting positive response asap, many thanks Sir.
     
  20. knivpekka

    knivpekka

    Joined:
    4 Jan 2009
    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
     

Share This Page