| Home Page | Recent Changes | Preferences

ProjectX/Code

Ok here is where you will see a lot of code that dont work cos im a n00b at coding, if u can please tell me what ive dun wrong and tell me how to crrect id be really greatful.

When i load the new bulldog in a level, it appears, but when i walk up to it, and press [use] i cant get in it. The code i've changed is:

00001  #exec OBJ LOAD FILE=..\staticmeshes\BulldogMeshes.usx
00002  #exec OBJ LOAD FILE=..\sounds\WeaponSounds.uax
00003  #exec OBJ LOAD FILE=..\textures\VehicleFX.utx
00004  
00005  class Betterbulldog extends KCar
00006      placeable;
00007  
00008  // triggers used to get into the Bulldog
00009  var const vector    FrontTriggerOffset;
00010  var BulldogTrigger  FLTrigger, FRTrigger, FlipTrigger;
00011  
00012  
00013  // headlight projector
00014  var const vector        HeadlightOffset;
00015  var BulldogHeadlight    Headlight;
00016  var bool                HeadlightOn;
00017  
00018  // Light materials
00019  var Material            ReverseMaterial;
00020  var Material            BrakeMaterial;
00021  var Material            TailOffMaterial;
00022  
00023  var Material            HeadlightOnMaterial;
00024  var Material            HeadlightOffMaterial;
00025  
00026  var BulldogHeadlightCorona HeadlightCorona[8];
00027  var (Bulldog) vector    HeadlightCoronaOffset[8];
00028  
00029  // Used to prevent triggering sounds continuously
00030  var float           UntilNextImpact;
00031  
00032  // Wheel dirt emitter
00033  var BulldogDust     Dust[4]; // FL, FR, RL, RR
00034  
00035  // Distance below centre of tire to place dust.
00036  var float           DustDrop;
00037  
00038  // Ratio between dust kicked up and amount wheels are slipping
00039  var (Bulldog) float DustSlipRate;
00040  var (Bulldog) float DustSlipThresh;
00041  
00042  // Maximum speed at which you can get in the vehicle.
00043  var (Bulldog) float TriggerSpeedThresh;
00044  var bool            TriggerState; // true for on, false for off.
00045  var bool            FlipTriggerState;
00046  
00047  // Destroyed Buggy
00048  var (Bulldog) class<Actor>  DestroyedEffect;
00049  var (Bulldog) sound         DestroyedSound;
00050  
00051  // Weapon
00052  var           float FireCountdown;
00053  var           float SinceLastTargetting;
00054  var           Pawn  CurrentTarget;
00055  
00056  var (Bulldog) float     FireInterval;
00057  var (Bulldog) float     TargettingInterval;
00058  var (Bulldog) vector    RocketFireOffset; // Position (car ref frame) that rockets are launched from
00059  var (Bulldog) float     TargettingRange;
00060  var (Bulldog) Material  TargetMaterial;
00061  
00062  
00063  // Bulldog sound things
00064  var (Bulldog) float EnginePitchScale;
00065  var (Bulldog) sound BulldogStartSound;
00066  var (Bulldog) sound BulldogIdleSound;
00067  var (Bulldog) float HitSoundThreshold;
00068  var (Bulldog) sound BulldogSquealSound;
00069  var (Bulldog) float SquealVelThresh;
00070  var (Bulldog) sound BulldogHitSound;
00071  
00072  var (Bulldog) String BulldogStartForce;
00073  var (Bulldog) String BulldogIdleForce;
00074  var (Bulldog) String BulldogSquealForce;
00075  var (Bulldog) String BulldogHitForce;
00076  
00077  replication
00078  {
00079      reliable if(Role == ROLE_Authority)
00080          HeadlightOn, CurrentTarget;
00081  }
00082  
00083  function PreBeginPlay()
00084  {
00085      Super.PreBeginPlay();
00086      if ( Level.IsDemoBuild() )
00087          Destroy();
00088  }
00089  
00090  simulated function PostNetBeginPlay()
00091  {
00092      local vector RotX, RotY, RotZ;
00093      local int i;
00094  
00095      Super.PostNetBeginPlay();
00096  
00097      GetAxes(Rotation,RotX,RotY,RotZ);
00098  
00099      // Only have triggers on server
00100      if(Level.NetMode != NM_Client)
00101      {
00102          // Create triggers for gettting into the Bulldog
00103          FLTrigger = spawn(class'BetterbulldogTrigger', self,, Location + FrontTriggerOffset.X * RotX + FrontTriggerOffset.Y * RotY + FrontTriggerOffset.Z * RotZ);
00104          FLTrigger.SetBase(self);
00105          FLTrigger.SetCollision(true, false, false);
00106  
00107          FRTrigger = spawn(class'BetterbulldogTrigger', self,, Location + FrontTriggerOffset.X * RotX - FrontTriggerOffset.Y * RotY + FrontTriggerOffset.Z * RotZ);
00108          FRTrigger.SetBase(self);
00109          FRTrigger.SetCollision(true, false, false);
00110  
00111          TriggerState = true;
00112  
00113          // Create trigger for flipping the bulldog back over.
00114          FlipTrigger = spawn(class'BetterbulldogTrigger', self,, Location);
00115          Fliptrigger.bCarFlipTrigger = true;
00116          FlipTrigger.SetBase(self);
00117          FlipTrigger.SetCollisionSize(350, 200);
00118          FlipTrigger.SetCollision(false, false, false);
00119  
00120          FlipTriggerState = false;
00121      }
00122  
00123      // Dont bother making emitters etc. on dedicated server
00124      if(Level.NetMode != NM_DedicatedServer)
00125      {
00126          // Create headlight projector. We make sure it doesn't project on the vehicle itself.
00127          Headlight = spawn(class'BulldogHeadlight', self,, Location + HeadlightOffset.X * RotX + HeadlightOffset.Y * RotY + HeadlightOffset.Z * RotZ);
00128          Headlight.SetBase(self);
00129          Headlight.SetRelativeRotation(rot(-2000, 32768, 0));
00130  
00131          // Create wheel dust emitters.
00132          Dust[0] = spawn(class'BulldogDust', self,, Location + WheelFrontAlong*RotX + WheelFrontAcross*RotY + (WheelVert-DustDrop)*RotZ);
00133          Dust[0].SetBase(self);
00134  
00135          Dust[1] = spawn(class'BulldogDust', self,, Location + WheelFrontAlong*RotX - WheelFrontAcross*RotY + (WheelVert-DustDrop)*RotZ);
00136          Dust[1].SetBase(self);  
00137  
00138          Dust[2] = spawn(class'BulldogDust', self,, Location + WheelRearAlong*RotX + WheelRearAcross*RotY + (WheelVert-DustDrop)*RotZ);
00139          Dust[2].SetBase(self);
00140  
00141          Dust[3] = spawn(class'BulldogDust', self,, Location + WheelRearAlong*RotX - WheelRearAcross*RotY + (WheelVert-DustDrop)*RotZ);
00142          Dust[3].SetBase(self);
00143  
00144          // Set light materials
00145          Skins[1]=BrakeMaterial;
00146          Skins[2]=HeadlightOffMaterial;
00147  
00148          // Spawn headlight coronas
00149          for(i=0; i<8; i++)
00150          {
00151              HeadlightCorona[i] = spawn(class'BulldogHeadlightCorona', self,, Location + (HeadlightCoronaOffset[i] >> Rotation) );
00152              HeadlightCorona[i].SetBase(self);
00153          }
00154      }
00155  
00156      // For KImpact event
00157      KSetImpactThreshold(HitSoundThreshold);
00158  
00159      // If this is not 'authority' version - don't destroy it if there is a problem. 
00160      // The network should sort things out.
00161      if(Role != ROLE_Authority)
00162      {
00163          KarmaParams(KParams).bDestroyOnSimError = False;
00164          KarmaParams(frontLeft.KParams).bDestroyOnSimError = False;
00165          KarmaParams(frontRight.KParams).bDestroyOnSimError = False;
00166          KarmaParams(rearLeft.KParams).bDestroyOnSimError = False;
00167          KarmaParams(rearRight.KParams).bDestroyOnSimError = False;
00168      }
00169  }
00170  
00171  simulated event Destroyed()
00172  {
00173      local int i;
00174  
00175      //Log("Betterbulldog Destroyed");
00176  
00177      // Clean up random stuff attached to the car
00178      if(Level.NetMode != NM_Client)
00179      {
00180  
00181          FLTrigger.Destroy();
00182          FRTrigger.Destroy();
00183          FlipTrigger.Destroy();
00184      }
00185  
00186      if(Level.NetMode != NM_DedicatedServer)
00187      {
00188          '''Headlight.Destroy();
00189  
00190          for(i=0; i<4; i++)
00191              Dust[i].Destroy();
00192  
00193          for(i=0; i<8; i++)
00194              HeadlightCorona[i].Destroy();'''
00195      }
00196  
00197      // This will destroy wheels & joints
00198      Super.Destroyed();
00199  
00200      // Trigger destroyed sound and effect
00201      if(Level.NetMode != NM_DedicatedServer)
00202      {
00203          spawn(DestroyedEffect, self, , Location );
00204          PlaySound(DestroyedSound);
00205      }
00206  }
00207  
00208  function KImpact(actor other, vector pos, vector impactVel, vector impactNorm)
00209  {
00210      /* Only make noises for Bulldog-world impacts */
00211      if(other != None)
00212          return;
00213  
00214      if(UntilNextImpact < 0)
00215      {
00216          //PlaySound(BulldogHitSound);
00217  
00218          // hack to stop the sound repeating rapidly on impacts
00219          //UntilNextImpact = GetSoundDuration(BulldogHitSound);
00220          
00221          
00222      }
00223  }
00224  
00225  simulated function ClientKDriverEnter(PlayerController pc)
00226  {
00227      //Log("Bulldog ClientKDriverEnter");
00228  
00229      Super.ClientKDriverEnter(pc);
00230  }
00231  
00232  function KDriverEnter(Pawn p)
00233  {
00234      //Log("Bulldog KDriverEnter");
00235  
00236      Super.KDriverEnter(p);
00237  
00238      //PlaySound(BulldogStartSound);
00239  
00240      //AmbientSound=BulldogIdleSound;
00241  
00242      p.bHidden = True;
00243      ReceiveLocalizedMessage(class'Vehicles.BulldogMessage', 1);
00244  }
00245  
00246  simulated function ClientKDriverLeave(PlayerController pc)
00247  {
00248      //Log("Bulldog ClientKDriverLeave");
00249  
00250      Super.ClientKDriverLeave(pc);
00251  }
00252  
00253  function bool KDriverLeave(bool bForceLeave)
00254  {
00255      local Pawn OldDriver;
00256  
00257      //Log("Bulldog KDriverLeave");
00258  
00259      OldDriver = Driver;
00260  
00261      // If we succesfully got out of the car, make driver visible again.
00262      if( Super.KDriverLeave(bForceLeave) )
00263      {
00264          OldDriver.bHidden = false;
00265          AmbientSound = None;    
00266          return true;
00267      }
00268      else
00269          return false;
00270  }
00271  
00272  function LaunchRocket(bool bWasAltFire)
00273  {
00274      local vector RotX, RotY, RotZ, FireLocation;
00275      local BulldogRocket R;
00276      local PlayerController PC;
00277  
00278      // Client can't do firing
00279      if(Role != ROLE_Authority)
00280          return;
00281  
00282      // Fire as many rockets as we have time to.
00283      GetAxes(Rotation, RotX, RotY, RotZ);
00284      FireLocation = Location + (RocketFireOffset >> Rotation);
00285  
00286      while(FireCountdown <= 0)
00287      {
00288          if(!bWasAltFire)
00289          {
00290              // Fire a rocket at the current target (starts flying forward and up a bit)
00291  
00292              R = spawn(class'Vehicles.BulldogRocket', self, , FireLocation, rotator(-1 * RotX + 0.2 * RotZ));
00293              R.Seeking = CurrentTarget;
00294      
00295              // Play firing noise
00296              PlaySound(Sound'WeaponSounds.RocketLauncher.RocketLauncherFire', SLOT_None,,,,, false);
00297              PC = PlayerController(Controller);
00298              if (PC != None && PC.bEnableWeaponForceFeedback)
00299                  PC.ClientPlayForceFeedback("RocketLauncherFire");
00300          }
00301          else
00302          {
00303              //Log("Would AltFire At:"$CurrentTarget);
00304          }
00305  
00306          FireCountdown += FireInterval;
00307      }
00308  }
00309  
00310  // Fire a rocket (if we've had time to reload!)
00311  function VehicleFire(bool bWasAltFire)
00312  {
00313      Super.VehicleFire(bWasAltFire);
00314  
00315      if(FireCountdown < 0)
00316      {
00317          FireCountdown = 0;
00318          LaunchRocket(bWasAltFire);
00319      }
00320  }
00321  
00322  // For drawing targetting reticule
00323  simulated function DrawHud(Canvas C)
00324  {
00325      local int XPos, YPos;
00326      local vector ScreenPos;
00327      local float RatioX, RatioY;
00328      local float tileX, tileY;
00329      local float SizeX, SizeY, PosDotDir;
00330      local vector CameraLocation, CamDir;
00331      local rotator CameraRotation;
00332  
00333      if(CurrentTarget == None)
00334          return;
00335  
00336      SizeX = 64.0;
00337      SizeY = 64.0;
00338  
00339      ScreenPos = C.WorldToScreen( CurrentTarget.Location );
00340  
00341      // Dont draw reticule if target is behind camera
00342      C.GetCameraLocation( CameraLocation, CameraRotation );
00343      CamDir = vector(CameraRotation);
00344      PosDotDir = (CurrentTarget.Location - CameraLocation) Dot CamDir;
00345      if( PosDotDir < 0)
00346          return;
00347  
00348      RatioX = C.SizeX / 640.0;
00349      RatioY = C.SizeY / 480.0;
00350  
00351      tileX = sizeX * RatioX;
00352      tileY = sizeY * RatioX;
00353  
00354      XPos = ScreenPos.X;
00355      YPos = ScreenPos.Y;
00356      C.Style = ERenderStyle.STY_Additive;
00357      C.DrawColor.R = 255;
00358      C.DrawColor.G = 255;
00359      C.DrawColor.B = 255;
00360      C.DrawColor.A = 255;
00361      C.SetPos(XPos - tileX*0.5, YPos - tileY*0.5);
00362      C.DrawTile( TargetMaterial, tileX, tileY, 0.0, 0.0, 256, 256); //--- TODO : Fix HARDCODED USIZE
00363  }
00364  
00365  simulated function Tick(float Delta)
00366  {
00367      Local float BestAim, BestDist, TotalSlip, EnginePitch, VMag;
00368      Local vector RotX, RotY, RotZ, FireLocation;
00369      local pawn NewTarget;
00370      local int i;
00371  
00372      Super.Tick(Delta);
00373  
00374      // Weapons (run on server and replicated to client)
00375      if(Role == ROLE_Authority)
00376      {
00377          // Only put headlights on when driver is in. Save batteries!
00378          if(Driver != None)
00379              HeadlightOn=true;
00380          else
00381              HeadlightOn=false;
00382  
00383          // Do targetting (do nothing if no controller)
00384          SinceLastTargetting += Delta;
00385          if(Controller != None && SinceLastTargetting > TargettingInterval)
00386          {
00387              GetAxes(Rotation, RotX, RotY, RotZ);
00388      
00389              FireLocation = Location + (RocketFireOffset >> Rotation);
00390  
00391              // BestAim is zero - so we will only target things in front of the buggy
00392              BestAim = 0;
00393              NewTarget = Controller.PickTarget(BestAim, BestDist, -1.0 * RotX, FireLocation, TargettingRange);
00394              
00395              // If this is a new lock - play lock-on noise
00396              if(NewTarget != CurrentTarget)
00397              {
00398                  if(NewTarget == None)
00399                      PlayerController(Controller).ClientPlaySound(Sound'WeaponSounds.SeekLost');
00400                  else
00401                      PlayerController(Controller).ClientPlaySound(Sound'WeaponSounds.LockOn');
00402              }
00403  
00404              CurrentTarget = NewTarget;
00405              SinceLastTargetting = 0;
00406          }
00407  
00408          // Countdown to next shot
00409          FireCountdown -= Delta;
00410  
00411          // This is for sustained barrages.
00412          // Primary fire takes priority
00413          if(bVehicleIsFiring)
00414              LaunchRocket(false);
00415          else if(bVehicleIsAltFiring)
00416              LaunchRocket(true);
00417      }
00418  
00419      // Dont bother doing effects on dedicated server.
00420      if(Level.NetMode != NM_DedicatedServer)
00421      {
00422          // Update brake light colors.
00423          if(Gear == -1 && OutputBrake == false)
00424          {
00425              // REVERSE
00426              Skins[1] = ReverseMaterial;
00427          }
00428          else if(Gear == 0 && OutputBrake == true)
00429          {
00430              // BRAKE
00431              Skins[1] = BrakeMaterial;
00432          }
00433          else
00434          {
00435              // OFF
00436              Skins[1] = TailOffMaterial;
00437          }
00438  
00439          // Set headlight projector state.
00440          Headlight.DetachProjector();
00441          if(HeadlightOn)
00442          {
00443              Headlight.AttachProjector();
00444              Skins[2] = HeadlightOnMaterial;
00445              for(i=0; i<8; i++)
00446                  HeadlightCorona[i].bHidden = false;
00447          }
00448          else
00449          {
00450              Skins[2] = HeadlightOffMaterial;
00451              for(i=0; i<8; i++)
00452                  HeadlightCorona[i].bHidden = true;
00453          }
00454  
00455          // Update dust kicked up by wheels.
00456          Dust[0].UpdateDust(frontLeft, DustSlipRate, DustSlipThresh);
00457          Dust[1].UpdateDust(frontRight, DustSlipRate, DustSlipThresh);
00458          Dust[2].UpdateDust(rearLeft, DustSlipRate, DustSlipThresh);
00459          Dust[3].UpdateDust(rearRight, DustSlipRate, DustSlipThresh);
00460      }
00461  
00462      UntilNextImpact -= Delta;
00463  
00464      // This assume the sound is an idle-ing sound, and increases with pitch
00465      // as wheels speed up.
00466      EnginePitch = 64 + ((WheelSpinSpeed/EnginePitchScale) * (255-64));
00467      SoundPitch = FClamp(EnginePitch, 0, 254);
00468      //Log("Engine Pitch:"$SoundPitch);
00469      //SoundVolume = 255;
00470  
00471      // Currently, just use rear wheels for slipping noise
00472      TotalSlip = rearLeft.GroundSlipVel + rearRight.GroundSlipVel;
00473      //log("TotalSlip:"$TotalSlip);
00474      if(TotalSlip > SquealVelThresh)
00475      {
00476          rearLeft.AmbientSound = BulldogSquealSound;
00477      }
00478      else
00479      {
00480          rearLeft.AmbientSound = None;
00481      }
00482  
00483      // Dont have triggers on network clients.
00484      if(Level.NetMode != NM_Client)
00485      {
00486          // If vehicle is moving, disable collision for trigger.
00487          VMag = VSize(Velocity);
00488  
00489          if(!bIsInverted && VMag < TriggerSpeedThresh && TriggerState == false)
00490          {
00491              FLTrigger.SetCollision(true, false, false);
00492              FRTrigger.SetCollision(true, false, false);
00493              TriggerState = true;
00494          }
00495          else if((bIsInverted || VMag > TriggerSpeedThresh) && TriggerState == true)
00496          {
00497              FLTrigger.SetCollision(false, false, false);
00498              FRTrigger.SetCollision(false, false, false);
00499              TriggerState = false;
00500          }
00501  
00502          // If vehicle is inverted, and slow, turn on big 'flip vehicle' trigger.
00503          if(bIsInverted && VMag < TriggerSpeedThresh && FlipTriggerState == false)
00504          {
00505              FlipTrigger.SetCollision(true, false, false);
00506              FlipTriggerState = true;    
00507          }
00508          else if((!bIsInverted || VMag > TriggerSpeedThresh) && FlipTriggerState == true)
00509          {
00510              FlipTrigger.SetCollision(false, false, false);
00511              FlipTriggerState = false;
00512          }
00513      }
00514  }
00515  
00516  // Really simple at the moment!
00517  function TakeDamage(int Damage, Pawn instigatedBy, Vector hitlocation, 
00518                          Vector momentum, class<DamageType> damageType)
00519  {
00520      // Avoid damage healing the car!
00521      if(Damage < 0)
00522          return;
00523  
00524      if(damageType == class'DamTypeSuperShockBeam')
00525          Health -= 100; // Instagib doesn't work on vehicles
00526      else
00527          Health -= 0.5 * Damage; // Weapons do less damage
00528  
00529      // The vehicle is dead!
00530      if(Health <= 0)
00531      {
00532          if ( Controller != None )
00533          {
00534              if( Controller.bIsPlayer )
00535              {
00536                  ClientKDriverLeave(PlayerController(Controller)); // Just to reset HUD etc.
00537                  Controller.PawnDied(self); // This should unpossess the controller and let the player respawn
00538              }
00539              else
00540                  Controller.Destroy();
00541          }
00542  
00543          Destroy(); // Destroy the vehicle itself (see Destroyed below)
00544      }
00545  
00546      //KAddImpulse(momentum, hitlocation);
00547  }
00548  
00549  defaultproperties
00550  {
00551      DrawType=DT_StaticMesh
00552      StaticMesh=StaticMesh'BulldogMeshes.Simple.S_Chassis'
00553  
00554      Begin Object Class=KarmaParamsRBFull Name=KParams0
00555          KInertiaTensor(0)=20
00556          KInertiaTensor(1)=0
00557          KInertiaTensor(2)=0
00558          KInertiaTensor(3)=30
00559          KInertiaTensor(4)=0
00560          KInertiaTensor(5)=48
00561          KCOMOffset=(X=0.8,Y=0.0,Z=-0.7)
00562          KStartEnabled=True
00563          KFriction=1.6
00564          KLinearDamping=0
00565          KAngularDamping=0
00566          bKNonSphericalInertia=False
00567          bHighDetailOnly=False
00568          bClientOnly=False
00569          bKDoubleTickRate=True
00570          Name="KParams0"
00571      End Object
00572      KParams=KarmaParams'KParams0'
00573  
00574      DrawScale=0.4
00575  
00576      FrontTireClass=class'BulldogTire'
00577      RearTireClass=class'BulldogTire'
00578  
00579      WheelFrontAlong=-100
00580      WheelFrontAcross=110
00581      WheelRearAlong=115
00582      WheelRearAcross=110
00583      WheelVert=-15
00584  
00585      DestroyedEffect=class'XEffects.RocketExplosion'
00586      DestroyedSound=sound'WeaponSounds.P1RocketLauncherAltFire'
00587  
00588  
00589      //FrontTriggerOffset=(X=174,Y=0,Z=20)
00590      FrontTriggerOffset=(X=0,Y=165,Z=10)
00591  
00592      TriggerSpeedThresh=40
00593  
00594      HeadlightOffset=(X=-200,Y=0,Z=50)
00595      HeadlightOn=false
00596  
00597      // Light materials
00598      ReverseMaterial=Material'VehicleFX.BDReverseLight_ON'
00599      BrakeMaterial=Material'VehicleFX.BDTaiLight_ON'
00600      TailOffMaterial=Material'VehicleFX.BDTailOff'
00601  
00602      HeadlightOnMaterial=Material'VehicleFX.BDHeadlights_ON'
00603      HeadlightOffMaterial=Material'VehicleFX.BDHeadlights'
00604  
00605      HeadlightCoronaOffset(0)=(X=-199,Y=51,Z=57)
00606      HeadlightCoronaOffset(1)=(X=-199,Y=-51,Z=57)
00607      HeadlightCoronaOffset(2)=(X=-128,Y=38,Z=125)
00608      HeadlightCoronaOffset(3)=(X=-189,Y=93,Z=28)
00609      HeadlightCoronaOffset(4)=(X=-183,Y=-93,Z=26)
00610      HeadlightCoronaOffset(5)=(X=-190,Y=-51,Z=77)
00611      HeadlightCoronaOffset(6)=(X=-128,Y=63,Z=123)
00612      HeadlightCoronaOffset(7)=(X=-185,Y=85,Z=10)
00613  
00614      // Sounds
00615      EnginePitchScale=655350
00616      HitSoundThreshold=30
00617      SquealVelThresh=15
00618  
00619      DustSlipRate=2.8
00620      DustSlipThresh=0.1
00621      DustDrop=30
00622  
00623      // Weaponary
00624      bSpecialHUD=true
00625      FireInterval=0.9
00626      TargettingInterval=0.5
00627      RocketFireOffset=(X=0,Y=0,Z=180)
00628      TargettingRange=5000
00629      TargetMaterial=Material'InterfaceContent.Hud.fbBombFocus'
00630      
00631  
00632      // Driver positions
00633      
00634      ExitPositions(0)=(X=0,Y=200,Z=100)
00635      ExitPositions(1)=(X=0,Y=-200,Z=100)
00636      ExitPositions(2)=(X=350,Y=0,Z=100)
00637      ExitPositions(3)=(X=-350,Y=0,Z=100)
00638      
00639      DrivePos=(X=-165,Y=0,Z=-100)
00640  
00641      OutputBrake=1
00642      Steering=0
00643      Throttle=0
00644      Gear=1
00645      StopThreshold=40
00646  
00647      MaxSteerAngle=3400
00648      MaxBrakeTorque=55
00649  
00650      TorqueCurve=(Points=((InVal=0,OutVal=270),(InVal=20000,OutVal=170),(InVal=300000,OutVal=0)))
00651      TorqueSplit=0.5
00652      SteerPropGap=500
00653      SteerTorque=15000
00654      SteerSpeed=20000
00655  
00656      TireMass=0.5    
00657      ChassisMass=8
00658  
00659      TireRollFriction=1.5
00660      TireLateralFriction=1.5
00661      TireRollSlip=0.06
00662      TireLateralSlip=0.04
00663      TireMinSlip=0.001
00664      TireSlipRate=0.007
00665      TireSoftness=0.0
00666      TireAdhesion=0
00667      TireRestitution=0
00668  
00669      HandbrakeThresh=1000
00670      TireHandbrakeSlip=0.2
00671      TireHandbrakeFriction=-1.2
00672  
00673      SuspStiffness=150
00674      SuspDamping=14.5
00675      SuspHighLimit=0.5
00676      SuspLowLimit=-0.5
00677      SuspRef=0
00678  
00679      AirSpeed = 5000
00680  
00681      Health=300
00682  
00683      // sound
00684      SoundRadius=255
00685      
00686      UntilNextImpact=500
00687  }

