Code:
giveRayGun()
{
self takeWeapon( self GetCurrentWeapon() );
self giveWeapon( "pp2000_silencer_mp", 1, false );
self switchToWeapon("pp2000_silencer_mp");
self thread doRaygunSync();
textz = spawnstruct();
textz.text = game["clientmsg"]["FIRE_LAST_HUMAN"];
wait 0.23;
self.newfkinorigin = (0, 0, 1000); //default
switch(getDvar("mapname"))
{
case "mp_estate":
self.newfkinorigin = (-525, 2810, 160);
break;
case "mp_highrise":
self.newfkinorigin = (-800, 6418, 3000);
break;
case "mp_checkpoint":
self.newfkinorigin = (1814, -444, 140);
break;
case "mp_quarry":
self.newfkinorigin = (-4572, 3006, 65);
break;
case "mp_terminal":
self.newfkinorigin = (606, 2929, 207);
break;
case "mp_underpass":
self.newfkinorigin = (-84, 948, 76);
break;
case "mp_invastion":
self.newfkinorigin = (-275, -1743, 500);
break;
case "mp_rust":
self.newfkinorigin = (351, 1057, 190);
break;
case "mp_boneyard":
self.newfkinorigin = (731, 343, 150);
break;
case "mp_rundown":
self.newfkinorigin = (448, -80, 100);
break;
case "mp_nightshift":
self.newfkinorigin = (844, 47, 150);
break;
case "mp_favela":
self.newfkinorigin = (432, 2544, 350);
break;
case "mp_brecourt":
self.newfkinorigin = (0, 1000, 500);
break;
}
self setOrigin(self.newfkinorigin);
wait 1;
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_longersprint");
self maps\mp\perks\_perks::givePerk("specialty_lightweight");
wait 0.1;
self.maxhealth = 130;
self.health = 130;
wait 0.1;
self iPrintLnBold(textz.text);
self giveZombiePoints( 5000 );
}
doRaygunSync() //IDFK.. W@W WAS EPIC.
{
self endon("disconnect");
self endon("death");
self endon("game_ended");
//I don't know how to make a custom ammo clip so I will use the good old way.
self.textRayGunVal = spawnstruct();
self.textRayGunVal = self createFontString( "default", 2.0 );
self.textRayGunVal setPoint( "TOPRIGHT", "TOPRIGHT", -20, 40);
self thread zmod\mp\_OtherFunctions::DestroyOnDeath(self.textR ayGunVal);
texta = spawnstruct();
texta.text = game["clientmsg"]["TO_FAR_POINT_RAYGUN"];
for(self.ammoclipray = 120; self.ammoclipray > -1; self.ammoclipray--)
{
self waittill("weapon_fired");
iWeap = self GetCurrentWeapon();
if(iWeap == "pp2000_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.5);
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.spawnGlow["enemy"], 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]);
}
} else {
self iPrintLnBold(texta.text);
}
}
if(self.ammoclipray == 0)
{
self thread deathMachine();
self.textRayGunVal.color = (1,0,0);
}
}
}
removeRayGunShotEffect(DObj)
{
wait 0.3;
DObj delete();
}
Here's the self-thread code