- #include < amxmodx > 
- #include < chatcolor > 
-   
- const RESERVED_SLOTS = 1; 
-   
- enum _:ServerData 
- { 
- 	Server_Name[ 15 ], 
- 	Server_Addr[ 22 ] 
- }; 
-   
- new Array:g_aServers, g_iOwnServer = -1, g_szIp[ 22 ], g_iMenu; 
-   
- public plugin_init( ) 
- { 
- 	register_plugin( "Redirect", "1.3", "xPaw" ); 
-   
- 	g_aServers = ArrayCreate( ServerData ); 
-   
- 	register_clcmd( "say /server",     "CmdServers" ); 
- 	register_clcmd( "say /servers",    "CmdServers" ); 
- 	register_clcmd( "say /serverlist", "CmdServers" ); 
-   
- 	get_user_ip( 0, g_szIp, 21 ); 
-   
- 	AddServer( "DeathRun",       "213.239.209.206:27038" ); 
- 	AddServer( "JailBreak",      "213.239.209.206:27016" ); 
- 	AddServer( "Knife",          "213.239.209.206:27020" ); 
- 	AddServer( "HideNSeek",      "213.239.209.206:27022" ); 
- 	AddServer( "Kreedz",         "213.239.209.206:27021" ); 
- 	AddServer( "Surf SpeedRuns", "213.239.209.206:27023" ); 
- 	AddServer( "Surf Ski 2",     "213.239.209.206:27025" ); 
- 	//AddServer( "SuperHero",      "93.186.194.15:28062" ); 
- 	//AddServer( "Dust2 Only",     "93.186.194.15:27099" ); 
-   
- 	new iServers = ArraySize( g_aServers ); 
-   
- 	new aServer[ ServerData ], szString[ 32 ]; 
-   
- 	g_iMenu  = menu_create( "\ymY.RuN Servers \r//\w www.my-run.de\R"- ,  "HandleServers" )- ; 
-   
- 	for( new i; i < iServers; i++ ) 
- 	{ 
- 		ArrayGetArray( g_aServers, i, aServer ); 
-   
- 		if( i == g_iOwnServer ) 
- 		{ 
- 			formatex( szString, 31, "\d%s", aServer[ Server_Name ] ); 
- 		} 
- 		else if( iServers == 9 && i == 8 ) 
- 		{ 
- 			formatex( szString, 31, "%s^n", aServer[ Server_Name ] ); 
- 		} 
- 		else 
- 		{ 
- 			copy( szString, 31, aServer[ Server_Name ] ); 
- 		} 
-   
- 		menu_additem( g_iMenu, szString ); 
- 	} 
-   
- 	if( iServers < 10 ) 
- 	{ 
- 		menu_setprop( g_iMenu, MPROP_PERPAGE, 0 ); 
-   
- 		if( iServers < 9 ) 
- 		{ 
- 			menu_addblank( g_iMenu ); 
- 		} 
-   
- 		menu_additem( g_iMenu, "Exit", "*" ); 
- 	} 
- } 
-   
- AddServer( const szName[ 15 ], const szAddr[ 22 ] ) 
- { 
- 	if( equal( szAddr, g_szIp ) ) 
- 	{ 
- 		g_iOwnServer = ArraySize( g_aServers ); 
- 	} 
-   
- 	new aServer[ ServerData ]; 
- 	aServer[ Server_Name ] = szName; 
- 	aServer[ Server_Addr ] = szAddr; 
-   
- 	ArrayPushArray( g_aServers, aServer ); 
- } 
-   
- public plugin_end( ) 
- { 
- 	ArrayDestroy( g_aServers ); 
- 	menu_destroy( g_iMenu ); 
- } 
-   
- public client_putinserver( id ) 
- { 
- 	new szServer[ 4 ]; 
- 	get_user_info( id, "myrun", szServer, 3 ); 
-   
- 	if( szServer[ 0 ] ) 
- 	{ 
- 		set_task( 1.0, "TaskResetInfo", id ); 
-   
- 		new iServ = str_to_num( szServer ); 
-   
- 		if( !( 0 <= iServ < ArraySize( g_aServers ) ) ) 
- 		{ 
- 			return; 
- 		} 
-   
- 		new aServer[ ServerData ]; 
- 		ArrayGetArray( g_aServers, iServ, aServer ); 
-   
- 		new szName[ 32 ]; 
- 		get_user_name( id, szName, 31 ); 
-   
- 		ColorChat( 0, Red, "[ mY.RuN ]^4 %s^1 has been redirected here from^4 %s^1.", szName, aServer[ Server_Name ] ); 
- 	} 
- } 
-   
- public TaskResetInfo( const id ) 
- { 
- 	if( is_user_connected( id ) ) 
- 	{ 
- 		client_cmd( id, "setinfo ^"myrun^" ^"^"" ); 
- 	} 
- } 
-   
- public CmdServers( const id ) 
- { 
- 	menu_display( id, g_iMenu ); 
- } 
-   
- public HandleServers( const id, const iMenu, const iItem ) 
- { 
- 	if( iItem == MENU_EXIT || iItem == 9 /* 9 only when less than 10 servers */ ) 
- 	{ 
- 		return; 
- 	} 
-   
- 	if( iItem == g_iOwnServer ) 
- 	{ 
- 		menu_display( id, g_iMenu ); 
- 		return; 
- 	} 
-   
- 	new aServer[ ServerData ], szName[ 32 ]; 
-   
- 	ArrayGetArray( g_aServers, iItem, aServer ); 
-   
- 	client_cmd( id, "setinfo ^"myrun^" ^"%i^"", g_iOwnServer ); 
-   
- 	get_user_name( id, szName, 31 ); 
-   
- 	ColorChat( 0, Red, "[ mY.RuN ]^4 %s^1 has been redirected to^4 %s^1.", szName, aServer[ Server_Name ] ); 
-   
- 	client_cmd( id, ";Connect %s", aServer[ Server_Addr ] ); 
- } 
-