Let it Snow!

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Let it Snow!

Мнение от OciXCrom » 07 Окт 2016, 16:13

Изображение

Let it Snow!
Описание
  • Плъгинът автоматично прави така, че в сървъра ви да вали сняг през декември и януари.
Снимки

Изображение

Редактиране на плъгина
  • Можете да промените месеците, през които да вали сняг от тази част в кода:

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

    new const g_iSnowyMonths[] = { 1, 12 } 
Допълнителна информация и линк за теглене

Изображение
Изображение
Изображение

Аватар
MF1
Извън линия
Потребител
Потребител
Мнения: 316
Регистриран на: 12 Окт 2016, 21:15
Местоположение: гр.Варна
Получена благодарност: 12 пъти
Обратна връзка:

Let it Snow!

Мнение от MF1 » 27 Ное 2017, 21:33

има ли значение, къде ще е вписан в plugins.ini ?
Join now.
www.MF1-CS.eu ---------------------------- 91.132.63.55:27015 91.132.63.56:27015 ---------------------------- :bg:

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Let it Snow!

Мнение от OciXCrom » 27 Ное 2017, 21:38

Не?

Аватар
deadlylord
Извън линия
Потребител
Потребител
Мнения: 572
Регистриран на: 04 Апр 2017, 16:35
Местоположение: Бургас, България
Получена благодарност: 2 пъти
Обратна връзка:

Let it Snow!

Мнение от deadlylord » 27 Ное 2017, 22:55

Възможно ли е да се направят снежинките по-дебели и да остават сняг на земята ... или по-точно да сменя текстурите на земята и да им слага снежни текстури

Аватар
Nikolow
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 196
Регистриран на: 27 Ное 2016, 13:02
Местоположение: Варна
Се отблагодари: 7 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Let it Snow!

Мнение от Nikolow » 27 Ное 2017, 23:15

Отделен, различен плъгин, в който е използван спрайт за снежинки:

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

/* Plugin generated by AMXX-Studio */

	#include < amxmodx >
	#include < fakemeta >
	#include < engine >
	#include < xs >
	
	
	new const
		PLUGIN_NAME[ ] 		= "Realistic Snow",
		PLUGIN_VERSION[ ] 	= "1.1.0b";
		
	
	#define	TASKID_FOG	1337
	#define TASKID_WIND	7331
		
		
	/* Thanks to joropito for his SuperSpawns */
	#define SS_VERSION	"1.0"
	#define SS_MIN_DISTANCE	250.0
	#define SS_MAX_LOOPS	100000
	
	new Array:g_vecSsOrigins;
	new Array:g_vecSsSpawns;
	new Array:g_vecSsUsed;
	new Float:g_flSsMinDist;
	new g_iSsTime;
	
	new const g_szStarts[][] =
	{
		"info_player_start",
		"info_player_deathmatch"
	};
	
	new const Float:g_flOffsets[] =
	{
		3500.0,
		3500.0,
		1500.0
	};
	/* End of SuperSpawns */
	
	new const g_szSound[ ] = "misc/rs_wind.wav";
	
	new g_iCvarSound;
	new g_iCvarSky;
	new g_iCvarLight;
	new g_iCvarFog;
	new g_iCvarDelay;
	
	new g_iSprite;
	
	//new Array:g_vecOrigins;
	new Float:g_fVecOrigins[ 128 ][ 3 ];
	new g_iOrigins = 0;
	
	new g_iMagicEntity;
	
public plugin_precache( )
{	
	// We register plugin info and the cvars here because it's a must!
	register_plugin( PLUGIN_NAME, PLUGIN_VERSION, "Askhanar" );	
	register_cvar( "rs_version", PLUGIN_VERSION, FCVAR_SERVER | FCVAR_SPONLY ); 
	g_iCvarSound = register_cvar( "rs_sound", "1" );
	g_iCvarSky = register_cvar( "rs_sky", "1" );
	g_iCvarLight = register_cvar( "rs_light", "1" );
	g_iCvarFog = register_cvar( "rs_fog", "1" );
	g_iCvarDelay = register_cvar( "rs_delay", "0.8" );
	
	
	// Precache our wind sound.
	precache_sound( g_szSound );
		
	//Precache our snow .spr
	g_iSprite = precache_model( "sprites/snow1.spr" );
	
	
	// Let's put a random snow sky if the cvar allows us to.
	if( get_pcvar_num( g_iCvarSky) )
		set_cvar_string( "sv_skyname", random_num( 0, 1 ) == 1 ? "snow" : "snowlake_" );
	
	// We need to make the snow look cooler.. so let's make the map darker.. if the cvar allows us to.
	if( get_pcvar_num( g_iCvarLight ) )
		set_lights( "d" );
}
				
