xPaw DRM - while for new terro conditions

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
Adryyy
Извън линия
Foreigner
Foreigner
Мнения: 9
Регистриран на: 29 Окт 2019, 22:04
Се отблагодари: 7 пъти

xPaw DRM - while for new terro conditions

Мнение от Adryyy » 17 Ное 2019, 18:50

Hi. I use deathrun manager by xpaw, and i tried to modify while function for new terro with the new terro can't be the same with the last. I tried to make to be always another terro, all players to be, not 1 player for x times, but i use 'fix round' what put a new random terro if the last terro leave, and i think is not ok, i will need to integrate in drm? I tried with native, look:

from fixround

Код за потвърждение: Избери целия код

new cname[33][32]

public plugin_natives()	register_native("get_nt", "native_get_nt",0)
public native_get_nt(iPlugin, iParams)
{
	//return cname[get_param( 1 )];
	set_string(2, cname[get_param(1)], get_param(3))
}

//================================================================================
//[Set new Ts]
//=================================================================================
public check_round( leaving_player )
{
	static iPlayersnum, id,iTnum
	iPlayersnum = fnGetPlaying( )
	
	if( iPlayersnum < 2||!dr_started() )	return;
	
	iTnum = fnGetTeamCount( CS_TEAM_T )
	if( !iTnum )
	{
		static iCTnum
		iCTnum = fnGetTeamCount( CS_TEAM_CT )
		if( iCTnum <= 1 )	return;
		
		id = fnGetRandomPlayer()
		while( ( id == leaving_player ) ) { }
		set_terrorist_team( id )
		if( !is_user_alive( id ) )	ExecuteHamB( Ham_CS_RoundRespawn, id )
		
		new name_leav[ 32 ],name[ 32 ]
		get_user_name( leaving_player, name_leav, charsmax(name_leav) )
		get_user_name( id, name, charsmax(name) )

		#if defined BONUS_NO_FIRST_FALLDMG      
		g_iIsNewTs[ id ] = true
		#endif

		DispatchSpawn( id )//....
		
		//g_iOrigin[ leaving_player ][ 2 ] += 20		on??
		set_pev( id, pev_origin, g_iOrigin[ leaving_player ] )
		//entity_set_vector( id, EV_VEC_velocity, Float:{ 0.0, 0.0, 0.0 } )
		
		//pev( id, pev_origin, g_iOrigin[ id ] )
		if( IsUserStuck( id, g_iOrigin[ id ], pev( id, pev_flags ) ) )	UTIL_UnstickPlayer( id, START_DISTANCE, MAX_ATTEMPTS )
		set_task( 4.3, "check_user_stuck", id )
		
		client_print_color(0,print_team_red, "^x04[DR]^x03 %s^x01 este noul terorist, deoarece fostul terorist^x03 %s^x01 s-a deconectat.", name, name_leav )

		copy(cname[id],charsmax(cname[]),name)
		
		#if defined BONUS_FRAGS
		set_user_frags( id, get_user_frags( id ) + FRAGS_NUM )
		set_user_frags_update( id )
		#endif
		
		#if defined LOGS      
		static buffer[ 150 ]
		formatex( buffer, charsmax( buffer ), "[DR] %s a fost mutat la TS, deoarece %s s-a deconectat!", name, name_leav )
		log_to_file( "dr_last_t_disc.txt", buffer  )
		#endif      
	}
}

in DRM

Код за потвърждение: Избери целия код

native get_nt(id,name[],len)

// NEW TERRORIST
///////////////////////////////////////////
public EventRandromize( )
{
	if( !g_bEnabled || g_bFirstRound || g_bRandromized )	return PLUGIN_CONTINUE;
	
	g_bRandromized = true
	
	new i, iPlayers[ 32 ], iNum, iPlayer,iRandomPlayer, CsTeams:iTeam;
	get_players( iPlayers, iNum, "ch" );
	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 );
	}

	//iRandomPlayer=fnGetRandomPlayer()
	
	while( ( iRandomPlayer = iPlayers[ random_num( 0, iNum - 1 ) ] )==g_iLastTerr) { }
//						random(iNum)

	//if(!is_user_connected(iRnadomPlayer))	EventRandromize( ) + return PLUGIN_CONTINUE

	new szName[ 32 ];
	get_user_name( iRandomPlayer, szName, charsmax(szName) );
	new szRankName[32]
	get_nt(g_iLastTerr, szRankName, charsmax(szRankName)) 
	if(!equal(szName,szRankName)&&g_iLastTerr!=iRandomPlayer)	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 );
		
		for( i = 0; i < iNum; i++ )	client_print_color(iPlayers[ i ],print_team_red, "%s^3 %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 ); //ON-DEF

		if(no_detect)
		{
			//ExecuteHam(Ham_Spawn, iRandomPlayer)
			ExecuteHam(Ham_CS_RoundRespawn, iRandomPlayer)
			//DispatchSpawn( iRandomPlayer )
			no_detect=false
		}

		if(is_user_alive(iRandomPlayer))
		{
			//user_silentkill(iRandomPlayer)
			set_user_godmode(iRandomPlayer,1)
		}
	}
	else {
		g_bRandromized = false
		EventRandromize( );
	}
	return PLUGIN_CONTINUE;
}
i tried to put inside of while, but i think is not ok

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта