- /*** 
-  * Link to the plugin 
-  * 
-  */ 
-   
- #include < amxmodx > 
- #include < engine > 
- #include < cstrike > 
- #include < fun > 
- #include < fakemeta > 
- #include < hamsandwich > 
-   
- #pragma semicolon 1 
-   
- // Comment this line if you do not want to have fake player ! 
- #define FAKE_PLAYER 
-   
- // Bot name 
- #if defined FAKE_PLAYER 
-         new const g_szBotName[ ] = "DRM Fake Player"; 
- #endif 
-   
- // Messages prefix 
- new const g_szPrefix[ ] = "[ Deathrun ]"; 
-   
- // Global Variables 
- new bool:g_bHauntedHouse, bool:g_bGamerFun, bool:g_bRandromized, bool:g_bStarting, bool:g_bFirstRound; 
- new bool:g_bEnabled, bool:g_bRestart, bool:g_bConnected[ 33 ]; 
-   
- new g_pRemoveBuyZone, g_pHideHuds, g_pBlockMoney, g_pLifeSystem, g_pSvRestart, g_pAutoBalance, g_pLimitTeams; 
- new g_pNoFallDmg, g_pGameName, g_pToggle, g_pBlockSpray, g_pBlockRadio, g_pSemiclip, g_pGiveUsp, g_pBlockKill; 
-   
- new g_iMsgHideWeapon, g_iMsgCrosshair, g_iMsgMoney, g_iMsgTeamInfo, g_iMsgSayText; 
- new g_iMaxplayers, g_iHudSync, g_iHudSync2, g_iLastTerr, g_iThinker; 
- new g_iSemiClip[ 33 ], g_Lifes[ 33 ]; 
-   
- #if defined FAKE_PLAYER 
-         new g_iFakeplayer; 
- #endif 
-   
- // Macros 
- #if cellbits == 32 
-         #define OFFSET_BZ 235 
- #else 
-         #define OFFSET_BZ 268 
- #endif 
-   
- // Colorchat 
- enum Color { 
-         NORMAL = 1, 
-         GREEN, 
-         RED, 
-         BLUE 
- }; 
-   
- new TeamName[ ][ ] = { 
-         "", 
-         "TERRORIST", 
-         "CT", 
-         "SPECTATOR" 
- }; 
-   
- // ======================================================================================= 
-   
- public plugin_init( ) { 
-         new const VERSION[ ] = "3.0.3"; 
-          
-         register_plugin( "Deathrun Manager", VERSION, "xPaw" ); 
-          
-         g_pToggle        = register_cvar( "deathrun_toggle",     "1" ); 
-         g_pBlockSpray    = register_cvar( "deathrun_spray",      "1" ); 
-         g_pBlockRadio    = register_cvar( "deathrun_radio",      "1" ); 
-         g_pBlockKill     = register_cvar( "deathrun_blockkill",  "1" ); 
-         g_pBlockMoney    = register_cvar( "deathrun_blockmoney", "1" ); 
-         g_pSemiclip      = register_cvar( "deathrun_semiclip",   "1" ); 
-         g_pGiveUsp       = register_cvar( "deathrun_giveusp",    "1" ); 
-         g_pHideHuds      = register_cvar( "deathrun_hidehud",    "1" ); 
-         g_pLifeSystem    = register_cvar( "deathrun_lifesystem", "1" ); 
-         g_pGameName      = register_cvar( "deathrun_gamename",   "1" ); 
-         g_pNoFallDmg     = register_cvar( "deathrun_terrnfd",    "1" ); 
-         g_pRemoveBuyZone = register_cvar( "deathrun_removebz",   "1" ); 
-          
-         // Lets get map name... 
-         new szMapName[ 64 ]; 
-         get_mapname( szMapName, 63 ); 
-          
-         if( contain( szMapName, "deathrun_" ) != -1 ) { 
-                 set_pcvar_num( g_pToggle, 1 ); 
-                  
-                 if( contain( szMapName, "hauntedhouse" ) != -1 ) 
-                         g_bHauntedHouse = true; 
-                 else { 
-                         g_bHauntedHouse = false; 
-                          
-                         if( equal( szMapName, "deathrun_gamerfun" ) ) 
-                                 g_bGamerFun = true; 
-                         else 
-                                 g_bGamerFun = false; 
-                 } 
-         } else 
-                 set_pcvar_num( g_pToggle, 0 ); 
-          
-         g_pSvRestart   = get_cvar_pointer( "sv_restart" ); 
-         g_pAutoBalance = get_cvar_pointer( "mp_autoteambalance" ); 
-         g_pLimitTeams  = get_cvar_pointer( "mp_limitteams" ); 
-          
-         register_cvar( "deathrun_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY ); 
-         set_cvar_string( "deathrun_version", VERSION ); 
-          
-         // Registering Language file 
-         register_dictionary( "deathrun.txt" ); 
-          
-         // Logging Events 
-         register_logevent( "EventRoundStart", 2, "1=Round_Start" ); 
-         register_logevent( "EventRandromize", 2, "1=Round_End" ); 
-         register_event( "SendAudio", "EventTerrsWin",   "a", "2&%!MRAD_terwin" ); 
-         register_event( "TextMsg",       "EventRandromize", "a", "2&#Game_w" ); 
-         register_event( "DeathMsg",      "EventDeath",      "a"); 
-         register_event( "Money",         "EventMoney",      "b" ); 
-         register_event( "ResetHUD",      "EventResetHud",   "be" ); 
-          
-         g_bFirstRound    = true; 
-         g_iMaxplayers    = get_maxplayers( ); 
-         g_iMsgHideWeapon = get_user_msgid( "HideWeapon" ); 
-         g_iMsgCrosshair  = get_user_msgid( "Crosshair" ); 
-         g_iMsgMoney      = get_user_msgid( "Money" ); 
-         g_iMsgSayText    = get_user_msgid( "SayText" ); 
-         g_iMsgTeamInfo   = get_user_msgid( "TeamInfo" ); 
-          
-         g_iHudSync       = CreateHudSyncObj( ); 
-         g_iHudSync2      = CreateHudSyncObj( ); 
-          
-         if( get_pcvar_num( g_pToggle ) ) { 
-                 RegisterHam( Ham_TakeDamage, "player", "FwdHamPlayerDamage" ); 
-                 RegisterHam( Ham_Spawn,      "player", "FwdHamPlayerSpawn", 1 ); 
-                 register_forward( FM_ClientKill,       "FwdClientKill" ); 
-                 register_impulse( 201, "FwdImpulse_201" ); 
-                  
-                 if( get_pcvar_num( g_pGameName ) ) 
-                         register_forward( FM_GetGameDescription, "FwdGameDesc" ); 
-                  
-                 register_clcmd( "say /lifes", "CmdShowlifes" ); 
-                 register_clcmd( "say /lives", "CmdShowlifes" ); 
-                  
-                 register_clcmd( "radio1", "CmdRadio" ); 
-                 register_clcmd( "radio2", "CmdRadio" ); 
-                 register_clcmd( "radio3", "CmdRadio" ); 
-                  
-                 // Terrorist Check 
-                 g_iThinker= create_entity( "info_target" ); 
-                  
-                 if( is_valid_ent( g_iThinker ) ) { 
-                         entity_set_string( g_iThinker, EV_SZ_classname, "DeathrunThinker" ); 
-                         entity_set_float( g_iThinker, EV_FL_nextthink, get_gametime( ) + 20.0 ); 
-                          
-                         g_bRestart = true; 
-                          
-                         // First think will happen in 20.0, Restart will be done there. 
-                          
-                         register_think( "DeathrunThinker", "FwdThinker" ); 
-                 } else { 
-                         set_task( 15.0, "CheckTerrorists", _, _, _, "b" ); 
-                          
-                         // Lets make restart after 20 seconds from map start. 
-                         set_task( 20.0, "RestartRound" ); 
-                 } 
-                  
-                 if( get_pcvar_num( g_pRemoveBuyZone ) ) { 
-                         register_message( get_user_msgid( "StatusIcon" ), "MsgStatusIcon" ); // BuyZone Icon 
-                          
-                         // Remove buyzone on map 
-                         remove_entity_name( "info_map_parameters" ); 
-                         remove_entity_name( "func_buyzone" ); 
-                          
-                         // Create own entity to block buying 
-                         new iEntity = create_entity( "info_map_parameters" ); 
-                          
-                         DispatchKeyValue( iEntity, "buying", "3" ); 
-                         DispatchSpawn( iEntity ); 
-                 } 
-                  
-                 if( get_pcvar_num( g_pSemiclip ) ) { 
-                         register_forward( FM_StartFrame,        "FwdStartFrame", 0 ); 
-                         register_forward( FM_AddToFullPack,     "FwdFullPack",   1 ); 
-                 } 
-                  
-                 g_bEnabled = true; 
-                  
-         #if defined FAKE_PLAYER 
-                 new iEntity, iCount; 
-                  
-                 while( ( iEntity = find_ent_by_class( iEntity, "info_player_deathmatch" ) ) > 0 ) 
-                         if( iCount++ > 1 ) 
-                                 break; 
-                  
-                 if( iCount <= 1 ) 
-                         g_iFakeplayer = -1; 
-                  
-                 set_task( 5.0, "UpdateBot" ); 
-                  
-                 register_message( get_user_msgid( "DeathMsg" ), "MsgDeathMsg" ); 
-         #endif 
-         } else 
-                 g_bEnabled = false; 
- } 
-   
- // FAKEPLAYER 
- /////////////////////////////////////////// 
- #if defined FAKE_PLAYER 
-         public UpdateBot( ) { 
-                 if( g_iFakeplayer == -1 ) 
-                         return; 
-                  
-                 new id = find_player( "i" ); 
-                  
-                 if( !id ) { 
-                         id = engfunc( EngFunc_CreateFakeClient, g_szBotName ); 
-                         if( pev_valid( id ) ) { 
-                                 engfunc( EngFunc_FreeEntPrivateData, id ); 
-                                 dllfunc( MetaFunc_CallGameEntity, "player", id ); 
-                                 set_user_info( id, "rate", "3500" ); 
-                                 set_user_info( id, "cl_updaterate", "25" ); 
-                                 set_user_info( id, "cl_lw", "1" ); 
-                                 set_user_info( id, "cl_lc", "1" ); 
-                                 set_user_info( id, "cl_dlmax", "128" ); 
-                                 set_user_info( id, "cl_righthand", "1" ); 
-                                 set_user_info( id, "_vgui_menus", "0" ); 
-                                 set_user_info( id, "_ah", "0" ); 
-                                 set_user_info( id, "dm", "0" ); 
-                                 set_user_info( id, "tracker", "0" ); 
-                                 set_user_info( id, "friends", "0" ); 
-                                 set_user_info( id, "*bot", "1" ); 
-                                 set_pev( id, pev_flags, pev( id, pev_flags ) | FL_FAKECLIENT ); 
-                                 set_pev( id, pev_colormap, id ); 
-                                  
-                                 new szMsg[ 128 ]; 
-                                 dllfunc( DLLFunc_ClientConnect, id, g_szBotName, "127.0.0.1", szMsg ); 
-                                 dllfunc( DLLFunc_ClientPutInServer, id ); 
-                                  
-                                 cs_set_user_team( id, CS_TEAM_T ); 
-                                 ExecuteHamB( Ham_CS_RoundRespawn, id ); 
-                                  
-                                 set_pev( id, pev_effects, pev( id, pev_effects ) | EF_NODRAW ); 
-                                 set_pev( id, pev_solid, SOLID_NOT ); 
-                                 dllfunc( DLLFunc_Think, id ); 
-                                  
-                                 g_iFakeplayer = id; 
-                         } 
-                 } 
-         } 
-          
-         public MsgDeathMsg( const iMsgId, const iMsgDest, const id ) { 
-                 if( get_msg_arg_int( 2 ) == g_iFakeplayer ) 
-                         return PLUGIN_HANDLED; 
-                  
-                 return PLUGIN_CONTINUE; 
-         } 
- #endif 
-   
- // NEW TERRORIST 
- /////////////////////////////////////////// 
- public EventRandromize( ) { 
-         if( !g_bEnabled || g_bFirstRound || g_bRandromized ) 
-                 return PLUGIN_CONTINUE; 
-          
-         g_bRandromized = true; 
-          
-         new i, iPlayers[ 32 ], iNum, iPlayer; 
-         get_players( iPlayers, iNum, "c" ); 
-          
-         if( iNum <= 1 ) 
-                 return PLUGIN_CONTINUE; 
-          
-         for( i = 0; i < iNum; i++ ) { 
-                 iPlayer = iPlayers[ i ]; 
-                  
-                 if( cs_get_user_team( iPlayer ) == CS_TEAM_T ) 
-                         cs_set_user_team( iPlayer, CS_TEAM_CT ); 
-         } 
-          
-         new iRandomPlayer, CsTeams:iTeam; 
-          
-         while( ( iRandomPlayer = iPlayers[ random_num( 0, iNum - 1 ) ] ) == g_iLastTerr ) { } 
-          
-         g_iLastTerr = iRandomPlayer; 
-          
-         iTeam = cs_get_user_team( iRandomPlayer ); 
-          
-         if( iTeam == CS_TEAM_T || iTeam == CS_TEAM_CT ) { 
-                 cs_set_user_team(iRandomPlayer, CS_TEAM_T); 
-                  
-                 new szName[ 32 ]; 
-                 get_user_name( iRandomPlayer, szName, 31 ); 
-                  
-                 for( i = 0; i < iNum; i++ ) 
-                         ColorChat(iPlayers[ i ], RED, "%s^4 %L", g_szPrefix, iPlayers[ i ], "DR_NOW_TERR", szName); 
-                  
-                 if( !g_bRestart && is_valid_ent( g_iThinker ) ) 
-                         entity_set_float( g_iThinker, EV_FL_nextthink, get_gametime( ) + 15.0 ); 
-         } else { 
-                 g_bRandromized = false; 
-                 EventRandromize( ); 
-         } 
-          
-         return PLUGIN_CONTINUE; 
- } 
-   
- // NEW ROUND 
- /////////////////////////////////////////// 
- public EventRoundStart( ) { 
-         if( !g_bEnabled ) 
-                 return PLUGIN_CONTINUE; 
-          
-         g_bRandromized  = false; 
-         g_bStarting     = false; 
-          
-         new i, iPlayers[ 32 ], iNum, iRealPlayers, CsTeams:iTeam; 
-         get_players( iPlayers, iNum, "c" ); 
-          
-         if( iNum <= 1 ) 
-                 return PLUGIN_CONTINUE; 
-          
-         for( i = 0; i < iNum; i++ ) { 
-                 iTeam = cs_get_user_team( iPlayers[ i ] ); 
-                  
-                 if( iTeam == CS_TEAM_T || iTeam == CS_TEAM_CT ) 
-                         iRealPlayers++; 
-         } 
-          
-         if( iRealPlayers <= 1 ) { 
-                 set_hudmessage( 0, 128, 0, -1.0, 0.1, 0, 4.0, 4.0, 0.5, 0.5, 4 ); 
-                  
-                 for( i = 0; i < iNum; i++ ) 
-                         ShowSyncHudMsg( iPlayers[ i ], g_iHudSync, "%L", iPlayers[ i ], "DR_NOT_ENOUGH" ); 
-                  
-                 return PLUGIN_CONTINUE; 
-         } 
-          
-         set_pcvar_num( g_pAutoBalance, 0 ); 
-         set_pcvar_num( g_pLimitTeams, 0 ); 
-          
-         if( g_bFirstRound ) { 
-                 set_hudmessage( 0, 128, 0, -1.0, 0.1, 0, 4.0, 4.0, 0.5, 0.5, 4 ); 
-                  
-                 for( i = 0; i < iNum; i++ ) { 
-                         ShowSyncHudMsg( iPlayers[ i ], g_iHudSync, "%L", iPlayers[ i ], "DR_STARTING" ); 
-                          
-                         ColorChat( iPlayers[ i ], RED, "%s^1 %L", g_szPrefix, iPlayers[ i ], "DR_STARTING_CC" ); 
-                 } 
-                  
-                 if( is_valid_ent( g_iThinker ) ) { 
-                         g_bRestart = true; 
-                          
-                         entity_set_float( g_iThinker, EV_FL_nextthink, get_gametime( ) + 9.0 ); 
-                 } else 
-                         set_task( 9.0, "RestartRound" ); 
-                  
-                 g_bStarting = true; 
-                 g_bFirstRound = false; 
-         } 
-          
-         return PLUGIN_CONTINUE; 
- } 
-   
- // CHECK TERRORIST 
- /////////////////////////////////////////// 
- public FwdThinker( iEntity ) { 
-         if( g_bRestart ) { 
-                 g_bRestart = false; 
-                  
-                 RestartRound( ); 
-         } else 
-                 CheckTerrorists( ); 
-          
-         entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 15.0 ); 
- } 
-   
- public CheckTerrorists( ) { 
-         if( !g_bEnabled || g_bFirstRound || g_bStarting ) 
-                 return PLUGIN_CONTINUE; 
-          
-         new i, iPlayers[ 32 ], iTerrors, iNum, iRealPlayers, CsTeams:iTeam; 
-         get_players( iPlayers, iNum, "c" ); 
-          
-         if( iNum <= 1 ) 
-                 return PLUGIN_CONTINUE; 
-          
-         for( i = 0; i < iNum; i++ ) { 
-                 iTeam = cs_get_user_team( iPlayers[ i ] ); 
-                  
-                 if( iTeam == CS_TEAM_T ) 
-                         iTerrors++; 
-                  
-                 if( iTeam == CS_TEAM_T || iTeam == CS_TEAM_CT ) 
-                         iRealPlayers++; 
-         } 
-          
-         if( iRealPlayers <= 1 ) { 
-                 set_hudmessage( 0, 128, 0, -1.0, 0.1, 0, 4.0, 4.0, 0.5, 0.5, 4 ); 
-                  
-                 for( i = 0; i < iNum; i++ ) 
-                         ShowSyncHudMsg( iPlayers[ i ], g_iHudSync, "%L", iPlayers[ i ], "DR_NOT_ENOUGH" ); 
-                  
-                 return PLUGIN_CONTINUE; 
-         } 
-          
-         if( iTerrors == 0 ) { 
-                 for( i = 0; i < iNum; i++ ) { 
-                         ColorChat(iPlayers[ i ], RED, "%s^1 %L", g_szPrefix, iPlayers[ i ], "DR_NO_DETECT"); 
-                          
-                         if( is_user_alive( iPlayers[ i ] ) && cs_get_user_team( iPlayers[ i ] ) == CS_TEAM_CT ) 
-                                 user_silentkill( iPlayers[ i ] ); 
-                 } 
-                  
-                 set_task( 0.5, "EventRandromize" ); 
-         } 
-          
-         return PLUGIN_CONTINUE; 
- } 
-   
- // LIFE SYSTEM 
- /////////////////////////////////////////// 
- public EventTerrsWin( ) { 
-         if( !g_bEnabled || g_bFirstRound ) 
-                 return PLUGIN_CONTINUE; 
-          
-         new iPlayers[ 32 ], iNum, iPlayer; 
-         get_players( iPlayers, iNum, "c" ); 
-          
-         if( iNum <= 1 ) 
-                 return PLUGIN_CONTINUE; 
-          
-         new iLifeCvar = get_pcvar_num( g_pLifeSystem ); 
-          
-         for( new i = 0; i < iNum; i++ ) { 
-                 iPlayer = iPlayers[ i ]; 
-                  
-                 if( cs_get_user_team( iPlayer ) == CS_TEAM_T ) { 
-                         set_user_frags( iPlayer, get_user_frags( iPlayer ) + 3 ); 
-                          
-                         if( iLifeCvar == 2 ) 
-                                 g_Lifes[ iPlayer ]++; 
-                 } 
-         } 
-          
-         return PLUGIN_CONTINUE; 
- } 
-   
- public EventDeath( ) { 
-         if( !g_bEnabled ) 
-                 return PLUGIN_CONTINUE; 
-          
- #if defined FAKE_PLAYER 
-         new iVictim = read_data( 2 ); 
-         new iTeam = get_user_team( iVictim ); 
-          
-         if( iTeam == 1 && is_user_alive( g_iFakeplayer ) ) 
-                 fakedamage( g_iFakeplayer, "worldspawn", 100.0, DMG_GENERIC ); 
-          
-         if( !get_pcvar_num( g_pLifeSystem ) ) 
-                 return PLUGIN_CONTINUE; 
- #else 
-         if( !get_pcvar_num( g_pLifeSystem ) ) 
-                 return PLUGIN_CONTINUE; 
-          
-         new iVictim = read_data( 2 ); 
-         new iTeam = get_user_team( iVictim ); 
- #endif 
-          
-         new iKiller = read_data( 1 ); 
-          
-         if( iKiller != iVictim && get_user_team(iKiller) != iTeam ) 
-                 g_Lifes[iKiller]++; 
-          
-         if( cs_get_user_team( iVictim ) == CS_TEAM_CT && g_Lifes[ iVictim ] > 0 ) { 
-                 new iCTcount; 
-                 for( new i = 1; i <= g_iMaxplayers; i++ ) { 
-                         if( is_user_alive( i ) && cs_get_user_team( i ) == CS_TEAM_CT ) 
-                                 iCTcount++; 
-                 } 
-                  
-                 if( iCTcount > 1 ) { 
-                         set_task(3.2, "fnRevivePlayer", iVictim); 
-                          
-                         ColorChat( iVictim, RED, "%s^1 %L", g_szPrefix, iVictim, "DR_LIFE_RESPAWN" ); 
-                 } 
-                 /*else 
-                         ColorChat( iVictim, RED, "%s^1 %L", g_szPrefix, iVictim, "DR_LIFE_CANT" );*/ 
-         } 
-          
-         return PLUGIN_CONTINUE; 
- } 
-   
- public fnRevivePlayer( id ) { 
-         if( g_bConnected[ id ] ) { 
-                 if( cs_get_user_team( id ) == CS_TEAM_CT ) { 
-                         new iCTcount; 
-                         for( new i = 1; i <= g_iMaxplayers; i++ ) 
-                                 if( is_user_alive( i ) && cs_get_user_team( i ) == CS_TEAM_CT ) 
-                                         iCTcount++; 
-                          
-                         if( iCTcount > 1 ) { 
-                                 ExecuteHamB( Ham_CS_RoundRespawn, id ); 
-                                  
-                                 g_Lifes[ id ]--; 
-                         } 
-                 } 
-         } 
- } 
-   
- public CmdShowlifes( id ) { 
-         if( get_pcvar_num( g_pLifeSystem ) == 0 ) { 
-                 ColorChat( id, RED, "%s^1 %L", g_szPrefix, id, "DR_LIFE_DISABLE" ); 
-                 return PLUGIN_HANDLED; 
-         } 
-          
-         if( g_Lifes[ id ] > 0 ) 
-                 ColorChat( id, RED, "%s^1 %L", g_szPrefix, id, "DR_LIFE_CC_COUNT", g_Lifes[ id ] ); 
-         else 
-                 ColorChat( id, RED, "%s^1 %L", g_szPrefix, id, "DR_LIFE_CC_NO" ); 
-          
-         return PLUGIN_HANDLED; 
- } 
-   
- public Showlifes( id ) { 
-         set_hudmessage( 0, 128, 0, 0.04, 0.71, 0, 2.5, 2.5, 0.5, 0.5, 3 ); 
-          
-         if( g_Lifes[ id ] > 0 ) 
-                 ShowSyncHudMsg( id, g_iHudSync2, "%L", id, "DR_LIFE_COUNT", g_Lifes[ id ] ); 
-         else 
-                 ShowSyncHudMsg( id, g_iHudSync2, "%L", id, "DR_LIFE_NO" ); 
- } 
-   
- // EVENTS 
- /////////////////////////////////////////// 
- public EventResetHud( id ) { 
-         if( g_bEnabled && get_pcvar_num( g_pHideHuds ) && !is_user_bot( id ) ) { 
-                 message_begin( MSG_ONE_UNRELIABLE, g_iMsgHideWeapon, _, id ); 
-                 write_byte( ( 1<<4 | 1<<5 ) ); 
-                 message_end( ); 
-                  
-                 message_begin( MSG_ONE_UNRELIABLE, g_iMsgCrosshair, _, id ); 
-                 write_byte( 0 ); 
-                 message_end( ); 
-         } 
- } 
-   
- public EventMoney( id ) { 
-         if( g_bEnabled && get_pcvar_num( g_pBlockMoney ) ) { 
-                 set_pdata_int( id, 115, 0 ); 
-                  
-                 message_begin( MSG_ONE_UNRELIABLE, g_iMsgMoney, _, id ); 
-                 write_long ( 0 ); 
-                 write_byte ( 1 ); 
-                 message_end( ); 
-         } 
- } 
-   
- public client_putinserver( id ) 
-         g_bConnected[ id ] = true; 
-   
- public client_disconnect( id ) { 
-         g_bConnected[ id ] = false; 
-         CheckTerrorists( ); 
-          
-         if( !g_bRestart && is_valid_ent( g_iThinker ) ) 
-                 entity_set_float( g_iThinker, EV_FL_nextthink, get_gametime( ) + 15.0 ); 
-          
- #if defined FAKE_PLAYER 
-         if( g_iFakeplayer == id ) { 
-                 set_task( 1.5, "UpdateBot" ); 
-                  
-                 g_iFakeplayer = 0; 
-         } 
- #endif 
- } 
-   
- // SEMICLIP 
- /////////////////////////////////////////// 
- public FwdFullPack( es, e, ent, host, flags, player, pSet ) { 
-         if( !g_bEnabled ) 
-                 return FMRES_IGNORED; 
-          
-         if( player && g_iSemiClip[ ent ] && g_iSemiClip[ host ] ) { 
-                 set_es( es, ES_Solid, SOLID_NOT ); 
-                 set_es( es, ES_RenderMode, kRenderTransAlpha ); 
-                 set_es( es, ES_RenderAmt, 85 ); 
-         } 
-          
-         return FMRES_IGNORED; 
- } 
-   
- public FwdStartFrame( ) { 
-         if( !g_bEnabled ) 
-                 return FMRES_IGNORED; 
-          
-         static iPlayers[ 32 ], iNum, iPlayer, iPlayer2, i, j; 
-         get_players( iPlayers, iNum, "ache", "CT" ); 
-          
-         arrayset( g_iSemiClip, 0, 32 ); 
-          
-         if( iNum <= 1 ) 
-                 return FMRES_IGNORED; 
-          
-         for( i = 0; i < iNum; i++ ) { 
-                 iPlayer = iPlayers[ i ]; 
-                  
-                 for( j = 0; j < iNum; j++ ) { 
-                         iPlayer2 = iPlayers[ j ]; 
-                          
-                         if( iPlayer == iPlayer2 ) 
-                                 continue; 
-                          
-                         if( g_iSemiClip[ iPlayer ] && g_iSemiClip[ iPlayer2 ] ) 
-                                 continue; 
-                          
-                         if( entity_range( iPlayer, iPlayer2 ) < 128 ) { 
-                                 g_iSemiClip[ iPlayer ]  = true; 
-                                 g_iSemiClip[ iPlayer2 ] = true; 
-                         } 
-                 } 
-         } 
-          
-         for( i = 0; i < iNum; i++ ) { 
-                 iPlayer = iPlayers[ i ]; 
-                  
-                 set_pev( iPlayer, pev_solid, g_iSemiClip[ iPlayer ] ? SOLID_NOT : SOLID_SLIDEBOX ); 
-         } 
-          
-         return FMRES_IGNORED; 
- } 
-   
- // FORWARDS 
- /////////////////////////////////////////// 
- public FwdHamPlayerSpawn( id ) { 
-         if( !g_bEnabled || !is_user_alive( id ) ) 
-                 return HAM_IGNORED; 
-          
-         if( get_pcvar_num( g_pBlockRadio ) ) // thanks to ConnorMcLeod for this good way :) 
-                 set_pdata_int( id, 192, 0 ); 
-          
- #if defined FAKE_PLAYER 
-         if( g_iFakeplayer == id ) { 
-                 set_pev( id, pev_frags, -1000.0 ); 
-                 cs_set_user_deaths( id, -1000 ); 
-                  
-                 set_pev( id, pev_effects, pev( id, pev_effects ) | EF_NODRAW ); 
-                 set_pev( id, pev_solid, SOLID_NOT ); 
-                 entity_set_origin( id, Float:{ 999999.0, 999999.0, 999999.0 } ); 
-                 dllfunc( DLLFunc_Think, id ); 
-         } else { 
- #endif 
-                 new CsTeams:iTeam = cs_get_user_team( id ); 
-                  
-                 // An small delay for message 
-                 if( get_pcvar_num( g_pLifeSystem ) != 0 && iTeam == CS_TEAM_CT ) 
-                         set_task( 0.8, "Showlifes", id ); 
-                  
-                 strip_user_weapons( id ); 
-                 give_item( id, "weapon_knife" ); 
-                  
-                 set_pdata_int( id, 116, 0 ); // Pickup fix by ConnorMcLeod 
-                  
-                 if( g_bGamerFun && iTeam == CS_TEAM_CT ) 
-                         give_item( id, "weapon_smokegrenade" ); 
-                  
-                 if( get_pcvar_num( g_pGiveUsp ) && iTeam == CS_TEAM_CT && !g_bHauntedHouse ) 
-                         set_task( 1.0, "GiveUsp", id ); 
-   
- #if defined FAKE_PLAYER 
-         } 
- #endif 
-          
-         return HAM_IGNORED; 
- } 
-   
- public GiveUsp( const id ) { 
-         if( is_user_alive( id ) ) { 
-                 give_item( id, "weapon_usp" ); 
-                 cs_set_user_bpammo( id, CSW_USP, 100 ); 
-         } 
- } 
-   
- public FwdGameDesc( ) { 
-         static const GameName[ ] = "Deathrun v3.0"; 
-          
-         forward_return( FMV_STRING, GameName ); 
-          
-         return FMRES_SUPERCEDE; 
- } 
-   
- public FwdClientKill( const id ) { 
-         if( !g_bEnabled || !is_user_alive(id) ) 
-                 return FMRES_IGNORED; 
-          
-         if( get_pcvar_num( g_pBlockKill ) || cs_get_user_team( id ) == CS_TEAM_T ) { 
-                 client_print( id, print_center, "%L", id, "DR_BLOCK_KILL" ); 
-                 client_print( id, print_console, "%L", id, "DR_BLOCK_KILL" ); 
-                  
-                 return FMRES_SUPERCEDE; 
-         } 
-          
-         return FMRES_IGNORED; 
- } 
-   
- public FwdImpulse_201( const id ) { 
-         if( g_bEnabled && get_pcvar_num( g_pBlockSpray ) ) { 
-                 if( is_user_alive( id ) ) 
-                         client_print( id, print_center, "%L", id, "DR_BLOCK_SPRAY" ); 
-                  
-                 return PLUGIN_HANDLED_MAIN; 
-         } 
-          
-         return PLUGIN_CONTINUE; 
- } 
-   
- public FwdHamPlayerDamage( id, idInflictor, idAttacker, Float:flDamage, iDamageBits ) { 
-         if( get_pcvar_num( g_pNoFallDmg ) ) 
-                 if( iDamageBits & DMG_FALL ) 
-                         if( get_user_team( id ) == 1 ) 
-                                 return HAM_SUPERCEDE; 
-          
-         return HAM_IGNORED; 
- } 
-   
- public MsgStatusIcon( msg_id, msg_dest, id ) { 
-         new szIcon[ 8 ]; 
-         get_msg_arg_string( 2, szIcon, 7 ); 
-          
-         static const BuyZone[ ] = "buyzone"; 
-          
-         if( equal( szIcon, BuyZone ) ) { 
-                 set_pdata_int( id, OFFSET_BZ, get_pdata_int( id, OFFSET_BZ, 5 ) & ~( 1 << 0 ), 5 ); 
-                  
-                 return PLUGIN_HANDLED; 
-         } 
-          
-         return PLUGIN_CONTINUE; 
- } 
-   
- public CmdRadio( id ) { 
-         if( get_pcvar_num( g_pBlockRadio ) ) 
-                 return PLUGIN_HANDLED_MAIN; 
-          
-         return PLUGIN_CONTINUE; 
- } 
-   
- public RestartRound( ) 
-         set_pcvar_num( g_pSvRestart, 1 ); 
-   
- // COLORCHAT 
- ///////////////////////////////////////////// 
- ColorChat( id, Color:type, const szMessage[], {Float,Sql,Result,_}:... ) { 
-         if( !get_playersnum( ) ) return; 
-          
-         new message[ 256 ]; 
-          
-         switch( type ) { 
-                 case NORMAL: message[0] = 0x01; 
-                 case GREEN: message[0] = 0x04; 
-                 default: message[0] = 0x03; 
-         } 
-          
-         vformat( message[ 1 ], 251, szMessage, 4 ); 
-          
-         message[ 192 ] = '^0'; 
-          
-         replace_all( message, 191, "\YEL", "^1" ); 
-         replace_all( message, 191, "\GRN", "^4" ); 
-         replace_all( message, 191, "\TEM", "^3" ); 
-          
-         new iTeam, ColorChange, index, MSG_Type; 
-          
-         if( id ) { 
-                 MSG_Type = MSG_ONE_UNRELIABLE; 
-                 index = id; 
-         } else { 
-                 index = CC_FindPlayer(); 
-                 MSG_Type = MSG_BROADCAST; 
-         } 
-          
-         iTeam = get_user_team( index ); 
-         ColorChange = CC_ColorSelection(index, MSG_Type, type); 
-   
-         CC_ShowColorMessage(index, MSG_Type, message); 
-          
-         if( ColorChange ) 
-                 CC_Team_Info(index, MSG_Type, TeamName[iTeam]); 
- } 
-   
- CC_ShowColorMessage( id, type, message[] ) { 
-         message_begin( type, g_iMsgSayText, _, id ); 
-         write_byte( id );        
-         write_string( message ); 
-         message_end( );  
- } 
-   
- CC_Team_Info( id, type, team[] ) { 
-         message_begin( type, g_iMsgTeamInfo, _, id ); 
-         write_byte( id ); 
-         write_string( team ); 
-         message_end( ); 
-          
-         return 1; 
- } 
-   
- CC_ColorSelection( index, type, Color:Type ) { 
-         switch( Type ) { 
-                 case RED: return CC_Team_Info( index, type, TeamName[ 1 ] ); 
-                 case BLUE: return CC_Team_Info( index, type, TeamName[ 2 ] ); 
-         } 
-          
-         return 0; 
- } 
-   
- CC_FindPlayer( ) { 
-         for( new i = 1; i <= g_iMaxplayers; i++ ) 
-                 if( g_bConnected[ i ] ) 
-                         return i; 
-          
-         return -1; 
- }