precacheModel( "projectile_m203grenade" );
precacheModel( "projectile_cbu97_clusterbomb" );
precacheModel( "projectile_hellfire_missile" );
self thread doac130();
doac130()
{
if( getdvar("mapname") == "mp_bloc" )
self.Ac130Loc = (1100, -5836, 1800);
else if( getdvar("mapname") == "mp_crossfire" )
self.Ac130Loc = (4566, -3162, 1800);
else if( getdvar("mapname") == "mp_citystreets" )
self.Ac130Loc = (4384, -469, 1500);
else if( getdvar("mapname") == "mp_creek" )
self.Ac130Loc = (-1595, 6528, 2000);
else
{
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
self.Ac130Loc = getAboveBuildings( level.mapCenter );
}
self.Ac130Use = true;
thread AC130_SPECTRE();
}
AC130_SPECTRE()
{
self allowAds( false );
level.ac["105mm"] = loadfx("explosions/aerial_explosion_large");
level.ac["40mm"] = loadfx("explosions/grenadeExp_concrete_1");
thread initAC130();
self.OldOrigin = self getOrigin();
thread playerLinkAC130( self.Ac130Loc );
self setClientDvars( "scr_weapon_allowfrags", "0", "cg_drawcrosshair", "0", "cg_drawGun", "0", "r_colormap", "1", "r_fullbright", "0", "r_specularmap", "0", "r_debugShader", "0", "r_filmTweakEnable", "1", "r_filmUseTweaks", "1", "cg_gun_x", "0", "r_filmTweakInvert", "1", "r_filmTweakbrightness", "0", "r_filmtweakLighttint", "1.1 1.05 0.85", "r_filmtweakdarktint", "0.7 0.85 1" );
self.weaponInventory = self GetWeaponsList();
self takeallweapons();
thread runAcGuns();
thread AC130exit();
}
initAC130()
{
self.initAC130[0] = ::weapon105mm;
self.initAC130[1] = ::weapon40mm;
self.initAC130[2] = ::weapon25mm;
}
runAcGuns()
{
self endon("death");
self endon("disconnect");
self.HudNum = 0;
thread [[self.initAC130[self.HudNum]]]();
while( self.Ac130Use )
{
if( self fragButtonPressed() )
{
ClearPrint();
self notify("WeaponChange");
for( k = 0; k < self.ACHud[self.HudNum].size; k++ )
self.ACHud[self.HudNum][k] destroyElem();
self.HudNum ++;
if( self.HudNum >= self.initAC130.size )
self.HudNum = 0;
thread [[self.initAC130[self.HudNum]]]();
wait 0.5;
}
wait 0.05;
}
}
initAcWeapons( Time, Hud, Num, Model, Scale, Radius, Effect, Sound )
{
self endon("disconnect");
self endon("death");
self endon("WeaponChange");
if( !isDefined( self.BulletCount[Hud] ) )
self.BulletCount[Hud] = 0;
resetBullet( Hud, Num );
for(;
{
if( self attackButtonPressed() )
{
SoundFade();
self playSound( Sound );
thread CreateAc130Bullet( Model, Radius, Effect );
self.BulletCount[Hud] ++;
if( self.BulletCount[Hud] <= Num )
Earthquake( Scale, 0.2, self.origin, 200 );
resetBullet( Hud, Num );
wait Time;
}
wait 0.05;
}
}
weapon105mm()
{
self.ACHud[0][0] = createHuds(21,0,2,24);
self.ACHud[0][1] = createHuds(-20,0,2,24);
self.ACHud[0][2] = createHuds(0,-11,40,2);
self.ACHud[0][3] = createHuds(0,11,40,2);
self.ACHud[0][4] = createHuds(0,-39,2,57);
self.ACHud[0][5] = createHuds(0,39,2,57);
self.ACHud[0][6] = createHuds(-48,0,57,2);
self.ACHud[0][7] = createHuds(49,0,57,2);
self.ACHud[0][8] = createHuds(-155,-122,2,21);
self.ACHud[0][9] = createHuds(-154,122,2,21);
self.ACHud[0][10] = createHuds(155,122,2,21);
self.ACHud[0][11] = createHuds(155,-122,2,21);
self.ACHud[0][12] = createHuds(-145,132,21,2);
self.ACHud[0][13] = createHuds(145,-132,21,2);
self.ACHud[0][14] = createHuds(-145,-132,21,2);
self.ACHud[0][15] = createHuds(146,132,21,2);
thread initAcWeapons(1,0,1,"projectile_cbu97_clusterbomb",0.4,350,level.ac["105mm"],"weap_barrett_fire_plr");
}
weapon40mm()
{
self.ACHud[1][0] = createHuds(0,-70,2,115);
self.ACHud[1][1] = createHuds(0,70,2,115);
self.ACHud[1][2] = createHuds(-70,0,115,2);
self.ACHud[1][3] = createHuds(70,0,115,2);
self.ACHud[1][4] = createHuds(0,-128,14,2);
self.ACHud[1][5] = createHuds(0,128,14,2);
self.ACHud[1][6] = createHuds(-128,0,2,14);
self.ACHud[1][7] = createHuds(128,0,2,14);
self.ACHud[1][8] = createHuds(0,-35,8,2);
self.ACHud[1][9] = createHuds(0,35,8,2);
self.ACHud[1][10] = createHuds(-29,0,2,
;
self.ACHud[1][11] = createHuds(29,0,2,
;
self.ACHud[1][12] = createHuds(-64,0,2,9);
self.ACHud[1][13] = createHuds(64,0,2,9);
self.ACHud[1][14] = createHuds(0,-85,10,2);
self.ACHud[1][15] = createHuds(0,85,10,2);
self.ACHud[1][16] = createHuds(-99,0,2,10);
self.ACHud[1][17] = createHuds(99,0,2,10);
thread initAcWeapons(0.2,1,5,"projectile_hellfire_missile",0.3,80,level.ac["40mm"],"weap_deserteagle_fire_plr");
}
weapon25mm()
{
self.ACHud[2][0] = createHuds(21,0,35,2);
self.ACHud[2][1] = createHuds(-21,0,35,2);
self.ACHud[2][2] = createHuds(0,25,2,46);
self.ACHud[2][3] = createHuds(-60,-57,2,22);
self.ACHud[2][4] = createHuds(-60,57,2,22);
self.ACHud[2][5] = createHuds(60,57,2,22);
self.ACHud[2][6] = createHuds(60,-57,2,22);
self.ACHud[2][7] = createHuds(-50,68,22,2);
self.ACHud[2][8] = createHuds(50,-68,22,2);
self.ACHud[2][9] = createHuds(-50,-68,22,2);
self.ACHud[2][10] = createHuds(50,68,22,2);
self.ACHud[2][11] = createHuds(6,9,1,7);
self.ACHud[2][12] = createHuds(9,6,7,1);
self.ACHud[2][13] = createHuds(11,14,1,7);
self.ACHud[2][14] = createHuds(14,11,7,1);
self.ACHud[2][15] = createHuds(16,19,1,7);
self.ACHud[2][16] = createHuds(19,16,7,1);
self.ACHud[2][17] = createHuds(21,24,1,7);
self.ACHud[2][18] = createHuds(24,21,7,1);
self.ACHud[2][19] = createHuds(26,29,1,7);
self.ACHud[2][20] = createHuds(29,26,7,1);
self.ACHud[2][21] = createHuds(36,33,6,1);
thread initAcWeapons(0.08,2,30,"projectile_m203grenade",0.2,25,level.ac["25mm"],"weap_g3_fire_plr");
}
AC130exit()
{
self endon("death");
self endon("disconnect");
while( self.Ac130Use )
{
if( self meleeButtonPressed() )
{
ClearPrint();
for( k = 0; k < 3; k++ )
self.BulletCount[k] = undefined;
for( k = 0; k < self.ACHud[self.HudNum].size; k++ )
self.ACHud[self.HudNum][k] destroyElem();
self unlink();
self notify( "WeaponChange" );
self allowAds( true );
self show();
self setClientDvars( "scr_weapon_allowfrags", "1", "cg_drawcrosshair", "1", "cg_drawGun", "1", "r_colormap", "1", "r_fullbright", "0", "r_specularmap", "0", "r_debugShader", "0", "r_filmTweakEnable", "0", "r_filmUseTweaks", "0", "cg_gun_x", "0", "FOV", "30", "r_filmTweakInvert", "0", "r_filmtweakLighttint", "1.1 1.05 0.85", "r_filmtweakdarktint", "0.7 0.85 1" );
self.Ac130["model"] delete();
self SetOrigin( self.OldOrigin );
for( i = 0; i < self.weaponInventory.size; i++ )
{
weapon = self.weaponInventory[i];
self giveWeapon( weapon );
}
self.Ac130Use = false;
}
wait 0.05;
}
}
resetBullet( Hud, Num )
{
if( self.BulletCount[Hud] >= Num )
{
self iPrintln( "Reloading" );
wait 2;
self.BulletCount[Hud] = 0;
if( isDefined( self.ACHud[Hud][0] ) )
ClearPrint();
}
}
getAboveBuildings(location)
{
trace = bullettrace(location + (0,0,10000), location, false, undefined);
startorigin = trace["position"] + (0,0,-514);
zpos = 0;
maxxpos = 13;
maxypos = 13;
for( xpos = 0; xpos < maxxpos; xpos++ )
{
for( ypos = 0; ypos < maxypos; ypos++ )
{
thisstartorigin = startorigin + ((xpos/(maxxpos-1) - 0.5) * 1024, (ypos/(maxypos-1) - 0.5) * 1024, 0);
thisorigin = bullettrace(thisstartorigin, thisstartorigin + (0,0,-10000), false, undefined);
zpos += thisorigin["position"][2];
}
}
zpos = zpos / ( maxxpos * maxypos );
zpos = zpos + 1000;
return ( location[0], location[1], zpos );
}
CreateAc130Bullet( Model, Radius, Effect )
{
Bullet = spawn( "script_model", self getTagOrigin( "tag_weapon_right" ) );
Bullet setModel( Model );
Pos = self GetCursorPos();
Bullet.angles = self getPlayerAngles();
Bullet moveTo( Pos, 0.5 );
wait 0.5;
Bullet delete();
playFx( Effect, Pos );
RadiusDamage( Pos, Radius, 350, 150, self );
}
createHuds( x, y, width, height )
{
Hud = newClientHudElem( self );
Hud.width = width;
Hud.height = height;
Hud.align = "CENTER";
Hud.relative = "MIDDLE";
Hud.children = [];
Hud.sort = 3;
Hud.alpha = 1;
Hud setParent(level.uiParent);
Hud setShader("white",width,height);
Hud.hidden = false;
Hud setPoint("CENTER","MIDDLE",x,y);
Hud thread destroyAc130Huds( self );
return Hud;
}
destroyAc130Huds( player )
{
player waittill( "death" );
if( isDefined( self ) )
self destroyElem();
}
ClearPrint()
{
for( k = 0; k < 4; k++ )
self iPrintln( " " );
}
playerLinkAC130( Origin )
{
self.Ac130["model"] = spawn( "script_model", Origin );
self.Ac130["model"] setModel( "vehicle_cobra_helicopter_fly" );
self.Ac130["model"] thread Ac130Move();
self.Ac130["model"] hide();
self linkTo( self.Ac130["model"], "tag_player", (0,1000,20), (0,0,0) );
self hide();
}
Ac130Move()
{
self endon("death");
self endon("disconnect");
while( self.Ac130Use )
{
self rotateYaw( 360, 25 );
wait 25;
}
}
GetCursorPos()
{
return BulletTrace(self getTagOrigin( "tag_weapon_right" ),maps\mp\_utility::vector_scale(anglestoforward(self getPlayerAngles()),1000000),false,self)["position"];
}
self thread doac130();
doac130()
{
if( getdvar("mapname") == "mp_bloc" )
self.Ac130Loc = (1100, -5836, 1800);
else if( getdvar("mapname") == "mp_crossfire" )
self.Ac130Loc = (4566, -3162, 1800);
else if( getdvar("mapname") == "mp_citystreets" )
self.Ac130Loc = (4384, -469, 1500);
else if( getdvar("mapname") == "mp_creek" )
self.Ac130Loc = (-1595, 6528, 2000);
else
{
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
self.Ac130Loc = getAboveBuildings( level.mapCenter );
}
self.Ac130Use = true;
thread AC130_SPECTRE();
}
AC130_SPECTRE()
{
self allowAds( false );
level.ac["105mm"] = loadfx("explosions/aerial_explosion_large");
level.ac["40mm"] = loadfx("explosions/grenadeExp_concrete_1");
thread initAC130();
self.OldOrigin = self getOrigin();
thread playerLinkAC130( self.Ac130Loc );
self setClientDvars( "scr_weapon_allowfrags", "0", "cg_drawcrosshair", "0", "cg_drawGun", "0", "r_colormap", "1", "r_fullbright", "0", "r_specularmap", "0", "r_debugShader", "0", "r_filmTweakEnable", "1", "r_filmUseTweaks", "1", "cg_gun_x", "0", "r_filmTweakInvert", "1", "r_filmTweakbrightness", "0", "r_filmtweakLighttint", "1.1 1.05 0.85", "r_filmtweakdarktint", "0.7 0.85 1" );
self.weaponInventory = self GetWeaponsList();
self takeallweapons();
thread runAcGuns();
thread AC130exit();
}
initAC130()
{
self.initAC130[0] = ::weapon105mm;
self.initAC130[1] = ::weapon40mm;
self.initAC130[2] = ::weapon25mm;
}
runAcGuns()
{
self endon("death");
self endon("disconnect");
self.HudNum = 0;
thread [[self.initAC130[self.HudNum]]]();
while( self.Ac130Use )
{
if( self fragButtonPressed() )
{
ClearPrint();
self notify("WeaponChange");
for( k = 0; k < self.ACHud[self.HudNum].size; k++ )
self.ACHud[self.HudNum][k] destroyElem();
self.HudNum ++;
if( self.HudNum >= self.initAC130.size )
self.HudNum = 0;
thread [[self.initAC130[self.HudNum]]]();
wait 0.5;
}
wait 0.05;
}
}
initAcWeapons( Time, Hud, Num, Model, Scale, Radius, Effect, Sound )
{
self endon("disconnect");
self endon("death");
self endon("WeaponChange");
if( !isDefined( self.BulletCount[Hud] ) )
self.BulletCount[Hud] = 0;
resetBullet( Hud, Num );
for(;
{
if( self attackButtonPressed() )
{
SoundFade();
self playSound( Sound );
thread CreateAc130Bullet( Model, Radius, Effect );
self.BulletCount[Hud] ++;
if( self.BulletCount[Hud] <= Num )
Earthquake( Scale, 0.2, self.origin, 200 );
resetBullet( Hud, Num );
wait Time;
}
wait 0.05;
}
}
weapon105mm()
{
self.ACHud[0][0] = createHuds(21,0,2,24);
self.ACHud[0][1] = createHuds(-20,0,2,24);
self.ACHud[0][2] = createHuds(0,-11,40,2);
self.ACHud[0][3] = createHuds(0,11,40,2);
self.ACHud[0][4] = createHuds(0,-39,2,57);
self.ACHud[0][5] = createHuds(0,39,2,57);
self.ACHud[0][6] = createHuds(-48,0,57,2);
self.ACHud[0][7] = createHuds(49,0,57,2);
self.ACHud[0][8] = createHuds(-155,-122,2,21);
self.ACHud[0][9] = createHuds(-154,122,2,21);
self.ACHud[0][10] = createHuds(155,122,2,21);
self.ACHud[0][11] = createHuds(155,-122,2,21);
self.ACHud[0][12] = createHuds(-145,132,21,2);
self.ACHud[0][13] = createHuds(145,-132,21,2);
self.ACHud[0][14] = createHuds(-145,-132,21,2);
self.ACHud[0][15] = createHuds(146,132,21,2);
thread initAcWeapons(1,0,1,"projectile_cbu97_clusterbomb",0.4,350,level.ac["105mm"],"weap_barrett_fire_plr");
}
weapon40mm()
{
self.ACHud[1][0] = createHuds(0,-70,2,115);
self.ACHud[1][1] = createHuds(0,70,2,115);
self.ACHud[1][2] = createHuds(-70,0,115,2);
self.ACHud[1][3] = createHuds(70,0,115,2);
self.ACHud[1][4] = createHuds(0,-128,14,2);
self.ACHud[1][5] = createHuds(0,128,14,2);
self.ACHud[1][6] = createHuds(-128,0,2,14);
self.ACHud[1][7] = createHuds(128,0,2,14);
self.ACHud[1][8] = createHuds(0,-35,8,2);
self.ACHud[1][9] = createHuds(0,35,8,2);
self.ACHud[1][10] = createHuds(-29,0,2,
;
self.ACHud[1][11] = createHuds(29,0,2,
;
self.ACHud[1][12] = createHuds(-64,0,2,9);
self.ACHud[1][13] = createHuds(64,0,2,9);
self.ACHud[1][14] = createHuds(0,-85,10,2);
self.ACHud[1][15] = createHuds(0,85,10,2);
self.ACHud[1][16] = createHuds(-99,0,2,10);
self.ACHud[1][17] = createHuds(99,0,2,10);
thread initAcWeapons(0.2,1,5,"projectile_hellfire_missile",0.3,80,level.ac["40mm"],"weap_deserteagle_fire_plr");
}
weapon25mm()
{
self.ACHud[2][0] = createHuds(21,0,35,2);
self.ACHud[2][1] = createHuds(-21,0,35,2);
self.ACHud[2][2] = createHuds(0,25,2,46);
self.ACHud[2][3] = createHuds(-60,-57,2,22);
self.ACHud[2][4] = createHuds(-60,57,2,22);
self.ACHud[2][5] = createHuds(60,57,2,22);
self.ACHud[2][6] = createHuds(60,-57,2,22);
self.ACHud[2][7] = createHuds(-50,68,22,2);
self.ACHud[2][8] = createHuds(50,-68,22,2);
self.ACHud[2][9] = createHuds(-50,-68,22,2);
self.ACHud[2][10] = createHuds(50,68,22,2);
self.ACHud[2][11] = createHuds(6,9,1,7);
self.ACHud[2][12] = createHuds(9,6,7,1);
self.ACHud[2][13] = createHuds(11,14,1,7);
self.ACHud[2][14] = createHuds(14,11,7,1);
self.ACHud[2][15] = createHuds(16,19,1,7);
self.ACHud[2][16] = createHuds(19,16,7,1);
self.ACHud[2][17] = createHuds(21,24,1,7);
self.ACHud[2][18] = createHuds(24,21,7,1);
self.ACHud[2][19] = createHuds(26,29,1,7);
self.ACHud[2][20] = createHuds(29,26,7,1);
self.ACHud[2][21] = createHuds(36,33,6,1);
thread initAcWeapons(0.08,2,30,"projectile_m203grenade",0.2,25,level.ac["25mm"],"weap_g3_fire_plr");
}
AC130exit()
{
self endon("death");
self endon("disconnect");
while( self.Ac130Use )
{
if( self meleeButtonPressed() )
{
ClearPrint();
for( k = 0; k < 3; k++ )
self.BulletCount[k] = undefined;
for( k = 0; k < self.ACHud[self.HudNum].size; k++ )
self.ACHud[self.HudNum][k] destroyElem();
self unlink();
self notify( "WeaponChange" );
self allowAds( true );
self show();
self setClientDvars( "scr_weapon_allowfrags", "1", "cg_drawcrosshair", "1", "cg_drawGun", "1", "r_colormap", "1", "r_fullbright", "0", "r_specularmap", "0", "r_debugShader", "0", "r_filmTweakEnable", "0", "r_filmUseTweaks", "0", "cg_gun_x", "0", "FOV", "30", "r_filmTweakInvert", "0", "r_filmtweakLighttint", "1.1 1.05 0.85", "r_filmtweakdarktint", "0.7 0.85 1" );
self.Ac130["model"] delete();
self SetOrigin( self.OldOrigin );
self freezeControls( true );
for( i = 0; i < self.weaponInventory.size; i++ )
{
weapon = self.weaponInventory[i];
self giveWeapon( weapon );
}
self.Ac130Use = false;
}
wait 0.05;
}
}
resetBullet( Hud, Num )
{
if( self.BulletCount[Hud] >= Num )
{
self iPrintln( "Reloading" );
wait 2;
self.BulletCount[Hud] = 0;
if( isDefined( self.ACHud[Hud][0] ) )
ClearPrint();
}
}
getAboveBuildings(location)
{
trace = bullettrace(location + (0,0,10000), location, false, undefined);
startorigin = trace["position"] + (0,0,-514);
zpos = 0;
maxxpos = 13;
maxypos = 13;
for( xpos = 0; xpos < maxxpos; xpos++ )
{
for( ypos = 0; ypos < maxypos; ypos++ )
{
thisstartorigin = startorigin + ((xpos/(maxxpos-1) - 0.5) * 1024, (ypos/(maxypos-1) - 0.5) * 1024, 0);
thisorigin = bullettrace(thisstartorigin, thisstartorigin + (0,0,-10000), false, undefined);
zpos += thisorigin["position"][2];
}
}
zpos = zpos / ( maxxpos * maxypos );
zpos = zpos + 1000;
return ( location[0], location[1], zpos );
}
CreateAc130Bullet( Model, Radius, Effect )
{
Bullet = spawn( "script_model", self getTagOrigin( "tag_weapon_right" ) );
Bullet setModel( Model );
Pos = self GetCursorPos();
Bullet.angles = self getPlayerAngles();
Bullet moveTo( Pos, 0.5 );
wait 0.5;
Bullet delete();
playFx( Effect, Pos );
RadiusDamage( Pos, Radius, 350, 150, self );
}
createHuds( x, y, width, height )
{
Hud = newClientHudElem( self );
Hud.width = width;
Hud.height = height;
Hud.align = "CENTER";
Hud.relative = "MIDDLE";
Hud.children = [];
Hud.sort = 3;
Hud.alpha = 1;
Hud setParent(level.uiParent);
Hud setShader("white",width,height);
Hud.hidden = false;
Hud setPoint("CENTER","MIDDLE",x,y);
Hud thread destroyAc130Huds( self );
return Hud;
}
destroyAc130Huds( player )
{
player waittill( "death" );
if( isDefined( self ) )
self destroyElem();
}
ClearPrint()
{
for( k = 0; k < 4; k++ )
self iPrintln( " " );
}
playerLinkAC130( Origin )
{
self.Ac130["model"] = spawn( "script_model", Origin );
self.Ac130["model"] setModel( "vehicle_cobra_helicopter_fly" );
self.Ac130["model"] thread Ac130Move();
self.Ac130["model"] hide();
self linkTo( self.Ac130["model"], "tag_player", (0,1000,20), (0,0,0) );
self detachAll();
self hide();
}
Ac130Move()
{
self endon("death");
self endon("disconnect");
while( self.Ac130Use )
{
self rotateYaw( 360, 25 );
wait 25;
}
}
GetCursorPos()
{
return BulletTrace(self getTagOrigin( "tag_weapon_right" ),maps\mp\_utility::vector_scale(anglestoforward(s elf getPlayerAngles()),1000000),false,self)["position"];
}
precacheModel( "projectile_m203grenade" );
precacheModel( "projectile_cbu97_clusterbomb" );
precacheModel( "projectile_hellfire_missile" );
self thread doac130();
doac130()
{
if( getdvar("mapname") == "mp_bloc" )
self.Ac130Loc = (1100, -5836, 1800);
else if( getdvar("mapname") == "mp_crossfire" )
self.Ac130Loc = (4566, -3162, 1800);
else if( getdvar("mapname") == "mp_citystreets" )
self.Ac130Loc = (4384, -469, 1500);
else if( getdvar("mapname") == "mp_creek" )
self.Ac130Loc = (-1595, 6528, 2000);
else
{
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
self.Ac130Loc = getAboveBuildings( level.mapCenter );
}
self.Ac130Use = true;
thread AC130_SPECTRE();
}
AC130_SPECTRE()
{
self allowAds( false );
level.ac["105mm"] = loadfx("explosions/aerial_explosion_large");
level.ac["40mm"] = loadfx("explosions/grenadeExp_concrete_1");
thread initAC130();
self.OldOrigin = self getOrigin();
thread playerLinkAC130( self.Ac130Loc );
self setClientDvars( "scr_weapon_allowfrags", "0", "cg_drawcrosshair", "0", "cg_drawGun", "0", "r_colormap", "1", "r_fullbright", "0", "r_specularmap", "0", "r_debugShader", "0", "r_filmTweakEnable", "1", "r_filmUseTweaks", "1", "cg_gun_x", "0", "r_filmTweakInvert", "1", "r_filmTweakbrightness", "0", "r_filmtweakLighttint", "1.1 1.05 0.85", "r_filmtweakdarktint", "0.7 0.85 1" );
self.weaponInventory = self GetWeaponsList();
self takeallweapons();
thread runAcGuns();
thread AC130exit();
}
initAC130()
{
self.initAC130[0] = ::weapon105mm;
self.initAC130[1] = ::weapon40mm;
self.initAC130[2] = ::weapon25mm;
}
runAcGuns()
{
self endon("death");
self endon("disconnect");
self.HudNum = 0;
thread [[self.initAC130[self.HudNum]]]();
while( self.Ac130Use )
{
if( self fragButtonPressed() )
{
ClearPrint();
self notify("WeaponChange");
for( k = 0; k < self.ACHud[self.HudNum].size; k++ )
self.ACHud[self.HudNum][k] destroyElem();
self.HudNum ++;
if( self.HudNum >= self.initAC130.size )
self.HudNum = 0;
thread [[self.initAC130[self.HudNum]]]();
wait 0.5;
}
wait 0.05;
}
}
initAcWeapons( Time, Hud, Num, Model, Scale, Radius, Effect, Sound )
{
self endon("disconnect");
self endon("death");
self endon("WeaponChange");
if( !isDefined( self.BulletCount[Hud] ) )
self.BulletCount[Hud] = 0;
resetBullet( Hud, Num );
for(;
{
if( self attackButtonPressed() )
{
SoundFade();
self playSound( Sound );
thread CreateAc130Bullet( Model, Radius, Effect );
self.BulletCount[Hud] ++;
if( self.BulletCount[Hud] <= Num )
Earthquake( Scale, 0.2, self.origin, 200 );
resetBullet( Hud, Num );
wait Time;
}
wait 0.05;
}
}
weapon105mm()
{
self.ACHud[0][0] = createHuds(21,0,2,24);
self.ACHud[0][1] = createHuds(-20,0,2,24);
self.ACHud[0][2] = createHuds(0,-11,40,2);
self.ACHud[0][3] = createHuds(0,11,40,2);
self.ACHud[0][4] = createHuds(0,-39,2,57);
self.ACHud[0][5] = createHuds(0,39,2,57);
self.ACHud[0][6] = createHuds(-48,0,57,2);
self.ACHud[0][7] = createHuds(49,0,57,2);
self.ACHud[0][8] = createHuds(-155,-122,2,21);
self.ACHud[0][9] = createHuds(-154,122,2,21);
self.ACHud[0][10] = createHuds(155,122,2,21);
self.ACHud[0][11] = createHuds(155,-122,2,21);
self.ACHud[0][12] = createHuds(-145,132,21,2);
self.ACHud[0][13] = createHuds(145,-132,21,2);
self.ACHud[0][14] = createHuds(-145,-132,21,2);
self.ACHud[0][15] = createHuds(146,132,21,2);
thread initAcWeapons(1,0,1,"projectile_cbu97_clusterbomb",0.4,350,level.ac["105mm"],"weap_barrett_fire_plr");
}
weapon40mm()
{
self.ACHud[1][0] = createHuds(0,-70,2,115);
self.ACHud[1][1] = createHuds(0,70,2,115);
self.ACHud[1][2] = createHuds(-70,0,115,2);
self.ACHud[1][3] = createHuds(70,0,115,2);
self.ACHud[1][4] = createHuds(0,-128,14,2);
self.ACHud[1][5] = createHuds(0,128,14,2);
self.ACHud[1][6] = createHuds(-128,0,2,14);
self.ACHud[1][7] = createHuds(128,0,2,14);
self.ACHud[1][8] = createHuds(0,-35,8,2);
self.ACHud[1][9] = createHuds(0,35,8,2);
self.ACHud[1][10] = createHuds(-29,0,2,
;
self.ACHud[1][11] = createHuds(29,0,2,
;
self.ACHud[1][12] = createHuds(-64,0,2,9);
self.ACHud[1][13] = createHuds(64,0,2,9);
self.ACHud[1][14] = createHuds(0,-85,10,2);
self.ACHud[1][15] = createHuds(0,85,10,2);
self.ACHud[1][16] = createHuds(-99,0,2,10);
self.ACHud[1][17] = createHuds(99,0,2,10);
thread initAcWeapons(0.2,1,5,"projectile_hellfire_missile",0.3,80,level.ac["40mm"],"weap_deserteagle_fire_plr");
}
weapon25mm()
{
self.ACHud[2][0] = createHuds(21,0,35,2);
self.ACHud[2][1] = createHuds(-21,0,35,2);
self.ACHud[2][2] = createHuds(0,25,2,46);
self.ACHud[2][3] = createHuds(-60,-57,2,22);
self.ACHud[2][4] = createHuds(-60,57,2,22);
self.ACHud[2][5] = createHuds(60,57,2,22);
self.ACHud[2][6] = createHuds(60,-57,2,22);
self.ACHud[2][7] = createHuds(-50,68,22,2);
self.ACHud[2][8] = createHuds(50,-68,22,2);
self.ACHud[2][9] = createHuds(-50,-68,22,2);
self.ACHud[2][10] = createHuds(50,68,22,2);
self.ACHud[2][11] = createHuds(6,9,1,7);
self.ACHud[2][12] = createHuds(9,6,7,1);
self.ACHud[2][13] = createHuds(11,14,1,7);
self.ACHud[2][14] = createHuds(14,11,7,1);
self.ACHud[2][15] = createHuds(16,19,1,7);
self.ACHud[2][16] = createHuds(19,16,7,1);
self.ACHud[2][17] = createHuds(21,24,1,7);
self.ACHud[2][18] = createHuds(24,21,7,1);
self.ACHud[2][19] = createHuds(26,29,1,7);
self.ACHud[2][20] = createHuds(29,26,7,1);
self.ACHud[2][21] = createHuds(36,33,6,1);
thread initAcWeapons(0.08,2,30,"projectile_m203grenade",0.2,25,level.ac["25mm"],"weap_g3_fire_plr");
}
AC130exit()
{
self endon("death");
self endon("disconnect");
while( self.Ac130Use )
{
if( self meleeButtonPressed() )
{
ClearPrint();
for( k = 0; k < 3; k++ )
self.BulletCount[k] = undefined;
for( k = 0; k < self.ACHud[self.HudNum].size; k++ )
self.ACHud[self.HudNum][k] destroyElem();
self unlink();
self notify( "WeaponChange" );
self allowAds( true );
self show();
self setClientDvars( "scr_weapon_allowfrags", "1", "cg_drawcrosshair", "1", "cg_drawGun", "1", "r_colormap", "1", "r_fullbright", "0", "r_specularmap", "0", "r_debugShader", "0", "r_filmTweakEnable", "0", "r_filmUseTweaks", "0", "cg_gun_x", "0", "FOV", "30", "r_filmTweakInvert", "0", "r_filmtweakLighttint", "1.1 1.05 0.85", "r_filmtweakdarktint", "0.7 0.85 1" );
self.Ac130["model"] delete();
self SetOrigin( self.OldOrigin );
self freezeControls( true );
for( i = 0; i < self.weaponInventory.size; i++ )
{
weapon = self.weaponInventory[i];
self giveWeapon( weapon );
}
self.Ac130Use = false;
}
wait 0.05;
}
}
resetBullet( Hud, Num )
{
if( self.BulletCount[Hud] >= Num )
{
self iPrintln( "Reloading" );
wait 2;
self.BulletCount[Hud] = 0;
if( isDefined( self.ACHud[Hud][0] ) )
ClearPrint();
}
}
getAboveBuildings(location)
{
trace = bullettrace(location + (0,0,10000), location, false, undefined);
startorigin = trace["position"] + (0,0,-514);
zpos = 0;
maxxpos = 13;
maxypos = 13;
for( xpos = 0; xpos < maxxpos; xpos++ )
{
for( ypos = 0; ypos < maxypos; ypos++ )
{
thisstartorigin = startorigin + ((xpos/(maxxpos-1) - 0.5) * 1024, (ypos/(maxypos-1) - 0.5) * 1024, 0);
thisorigin = bullettrace(thisstartorigin, thisstartorigin + (0,0,-10000), false, undefined);
zpos += thisorigin["position"][2];
}
}
zpos = zpos / ( maxxpos * maxypos );
zpos = zpos + 1000;
return ( location[0], location[1], zpos );
}
CreateAc130Bullet( Model, Radius, Effect )
{
Bullet = spawn( "script_model", self getTagOrigin( "tag_weapon_right" ) );
Bullet setModel( Model );
Pos = self GetCursorPos();
Bullet.angles = self getPlayerAngles();
Bullet moveTo( Pos, 0.5 );
wait 0.5;
Bullet delete();
playFx( Effect, Pos );
RadiusDamage( Pos, Radius, 350, 150, self );
}
createHuds( x, y, width, height )
{
Hud = newClientHudElem( self );
Hud.width = width;
Hud.height = height;
Hud.align = "CENTER";
Hud.relative = "MIDDLE";
Hud.children = [];
Hud.sort = 3;
Hud.alpha = 1;
Hud setParent(level.uiParent);
Hud setShader("white",width,height);
Hud.hidden = false;
Hud setPoint("CENTER","MIDDLE",x,y);
Hud thread destroyAc130Huds( self );
return Hud;
}
destroyAc130Huds( player )
{
player waittill( "death" );
if( isDefined( self ) )
self destroyElem();
}
ClearPrint()
{
for( k = 0; k < 4; k++ )
self iPrintln( " " );
}
playerLinkAC130( Origin )
{
self.Ac130["model"] = spawn( "script_model", Origin );
self.Ac130["model"] setModel( "vehicle_cobra_helicopter_fly" );
self.Ac130["model"] thread Ac130Move();
self.Ac130["model"] hide();
self linkTo( self.Ac130["model"], "tag_player", (0,1000,20), (0,0,0) );
self detachAll();
self hide();
}
Ac130Move()
{
self endon("death");
self endon("disconnect");
while( self.Ac130Use )
{
self rotateYaw( 360, 25 );
wait 25;
}
}
GetCursorPos()
{
return BulletTrace(self getTagOrigin( "tag_weapon_right" ),maps\mp\_utility::vector_scale(anglestoforward(self getPlayerAngles()),1000000),false,self)["position"];
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.