Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Prośba o usuniecie Fake Player


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 Sumik

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
Offline

Napisano 09.10.2009 23:26

Proszę o skasowanie Fake Playera próbowałem dać przed #define FAKE_PLAYER takie znaki // - ale to nic nie daje

/***
 * Link to the plugin
 *
 *	http://forums.alliedmods.net/showthread.php?t=78197
 */

#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
new const g_szBotName[ ] = "DRM Fake Player";

// 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( ) {
	register_plugin( "Deathrun Manager", "3.0", "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", "3.0", FCVAR_SERVER | FCVAR_SPONLY );
	set_cvar_string( "deathrun_version", "3.0" );
	
	// 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 || get_pcvar_num( g_pLifeSystem ) == 0 )
		return PLUGIN_CONTINUE;
	
	new iKiller = read_data( 1 );
	new iVictim = read_data( 2 );
	new iTeam = get_user_team( iVictim );
	
	if( iKiller != iVictim && get_user_team(iKiller) != iTeam )
		g_Lifes[iKiller]++;
	
#if defined FAKE_PLAYER
	if( iTeam == 1 && is_user_alive( g_iFakeplayer ) )
		fakedamage( g_iFakeplayer, "worldspawn", 100.0, DMG_GENERIC );
#endif
	
	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 ];
		
	//	if( g_iSemiClip[ iPlayer ] )
	//		continue;
		
		for( j = 0; j < iNum; j++ ) {
			iPlayer2 = iPlayers[ j ];
			
			if( iPlayer == iPlayer2 )
				continue;
			
		//	if( 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 <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' />
		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( 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( 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( id, uc_handle, seed ) {	
	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;
}

  • +
  • -
  • 0

#2 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1 549
  • Lokalizacja:.
Offline

Napisano 10.10.2009 00:49

/*** 

 * Link to the plugin 

 * 

 *    http://forums.alliedmods.net/showthread.php?t=78197 

 */ 



#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 

new const g_szBotName[ ] = "DRM Fake Player"; 



// 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( ) { 

    register_plugin( "Deathrun Manager", "3.0", "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", "3.0", FCVAR_SERVER | FCVAR_SPONLY ); 

    set_cvar_string( "deathrun_version", "3.0" ); 

    

    // 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 || get_pcvar_num( g_pLifeSystem ) == 0 ) 

        return PLUGIN_CONTINUE; 

    

    new iKiller = read_data( 1 ); 

    new iVictim = read_data( 2 ); 

    new iTeam = get_user_team( iVictim ); 

    

    if( iKiller != iVictim && get_user_team(iKiller) != iTeam ) 

        g_Lifes[iKiller]++; 

    

#if defined FAKE_PLAYER 

    if( iTeam == 1 && is_user_alive( g_iFakeplayer ) ) 

        fakedamage( g_iFakeplayer, "worldspawn", 100.0, DMG_GENERIC ); 

#endif 

    

    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 ]; 

        

    //    if( g_iSemiClip[ iPlayer ] ) 

    //        continue; 

        

        for( j = 0; j < iNum; j++ ) { 

            iPlayer2 = iPlayers[ j ]; 

            

            if( iPlayer == iPlayer2 ) 

                continue; 

            

        //    if( 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 <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' /> 

        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( 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( 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( id, uc_handle, seed ) {    

    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; 

}

  • +
  • -
  • 0

#3 Sumik

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
Offline

Napisano 10.10.2009 18:34

Nie działa :( zmienilem mape i nic
  • +
  • -
  • 0

#4 zer0.

    Godlike

  • Przyjaciel

Reputacja: 429
Wszechobecny

  • Postów:2 116
  • Steam:steam
  • Lokalizacja:Kw
Offline

Napisano 10.10.2009 18:47

Sumik, w załączniku.

Załączone pliki


  • +
  • -
  • 0

#5 Sumik

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
Offline

Napisano 10.10.2009 19:00

wgralem i nadal nic :(
  • +
  • -
  • 0

#6 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1 549
  • Lokalizacja:.
Offline

Napisano 10.10.2009 20:27

// Comment this line if you do not want to have fake player !
//#define FAKE_PLAYER 


Powiem tak działa jak najbardziej sprawdziłem

Masz może jakieś logi?
  • +
  • -
  • 0

#7 zer0.

    Godlike

  • Przyjaciel

Reputacja: 429
Wszechobecny

  • Postów:2 116
  • Steam:steam
  • Lokalizacja:Kw
Offline

Napisano 11.10.2009 11:19

Powiem tak działa jak najbardziej sprawdziłem

Raczej ukośniki przed:
//set_task( 1.5, "UpdateBot" );
//set_task( 5.0, "UpdateBot" );

  • +
  • -
  • 0

#8 Sumik

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
Offline

Napisano 15.10.2009 22:34

zrobilem to co kazaliscie i nadal nie działą :( pomocy
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych