Plane
Tutorial
Summary of States
Parked � A plane that has its landing gear down.�
�����������������������
Strafing � A plane can be set to target an object on the ground.� The plane will continue to attack that object until it is destroyed or told otherwise.�
Dog fighting � Two planes are set to target each other and begin to dog fight.
Spline Paths � Makes a plane fly along a spline path.� There are two options on using a spline
path:� The plane uses the old method and
turns with the angles you set in radiant or use autopilot and the plane will
figure out how to fly along the path itself.
New Features
��������� Variables
����������������������� $targetname maxyawrate 30���� � Adjusts the speed at which the ��������������������������������������������� ����������������������������������� plane turns.� The higher the number ����������������������������������������������������������������������������� the faster the plane will turn.� The �������������������������������������������������������������������������� range you can give it is (0 � 360).�
����������������������� $targetname maxpitchrate 60��� - Adjusts the rate at which the plane ���������������������������������������� ����������������������������������� will climb and dive.� The lower the ������������������������������������������������������������������� ����������� number the longer it takes the plane ����������������������������������������������������������������������������� to get its nose up or down.� The ����������������������������������������������������������������������������� range of values is (0 -360).
����������������������� $targetname maxrollrate 100 � Adjust the speed the plane will ������������������������������������������������� ����������������������� roll at.� The higher the number the �������������������������������������������������������������������������������� faster the plane will move from the ��������������������������������������������������������������������������������� horizontal position to the angle � ����������������������������������������������������������������������� desired.� The range of values is (0 � ���������������������������������������� ����������������������������������� 360).
����������������������� $targetname maxroll 80 ����������� - Sets the maximum angle that the �������������������������������������������� ����������������������������������� plane will roll to.� If the number is �������������������������������������������������������������������������������� 90, then the plane will be able to roll ���������������������������������������������������������������������������������� 90 degrees.� The range of values is (0 ����������������������������������������������������������������� � 90).
Plane Models
�����������
����������� Grounded Planes
Models:
����������������������� P38_Static_plane.tik
����������������������� hellcat.tik
����������������������� Animations: �(hellcat.tik only)
����������������������� idle -��� Prop doesn�t move.
����������������������� start � The prop runs an animation that looks like the plane is starting it�s engine.
����������������������� start_idle � The prop spins at full speed.
����������� Flying Planes
����������������������� Models:
����������������������� P38_plane.tik
����������������������� hellcat_fly.tik
����������������������� zero.tik
����������������������� Animations:
����������������������� idle � Prop spins
����������������������� (hellcat_fly.tik and zero.tik only)
����������������������� start_smoke � Starts the plane emitting a smoke trail.
����������������������� stop_smoke � Stops the plane from emitting a smoke trail.
����������� Destroyed Planes
�����������
����������������������� Models:
����������������������� hellcat_explode.tik
����������������������� zero_d.tik
����������������������� Animations:
����������������������� idle � no animation.
����������������������� (hellcat_explode.tik only)
����������������������� explode � plane runs it�s blowing up animation.
NOTE: The zero_d.tik must be used as a bonecaster.� When destroyed the pieces use the Havok system.
Hook�n It up
Starting up a grounded Hellcat
����������� This is the script command for getting a hellcat to start up its engine.
����������������������� $hellcat anim start
������������������������������� $hellcat
waittill animdone
������������������������������� $hellcat anim
start_idle
�����������
Setting up a plane to strafe an object/NPC/player
����������� In radiant create a vehicle_plane, give it a model and set the following values:
����������������������� Key:���� $targetname
����������������������� Value:�� plane
�����������
Set up the planes target.� If it is an object make sure it has a $targetname.� Add the following lines to your script for the plane to attack an object or the player:
$plane speed 3700������������������������������� //
Sets the planes speed
$plane patrolalt 6000��������������������������� //
Sets the Altitude the plane will fly to after a strafe
$plane minimumAlt 1000���� //
Sets the Altitude the plane will pull up at in a dive
$plane strafeattack 1��������������������������� // if set to 0 the
plane hits its target with every shot if set to 1 the plane will strafe its
target
$plane attack $object�������������������������� //
or $player.� Plane will target the object or player
Setting up a plane to target an NPC and the NPC dodges the plane strafing.� Create an NPC with a $targetname.�
����������������������� Key:���� $targetname
����������������������� Value:�� dude
Add the following to your
script.� The first part sets up the plane
and the second sets up the NPC.
$plane speed 3700�������������������������������
$plane patrolalt 6000���������������������������
$plane minimumAlt 1000����
$plane strafeattack 1���������������������������
$plane attack $dude
$dude target_plane $plane
$dude morale_off
$dude nodamage� �����������
The Dogfight
When setting up two planes to dogfight, one plane is the chaser, and the other is the evader.� This is how to set up your map file:
Create an allied plane and give it a $targetname:
����������������������� Key:���� $targetname
����������������������� Value:�� alliedplane
����������� Create an
axis plane and give it a $targetname:
����������������������� Key:���� $targetname
����������������������� Value:�� axisplane
����������� Create a script_origin and give it a targetname:
����������������������� Key:���� $targetname
����������������������� Value:�� plane_level_origin
�����������
The origin is used by the planes as a home.� They try and stay at the altitude of the origin and with in the leash of the origin that you give them.�
Now select the plane you want to be the chaser then select the plane that you want to be the evader and press ctrl + k.
Add the following lines to your script and watch Maverick and Goose take out some bogies.
//----------------------------------------------------------------------------
SetupPlanes:
//
//������������ Setup
planes to go after each other..
//----------------------------------------------------------------------------
���������������
������������������������������� //***
Starts DogFighting Planes
���������������
����������������������������������������������� $axisplane
waitthread axisInit
����������������������������������������������� $alliedplane
waitthread allyInit
end
//----------------------------------------------------------------------------
axisInit:
//
//������������ Apply
the needed values to each plane
//----------------------------------------------------------------------------
���������������
self scale 1���������������������������� //sets the scale, the zero is smaller
than the //hellcat so setting the hellcat to 0.75 and the //zero to 1.0 makes
them about the same size
��������������� ������������������������������� local.speed
= 4000��������������� // set a variable
for speed
������������������������������� self
home $plane_level_origin���������� //sets
the plane to its origin
�������������������������������
// Some good values for the Zero
��������������� ��������������� self maxyawrate 30������������������������������ //sets the rate
of turn (0 � 360)
��������������� ��������������� self maxpitchrate 60���������������������������� //sets the rate of
climb (0 � 360)
��������������� ��������������� self maxrollrate 100������������������������������ //sets the rate
of roll (0 � 360)
��������������� ��������������� self maxroll 80������ //sets the max angle the plane will role
to
���������������
��������������� ��������������� self speed local.speed ������� //sets the planes speed to the above
variable
��������������� ��������������� self waitthread planeInit
��������������� end
//----------------------------------------------------------------------------
allyInit:
//
//������������ Apply
the needed values to each plane
//----------------------------------------------------------------------------
������������������������������� self
scale 0.75
������������������������������� local.speed
= 4000���������������
������������������������������� self
home plane_level_origin
������������������������������� //
Some good values for the hellcat�
������������������������������� self
maxyawrate 30
������������������������������� self
maxpitchrate 60
������������������������������� self
maxrollrate 100
������������������������������� self
maxroll 80
������������������������������� //
Some good values for the P38
������������������������������� //self
maxyawrate 20
������������������������������� //self
maxpitchrate 60
������������������������������� //self
maxrollrate 50
������������������������������� //self
maxroll 90
�������������������������������
��������������� ��������������� self speed local.speed
��������������� ��������������� self waitthread planeInit
��������������� end
//----------------------------------------------------------------------------
planeInit:
//
//������������ Sets the plane
to chase if it has a target and it's target to evade.� If //the plane has no target then do nothing.
//----------------------------------------------------------------------------
��������������� ��������������� self anim idle������������������������ // start the prop
spinning
��������������� ��������������� if ( self.target )
��������������� ��������������� {
��������������� ������������������������������� self attack
self.target���������� � //sets the chaser to target the evader
��������������� ������������������������������� self.target
evade self���������� � //sets the evader to evade the chaser
��������������� ��������������� ��������������� self
nodamage
��������������� ������������������������������� self.target
nodamage
��������������� ��������������� }
���������������
��������������� ��������������� //*** sets the distance the
planes will travel from there home
��������������� ��������������� self leash 13000
���������������
��������������� ��������������� //*** sets the maximum altitude
that a plane will travel
��������������� ��������������� self altleash 5000
��������������� end
Flying along a Spline path
There are currently two ways to make a plane fly along a spline path.� Flypath is the old way where the plane moves on the angles you give each node and Autopilot which figures out itself how to fly smoothly along a path.� The initial setup in the map file is the same.
Create your plane and give it a $targetname:
����������������������� Key:���� $targetname
����������������������� Value:�� plane
Create a spline path by
right-clicking and choosing Info > splinepath.� To connect your spline path nodes select the
first node then the second and press �ctrl + k�.� Continue till your path is fully
connected.� Now select the first node in
the sline path and give it a $targetname:
Key:���� $targetname
����������� ����������� Value:�� plane_path
Make sure that the plane is really close to the first node.
NOTE:� In the script you must tell your plane to
stop when the level loads up.� The new
changes to the code make any plane in the level start flying.� If the plane isn�t told to stop it will just
fly out of the level.
FlyPath
If you wish to use the fly path feature, you have to set the angles that the plane will fly at each node.� Select all the nodes in the spline path and add the following key values:
Key:���� Model
����������������������������������� Value:�� models/vehicles/hellcat_fly.tik�� (or
whatever model you ��������������������������������������������� ����������������������������������������������������������������������� are
using)
����������� Set the scale to 0.1.� This will give you a small plane model at each node ���������� so you can see your adjustments to the angles.� Select the first node that ����� you wish to adjust and press �r�.� Change your window view in radiant (top, side, front) to set the angles that you want.� Once you have adjusted �������� all the nodes you wish to change move to the script.
//----------------------------------------------------------------------------�������
InitPlane:
//----------------------------------------------------------------------------
��������������� $plane stop
��������������� // you can use
mess with these values to adjust the smoothness the plane �����������
��������������� // will
transition between the nodes
��������������� $plane
maxyawrate 360
��������������� $plane
maxpitchrate 360
��������������� $plane
maxrollrate 150
��������������� $plane thread
PlaneFly $plane_path ���������������
��������������� end
���������������
//----------------------------------------------------------------------------�������
PlaneFly local.path:
//----------------------------------------------------------------------------
����������������������������������������������� //�� Acceleration - Speed - Look ahead
������������������������������� self
flypath local.path 3000 3000 256
������������������������������� self
waitmove����������������������� // waits
till plane has flown the path
������������������������������� self
remove��������������������������� //
deletes plane after it has finish the path
��������������� end
�����������
����������� NOTE - By adding the maxyawrate, maxpitchrate and maxrollrate you can ������ adjust how the smooth the plane makes the transition from node to node.�
AutoPilot
����������� This is a new feature where the plane will figure out how to fly smoothly ����������� along a path, you don�t need to adjust the angles at each node.� Just add ������ the following script and watch the birdie fly.
//----------------------------------------------------------------------------�������
InitPlane:
//----------------------------------------------------------------------------
��������������� $plane stop
��������������� // you can use
mess with these values to adjust the smoothness the plane �����������
��������������� // will
transition between the nodes
��������������� $plane
maxyawrate 360
��������������� $plane maxpitchrate
360
��������������� $plane
maxrollrate 150
��������������� $plane thread
PlaneFly $plane_path ���������������
��������������� end
���������������
//----------------------------------------------------------------------------�������
PlaneFly local.path:
//----------------------------------------------------------------------------
������������������������������� self
autopilot local.path
������������������������������� self
waitmove����������������������� // waits
till plane has flown the path
������������������������������� self
remove��������������������������� //
deletes plane after it has finish the path
��������������� end