<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.splashdamage.com/index.php?action=history&amp;feed=atom&amp;title=Script%3AFiles%3Ascript%2Fvehicles%2Fcockpits%2Fgatling.script</id>
	<title>Script:Files:script/vehicles/cockpits/gatling.script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.splashdamage.com/index.php?action=history&amp;feed=atom&amp;title=Script%3AFiles%3Ascript%2Fvehicles%2Fcockpits%2Fgatling.script"/>
	<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/vehicles/cockpits/gatling.script&amp;action=history"/>
	<updated>2026-06-17T11:35:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Script:Files:script/vehicles/cockpits/gatling.script&amp;diff=1865&amp;oldid=prev</id>
		<title>Wizz at 10:06, 5 November 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/vehicles/cockpits/gatling.script&amp;diff=1865&amp;oldid=prev"/>
		<updated>2007-11-05T10:06:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;object&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_gatling_cockpit|vehicle_gatling_cockpit]] : [[ScriptClass:vehicle_basic_cockpit|vehicle_basic_cockpit]] {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;                preinit();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;                destroy();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;                OnEntered();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;                AnimThread();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;                BarrelThread();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;                IsAttacking();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;                surfaceId;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;                muzzleJoint;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;                nextMuzzleEffectTime;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;                barrelJoint;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt;                barrelAngles;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;                barrelThreadActive;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;                currentState;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;                animThreadIndex;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_gatling_cockpit|vehicle_gatling_cockpit]]::preinit() {&lt;br /&gt;
     surfaceId = -1;&lt;br /&gt;
 &lt;br /&gt;
     muzzleJoint = [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;joint_muzzle&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     animThreadIndex = &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; AnimThread();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; BarrelThread();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_gatling_cockpit|vehicle_gatling_cockpit]]::OnEntered() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt; surfaceName = [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;surface_name&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     surfaceId = myVehicle.[[ScriptEvent:getSurfaceId|getSurfaceId]]( surfaceName );&lt;br /&gt;
     myVehicle.[[ScriptEvent:hideSurface|hideSurface]]( surfaceId );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt; barrelJointName = [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;joint_barrel&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( barrelJointName == &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;&amp;quot;&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         sys.[[ScriptEvent:error|error]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;Missing barrel joint name&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     barrelJoint = [[ScriptEvent:getJointHandle|getJointHandle]]( barrelJointName );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_gatling_cockpit|vehicle_gatling_cockpit]]::destroy() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( myVehicle != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
         myVehicle.[[ScriptEvent:showSurface|showSurface]]( surfaceId );&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( animThreadIndex != -1 ) {&lt;br /&gt;
         sys.[[ScriptEvent:terminate|terminate]]( animThreadIndex );&lt;br /&gt;
         animThreadIndex = -1;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#define&amp;lt;/span&amp;gt; VEHICLE_GATLING_STATE_IDLE 0&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#define&amp;lt;/span&amp;gt; VEHICLE_GATLING_STATE_ATTACK_START 1&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#define&amp;lt;/span&amp;gt; VEHICLE_GATLING_STATE_ATTACK 2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;#define&amp;lt;/span&amp;gt; VEHICLE_GATLING_STATE_ATTACK_END 3&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_gatling_cockpit|vehicle_gatling_cockpit]]::AnimThread() {&lt;br /&gt;
     sys.[[ScriptEvent:threadName|threadName]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;vehicle_gatling_cockpit::AnimThread&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptClass:player|player]] myPlayer = myVehicle.[[ScriptEvent:getPositionPlayer|getPositionPlayer]]( passengerId );&lt;br /&gt;
 &lt;br /&gt;
     sys.[[ScriptEvent:wait|wait]]( [[ScriptEvent:playAnim|playAnim]]( ANIMCHANNEL_ALL, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;raise&amp;quot;&amp;lt;/span&amp;gt; ) );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; idleTime;&lt;br /&gt;
 &lt;br /&gt;
     currentState = VEHICLE_GATLING_STATE_IDLE;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; newState;&lt;br /&gt;
     [[ScriptEvent:playCycle|playCycle]]( ANIMCHANNEL_ALL, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;idle&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt; ( true ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( myPlayer.proxyFiringWeaponStart ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( myPlayer.proxyFiringWeapon ) {&lt;br /&gt;
                 newState = VEHICLE_GATLING_STATE_ATTACK;&lt;br /&gt;
             } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
                 newState = VEHICLE_GATLING_STATE_ATTACK_START;&lt;br /&gt;
             }&lt;br /&gt;
         } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentState == VEHICLE_GATLING_STATE_ATTACK ) {&lt;br /&gt;
                 newState = VEHICLE_GATLING_STATE_ATTACK_END;&lt;br /&gt;
             } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( sys.[[ScriptEvent:getTime|getTime]]() &amp;gt; idleTime ) {&lt;br /&gt;
                     newState = VEHICLE_GATLING_STATE_IDLE;&lt;br /&gt;
                 }&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentState != newState ) {&lt;br /&gt;
             currentState = newState;&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentState == VEHICLE_GATLING_STATE_IDLE ) {&lt;br /&gt;
                 [[ScriptEvent:playCycle|playCycle]]( ANIMCHANNEL_ALL, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;idle&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
             } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentState == VEHICLE_GATLING_STATE_ATTACK_START ) {&lt;br /&gt;
                 [[ScriptEvent:playCycle|playCycle]]( ANIMCHANNEL_ALL, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fire_start&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !barrelThreadActive ) {&lt;br /&gt;
                     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; BarrelThread();&lt;br /&gt;
                 }&lt;br /&gt;
             } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentState == VEHICLE_GATLING_STATE_ATTACK ) {&lt;br /&gt;
                 [[ScriptEvent:playCycle|playCycle]]( ANIMCHANNEL_ALL, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fire&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !barrelThreadActive ) {&lt;br /&gt;
                     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; BarrelThread();&lt;br /&gt;
                 }&lt;br /&gt;
             } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentState == VEHICLE_GATLING_STATE_ATTACK_END ) {&lt;br /&gt;
                 idleTime = sys.[[ScriptEvent:getTime|getTime]]() + [[ScriptEvent:playAnim|playAnim]]( ANIMCHANNEL_ALL, &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fire_end&amp;quot;&amp;lt;/span&amp;gt; );&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( currentState == VEHICLE_GATLING_STATE_ATTACK ) {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( myPlayer.proxyFiringWeapon ) {&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( sys.[[ScriptEvent:getTime|getTime]]() &amp;gt; nextMuzzleEffectTime ) {&lt;br /&gt;
                     [[ScriptEvent:playEffect|playEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_muzzle&amp;quot;&amp;lt;/span&amp;gt;, muzzleJoint, 0 );&lt;br /&gt;
                     nextMuzzleEffectTime = sys.[[ScriptEvent:getTime|getTime]]() + 0.1f;&lt;br /&gt;
                 }&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( myVehicle.[[ScriptEvent:isSurfaceHidden|isSurfaceHidden]]( surfaceId ) ) {&lt;br /&gt;
                     [[ScriptEvent:playEffect|playEffect]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;fx_gatling_tracer&amp;quot;&amp;lt;/span&amp;gt;, muzzleJoint, 0 );&lt;br /&gt;
                 }&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_gatling_cockpit|vehicle_gatling_cockpit]]::IsAttacking() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; currentState == VEHICLE_GATLING_STATE_ATTACK || currentState == VEHICLE_GATLING_STATE_ATTACK_START;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:vehicle_gatling_cockpit|vehicle_gatling_cockpit]]::BarrelThread() {&lt;br /&gt;
     barrelThreadActive = true;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; speed;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt; ( true ) {&lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&gt;
         [[ScriptClass:player|player]] myPlayer = myVehicle.[[ScriptEvent:getPositionPlayer|getPositionPlayer]]( passengerId );&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( myPlayer != &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;$null_entity&amp;lt;/span&amp;gt; ) {&lt;br /&gt;
             speed = myPlayer.gatlingSpeed;&lt;br /&gt;
         } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
             speed = 0;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         barrelAngles_z = ( barrelAngles_z + speed*sys.[[ScriptEvent:getFrameTime|getFrameTime]]() ) % 360;&lt;br /&gt;
         [[ScriptEvent:setJointAngle|setJointAngle]]( barrelJoint, JOINTMOD_LOCAL, barrelAngles );&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( speed = 0.0f ) {&lt;br /&gt;
             break;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     barrelThreadActive = false;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Wizz</name></author>
		
	</entry>
</feed>