Changes

Jump to: navigation, search

Howto:Adding gun effects

3,774 bytes added, 06:01, 19 December 2013
xml highlighting etc
[[ImageFile:Thud_gunnery.jpg|thumb|270px|The [[Republic F-105 Thunderchief|F-105]] in action.]]With [[Flightgear]]'s increasing capabilities, '''bullet gun effects''' such as tracers 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_ROOTFG ROOT]]/keyboard.xml</tt> file:
<syntaxhighlight lang="xml">
<key n="101">
<name>e</name>
</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, but are explained in the wiki article on [[Joystick]]s.
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 guns gun and bullet effects to your Airplane aircraft ==Once you have a key or button binding defined to active the trigger, you'll then need to add the needed [[AI_SystemsAI Systems#Submodels]] |submodel configuration file ]] to your airplaneaircraft'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
In a submodel.xml file, this typically looks something like this:
<syntaxhighlight lang="xml">
<submodel>
<name>cowl-guns-bullets</name>
<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:
* MiG-21MF (Fortele Aeriene Române)
Other aircrafts aircraft (not from Dave's Hangar) include
* [[General Dynamics F-16|F-16 Fighting Falcon]]
* [[Sopwith Camel]]
* 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.
 
It uses {{key press|e}} to trigger the main armament and {{key press|Shift|e}} to trigger the secondary:
 
<syntaxhighlight lang="xml">
<key n="101">
<name>e</name>
<desc>Gun Trigger</desc>
<binding>
<command>property-assign</command>
<property>ai/submodels/trigger</property>
<value>true</value>
</binding>
<binding>
<command>property-assign</command>
<property>controls/armament/trigger</property>
<value>true</value>
</binding>
<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>
<command>property-assign</command>
<property>controls/armament/trigger1</property>
<value>true</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>controls/armament/trigger1</property>
<value>false</value>
</binding>
</mod-up>
</key>
</syntaxhighlight>
 
== Sample joystick code ==
 
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:
 
<syntaxhighlight lang="xml">
<button n="0">
<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>
 
[[Category:Aircraft enhancement]]
[[Category:Howto]]

Navigation menu