Author Topic: Reloading does not work  (Read 595 times)

I am having dear trouble with reloading. I've searched solutions, looked at Support_AmmoGuns, basically a lot. I am not familiar since this is my first time using ammo.
Quote
datablock AudioProfile(vectorFireSound)
{
  filename = "./Vectorfire.wav";
  description = AudioClosest3d;
  preload = true;
};

datablock ParticleData(vectorFlashParticle)
{
  dragCoefficient = 0;
  gravityCoefficient = 0;
  inheritedVelFactor = 1;
  constantAcceleration = 0;
  lifetimeMS = 30;
  lifetimeVarianceMS = 0;
  textureName = "base/data/particles/cloud";
  spinSpeed = 50;
  spinRandomMin = -500;
  spinRandomMax = 500;
  colors[0] = "1 1 1 1";
  colors[1] = "0.4 0.4 0.4 0.5";
  colors[2] = "0.2 0.2 0.2 0";
  sizes[0] = 0.1;
  sizes[1] = 0.2;
  sizes[2] = 0;
  times[9] = 0;
  times[1] = 0.3;
  times[2] = 1;
  useInvAlpha = false;
};

datablock ParticleEmitterData(vectorFlashEmitter)
{
  uiName = "";
  ejectionPeriodMS = 3;
  periodVarianceMS = 0;
  ejectionVelocity = 50;
  velocityVariance = 0;
  ejectionOffset = 0;
  thetaMin = 0;
  thetaMax = 10;
  phiReferenceVel = 0;
  phiVariance = 360;
  overrideAdvance = false;
  particles = "vectorFlashParticle";
};
datablock ParticleData(vectorSmokeParticle)
{
        dragCoefficient      = 3;
        gravityCoefficient   = -0.5;
        inheritedVelFactor   = 0.2;
        constantAcceleration = 0.0;
        lifetimeMS           = 525;
        lifetimeVarianceMS   = 55;
        textureName          = "base/data/particles/star1"; //this was a fail but ended up being a cool spark effect
        spinSpeed                = 10.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]      = 0.15;
        sizes[1]      = 0.15;

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

   uiName = "Vector Smoke";
};

datablock ExplosionData(VectorExplosion)
{
  lifeTimeMS = 50;
  emitter[0] = vectorSmokeEmitter;
  faceViewer = true;
  explosionScale = "1 1 1";
  shakeCamera = true;
  camShakeFreq = "5 5 5";
  camShakeAmp = "1 1 1";
  camShakeDuration = 0.5;
  camShakeRadius = 1;
};

//### Projectile

AddDamageType("vector",'<bitmap:Add-ons/Weapon_Tacticalweps/CI_vector> %1','%2 <bitmap:Add-ons/Weapon_Tacticalweps/CI_vector> %1',0.2,1);

datablock ProjectileData(VectorProjectile)
{
   projectileShapeName = "Add-ons/Weapon_Gun/bullet.dts";
   directDamage        = 16;
   directDamageType    = $DamageType::vector;
//   radiusDamageType    = $DamageType::vector;

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

   impactImpulse             = 0;
   verticalImpulse          = 0;
   explosion           = VectorExplosion;
   particleEmitter     = ""; //bulletTrailEmitter;

   muzzleVelocity      = 90;
   velInheritFactor    = 1;

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

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

   uiName = "Vector Bullet";
};

//### Item

datablock ItemData(vectorItem)
{
  uiName = "TDi Vector Supressed"; //I be showin this to ma server
  iconName = "";
  image = vectorImage;
  category = Weapon;
  className = Weapon;
  shapeFile = "./Vector.dts";
  mass = 1;
  density = 0.2;
  elasticity = 0;
  friction = 0.6;
  emap = true;
  doColorShift = true;
  colorShiftColor = "1 1 1 1";
  canDrop = true;
   maxAmmo = 30; //Vector y must u be shooting only once ;c
   canReload = 1;
};

//### Item Image

