Author Topic: Vehicle with a turret when shoots down adds velocity forward??  (Read 588 times)

What the title says. When my vehicle's turret shoots as far down as possible, it adds velocity going the exact same was the bullets are going. (Heres something that's not a problem, but helps describe this. It doesn't look all the way down when shooting.) Why?
Heres the code. I can't seem to figure out why.

Code: [Select]
datablock TSShapeConstructor(MCTVMGDts)
{
baseShape  = "./MCTVMG.dts";
sequence0  = "./M_root.dsq root";

sequence1  = "./M_root.dsq run";
sequence2  = "./M_root.dsq walk";
sequence3  = "./M_root.dsq back";
sequence4  = "./M_root.dsq side";

sequence5  = "./M_root.dsq crouch";
sequence6  = "./M_root.dsq crouchRun";
sequence7  = "./M_root.dsq crouchBack";
sequence8  = "./M_root.dsq crouchSide";

sequence9  = "./M_look.dsq look";
sequence10 = "./M_root.dsq headside";
sequence11 = "./M_root.dsq headUp";

sequence12 = "./M_root.dsq jump";
sequence13 = "./M_root.dsq standjump";
sequence14 = "./M_root.dsq fall";
sequence15 = "./M_root.dsq land";

sequence16 = "./M_root.dsq armAttack";
sequence17 = "./M_root.dsq armReadyLeft";
sequence18 = "./M_root.dsq armReadyRight";
sequence19 = "./M_root.dsq armReadyBoth";
sequence20 = "./M_root.dsq spearready";  
sequence21 = "./M_root.dsq spearThrow";

sequence22 = "./M_root.dsq talk";  

sequence23 = "./M_root.dsq death1";

sequence24 = "./M_root.dsq shiftUp";
sequence25 = "./M_root.dsq shiftDown";
sequence26 = "./M_root.dsq shiftAway";
sequence27 = "./M_root.dsq shiftTo";
sequence28 = "./M_root.dsq shiftLeft";
sequence29 = "./M_root.dsq shiftRight";
sequence30 = "./M_root.dsq rotCW";
sequence31 = "./M_root.dsq rotCCW";

sequence32 = "./M_root.dsq undo";
sequence33 = "./M_root.dsq plant";

sequence34 = "./M_root.dsq sit";

sequence35 = "./M_root.dsq wrench";
};    


