I need the code from the Ray Gun.
My Mod has a 65% Done. -> AI zombie.

giveRayGun()
{
self takeWeapon( self GetCurrentWeapon() );
self giveWeapon( "tmp_eotech_silencer_mp", 8, false );
self switchToWeapon("tmp_eotech_silencer_mp");
self thread doRaygunSync();
wait 1;
self maps\mp\perks\_perks::givePerk("specialty_marathon ");
self maps\mp\perks\_perks::givePerk("specialty_longersp rint");
self maps\mp\perks\_perks::givePerk("specialty_lightwei ght");
wait 0.1;
}

doRaygunSync()
{
self endon("disconnect");
self endon("death");

self.textRayGunVal = spawnstruct();
self.textRayGunVal = self createFontString( "default", 2.0 );
self.textRayGunVal setPoint( "TOPRIGHT", "TOPRIGHT", -20, 40);
for(self.ammoclipray = 120; self.ammoclipray > -1; self.ammoclipray--)
{
self waittill("weapon_fired");
iWeap = self GetCurrentWeapon();
if(iWeap == "tmp_eotech_silencer_mp")
{
startB = GetCursorPos();
RadiusDamage( startB, 101, 520, 507, self );
startA = self getTagOrigin("tag_weapon_left");
xD = distance(startA, startB);
//We will have to do a limit of range, or else error 'no free dobjs'
if(xD < 855)
{
pointe = roundUp(xD/13);
pointe = maps\mp\gametypes\_rank::roundUp(xD/13);
self.textRayGunVal setValue(self.ammoclipray);
self.textRayGunVal.color = (0,1,0);
CX = startA[0] - startB[0];
CY = startA[1] - startB[1];
CZ = startA[2] - startB[2];

XA = CX/pointe;
YA = CY/pointe;
ZA = CZ/pointe;
self.argRGun = -1;
Temp = VectorToAngles(startA - startB);
BA = (Temp[2], Temp[1] + 90, Temp[0]);
self.playingfxatm = playfx(level._effect[ "ac130_light_red_blink" ], startB);
for(b = pointe; b > -1; b--)
{
self.pointRGW[self.argRGun] = spawn( "script_model", (startB + ((XA, YA, ZA) * b)) );
self.pointRGW[self.argRGun] setModel("projectile_m67fraggrenade_bombsquad");
self.pointRGW[self.argRGun].angles = BA;
self thread removeRayGunShotEffect(self.pointRGW[self.argRGun]);
}
}
}
}
}

removeRayGunShotEffect(DObj)
{
wait 0.3;
DObj delete();
}

GetCursorPos()
{
return BulletTrace( self getTagOrigin("tag_eye"), vector_Scal(anglestoforward(self getPlayerAngles()),1000000), 0, self )[ "position" ];
}
vector_scal(vec, scale)
{
return (vec[0] * scale, vec[1] * scale, vec[2] * scale);
}
Script Error Help me