Author Topic: My Weapon does this after animation.  (Read 1440 times)

After I animated my pistols reload, It does this

I have tryed reanimating 3 times, and  re-scripting it twice, Here is the most current code I used and if you need it I will upload the .blend
I am also using blender 2.49b (Please dont tell me to use the new one, Because I don't want to deal with its problems and i'm waiting for a stable release) Thanks.
Code: [Select]
//TenMM.cs

//audio
datablock AudioProfile(TenMMShot1Sound)
{
   filename    = "./wpn_10mmfire_2d_03.wav";
   description = AudioClose3d;
   preload = true;
};
datablock AudioProfile(bulletHitSound)
{
   filename    = "./bulletHit.wav";
   description = AudioClose3d;
   preload = true;
};


//shell
datablock DebrisData(TenMMShellDebris)
{
shapeFile = "./TenMMShell.dts";
lifetime = 2.0;
minSpinSpeed = -400.0;
maxSpinSpeed = 200.0;
elasticity = 0.5;
friction = 0.2;
numBounces = 3;
staticOnMaxBounce = true;
snapOnMaxBounce = false;
fade = true;

gravModifier = 2;
};


//muzzle flash effects
datablock ParticleData(TenMMFlashParticle)
{
dragCoefficient      = 3;
gravityCoefficient   = -0.5;
inheritedVelFactor   = 0.2;
constantAcceleration = 0.0;
lifetimeMS           = 25;
lifetimeVarianceMS   = 15;
textureName          = "base/data/particles/star1";
spinSpeed = 10.0;
spinRandomMin = -500.0;
spinRandomMax = 500.0;
colors[0]     = "0.9 0.9 0.0 0.9";
colors[1]     = "0.9 0.5 0.0 0.0";
sizes[0]      = 0.5;
sizes[1]      = 1.0;

useInvAlpha = false;
};
datablock ParticleEmitterData(TenMMFlashEmitter)
{
   ejectionPeriodMS = 3;
   periodVarianceMS = 0;
   ejectionVelocity = 1.0;
   velocityVariance = 1.0;
   ejectionOffset   = 0.0;
   thetaMin         = 0;
   thetaMax         = 90;
   phiReferenceVel  = 0;
   phiVariance      = 360;
   overrideAdvance = false;
   particles = "TenMMFlashParticle";

   uiName = "TenMM Flash";
};

datablock ParticleData(TenMMSmokeParticle)
{
dragCoefficient      = 3;
gravityCoefficient   = -0.5;
inheritedVelFactor   = 0.2;
constantAcceleration = 0.0;
lifetimeMS           = 525;
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.9";
colors[1]     = "0.5 0.5 0.5 0.0";
sizes[0]      = 0.15;
sizes[1]      = 0.15;

useInvAlpha = false;
};
datablock ParticleEmitterData(TenMMSmokeEmitter)
{
   ejectionPeriodMS = 3;
   periodVarianceMS = 0;
   ejectionVelocity = 1.0;
   velocityVariance = 1.0;
   ejectionOffset   = 0.0;
   thetaMin         = 0;
   thetaMax         = 90;
   phiReferenceVel  = 0;
   phiVariance      = 360;
   overrideAdvance = false;
   particles = "TenMMSmokeParticle";

   uiName = "TenMM Smoke";
};


datablock ParticleData(TenMMExplosionParticle)
{
dragCoefficient      = 8;
gravityCoefficient   = 1;
inheritedVelFactor   = 0.2;
constantAcceleration = 0.0;
lifetimeMS           = 700;
lifetimeVarianceMS   = 400;
textureName          = "base/data/particles/cloud";
spinSpeed = 10.0;
spinRandomMin = -50.0;
spinRandomMax = 50.0;
colors[0]     = "0.9 0.9 0.9 0.3";
colors[1]     = "0.9 0.5 0.6 0.0";
sizes[0]      = 0.25;
sizes[1]      = 0.75;

useInvAlpha = true;
};
datablock ParticleEmitterData(TenMMExplosionEmitter)
{
   ejectionPeriodMS = 1;
   periodVarianceMS = 0;
   ejectionVelocity = 2;
   velocityVariance = 1.0;
   ejectionOffset   = 0.0;
   thetaMin         = 89;
   thetaMax         = 90;
   phiReferenceVel  = 0;
   phiVariance      = 360;
   overrideAdvance = false;
   particles = "TenMMExplosionParticle";

   useEmitterColors = true;
   uiName = "TenMM Hit Dust";
};