datablock PlayerData(MCTVMGPlayer)
{
   renderFirstPerson = true;
   emap = false;
  
   ShootOnClick=1;
   ShootOnClick_Hold=1;
ShootOnClick_ShootDelay=120;
ShootOnClick_ReShootDelay=120;//exec("add-ons/vehicle_MCTVMG/vehicle_MCTVMG.cs");
ShootOnClick_ProjectileCount=1;
ShootOnClick_RequiredSlot=0;
ShootOnClick_Sound=gunshot1Sound;

ShootOnClick_Projectile[0]=gunProjectile;
ShootOnClick_Position[0]="3 0 2";
ShootOnClick_Velocity[0]="200 0 0";
ShootOnClick_Scale[0]="1 1 1";


   className = Armor;
   shapeFile = "./MCTVMG.dts";
   cameraMaxDist = 8;
   cameraTilt = 0.261;
   cameraVerticalOffset = 2.3;
   computeCRC = false;
  
   canObserve = true;
   cmdCategory = "Clients";

   cameraDefaultFov = 90.0;
   cameraMinFov = 5.0;
   cameraMaxFov = 120.0;
  
   //debrisShapeName = "~/data/player/debris_player.dts";
   //debris = horseDebris;

   aiAvoidThis = true;

   minLookAngle = -1.5708;
   maxLookAngle = 0.2;
   maxFreelookAngle = 3.0;

   mass = 200;
   drag = 0.1;
   maxdrag = 0.52;
   density = 0.7;
   maxDamage = 250;
   maxEnergy =  10;
   repairRate = 0.33;
   energyPerDamagePoint = 75.0;

   rechargeRate = 0.4;

   runForce = 0 * 0;
   runEnergyDrain = 0;
   minRunEnergy = 0;
   maxForwardSpeed = 0;
   maxBackwardSpeed = 0;
   maxSideSpeed = 0;

   maxForwardCrouchSpeed = 0;
   maxBackwardCrouchSpeed = 0;
   maxSideCrouchSpeed = 0;

   maxForwardProneSpeed = 0;
   maxBackwardProneSpeed = 0;
   maxSideProneSpeed = 0;

   maxForwardWalkSpeed = 0;
   maxBackwardWalkSpeed = 0;
   maxSideWalkSpeed = 0;

   maxUnderwaterForwardSpeed = 0;
   maxUnderwaterBackwardSpeed = 0;
   maxUnderwaterSideSpeed = 0;

   jumpForce = 0 * 0; //8.3 * 90;
   jumpEnergyDrain = 0;
   minJumpEnergy = 0;
   jumpDelay = 0;

   minJetEnergy = 0;
jetEnergyDrain = 0;
canJet = 0;

   recoverDelay = 0;
   recoverRunForceScale = 1.2;

   minImpactSpeed = 250;
   speedDamageScale = 3.8;

   boundingBox = vectorScale("2.5 2.5 1.7", 4);
   crouchBoundingBox = vectorScale("2.5 2.5 1.7", 4);
   proneBoundingBox = vectorScale("2.5 2.5 1.7", 4);

   pickupRadius = 0.75;
  
   // Damage location details
   boxNormalHeadPercentage       = 0.83;
   boxNormalTorsoPercentage      = 0.49;
   boxHeadLeftPercentage         = 0;
   boxHeadRightPercentage        = 1;
   boxHeadBackPercentage         = 0;
   boxHeadFrontPercentage        = 1;

   // Foot Prints
   //decalData   = HorseFootprint;
   //decalOffset = 0.25;

   jetEmitter = playerJetEmitter;
   jetGroundEmitter = playerJetGroundEmitter;
   jetGroundDistance = 4;
  
   //footPuffEmitter = LightPuffEmitter;
   footPuffNumParts = 10;
   footPuffRadius = 0.25;

   //dustEmitter = LiftoffDustEmitter;

   splash = PlayerSplash;
   splashVelocity = 4.0;
   splashAngle = 67.0;
   splashFreqMod = 300.0;
   splashVelEpsilon = 0.60;
   bubbleEmitTime = 0.1;
   splashEmitter[0] = PlayerFoamDropletsEmitter;
   splashEmitter[1] = PlayerFoamEmitter;
   splashEmitter[2] = PlayerBubbleEmitter;
   mediumSplashSoundVelocity = 10.0;  
   hardSplashSoundVelocity = 20.0;  
   exitSplashSoundVelocity = 5.0;

   // Controls over slope of runnable/jumpable surfaces
   runSurfaceAngle  = 85;
   jumpSurfaceAngle = 86;

   minJumpSpeed = 20;
   maxJumpSpeed = 30;

   horizMaxSpeed = 68;
   horizResistSpeed = 33;
   horizResistFactor = 0.35;

   upMaxSpeed = 80;
   upResistSpeed = 25;
   upResistFactor = 0.3;
  
   footstepSplashHeight = 0.35;

   //NOTE:  some sounds commented out until wav's are available

   JumpSound = HorseJumpSound;

   // Footstep Sounds
   //FootSoftSound        = HorseFootFallSound;
   //FootHardSound        = HorseFootFallSound;
   //FootMetalSound       = HorseFootFallSound;
   //FootSnowSound        = HorseFootFallSound;
   //FootShallowSound     = HorseFootFallSound;
   //FootWadingSound      = HorseFootFallSound;
   //FootUnderwaterSound  = HorseFootFallSound;
   //FootBubblesSound     = FootLightBubblesSound;
   //movingBubblesSound   = ArmorMoveBubblesSound;
   //waterBreathSound     = WaterBreathMaleSound;

   //impactSoftSound      = ImpactLightSoftSound;
   //impactHardSound      = ImpactLightHardSound;
   //impactMetalSound     = ImpactLightMetalSound;
   //impactSnowSound      = ImpactLightSnowSound;
  
   //impactWaterEasy      = ImpactLightWaterEasySound;
   //impactWaterMedium    = ImpactLightWaterMediumSound;
   //impactWaterHard      = ImpactLightWaterHardSound;
  
   groundImpactMinSpeed    = 10.0;
   groundImpactShakeFreq   = "4.0 4.0 4.0";
   groundImpactShakeAmp    = "1.0 1.0 1.0";
   groundImpactShakeDuration = 0.8;
   groundImpactShakeFalloff = 10.0;
  
   //exitingWater         = ExitingWaterLightSound;
  
   observeParameters = "0.5 4.5 4.5";

   // Inventory Items
maxItems   = 10; //total number of bricks you can carry
maxWeapons = 5; //this will be controlled by mini-game code
maxTools = 5;

//uiName = "MCTV MG";
rideable = true;
   lookUpLimit = 0.6;
   lookDownLimit = 0.7;

canRide = false;
showEnergyBar = false;
paintable = true;

brickImage = horseBrickImage; //the imageData to use for brick deployment

   numMountPoints = 1;
   mountThread[0] = "armreadyboth";

   //protection for passengers
   protectPassengersBurn   = true;  //protect passengers from the burning effect of explosions?
   protectPassengersRadius = true;  //protect passengers from radius damage (explosions) ?
   protectPassengersDirect = false; //protect passengers from direct damage (bullets) ?
};

