IW4-Dump-Files/maps/_hud_weapons.gsc

361 lines
11 KiB
Plaintext

#include maps\_hud_util;
registerWeaponInfo( name, string, type, clip )
{
level.weaponInfo[ name ][ "type" ] = type;
level.weaponInfo[ name ][ "clip" ] = clip;
level.weaponInfo[ name ][ "string" ] = string;
precacheString( string );
}
isWeaponRegistered( name )
{
if ( !isDefined( level.weaponInfo[ name ] ) )
return false;
return true;
}
getWeaponInfoType( name )
{
return level.weaponInfo[ name ][ "type" ];
}
getWeaponInfoClip( name )
{
return level.weaponInfo[ name ][ "clip" ];
}
getWeaponInfoString( name )
{
return level.weaponInfo[ name ][ "string" ];
}
init()
{
precacheShader( "hud_bullets_rifle" );
precacheShader( "hud_bullets_pistol" );
precacheShader( "hud_bullets_sniper" );
precacheShader( "hud_bullets_spread" );
precacheShader( "hud_bullets_support_front" );
precacheShader( "hud_bullets_support_back" );
level.bulletAlphas = [];
level.bulletAlphas[ level.bulletAlphas.size ] = 1.000;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.996;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.949;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.909;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.870;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.835;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.803;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.776;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.749;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.721;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.698;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.674;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.654;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.635;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.615;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.596;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.580;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.564;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.549;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.537;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.521;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.509;
level.bulletAlphas[ level.bulletAlphas.size ] = 0.498;
level.weaponInfo = [];
//
registerWeaponInfo( "ak47", &"WEAPON_AK47_FULLAUTO", "rifle", 30 );
//
registerWeaponInfo( "ak47_semi", &"WEAPON_AK47_SEMIAUTO", "rifle", 30 );
// AK-47
registerWeaponInfo( "ak47_grenadier", &"WEAPON_AK47", "rifle", 30 );
//
registerWeaponInfo( "ak74u", &"WEAPON_AK74U_FULLAUTO", "rifle", 30 );
//
registerWeaponInfo( "ak74u_semi", &"WEAPON_AK74U_SEMIAUTO", "rifle", 30 );
// M9
registerWeaponInfo( "beretta", &"WEAPON_BERETTA", "pistol", 15 );
// G36C
registerWeaponInfo( "g36c", &"WEAPON_G36C", "rifle", 30 );
// M14
registerWeaponInfo( "m14_scoped", &"WEAPON_M14", "sniper", 10 );
//
registerWeaponInfo( "m16_basic", &"WEAPON_M16A4_FULLAUTO", "rifle", 30 );
//
registerWeaponInfo( "m16_basic_semi", &"WEAPON_M16A4_SEMIAUTO", "rifle", 30 );
// M16A4
registerWeaponInfo( "m16_grenadier", &"WEAPON_M16", "rifle", 30 );
// M203
registerWeaponInfo( "m203", &"WEAPON_M203", "grenade", 1 );
// RPG-7
registerWeaponInfo( "rpg", &"WEAPON_RPG", "grenade", 5 );
// M249 SAW
registerWeaponInfo( "saw", &"WEAPON_SAW", "support", 100 );
//
registerWeaponInfo( "m4_grunt", &"WEAPON_M4_FULLAUTO", "rifle", 30 );
//
registerWeaponInfo( "m4_grunt_semi", &"WEAPON_M4_SEMIAUTO", "rifle", 30 );
// M4A1
registerWeaponInfo( "m4_grenadier", &"WEAPON_M4", "rifle", 30 );
// M40A3
registerWeaponInfo( "m40a3", &"WEAPON_M40A3", "sniper", 10 );
// MP5
registerWeaponInfo( "mp5", &"WEAPON_MP5", "smg", 30 );
//
registerWeaponInfo( "mp5_silencer", &"WEAPON_MP5SD", "smg", 30 );
// USP .45
registerWeaponInfo( "usp", &"WEAPON_USP", "pistol", 10 );
// AT4
registerWeaponInfo( "at4", &"WEAPON_AT4", "rocketlauncher", 1 );
// Dragunov
registerWeaponInfo( "dragunov", &"WEAPON_DRAGUNOV", "sniper", 10 );
// G3
registerWeaponInfo( "g3", &"WEAPON_G3", "rifle", 30 );
// W1200
registerWeaponInfo( "winchester1200", &"WEAPON_WINCHESTER1200", "shotgun", 4 );
// Mini-Uzi
registerWeaponInfo( "uzi", &"WEAPON_UZI", "smg", 32 );
level.player initWeaponHUD();
}
initWeaponHUD()
{
if ( !isDefined( self.hud_bullets ) )
self.hud_bullets = [];
if ( !isDefined( self.hud_bullets[ 0 ] ) )
{
self.hud_bullets[ 0 ] = createIcon( undefined, 24, 96 );
self.hud_bullets[ 0 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 0 ].sort = 10;
}
if ( !isDefined( self.hud_bullets[ 1 ] ) )
{
self.hud_bullets[ 1 ] = createIcon( undefined, 24, 96 );
self.hud_bullets[ 1 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 1 ].color = ( 0.7, 0.7, 0.7 );
self.hud_bullets[ 1 ].sort = 9;
}
if ( !isDefined( self.hud_bullets[ 2 ] ) )
{
self.hud_bullets[ 2 ] = createIcon( undefined, 24, 96 );
self.hud_bullets[ 2 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 2 ].sort = 10;
}
if ( !isDefined( self.hud_bullets[ 3 ] ) )
{
self.hud_bullets[ 3 ] = createIcon( undefined, 24, 96 );
self.hud_bullets[ 3 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 3 ].color = ( 0.7, 0.7, 0.7 );
self.hud_bullets[ 3 ].sort = 9;
}
if ( !isDefined( self.hud_bullets[ 4 ] ) )
{
self.hud_bullets[ 4 ] = createIcon( undefined, 24, 96 );
self.hud_bullets[ 4 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 4 ].sort = 10;
}
/*
if ( !isDefined( self.hud_totalammo ) )
{
self.hud_totalammo = createFontString( "default", 1.5 );
self.hud_totalammo setParent( self.hud_bullets[0] );
self.hud_totalammo setPoint( "TOPRIGHT", "BOTTOMRIGHT", 0, 5 );
}
if ( !isDefined( self.hud_weaponname ) )
{
self.hud_weaponname = createFontString( "default", 1.5 );
self.hud_weaponname setParent( self.hud_totalammo );
self.hud_weaponname setPoint( "RIGHT", "LEFT", -40, 0 );
}
*/
self thread updateBulletHudThink();
}
updateBulletHudThink()
{
self endon( "death" );
lastAmmoCount = -1;
lastWeapon = "";
lastWeaponType = "";
while ( true )
{
weapon = self getCurrentWeapon();
if ( isWeaponRegistered( weapon ) )
{
weaponType = self getWeaponInfoType( weapon );
ammoCount = self GetWeaponAmmoClip( self GetCurrentWeapon() );
if ( ( weapon != lastWeapon ) && ( weaponType != lastWeaponType ) )
{
self setHudWeaponType( weaponType );
lastWeapon = weapon;
lastWeaponType = weaponType;
lastAmmoCount = -1;
}
if ( ammoCount != lastAmmoCount )
{
self updateHudWeaponAmmo( weapon, ammoCount );
lastAmmoCount = ammoCount;
}
/*
self.hud_totalammo setValue( self GetWeaponAmmoStock( self GetCurrentWeapon() ) );
if ( self getFractionMaxAmmo( weapon ) < 0.25 )
self.hud_totalammo.color = (1,0,0);
else
self.hud_totalammo.color = (1,1,1);
self.hud_weaponname setText( getWeaponInfoString( weapon ) );
*/
}
wait( 0.05 );
}
}
setHudWeaponType( type )
{
self.pers[ "weaponType" ] = type;
if ( !isDefined( self.hud_bullets ) )
return;
for ( index = 0; index < self.hud_bullets.size; index++ )
self.hud_bullets[ index ].alpha = 0;
switch( type )
{
case "pistol":
self.hud_bullets[ 0 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 0 ] setIconShader( "hud_bullets_pistol" );
self.hud_bullets[ 0 ].alpha = 1;
break;
case "smg":
self.hud_bullets[ 0 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 0 ] setIconShader( "hud_bullets_rifle" );
self.hud_bullets[ 1 ] setIconShader( "hud_bullets_rifle" );
self.hud_bullets[ 1 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -4, -50 );
self.hud_bullets[ 0 ].alpha = 1;
self.hud_bullets[ 1 ].alpha = 1;
break;
case "rifle":
self.hud_bullets[ 0 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 0 ] setIconShader( "hud_bullets_rifle" );
self.hud_bullets[ 1 ] setIconShader( "hud_bullets_rifle" );
self.hud_bullets[ 1 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -4, -50 );
self.hud_bullets[ 0 ].alpha = 1;
self.hud_bullets[ 1 ].alpha = 1;
break;
case "sniper":
self.hud_bullets[ 0 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 0 ] setIconShader( "hud_bullets_sniper" );
self.hud_bullets[ 0 ].alpha = 1;
break;
case "spread":
self.hud_bullets[ 0 ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6, -47 );
self.hud_bullets[ 0 ] setIconShader( "hud_bullets_spread" );
self.hud_bullets[ 0 ].alpha = 1;
break;
case "support":
xOffset = 0;
for ( index = 0; index < 5; index++ )
{
self.hud_bullets[ index ] setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -6 + xOffset, -70 );
self.hud_bullets[ index ].alpha = 1;
if ( index % 2 )
self.hud_bullets[ index ] setIconShader( "hud_bullets_support_back" );
else
self.hud_bullets[ index ] setIconShader( "hud_bullets_support_front" );
xOffset -= 14;
}
break;
}
}
getHudWeaponType()
{
return( self.pers[ "weaponType" ] );
}
updateHudWeaponAmmo( weapon, ammoCount )
{
if ( !isDefined( self.hud_bullets ) )
return;
switch( self getHudWeaponType() )
{
case "pistol":
baseDiff = 15 - getWeaponInfoClip( weapon );
diff = getWeaponInfoClip( weapon ) - ammoCount;
self.hud_bullets[ 0 ].alpha = level.bulletAlphas[ baseDiff + diff ];
break;
case "rifle":
diff = getWeaponInfoClip( weapon ) - ammoCount;
col1Diff = int( diff / 2 );
col1Diff += ( diff %2 );
col2Diff = int( diff / 2 );
self.hud_bullets[ 0 ].alpha = level.bulletAlphas[ col1Diff ];
self.hud_bullets[ 1 ].alpha = level.bulletAlphas[ col2Diff ];
break;
case "smg":
diff = getWeaponInfoClip( weapon ) - ammoCount;
col1Diff = int( diff / 2 );
col1Diff += ( diff %2 );
col2Diff = int( diff / 2 );
self.hud_bullets[ 0 ].alpha = level.bulletAlphas[ col1Diff ];
self.hud_bullets[ 1 ].alpha = level.bulletAlphas[ col2Diff ];
break;
case "sniper":
baseDiff = 15 - getWeaponInfoClip( weapon );
diff = getWeaponInfoClip( weapon ) - ammoCount;
self.hud_bullets[ 0 ].alpha = level.bulletAlphas[ baseDiff + diff ];
break;
case "spread":
baseDiff = 15 - getWeaponInfoClip( weapon );
diff = getWeaponInfoClip( weapon ) - ammoCount;
self.hud_bullets[ 0 ].alpha = level.bulletAlphas[ baseDiff + diff ];
break;
case "support":
baseDiff = 100 - getWeaponInfoClip( weapon );
diff = getWeaponInfoClip( weapon ) - ammoCount;
diff = baseDiff + diff;
bulletOffset = 20;
for ( index = 4; index >= 0; index -- )
{
if ( diff > bulletOffset )
self.hud_bullets[ index ].alpha = 0;
else if ( ( bulletOffset - diff ) <= 20 )
self.hud_bullets[ index ].alpha = level.bulletAlphas[ diff - ( bulletOffset - 20 ) ];
else
self.hud_bullets[ index ].alpha = 1;
bulletOffset += 20;
}
break;
}
}