datablock shapeBaseImageData(vectorImage)
{
  shapeFile = "./Vector.dts";
  emap = true;
  correctMuzzleVector = true;
  className = "WeaponImage";
  item = bowItem;
  ammo = "";
  casing = gunShellDebris;
   shellExitDir        = "0.0 -5.0 -10.0";
   shellExitOffset     = "0 -10 -5";
   shellExitVariance   = 15.0;   
   shellVelocity       = 1.0;
  melee = false;
  doReaction = false;
  armReady = true;
  doColorShift = true;
  colorShiftColor = "1 1 1 1";
 
     className = "WeaponImage";
   // Projectile && Ammo.
   item = VectorItem;
   ammo = " ";
   projectile = VectorProjectile;
   projectileType = Projectile;
   casing = gunShellDebris;
   shellExitDir        = "1.0 -0.1 1.0";
   shellExitOffset     = "0 0 0";
   shellExitVariance   = 10.0;
   shellVelocity       = 5.0;

  stateName[0]= "Activate";
stateTimeoutValue[0]= 0.3;
stateWaitForTimeout[0]= true;
stateTransitionOnTimeout[0]= "LoadCheckA";
stateSound[0]= weaponSwitchSound;

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

stateName[2]                    = "Fire";
stateTransitionOnTimeout[2]     = "FireLoadCheckA";
stateTimeoutValue[2]            = 0.06;
stateFire[2]                    = true;
stateAllowImageChange[2]        = false;
stateSequence[2]= "Fire";
stateScript[2]= "onFire";
stateWaitForTimeout[2]= true;
stateEmitter[2]= VectorFlashEmitter;
stateEmitterTime[2]= 0.06;
stateEmitterNode[2]= "muzzleNode";
stateSound[2]= vectorfireSound;

        stateName[4]                                = "LoadCheckA";
        stateScript[4]                                = "onLoadCheck";
        stateTimeoutValue[4]                        = 0.01;
        stateTransitionOnTimeout[4]                = "LoadCheckB";
       
        stateName[5]                                = "LoadCheckB";
        stateTransitionOnAmmo[5]                = "Ready";
        stateTransitionOnNoAmmo[5]                = "Reload";

        stateName[6]                                = "Reload";
        stateTimeoutValue[6]                        = 0.6;
        stateScript[6]                                = "onReloadStart";
        stateTransitionOnTimeout[6]                = "Wait";
        stateWaitForTimeout[6]                        = true;
        stateSound[6]                                = Block_MoveBrick_Sound;
       
        stateName[7]                                = "Wait";
        stateTimeoutValue[7]                        = 0.4;
        stateScript[7]                                = "onReloaded";
        stateTransitionOnTimeout[7]                = "Ready";
        stateSound[7]                                = Block_PlantBrick_Sound;
       
        stateName[8]                                = "FireLoadCheckA";
        stateScript[8]                                = "onLoadCheck";
        stateTimeoutValue[8]                        = 0.01;
        stateTransitionOnTimeout[8]                = "FireLoadCheckB";
       
        stateName[9]                                = "FireLoadCheckB";
        stateTransitionOnAmmo[9]                = "Smoke";
        stateTransitionOnNoAmmo[9]                = "ReloadSmoke";
       
        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";
};

function vectorImage::onFire(%this,%obj,%slot)
{
        Parent::onFire(%this,%obj,%slot);
        %obj.playThread(2, plant);
        %obj.toolAmmo[%obj.currTool]--;
}

function vectorImage::onReloadStart(%this,%obj,%slot)
{
        %obj.playThread(2, shiftLeft);
}

function vectorImage::onReloaded(%this,%obj,%slot)
{
        %obj.playThread(2, shiftAway);
       
        %obj.toolAmmo[%obj.currTool] = %this.item.maxAmmo;
        %obj.setImageAmmo(%slot,1);
}

function vectorImage::onUnMount(%this,%obj,%slot)
{
        %obj.playThread(2, root);
}

function vectorImage::onFire(%this,%obj,%slot)
{


        %projectile = %this.projectile;
        %spread = 0.0010;
        %shellcount = 1;

        for(%shell=0; %shell<%shellcount; %shell++)
        {
                %vector = %obj.getMuzzleVector(%slot);
                %objectVelocity = %obj.getVelocity();
                %vector1 = VectorScale(%vector, %projectile.muzzleVelocity);
                %vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor);
                %velocity = VectorAdd(%vector1,%vector2);
                %x = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
                %y = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
                %z = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
                %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z);
                %velocity = MatrixMulVector(%mat, %velocity);

                %p = new (%this.projectileType)()
                {
                        dataBlock = %projectile;
                        initialVelocity = %velocity;
                        initialPosition = %obj.getMuzzlePoint(%slot);
                        sourceObject = %obj;
                        sourceSlot = %slot;
                        client = %obj.client;
                };
                MissionCleanup.add(%p);
        }
        return %p;
}

function vectorImage::onFire2(%this,%obj,%slot)
{
        %projectile = %this.projectile;
        %spread = 0.0014;
        %shellcount = 1;

        for(%shell=0; %shell<%shellcount; %shell++)
        {
                %vector = %obj.getMuzzleVector(%slot);
                %objectVelocity = %obj.getVelocity();
                %vector1 = VectorScale(%vector, %projectile.muzzleVelocity);
                %vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor);
                %velocity = VectorAdd(%vector1,%vector2);
                %x = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
                %y = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
                %z = (getRandom() - 0.5) * 10 * 3.1415926 * %spread;
                %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z);
                %velocity = MatrixMulVector(%mat, %velocity);

                %p = new (%this.projectileType)()
                {
                        dataBlock = %projectile;
                        initialVelocity = %velocity;
                        initialPosition = %obj.getMuzzlePoint(%slot);
                        sourceObject = %obj;
                        sourceSlot = %slot;
                        client = %obj.client;
                };
                MissionCleanup.add(%p);
        }
        return %p;
}

Sorry if my code is to messy for you
« Last Edit: November 12, 2011, 10:49:26 PM by _Dark_ »

Come on guys I want to get this done so I can start on more weapons in Tactical Weapons :c

I'm assuming you're using Space Guy's ammo support script, so are you even executing it?

I'm assuming you're using Space Guy's ammo support script, so are you even executing it?
Yes I am executing.

You have two functions for OnFire, you are overwriting the ammo part of the first one. You also have a OnFire2 which I don't see why you need it.