public plugin_init( )
{
	
	// We make sure to remove anoying entities..
	remove_entity_name( "env_fog" );
	remove_entity_name( "env_rain" );
	remove_entity_name( "env_snow" );
	
	// Prepare some stuffs
	//g_vecOrigins = ArrayCreate( 3, 1 );
	
	SsInit( 250.0 );
	SsScan( );
	SsDump( );
	
	// Set a task to play sound..
	set_task( 35.0, "task_PlayWind", TASKID_WIND, _, _, "b", 0 );
	
	// Create our MagicEntity. ( snow's brain.. )
CreateEntity:
	
	new iEnt;
	iEnt  = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
	if( !pev_valid( iEnt ) || !iEnt )
		goto CreateEntity;
	
	set_pev( iEnt, pev_classname, "Askhanar's_MagicEntity" );
	set_pev( iEnt, pev_nextthink, get_gametime(  ) + 1.0 );
	
	register_forward( FM_Think, "fwd_MagicEntityThink" );
	g_iMagicEntity = iEnt;
	
	
	
}

public task_PlayWind( )
	if( get_pcvar_num( g_iCvarSound ) )
	{
		client_cmd( 0, "spk %s", g_szSound );
	}

public client_putinserver( id )
{
	if( is_user_bot( id ) || is_user_hltv( id ) )
		return;
		
	if( get_pcvar_num( g_iCvarFog ) )
		if( !task_exists( id + TASKID_FOG ) )
			set_task( 3.0, "task_MakeFogToPlayer", id + TASKID_FOG );
		
}

public task_MakeFogToPlayer( id )
{
	
	id -= TASKID_FOG;
	if( !is_user_connected( id ) )
		return;
		
	MakeFog( id, 255, 255, 255, 111, 18, 3, 58 );
	
}

public fwd_MagicEntityThink( iEnt )
{
	
	if( iEnt != g_iMagicEntity || !pev_valid( iEnt ) )
		return FMRES_IGNORED;
	
	set_pev( iEnt, pev_nextthink, get_gametime( ) + get_pcvar_float( g_iCvarDelay ) );
		
	for( new i = 0; i < g_iOrigins; i++ )
		MakeSnow( g_fVecOrigins[ i ], g_iSprite, 1, 1, random_num( 1, 10 ), random_num( 0, 15 ), random_num( 0, 5 ) );
	
	return FMRES_IGNORED;
}

MakeSnow( Float:fOrigin[ 3 ], iSpriteId, iCount, iLife, iScale, iVelocity, iRandomness )
{
	engfunc( EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fOrigin, 0 );
	write_byte( TE_SPRITETRAIL ); // TE ID
	engfunc( EngFunc_WriteCoord, fOrigin[ 0 ] ); // x axis
	engfunc( EngFunc_WriteCoord, fOrigin[ 1 ] ); // y axis
	engfunc( EngFunc_WriteCoord, fOrigin[ 2 ] ); // z axis
	engfunc( EngFunc_WriteCoord, fOrigin[ 0 ] ); // x axis
	engfunc( EngFunc_WriteCoord, fOrigin[ 1 ] ); // y axis
	engfunc( EngFunc_WriteCoord, fOrigin[ 2 ] ); // z axis
	write_short( iSpriteId ); // Sprite Index
	write_byte( iCount ); // Count
	write_byte( iLife ); // Life
	write_byte( iScale ); // Scale
	write_byte( iVelocity  ); // Velocity Along Vector
	write_byte( iRandomness ); // Rendomness of Velocity
	message_end( );
}

MakeFog( id, const iRed, const iGreen, const iBlue, const iSD, const iED, const iD1, const iD2 )
{
	static iMsgIdFog;
	
	message_begin( id == 0 ? MSG_ALL : MSG_ONE, !iMsgIdFog ? ( iMsgIdFog = get_user_msgid( "Fog" ) ) : iMsgIdFog, {0, 0, 0}, id );
	write_byte( iRed );  // R
	write_byte( iGreen );  // G
	write_byte( iBlue );  // B
	write_byte( iSD ); // SD
	write_byte( iED );  // ED
	write_byte( iD1 );   // D1
	write_byte( iD2 );  // D2
	message_end(  );
}