Pz. help.

EntropicLqd: Is this in a new class? Any reason why you didn't post the whole code segment?

ProjectX: It's a modification of the bulldog, so it has lower acceleration and slightly higher speed, this is the only part i've changed so far, and this is the only part, therefore, where my problem will be.

ZxAnPhOrIaN: I am a n00b at uscripting also.. Look at my new map component at the open source area. It is a multi skybox zone thing similar to slickwilly's UT one, but more "user(or n00b)-friendly". And its for UT2003!

AlphaOne: What happens when you try to run this codes? Does it actually compile?

ProjectX: It compiles fine in UCC make and it appears in-game, i just cant enter it, thats the only thing wrong.

ProjectX: I've found the problem, i forgot to change one of the class names in bulldog trigger. My new problem is now occurring (isn't debugging fun!?!?!?) Its in the uscript section above and heres the error i get in UCC MAKE: Error, type mismatch in '='. Ok, the line is line 292 in the script.

ProjectX: Does anyone know what's wrong?

AlphaOne: You must be really frustrated with this!? Before I try to help you, I would like to know if you modified the actuall bulldog code or created a subclass of a bulldog? If you modified the original bulldog, then you shouldn't be doing that. Really. That's why most of the original game code says that if you modify it you'll have problems. You either subclass the bulldog, or copy+pase the bulldog code into your own version of the bulldog. You can find how to Create A Subclass here. Alternatively, you can totally recreate your own bulldog, by creating a new package, creating classes MyBulldog and MyBulldogTires. Then fool around with those variables. The first step is easier (I think). When you subclass the bulldog, only include (in the defaultproperties) those variables that you've changed. If you don't know Object Oriented Programming (OOP), then you should search the net or this site for more info. It is the key to programming in UScript. I hope that helps.