datablock ParticleData(MCTVSmokeParticle)
{
dragCoefficient      = 3;
gravityCoefficient   = -1;
inheritedVelFactor   = 0.6;
constantAcceleration = 0.0;
lifetimeMS           = 850;
lifetimeVarianceMS   = 55;
textureName          = "base/data/particles/cloud";
spinSpeed = 10.0;
spinRandomMin = -500.0;
spinRandomMax = 500.0;
colors[0]     = "0.5 0.5 0.5 0.2";
colors[1]     = "0.5 0.5 0.5 0.0";
sizes[0]      = 0.6;
sizes[1]      = 0.8;

useInvAlpha = true;
};

datablock ParticleEmitterData(MCTVSmokeEmitter)
{
   ejectionPeriodMS = 10;
   periodVarianceMS = 4;
   ejectionVelocity = 3;
   velocityVariance = 2;
   ejectionOffset   = 0;
   thetaMin         = 0;
   thetaMax         = 50;
   phiReferenceVel  = 0;
   phiVariance      = 360;
   overrideAdvance = false;
   particles = "MCTVSmokeParticle";


};

datablock ShapeBaseImageData(MCTVSmokeImage)
{
shapeFile = "base/data/shapes/empty.dts";
emap = false;

mountPoint = 1;

stateName[0]                  = "Ready";
stateTransitionOnTimeout[0]   = "FireA";
stateTimeoutValue[0]          = 0.01;

stateName[1]                  = "FireA";
stateTransitionOnTimeout[1]   = "FireB";
stateWaitForTimeout[1]        = True;
stateTimeoutValue[1]          = 0.05;
stateEmitter[1]               = vehicleFinalExplosionEmitter3;
stateEmitterTime[1]           = 0.05;

stateName[2]                  = "FireB";
stateTransitionOnTimeout[2]   = "FireC";
stateWaitForTimeout[2]        = True;
stateTimeoutValue[2]          = 0.05;
stateEmitter[2]               = vehicleExplosionEmitter;
stateEmitterTime[2]           = 0.05;

stateName[3]                  = "FireC";
stateTransitionOnTimeout[3]   = "Done";
stateWaitForTimeout[3]        = True;
stateTimeoutValue[3]          = 0.850;
stateEmitter[3]               = MCTVSmokeEmitter;
stateEmitterTime[3]           = 0.850;

stateName[4]                  = "Done";
stateScript[4]                = "onDone";
};
function MCTVSmokeImage::onDone(%this,%obj,%slot)
{
%obj.unMountImage(%slot);
}

