Letting a bot get in a car...

Author Topic: Letting a bot get in a car...  (Read 2255 times)

For some reason my advanced bots wont go in cars, any way to toggle this or what?

Zombie bots jump into cars.

I guess the bots aren't that advanced.   :cookieMonster:


What I'd do is in onCollision check to see if %col.getClassname(); equals WheeledVehicleData or the flying one which I don't know off the top of my head and then mount them to %col.

WheeledVehicle, FlyingVehicle, FlyingWheeledVehicle

WheeledVehicle, FlyingVehicle, FlyingWheeledVehicle, HoverVehicle i think

Lol wtf.  That isn't a quote...and hovervehicle?  If you're talking about the magic carpet, it's a FlyingVehicle.

No; there is a datablock type called HoverVehicleData.
I've expirimented with it, with poor results, but I should learn how to make a normal vehicle first; Lol.

I would think something like the hoverboard mod would be a hovervehicle type.

I would think something like the hoverboard mod would be a hovervehicle type.

actully its a board with invisable whells

I have a hover vehicle
//**************************************************************
// VEHICLE CHARACTERISTICS
//**************************************************************

datablock HoverVehicleData(Hover)
{
   spawnOffset = "0 0 1";

   floatingGravMag = 55.5;

   category = "Vehicles";
   shapeFile = "~/data/shapes/HoverCraft/hovercraft.dts";
   emap = true;

   maxDamage = 1000.0;
   destroyedLevel = 900.0;
//debrisShapeName = "~/data/shapes/player/GRAVTANK.dts";
//debris = ShapeDebris;
//renderWhenDestroyed = false;

   drag = 0.2;
   density = 0.3;

   integration = 4;           // Physics integration: TickSec/Rate
   collisionTol = 0.3;        // Collision distance tolerance
   contactTol = 0.2;          // Contact velocity tolerance

   cameraMaxDist = 10.0;
   cameraOffset = 5.7;
   cameraLag = 5.5;

   explosion = HoverExplosion;
   explosionDamage = 0.5;
   explosionRadius = 5.0;

   rechargeRate = 0.7;
   energyPerDamagePoint = 75;
   maxEnergy = 650;
   minJetEnergy = 165;
   jetEnergyDrain = 1.3;

// Rigid Body
   mass = 90;
   bodyFriction = 0.1;
   bodyRestitution = 0.3;
   softImpactSpeed = 20; // Play SoftImpact Sound
   hardImpactSpeed = 28; // Play HardImpact Sound

// Ground Impact Damage (uses DamageType::Ground)
   minImpactSpeed = 29;
   speedDamageScale = 0.10;

// Object Impact Damage (uses DamageType::Impact)
   collDamageThresholdVel = 23;
   collDamageMultiplier = 0.030;

   dragForce = 1.0;
// dragForce = 25 / 45.0;
   vertFactor = 0.8;
   floatingThrustFactor = 0.5;

   mainThrustForce = 600;
   reverseThrustForce = 600;
   strafeThrustForce = 670;
   turboFactor = 1.5;

   brakingForce = 900;
   brakingActivationSpeed = 30;

   stabLenMin = 28.50;
   stabLenMax = 32.50;
   stabSpringConstant = 38;
   stabDampingConstant = 28;

   gyroDrag = 18; // 16
   //gyroForce = 50;
   normalForce = 30;
   restorativeForce = 1600;
   steeringForce = 1000;
   rollForce = 30;
   pitchForce = 30;

   dustEmitter = HoverEmitter;
   triggerDustHeight = 0.5;
   dustHeight = 1.0;
   dustTrailEmitter = HoverEmitter;
   dustTrailOffset = "0.0 -1.0 0.5";
   triggerTrailHeight = 2.6;
   dustTrailFreqMod = 15.0;

   //jetSound = ScoutSqueelSound;
   //engineSound = ScoutEngineSound;
   //floatSound = ScoutThrustSound;
   //softImpactSound = GravSoftImpactSound;
   //hardImpactSound = HardImpactSound;
   //wheelImpactSound = WheelImpactSound;
   maxMountSpeed = 0.1;
   mountDelay = 2;
   dismountDelay = 1;

   stationaryThreshold = 0.5;
   maxDismountSpeed = 0.1;
   numMountPoints = 2;

   mountPose[0] = "Sitting";
   mountPointTransform[0] = "0 0 0 0 0 1 0";
   isProtectedMountPoint[0] = false;
   
   //
   softSplashSoundVelocity = 10.0;
   mediumSplashSoundVelocity = 20.0;
   hardSplashSoundVelocity = 30.0;
   exitSplashSoundVelocity = 10.0;

   //exitingWater = VehicleExitWaterSoftSound;
   //impactWaterEasy = VehicleImpactWaterSoftSound;
   //impactWaterMedium = VehicleImpactWaterSoftSound;
   //impactWaterHard = VehicleImpactWaterMediumSound;
   //waterWakeSound = VehicleWakeSoftSplashSound;

   minMountDist = 4;

   damageEmitter[0] = HoverEmitter;
   damageEmitter[1] = HoverEmitter;
   damageEmitter[2] = HoverEmitter;
   damageEmitterOffset[0] = "0.0 -1.5 0.5 ";
   damageLevelTolerance[0] = 0.3;
   damageLevelTolerance[1] = 0.7;
   numDmgEmitterAreas = 2;

   splashEmitter[0] = HoverEmitter;
   splashEmitter[1] = HoverEmitter;

   checkRadius = 1.7785;
   observeParameters = "1 10 10";

    damageEmitter[0] = LightDamageEmitter;
    damageEmitter[1] = HeavyDamageEmitter;
    damageEmitter[2] = DestroyedEmitter;
    damageEmitterOffset[0] = "0.0 -3.0 0.0 ";
    damageLevelTolerance[0] = 0.3;
    damageLevelTolerance[1] = 0.7;
    numDmgEmitterAreas = 1;

    explosion = hoverExplosion;
    debrisShapeName = "~/data/shapes/explosions/debris.dts";
    //debris = hoverDebris;


   splash = hoverSplash;
   splashVelocity = 4.0;
   splashAngle = 67.0;
   splashFreqMod = 300.0;
   splashVelEpsilon = 0.60;
   bubbleEmitTime = 0.4;
   splashEmitter[0] = hoverFoamDropletsEmitter;
   splashEmitter[1] = hoverFoamEmitter;
   splashEmitter[2] = hoverBubbleEmitter;
   mediumSplashSoundVelocity = 10.0;
   hardSplashSoundVelocity = 20.0;
   exitSplashSoundVelocity = 5.0;

//runningLight[0] = WildcatLight1;
//runningLight[1] = WildcatLight2;
//runningLight[2] = WildcatLight3;

  // shieldEffectScale = "0.9375 1.125 0.6";
};


//-----------------------------------------------------------------------------

function Hover::create(%vehicle)
{
   %obj = new HoverVehicle() {
      dataBlock = %block;
      mountable = true;
   };
   return(%obj);
}

//-----------------------------------------------------------------------------

function Hover::onAdd(%this,%obj)
{
   // energy
   %obj.setEnergyLevel(%this.MaxEnergy);
   %obj.setRechargeRate(%this.rechargeRate);
}

function Hover::onCollision(%this,%obj,%col,%vec,%speed)
{
   // Collision with other objects, including items
   // need to set this up later

    // Apply damage to the object all shape base objects
   if ( %speed >= 20 )
   {
      if (%col.getType() && $TypeMasks::ShapeBaseObjectType)
      %col.damage(%obj,%pos,( 3 * %speed ), "hover");
   }

}

function Hover::onDamage(%this,%obj)
{
   %damageAmt = %obj.getDamageLevel();

   if (%damageAmt >= %this.destroyedLevel)
   {
         %obj.setDamageState(Destroyed);
   }
}

function Hover::damage(%data, %myObj, %sourceObj, %position, %amount, %damageType, %momentum)
{
  %myObj.applyDamage(%amount);
}

function VehicleData::onDestroyed(%data, %obj, %prevState)
{
   // Create our detonator projectiles
  %q = new (projectile)()
  {
     dataBlock = HoverExplosionProjectile;
     initialVelocity  = 3;
     initialPosition  = %obj.getPosition();
     sourceObject     = %obj;
     sourceSlot       = 2;
   };
  MissionCleanup.add(%q);

  %obj.schedule(30, "delete");
}






Blaman thats a big block of code.  You don't understand because you cant code.  Please try to be helpful when you comment.