datablock ParticleData(TenMMExplosionRingParticle)
{
dragCoefficient      = 8;
gravityCoefficient   = -0.5;
inheritedVelFactor   = 0.2;
constantAcceleration = 0.0;
lifetimeMS           = 50;
lifetimeVarianceMS   = 35;
textureName          = "base/data/particles/star1";
spinSpeed = 500.0;
spinRandomMin = -500.0;
spinRandomMax = 500.0;
colors[0]     = "1 1 0.0 0.9";
colors[1]     = "0.9 0.0 0.0 0.0";
sizes[0]      = 1;
sizes[1]      = 0;

useInvAlpha = false;
};
datablock ParticleEmitterData(TenMMExplosionRingEmitter)
{
lifeTimeMS = 50;

   ejectionPeriodMS = 3;
   periodVarianceMS = 0;
   ejectionVelocity = 0;
   velocityVariance = 0.0;
   ejectionOffset   = 0.0;
   thetaMin         = 89;
   thetaMax         = 90;
   phiReferenceVel  = 0;
   phiVariance      = 360;
   overrideAdvance = false;
   particles = "TenMMExplosionRingParticle";

   useEmitterColors = true;
   uiName = "TenMM Hit Flash";
};

datablock ExplosionData(TenMMExplosion)
{
   //explosionShape = "";
soundProfile = bulletHitSound;

   lifeTimeMS = 150;

   particleEmitter = TenMMExplosionEmitter;
   particleDensity = 5;
   particleRadius = 0.2;

   emitter[0] = TenMMExplosionRingEmitter;

   faceViewer     = true;
   explosionScale = "1 1 1";

   shakeCamera = false;
   camShakeFreq = "10.0 11.0 10.0";
   camShakeAmp = "1.0 1.0 1.0";
   camShakeDuration = 0.5;
   camShakeRadius = 10.0;

   // Dynamic light
   lightStartRadius = 0;
   lightEndRadius = 2;
   lightStartColor = "0.3 0.6 0.7";
   lightEndColor = "0 0 0";
};


AddDamageType("TenMM",   '<bitmap:add-ons/Weapon_TenMM/CI_TenMM> %1',    '%2 <bitmap:add-ons/Weapon_TenMM/CI_TenMM> %1',0.2,1);
datablock ProjectileData(TenMMProjectile)
{
   projectileShapeName = "./bullet.dts";
   directDamage        = 30;
   directDamageType    = $DamageType::TenMM;
   radiusDamageType    = $DamageType::TenMM;

   brickExplosionRadius = 0;
   brickExplosionImpact = true;          //destroy a brick if we hit it directly?
   brickExplosionForce  = 10;
   brickExplosionMaxVolume = 1;          //max volume of bricks that we can destroy
   brickExplosionMaxVolumeFloating = 2;  //max volume of bricks that we can destroy if they aren't connected to the ground

   impactImpulse      = 400;
   verticalImpulse   = 400;
   explosion           = TenMMExplosion;
   particleEmitter     = ""; //bulletTrailEmitter;

   muzzleVelocity      = 90;
   velInheritFactor    = 1;

   armingDelay         = 00;
   lifetime            = 4000;
   fadeDelay           = 3500;
   bounceElasticity    = 0.5;
   bounceFriction      = 0.20;
   isBallistic         = false;
   gravityMod = 0.0;

   hasLight    = false;
   lightRadius = 3.0;
   lightColor  = "0 0 0.5";

   uiName = "TenMM Bullet";
};

//////////
// item //
//////////
datablock ItemData(TenMMItem)
{
category = "Weapon";  // Mission editor category
className = "Weapon"; // For inventory system

// Basic Item Properties
shapeFile = "./10mm.dts";
rotate = false;
mass = 1;
density = 0.2;
elasticity = 0.2;
friction = 0.6;
emap = true;

//gui stuff
uiName = "TenMM";
iconName = "./icon_TenMM";
doColorShift = true;
colorShiftColor = "0.25 0.25 0.25 1.000";

// Dynamic properties defined by the scripts
image = TenMMImage;
canDrop = true;
};