// Vehicle //
/////////////
datablock WheeledVehicleData(MCTVVehicle)
{
category = "Vehicles";
displayName = " ";
shapeFile = "./MCTV.dts"; //"~/data/shapes/skivehicle.dts"; //
emap = true;
minMountDist = 3;
  
   numMountPoints = 16;
   mountThread[0] = "sit";
   mountThread[1] = "sit";
   mountThread[2] = "sit";
   mountThread[3] = "root";
   mountThread[4] = "root";
   mountThread[5] = "root";
   mountThread[6] = "root";
   mountThread[7] = "sit";
   mountThread[8] = "sit";
   mountThread[9] = "sit";
   mountThread[10] = "root";
   mountThread[11] = "root";
   mountThread[12] = "root";
   mountThread[13] = "root";
   mountThread[14] = "root";
   mountThread[15] = "armreadyboth";

maxDamage = 600.00;
destroyedLevel = 600.00;
speedDamageScale = 1.04;
collDamageThresholdVel = 5.0;
collDamageMultiplier   = 0.01;

massCenter = "0 0 0";
   //massBox = "2 5 1";

maxSteeringAngle = 0.8;  // Maximum steering angle, should match animation
integration = 4;           // Force integration time: TickSec/Rate
tireEmitter = VehicleTireEmitter; // All the tires use the same dust emitter

// 3rd person camera settings
cameraRoll = false;         // Roll the camera with the vehicle
cameraMaxDist = 13;         // Far distance from vehicle
cameraOffset = 7.5;        // Vertical offset from camera mount point
cameraLag = 0.4;           // Velocity lag of camera
cameraDecay = 0.75;        // Decay per sec. rate of velocity lag
cameraTilt = 0.4;
   collisionTol = 0.1;        // Collision distance tolerance
   contactTol = 0.1;

useEyePoint = false;

defaultTire = jeepTire;
defaultSpring = jeepSpring;
//flatTire = jeepFlatTire;
//flatSpring = jeepFlatSpring;

   numWheels = 6;

// Rigid Body
mass = 300;
density = 5.0;
drag = 1.6;
bodyFriction = 0.6;
bodyRestitution = 0.6;
minImpactSpeed = 10;        // Impacts over this invoke the script callback
softImpactSpeed = 10;       // Play SoftImpact Sound
hardImpactSpeed = 15;      // Play HardImpact Sound
groundImpactMinSpeed    = 10.0;

// Engine
engineTorque = 9500; //4000;       // Engine power
engineBrake = 1500;         // Braking when throttle is 0
brakeTorque = 15000;        // When brakes are applied
maxWheelSpeed = 30;        // Engine scale by current speed / max speed

rollForce = 600;
yawForce = 400;
pitchForce = 800;
rotationalDrag = 0.2;

   // Advanced Steering
   steeringAutoReturn = true;
   steeringAutoReturnRate = 0.9;
   steeringAutoReturnMaxSpeed = 10;
   steeringUseStrafeSteering = true;
   steeringStrafeSteeringRate = 0.1;

// Energy
maxEnergy = 100;
jetForce = 3000;
minJetEnergy = 30;
jetEnergyDrain = 2;

splash = vehicleSplash;
splashVelocity = 4.0;
splashAngle = 67.0;
splashFreqMod = 300.0;
splashVelEpsilon = 0.60;
bubbleEmitTime = 1.4;
splashEmitter[0] = vehicleFoamDropletsEmitter;
splashEmitter[1] = vehicleFoamEmitter;
splashEmitter[2] = vehicleBubbleEmitter;
mediumSplashSoundVelocity = 10.0;  
hardSplashSoundVelocity = 20.0;  
exitSplashSoundVelocity = 5.0;

//mediumSplashSound = "";
//hardSplashSound = "";
//exitSplashSound = "";

// Sounds
//   jetSound = ScoutThrustSound;
//engineSound = idleSound;
//squealSound = skidSound;
softImpactSound = slowImpactSound;
hardImpactSound = fastImpactSound;
//wheelImpactSound = slowImpactSound;

//   explosion = VehicleExplosion;
justcollided = 0;

   uiName = "MCTV ";
rideable = true;
lookUpLimit = 0.65;
lookDownLimit = 0.45;

paintable = true;
  
   damageEmitter[0] = VehicleBurnEmitter;
damageEmitterOffset[0] = "0.0 0.0 0.0 ";
damageLevelTolerance[0] = 0.99;

   damageEmitter[1] = VehicleBurnEmitter;
damageEmitterOffset[1] = "0.0 0.0 0.0 ";
damageLevelTolerance[1] = 1.0;

   numDmgEmitterAreas = 1;

   initialExplosionProjectile = MCTVExplosionProjectile;
   initialExplosionOffset = 0;         //offset only uses a z value for now

   burnTime = 4000;

   finalExplosionProjectile = MCTVFinalExplosionProjectile;
   finalExplosionOffset = 0.5;          //offset only uses a z value for now

   minRunOverSpeed    = 4;   //how fast you need to be going to run someone over (do damage)
   runOverDamageScale = 8;   //when you run over someone, speed * runoverdamagescale = damage amt
   runOverPushScale   = 1.2; //how hard a person you're running over gets pushed

   //protection for passengers
   protectPassengersBurn   = false;  //protect passengers from the burning effect of explosions?
   protectPassengersRadius = false;  //protect passengers from radius damage (explosions) ?
   protectPassengersDirect = false; //protect passengers from direct damage (bullets) ?
};

