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"];
}
AC130_SPECTRE()
{
self TakeAllWeapons();
self thread FadeToBlack();
wait .1;
self.editingstats = 1;wait .1;self.reopen = 0;
wait .1;
self EnableHealthShield( true );self EnableInvulnerability();
self SetStance( "stand" );
self.bigblast = 1;
wait .1;
self AllowProne( false );
self AllowCrouch( false );
wait .1;
self AllowAds( false );
self.nightviz = false;
wait .3;
self setClientDvar( "player_sustainAmmo", "1" );
self.smallblast = 0;
self.acmachine = 0;
self.ac130end = 0;
wait .1;
self thread AC130exit();
self SetPerk("specialty_fastreload");
self thread ac130_visions();
wait .1;
self SetPerk("specialty_bulletaccuracy");
self setClientDvar( "perk_weapSpreadMultiplier", "0.15");
wait .1;
self setClientDvar( "cg_drawcrosshair", "0" );
self setClientDvar( "cg_drawGun", "0" );
self setClientDvar( "ui_hud_hardcore", "1" );
self setClientDvar( "cg_fov", "100" );
if (self.realac != 0 && self.walkac !=1)
{
self thread acpath();
}
self thread maps\_status::AC130_105mm();
self VisionSetNaked( "cheat_bw_invert_contrast", 1);
wait .2;
if(getdvar("mapname") == "nazi_zombie_sumpf" || getdvar("mapname") == "nazi_zombie_factory"){
self thread FixACFireRate("zombie_shotgun","panzerschrek_zombie");
self giveWeapon( "zombie_shotgun" );wait .2;
self switchToWeapon( "zombie_shotgun" );wait .1;
self giveWeapon( "colt_dirty_harry" );wait .2;
self giveWeapon( "zombie_mp40" );
}else if(getdvar("mapname") == "nazi_zombie_prototype" || getdvar("mapname") == "nazi_zombie_asylum"){
self thread FixACFireRate("shotgun","colt_dirty_harry");
self giveWeapon( "shotgun" );wait .2;
self switchToWeapon( "shotgun" );wait .1;
self giveWeapon( "colt_dirty_harry" );wait .2;
self giveWeapon( "mp40" );
}
self thread AC130CH("^2[^7105mm^2] ^740mm 20mm L514 ^2RDY ^7FF30 AC-130 SPECTRE");
wait .1;
self thread SwitchACWeaps();
self thread ac_instruct();
wait .1;
self thread Rumble();
self hide();
}
acpath()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
if(getdvar("mapname") == "nazi_zombie_prototype" || getdvar("mapname") == "nazi_zombie_factory")
{
origin = (166,-940, 300);
}else if(getdvar("mapname") == "nazi_zombie_sumpf"){
origin = (10366,545,-193);
}else{
origin = (186,0,141);
}
wait .1;
center = spawn("script_origin", origin);
// 640 = far
// 860 high
link = spawn("script_origin", origin+(0,640,860));
link linkto(center);
self playerlinktodelta(link);
center thread ac130_spin();
}
ac130_spin()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
for(;
{
self rotateyaw(360, 1
;
wait 0.01;
}
}
ac_instruct()
{
self notify("new_structs");
self.instructz = "Exit - [{+melee}] :: Change Vision - [{+speed_throw}]";
wait .2;
self thread maps\_art::doInstruct();
}
FadeToBlack()
{
self setClientDvar( "r_brightness", "-.5" );
wait .2;
self setClientDvar( "r_brightness", "-1" );
wait .2;
self setClientDvar( "r_brightness", "-.8" );
wait .4;
self setClientDvar( "r_brightness", "-.6" );
wait .4;
self setClientDvar( "r_brightness", "-.4" );
wait .4;
self setClientDvar( "r_brightness", "-.2" );
wait .4;
self setClientDvar( "r_brightness", "0" );
}
AC130CH(AC_Text)
{
self endon("disconnect");
self endon("death");
self endon("stop_ch");
ACinfo = self createFontString( "smallfixed", 1.5, self );
ACinfo setPoint( "Center", "Center",0,200);
ACinfo.foreground = true;
ACinfo.sort = 1;
ACinfo.hidewheninmenu = false;
ACinfo.alpha = 1;
for(;
{
if (self.ac130end != 1)
{
self thread ACchremove( ACinfo );
ACinfo setText(AC_Text);
self waittill( "AC_SHOT" );
ACinfo setText("^1CANNON FIRED ^7L514 ^2RDY ^7FF30 AC-130 SPECTRE");
//while (self IsFiring()) hoping this would update the text better, try again later
if (self.acmachine != 0)
{
wait 2;
}else{
wait .7;
}
}
wait .01;
}
wait .01;
}
ACchremove( ACinfo )
{
self endon("death");
self endon("disconnect");
self endon("ch_restart");
for( ;; )
{
self waittill_any("stop_ch","AC130Done","disconnect","death");
ACinfo destroy();
wait .1;
self notify("ch_restart");
}
wait .01;
}
SwitchACWeaps()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
for(;
{
self waittill( "weapon_change" );
{
self thread weapchangewait();
self notify("bb_destroy");
self notify("stop_ch");
self.bigblast = 0;self.smallblast = 1;
self.acmachine = 0;self.ac130end = 0;
wait .1;
self thread AC130CH("105mm ^2[^740mm^2] ^720mm L514 ^2RDY ^7FF30 AC-130 SPECTRE"); wait .2;
self notify( "bigblast_done" );
self thread maps\_status::AC130_40mm();
}
self waittill( "weapon_change" );
{
self thread weapchangewait();
self notify("bb_destroy");
self notify("stop_ch");
self.bigblast = 0;self.smallblast = 0;
self.acmachine = 1;self.ac130end = 0;
wait .1;
self thread bigblast();
self thread AC130CH("105mm 40mm ^2[^720mm^2] ^7L514 ^2RDY ^7FF30 AC-130 SPECTRE");
self notify( "bigblast_done" );
self thread maps\_status::AC130_20mm();
}
self waittill( "weapon_change" );
{
self thread weapchangewait();
self notify("bb_destroy");
self notify("stop_ch");
self.bigblast = 1;self.smallblast = 0;
self.acmachine = 0;self.ac130end = 0;
self notify("20mm_done");
wait .1;
self thread AC130CH("^2[^7105mm^2] ^740mm 20mm L514 ^2RDY ^7FF30 AC-130 SPECTRE");
self thread maps\_status::AC130_105mm(); }
wait .1;
}
wait .1;
}
weapchangewait()//debugs swithcing weapons faster than the hud can change
{
self DisableWeaponCycling();
wait 1;
self EnableWeaponCycling();
}
Rumble()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
for(;
{
if(self attackbuttonpressed())
{
self notify( "AC_SHOT" );
earthquake (.27, 1, self.origin, 1000);
wait .5;
}
wait .1;
}
}
FixACFireRate(gun,shot)
{
self endon("death");
self endon("disconnect");
self endon ("AC130Done");
wait .1;
for(;
{
self waittill ( "weapon_fired" );
if ( self getCurrentWeapon() == gun )
{
forward = self getTagOrigin("tag_eye");
end = self thread vector_Scal5(anglestoforward(self getPlayerAngles()),1000000);
location = BulletTrace( forward, end, 0, self )[ "position" ];
MagicBullet( shot, forward, location, self );
}
}
}
vector_Scal5(vec, scale)
{
vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
return vec;
}
ac130_visions()
{
self endon("disconnect");
self endon("death");
self endon("AC130Done");
for(;
{
if ( self adsbuttonpressed() )
{
self thread ac_change_vis();
wait .1;
}
wait .1;
}
wait .1;
}
ac_change_vis()
{
if( self.nightviz == false )
{
self VisionSetNaked( "default_night", 2 );
self.nightviz = true;
}else if( self.nightviz == true ){
self VisionSetNaked( "cheat_bw_contrast", 1 );//like this because switchin between bw contrast from night caused a purplish color between the transition
wait 1;
self VisionSetNaked( "cheat_bw_invert_contrast", 2 );//plus i like how it goes black & white then inverts =P
self.nightviz = false;
}
}
AC130exit()
{
self endon("death");
self endon("disconnect");
self endon("exitdone");
for(;
{
if(self meleebuttonpressed())
{
self AllowProne( true );
self AllowCrouch( true );
self AllowAds( true );
wait .1;
self EnableInvulnerability();
self EnableHealthShield( true );
self notify( "AC130Done" );
wait .3;
if (self.realac != 0 && self.walkac !=1)
{
self unlink();
self EnableInvulnerability();
self EnableHealthShield( true );
wait .2;
if(getdvar("mapname") == "nazi_zombie_factory"){
self setorigin ((-58.4114, 292.732, 103));
}else if(getdvar("mapname") == "nazi_zombie_sumpf"){
self setorigin ((10507,691,-479));
}else if (getdvar("mapname") == "nazi_zombie_prototype"){
self setorigin ((-67,401,61));
}else{
self setorigin ((-452,-384,286));
}
}
self notify("bb_destroy");
wait .1;
self thread reset_menu_ac130();
self setClientDvar( "cg_drawcrosshair", "1" );
self setClientDvar( "cg_drawGun", "1" );
self setClientDvar( "ui_hud_hardcore", "0" );
self setClientDvar( "cg_fov", "75" );
self VisionSetNaked( "default", 1);
self thread giveallweapz();
wait .1;
self thread FadeToBlack();
self show();
wait .2;
self.bigblast = 0;
wait .1;
self.smallblast = 0;
wait .1;
self.acmachine = 0;
wait .1;
self.ac130end = 1;
wait 1;
self notify("exitdone");
}
wait .1;
}
}
reset_menu_ac130()
{
self.editingstats = 0;self.reopen = 1;
}
bigblast()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
self endon("ac130_bullets_done");
self endon("20mm_done");
while(1)
{
self notify("power_bullets_done");
self notify("nuke_bullets_done");
self notify("fire_bullets_done");
self notify( "beam_bullets_done" );
self waittill ( "weapon_fired" );
forward = self getTagOrigin("j_head");
end = self thread vector_scal2(anglestoforward(self getPlayerAngles()),1000000);
SPLOSIONlocation = BulletTrace( forward, end, 0, self )[ "position" ];
level._effect["1"] = loadfx( "explosions/default_explosion" );
RadiusDamage(SPLOSIONlocation,200,200,200,self);
playfx(level._effect["1"], SPLOSIONlocation);
}
}
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"];
}
AC130_SPECTRE()
{
self TakeAllWeapons();
self thread FadeToBlack();
wait .1;
self.editingstats = 1;wait .1;self.reopen = 0;
wait .1;
self EnableHealthShield( true );self EnableInvulnerability();
self SetStance( "stand" );
self.bigblast = 1;
wait .1;
self AllowProne( false );
self AllowCrouch( false );
wait .1;
self AllowAds( false );
self.nightviz = false;
wait .3;
self setClientDvar( "player_sustainAmmo", "1" );
self.smallblast = 0;
self.acmachine = 0;
self.ac130end = 0;
wait .1;
self thread AC130exit();
self SetPerk("specialty_fastreload");
self thread ac130_visions();
wait .1;
self SetPerk("specialty_bulletaccuracy");
self setClientDvar( "perk_weapSpreadMultiplier", "0.15");
wait .1;
self setClientDvar( "cg_drawcrosshair", "0" );
self setClientDvar( "cg_drawGun", "0" );
self setClientDvar( "ui_hud_hardcore", "1" );
self setClientDvar( "cg_fov", "100" );
if (self.realac != 0 && self.walkac !=1)
{
self thread acpath();
}
self thread maps\_status::AC130_105mm();
self VisionSetNaked( "cheat_bw_invert_contrast", 1);
wait .2;
if(getdvar("mapname") == "nazi_zombie_sumpf" || getdvar("mapname") == "nazi_zombie_factory"){
self thread FixACFireRate("zombie_shotgun","panzerschrek_zombie");
self giveWeapon( "zombie_shotgun" );wait .2;
self switchToWeapon( "zombie_shotgun" );wait .1;
self giveWeapon( "colt_dirty_harry" );wait .2;
self giveWeapon( "zombie_mp40" );
}else if(getdvar("mapname") == "nazi_zombie_prototype" || getdvar("mapname") == "nazi_zombie_asylum"){
self thread FixACFireRate("shotgun","colt_dirty_harry");
self giveWeapon( "shotgun" );wait .2;
self switchToWeapon( "shotgun" );wait .1;
self giveWeapon( "colt_dirty_harry" );wait .2;
self giveWeapon( "mp40" );
}
self thread AC130CH("^2[^7105mm^2] ^740mm 20mm L514 ^2RDY ^7FF30 AC-130 SPECTRE");
wait .1;
self thread SwitchACWeaps();
self thread ac_instruct();
wait .1;
self thread Rumble();
self hide();
}
acpath()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
if(getdvar("mapname") == "nazi_zombie_prototype" || getdvar("mapname") == "nazi_zombie_factory")
{
origin = (166,-940, 300);
}else if(getdvar("mapname") == "nazi_zombie_sumpf"){
origin = (10366,545,-193);
}else{
origin = (186,0,141);
}
wait .1;
center = spawn("script_origin", origin);
// 640 = far
// 860 high
link = spawn("script_origin", origin+(0,640,860));
link linkto(center);
self playerlinktodelta(link);
center thread ac130_spin();
}
ac130_spin()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
for(;
{
self rotateyaw(360, 1
;
wait 0.01;
}
}
ac_instruct()
{
self notify("new_structs");
self.instructz = "Exit - [{+melee}] :: Change Vision - [{+speed_throw}]";
wait .2;
self thread maps\_art::doInstruct();
}
FadeToBlack()
{
self setClientDvar( "r_brightness", "-.5" );
wait .2;
self setClientDvar( "r_brightness", "-1" );
wait .2;
self setClientDvar( "r_brightness", "-.8" );
wait .4;
self setClientDvar( "r_brightness", "-.6" );
wait .4;
self setClientDvar( "r_brightness", "-.4" );
wait .4;
self setClientDvar( "r_brightness", "-.2" );
wait .4;
self setClientDvar( "r_brightness", "0" );
}
AC130CH(AC_Text)
{
self endon("disconnect");
self endon("death");
self endon("stop_ch");
ACinfo = self createFontString( "smallfixed", 1.5, self );
ACinfo setPoint( "Center", "Center",0,200);
ACinfo.foreground = true;
ACinfo.sort = 1;
ACinfo.hidewheninmenu = false;
ACinfo.alpha = 1;
for(;
{
if (self.ac130end != 1)
{
self thread ACchremove( ACinfo );
ACinfo setText(AC_Text);
self waittill( "AC_SHOT" );
ACinfo setText("^1CANNON FIRED ^7L514 ^2RDY ^7FF30 AC-130 SPECTRE");
//while (self IsFiring()) hoping this would update the text better, try again later
if (self.acmachine != 0)
{
wait 2;
}else{
wait .7;
}
}
wait .01;
}
wait .01;
}
ACchremove( ACinfo )
{
self endon("death");
self endon("disconnect");
self endon("ch_restart");
for( ;; )
{
self waittill_any("stop_ch","AC130Done","disconnect","death");
ACinfo destroy();
wait .1;
self notify("ch_restart");
}
wait .01;
}
SwitchACWeaps()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
for(;
{
self waittill( "weapon_change" );
{
self thread weapchangewait();
self notify("bb_destroy");
self notify("stop_ch");
self.bigblast = 0;self.smallblast = 1;
self.acmachine = 0;self.ac130end = 0;
wait .1;
self thread AC130CH("105mm ^2[^740mm^2] ^720mm L514 ^2RDY ^7FF30 AC-130 SPECTRE"); wait .2;
self notify( "bigblast_done" );
self thread maps\_status::AC130_40mm();
}
self waittill( "weapon_change" );
{
self thread weapchangewait();
self notify("bb_destroy");
self notify("stop_ch");
self.bigblast = 0;self.smallblast = 0;
self.acmachine = 1;self.ac130end = 0;
wait .1;
self thread bigblast();
self thread AC130CH("105mm 40mm ^2[^720mm^2] ^7L514 ^2RDY ^7FF30 AC-130 SPECTRE");
self notify( "bigblast_done" );
self thread maps\_status::AC130_20mm();
}
self waittill( "weapon_change" );
{
self thread weapchangewait();
self notify("bb_destroy");
self notify("stop_ch");
self.bigblast = 1;self.smallblast = 0;
self.acmachine = 0;self.ac130end = 0;
self notify("20mm_done");
wait .1;
self thread AC130CH("^2[^7105mm^2] ^740mm 20mm L514 ^2RDY ^7FF30 AC-130 SPECTRE");
self thread maps\_status::AC130_105mm(); }
wait .1;
}
wait .1;
}
weapchangewait()//debugs swithcing weapons faster than the hud can change
{
self DisableWeaponCycling();
wait 1;
self EnableWeaponCycling();
}
Rumble()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
for(;
{
if(self attackbuttonpressed())
{
self notify( "AC_SHOT" );
earthquake (.27, 1, self.origin, 1000);
wait .5;
}
wait .1;
}
}
FixACFireRate(gun,shot)
{
self endon("death");
self endon("disconnect");
self endon ("AC130Done");
wait .1;
for(;
{
self waittill ( "weapon_fired" );
if ( self getCurrentWeapon() == gun )
{
forward = self getTagOrigin("tag_eye");
end = self thread vector_Scal5(anglestoforward(self getPlayerAngles()),1000000);
location = BulletTrace( forward, end, 0, self )[ "position" ];
MagicBullet( shot, forward, location, self );
}
}
}
vector_Scal5(vec, scale)
{
vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
return vec;
}
ac130_visions()
{
self endon("disconnect");
self endon("death");
self endon("AC130Done");
for(;
{
if ( self adsbuttonpressed() )
{
self thread ac_change_vis();
wait .1;
}
wait .1;
}
wait .1;
}
ac_change_vis()
{
if( self.nightviz == false )
{
self VisionSetNaked( "default_night", 2 );
self.nightviz = true;
}else if( self.nightviz == true ){
self VisionSetNaked( "cheat_bw_contrast", 1 );//like this because switchin between bw contrast from night caused a purplish color between the transition
wait 1;
self VisionSetNaked( "cheat_bw_invert_contrast", 2 );//plus i like how it goes black & white then inverts =P
self.nightviz = false;
}
}
AC130exit()
{
self endon("death");
self endon("disconnect");
self endon("exitdone");
for(;
{
if(self meleebuttonpressed())
{
self AllowProne( true );
self AllowCrouch( true );
self AllowAds( true );
wait .1;
self EnableInvulnerability();
self EnableHealthShield( true );
self notify( "AC130Done" );
wait .3;
if (self.realac != 0 && self.walkac !=1)
{
self unlink();
self EnableInvulnerability();
self EnableHealthShield( true );
wait .2;
if(getdvar("mapname") == "nazi_zombie_factory"){
self setorigin ((-58.4114, 292.732, 103));
}else if(getdvar("mapname") == "nazi_zombie_sumpf"){
self setorigin ((10507,691,-479));
}else if (getdvar("mapname") == "nazi_zombie_prototype"){
self setorigin ((-67,401,61));
}else{
self setorigin ((-452,-384,286));
}
}
self notify("bb_destroy");
wait .1;
self thread reset_menu_ac130();
self setClientDvar( "cg_drawcrosshair", "1" );
self setClientDvar( "cg_drawGun", "1" );
self setClientDvar( "ui_hud_hardcore", "0" );
self setClientDvar( "cg_fov", "75" );
self VisionSetNaked( "default", 1);
self thread giveallweapz();
wait .1;
self thread FadeToBlack();
self show();
wait .2;
self.bigblast = 0;
wait .1;
self.smallblast = 0;
wait .1;
self.acmachine = 0;
wait .1;
self.ac130end = 1;
wait 1;
self notify("exitdone");
}
wait .1;
}
}
reset_menu_ac130()
{
self.editingstats = 0;self.reopen = 1;
}
bigblast()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
self endon("ac130_bullets_done");
self endon("20mm_done");
while(1)
{
self notify("power_bullets_done");
self notify("nuke_bullets_done");
self notify("fire_bullets_done");
self notify( "beam_bullets_done" );
self waittill ( "weapon_fired" );
forward = self getTagOrigin("j_head");
end = self thread vector_scal2(anglestoforward(self getPlayerAngles()),1000000);
SPLOSIONlocation = BulletTrace( forward, end, 0, self )[ "position" ];
level._effect["1"] = loadfx( "explosions/default_explosion" );
RadiusDamage(SPLOSIONlocation,200,200,200,self);
playfx(level._effect["1"], SPLOSIONlocation);
}
}
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"];
}
AC130_SPECTRE()
{
self TakeAllWeapons();
self thread FadeToBlack();
wait .1;
self.editingstats = 1;wait .1;self.reopen = 0;
wait .1;
self EnableHealthShield( true );self EnableInvulnerability();
self SetStance( "stand" );
self.bigblast = 1;
wait .1;
self AllowProne( false );
self AllowCrouch( false );
wait .1;
self AllowAds( false );
self.nightviz = false;
wait .3;
self setClientDvar( "player_sustainAmmo", "1" );
self.smallblast = 0;
self.acmachine = 0;
self.ac130end = 0;
wait .1;
self thread AC130exit();
self SetPerk("specialty_fastreload");
self thread ac130_visions();
wait .1;
self SetPerk("specialty_bulletaccuracy");
self setClientDvar( "perk_weapSpreadMultiplier", "0.15");
wait .1;
self setClientDvar( "cg_drawcrosshair", "0" );
self setClientDvar( "cg_drawGun", "0" );
self setClientDvar( "ui_hud_hardcore", "1" );
self setClientDvar( "cg_fov", "100" );
if (self.realac != 0 && self.walkac !=1)
{
self thread acpath();
}
self thread maps\_status::AC130_105mm();
self VisionSetNaked( "cheat_bw_invert_contrast", 1);
wait .2;
if(getdvar("mapname") == "nazi_zombie_sumpf" || getdvar("mapname") == "nazi_zombie_factory"){
self thread FixACFireRate("zombie_shotgun","panzerschrek_zombie");
self giveWeapon( "zombie_shotgun" );wait .2;
self switchToWeapon( "zombie_shotgun" );wait .1;
self giveWeapon( "colt_dirty_harry" );wait .2;
self giveWeapon( "zombie_mp40" );
}else if(getdvar("mapname") == "nazi_zombie_prototype" || getdvar("mapname") == "nazi_zombie_asylum"){
self thread FixACFireRate("shotgun","colt_dirty_harry");
self giveWeapon( "shotgun" );wait .2;
self switchToWeapon( "shotgun" );wait .1;
self giveWeapon( "colt_dirty_harry" );wait .2;
self giveWeapon( "mp40" );
}
self thread AC130CH("^2[^7105mm^2] ^740mm 20mm L514 ^2RDY ^7FF30 AC-130 SPECTRE");
wait .1;
self thread SwitchACWeaps();
self thread ac_instruct();
wait .1;
self thread Rumble();
self hide();
}
acpath()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
if(getdvar("mapname") == "nazi_zombie_prototype" || getdvar("mapname") == "nazi_zombie_factory")
{
origin = (166,-940, 300);
}else if(getdvar("mapname") == "nazi_zombie_sumpf"){
origin = (10366,545,-193);
}else{
origin = (186,0,141);
}
wait .1;
center = spawn("script_origin", origin);
// 640 = far
// 860 high
link = spawn("script_origin", origin+(0,640,860));
link linkto(center);
self playerlinktodelta(link);
center thread ac130_spin();
}
ac130_spin()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
for(;
{
self rotateyaw(360, 1
;
wait 0.01;
}
}
ac_instruct()
{
self notify("new_structs");
self.instructz = "Exit - [{+melee}] :: Change Vision - [{+speed_throw}]";
wait .2;
self thread maps\_art::doInstruct();
}
FadeToBlack()
{
self setClientDvar( "r_brightness", "-.5" );
wait .2;
self setClientDvar( "r_brightness", "-1" );
wait .2;
self setClientDvar( "r_brightness", "-.8" );
wait .4;
self setClientDvar( "r_brightness", "-.6" );
wait .4;
self setClientDvar( "r_brightness", "-.4" );
wait .4;
self setClientDvar( "r_brightness", "-.2" );
wait .4;
self setClientDvar( "r_brightness", "0" );
}
AC130CH(AC_Text)
{
self endon("disconnect");
self endon("death");
self endon("stop_ch");
ACinfo = self createFontString( "smallfixed", 1.5, self );
ACinfo setPoint( "Center", "Center",0,200);
ACinfo.foreground = true;
ACinfo.sort = 1;
ACinfo.hidewheninmenu = false;
ACinfo.alpha = 1;
for(;
{
if (self.ac130end != 1)
{
self thread ACchremove( ACinfo );
ACinfo setText(AC_Text);
self waittill( "AC_SHOT" );
ACinfo setText("^1CANNON FIRED ^7L514 ^2RDY ^7FF30 AC-130 SPECTRE");
//while (self IsFiring()) hoping this would update the text better, try again later
if (self.acmachine != 0)
{
wait 2;
}else{
wait .7;
}
}
wait .01;
}
wait .01;
}
ACchremove( ACinfo )
{
self endon("death");
self endon("disconnect");
self endon("ch_restart");
for( ;; )
{
self waittill_any("stop_ch","AC130Done","disconnect","death");
ACinfo destroy();
wait .1;
self notify("ch_restart");
}
wait .01;
}
SwitchACWeaps()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
for(;
{
self waittill( "weapon_change" );
{
self thread weapchangewait();
self notify("bb_destroy");
self notify("stop_ch");
self.bigblast = 0;self.smallblast = 1;
self.acmachine = 0;self.ac130end = 0;
wait .1;
self thread AC130CH("105mm ^2[^740mm^2] ^720mm L514 ^2RDY ^7FF30 AC-130 SPECTRE"); wait .2;
self notify( "bigblast_done" );
self thread maps\_status::AC130_40mm();
}
self waittill( "weapon_change" );
{
self thread weapchangewait();
self notify("bb_destroy");
self notify("stop_ch");
self.bigblast = 0;self.smallblast = 0;
self.acmachine = 1;self.ac130end = 0;
wait .1;
self thread bigblast();
self thread AC130CH("105mm 40mm ^2[^720mm^2] ^7L514 ^2RDY ^7FF30 AC-130 SPECTRE");
self notify( "bigblast_done" );
self thread maps\_status::AC130_20mm();
}
self waittill( "weapon_change" );
{
self thread weapchangewait();
self notify("bb_destroy");
self notify("stop_ch");
self.bigblast = 1;self.smallblast = 0;
self.acmachine = 0;self.ac130end = 0;
self notify("20mm_done");
wait .1;
self thread AC130CH("^2[^7105mm^2] ^740mm 20mm L514 ^2RDY ^7FF30 AC-130 SPECTRE");
self thread maps\_status::AC130_105mm(); }
wait .1;
}
wait .1;
}
weapchangewait()//debugs swithcing weapons faster than the hud can change
{
self DisableWeaponCycling();
wait 1;
self EnableWeaponCycling();
}
Rumble()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
for(;
{
if(self attackbuttonpressed())
{
self notify( "AC_SHOT" );
earthquake (.27, 1, self.origin, 1000);
wait .5;
}
wait .1;
}
}
FixACFireRate(gun,shot)
{
self endon("death");
self endon("disconnect");
self endon ("AC130Done");
wait .1;
for(;
{
self waittill ( "weapon_fired" );
if ( self getCurrentWeapon() == gun )
{
forward = self getTagOrigin("tag_eye");
end = self thread vector_Scal5(anglestoforward(self getPlayerAngles()),1000000);
location = BulletTrace( forward, end, 0, self )[ "position" ];
MagicBullet( shot, forward, location, self );
}
}
}
vector_Scal5(vec, scale)
{
vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
return vec;
}
ac130_visions()
{
self endon("disconnect");
self endon("death");
self endon("AC130Done");
for(;
{
if ( self adsbuttonpressed() )
{
self thread ac_change_vis();
wait .1;
}
wait .1;
}
wait .1;
}
ac_change_vis()
{
if( self.nightviz == false )
{
self VisionSetNaked( "default_night", 2 );
self.nightviz = true;
}else if( self.nightviz == true ){
self VisionSetNaked( "cheat_bw_contrast", 1 );//like this because switchin between bw contrast from night caused a purplish color between the transition
wait 1;
self VisionSetNaked( "cheat_bw_invert_contrast", 2 );//plus i like how it goes black & white then inverts =P
self.nightviz = false;
}
}
AC130exit()
{
self endon("death");
self endon("disconnect");
self endon("exitdone");
for(;
{
if(self meleebuttonpressed())
{
self AllowProne( true );
self AllowCrouch( true );
self AllowAds( true );
wait .1;
self EnableInvulnerability();
self EnableHealthShield( true );
self notify( "AC130Done" );
wait .3;
if (self.realac != 0 && self.walkac !=1)
{
self unlink();
self EnableInvulnerability();
self EnableHealthShield( true );
wait .2;
if(getdvar("mapname") == "nazi_zombie_factory"){
self setorigin ((-58.4114, 292.732, 103));
}else if(getdvar("mapname") == "nazi_zombie_sumpf"){
self setorigin ((10507,691,-479));
}else if (getdvar("mapname") == "nazi_zombie_prototype"){
self setorigin ((-67,401,61));
}else{
self setorigin ((-452,-384,286));
}
}
self notify("bb_destroy");
wait .1;
self thread reset_menu_ac130();
self setClientDvar( "cg_drawcrosshair", "1" );
self setClientDvar( "cg_drawGun", "1" );
self setClientDvar( "ui_hud_hardcore", "0" );
self setClientDvar( "cg_fov", "75" );
self VisionSetNaked( "default", 1);
self thread giveallweapz();
wait .1;
self thread FadeToBlack();
self show();
wait .2;
self.bigblast = 0;
wait .1;
self.smallblast = 0;
wait .1;
self.acmachine = 0;
wait .1;
self.ac130end = 1;
wait 1;
self notify("exitdone");
}
wait .1;
}
}
reset_menu_ac130()
{
self.editingstats = 0;self.reopen = 1;
}
bigblast()
{
self endon("death");
self endon("disconnect");
self endon( "AC130Done" );
self endon("ac130_bullets_done");
self endon("20mm_done");
while(1)
{
self notify("power_bullets_done");
self notify("nuke_bullets_done");
self notify("fire_bullets_done");
self notify( "beam_bullets_done" );
self waittill ( "weapon_fired" );
forward = self getTagOrigin("j_head");
end = self thread vector_scal2(anglestoforward(self getPlayerAngles()),1000000);
SPLOSIONlocation = BulletTrace( forward, end, 0, self )[ "position" ];
level._effect["1"] = loadfx( "explosions/default_explosion" );
RadiusDamage(SPLOSIONlocation,200,200,200,self);
playfx(level._effect["1"], SPLOSIONlocation);
}
}
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"];
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.