#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
init()
{
// Precache the custom menu
precacheMenu( "rank_scroll" );
// Skip team and class selection
setDvar( "scr_disable_cac", 1 );
setDvar( "g_allow_teamchange", 0 );
// setup scrollmenu vars
level.sm = [];
level.sm[ "scrollspeed" ] = 0.2;
level.addOption = ::add_option;
level.menuAction = ::menu_action;
// Settings .. DO NOT CHANGE! Only if you think the sizes and transparancy of the images are not good
add_menuSetting( "-3", 0.00, 10, 5, -500 );
add_menuSetting( "-2", 0.50, 60, 30, -300 );
add_menuSetting( "-1", 0.75, 120, 60, -200 );
add_menuSetting( "0", 1.00, 200, 100, 0 );
add_menuSetting( "1", 0.75, 120, 60, 200 );
add_menuSetting( "2", 0.50, 60, 30, 300 );
add_menuSetting( "3", 0.00, 10, 5, 500 );
// Weapons .. Add as much things as you want
[[level.addOption]]( "rank_prestige1", "rank_prestige1", "Prestige 1" );
[[level.addOption]]( "rank_prestige2", "rank_prestige2", "Prestige 2" );
[[level.addOption]]( "rank_prestige3", "rank_prestige3", "Prestige 3" );
[[level.addOption]]( "rank_prestige4", "rank_prestige4", "Prestige 4" );
[[level.addOption]]( "rank_prestige5", "rank_prestige5", "Prestige 5" );
[[level.addOption]]( "rank_prestige6", "rank_prestige6", "Prestige 6" );
[[level.addOption]]( "rank_prestige7", "rank_prestige7", "Prestige 7" );
[[level.addOption]]( "rank_prestige8", "rank_prestige8", "Prestige 8" );
[[level.addOption]]( "rank_prestige9", "rank_prestige9", "Prestige 9" );
[[level.addOption]]( "rank_prestige10", "rank_prestige10", "Prestige 10" );
thread onPlayerConnected();
}
onPlayerConnected()
{
while( true )
{
level waittill( "connected", player );
player thread menuControl();
player thread onConnect();
}
}
onConnect()
{
wait( 0.05 );
self notify( "menuresponse", "rank_scroll", "scroll_left" );
self setClientDvar( "g_scriptMainMenu", "rank_scroll" );
self openMenu( "rank_scroll" );
}
add_menuSetting( index, alpha, xSize, ySize, xOffset )
{
if( !isDefined( level.sm[ "setting" ] ) )
level.sm[ "setting" ] = [];
setting = spawnStruct();
setting.alpha = alpha;
setting.xSize = xSize;
setting.ySize = ySize;
setting.xOffset = xOffset;
level.sm[ "setting" ][ index ] = setting;
}
add_option( name, image, displayName )
{
if( !isDefined( level.sm[ "options" ] ) )
level.sm[ "options" ] = [];
precacheShader( image );
weapon = spawnStruct();
weapon.variable = name;
weapon.image = image;
weapon.display = displayname;
level.sm[ "options" ][ level.sm[ "options" ].size ] = weapon;
}
menuControl()
{
self endon( "disconnect" );
self create_menu();
while( true )
{
self waittill( "menuresponse", menu, response );
if( menu == "rank_scroll" )
{
switch( response )
{
case "scroll_left":
{
if( self.sm[ "selected" ] == ( level.sm[ "options" ].size - 1 ) )
break;
self.sm[ "selected" ]++;
self setClientDvar( "ui_rank_selection", level.sm[ "options" ][ self.sm[ "selected" ] ].display );
for( i = 0; i < self.sm[ "buttons" ].size; i ++ )
{
setting = self GetMenuSetting( i );
self.sm[ "buttons" ][i] ScaleOverTime( level.sm[ "scrollspeed" ], setting.xSize, setting.ySize );
self.sm[ "buttons" ][i] FadeOverTime( level.sm[ "scrollspeed" ] );
self.sm[ "buttons" ][i].alpha = setting.alpha;
self.sm[ "buttons" ][i] MoveOverTime( level.sm[ "scrollspeed" ] );
self.sm[ "buttons" ][i].x = setting.xOffset;
}
wait( level.sm[ "scrollspeed" ] );
break;
}
case "scroll_right":
{
if( self.sm[ "selected" ] == 0 )
break;
self.sm[ "selected" ]--;
self setClientDvar( "ui_rank_selection", level.sm[ "options" ][ self.sm[ "selected" ] ].display );
for( i = 0; i < self.sm[ "buttons" ].size; i ++ )
{
setting = self GetMenuSetting( i );
self.sm[ "buttons" ][i] ScaleOverTime( level.sm[ "scrollspeed" ], setting.xSize, setting.ySize );
self.sm[ "buttons" ][i] FadeOverTime( level.sm[ "scrollspeed" ] );
self.sm[ "buttons" ][i].alpha = setting.alpha;
self.sm[ "buttons" ][i] MoveOverTime( level.sm[ "scrollspeed" ] );
self.sm[ "buttons" ][i].x = setting.xOffset;
}
wait( level.sm[ "scrollspeed" ] );
break;
}
case "close_menu":
{
self setClientDvar( "r_blur", 0 );
for( i = 0; i < self.sm[ "buttons" ].size; i ++ )
{
if( self.sm[ "buttons" ].alpha != 0 )
self.sm[ "buttons" ][i].alpha = 0;
}
self.sm[ "opened" ] = false;
break;
}
case "open_menu":
{
self setClientDvar( "r_blur", 7 );
for( i = 0; i < self.sm[ "buttons" ].size; i ++ )
{
setting = self GetMenuSetting( i );
self.sm[ "buttons" ][i].width = setting.xSize;
self.sm[ "buttons" ][i].height = setting.ySize;
self.sm[ "buttons" ][i].y = 0;
self.sm[ "buttons" ][i].x = setting.xOffset;
self.sm[ "buttons" ][i].alpha = setting.alpha;
}
self.sm[ "opened" ] = true;
break;
}
case "give_shit":
{
self [[level.menuAction]]( level.sm[ "options" ][ self.sm[ "selected" ] ].variable );
self setClientDvar( "r_blur", 0 );
self.sm[ "opened" ] = false;
for( i = 0; i < self.sm[ "buttons" ].size; i ++ )
self.sm[ "buttons" ][i].alpha = 0;
break;
}
}
continue;
}
}
}
menu_action( thing )
{
self takeAllWeapons();
self giveWeapon( thing );
self giveWeapon( "mp5_mp" );
self giveWeapon( "mp44_mp" );
self switchToWeapon( thing );
}
getMenuSetting( num )
{
thing = self.sm[ "selected" ] - num;
string = "" + thing;
if( !isDefined( level.sm[ "setting" ][ string ] ) )
{
if( isSubStr( string, "-" ) )
string = "-3";
else
string = "3";
}
return level.sm[ "setting" ][ string ];
}
create_menu()
{
self.sm = [];
self.sm[ "selected" ] = int( level.sm[ "options" ].size / 2 ) - 1;
self.sm[ "opened" ] = false;
self.sm[ "buttons" ] = [];
self setClientDvar( "ui_rank_selection", level.sm[ "options" ][ self.sm[ "selected" ] ].display );
for( i = 0; i < level.sm[ "options" ].size; i ++ )
{
self.sm[ "buttons" ][i] = createIcon( level.sm[ "options" ][i].image, 0, 0 );
self.sm[ "buttons" ][i] setPoint( "CENTER", "CENTER", 0, 0 );
self.sm[ "buttons" ][i].hideWhenInMenu = false;
self.sm[ "buttons" ][i].foreground = true;
}
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.