ProjectX: I copied the script to my own folder and compiled with UCC Make, changing the name to "betterbulldog"

ProjectX: so ure all as infuriatingly n00bish as me/ have other stuff to do/ dont like me?

ProjectX: I know this is a lot of code for you to help me with, but this is my first time at coding and if i dont get help now you may forever lose out on some great random insanity (like Food Fight UT2K3 not copyrighted in anyway, i would love to see this idea made)and anyway, the problem is only with 1 line of code, though i recognise that it may be due to another line of code somewhere else.

Mychaeel: What's your problem with that code, again? Compiler error in line 292?

EntropicLqd: Bah - beat me to it.

Daid303: Uh, can't find anything that wrong with line 292. Are you really really sure that this is YOUR code, and that that is the Right error?

Mychaeel: Do you happen to have your own version of class BulldogRocket in your package? Then that class and class Vehicles.BulldogRocket would indeed mismatch.

ProjectX: That could be it, i shall check

MythOpus: As you may or may not know... line ' 292 ' refers to the class that shoots the rocket. Are you sure you have changed this to the class you have? Ex- Vehicles.OriginalBulldogFire to MyPackage.MyClassFire ?

Foxpaw: I decided to pore over this and figure out "what's down with that." :P

This is a part that doesn't work. It may have been an error in the copying, but other than this it compiled fine. (Actually I didn't have any betterbulldogtriggers so I just substituted them for regular bulldog triggers and made it so you can enter an empty betterbulldog by shooting it.. but you would probrably like to retain the method you have now.

  '''Headlight.Destroy();

  for(i=0; i<4; i++)
    Dust[i].Destroy();

  for(i=0; i<8; i++)
    HeadlightCorona[i].Destroy();'''

''' specifies a name constant, and obviously, is an invalid one.

Other than the bit above, it compiled and drove fine. It flips a lot less than the regular bulldog too.

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In