////////////////
//weapon image//
////////////////
datablock ShapeBaseImageData(TenMMImage)
{
   // Basic Item properties
   shapeFile = "./10mm.dts";
   emap = true;

   // Specify mount point & offset for 3rd person, and eye offset
   // for first person rendering.
   mountPoint = 0;
   offset = "0 0 0";
   eyeOffset = 0; //"0.7 1.2 -0.5";
   rotation = eulerToMatrix( "0 0 0" );

   // 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 = true;

   // Add the WeaponImage namespace as a parent, WeaponImage namespace
   // provides some hooks into the inventory system.
   className = "WeaponImage";

   // Projectile && Ammo.
   item = BowItem;
   ammo = " ";
   projectile = TenMMProjectile;
   projectileType = Projectile;

casing = TenMMShellDebris;
shellExitDir        = "1.0 -1.3 1.0";
shellExitOffset     = "0 0 0";
shellExitVariance   = 15.0;
shellVelocity       = 7.0;

   //melee particles shoot from eye node for consistancy
   melee = false;
   //raise your arm up or not
   armReady = true;

   doColorShift = true;
   colorShiftColor = TenMMItem.colorShiftColor;//"0.400 0.196 0 1.000";

   //casing = " ";

   // 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]                     = "Activate";
stateTimeoutValue[0]             = 0.15;
stateTransitionOnTimeout[0]       = "LoadCheckA";
stateSound[0] = weaponSwitchSound;

stateName[1]                     = "Ready";
stateTransitionOnNoAmmo[1]        = "Reload";
stateTransitionOnTriggerDown[1]  = "Fire";
stateAllowImageChange[1]         = true;

stateName[2]                    = "Fire";
stateTransitionOnTimeout[2]     = "Delay";
stateTimeoutValue[2]            = 0.14;
stateFire[2]                    = true;
stateAllowImageChange[2]        = false;
stateSequence[2]                = "Fire";
stateScript[2]                  = "onFire";
stateWaitForTimeout[2] = true;
stateEmitter[2] = TenMMFlashEmitter;
stateEmitterTime[2] = 0.05;
stateEmitterNode[2] = "muzzleNode";
stateSound[2] = TenMMShot1Sound;
stateEjectShell[2]       = true;

stateName[3] = "Delay";
stateTransitionOnTimeout[3]      = "FireLoadCheckA";
stateTimeoutValue[3]            = 0.09;
stateEmitter[3] = gunSmokeEmitter;
stateEmitterTime[3] = 0.09;
stateEmitterNode[3] = "muzzleNode";

//Torque switches states instantly if there is an ammo/noammo state, regardless of stateWaitForTimeout

stateName[4] = "LoadCheckA";
stateScript[4] = "onLoadCheck";
stateTimeoutValue[4] = 0.01;
stateTransitionOnTimeout[4] = "LoadCheckB";

stateName[5] = "LoadCheckB";
stateTransitionOnAmmo[5] = "Ready";
stateTransitionOnNoAmmo[5] = "ReloadWait";

stateName[6] = "ReloadWait";
stateTimeoutValue[6] = 0.3;
stateTransitionOnTimeout[6] = "Reload";
stateWaitForTimeout[6] = true;

stateName[7] = "Reload";
stateTimeoutValue[7] = 0.6;
stateScript[7] = "onReloadStart";
stateTransitionOnTimeout[7] = "ReloadB";
stateWaitForTimeout[7] = true;
StateSequence[7] = "ClipOut";
stateSound[7] = AK47ClipOutSound;

stateName[8] = "ReloadB";
stateTimeoutValue[8] = 1.4;
stateTransitionOnTimeout[8] = "Reloaded";
stateWaitForTimeout[8] = true;
StateSequence[8] = "ClipIn";
stateSound[8] = AK47ClipInSound;

stateName[9] = "Reloaded";
stateTimeoutValue[9] = 0.5;
stateScript[9] = "onReloaded";
stateTransitionOnTimeout[9] = "Ready";

stateName[10] = "Smoke";
stateEmitter[10] = gunSmokeEmitter;
stateEmitterTime[10] = 0.3;
stateEmitterNode[10] = "muzzleNode";
stateTimeoutValue[10] = 0.2;
stateTransitionOnTimeout[10] = "Ready";
stateTransitionOnTriggerDown[10] = "Fire";

stateName[11] = "ReloadSmoke";
stateEmitter[11] = gunSmokeEmitter;
stateEmitterTime[11] = 0.3;
stateEmitterNode[11] = "muzzleNode";
stateTimeoutValue[11] = 0.2;
stateTransitionOnTimeout[11] = "Reload";

stateName[12] = "FireLoadCheckA";
stateScript[12] = "onLoadCheck";
stateTimeoutValue[12] = 0.01;
stateTransitionOnTimeout[12] = "FireLoadCheckB";

stateName[13] = "FireLoadCheckB";
stateTransitionOnAmmo[13] = "Smoke";
stateTransitionOnNoAmmo[13] = "ReloadSmoke";
};

function TenMMImage::onFire(%this,%obj,%slot)
{
if(%obj.getDamagePercent() < 1.0)
%obj.toolAmmo[%obj.currTool]--;
Parent::onFire(%this,%obj,%slot);
}

function TenMMImage::onLoadCheck(%this,%obj,%slot)
{
if(%obj.toolAmmo[%obj.currTool] <= 0)
%obj.setImageAmmo(%slot,0);
else
%obj.setImageAmmo(%slot,1);
}

function TenMMImage::onReloaded(%this,%obj,%slot)
{
%obj.toolAmmo[%obj.currTool] = 40;
%obj.setImageAmmo(%slot,1);
}
« Last Edit: April 27, 2016, 11:23:30 PM by SuperFlaminninja³ »

this has nothing to do with your code, only your model animations. post the blend files please.

this has nothing to do with your code, only your model animations. post the blend files please.
Here http://www.justfilehosting.space/download.php?f=bvhun

I don't mean to rush anyone, But I rlly need help on this, I'm stumped

try moving the offset and making hands invisible while it's equipped

your armature for the slider is rotated -90deg in the object mode rather than the edit mode
select the armature and press CTRL A and click rotation
« Last Edit: May 02, 2016, 12:23:11 PM by Swollow »

your armature for the slider is rotated -90deg in the object mode rather than the edit mode
select the armature and press CTRL A and click rotation
thanks, Will try tomorrow.