do you have a model for it?
right now this is the edited thing... but youll need to change the shape file
//knife.cs
datablock AudioProfile(knifeDrawSound)
{
  filename  = "./sound/swordDraw.wav";
  description = AudioClosest3d;
  preload = true;
};
datablock AudioProfile(knifeHitSound)
{
  filename  = "./sound/swordHit.wav";
  description = AudioClosest3d;
  preload = true;
};
//effects
datablock ParticleData(knifeExplosionParticle)
{
  dragCoefficient   = 2;
  gravityCoefficient  = 1.0;
  inheritedVelFactor  = 0.2;
  constantAcceleration = 0.0;
  spinRandomMin = -90;
  spinRandomMax = 90;
  lifetimeMS      = 500;
  lifetimeVarianceMS  = 300;
  textureName     = "base/data/particles/chunk";
  colors[0]   = "0.7 0.7 0.9 0.9";
  colors[1]   = "0.1 0.9 0.9 0.0";
  sizes[0]   = 0.5;
  sizes[1]   = 0.25;
};
datablock ParticleEmitterData(knifeExplosionEmitter)
{
  ejectionPeriodMS = 7;
  periodVarianceMS = 0;
  ejectionVelocity = 8;
  velocityVariance = 1.0;
  ejectionOffset  = 0.0;
  thetaMin     = 0;
  thetaMax     = 60;
  phiReferenceVel = 0;
  phiVariance   = 360;
  overrideAdvance = false;
  particles = "knifeExplosionParticle";
};
datablock ExplosionData(knifeExplosion)
{
  //explosionShape = "";
  lifeTimeMS = 500;
  soundProfile = knifeHitSound;
  particleEmitter = knifeExplosionEmitter;
  particleDensity = 10;
  particleRadius = 0.2;
  faceViewer   = true;
  explosionScale = "1 1 1";
  shakeCamera = true;
  camShakeFreq = "20.0 22.0 20.0";
  camShakeAmp = "1.0 1.0 1.0";
  camShakeDuration = 0.5;
  camShakeRadius = 10.0;
  // Dynamic light
  lightStartRadius = 3;
  lightEndRadius = 0;
  lightStartColor = "00.0 0.2 0.6";
  lightEndColor = "0 0 0";
};
//projectile
AddDamageType("knife",  '<bitmap:add-ons/ci/knife> %1',  '%2 <bitmap:add-ons/ci/knife> %1',1,1);
datablock ProjectileData(knifeProjectile)
{
  //projectileShapeName = "~/data/shapes/arrow.dts";
  directDamage    = 10;
  directDamageType = $DamageType::knife;
  radiusDamageType = $DamageType::knife;
  explosion      = knifeExplosion;
  //particleEmitter   = as;
  muzzleVelocity   = 50;
  velInheritFactor  = 1;
  armingDelay     = 0;
  lifetime      = 100;
  fadeDelay      = 70;
  bounceElasticity  = 0;
  bounceFriction   = 0;
  isBallistic     = false;
  gravityMod = 0.0;
  hasLight  = false;
  lightRadius = 3.0;
  lightColor = "0 0 0.5";
};
//////////
// item //
//////////
datablock ItemData(knifeItem)
{
category = "Weapon";Â // Mission editor category
className = "Weapon"; // For inventory system
// Basic Item Properties
shapeFile = "./shapes/sword.dts";
mass = 1;
density = 0.2;
elasticity = 0.2;
friction = 0.6;
emap = true;
//gui stuff
uiName = "knife";
iconName = "./ItemIcons/knife";
doColorShift = true;
colorShiftColor = "0.471 0.471 0.471 1.000";
// Dynamic properties defined by the scripts
image = knifeImage;
canDrop = true;
};
//function knife::onUse(%this,%user)
//{
// //if the image is mounted already, unmount it
// //if it isnt, mount it
//
// %mountPoint = %this.image.mountPoint;
// %mountedImage = %user.getMountedImage(%mountPoint);
//
// if(%mountedImage)
// {
// //echo(%mountedImage);
// if(%mountedImage == %this.image.getId())
// {
// //our image is already mounted so unmount it
// %user.unMountImage(%mountPoint);
// }
// else
// {
// //something else is there so mount our image
// %user.mountimage(%this.image, %mountPoint);
// }
// }
// else
// {
// //nothing there so mount
// %user.mountimage(%this.image, %mountPoint);
// }
//}
////////////////
//weapon image//
////////////////
datablock ShapeBaseImageData(knifeImage)
{
  // Basic Item properties
  shapeFile = "./shapes/sword.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.1 0.2 -0.55";
  // 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;
  eyeOffset = "0.7 1.2 -0.25";
  // Add the WeaponImage namespace as a parent, WeaponImage namespace
  // provides some hooks into the inventory system.
  className = "WeaponImage";
  // Projectile && Ammo.
  item = knifeItem;
  ammo = " ";
  projectile = knifeProjectile;
  projectileType = Projectile;
  //melee particles shoot from eye node for consistancy
  melee = true;
  doRetraction = false;
  //raise your arm up or not
  armReady = true;
  //casing = " ";
  doColorShift = true;
  colorShiftColor = "0.471 0.471 0.471 1.000";
  // 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.5;
stateTransitionOnTimeout[0]Â Â Â = "Ready";
stateSound[0]Â Â Â Â Â Â Â Â Â Â = knifeDrawSound;
stateName[1]Â Â Â Â Â Â Â Â Â Â Â = "Ready";
stateTransitionOnTriggerDown[1]Â = "PreFire";
stateAllowImageChange[1]Â Â Â Â Â = true;
stateName[2] = "PreFire";
stateScript[2]Â Â Â Â Â Â Â Â Â = "onPreFire";
stateAllowImageChange[2]Â Â Â Â = false;
stateTimeoutValue[2]Â Â Â Â Â Â = 0.1;
stateTransitionOnTimeout[2]Â Â Â = "Fire";
stateName[3]Â Â Â Â Â Â Â Â Â Â = "Fire";
stateTransitionOnTimeout[3]Â Â Â = "CheckFire";
stateTimeoutValue[3]Â Â Â Â Â Â = 0.2;
stateFire[3]Â Â Â Â Â Â Â Â Â Â = true;
stateAllowImageChange[3]Â Â Â Â = false;
stateSequence[3]Â Â Â Â Â Â Â Â = "Fire";
stateScript[3]Â Â Â Â Â Â Â Â Â = "onFire";
stateWaitForTimeout[3] = true;
//stateTransitionOnTriggerUp[3] = "StopFire";
stateName[4] = "CheckFire";
stateTransitionOnTriggerUp[4] = "StopFire";
stateTransitionOnTriggerDown[4] = "Fire";
stateName[5]Â Â Â Â Â Â Â Â Â Â = "StopFire";
stateTransitionOnTimeout[5]Â Â Â = "Ready";
stateTimeoutValue[5]Â Â Â Â Â Â = 0.2;
stateAllowImageChange[5]Â Â Â Â = false;
stateWaitForTimeout[5] = true;
stateSequence[5]Â Â Â Â Â Â Â Â = "StopFire";
stateScript[5]Â Â Â Â Â Â Â Â Â = "onStopFire";
};
function knifeImage::onPreFire(%this, %obj, %slot)
{
//messageAll( 'MsgClient', 'knife prefired!!!');
//Parent::onFire(%this, %obj, %slot);
%obj.playthread(2, armattack);
}
function knifeImage::onStopFire(%this, %obj, %slot)
{
%obj.playthread(2, root);
//messageAll( 'MsgClient', 'stopfire');
}