mountImage
by Dave Freitag · in Torque Game Engine · 07/07/2009 (8:54 pm) · 6 replies
Well ok, i took the crossbow.cs and modified it as so:
When i walked over both my ammo, and weapon model, nothing happened.
At first i thought maybe the script was not executing, hence the
(this is after i made sure there are no errors pertaining to this file)
That worked out just fine. So i went searching on the forum, as i knew there was a terminal command to manually mount an image, but i forgot it.
I entered this into the terminal, and the image mounted successfully.
Also, nothing outputs into the terminal when i walk over both my ammo, and weapon DTS shapes.
So, my question would be, what could i have missed in my process that would cause this?
//-----------------------------------------------------------------------------
// Torque Game Engine
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// M16 weapon. This file contains all the items related to this weapon
// including explosions, ammo, the item and the weapon item image.
// These objects rely on the item & inventory support system defined
// in item.cs and inventory.cs
//-----------------------------------------------------------------------------
echo("#############M16 script loaded#############");
//-----------------------------------------------------------------------------
// Sounds profiles
datablock SFXProfile(M16ReloadSound)
{
filename = "~/data/sound/crossbow_reload";
description = AudioClose3d;
preload = true;
};
datablock SFXProfile(M16FireSound)
{
filename = "~/data/sound/relbow_mono_01";
description = AudioClose3d;
preload = true;
};
datablock SFXProfile(M16FireEmptySound)
{
filename = "~/data/sound/crossbow_firing_empty";
description = AudioClose3d;
preload = true;
};
datablock SFXProfile(M16ExplosionSound)
{
filename = "~/data/sound/explosion_mono_01";
description = AudioDefault3d;
preload = true;
};
//-----------------------------------------------------------------------------
// M16 bolt projectile splash
datablock ParticleData(M16SplashMist)
{
dragCoefficient = 2.0;
gravityCoefficient = -0.05;
inheritedVelFactor = 0.0;
constantAcceleration = 0.0;
lifetimeMS = 400;
lifetimeVarianceMS = 100;
useInvAlpha = false;
spinRandomMin = -90.0;
spinRandomMax = 500.0;
textureName = "~/data/shapes/crossbow/splash";
colors[0] = "0.7 0.8 1.0 1.0";
colors[1] = "0.7 0.8 1.0 0.5";
colors[2] = "0.7 0.8 1.0 0.0";
sizes[0] = 0.25;
sizes[1] = 0.25;
sizes[2] = 0.4;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(M16SplashMistEmitter)
{
ejectionPeriodMS = 5;
periodVarianceMS = 0;
ejectionVelocity = 3.0;
velocityVariance = 2.0;
ejectionOffset = 0.0;
thetaMin = 85;
thetaMax = 85;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvance = false;
lifetimeMS = 250;
particles = "M16SplashMist";
};
datablock ParticleData( M16SplashParticle )
{
dragCoefficient = 1;
gravityCoefficient = 0.2;
inheritedVelFactor = 0.2;
constantAcceleration = -0.0;
lifetimeMS = 600;
lifetimeVarianceMS = 0;
colors[0] = "0.7 0.8 1.0 1.0";
colors[1] = "0.7 0.8 1.0 0.5";
colors[2] = "0.7 0.8 1.0 0.0";
sizes[0] = 0.25;
sizes[1] = 0.25;
sizes[2] = 0.25;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData( M16SplashEmitter )
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 3;
velocityVariance = 1.0;
ejectionOffset = 0.0;
thetaMin = 60;
thetaMax = 80;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvance = false;
orientParticles = true;
lifetimeMS = 100;
particles = "M16SplashParticle";
};
datablock SplashData(M16Splash)
{
numSegments = 15;
ejectionFreq = 15;
ejectionAngle = 40;
ringLifetime = 0.5;
lifetimeMS = 300;
velocity = 4.0;
startRadius = 0.0;
acceleration = -3.0;
texWrap = 5.0;
texture = "~/data/shapes/crossbow/splash";
emitter[0] = M16SplashEmitter;
emitter[1] = M16SplashMistEmitter;
colors[0] = "0.7 0.8 1.0 0.0";
colors[1] = "0.7 0.8 1.0 0.3";
colors[2] = "0.7 0.8 1.0 0.7";
colors[3] = "0.7 0.8 1.0 0.0";
times[0] = 0.0;
times[1] = 0.4;
times[2] = 0.8;
times[3] = 1.0;
};
//-----------------------------------------------------------------------------
// M16 bolt projectile particles
datablock ParticleData(M16BoltParticle)
{
textureName = "~/data/shapes/particles/smoke";
dragCoefficient = 0.0;
gravityCoefficient = -0.1; // rises slowly
inheritedVelFactor = 0.0;
lifetimeMS = 150;
lifetimeVarianceMS = 10; // ...more or less
useInvAlpha = false;
spinRandomMin = -30.0;
spinRandomMax = 30.0;
colors[0] = "0.1 0.1 0.1 1.0";
colors[1] = "0.1 0.1 0.1 1.0";
colors[2] = "0.1 0.1 0.1 0";
sizes[0] = 0.075;
sizes[1] = 0.10;
sizes[2] = 0.125;
times[0] = 0.0;
times[1] = 0.3;
times[2] = 1.0;
};
datablock ParticleData(M16BubbleParticle)
{
textureName = "~/data/shapes/particles/bubble";
dragCoefficient = 0.0;
gravityCoefficient = -0.25; // rises slowly
inheritedVelFactor = 0.0;
constantAcceleration = 0.0;
lifetimeMS = 1500;
lifetimeVarianceMS = 600; // ...more or less
useInvAlpha = false;
spinRandomMin = -100.0;
spinRandomMax = 100.0;
colors[0] = "0.7 0.8 1.0 0.4";
colors[1] = "0.7 0.8 1.0 1.0";
colors[2] = "0.7 0.8 1.0 0.0";
sizes[0] = 0.1;
sizes[1] = 0.1;
sizes[2] = 0.1;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(M16BoltEmitter)
{
ejectionPeriodMS = 2;
periodVarianceMS = 0;
ejectionVelocity = 0.0;
velocityVariance = 0.0;
thetaMin = 0.0;
thetaMax = 90.0;
particles = M16BoltParticle;
};
datablock ParticleEmitterData(M16BoltBubbleEmitter)
{
ejectionPeriodMS = 9;
periodVarianceMS = 0;
ejectionVelocity = 1.0;
ejectionOffset = 0.1;
velocityVariance = 0.5;
thetaMin = 0.0;
thetaMax = 80.0;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = false;
particles = M16BubbleParticle;
};
//-----------------------------------------------------------------------------
// Explosion Debris
// Debris "spark" explosion
datablock ParticleData(M16DebrisSpark)
{
textureName = "~/data/shapes/particles/fire";
dragCoefficient = 0;
gravityCoefficient = 0.0;
windCoefficient = 0;
inheritedVelFactor = 0.5;
constantAcceleration = 0.0;
lifetimeMS = 500;
lifetimeVarianceMS = 50;
spinRandomMin = -90.0;
spinRandomMax = 90.0;
useInvAlpha = false;
colors[0] = "0.8 0.2 0 1.0";
colors[1] = "0.8 0.2 0 1.0";
colors[2] = "0 0 0 0.0";
sizes[0] = 0.1;
sizes[1] = 0.15;
sizes[2] = 0.05;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(M16DebrisSparkEmitter)
{
ejectionPeriodMS = 20;
periodVarianceMS = 0;
ejectionVelocity = 0.5;
velocityVariance = 0.25;
ejectionOffset = 0.0;
thetaMin = 0;
thetaMax = 90;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = false;
orientParticles = false;
lifetimeMS = 300;
particles = "M16DebrisSpark";
};
datablock ExplosionData(M16DebrisExplosion)
{
emitter[0] = M16DebrisSparkEmitter;
// Turned off..
shakeCamera = false;
impulseRadius = 0;
lightStartRadius = 0;
lightEndRadius = 0;
};
// Debris smoke trail
datablock ParticleData(M16DebrisTrail)
{
textureName = "~/data/shapes/particles/fire";
dragCoefficient = 1;
gravityCoefficient = 0;
inheritedVelFactor = 0;
windCoefficient = 0;
constantAcceleration = 0;
lifetimeMS = 800;
lifetimeVarianceMS = 100;
spinSpeed = 0;
spinRandomMin = -90.0;
spinRandomMax = 90.0;
useInvAlpha = true;
colors[0] = "0.8 0.3 0.0 1.0";
colors[1] = "0.1 0.1 0.1 0.7";
colors[2] = "0.1 0.1 0.1 0.0";
sizes[0] = 0.1;
sizes[1] = 0.15;
sizes[2] = 0.2;
times[0] = 0.1;
times[1] = 0.2;
times[2] = 1.0;
};
datablock ParticleEmitterData(M16DebrisTrailEmitter)
{
ejectionPeriodMS = 30;
periodVarianceMS = 0;
ejectionVelocity = 0.0;
velocityVariance = 0.0;
ejectionOffset = 0.0;
thetaMin = 170;
thetaMax = 180;
phiReferenceVel = 0;
phiVariance = 360;
//overrideAdvances = false;
//orientParticles = true;
lifetimeMS = 5000;
particles = "M16DebrisTrail";
};
// Debris object
datablock DebrisData(M16ExplosionDebris)
{
shapeFile = "~/data/shapes/crossbow/debris.dts";
emitters = "M16DebrisTrailEmitter";
explosion = M16DebrisExplosion;
elasticity = 0.6;
friction = 0.5;
numBounces = 1;
bounceVariance = 1;
explodeOnMaxBounce = true;
staticOnMaxBounce = false;
snapOnMaxBounce = false;
minSpinSpeed = 0;
maxSpinSpeed = 700;
render2D = false;
lifetime = 4;
lifetimeVariance = 0.4;
velocity = 5;
velocityVariance = 0.5;
fade = false;
useRadiusMass = true;
baseRadius = 0.3;
gravModifier = 0.5;
terminalVelocity = 6;
ignoreWater = true;
};
//-----------------------------------------------------------------------------
// Bolt Explosion
datablock ParticleData(M16ExplosionSmoke)
{
textureName = "~/data/shapes/particles/smoke";
dragCoeffiecient = 100.0;
gravityCoefficient = 0;
inheritedVelFactor = 0.25;
constantAcceleration = -0.30;
lifetimeMS = 1200;
lifetimeVarianceMS = 300;
useInvAlpha = true;
spinRandomMin = -80.0;
spinRandomMax = 80.0;
colors[0] = "0.56 0.36 0.26 1.0";
colors[1] = "0.2 0.2 0.2 1.0";
colors[2] = "0.0 0.0 0.0 0.0";
sizes[0] = 2.0;
sizes[1] = 1.25;
sizes[2] = 0.5;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleData(M16ExplosionBubble)
{
textureName = "~/data/shapes/particles/bubble";
dragCoeffiecient = 0.0;
gravityCoefficient = -0.25;
inheritedVelFactor = 0.0;
constantAcceleration = 0.0;
lifetimeMS = 1500;
lifetimeVarianceMS = 600;
useInvAlpha = false;
spinRandomMin = -100.0;
spinRandomMax = 100.0;
colors[0] = "0.7 0.8 1.0 0.4";
colors[1] = "0.7 0.8 1.0 0.4";
colors[2] = "0.7 0.8 1.0 0.0";
sizes[0] = 0.15;
sizes[1] = 0.15;
sizes[2] = 0.15;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(M16ExplosionSmokeEmitter)
{
ejectionPeriodMS = 10;
periodVarianceMS = 0;
ejectionVelocity = 4;
velocityVariance = 0.5;
thetaMin = 0.0;
thetaMax = 180.0;
lifetimeMS = 250;
particles = "M16ExplosionSmoke";
};
datablock ParticleEmitterData(M16ExplosionBubbleEmitter)
{
ejectionPeriodMS = 9;
periodVarianceMS = 0;
ejectionVelocity = 1;
ejectionOffset = 0.1;
velocityVariance = 0.5;
thetaMin = 0.0;
thetaMax = 80.0;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = false;
particles = "M16ExplosionBubble";
};
datablock ParticleData(M16ExplosionFire)
{
textureName = "~/data/shapes/particles/fire";
dragCoeffiecient = 100.0;
gravityCoefficient = 0;
inheritedVelFactor = 0.25;
constantAcceleration = 0.1;
lifetimeMS = 1200;
lifetimeVarianceMS = 300;
useInvAlpha = false;
spinRandomMin = -80.0;
spinRandomMax = 80.0;
colors[0] = "0.8 0.4 0 0.8";
colors[1] = "0.2 0.0 0 0.8";
colors[2] = "0.0 0.0 0.0 0.0";
sizes[0] = 0.75;
sizes[1] = 0.45;
sizes[2] = 0.25;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(M16ExplosionFireEmitter)
{
ejectionPeriodMS = 10;
periodVarianceMS = 0;
ejectionVelocity = 0.8;
velocityVariance = 0.5;
thetaMin = 0.0;
thetaMax = 180.0;
lifetimeMS = 250;
particles = "M16ExplosionFire";
};
datablock ParticleData(M16ExplosionSparks)
{
textureName = "~/data/shapes/particles/spark";
dragCoefficient = 1;
gravityCoefficient = 0.0;
inheritedVelFactor = 0.2;
constantAcceleration = 0.0;
lifetimeMS = 500;
lifetimeVarianceMS = 350;
colors[0] = "0.60 0.40 0.30 1.0";
colors[1] = "0.60 0.40 0.30 1.0";
colors[2] = "1.0 0.40 0.30 0.0";
sizes[0] = 0.125;
sizes[1] = 0.075;
sizes[2] = 0.075;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleData(M16ExplosionWaterSparks)
{
textureName = "~/data/shapes/particles/bubble";
dragCoefficient = 0;
gravityCoefficient = 0.0;
inheritedVelFactor = 0.2;
constantAcceleration = 0.0;
lifetimeMS = 500;
lifetimeVarianceMS = 350;
colors[0] = "0.4 0.4 1.0 1.0";
colors[1] = "0.4 0.4 1.0 1.0";
colors[2] = "0.4 0.4 1.0 0.0";
sizes[0] = 0.25;
sizes[1] = 0.25;
sizes[2] = 0.25;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(M16ExplosionSparkEmitter)
{
ejectionPeriodMS = 3;
periodVarianceMS = 0;
ejectionVelocity = 5;
velocityVariance = 1;
ejectionOffset = 0.0;
thetaMin = 0;
thetaMax = 180;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = false;
orientParticles = true;
lifetimeMS = 100;
particles = "M16ExplosionSparks";
};
datablock ParticleEmitterData(M16ExplosionWaterSparkEmitter)
{
ejectionPeriodMS = 3;
periodVarianceMS = 0;
ejectionVelocity = 4;
velocityVariance = 4;
ejectionOffset = 0.0;
thetaMin = 0;
thetaMax = 60;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = false;
orientParticles = true;
lifetimeMS = 200;
particles = "M16ExplosionWaterSparks";
};
datablock ExplosionData(M16SubExplosion1)
{
offset = 0;
emitter[0] = M16ExplosionSmokeEmitter;
emitter[1] = M16ExplosionSparkEmitter;
};
datablock ExplosionData(M16SubExplosion2)
{
offset = 1.0;
emitter[0] = M16ExplosionSmokeEmitter;
emitter[1] = M16ExplosionSparkEmitter;
};
datablock ExplosionData(M16SubWaterExplosion1)
{
delayMS = 100;
offset = 1.2;
playSpeed = 1.5;
emitter[0] = M16ExplosionBubbleEmitter;
emitter[1] = M16ExplosionWaterSparkEmitter;
sizes[0] = "0.375 0.375 0.375";
sizes[1] = "0.5 0.5 0.5";
sizes[2] = "0.25 0.25 0.25";
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ExplosionData(M16SubWaterExplosion2)
{
delayMS = 50;
offset = 1.2;
playSpeed = 0.75;
emitter[0] = M16ExplosionBubbleEmitter;
emitter[1] = M16ExplosionWaterSparkEmitter;
sizes[0] = "0.75 0.75 0.75";
sizes[1] = "0.75 0.75 0.75";
sizes[2] = "0.5 0.5 0.5";
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ExplosionData(M16Explosion)
{
soundProfile = M16ExplosionSound;
lifeTimeMS = 1200;
// Volume particles
particleEmitter = M16ExplosionFireEmitter;
particleDensity = 75;
particleRadius = 2;
// Point emission
emitter[0] = M16ExplosionSmokeEmitter;
emitter[1] = M16ExplosionSparkEmitter;
// Sub explosion objects
subExplosion[0] = M16SubExplosion1;
subExplosion[1] = M16SubExplosion2;
// Camera Shaking
shakeCamera = true;
camShakeFreq = "10.0 11.0 10.0";
camShakeAmp = "1.0 1.0 1.0";
camShakeDuration = 0.5;
camShakeRadius = 10.0;
// Exploding debris
debris = M16ExplosionDebris;
debrisThetaMin = 0;
debrisThetaMax = 60;
debrisPhiMin = 0;
debrisPhiMax = 360;
debrisNum = 6;
debrisNumVariance = 2;
debrisVelocity = 1;
debrisVelocityVariance = 0.5;
// Impulse
impulseRadius = 10;
impulseForce = 15;
// Dynamic light
lightStartRadius = 6;
lightEndRadius = 3;
lightStartColor = "0.5 0.5 0";
lightEndColor = "0 0 0";
};
datablock ExplosionData(M16WaterExplosion)
{
soundProfile = M16ExplosionSound;
// Volume particles
particleEmitter = M16ExplosionBubbleEmitter;
particleDensity = 375;
particleRadius = 2;
// Point emission
emitter[0] = M16ExplosionBubbleEmitter;
emitter[1] = M16ExplosionWaterSparkEmitter;
// Sub explosion objects
subExplosion[0] = M16SubWaterExplosion1;
subExplosion[1] = M16SubWaterExplosion2;
// Camera Shaking
shakeCamera = true;
camShakeFreq = "8.0 9.0 7.0";
camShakeAmp = "3.0 3.0 3.0";
camShakeDuration = 1.3;
camShakeRadius = 20.0;
// Exploding debris
debris = M16ExplosionDebris;
debrisThetaMin = 0;
debrisThetaMax = 60;
debrisPhiMin = 0;
debrisPhiMax = 360;
debrisNum = 6;
debrisNumVariance = 2;
debrisVelocity = 0.5;
debrisVelocityVariance = 0.2;
// Impulse
impulseRadius = 10;
impulseForce = 15;
// Dynamic light
lightStartRadius = 6;
lightEndRadius = 3;
lightStartColor = "0 0.5 0.5";
lightEndColor = "0 0 0";
};
//-----------------------------------------------------------------------------
// Projectile Object
datablock ProjectileData(M16Projectile)
{
projectileShapeName = "~/data/shapes/m16/projectile.dts";
directDamage = 15;
radiusDamage = 10;
damageRadius = 0.75;
areaImpulse = 2000;
explosion = M16Explosion;
waterExplosion = M16WaterExplosion;
particleEmitter = M16BoltEmitter;
particleWaterEmitter= M16BoltBubbleEmitter;
splash = M16Splash;
muzzleVelocity = 1000;
velInheritFactor = 0.3;
armingDelay = 0;
lifetime = 5000;
fadeDelay = 5000;
bounceElasticity = 0;
bounceFriction = 0;
isBallistic = false;
gravityMod = 0.80;
hasLight = true;
lightRadius = 1;
lightColor = "0.5 0.5 0.25";
hasWaterLight = true;
waterLightColor = "0 0.5 0.5";
};
function M16Projectile::onCollision(%this,%obj,%col,%fade,%pos,%normal)
{
// Apply damage to the object all shape base objects
if (%col.getType() & $TypeMasks::ShapeBaseObjectType)
%col.damage(%obj,%pos,%this.directDamage,"M16Bolt");
// Radius damage is a support scripts defined in radiusDamage.cs
// Push the contact point away from the contact surface slightly
// along the contact normal to derive the explosion center. -dbs
radiusDamage(%obj, %pos, %this.damageRadius, %this.radiusDamage, "Radius", %this.areaImpulse);
}
//-----------------------------------------------------------------------------
// Ammo Item
datablock ItemData(M16Ammo)
{
// Mission editor category
category = "Ammo";
// Add the Ammo namespace as a parent. The ammo namespace provides
// common ammo related functions and hooks into the inventory system.
className = "Ammo";
// Basic Item properties
shapeFile = "~/data/shapes/crossbow/ammo.dts";
mass = 1;
elasticity = 0.2;
friction = 0.6;
// Dynamic properties defined by the scripts
pickUpName = "m16ammo";
maxInventory = 500;
};
//--------------------------------------------------------------------------
// Weapon Item. This is the item that exists in the world, i.e. when it's
// been dropped, thrown or is acting as re-spawnable item. When the weapon
// is mounted onto a shape, the M16Image is used.
datablock ItemData(M16)
{
// Mission editor category
category = "Weapon";
// Hook into Item Weapon class hierarchy. The weapon namespace
// provides common weapon handling functions in addition to hooks
// into the inventory system.
className = "Weapon";
// Basic Item properties
shapeFile = "~/data/shapes/m16/m16.dts";
mass = 1;
elasticity = 0.2;
friction = 0.6;
emap = true;
// Dynamic properties defined by the scripts
pickUpName = "an M16";
image = M16Image;
};
//--------------------------------------------------------------------------
// M16 image which does all the work. Images do not normally exist in
// the world, they can only be mounted on ShapeBase objects.
datablock ShapeBaseImageData(M16Image)
{
// Basic Item properties
shapeFile = "~/data/shapes/m16/m16.dts";
emap = true;
// Specify mount point & offset for 3rd person, and eye offset
// for first person rendering.
mountPoint = 0;
eyeOffset = "0.1 0.4 -0.6";
// When firing from a point offset from the eye, muzzle correction
// will adjust the muzzle vector to point to the eye LOS point.
// Since this weapon doesn't actually fire from the muzzle point,
// we need to turn this off.
correctMuzzleVector = false;
// Add the WeaponImage namespace as a parent, WeaponImage namespace
// provides some hooks into the inventory system.
className = "WeaponImage";
// Projectile && Ammo.
item = M16;
ammo = M16Ammo;
projectile = M16Projectile;
projectileType = Projectile;
// Images have a state system which controls how the animations
// are run, which sounds are played, script callbacks, etc. This
// state system is downloaded to the client so that clients can
// predict state changes and animate accordingly. The following
// system supports basic ready->fire->reload transitions as
// well as a no-ammo->dryfire idle state.
// Initial start up state
stateName[0] = "Preactivate";
stateTransitionOnLoaded[0] = "Activate";
stateTransitionOnNoAmmo[0] = "NoAmmo";
// Activating the gun. Called when the weapon is first
// mounted and there is ammo.
stateName[1] = "Activate";
stateTransitionOnTimeout[1] = "Ready";
stateTimeoutValue[1] = 0.6;
stateSequence[1] = "Activate";
// Ready to fire, just waiting for the trigger
stateName[2] = "Ready";
stateTransitionOnNoAmmo[2] = "NoAmmo";
stateTransitionOnTriggerDown[2] = "Fire";
// Fire the weapon. Calls the fire script which does
// the actual work.
stateName[3] = "Fire";
stateTransitionOnTimeout[3] = "Reload";
stateTimeoutValue[3] = 0.2;
stateFire[3] = true;
stateRecoil[3] = LightRecoil;
stateAllowImageChange[3] = false;
stateSequence[3] = "Fire";
stateScript[3] = "onFire";
stateSound[3] = M16FireSound;
// Play the relead animation, and transition into
stateName[4] = "Reload";
stateTransitionOnNoAmmo[4] = "NoAmmo";
stateTransitionOnTimeout[4] = "Ready";
stateTimeoutValue[4] = 0.1;
stateAllowImageChange[4] = false;
stateSequence[4] = "Reload";
stateEjectShell[4] = true;
stateSound[4] = M16ReloadSound;
// No ammo in the weapon, just idle until something
// shows up. Play the dry fire sound if the trigger is
// pulled.
stateName[5] = "NoAmmo";
stateTransitionOnAmmo[5] = "Reload";
stateSequence[5] = "NoAmmo";
stateTransitionOnTriggerDown[5] = "DryFire";
// No ammo dry fire
stateName[6] = "DryFire";
stateTimeoutValue[6] = 1.0;
stateTransitionOnTimeout[6] = "NoAmmo";
stateSound[6] = M16FireEmptySound;
};
//-----------------------------------------------------------------------------
function M16Image::onFire(%this, %obj, %slot)
{
%projectile = %this.projectile;
// Decrement inventory ammo. The image's ammo state is update
// automatically by the ammo inventory hooks.
%obj.decInventory(%this.ammo,1);
// Determine initial projectile velocity based on the
// gun's muzzle point and the object's current velocity
%muzzleVector = %obj.getMuzzleVector(%slot);
%objectVelocity = %obj.getVelocity();
%muzzleVelocity = VectorAdd(
VectorScale(%muzzleVector, %projectile.muzzleVelocity),
VectorScale(%objectVelocity, %projectile.velInheritFactor));
// Create the projectile object
%p = new (%this.projectileType)() {
dataBlock = %projectile;
initialVelocity = %muzzleVelocity;
initialPosition = %obj.getMuzzlePoint(%slot);
sourceObject = %obj;
sourceSlot = %slot;
client = %obj.client;
};
MissionCleanup.add(%p);
return %p;
}When i walked over both my ammo, and weapon model, nothing happened.
At first i thought maybe the script was not executing, hence the
echo("#############M16 script loaded#############");(this is after i made sure there are no errors pertaining to this file)
That worked out just fine. So i went searching on the forum, as i knew there was a terminal command to manually mount an image, but i forgot it.
LocalClientConnection.player.mountImage(M16Image,0);
I entered this into the terminal, and the image mounted successfully.
Also, nothing outputs into the terminal when i walk over both my ammo, and weapon DTS shapes.
So, my question would be, what could i have missed in my process that would cause this?
#2
07/07/2009 (10:28 pm)
Great that worked, any advice on creating a key mapping to switch through the weapons in my inventory?
#3
moveMap.bindCmd(keyboard, "h", "commandToServer('use',"HealthKit");", "");
moveMap.bindCmd(keyboard, "1", "commandToServer('use',"sword");", "");
moveMap.bindCmd(keyboard, "2", "commandToServer('use',"m4");", "");
moveMap.bindCmd(keyboard, "3", "commandToServer('use',"ump45");", "");
moveMap.bindCmd(keyboard, "4", "commandToServer('use',"m249");", "");
moveMap.bindCmd(keyboard, "5", "commandToServer('use',"psgrifle");", "");
moveMap.bindCmd(keyboard, "6", "commandToServer('use',"rocketlauncher");", "");
But now I am using the MG Starter Kit as my Base scripts which worked with my already custom core .exe file, and the MG Starter Kit uses a mousescroll weapon switching system. (which you could check out for referance as the MG Starter Kit is a completely free resource)
www.garagegames.com/community/blogs/view/11876
07/07/2009 (11:34 pm)
In my older engine I used the stock method of switching weapons ie.moveMap.bindCmd(keyboard, "h", "commandToServer('use',"HealthKit");", "");
moveMap.bindCmd(keyboard, "1", "commandToServer('use',"sword");", "");
moveMap.bindCmd(keyboard, "2", "commandToServer('use',"m4");", "");
moveMap.bindCmd(keyboard, "3", "commandToServer('use',"ump45");", "");
moveMap.bindCmd(keyboard, "4", "commandToServer('use',"m249");", "");
moveMap.bindCmd(keyboard, "5", "commandToServer('use',"psgrifle");", "");
moveMap.bindCmd(keyboard, "6", "commandToServer('use',"rocketlauncher");", "");
But now I am using the MG Starter Kit as my Base scripts which worked with my already custom core .exe file, and the MG Starter Kit uses a mousescroll weapon switching system. (which you could check out for referance as the MG Starter Kit is a completely free resource)
www.garagegames.com/community/blogs/view/11876
#4
What do i need to do for my M16 to show up in the first person view?
07/08/2009 (4:11 pm)
So, now everything works, the only problem now is that in the first person camera view the M16 does not appear like the crossbow would. I checked to see if it could be the actual position of the M16 on the body, but they are the same relative height. What do i need to do for my M16 to show up in the first person view?
#5
ie. Line #830 in your M16.cs (here is some more example code)
mountPoint = 0;
offset = "0 0 0"; // L/R - F/B - T/B
rotation = "1 0 0 0";
//1st val=left(-)/right(+), 2nd val=back(-)/fore(+), 3rd val=down(-)/up(+)
eyeOffset = "0 0 0";
eyeRotation = "1 0 0 0";
useEyeOffset = false;
firstPerson = true;
P.S. My example is made to make sure the weapon only stays in the players hands, and will not show properly on your FirstPerson screen without heavy modification.
Edit: I would try messing with the eyeOffset(not sure) and/or Offset values and see which one gets the results you need.
07/08/2009 (4:17 pm)
You'll have to tweak around in your (M16Image) datablock.ie. Line #830 in your M16.cs (here is some more example code)
mountPoint = 0;
offset = "0 0 0"; // L/R - F/B - T/B
rotation = "1 0 0 0";
//1st val=left(-)/right(+), 2nd val=back(-)/fore(+), 3rd val=down(-)/up(+)
eyeOffset = "0 0 0";
eyeRotation = "1 0 0 0";
useEyeOffset = false;
firstPerson = true;
P.S. My example is made to make sure the weapon only stays in the players hands, and will not show properly on your FirstPerson screen without heavy modification.
Edit: I would try messing with the eyeOffset(not sure) and/or Offset values and see which one gets the results you need.
#6
Thanks again =]
07/08/2009 (4:47 pm)
Thanks, again you code helped out, its not in the view as i would like it, but it's a startThanks again =]
Torque Owner CSMP
MP Studios
Add:
maxInv[M16] = 1;
maxInv[M16Ammo] = 30;
About line #669 in the player.cs file of the starter.fps:
// Allowable Inventory Items
maxInv[BulletAmmo] = 20;
maxInv[HealthKit] = 1;
maxInv[RifleAmmo] = 100;
maxInv[CrossbowAmmo] = 50;
maxInv[Crossbow] = 1;
maxInv[Rifle] = 1;