stock Get_Sky_Origin( const Float:vecTarget[ 3 ], Float:vecStart[ 3 ] )
{

	new Float:vecHit[ 3 ];
	vecStart[ 0 ] = vecTarget[ 0 ];
	vecStart[ 1 ] = vecTarget[ 1 ];
	vecStart[ 2 ] = vecTarget[ 2 ] + 5096.0;
	
	while( engfunc( EngFunc_PointContents, vecStart ) != -1 )
	{
		if( vecStart[ 2 ] < vecTarget[ 2 ] + 128.0 )
			break;
			
		vecStart[ 2 ] -= 16.0;
	}
	
	if( vecStart[ 2 ] - vecTarget[ 2 ] <= 196.0 )
		return 0;
		
	xs_vec_copy( vecStart, vecHit );
	vecHit[ 2 ] += 256.0;
	
	new s_TextureName[ 16 ];
	engfunc( EngFunc_TraceTexture, 0, vecStart, vecHit, s_TextureName, sizeof( s_TextureName ) -1 );
	if( !equal( s_TextureName, "sky" ) )
		return 0
	
	vecStart[ 2 ] -= 10.0;
	return 1;
}

/*====================================
=============Super Spawns============*/

public SsInit(Float:mindist)
{
	
	register_cvar("sv_superspawns", SS_VERSION, (FCVAR_SERVER|FCVAR_SPONLY));
	register_concmd("_ss_dump", "SsDump");

	g_flSsMinDist = mindist;
	g_vecSsOrigins = ArrayCreate(3, 1);
	g_vecSsSpawns = ArrayCreate(3, 1);
	g_vecSsUsed = ArrayCreate(3, 1);
}

stock SsClean()
{
	g_flSsMinDist = 0.0;
	ArrayClear(g_vecSsOrigins);
	ArrayClear(g_vecSsSpawns);
	ArrayClear(g_vecSsUsed);
}

stock SsGetOrigin(Float:origin[3])
{
	new Float:data[3], size;
	new ok = 1;

	while((size = ArraySize(g_vecSsOrigins)))
	{
		new idx = random_num(0, size - 1);

		ArrayGetArray(g_vecSsOrigins, idx, origin);

		new used = ArraySize(g_vecSsUsed);
		for(new i = 0; i < used; i++)
		{
			ok = 0;
			ArrayGetArray(g_vecSsUsed, i, data);
			if(get_distance_f(data, origin) >= g_flSsMinDist)
			{
				ok = 1;
				break;
			}
		}

		ArrayDeleteItem(g_vecSsOrigins, idx);
		if(ok)
		{
			ArrayPushArray(g_vecSsUsed, origin);
			return true;
		}
	}
	return false;
}

public SsDump()
{
	new Float:origin[3], Float:fOrigin[ 3 ];
	new count = ArraySize(g_vecSsOrigins);
	server_print("-------------------------------------------------------");

	for(new i = 0; i < count; i++)
	{
		ArrayGetArray(g_vecSsOrigins, i, origin);

		if( Get_Sky_Origin( origin, fOrigin )  && g_iOrigins < 128 )
		{
			//ArrayPushArray( g_vecOrigins, fOrigin );//
			
			g_fVecOrigins[ g_iOrigins ][ 0 ] = fOrigin[ 0 ];
			g_fVecOrigins[ g_iOrigins ][ 1 ] = fOrigin[ 1 ];
			g_fVecOrigins[ g_iOrigins ][ 2 ] = fOrigin[ 2 ];
			g_iOrigins++;
		}
	}

	server_print("-------------------------------------------------------");
	server_print("Number of origins: %i", count);
	server_print("Number of good origins: %i", g_iOrigins);
	server_print("Time: %i", g_iSsTime);
	server_print("-------------------------------------------------------");
	
}