function MCTVVehicle::onAdd(%this,%obj)
{
   // 4 wheel steering
   %obj.setWheelSteering(0,1);
   %obj.setWheelSteering(1,1);
   %obj.setWheelSteering(2,0);
   %obj.setWheelSteering(3,0);
   %obj.setWheelSteering(4,0);
   %obj.setWheelSteering(5,0);

   // 4 wheel drive
   %obj.setWheelPowered(0,true);
   %obj.setWheelPowered(1,true);
   %obj.setWheelPowered(2,true);
   %obj.setWheelPowered(3,true);
   %obj.setWheelPowered(4,true);
   %obj.setWheelPowered(5,true);

   %obj.setWheelTire(0, jeepTire);
   %obj.setWheelTire(1, jeepTire);
   %obj.setWheelTire(2, jeepTire);
   %obj.setWheelTire(3, jeepTire);
   %obj.setWheelTire(4, jeepTire);
   %obj.setWheelTire(5, jeepTire);

   %obj.setWheelSpring(0, jeepSpring);
   %obj.setWheelSpring(1, jeepSpring);
   %obj.setWheelSpring(2, jeepSpring);
   %obj.setWheelSpring(3, jeepSpring);
   %obj.setWheelSpring(4, jeepSpring);
   %obj.setWheelSpring(5, jeepSpring);

   // turret
 %t = new AIPlayer()
 {
     dataBlock = MCTVMGPlayer;
 };
 MissionCleanup.add(%t);
 %obj.mountObject(%t, 15);
%obj.turret = %t;

%obj.creationTime = getSimTime();
%t.schedule(15,"rigTurret");
}
function Player::rigTurret(%obj)
{
   if(%obj.dataBlock !$= MCTVMGPlayer)
  return;

   if(!isObject(%obj))
  return;

   %parent = %obj.getObjectMount();
   if(!isObject(%parent))
  return;

   %obj.spawnBrick = %parent.spawnBrick;
   %obj.brickGroup = %parent.brickGroup;
}

function MCTVVehicle::onRemove(%this,%obj)
{
   if(isObject(%obj.turret))
  %obj.turret.delete();
}

function MCTVMGPlayer::onDriverLeave(%this,%obj)
{
   %obj.setTransform("0 0 0 0 0 0 0");
}
function MCTVMGPlayer::onDriverLeave(%this,%obj)
{
  
}
« Last Edit: June 29, 2011, 02:34:55 PM by Uxie »