Scoatere ninsoare Realistic Snow [rezolvat]

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
A k c 3 n 7
Super moderator
Super moderator
Posts: 5137
Joined: 25 Aug 2014, 21:31
Detinator Steam: Da
CS Status: who dares wins
SteamID: Jandarmeria
Reputatie: Super moderator
Moderatorul anului 2023
Fost Membru Club eXtreamCS ( o luna )
Fost eXtream Mod
Fost Intermediar
Nume anterior: Sorinel
Fond eXtream: 0
Location: Unknown
Discord: remusakcent
Has thanked: 4 times
Been thanked: 46 times

19 Feb 2018, 14:48

Code: Select all

g_iSprite = precache_model( "sprites/snow1.spr" );
->

Code: Select all

// g_iSprite = precache_model( "sprites/snow1.spr" );
RoyalServer
User avatar
DRS
Fost moderator
Fost moderator
Posts: 2515
Joined: 24 Jan 2012, 22:00
Detinator Steam: Da
CS Status: Joc foarte rar.
Detinator server CS: N/A
SteamID: Privat
Reputatie: Fost moderator
0.5/3
Location: Birmingham, UK
Has thanked: 32 times
Been thanked: 54 times

24 Feb 2018, 00:32

Incearca acum
| Afiseaza codul
#include < amxmodx >
    #include < fakemeta >
    #include < engine >
    #include < xs >
   
   
    new const
        PLUGIN_NAME[ ]      = "Realistic Snow",
        PLUGIN_VERSION[ ]   = "0.4.2b";
       
   
    #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_iCvarSnowType;
   
    new g_iSprite;
   
    new Array:g_vecOrigins;
    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" );
 
    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_iCvarSnowType = register_cvar( "rs_type", "3" );
   
   
    // 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( 200.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 )
{
    set_pev( iEnt, pev_nextthink, get_gametime( ) + 3.1 );
   
    static iSnowType;
    iSnowType = clamp( get_pcvar_num( g_iCvarSnowType ), 0, 3 );
 
    if( iEnt != g_iMagicEntity || !pev_valid( iEnt ) || !iSnowType )
        return FMRES_IGNORED;
       
       
       
    static Float:fOrigin[ 3 ], iLocations, iCount;
    //iCount = iSnowType == 1 ? 3 : iSnowType * 2;
    switch( iSnowType )
    {
        case 1:
        {
            iCount = 3;
            iLocations = 20;
        }
        case 2:
        {
            iCount = 5;
            iLocations = 30;
        }
        case 3:
        {
            iCount = 10;
            iLocations = 45;
        }
    }
   
    while( iLocations > 0 )
    {
        ArrayGetArray( g_vecOrigins, random( g_iOrigins ), fOrigin );
        MakeSnow( fOrigin, g_iSprite, iCount, 8, random_num( 5, 10 ), 50, 30 );
        iLocations--;
       
    }
   
    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 ] + 40 ); // 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 )  )
        {
            ArrayPushArray( g_vecOrigins, fOrigin );
            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 += random_float(0.0 - g_flOffsets, g_flOffsets);
    }
 
    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;
}
YOU CAN TRY MY CHAT GPT, IMAGE GENERATOR, BLOG & WEBSITE TITLE/CONTENT GENERATOR, TEXT TO SPEECH, AI CODE AND MUCH MORE
Image
*Or!g!naL*
Fost moderator
Fost moderator
Posts: 1367
Joined: 16 Feb 2014, 16:28
Detinator Steam: Nu
CS Status: N-avem!
Detinator server CS: Zm.Darkcs.ro
Reputatie: Fost moderator ajutator
Has thanked: 3 times
Been thanked: 1 time

24 Feb 2018, 13:25

| Afiseaza codul
#include < amxmodx >
#include < fakemeta >
#include < engine >
#include < xs >


new const
PLUGIN_NAME[ ]      = "Realistic Snow",
PLUGIN_VERSION[ ]   = "0.4.2b";