public SsScan()
{
	new start, Float:origin[3], starttime;
	starttime = get_systime();
	for(start = 0; start < sizeof(g_szStarts); start++)
	{
		server_print("Searching for %s", g_szStarts[start]);
		new ent;
		if((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", g_szStarts[start])))
		{
			new counter;
			pev(ent, pev_origin, origin);
			ArrayPushArray(g_vecSsSpawns, origin);
			while(counter < SS_MAX_LOOPS)
			{
				counter = GetLocation(origin, counter);
			}
		}
	}
	g_iSsTime = get_systime();
	g_iSsTime -= starttime;
}

GetLocation(Float:start[3], &counter)
{
	new Float:end[3];
	for(new i = 0; i < 3; i++)
	{
		end[i] += random_float(0.0 - g_flOffsets[i], g_flOffsets[i]);
	}

	if(IsValid(start, end))
	{
		start[0] = end[0];
		start[1] = end[1];
		start[2] = end[2];
		ArrayPushArray(g_vecSsOrigins, end);
	}
	counter++;
	return counter;
}

IsValid(Float:start[3], Float:end[3])
{
	SetFloor(end);
	end[2] += 36.0;
	new point = engfunc(EngFunc_PointContents, end);
	if(point == CONTENTS_EMPTY)
	{
		if(CheckPoints(end) && CheckDistance(end) && CheckVisibility(start, end))
		{
			if(!trace_hull(end, HULL_LARGE, -1))
			{
				return true;
			}
		}
	}
	return false;
}

CheckVisibility(Float:start[3], Float:end[3])
{
	new tr;
	engfunc(EngFunc_TraceLine, start, end, IGNORE_GLASS, -1, tr);
	return (get_tr2(tr, TR_pHit) < 0);
}

SetFloor(Float:start[3])
{
	new tr, Float:end[3];
	end[0] = start[0];
	end[1] = start[1];
	end[2] = -99999.9;
	engfunc(EngFunc_TraceLine, start, end, DONT_IGNORE_MONSTERS, -1, tr);
	get_tr2(tr, TR_vecEndPos, start);
}

CheckPoints(Float:origin[3])
{
	new Float:data[3], tr, point;
	data[0] = origin[0];
	data[1] = origin[1];
	data[2] = 99999.9;
	engfunc(EngFunc_TraceLine, origin, data, DONT_IGNORE_MONSTERS, -1, tr);
	get_tr2(tr, TR_vecEndPos, data);
	point = engfunc(EngFunc_PointContents, data);
	if(point == CONTENTS_SKY && get_distance_f(origin, data) < 250.0)
	{
		return false;
	}
	data[2] = -99999.9;
	engfunc(EngFunc_TraceLine, origin, data, DONT_IGNORE_MONSTERS, -1, tr);
	get_tr2(tr, TR_vecEndPos, data);
	point = engfunc(EngFunc_PointContents, data);
	if(point < CONTENTS_SOLID)
		return false;
	
	return true;
}

CheckDistance(Float:origin[3])
{
	new Float:dist, Float:data[3];
	new count = ArraySize(g_vecSsSpawns);
	for(new i = 0; i < count; i++)
	{
		ArrayGetArray(g_vecSsSpawns, i, data);
		dist = get_distance_f(origin, data);
		if(dist < SS_MIN_DISTANCE)
			return false;
	}

	count = ArraySize(g_vecSsOrigins);
	for(new i = 0; i < count; i++)
	{
		ArrayGetArray(g_vecSsOrigins, i, data);
		dist = get_distance_f(origin, data);
		if(dist < SS_MIN_DISTANCE)
			return false;
	}

	return true;
}
ЛИНК към спрайта
Tired and retired...

Аватар
deadlylord
Извън линия
Потребител
Потребител
Мнения: 572
Регистриран на: 04 Апр 2017, 16:35
Местоположение: Бургас, България
Получена благодарност: 2 пъти
Обратна връзка:

Let it Snow!

Мнение от deadlylord » 27 Ное 2017, 23:25

@Nikolow
Плъгина предлага доста опции, но за съжаление самите снежинки са доста грозни и всички падат по едно и също време, вместо да падат на рандом
Последно промяна от deadlylord на 28 Ное 2017, 02:54, променено общо 1 път.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Let it Snow!

Мнение от OciXCrom » 28 Ное 2017, 01:53

Моят плъгин е само 5 реда и ползва ефектите от самата игра, които не може да се променят.

Аватар
deadlylord
Извън линия
Потребител
Потребител
Мнения: 572
Регистриран на: 04 Апр 2017, 16:35
Местоположение: Бургас, България
Получена благодарност: 2 пъти
Обратна връзка:

Let it Snow!

Мнение от deadlylord » 28 Ное 2017, 02:54

Ясно, мерси за отговора! :)

Аватар
Dvstoyanov89
Извън линия
Потребител
Потребител
Мнения: 41
Регистриран на: 11 Май 2019, 14:04
Се отблагодари: 11 пъти
Получена благодарност: 6 пъти

Let it Snow!

Мнение от Dvstoyanov89 » 11 Май 2019, 14:05

Здравейте, възможно ли е да ми дадете кода със всички 12 месеца. Демек целогодишно да вали сняг. Благодаря

Аватар
mBFF-TheFucKBG
Извън линия
Потребител
Потребител
Мнения: 311
Регистриран на: 09 Ное 2018, 16:40
Местоположение: Сливен
Се отблагодари: 13 пъти
Получена благодарност: 11 пъти

Let it Snow!

Мнение от mBFF-TheFucKBG » 11 Май 2019, 14:25

  • Можете да промените месеците, през които да вали сняг от тази част в кода:

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

    new const g_iSnowyMonths[] = { 1, 12 } 
Нужно беше само да прочетеш :)
Променяш това в кода.
Фенче на СкандаУ <3

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Одобрени плъгини”

Кой е на линия

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