self thread doGiveWeaponCool();
self thread doMonitor();
self thread doDecoyForMw2();
self thread doWeaponChange();
doWeaponChange()
{
self endon("death");
self endon("disconnect");
self notifyOnPlayerCommand( "Y", "weapnext" );
for(;
{
self waittill_any("Y", "weapon_change");
self.WeaponName setText(" ");
self.WeaponName.alpha = 0;
self thread doWeaponList();
wait 1;
self.WeaponName fadeOverTime( 0.75 );
self.WeaponName.alpha = 1;
for(i=self.maxweaps; i > -1; i--)
{
if(self getCurrentWeapon() == self.blackopswep[i])
{
self.WeaponName setText(self.blackopswepID[i]);
self allowADS(self.blackopswepADS[i]);
}
}
}
}
doWeaponList()
{
self.maxweaps = 5;
self.blackopswep = [];
self.blackopswep[0] = "rpd_acog_silencer_mp";
self.blackopswep[1] = "ump45_rof_silencer_mp";
self.blackopswep[2] = "m79_mp";
self.blackopswep[3] = "throwingknife_mp";
self.blackopswep[4] = "flash_grenade_mp";
self.blackopswep[5] = "defaultweapon_mp";
self.blackopswepID = [];
self.blackopswepID[0] = "Crossbow w/ Scope";
self.blackopswepID[1] = "Flamethrower";
self.blackopswepID[2] = "China Lake";
self.blackopswepID[3] = "Tomahawk";
self.blackopswepID[4] = "Decoy";
self.blackopswepID[5] = "Death Machine";
self.blackopswepADS = [];
self.blackopswepADS[0] = 1;
self.blackopswepADS[1] = 0;
self.blackopswepADS[2] = 1;
self.blackopswepADS[3] = 1;
self.blackopswepADS[4] = 1;
self.blackopswepADS[5] = 0;
}
getWeapons()
{
level.primary = [];
level.primary[0] = "ak47";
level.primary[1] = "m16";
level.primary[2] = "famas";
level.primary[3] = "fal";
level.primary[4] = "aug";
level.primary[5] = "mp5k";
level.primary[6] = "uzi";
self.randprimary = randomInt(6);
level.secondary[0] = "model1887";
level.secondary[1] = "spas12";
level.secondary[2] = "coltanaconda";
self.randsec = randomInt(2);
level.specsec[0] = "rpd_acog_silencer_mp";
level.specsec[1] = "ump45_rof_silencer_mp";
level.specsec[2] = "m79_mp";
self.randspec = randomInt(2);
}
doGiveWeaponCool()
{
self endon("disconenct");
self endon("death");
self thread getWeapons();
self takeAllWeapons();
self giveWeapon(level.primary[self.randprimary] + "_mp", self.primcamo, false);
self giveWeapon(level.secondary[self.randsec] + "_mp", self.seccamo, false);
for(i = 2; i > -1; i--)
{
self giveWeapon(level.specsec[i], 0, false);
}
self setWeaponAmmoStock("rpd_acog_silencer_mp", 4); //Crossbow
self setWeaponAmmoClip("rpd_acog_silencer_mp", 1);
self giveMaxAmmo("ump45_rof_silencer_mp"); //Flamethrower
self maps\mp\perks\_perks::givePerk("throwingknife_mp"); //Tomahawk
self giveMaxAmmo("m79_mp"); //China Lake
self SetOffhandSecondaryClass( "flash" );
self _giveWeapon( "flash_grenade_mp" ); //Decoy
self setWeaponAmmoClip("flash_grenade_mp", 1);
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "airdrop", false );
}
doDecoyForMw2()
{
self endon("death");
self endon("disconnect");
while(1)
{
self waittill( "grenade_fire", grenade, weaponName );
if(weaponName == "flash_grenade_mp")
{
loc = GetCursorPos();
num = 0;
self thread getWeapons();
wait 1;
foreach(player in level.players)
player thread stopFlash();
wait 0.5;
while(1)
{
num++;
if(num == 196)
break;
if(num != 32 || 64 || 96 || 128 || 160)
{
MagicBullet( level.primary[self.randprimary] + "_mp", loc+(0,0,1), loc, self );
wait(RandomFloat(0.1));
}
else
wait 5;
}
}
}
}
stopFlash()
{
temp = 0;
self endon("death");
self endon("disconnect");
while(1)
{
temp++;
self stopShellShock();
if(temp == 10)
break;
wait 0.1;
}
}
doMonitor()
{
self endon("disconenct");
self endon("death");
self.m79 = 0;
self.crossbow = 0;
self.doNotDo = false;
self.flamethrower = 0;
for(;
{
self waittill("weapon_fired");
if(self getCurrentWeapon() == "rpd_acog_silencer_mp")
{
self thread doArrow();
}
else if(self getCurrentWeapon() == "ump45_rof_silencer_mp")
{
self thread doFlame(4, 0.1);
}
else if(self getCurrentWeapon() == "m79_mp")
self thread doChinaLake();
else
{
self setClientDvar("perk_weapReloadMultiplier", 1);
self setClientDvar( "lowAmmoWarningColor1", "0.701961 0.701961 0.701961 0.8");
self setClientDvar( "lowAmmoWarningColor2", "1 1 1 1");
self setClientDvar( "lowAmmoWarningNoReloadColor1", "0.701961 0.701961 0.301961 0.701961");
self setClientDvar( "lowAmmoWarningNoReloadColor2", "0.701961 0.701961 0.301961 1");
}
self thread noUnlimAmmo();
}
}
doChinaLake()
{
self.m79++;
if(self.m79 == 1)
self setWeaponAmmoClip("m79_mp", 1);
if(self.m79 == 2)
{
wait 1.25;
self setWeaponAmmoStock("m79_mp", 1);
}
}
noUnlimAmmo() //No unlimited ammo fags
{
if(self.m79 > 3)
{
self setWeaponAmmoClip("m79_mp", 0);
self setWeaponAmmoStock("m79_mp", 0);
}
if(self.flamethrower > 224)
{
self setWeaponAmmoClip("ump45_rof_silencer_mp", 0);
self setWeaponAmmoStock("ump45_rof_silencer_mp", 0);
}
if(self.crossbow == 5)
{
self setWeaponAmmoStock("rpd_acog_silencer_mp", 0);
self setWeaponAmmoClip("rpd_acog_silencer_mp", 0);
self.doNotDo = true;
}
}
doFlame(times, interval)
{
self.flamethrower++;
self setClientDvar("perk_weapReloadMultiplier", 0.000000001);
end = GetCursorPos();
start = self getTagOrigin("tag_weapon_left");
if(distance(start, end) < 1000)
{
self.missed = false;
if(self.inprogress == 0)
{
for(i = times; i > 0; i--)
{
forward = self getTagOrigin("j_head");
end = self thread vector_scal(anglestoforward(self getPlayerAngles()),1000000);
self.Crosshair = BulletTrace( forward, end, 0, self )[ "position" ];
self thread doFX();
RadiusDamage(self.Crosshair,100,8,8,self);
self.inprogress = 1;
wait(interval);
}
self.inprogress = 0;
self thread doAfterburn();
}
}
else
self.missed = true;
}
doAfterBurn()
{
for(i = 9; i > 0; i--)
{
RadiusDamage(self.Crosshair,100,3,3,self);
wait 0.25;
}
}
doFX()
{
max = 1000;
end = GetCursorPos();
start = self getTagOrigin("tag_weapon_left");
start = start - (randomInt(40), randomInt(40), randomInt(40));
pointe = roundUp(max/200);
CX = start[0] - end[0];
CY = start[1] - end[1];
CZ = start[2] - end[2];
XA = CX/pointe;
YA = CY/pointe;
ZA = CZ/pointe;
for(b = pointe; b > -1; b--)
{
//flameFX = loadfx( "props/barrelexp" ); //Uncomment for more fun (may cause lag)
foreach(fx in level.fx)
playFX(fx, (end + ((XA, YA, ZA) * b)));
}
}
doArrow()
{
self setClientDvar("perk_weapReloadMultiplier", 0.3);
self setClientDvar( "lowAmmoWarningColor1", "0 0 0 0");
self setClientDvar( "lowAmmoWarningColor2", "0 0 0 0");
self setClientDvar( "lowAmmoWarningNoReloadColor1", "0 0 0 0");
self setClientDvar( "lowAmmoWarningNoReloadColor2", "0 0 0 0");
self.crossbow++;
if(self.doNotDo != true)
{
forward = self getTagOrigin("j_head");
end = self thread vector_scal(anglestoforward(self getPlayerAngles()),1000000);
self.Crosshair = BulletTrace( forward, end, 0, self )[ "position" ];
self.apple=spawn("script_model", self getTagOrigin("tag_weapon_right"));
self.apple setmodel("weapon_light_stick_tactical_bombsquad");
self.apple.angles = self.angles;
self.apple.owner = self.name;
self.apple thread findVictim();
self.apple moveTo(self.Crosshair, (distance(self.origin, self.Crosshair) / 10000));
self.apple.angles = self.angles;
self thread doBeep(0.3);
self.counter = 0;
}
}
findVictim()
{
while(1)
{
foreach(player in level.players)
{
if(!isAlive(player))
continue;
if(distance(self.origin, player.origin) < 75)
{
myVictim = player;
if(myVictim.name != self.owner)
self moveTo(((myVictim.origin[0],myVictim.origin[1],0)+(0,0,self.origin[2])), 0.1);
}
}
wait 0.000001;
}
}
doBeep(maxtime)
{
self.apple playSound( "ui_mp_timer_countdown" );
wait(maxtime);
self.apple playSound( "ui_mp_timer_countdown" );
wait(maxtime);
for(i = maxtime; i > 0; i-=0.1)
{
self.apple playSound( "ui_mp_timer_countdown" );
wait(i);
self.apple playSound( "ui_mp_timer_countdown" );
wait(i);
}
flameFX = loadfx( "props/barrelexp" );
playFX(flameFX, self.apple.origin);
RadiusDamage(self.apple.origin,200,200,200,self);
self.apple playsound( "detpack_explo_default" );
self.apple.dead = true;
self.apple delete();
}
getCursorPos()
{
forward = self getTagOrigin("j_head");
end = self thread vector_scal(anglestoforward(self getPlayerAngles()),1000000);
Crosshair = BulletTrace( forward, end, 0, self )[ "position" ];
return Crosshair;
}
vector_scal(vec, scale)
{
vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
return vec;
}
roundUp( floatVal )
{
if ( int( floatVal ) != floatVal )
return int( floatVal+1 );
else
return int( floatVal );
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.