#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_iCvarSnowType;


new Array:g_vecOrigins;
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" );

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_iCvarSnowType = register_cvar( "rs_type", "3" );


// 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( 200.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 )
{
	set_pev( iEnt, pev_nextthink, get_gametime( ) + 3.1 );
	
	static iSnowType;
	iSnowType = clamp( get_pcvar_num( g_iCvarSnowType ), 0, 3 );
	
	if( iEnt != g_iMagicEntity || !pev_valid( iEnt ) || !iSnowType )
		return FMRES_IGNORED;
	
	
	
	static Float:fOrigin[ 3 ], iLocations, iCount;
	//iCount = iSnowType == 1 ? 3 : iSnowType * 2;
	switch( iSnowType )
	{
		case 1:
		{
			iCount = 3;
			iLocations = 20;
		}
		case 2:
		{
			iCount = 5;
			iLocations = 30;
		}
		case 3:
		{
			iCount = 10;
			iLocations = 45;
		}
	}
	
	/*while( iLocations > 0 )
	{
		ArrayGetArray( g_vecOrigins, random( g_iOrigins ), fOrigin );
		MakeSnow( fOrigin, g_iSprite, iCount, 8, random_num( 5, 10 ), 50, 30 );
		iLocations--;
		
	}*/
	
	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 ] + 40 ); // 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 )  )
		{
			ArrayPushArray( g_vecOrigins, fOrigin );
			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 += random_float(0.0 - g_flOffsets, g_flOffsets);
}

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

Cine este acest talent ?
Image
User avatar
YONTU
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2466
Joined: 10 May 2013, 14:25
Detinator Steam: Nu
CS Status: Everyone is looking at ur shoes
Reputatie: Moderator ajutator
Fost scripter eXtreamCS
Location: Gura Humorului
Has thanked: 256 times
Been thanked: 288 times
Contact:

24 Feb 2018, 22:36

of of..
| Afiseaza codul
#include <amxmodx>
#include <fakemeta>
#include <engine>

new const PLUGIN_NAME[] = "Realistic Snow", PLUGIN_VERSION[]   = "0.4.2b";

#define TASKID_FOG  1337
#define TASKID_WIND 7331

new const g_szSound[] = "misc/rs_wind.wav";
new g_iCvarSound, g_iCvarSky, g_iCvarLight, g_iCvarFog;

public plugin_precache()
{  
	// We register plugin info and the cvars here because it's a must!
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, "Askhanar");
	
	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");
	
	// Precache our wind sound.
	precache_sound(g_szSound);
	
	// 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");
	
	engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"));
}

public plugin_init()
{
	// We make sure to remove anoying entities..
	remove_entity_name("env_fog");
	remove_entity_name("env_rain");
	
	// Set a task to play sound..
	set_task(35.0, "task_PlayWind", TASKID_WIND, _, _, "b", 0);
}

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);
}

stock 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();
}
ti-am inclus in sursa asta zapada

Aveai cvar cu care puteai dezactiva fulgii:

Code: Select all

rs_type "0"
In fine, ti-am scos ninsoarea din plugin si am curatat putin codul. Si ca sa iti fi mers pluginul ala de zapada, trebuia sa il pui in plugins.ini sub acesta.
Sau stergeai linia:

Code: Select all

remove_entity_name( "env_snow" );
din plugin_init() si e voila.
„Peste douăzeci de ani vei fi dezamăgit din cauza lucrurilor pe care nu le-ai făcut, nu din cauza celor pe care le-ai făcut.” - Mark Twain
„Asa e si in viata, hotii castiga, prostii care invata pierd.” - Mihai Nemeș


Bio.LeagueCs.Ro - Biohazard v4.4 Xmas Edition
discord: IonutC#5114

Experinta in: Java/Spring boot/Angular/C/C++/C#/Javascript/Python/HTML/CSS/Pawn/SQL
Ai nevoie de ajutorul meu? Ma poti gasi doar la adresa de discord de mai sus.
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 11 guests