Announcement

Collapse
No announcement yet.

Help for a newb programmer

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Help for a newb programmer

    Hey guys. I posted a thread about this on the Planet Unreal forums but they seem pretty dead. Can someone help me build my own custom vehicles? (help as in tell me how of course, not actuly do it for me) Iv got a mesh made up, now all i need to do is tell it to be a vehicle.

    I want the 1st one to have the same physics as the raptor (physics meaning how it flies / moves etc) so basically for this one i just want to take the raptor and change the mesh for it (and obviously the texture) I also want to make my own guns for it, and while im on the subject can anyone tell me how to edit the secondary fire of a vehicle? and it would also be useful to know how to make one gun and put it on twice - ie so when the primary fire is pressed the gun fires two shots, like the raptors primary fire. Or is this done when you make the wepon itself?

    It would also be useful to know how to make animated things because i want to try making a walker at some point - using animated legs as wheels perhapse?

    Thanks for any help.

    #2
    Your Vehicle.uc - (For your purposes this will be almost the same as the raptor)
    -------------------

    DriverWeapons(0)= This is what weapon the driver will have

    Mesh= This will be the mesh that you want on here. (I assume you have the mesh exported from your Modeling program correctly, if not please visit some of the links in my sig)

    Also, dont forget to change the name and stuff too.

    Your Vehicle Weapon.uc - (This is what you will use to kill people)
    ------------------------------

    Take a look at the raptors weapon, as well as the other vehicles to see what flexability you have when working with these classes.

    Here is where you can set your Pri/Sec fire modes.


    _________________
    _________________

    This is all I can give you for now, I dont have the code infront of me. But If this is not making sense to you, then I recomend checking out some tutorials on UnrealScript to get yourself started. I believe there is a link over in the Level Editing forum for some good staters tutorials on UScript.

    Comment


      #3
      Thanx man, jus one question tho - where do i find this? Is this using the script editor in UnralEd by right-clicking or is this finding the files in Windows?

      Comment


        #4
        I recommend using UDE and downloading the UT2K4 source code instead of using UnrealEd to edit scripts. But here is the general way of editing scripts in UnrealEd.

        1) Open UnrealEd.

        2) Open the Actor Class Browser

        3) Go to Pawn -> Vehicle -> SVehicle -> ONSVehicle -> ONSChopperCraft -> ONSAttackCraft (Which is the Raptor if im not mistaken)

        4) Right Click on ONSAttackCraft and select "New..."
        5) Name your PACKAGE and vehicle NAME, once you hit ok this will bring up the script for your new vehicle

        6) You can now do all the scripting that CMan has said about, but to change default properties, go back to the Actor Class Browser and go back down the chain specified above, you'll now see your vehicle in there under ONSAttackCraft, right click on your vehicle and go to "Default Properties...". You can change the default properties in there. (You'll find the driver weapons and mesh stuff CMan talks about in the default properties somewhere)

        7) Once you have finished scripting you must "Compile Changed Scripts Only" (button on the script editor)

        8) You may need to "Save your package" at any time, you'll get asked if you want to save it when you quit UnrealEd but if you want to do it at any other point in time you will need to go to the Actor Class Browser, go to View and select Packages. Then go down and select only your package and then go up to File and select "Save selected packages"

        I hope this has given you an overview of how to do what you want. Once you have created the new file just go to the default properties and change some of the stuff in there. Once you open the default properties for your vehicle you'll see theres different groups, you'll be focused mainly on the SVehicle and ONSVehicle stuff, and perhaps with the ONSChopperCraft and ONSAttackCraft stuff too if you want to tweak how the thing moves. You'll find the Mesh that CMan was talking about in the SVehicle section, theres a lot of stuff like the startup sounds and shaders, destroyed vehicle mesh etc in ONSVehicle too.

        To actually change vehicle fire (for the driver) etc you will need to write some scripts in the actual script section for your vehicle (the script which came up when you hit the New... ok button) but for now just aim on getting your meshes and stuff on, as im sure it may take you a while to get familiar with.

        As I said before I would recommend using the source code and UDE to edit scripts as its a little safer and stabler than UnrealEd. Though UnrealEd does seem to make things a little easier for beginners by automatically creating packages and saving them etc.

        Once your in game you can access your new vehicle in an Onslaught match by typing "Summon PACKAGE.NAME" into the console (Replace package and name with what you put in the New... dialog) for example "Summon Onslaught.ONSAttackCraft" summons the Raptor (Oh you might want to use God mode because it will fall on your head and crush you). The Name you put in the New dialog is the name of the .UC file too.

        For any more information go to the Uneal Wiki, which you can find a link to in one of the sticky posts at the top of the Forum named "Mod author resources" That site has full tutorials on making vehicles and weapons etc.

        Comment


          #5
          Wow thanks guys. This is so much more useful than PlanetUnreal!! (who STILL haven't even replied, and i posted a week b4 i came on here!!) Ok, so wot's this "UDE" you mentioned?

          While im here, as it is reletive to the vehicles, can anyone tell me how to do animations??

          Comment


            #6
            nvm lol i found out wot UDE was!

            I still can't find that coding you are both on about.. am i supposed to add it or is it ment to be there? In the case of the later, it isn't there (that i can see) so wot do i do?

            Like i said before it would also be useful to find out how to animate objects etc (i know how to make movers, lol im not talking about that - i mean like when the MAS deploys and things like that)

            Thanks for your help so far tho, i have learned a couple of things

            Comment


              #7
              Ok from what I understand about the vehicle animations its part of the vehicle model. The MAS model actually includes all the animations, these animations are then played at the appropriate times. Pretty much the same as how the player models walk, jump etc.

              If your now using UDE to create your files you will be creating a new class and inheriting from another, this will be a blank text document so you will have to make a defaultproperties section and then you can add any properties you want (aslong as they are inherited).

              If your looking at the ONSAttackCraft script for the mesh I believe it most likely should be there already since every vehicle has a different mesh. If your looking at the defaultproperties in UnrealEd as I described all properties are there already, you can search for the ones you want to change. (Im not even sure that you can add new default properties in UnrealEd?!)

              The first line of code in the defaultproperties (using UDE)...
              Code:
              defaultproperties
              {
              	Mesh=Mesh'ONSVehicles-A.AttackCraft'
              As I said I dont use UnrealEd much, but in the default properties for ONSAttackCraft go in the 'display' section and you will see Mesh = [skeletalmesh'ONSVehicles-A.AttackCraft] I believe this should be the same thing, unless this is the actual bones?

              I personally haven't made any vehicle models or anything because im a terrible artist and all my models look like cubes (because they are, I can only make place holders) but for plenty of information check out the extra content on the DVD, or go to http://www.3dbuzz.com and download the VTM's from there. As I said before http://wiki.beyondunreal.com is also an extremely good resource.

              Hope that helps some more...

              Comment


                #8
                Ooh yes thanks. I haven't checked out the "display" part of the properties bit yet. I had a quick skim over it once or twice but that was before i started trying to make a vehicle. I will check it out asap.

                ok, so the vehicle includes those anims like the players. How do i go about creating those anims? can i do it in unrealED (as i'm more comfortable with makin objects in that,) or do i need to use an external prog like Maya (which would be a bit annoyin as id have to learn it 1st!!)

                lol soz for bein an annoyin noob, but i understand bones are used to tell UT where things go / how they pivot etc right? How do I make them? Im begining to think things like this aren't done in UTED are they? :cry:

                Comment


                  #9
                  lol no UED is only used to make levels and import/export stuff.

                  click the link in my sig, and scroll down to the 'how to get started' bit.

                  Comment


                    #10
                    Cheers m8, u guys have all been really helpful. So animation is done outside uED..? great now i have to learn maya!! lol thats ok tho, if i pick it up as fast as i did uED. ooh, can I export mesh's out of uED and into maya? that wopuld give me a flying start as i can simply learn how to animate (maya CAN animate.. can't it???:bulb: )

                    Comment


                      #11
                      maya comes with UT2004 and yes it can animate very well. not sure if you can export the animations. check the animation window.

                      and do check out those video tutorials on 3dbuzz.com

                      Comment


                        #12
                        Virus, make sure you read all the resources people provide before asking some questions because they are clearly explained in detail in tutorials all over the net already. And also make sure you check ALL of something before you say "I cant find it"

                        And secondly, you stated in your first post
                        Iv got a mesh made up
                        How on earth did you create a mesh if you didnt know how to even go about making meshes? :haha:

                        Comment


                          #13
                          You can make static meshes in unrealed. Maya is a complete, professional (and therefore extremely expensive) 3d modelling package. Luckily we get a get a free version that can export into UT2004. It's limited but it can get the job done.

                          Comment


                            #14
                            Well, I though I would add some more info for Virus to help him out.

                            ***Sorry for the long post***

                            Below is the code that controlls the Raptor. As you can see, there are the DefaultProperties that were mentioned. This is the way I modifiy vehicles, as I really hate UnrealED... So any property (and more) that are modifiable in unrealed, can be changed here. This is what is contained in the AttackCraft.uc
                            (Pawn -> Vehicle -> SVehicle -> ONSVehicle -> ONSChopperCraft -> ONSAttackCraft.uc)


                            Code:
                            //-----------------------------------------------------------
                            //
                            //-----------------------------------------------------------
                            class ONSAttackCraft extends ONSChopperCraft
                                placeable;
                            
                            #exec OBJ LOAD FILE=..\textures\VMVehicles-TX.utx
                            
                            var()   float							MaxPitchSpeed;
                            
                            var()   array<vector>					TrailEffectPositions;
                            var     class<ONSAttackCraftExhaust>	TrailEffectClass;
                            var     array<ONSAttackCraftExhaust>	TrailEffects;
                            
                            var()	array<vector>					StreamerEffectOffset;
                            var     class<ONSAttackCraftStreamer>	StreamerEffectClass;
                            var		array<ONSAttackCraftStreamer>	StreamerEffect;
                            
                            var()	range							StreamerOpacityRamp;
                            var()	float							StreamerOpacityChangeRate;
                            var()	float							StreamerOpacityMax;
                            var		float							StreamerCurrentOpacity;
                            var		bool							StreamerActive;
                            
                            // AI hint
                            function bool FastVehicle()
                            {
                            	return true;
                            }
                            
                            function bool Dodge(eDoubleClickDir DoubleClickMove)
                            {
                            	if ( FRand() < 0.7 )
                            	{
                            		VehicleMovingTime = Level.TimeSeconds + 1;
                            		Rise = 1;
                            	}
                            	return false;
                            }
                            
                            simulated function SpecialCalcBehindView(PlayerController PC, out actor ViewActor, out vector CameraLocation, out rotator CameraRotation )
                            {
                            	local vector CamLookAt, HitLocation, HitNormal, OffsetVector;
                            	local Actor HitActor;
                                local vector x, y, z;
                            
                            	if (DesiredTPCamDistance < TPCamDistance)
                            		TPCamDistance = FMax(DesiredTPCamDistance, TPCamDistance - CameraSpeed * (Level.TimeSeconds - LastCameraCalcTime));
                            	else if (DesiredTPCamDistance > TPCamDistance)
                            		TPCamDistance = FMin(DesiredTPCamDistance, TPCamDistance + CameraSpeed * (Level.TimeSeconds - LastCameraCalcTime));
                            
                                GetAxes(PC.Rotation, x, y, z);
                            	ViewActor = self;
                            	CamLookAt = GetCameraLocationStart() + (TPCamLookat >> Rotation) + TPCamWorldOffset;
                            
                            	OffsetVector = vect(0, 0, 0);
                            	OffsetVector.X = -1.0 * TPCamDistance;
                            
                            	CameraLocation = CamLookAt + (OffsetVector >> PC.Rotation);
                            
                            	HitActor = Trace(HitLocation, HitNormal, CameraLocation, Location, true, vect(40, 40, 40));
                            	if ( HitActor != None
                            	     && (HitActor.bWorldGeometry || HitActor == GetVehicleBase() || Trace(HitLocation, HitNormal, CameraLocation, Location, false, vect(40, 40, 40)) != None) )
                            			CameraLocation = HitLocation;
                            
                                CameraRotation = Normalize(PC.Rotation + PC.ShakeRot);
                                CameraLocation = CameraLocation + PC.ShakeOffset.X * x + PC.ShakeOffset.Y * y + PC.ShakeOffset.Z * z;
                            }
                            
                            function Died(Controller Killer, class<DamageType> damageType, vector HitLocation)
                            {
                                local int i;
                            
                                if(Level.NetMode != NM_DedicatedServer)
                            	{
                                	for(i=0;i<TrailEffects.Length;i++)
                                    	TrailEffects[i].Destroy();
                                    TrailEffects.Length = 0;
                            
                            		for(i=0; i<StreamerEffect.Length; i++)
                            			StreamerEffect[i].Destroy();
                            		StreamerEffect.Length = 0;
                                }
                            
                            	Super.Died(Killer, damageType, HitLocation);
                            }
                            
                            simulated function Destroyed()
                            {
                                local int i;
                            
                                if(Level.NetMode != NM_DedicatedServer)
                            	{
                                	for(i=0;i<TrailEffects.Length;i++)
                                    	TrailEffects[i].Destroy();
                                    TrailEffects.Length = 0;
                            
                            		for(i=0; i<StreamerEffect.Length; i++)
                            			StreamerEffect[i].Destroy();
                            		StreamerEffect.Length = 0;
                                }
                            
                                Super.Destroyed();
                            }
                            
                            simulated event DrivingStatusChanged()
                            {
                            	local vector RotX, RotY, RotZ;
                            	local int i;
                            
                            	Super.DrivingStatusChanged();
                            
                                if (bDriving && Level.NetMode != NM_DedicatedServer && !bDropDetail)
                            	{
                                    GetAxes(Rotation,RotX,RotY,RotZ);
                            
                                    if (TrailEffects.Length == 0)
                                    {
                                        TrailEffects.Length = TrailEffectPositions.Length;
                            
                                    	for(i=0;i<TrailEffects.Length;i++)
                                        	if (TrailEffects[i] == None)
                                        	{
                                            	TrailEffects[i] = spawn(TrailEffectClass, self,, Location + (TrailEffectPositions[i] >> Rotation) );
                                            	TrailEffects[i].SetBase(self);
                                                TrailEffects[i].SetRelativeRotation( rot(0,32768,0) );
                                            }
                                    }
                            
                                    if (StreamerEffect.Length == 0)
                                    {
                                		StreamerEffect.Length = StreamerEffectOffset.Length;
                            
                                		for(i=0; i<StreamerEffect.Length; i++)
                                    		if (StreamerEffect[i] == None)
                                    		{
                                    			StreamerEffect[i] = spawn(StreamerEffectClass, self,, Location + (StreamerEffectOffset[i] >> Rotation) );
                                    			StreamerEffect[i].SetBase(self);
                                    		}
                                	}
                                }
                                else
                                {
                                    if (Level.NetMode != NM_DedicatedServer)
                                	{
                                    	for(i=0;i<TrailEffects.Length;i++)
                                    	   TrailEffects[i].Destroy();
                            
                                    	TrailEffects.Length = 0;
                            
                                		for(i=0; i<StreamerEffect.Length; i++)
                                            StreamerEffect[i].Destroy();
                            
                                        StreamerEffect.Length = 0;
                                    }
                                }
                            }
                            
                            simulated function Tick(float DeltaTime)
                            {
                                local float EnginePitch, DesiredOpacity, DeltaOpacity, MaxOpacityChange, ThrustAmount;
                            	local TrailEmitter T;
                            	local int i;
                            	local vector RelVel;
                            	local bool NewStreamerActive, bIsBehindView;
                            	local PlayerController PC;
                            
                                if(Level.NetMode != NM_DedicatedServer)
                            	{
                                    EnginePitch = 64.0 + VSize(Velocity)/MaxPitchSpeed * 32.0;
                                    SoundPitch = FClamp(EnginePitch, 64, 96);
                            
                                    RelVel = Velocity << Rotation;
                            
                                    PC = Level.GetLocalPlayerController();
                            		if (PC != None && PC.ViewTarget == self)
                            			bIsBehindView = PC.bBehindView;
                            		else
                                        bIsBehindView = True;
                            
                                	// Adjust Engine FX depending on being drive/velocity
                            		if (!bIsBehindView)
                            		{
                            			for(i=0; i<TrailEffects.Length; i++)
                            				TrailEffects[i].SetThrustEnabled(false);
                            		}
                                    else
                                    {
                            			ThrustAmount = FClamp(OutputThrust, 0.0, 1.0);
                            
                            			for(i=0; i<TrailEffects.Length; i++)
                            			{
                            				TrailEffects[i].SetThrustEnabled(true);
                            				TrailEffects[i].SetThrust(ThrustAmount);
                            			}
                            		}
                            
                            		// Update streamer opacity (limit max change speed)
                            		DesiredOpacity = (RelVel.X - StreamerOpacityRamp.Min)/(StreamerOpacityRamp.Max - StreamerOpacityRamp.Min);
                            		DesiredOpacity = FClamp(DesiredOpacity, 0.0, StreamerOpacityMax);
                            
                            		MaxOpacityChange = DeltaTime * StreamerOpacityChangeRate;
                            
                            		DeltaOpacity = DesiredOpacity - StreamerCurrentOpacity;
                            		DeltaOpacity = FClamp(DeltaOpacity, -MaxOpacityChange, MaxOpacityChange);
                            
                            		if(!bIsBehindView)
                                        StreamerCurrentOpacity = 0.0;
                                    else
                                		StreamerCurrentOpacity += DeltaOpacity;
                            
                            		if(StreamerCurrentOpacity < 0.01)
                            			NewStreamerActive = false;
                            		else
                            			NewStreamerActive = true;
                            
                            		for(i=0; i<StreamerEffect.Length; i++)
                            		{
                            			if(NewStreamerActive)
                            			{
                            				if(!StreamerActive)
                            				{
                            					T = TrailEmitter(StreamerEffect[i].Emitters[0]);
                            					T.ResetTrail();
                            				}
                            
                            				StreamerEffect[i].Emitters[0].Disabled = false;
                            				StreamerEffect[i].Emitters[0].Opacity = StreamerCurrentOpacity;
                            			}
                            			else
                            			{
                            				StreamerEffect[i].Emitters[0].Disabled = true;
                            				StreamerEffect[i].Emitters[0].Opacity = 0.0;
                            			}
                            		}
                            
                            		StreamerActive = NewStreamerActive;
                                }
                            
                                Super.Tick(DeltaTime);
                            }
                            
                            function float ImpactDamageModifier()
                            {
                                local float Multiplier;
                                local vector X, Y, Z;
                            
                                GetAxes(Rotation, X, Y, Z);
                                if (ImpactInfo.ImpactNorm Dot Z > 0)
                                    Multiplier = 1-(ImpactInfo.ImpactNorm Dot Z);
                                else
                                    Multiplier = 1.0;
                            
                                return Super.ImpactDamageModifier() * Multiplier;
                            }
                            
                            function bool RecommendLongRangedAttack()
                            {
                            	return true;
                            }
                            
                            //FIXME Fix to not be specific to this class after demo
                            function bool PlaceExitingDriver()
                            {
                            	local int i;
                            	local vector tryPlace, Extent, HitLocation, HitNormal, ZOffset;
                            
                            	Extent = Driver.default.CollisionRadius * vect(1,1,0);
                            	Extent.Z = Driver.default.CollisionHeight;
                            	Extent *= 2;
                            	ZOffset = Driver.default.CollisionHeight * vect(0,0,1);
                            	if (Trace(HitLocation, HitNormal, Location + (ZOffset * 5), Location, false, Extent) != None)
                            		return false;
                            
                            	//avoid running driver over by placing in direction perpendicular to velocity
                            	if ( VSize(Velocity) > 100 )
                            	{
                            		tryPlace = Normal(Velocity cross vect(0,0,1)) * (CollisionRadius + Driver.default.CollisionRadius ) * 1.25 ;
                            		if ( FRand() < 0.5 )
                            			tryPlace *= -1; //randomly prefer other side
                            		if ( (Trace(HitLocation, HitNormal, Location + tryPlace + ZOffset, Location + ZOffset, false, Extent) == None && Driver.SetLocation(Location + tryPlace + ZOffset))
                            		     || (Trace(HitLocation, HitNormal, Location - tryPlace + ZOffset, Location + ZOffset, false, Extent) == None && Driver.SetLocation(Location - tryPlace + ZOffset)) )
                            			return true;
                            	}
                            
                            	for( i=0; i<ExitPositions.Length; i++)
                            	{
                            		if ( ExitPositions[0].Z != 0 )
                            			ZOffset = Vect(0,0,1) * ExitPositions[0].Z;
                            		else
                            			ZOffset = Driver.default.CollisionHeight * vect(0,0,2);
                            
                            		if ( bRelativeExitPos )
                            			tryPlace = Location + ( (ExitPositions[i]-ZOffset) >> Rotation) + ZOffset;
                            		else
                            			tryPlace = ExitPositions[i];
                            
                            		// First, do a line check (stops us passing through things on exit).
                            		if ( bRelativeExitPos && Trace(HitLocation, HitNormal, tryPlace, Location + ZOffset, false, Extent) != None )
                            			continue;
                            
                            		// Then see if we can place the player there.
                            		if ( !Driver.SetLocation(tryPlace) )
                            			continue;
                            
                            		return true;
                            	}
                            	return false;
                            }
                            
                            static function StaticPrecache(LevelInfo L)
                            {
                                Super.StaticPrecache(L);
                            
                            	L.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorWing');
                            	L.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorTailWing');
                            	L.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorGun');
                            	L.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris2');
                            	L.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris1');
                            	L.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.RocketProj');
                            
                                L.AddPrecacheMaterial(Material'AW-2004Particles.Energy.SparkHead');
                                L.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp2_frames');
                                L.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp1_frames');
                                L.AddPrecacheMaterial(Material'ExplosionTex.Framed.we1_frames');
                                L.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.SmokePanels2');
                                L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.NapalmSpot');
                                L.AddPrecacheMaterial(Material'EpicParticles.Fire.SprayFire1');
                                L.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.RaptorColorRed');
                                L.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.RaptorColorBlue');
                                L.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.AttackCraftNoColor');
                            	L.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.TrailBlura');
                                L.AddPrecacheMaterial(Material'Engine.GRADIENT_Fade');
                                L.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.raptorCOLORtest');
                                L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.SmokeFragment');
                            }
                            
                            simulated function UpdatePrecacheStaticMeshes()
                            {
                            	Level.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorWing');
                            	Level.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorTailWing');
                            	Level.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorGun');
                            	Level.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris2');
                            	Level.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris1');
                            	Level.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.RocketProj');
                            
                            	Super.UpdatePrecacheStaticMeshes();
                            }
                            
                            simulated function UpdatePrecacheMaterials()
                            {
                                Level.AddPrecacheMaterial(Material'AW-2004Particles.Energy.SparkHead');
                                Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp2_frames');
                                Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp1_frames');
                                Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.we1_frames');
                                Level.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.SmokePanels2');
                                Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.NapalmSpot');
                                Level.AddPrecacheMaterial(Material'EpicParticles.Fire.SprayFire1');
                                Level.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.RaptorColorRed');
                                Level.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.RaptorColorBlue');
                                Level.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.AttackCraftNoColor');
                            	Level.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.TrailBlura');
                                Level.AddPrecacheMaterial(Material'Engine.GRADIENT_Fade');
                                Level.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.raptorCOLORtest');
                                Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.SmokeFragment');
                            
                            	Super.UpdatePrecacheMaterials();
                            }
                            
                            defaultproperties
                            {
                                 MaxPitchSpeed=2000.000000
                                 TrailEffectPositions(0)=(X=-148.000000,Y=-26.000000,Z=51.000000)
                                 TrailEffectPositions(1)=(X=-148.000000,Y=26.000000,Z=51.000000)
                                 TrailEffectClass=Class'Onslaught.ONSAttackCraftExhaust'
                                 StreamerEffectOffset(0)=(X=-219.000000,Y=-35.000000,Z=57.000000)
                                 StreamerEffectOffset(1)=(X=-219.000000,Y=35.000000,Z=57.000000)
                                 StreamerEffectOffset(2)=(X=-52.000000,Y=-24.000000,Z=142.000000)
                                 StreamerEffectOffset(3)=(X=-52.000000,Y=24.000000,Z=142.000000)
                                 StreamerEffectClass=Class'Onslaught.ONSAttackCraftStreamer'
                                 StreamerOpacityRamp=(Min=1200.000000,Max=1600.000000)
                                 StreamerOpacityChangeRate=1.000000
                                 StreamerOpacityMax=0.700000
                                 UprightStiffness=500.000000
                                 UprightDamping=300.000000
                                 MaxThrustForce=100.000000
                                 LongDamping=0.050000
                                 MaxStrafeForce=80.000000
                                 LatDamping=0.050000
                                 MaxRiseForce=50.000000
                                 UpDamping=0.050000
                                 TurnTorqueFactor=600.000000
                                 TurnTorqueMax=200.000000
                                 TurnDamping=50.000000
                                 MaxYawRate=1.500000
                                 PitchTorqueFactor=200.000000
                                 PitchTorqueMax=35.000000
                                 PitchDamping=20.000000
                                 RollTorqueTurnFactor=450.000000
                                 RollTorqueStrafeFactor=50.000000
                                 RollTorqueMax=50.000000
                                 RollDamping=30.000000
                                 StopThreshold=100.000000
                                 MaxRandForce=3.000000
                                 RandForceInterval=0.750000
                                 DriverWeapons(0)=(WeaponClass=Class'Onslaught.ONSAttackCraftGun',WeaponBone="PlasmaGunAttachment")
                                 RedSkin=Shader'VMVehicles-TX.AttackCraftGroup.AttackCraftChassisFinalRED'
                                 BlueSkin=Shader'VMVehicles-TX.AttackCraftGroup.AttackCraftChassisFInalBLUE'
                                 IdleSound=Sound'ONSVehicleSounds-S.AttackCraft.AttackCraftIdle'
                                 StartUpSound=Sound'ONSVehicleSounds-S.AttackCraft.AttackCraftStartUp'
                                 ShutDownSound=Sound'ONSVehicleSounds-S.AttackCraft.AttackCraftShutDown'
                                 StartUpForce="AttackCraftStartUp"
                                 ShutDownForce="AttackCraftShutDown"
                                 DestroyedVehicleMesh=StaticMesh'ONSDeadVehicles-SM.AttackCraftDead'
                                 DestructionEffectClass=Class'Onslaught.ONSVehicleExplosionEffect'
                                 DisintegrationEffectClass=Class'Onslaught.ONSVehDeathAttackCraft'
                                 DestructionLinearMomentum=(Min=50000.000000,Max=150000.000000)
                                 DestructionAngularMomentum=(Min=100.000000,Max=300.000000)
                                 DamagedEffectOffset=(X=-120.000000,Y=10.000000,Z=65.000000)
                                 ImpactDamageMult=0.001000
                                 HeadlightCoronaOffset(0)=(X=76.000000,Y=14.000000,Z=-24.000000)
                                 HeadlightCoronaOffset(1)=(X=76.000000,Y=-14.000000,Z=-24.000000)
                                 HeadlightCoronaMaterial=Texture'EpicParticles.Flares.FlashFlare1'
                                 HeadlightCoronaMaxSize=60.000000
                                 VehicleMass=4.000000
                                 bTurnInPlace=True
                                 bShowDamageOverlay=True
                                 bDriverHoldsFlag=False
                                 bCanCarryFlag=False
                                 ExitPositions(0)=(Y=-165.000000,Z=100.000000)
                                 ExitPositions(1)=(Y=165.000000,Z=100.000000)
                                 EntryPosition=(X=-40.000000)
                                 EntryRadius=210.000000
                                 TPCamDistance=350.000000
                                 TPCamLookat=(X=0.000000,Z=0.000000)
                                 TPCamWorldOffset=(Z=200.000000)
                                 DriverDamageMult=0.000000
                                 VehiclePositionString="in a Raptor"
                                 VehicleNameString="Raptor"
                                 RanOverDamageType=Class'Onslaught.DamTypeAttackCraftRoadkill'
                                 CrushedDamageType=Class'Onslaught.DamTypeAttackCraftPancake'
                                 MaxDesireability=0.600000
                                 FlagBone="PlasmaGunAttachment"
                                 FlagOffset=(Z=80.000000)
                                 FlagRotation=(Yaw=32768)
                                 HornSounds(0)=Sound'ONSVehicleSounds-S.Horns.Horn03'
                                 HornSounds(1)=Sound'ONSVehicleSounds-S.Horns.Horn07'
                                 GroundSpeed=2000.000000
                                 HealthMax=300.000000
                                 Health=300
                                 Mesh=SkeletalMesh'ONSVehicles-A.AttackCraft'
                                 SoundVolume=160
                                 CollisionRadius=150.000000
                                 CollisionHeight=70.000000
                                 Begin Object Class=KarmaParamsRBFull Name=KParams0
                                     KInertiaTensor(0)=1.000000
                                     KInertiaTensor(3)=3.000000
                                     KInertiaTensor(5)=3.500000
                                     KCOMOffset=(X=-0.250000)
                                     KLinearDamping=0.000000
                                     KAngularDamping=0.000000
                                     KStartEnabled=True
                                     bKNonSphericalInertia=True
                                     KActorGravScale=0.000000
                                     bHighDetailOnly=False
                                     bClientOnly=False
                                     bKDoubleTickRate=True
                                     bKStayUpright=True
                                     bKAllowRotate=True
                                     bDestroyOnWorldPenetrate=True
                                     bDoSafetime=True
                                     KFriction=0.500000
                                     KImpactThreshold=300.000000
                                 End Object
                                 KParams=KarmaParamsRBFull'Onslaught.ONSAttackCraft.KParams0'
                            
                            }

                            Comment


                              #15
                              How on earth did you create a mesh if you didnt know how to even go about making meshes?
                              lol never said i didn't know how to make mesh's!!

                              CMan - thank you soo much m8, uve been well helpful. That code is much bigger than what it shows me on mine - i must be doin summit wrong.

                              maya comes with UT2004 and yes it can animate very well. not sure if you can export the animations. check the animation window.
                              shows how much i looked at the cd!! never even realised it came with maya. Iv got a full vers neway tho so ill get playin wiv that rite away.

                              Virus, make sure you read all the resources people provide before asking some questions because they are clearly explained in detail in tutorials all over the net already. And also make sure you check ALL of something before you say "I cant find it"
                              Tutorials aren't useful when you only need to know one or two things - u sit ther for hours reading it all jus to put a couple of bits together to do what you want. I appriciate no1 is gonna sit down and tell me everything there is to know about it, but that's not what im askin anyone to do. I had only a few q's, and i wouldve had to ask people to point me at the right tutorials anyway, so it was more efficient to just ask my few q's here. Plus garentee no single tutorial couldve answered ALL my q's at once.

                              Comment

                              Working...
                              X