// boat vehicle made by astro with help from many good resources :) //exec("rtb/server/scripts/vehicles/dinghy.cs"); // commandtoserver('hoverspawnspot'); to place a resetting boat datablock hoverVehicleData(dinghy) { spawnOffset = "0 0 6"; floatingGravMag = 1; category = "Vehicles"; shapeFile = "~/data/shapes/bricks/raft.dts"; computeCRC = true; renderWhenDestroyed = false; drag = 0.0; density = 0.3; mountPose[0] = sitting; numMountPoints = 3; cameraMaxDist = 8.0; cameraOffset = 0.75; cameraLag = 5.5; isProtectedMountPoint[0] = true; explosionDamage = 0.5; explosionRadius = 5.0; lightOnly = 1; maxDamage = 120; destroyedLevel = 120; isShielded = true; rechargeRate = 0.7; energyPerDamagePoint = 75; maxEnergy = 150; minJetEnergy = 15; jetEnergyDrain = 1.3; // Rigid Body mass = 5; bodyFriction = 0; bodyRestitution = 0.0; softImpactSpeed = 20; // Play SoftImpact Sound hardImpactSpeed = 28; // Play HardImpact Sound // Ground Impact Damage (uses DamageType::Ground) minImpactSpeed = 1; speedDamageScale = 0.010; // Object Impact Damage (uses DamageType::Impact) collDamageThresholdVel = 1; collDamageMultiplier = 0.030; dragForce = 1.9; // dragForce = 25 / 45.0; vertFactor = 0;//.125; floatingThrustFactor = 0.35;//0.35; mainThrustForce = 60; reverseThrustForce = 50; strafeThrustForce = 0; turboFactor = 1.5; brakingForce = 30; brakingActivationSpeed = 30; stabLenMin = 0; stabLenMax = 0.5; stabSpringConstant = 10; stabDampingConstant = 30; gyroDrag = 36; // 16 // gyroForce = 50 normalForce = 10; restorativeForce = 100; steeringForce = 30; rollForce = 7; pitchForce = 5; //dustEmitter = dinghyDamageEmitter; triggerDustHeight = 1.0; dustHeight = 1.0; //dustTrailEmitter = dinghyDamageEmitter; dustTrailOffset = "0.0 -1.0 0.5"; triggerTrailHeight = 2.0; dustTrailFreqMod = 15.0; // softSplashSoundVelocity = 10.0; mediumSplashSoundVelocity = 20.0; hardSplashSoundVelocity = 30.0; exitSplashSoundVelocity = 10.0; minMountDist = 4; damageEmitter[0] = dinghyDamageEmitter; //damageEmitter[1] = AssaultTankEmitter; //damageEmitter[2] = AssaultTankEmitter; damageEmitterOffset[0] = "0.0 -1.5 0.5 "; damageLevelTolerance[0] = 0.3; damageLevelTolerance[1] = 0.7; numDmgEmitterAreas = 2; splashEmitter[0] = playerFoamDropletsEmitter; //splashEmitter[1] = playerFoamEmitter; checkRadius = 8.5; observeParameters = "1 1 1"; collisionTol = 1; // Collision distance tolerance contactTol = 1; // Contact velocity tolerance shieldEffectScale = "0.9375 1.125 0.6"; minTrailSpeed = 1; // The speed your contrail shows up at. trailEmitter = dinghyDamageEmitter; forwardJetEmitter = dinghyDamageEmitter; }; function dinghy::onImpact(%this, %obj, %collidedObject, %vec, %vecLen) { } function dinghy::onAdd(%this,%obj) { // Enable Mount Points %obj.mountable = true; } function hoverVehicleData::create(%data, %team, %oldObj) { if(%oldObj $= "") { %obj = new hoverVehicle() { dataBlock = %data; respawn = "0"; }; } else { %obj = new hoverVehicle() { dataBlock = %data; respawn = "0"; mountable = %oldObj.mountable; disableMove = %oldObj.disableMove; resetPos = %oldObj.resetPos; deployed = %oldObj.deployed; respawnTime = %oldObj.respawnTime; marker = %oldObj; }; } %obj.mountable = true; return(%obj); } function servercmdhoverspawnspot(%client,%type) { if(%type$="") { %type="dinghy"; } //%pos = %client.player.getposition(); %pos = %client.player.gettransform(); %obj =new hoverVehicle() { dataBlock = %type; position = %pos; mountable = true; }; %obj.mountable = true; Schedule(1*1000,0,"vehiclereturner",%obj,%pos); } function vehiclereturner(%obj,%pos) { if(isobject(%obj)) { if(!%obj.getcontrollingclient()) { //%obj.setTransform(%pos@" 0 0 0"); %obj.setTransform(%pos); Schedule(60*1000,0,"vehiclereturner",%obj,%pos); } else { Schedule(120*1000,0,"vehiclereturner",%obj,%pos); } } }