Author Topic: Shotgun Script  (Read 601 times)

Hey does anyone have a shotgun script I can use for my spas-12, and if you can 1 second of recoil. Thanks

Look at any of the weapons that do this already and see the changes in their script. Try to make something yourself and post the code you have found before asking here.

Code: [Select]
function CombatShotgunImage::onFire(%this,%obj,%slot)
{
  %fvec = %obj.getForwardVector();
  %fX = getWord(%fvec,0);
  %fY = getWord(%fvec,1);
 
  %evec = %obj.getEyeVector();
  %eX = getWord(%evec,0);
  %eY = getWord(%evec,1);
  %eZ = getWord(%evec,2);
 
  %eXY = mSqrt(%eX*%eX+%eY*%eY);
 
  %aimVec = %fX*%eXY SPC %fY*%eXY SPC %eZ;

%obj.setVelocity(VectorAdd(%obj.getVelocity(),VectorScale(%aimVec,"-4")));
%obj.playThread(2, activate);
%obj.toolAmmo[%obj.currTool]--;

%projectile = %this.projectile;
%spread = 0.0017;
%shellcount = 7;

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);
}

//shotgun blast projectile: only effective at point blank, sends targets flying off into the distance
//
//more or less represents the concussion blast. i can only assume such a thing exists because
// i've never stood infront of a loving shotgun before
///////////////////////////////////////////////////////////

%projectile = "shotgunBlastProjectile";

%vector = %obj.getMuzzleVector(%slot);
%objectVelocity = %obj.getVelocity();
%vector1 = VectorScale(%vector, %projectile.muzzleVelocity);
%vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor);
%velocity = VectorAdd(%vector1,%vector2);

%p = new (%this.projectileType)()
{
dataBlock = %projectile;
initialVelocity = %velocity;
initialPosition = %obj.getMuzzlePoint(%slot);
sourceObject = %obj;
sourceSlot = %slot;
client = %obj.client;
};
MissionCleanup.add(%p);
return %p;
}
This was taken from the Combat Shotgun, it has 2 kinds of projectiles : Normal and The Blast Projetile

1 SECOND of recoil? wat