try these settings in wmdcontrol.cfg
// Static view
// Off = 0
// On = 1 (default)
set ex_ac130_static "0"
// AC130 HUD Text on Screen
// Off = 0
// On = 1 (default)
set ex_ac130_hud "1"
// Thermal view
// Off = 0
// On = 1 (default)
set ex_ac130_thermal "1"
// AC130 Hud Grain
// Off = 0
// On = 1 (default)
set enable_ac130_hud_grain "0"
and press "melee" button to switch from thermal to normal view
and try this
_ac130.gsc settings
( find it in zz_svr_x4.iwd / maps/mp)
(save a copy of original one,just in case)
then copy paste these settings onto _ac130.gsc file
#include maps\mp\_utility;
#include maps\mp\_dvardef;
init()
{
level.ac130_time = createdvar("ac130_time",60,0,300,"int");
level.ac130_rotationSpeed = createdvar("ac130_speed",60,0,150,"int");
level.ac130_maxhealth = createdvar("ac130_health",1000,500,3000,"int");
level.ac130_armor = createdvar("ac130_armor",100,10,950,"int");
level.ac130_hud_grain = createdvar("enable_ac130_hud_grain",1,0,1,"int");
level.ac130_exploded = false;
precacheModel("c130_zoomrig");
precacheModel("vehicle_ac130_low");
precacheShader("ac130_overlay_25mm");
precacheShader("ac130_overlay_40mm");
precacheShader("ac130_overlay_105mm");
precacheShader("ac130_overlay_grain");
precacheShader("black");
precacheItem("ac130_25mm_mp");
precacheItem("ac130_40mm_mp");
precacheItem("ac130_105mm_mp");
precacheShader("compass_objpoint_ac130_green");
precacheShader("compass_objpoint_ac130_red");
precacheShader( "hud_ac130" );
level.physicsSphereForce["ac130_25mm_mp"] = 0.5;
level.physicsSphereForce["ac130_40mm_mp"] = 3.0;
level.physicsSphereForce["ac130_105mm_mp"] = 6.0;
level.physicsSphereRadius["ac130_25mm_mp"] = 200;
level.physicsSphereRadius["ac130_40mm_mp"] = 600;
level.physicsSphereRadius["ac130_105mm_mp"] = 1000;
level.ac130_fx = loadfx ("explosions/helicopter_explosion_cobra");
level.ac130_sound["axis"]["crash"] = "hind_helicopter_crash";
level.ac130_sound["allies"]["crash"] = "cobra_helicopter_crash";
level thread GetMapDim();
level thread GetFieldDim();
level.ac130Origin = getAboveBuildingsLocation(level.ex_playArea_Centre);
}
main()
{
}
main_ac130()
{
level.ac130 = spawn("script_model", level.ac130Origin);
level.ac130 setModel("c130_zoomrig");
level.ac130.angles = (0,75,0);
level.ac130.health_low = level.ac130_maxhealth*0.8;
level.ac130.health_bulletdamageble = level.ac130_armor;
level.ac130.team = self.pers["team"];
level.ac130_exploded = false;
level.ac130.attacker = undefined;
level.ac130.currentstate = "ok";
level.ac130.owner = self;
level.ac130 hide();
level.ac130Model = spawn("script_model", level.ac130Origin);
level.ac130Model setModel("vehicle_ac130_low");
level.ac130Model.angles = (0,75,0);
level.ac130Model linkTo(level.ac130, "tag_player", (0,0,0), (0,0,0));
level.ac130Model.health_low = level.ac130_maxhealth*0.8;
level.ac130Model.health_bulletdamageble = level.ac130_armor;
level.ac130Model.team = self.pers["team"];
level.ac130Model.attacker = undefined;
level.ac130Model.currentstate = "ok";
level.ac130Model.owner = self;
level.ac130Model thread ac130_damage_monitor();
level.ac130Model thread ac130_health();
level.ac130 thread ac130_damage_monitor();
level.ac130 thread ac130_health();
level.ac130 thread rotatePlane(true);
level.ac130 thread ac130_monitor_owner();
}
ac130_monitor_owner()
{
self endon( "leaving" );
self endon("left_ac130");
self endon("crashing");
self endon("death");
while(1)
{
if ( !isDefined( self.owner ) && isDefined(level.ac130))
{
self thread ac130_leave();
}
if(!isDefined(level.ac130) || !isDefined(level.ac130Model))
{
self notify("stop_rotatePlane_thread");
break;
}
wait 1;
}
}
ac130_attachPlayer()
{
self endon("joined_spectators");
self endon("disconnect");
self endon("death");
//level.ac130 show();
//level.ac130model show();
// Give all the ac130 weapons
if( !self hasWeapon( "ac130_25mm_mp" ) )
{
self giveweapon( "ac130_25mm_mp" );
}
if( !self hasWeapon( "ac130_40mm_mp" ) )
{
self giveweapon( "ac130_40mm_mp" );
}
if( !self hasWeapon( "ac130_105mm_mp" ) )
{
self giveweapon( "ac130_105mm_mp" );
}
self.thermal = false;
self.inAc130 = true;
level.ac130Player = self;
self linkTo(level.ac130, "tag_player", (4000,0,0), (0,0,0));
self hide();
self.food = self.maxhealth;
self.maxhealth = 999999;
self.health = self.maxhealth;
self setClientDvar( "ui_hud_hardcore", 1 );
if(level.ex_air_raid_global) thread extreme\_ex_utils::playSoundLoc("air_raid",(0,0,0));
if(level.ex_air_raid_team) thread extreme\_ex_utils::playSoundOnPlayers("air_raid");
if(level.ac130_hud_grain)
{
self setClientDvar( "ui_player_ac130", 1 );
}
self thread ac130_hud();
self thread changeWeapons();
self thread shotFired();
self thread CleanUp_AC130();
self thread check_weap_proper();
if(level.ex_ac130_thermal)
{
self thread togglethermalOn();
}
self iprintlnbold("You have ^3" + level.ac130_time + " ^7seconds.");
wait 1;
wait level.ac130_time;
if( isPlayer(self) && isAlive(self) && self.inAc130 && isDefined(level.ac130) )
{
level.ac130_exploded = false;
self thread goToLz();
}
}
CleanUp_AC130()
{
if(isDefined(level.ex_mapannouncer)) level.ex_mapannouncer destroy();
if(isDefined(self.hud_statsscore)) self.hud_statsscore destroy();
if(isDefined(self.hud_statshead)) self.hud_statshead destroy();
if(isDefined(self.hud_statsknife)) self.hud_statsknife destroy();
if(isDefined(self.hud_statsnade)) self.hud_statsnade destroy();
if(isDefined(self.hud_statskill)) self.hud_statskill destroy();
if(isDefined(self.hud_statsdeath)) self.hud_statsdeath destroy();
if(isDefined(self.hud_statskd)) self.hud_statskd destroy();
if(isDefined(self.ex_healthbar)) self.ex_healthbar destroy();
if(isDefined(self.ex_healthback)) self.ex_healthback destroy();
if(isDefined(self.ex_healthcross)) self.ex_healthcross destroy();
if(isDefined(self.ex_firstaidicon)) self.ex_firstaidicon destroy();
if(isDefined(self.ex_firstaidval)) self.ex_firstaidval destroy();
if(isDefined(level.logo_img)) level.logo_img destroy();
if(isDefined(level.ex_alliesicon)) level.ex_alliesicon destroy();
if(isDefined(level.ex_alliesnumber)) level.ex_alliesnumber destroy();
if(isDefined(level.ex_axisicon)) level.ex_axisicon destroy();
if(isDefined(level.ex_axisnumber)) level.ex_axisnumber destroy();
if(isDefined(level.ex_deadalliesicon)) level.ex_deadalliesicon destroy();
if(isDefined(level.ex_deadalliesnumber)) level.ex_deadalliesnumber destroy();
if(isDefined(level.ex_deadaxisicon)) level.ex_deadaxisicon destroy();
if(isDefined(level.ex_deadaxisnumber)) level.ex_deadaxisnumber destroy();
if(isDefined(self .ex_hudstats)) self.hud_stats destroy();
if(isDefined(self.ex_laserdot)) self.ex_laserdot destroy();
if(isDefined(self.ex_hudstats)) self.ex_hudstats destroy();
}
goToLz()
{
if( self hasWeapon( "ac130_25mm_mp" ) )
{ self takeWeapon( "ac130_25mm_mp" ); }
if( self hasWeapon( "ac130_40mm_mp" ) )
{ self takeWeapon( "ac130_40mm_mp" ); }
if( self hasWeapon( "ac130_105mm_mp" ) )
{ self takeWeapon( "ac130_105mm_mp" ); }
wait 1;
if(level.ac130_exploded == false)
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
self unlink();
self setorigin(spawnpoint.origin);
self setplayerangles(spawnpoint.angles);
self show();
}
self notify("left_ac130");
if(!level.hardcoreMode)
{
self setClientDvar( "ui_hud_hardcore", 0 );
}
self.thermal = false;
self setclientdvar("r_filmtweakdesaturation", 0);
self setclientdvar("r_filmtweakenable", 0);
self setclientdvar("r_filmusetweaks", 0);
self setclientdvar("r_filmtweakbrightness", 0);
if(!isDefined(level.emp))
{
if(level.ex_hudstats) self thread extreme\_ex_hudstats::main();
if(level.ex_healthbar) self thread extreme\_ex_healthbar::start();
if(level.ex_firstaid_kits != 0) self thread extreme\_ex_firstaid::start();
if(level.ex_logo) self thread extreme\_ex_logo::init();
if(level.ex_laserdot) self thread extreme\_ex_laserdot::start();
}
self.inAc130 = false;
self.maxhealth = self.food;
self.health = self.maxhealth;
level.ac130Player = undefined;
weaponsList = self GetWeaponsList();
primary = undefined;
for( idx = 0; idx <weaponsList>= weapon.size) currentWeapon = 0;
self setClientDvar( "cg_fov", weapon[currentWeapon].fov );
self switchToWeapon( weapon[currentWeapon].weapon );
self setWeaponAmmoClip( weapon[currentWeapon].weapon, 999 );
self thread setWepText(weapon[currentWeapon].settext);
self thread setOverlay(weapon[currentWeapon].overlay);
//self iPrintln( "Switched to: " + weapon[currentWeapon].name );
self PlayLocalSound( "weap_rpg_twist_plr" );
while(self useButtonPressed()) wait 0.05;
}
}
check_weap_proper()
{
self endon("death");
self endon("disconnect");
self endon("joined_spectators");
self endon("left_ac130");
while(1)
{
wait 0.05;
weapon = self getCurrentWeapon();
if(!isSubStr(weapon, "ac130_"))
{
self switchToWeapon( "ac130_25mm_mp" );
self setWeaponAmmoClip( "ac130_overlay_25mm", 999 );
self thread setOverlay( "ac130_overlay_25mm" );
self PlayLocalSound( "weap_rpg_twist_plr" );
}
else
{
}
}
}
togglethermalOn()
{
self endon("death");
self endon("disconnect");
self endon("joined_spectators");
self endon("left_ac130");
while(isAlive(self))
{
wait 0.02;
wait (0.2);
if(self meleeButtonPressed() && self.thermal == true)
{
self.thermal = false;
self PlayLocalSound("item_nightvision_off");
self setClientDvar("r_filmtweakdesaturation", 0);
self setClientDvar("r_filmtweakenable", 0);
self setClientDvar("r_filmusetweaks", 0);
self setClientDvar("r_filmtweakbrightness", 0);
}
else
if(self meleeButtonPressed() && self.thermal == false)
{
self.thermal = true;
self PlayLocalSound( "item_nightvision_on" );
self setclientdvar("r_filmtweakinvert", 1);
self setClientDvar("r_filmtweakdesaturation", 1);
self setClientDvar("r_filmtweakenable", 1);
self setClientDvar("r_filmusetweaks", 1);
self setClientDvar("r_filmtweakbrightness", 0.001);
}
}
}
setOverlay(overlay)
{
self endon("death");
self endon("disconnect");
self endon("joined_spectators");
//Setup some huds
if( !isDefined( self.ac130_timer ) )
{
self.ac130_timer = newClientHudElem( self );
self.ac130_timer.x = 635;
self.ac130_timer.y = 250;
self.ac130_timer.alignx = "right";
self.ac130_timer.aligny = "middle";
self.ac130_timer.horzAlign = "fullscreen";
self.ac130_timer.vertAlign = "fullscreen";
self.ac130_timer.alpha = 1.0;
self.ac130_timer.fontScale = 2;
self.ac130_timer.sort = 100;
self.ac130_timer.foreground = true;
self.ac130_timer.glowAlpha = 0.1;
self.ac130_timer.glowColor = (0, 1, 0);
self.ac130_timer setTimer( level.ac130_time );
}
if( !isDefined( self.ac130_overlay ) )
{
self.ac130_overlay = newClientHudElem( self );
self.ac130_overlay.x = 0;
self.ac130_overlay.y = 0;
self.ac130_overlay.alignX = "center";
self.ac130_overlay.alignY = "middle";
self.ac130_overlay.horzAlign = "center";
self.ac130_overlay.vertAlign = "middle";
self.ac130_overlay.foreground = true;
}
self.ac130_overlay setshader(overlay, 640, 480);
self waittill("left_ac130");
if( isDefined(self.ac130_timer ) )
{ self.ac130_timer destroy(); }
if (isDefined(self.ac130_overlay))
{ self.ac130_overlay destroy(); }
}
ac130_hud()
{
self endon("death");
self endon("disconnect");
self endon("joined_spectators");
self.HUDItem[ "hud_text_top" ] = newClientHudElem( self );
self.HUDItem[ "hud_text_top" ].x = 0;
self.HUDItem[ "hud_text_top" ].y = 0;
self.HUDItem[ "hud_text_top" ].alignX = "left";
self.HUDItem[ "hud_text_top" ].alignY = "top";
self.HUDItem[ "hud_text_top" ].horzAlign = "left";
self.HUDItem[ "hud_text_top" ].vertAlign = "top";
self.HUDItem[ "hud_text_top" ].fontScale = 2.5;
self.HUDItem[ "hud_text_top" ] settext ( &"AC130_HUD_TOP_BAR" );
self.HUDItem[ "hud_text_top" ].glowColor = (0.2, 0.3, 0.7);
self.HUDItem[ "hud_text_top" ].glowAlpha = 1;
self.HUDItem[ "hud_text_top" ].alpha = 1.0;
self.HUDItem[ "hud_text_left" ] = newClientHudElem( self );
self.HUDItem[ "hud_text_left" ].x = 0;
self.HUDItem[ "hud_text_left" ].y = 60;
self.HUDItem[ "hud_text_left" ].alignX = "left";
self.HUDItem[ "hud_text_left" ].alignY = "top";
self.HUDItem[ "hud_text_left" ].horzAlign = "left";
self.HUDItem[ "hud_text_left" ].vertAlign = "top";
self.HUDItem[ "hud_text_left" ].fontScale = 2.5;
self.HUDItem[ "hud_text_left" ] settext ( &"AC130_HUD_LEFT_BLOCK" );
self.HUDItem[ "hud_text_left" ].glowColor = (0.2, 0.3, 0.7);
self.HUDItem[ "hud_text_left" ].glowAlpha = 1;
self.HUDItem[ "hud_text_left" ].alpha = 1.0;
self.HUDItem[ "hud_text_right" ] = newClientHudElem( self );
self.HUDItem[ "hud_text_right" ].x = 0;
self.HUDItem[ "hud_text_right" ].y = 50;
self.HUDItem[ "hud_text_right" ].alignX = "right";
self.HUDItem[ "hud_text_right" ].alignY = "top";
self.HUDItem[ "hud_text_right" ].horzAlign = "right";
self.HUDItem[ "hud_text_right" ].vertAlign = "top";
self.HUDItem[ "hud_text_right" ].fontScale = 2.5;
self.HUDItem[ "hud_text_right" ] settext ( &"AC130_HUD_RIGHT_BLOCK" );
self.HUDItem[ "hud_text_right" ].glowColor = (0.2, 0.3, 0.7);
self.HUDItem[ "hud_text_right" ].glowAlpha = 1;
self.HUDItem[ "hud_text_right" ].alpha = 1.0;
self.HUDItem[ "hud_text_bottom" ] = newClientHudElem( self );
self.HUDItem[ "hud_text_bottom" ].x = 0;
self.HUDItem[ "hud_text_bottom" ].y = 0;
self.HUDItem[ "hud_text_bottom" ].alignX = "center";
self.HUDItem[ "hud_text_bottom" ].alignY = "bottom";
self.HUDItem[ "hud_text_bottom" ].horzAlign = "center";
self.HUDItem[ "hud_text_bottom" ].vertAlign = "bottom";
self.HUDItem[ "hud_text_bottom" ].fontScale = 2.5;
self.HUDItem[ "hud_text_bottom" ] settext ( &"AC130_HUD_BOTTOM_BLOCK" );
self.HUDItem[ "hud_text_bottom" ].glowColor = (0.2, 0.3, 0.7);
self.HUDItem[ "hud_text_bottom" ].glowAlpha = 1;
self.HUDItem[ "hud_text_bottom" ].alpha = 1.0;
self.HUDItem[ "thermal_mode" ] = newClientHudElem( self );
self.HUDItem[ "thermal_mode" ].x = -80;
self.HUDItem[ "thermal_mode" ].y = 50;
self.HUDItem[ "thermal_mode" ].alignX = "right";
self.HUDItem[ "thermal_mode" ].alignY = "top";
self.HUDItem[ "thermal_mode" ].horzAlign = "right";
self.HUDItem[ "thermal_mode" ].vertAlign = "top";
self.HUDItem[ "thermal_mode" ].fontScale = 2.5;
self.HUDItem[ "thermal_mode" ] settext ( &"AC130_HUD_THERMAL_WHOT" );
self.HUDItem[ "thermal_mode" ].glowColor = (0.2, 0.3, 0.7);
self.HUDItem[ "thermal_mode" ].glowAlpha = 1;
self.HUDItem[ "thermal_mode" ].alpha = 1.0;
self.HUDItem[ "coordinate_agl" ] = newClientHudElem( self );
self.HUDItem[ "coordinate_agl" ].x = 0;
self.HUDItem[ "coordinate_agl" ].y = 20;
self.HUDItem[ "coordinate_agl" ].alignX = "right";
self.HUDItem[ "coordinate_agl" ].alignY = "top";
self.HUDItem[ "coordinate_agl" ].horzAlign = "right";
self.HUDItem[ "coordinate_agl" ].vertAlign = "top";
self.HUDItem[ "coordinate_agl" ].fontScale = 2.5;
self.HUDItem[ "coordinate_agl" ] settext ( &"AC130_HUD_AGL" );
self.HUDItem[ "coordinate_agl" ].glowColor = (0.2, 0.3, 0.7);
self.HUDItem[ "coordinate_agl" ].glowAlpha = 1;
self.HUDItem[ "coordinate_agl" ].alpha = 1.0;
self.HUDItem[ "keypress" ] = newClientHudElem( self );
self.HUDItem[ "keypress" ].x = 0;
self.HUDItem[ "keypress" ].y = -60;
self.HUDItem[ "keypress" ].alignX = "left";
self.HUDItem[ "keypress" ].alignY = "bottom";
self.HUDItem[ "keypress" ].horzAlign = "left";
self.HUDItem[ "keypress" ].vertAlign = "bottom";
self.HUDItem[ "keypress" ].fontScale = 1.5;
self.HUDItem[ "keypress" ] settext ( &"AC130_HINT_CYCLE_WEAPONS" );
self.HUDItem[ "keypress" ].alpha = 1.0;
if(!level.ac130_hud_grain)
{
self.HUDItem[ "keypressthermal" ] = newClientHudElem( self );
self.HUDItem[ "keypressthermal" ].x = 0;
self.HUDItem[ "keypressthermal" ].y = -40;
self.HUDItem[ "keypressthermal" ].alignX = "left";
self.HUDItem[ "keypressthermal" ].alignY = "bottom";
self.HUDItem[ "keypressthermal" ].horzAlign = "left";
self.HUDItem[ "keypressthermal" ].vertAlign = "bottom";
self.HUDItem[ "keypressthermal" ].fontScale = 1.5;
self.HUDItem[ "keypressthermal" ] settext ( &"AC130_HINT_TOGGLE_THERMAL" );
self.HUDItem[ "keypressthermal" ].alpha = 1.0;
}
self waittill("left_ac130");
hud_items = [];
hud_items[ hud_items.size ] = "hud_text_top";
hud_items[ hud_items.size ] = "hud_text_left";
hud_items[ hud_items.size ] = "hud_text_right";
hud_items[ hud_items.size ] = "hud_text_bottom";
hud_items[ hud_items.size ] = "thermal_mode";
hud_items[ hud_items.size ] = "keypressthermal";
hud_items[ hud_items.size ] = "keypress";
hud_items[ hud_items.size ] = "coordinate_agl";
for ( i = 0 ; i < hud_items.size ; i++ )
{
if ( isdefined( self.HUDItem[ hud_items[ i ] ] ) )
{
self.HUDItem[ hud_items[ i ] ] destroy();
}
if (isDefined(self.ac130_weptext))
{
self.ac130_weptext destroy();
}
}
}
setWepText(settext)
{
self endon("death");
self endon("disconnect");
self endon("joined_spectators");
self endon("left_ac130");
if(!isDefined(self.ac130_weptext))
{
self.ac130_weptext = newClientHudElem( self );
self.ac130_weptext.x = 0;
self.ac130_weptext.y = 0;
self.ac130_weptext.alignX = "left";
self.ac130_weptext.alignY = "bottom";
self.ac130_weptext.horzAlign = "left";
self.ac130_weptext.vertAlign = "bottom";
self.ac130_weptext.foreground = true;
self.ac130_weptext.glowColor = (0.2, 0.3, 0.7);
self.ac130_weptext.glowAlpha = 1;
}
self.ac130_weptext settext(settext, 256, 256);
}
shotFired()
{
self endon("death");
self endon("disconnect");
self endon("joined_spectators");
self endon("left_ac130");
for(;;)
{
self waittill("projectile_impact", weapon, position, radius);
self thread shotFiredScreenShake( weapon );
self thread shotFiredPhysicsSphere(position, weapon);
wait 0.05;
}
}
shotFiredScreenShake(weapon)
{
self endon("death");
self endon("disconnect");
self endon("joined_spectators");
self endon("left_ac130");
switch(weapon)
{
case "ac130_105mm_mp":
duration = 0.7;
break;
case "ac130_40mm_mp":
duration = 0.5;
default:
duration = 0;
break;
}
if(duration)
{ earthquake(duration, 1, self.origin, 1000); }
}
shotFiredPhysicsSphere(center, weapon)
{
wait 0.1;
physicsExplosionSphere(center, level.physicsSphereRadius[weapon], level.physicsSphereRadius[weapon] / 2, level.physicsSphereForce[weapon]);
}
getAboveBuildingsLocation(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) - .5) * 1024, (ypos/(maxypos-1) - .5) * 1024, 0);
thisorigin = bullettrace(thisstartorigin, thisstartorigin + (0,0,-10000), false, undefined);
zpos += thisorigin["position"][2];
}
}
zpos = zpos / (maxxpos*maxypos);
zpos = zpos + level.ex_ac130_fly_height;
return (location[0], location[1], zpos);
}
rotatePlane(toggle)
{
level notify("stop_rotatePlane_thread");
level endon("stop_rotatePlane_thread");
self endon( "leaving" );
self endon("left_ac130");
self endon("crashing");
self endon("death");
if(toggle)
{
for(;;)
{
level.ac130 rotateyaw( 360, level.ac130_rotationSpeed );
wait level.ac130_rotationSpeed;
}
}
else level.ac130 rotateyaw( level.ac130.angles[2], 0.05 );
}
addToArray(array, entname)
{
if(!isDefined(array))
{
array = [];
}
if(!isDefined(entname))
{
return array;
}
entarray = getEntArray(entname, "classname");
for(i = 0; i < entarray.size; i++)
{
array[array.size] = entarray[i];
}
return array;
}
GetMapDim()
{
xMax = -30000;
xMin = 30000;
yMax = -30000;
yMin = 30000;
zMax = -30000;
zMin = 30000;
xMin_e[0] = xMax;
yMin_e[1] = yMax;
zMin_e[2] = zMax;
xMax_e[0] = xMin;
yMax_e[1] = yMin;
zMax_e[2] = zMin;
entitytypes = getentarray();
for(i = 1; i < entitytypes.size; i++)
{
if(isDefined(entitytypes[i].origin))
{
trace = bulletTrace(entitytypes[i].origin, entitytypes[i].origin - (30000,0,0), false, undefined);
if(trace["fraction"] != 1) xMin_e = trace["position"];
trace = bulletTrace(entitytypes[i].origin, entitytypes[i].origin + (30000,0,0), false, undefined);
if(trace["fraction"] != 1) xMax_e = trace["position"];
trace = bulletTrace(entitytypes[i].origin, entitytypes[i].origin - (0,30000,0), false, undefined);
if(trace["fraction"] != 1) yMin_e = trace["position"];
trace = bulletTrace(entitytypes[i].origin, entitytypes[i].origin + (0,30000,0), false, undefined);
if(trace["fraction"] != 1) yMax_e = trace["position"];
trace = bulletTrace(entitytypes[i].origin, entitytypes[i].origin - (0,0,30000), false, undefined);
if(trace["fraction"] != 1) zMin_e = trace["position"];
trace = bulletTrace(entitytypes[i].origin, entitytypes[i].origin + (0,0,30000), false, undefined);
if(trace["fraction"] != 1) zMax_e = trace["position"];
if(xMin_e[0] < xMin) xMin = xMin_e[0];
if(yMin_e[1] < yMin) yMin = yMin_e[1];
if(zMin_e[2] <zMin> xMax) xMax = xMax_e[0];
if(yMax_e[1] > yMax) yMax = yMax_e[1];
if(zMax_e[2] > zMax) zMax = zMax_e[2];
}
wait 0.05;
}
level.ex_playArea_Centre = (int(xMax + xMin)/2, int(yMax + yMin)/2, int(zMax + zMin)/2);
level.ex_mapArea_Max = (xMax, yMax, zMax);
level.ex_mapArea_Min = (xMin, yMin, zMin);
level.ex_mapArea_Width = int(distance((xMin,yMin,zMax),(xMax,yMin,zMax)));
level.ex_mapArea_Length = int(distance((xMin,yMin,zMax),(xMin,yMax,zMax)));
entitytypes = [];
entitytypes = undefined;
}
GetFieldDim()
{
spawnpoints = [];
spawnpoints = addToArray(spawnpoints, "mp_dm_spawn");
spawnpoints = addToArray(spawnpoints, "mp_tdm_spawn");
spawnpoints = addToArray(spawnpoints, "mp_dom_spawn");
spawnpoints = addToArray(spawnpoints, "mp_sab_spawn_allies");
spawnpoints = addToArray(spawnpoints, "mp_sab_spawn_axis");
spawnpoints = addToArray(spawnpoints, "mp_sd_spawn_attacker");
spawnpoints = addToArray(spawnpoints, "mp_sd_spawn_defender");
xMax = spawnpoints[0].origin[0];
xMin = spawnpoints[0].origin[0];
yMax = spawnpoints[0].origin[1];
yMin = spawnpoints[0].origin[1];
zMax = spawnpoints[0].origin[2];
zMin = spawnpoints[0].origin[2];
for(i = 1; i <spawnpoints> xMax) xMax = spawnpoints[i].origin[0];
if (spawnpoints[i].origin[1] > yMax) yMax = spawnpoints[i].origin[1];
if (spawnpoints[i].origin[2] > zMax) zMax = spawnpoints[i].origin[2];
if (spawnpoints[i].origin[0] < xMin) xMin = spawnpoints[i].origin[0];
if (spawnpoints[i].origin[1] < yMin) yMin = spawnpoints[i].origin[1];
if (spawnpoints[i].origin[2] <zMin> self.maxhealth )
{
attacker thread [[level.onXPEvent]]( "killed_AC130" );
attacker notify( "destroyed_helicopter" );
break;
}
}
}
ac130_health()
{
self endon("death");
self endon( "leaving" );
self endon( "crashing" );
self.currentstate = "ok";
self.laststate = "ok";
self.maxhealth = level.ac130_maxhealth;
for ( ;; )
{
if ( self.health_bulletdamageble > self.health_low )
{
if ( self.damageTaken >= self.health_bulletdamageble )
self.currentstate = "heavy smoke";
else if ( self.damageTaken >= self.health_low )
self.currentstate = "light smoke";
}
else
{
if ( self.damageTaken >= self.health_low )
self.currentstate = "heavy smoke";
else if ( self.damageTaken >= self.health_bulletdamageble )
self.currentstate = "light smoke";
}
if ( self.currentstate == "light smoke" && self.laststate != "light smoke" )
{
self.laststate = self.currentstate;
}
if ( self.currentstate == "heavy smoke" && self.laststate != "heavy smoke" )
{
self notify ( "stop body smoke" );
self.laststate = self.currentstate;
}
if ( self.currentstate == "heavy smoke" )
{
self.damageTaken += level.heli_health_degrade;
}
if ( self.currentstate == "light smoke" )
{
self.damageTaken += level.heli_health_degrade/2;
}
if( self.damageTaken > self.maxhealth )
{
self thread ac130_explode( );
}
wait 1;
}
}
ac130_explode()
{
self notify("death");
self notify("crashing");
self playSound( level.ac130_sound["axis"]["crash"] );
playfxontag ( level.ac130_fx, level.ac130Model, "tag_explode_1" );
wait 0.1;
playfxontag ( level.ac130_fx, level.ac130Model, "tag_explode_2" );
wait 0.1;
playfxontag ( level.ac130_fx, level.ac130Model, "tag_explode_3" );
wait 0.1;
playfxontag (level.ac130_fx, level.ac130Model, "tag_explode_4" );
wait 0.1;
playfxontag ( level.ac130_fx, level.ac130Model, "tag_explode_5" );
wait 0.1;
playfxontag ( level.ac130_fx, level.ac130Model, "tag_explode_6" );
wait 0.1;
level.ac130_exploded = true;
level.ac130Player thread gotolz();
}