Howto:Adding gun effects: Difference between revisions

Jump to navigation Jump to search
xml highlighting etc
(xml highlighting etc)
 
(38 intermediate revisions by 11 users not shown)
Line 1: Line 1:
[[Image:Dogfight-Connie Target.jpg|thumb|250px|Dogfight Effects!!!]]
[[File:Thud_gunnery.jpg|thumb|270px|The [[Republic F-105 Thunderchief|F-105]] in action.]]
With Flightgear's Increasing New Capabilities, We now have Dogfight Effects Such as Bullets and Smoke on Hit!
With [[Flightgear]]'s increasing capabilities '''gun effects''' such as tracer bullets and smoke on impact are now supported. You will need [[FlightGear 1.9.0|FlightGear version 1.9]] or later, in order to use the effects.


== Setup ==
There is no default key/button binding for a trigger in FlightGear, so you will have to make your own. An obvious choice of button would be the trigger on a [[joystick]], but you can also make a keyboard binding by adding something like this to your <tt>[[$FG ROOT]]/keyboard.xml</tt> file:
<syntaxhighlight lang="xml">
<key n="101">
  <name>e</name>
  <desc>Gun Trigger</desc>
  <binding>
    <command>property-assign</command>
    <property>controls/armament/trigger</property>
    <value>true</value>
  </binding>
  <mod-up>
  <binding>
    <command>property-assign</command>
    <property>controls/armament/trigger</property>
    <value>false</value>
  </binding>
  </mod-up>
</key>
</syntaxhighlight>
In the code, we have used the {{key press|e}} key as the trigger. You can change it to a choice of your own but {{key press|e}} is the standard key binding used by most aircraft in FlightGear.
Joystick bindings are a bit more complex. Sample code is below, but you may want to read the article on [[Input device|joysticks]].
See more complex/complete sample code below.
== Adding gun and bullet effects to your aircraft ==
Once you have a key or button binding defined to active the trigger, you'll then need to add the needed [[AI Systems#Submodels|submodel configuration file]] to your aircraft's root directory, and ensure the file is activated in your *-set.xml file. The choice of tracer, smoke and impact visual models is up to you. You may also add a sound effect to your sound configuration file that activates with the trigger.
The standard trigger location for FlightGear is
/controls/armament/trigger
To add triggers for more than one weapon:
/controls/armament/trigger
/controls/armament/trigger1
/controls/armament/trigger2
etc.
In a submodel.xml file, this typically looks something like this:
<syntaxhighlight lang="xml">
    <submodel>
    <name>cowl-guns-bullets</name>
    <model>Models/Geometry/null.ac</model>
    <trigger>/controls/armament/trigger</trigger>
    . . .
</syntaxhighlight>
== Aircraft already equipped with guns ==
Some aircraft have the needed submodel files included.
All aircraft equipped with guns in [http://home.comcast.net/~davidculp2/hangar/hangar.html Dave's hangar] are capable bullet effects. Like:
* Embraer AT-29, A-29B Super Tucano
* [[McDonnell F4 Phantom II|McDonnell F-4D/E/F, FGR.2, Phantom II]]
* [[Republic F-105 Thunderchief|Republic F-105D Thunderchief]]
* North American F-100 Super Sabre
* North American FJ-3 Fury
* LTV A-7E Corsair II
* Dassault Mirage IIIC, F-103E
* MiG-21MF (Fortele Aeriene Române)
Other aircraft (not from Dave's Hangar) include
* [[General Dynamics F-16|F-16 Fighting Falcon]]
* [[Sopwith Camel]]
* Spad VII
* A6M Zero - Armed version available here : [http://www.AAliveries.yolasite.com]
* F-15C - Armed version available above----⤴
* JSBSim P-51D from main repository.
== Current limitations ==
* Submodel information is not sent with the [[Howto: Multiplayer|multiplayer]] protocol, so multiplayer users will not be effected by your bullets. The tracers, smoke and impact effects will only be seen by you.
* The impact cylinder for models is fairly large, so you will see impacts occur outside of the target model's boundaries.
== More complex/complete sample keyboard code ==
Different FlightGear aircraft use different locations for the main armament trigger. Two locations are commonly used:
  controls/armament/trigger  (preferred)
  ai/submodels/trigger        (used by some)
In addition, a number of aircraft have more than one weapon--typically a light machine gun and a heavy cannon.
Typically this trigger is used for the second armament:
  controls/armament/trigger1
The following code, which you can place in your keyboard.xml file or (if you are an aircraft designer) in your aircraft's -set.xml file in the <keyboard> section, triggers both locations, both types of armament, and works with almost all FG aircraft.


== Setup ==
It uses {{key press|e}} to trigger the main armament and {{key press|Shift|e}} to trigger the secondary:
You First Need to Bind a key for the Trigger. To do this goto Your ''Flightgear Data'' Directory and Edit ''Keyboard.xml''. Add the Following :  


  <key n="119">
<syntaxhighlight lang="xml">
         <name>w</name>
      <key n="101">
         <name>e</name>
         <desc>Gun Trigger</desc>  
         <desc>Gun Trigger</desc>  
         <binding>
         <binding>
                <command>property-assign</command>
          <command>property-assign</command>
                      <property>/controls/armament/trigger</property>
          <property>ai/submodels/trigger</property>
                              <value>true</value>
          <value>true</value>
        </binding>
        <binding>
          <command>property-assign</command>
          <property>controls/armament/trigger</property>
          <value>true</value>
         </binding>
         </binding>
         <mod-up>
         <mod-up>
          <binding>
          <command>property-assign</command>
          <property>ai/submodels/trigger</property>
          <value>false</value>
          </binding>
          <binding>
          <command>property-assign</command>
          <property>controls/armament/trigger</property>
          <value>false</value>
        </binding>
        </mod-up>
      </key>
      <key n="69">
        <name>E</name>
        <desc>Cannons Trigger</desc>
         <binding>
         <binding>
                <command>property-assign</command>
          <command>property-assign</command>
                      <property>/controls/armament/trigger</property>
          <property>controls/armament/trigger1</property>
                              <value>false</value>
          <value>true</value>
        </binding>
        <mod-up>
          <binding>
          <command>property-assign</command>
          <property>controls/armament/trigger1</property>
          <value>false</value>
         </binding>  
         </binding>  
         </mod-up>
         </mod-up>
  </key>
      </key>
</syntaxhighlight>
 
== Sample joystick code ==


In the Code, we have used '''w''' as the trigger. Change it to a Choice of your own!
This sample code that can be modified/inserted into a joystick XML file uses one button to trigger the main armament and another button to trigger the secondary armament:


== Compatible Aircraft ==
<syntaxhighlight lang="xml">
All Aircraft in [http://home.comcast.net/~davidculp2/hangar/hangar.html Dave's hangar] having Guns have this Feature.
  <button n="0">
Example : Embraer AT-29 Super Tucano, McDonnell F-4N Phantom II, Republic F-105D Thunderchief , McDonnell FGR.2 Phantom II etc...
    <name>trigger</name>
    <desc>Trigger</desc>
    <binding>
      <command>nasal</command>
      <script>
        setprop("/controls/armament/trigger", 1); #this seems the most common
        setprop("ai/submodels/trigger", 1);      #many planes use this instead
      </script>
    </binding>
    <mod-up>
      <binding>
        <command>nasal</command>
      <script>
        setprop("/controls/armament/trigger", 0); #this seems the most common
        setprop("ai/submodels/trigger", 0);      #many planes use this instead
      </script>
      </binding>
    </mod-up>
  </button>
  <button n="1">
    <name>trigger1</name>
    <desc>Trigger1</desc>
    <binding>
      <command>nasal</command>
      <script>
        setprop("/controls/armament/trigger1", 1);  #this seems the most common
      </script>
    </binding>
    <mod-up>
      <binding>
        <command>nasal</command>
      <script>
        setprop("/controls/armament/trigger1", 0);  #this seems the most common
      </script>
      </binding>
    </mod-up>
  </button>
</syntaxhighlight>


== Some Screenshots(Credits-peter!) ==
[[Category:Aircraft enhancement]]
[[Image:Dogfight-Bronco.jpg]]
[[Category:Howto]]
[[Image:Dogfight.jpg]]

Navigation menu