Modificare presents

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
Doctor whO? <3
Membru, skill +3
Membru, skill +3
Posts: 1196
Joined: 21 Jun 2013, 12:40
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Reputatie: Fost Membru Club eXtreamCS (doua luni)
Has thanked: 109 times
Been thanked: 75 times
Contact:

01 Jan 2020, 01:19

Salut, as dori daca se poate sa imi dezactivati(scoateti) din acest plugin urmatoarele:
Gravitatea, speed-ul(atat cea marita cat si cea scazuta) si daca puteti sa faceti cumva sa apara in chat un mesaj cand se spawneaza cadourile, gen ***Cadourile au aparut pe harta, cauta-le***
Si sa apara mesajul in chat cu ceea ce primeste din gift , ex mesaj: [CSGO]Ai gasit 25 HP
plugin | Afiseaza codul
/*

Plugin: Xmas Gifts 2.3.2
Autor: KronoS # GG
Site: www.eXtreamCS.com

Credite:
 @FakeNick - pentru pluginul Pick up present de unde a pornit tot
 @joropito - pentru Super Spawns
 @Askhanar - pentru fixarea Super Spawns

Cvar-uri:
 - presents_respawn_time 60.0 (Dupa cat timp dupa ridicarea unui cadou apare altul pe harta)
 - presents_on_map 11 (Cate cadouri sa apara pe harta)
 ATENTIE: Se calculeaza numarul cvar-ului - 1!!!
 Daca puneti 11 or sa apara doar 10 cadouri!

Changelog:

* v2.3.2 - 28.12.2012
 - cadourile primeau respawn chiar daca timpul era setat pe 0.0

* v2.3.1 - 28.12.2012
 - cadourile nu primeau respawn

* v2.3 - 28.12.2012
 - cod infrumusetat
 - cadourile nu mai apareau dupa prima runda (fixat de Askhanar)

* v2.2 - 25.11.2010
 - bug reparat: cadourile dispareau de pe harta
 - FM_Think indeparta

* v2.1 - 17.11.2010
 - super spawns
 - cvar: presents_on_map
 - bug reparat: cadourile apareau in aer
 - variabila globala
 - FUN -> Fakemeta
 - Hamsandwich
 - optimizare mesaje HUD

* v1.0 - 14.11.2010
 - plugin publicat

*/

#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < hamsandwich >
#include < engine >
#include < cellarray >
#include < xs >
native set_user_puncte(id, amount);
native get_user_puncte(id);
native set_user_key(id, amount);
native get_user_key(id);
/* Extras din Fakemeta Util */
#define fm_find_ent_by_class( %1, %2 ) engfunc( EngFunc_FindEntityByString, %1, "classname", %2 )
#define fm_create_entity(%1) engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, %1 ) )

/* Extras din Super Spawns */
#define SS_MIN_DISTANCE 500.0
#define SS_MAX_LOOPS 100000

#pragma semicolon 1;

/* Modele cadouri */
new const model_present[ ][ ] = { "models/gift1.mdl" };

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

/* Offset-uri */
#if cellbits == 32
const OFFSET_CSMONEY = 115;
#else
const OFFSET_CSMONEY = 140;
#endif
const OFFSET_LINUX  = 5;
		
new pcvar_respawn_time, pcvar_presents_on_map;
new g_money;
new g_bonus[ 33 ];

public plugin_init( )
{
	register_plugin( "XMAS GIFTS", "2.3.2", "KronoS" );
		
	// Eventuri
	register_event( "HLTV", "spawn_gifts", "a", "1=0", "2=0" );
	RegisterHam( Ham_Spawn, "player", "round_start", 1 );
	RegisterHam( Ham_Killed, "player", "client_death", 1 );
    	RegisterHam( Ham_Item_PreFrame, "player", "FwdPreFramePost", 1 );
	register_forward( FM_Touch, "forward_touch" );
		
	// Cvar-uri
	pcvar_respawn_time = register_cvar( "presents_respawn_time", "60.0" );
	pcvar_presents_on_map = register_cvar( "presents_on_map", "11" );

	SsInit( 800.0 );
	SsScan( );
	XGIFTS_Spawn( );
	
	g_money = get_user_msgid( "Money" );
}

public plugin_precache( )
{
	for ( new i = 0; i < sizeof model_present ; i++ )
		engfunc( EngFunc_PrecacheModel, model_present[ i ] );
}

public spawn_gifts( )
	XGIFTS_Spawn( );

public round_start( id )
{
	if ( g_bonus[id] > 0 )
	{
		switch ( g_bonus[ id ] )
		{
			case 1: fm_set_user_health( id, get_user_health( id ) + 25 );
			case 2: fm_set_user_gravity( id, 0.4 );
		}
	}
}

public XGIFTS_Spawn( )
{
	new Float:fOrigin[ 3 ];

	for ( new i = 0; i < get_pcvar_num( pcvar_presents_on_map ) ; i++ )
	{
        	if ( SsGetOrigin( fOrigin ) )
			XGIFTS_Create( fOrigin );
	}
}

public XGIFTS_Create( const Float:fOrigin[ 3 ] )
{
	new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );

	if ( pev_valid( ent ) )
	{
		engfunc( EngFunc_SetModel, ent, model_present[ random_num( 0, sizeof model_present - 1 ) ] );
		engfunc( EngFunc_SetOrigin, ent, fOrigin );
		static Float:fMaxs[ 3 ] = { 2.0, 2.0, 4.0 };
		static Float:fMins[ 3 ] = { -2.0, -2.0, -4.0 };
		set_pev( ent, pev_solid, SOLID_BBOX );
		engfunc( EngFunc_SetSize, ent, fMins, fMaxs );
		engfunc( EngFunc_DropToFloor, ent );

		switch ( random_num( 0, 1 ) )
		{
			case 0: set_pev( ent, pev_classname, "small_present" );
			case 1: set_pev( ent, pev_classname, "large_present" );
		}
	}
}

public XGIFTS_Respawn( iOrigin[ ] )
{
	new Float:fOrigin[ 3 ], auxOrigin[ 3 ];

	auxOrigin[ 0 ] = iOrigin[ 0 ];
	auxOrigin[ 1 ] = iOrigin[ 1 ];
	auxOrigin[ 2 ] = iOrigin[ 2 ];

	IVecFVec( auxOrigin, fOrigin );
	XGIFTS_Create( fOrigin );
}

public client_death( id )
{
	if ( g_bonus[ id ] > 0 )
		g_bonus[ id ] = 0;
}

public FwdPreFramePost( iClient )
{
	if ( is_user_connected( iClient ) )
	{
		if ( g_bonus[ iClient ] == 3 )
    			fm_set_user_maxspeed( iClient, 330.0 );
		else if ( g_bonus[ iClient ] == 4 )
    			fm_set_user_maxspeed( iClient, 220.0 );
	}
}  

public forward_touch( ent, id )
{
	if ( !pev_valid( ent ) )
		return FMRES_IGNORED;
	
	static class[ 20 ];
	
	pev( ent, pev_classname, class, sizeof class - 1 );
	
	if ( ( !equali( class, "small_present" ) && !equali( class, "large_present" ) ) )
		return FMRES_IGNORED;
	
	if ( !is_user_alive( id ) )
		return FMRES_IGNORED;
	
	set_pev( ent, pev_solid, SOLID_NOT );
	set_pev( ent, pev_effects, EF_NODRAW );

	if ( get_pcvar_float( pcvar_respawn_time ) > 0.0 )
	{
		new Float:flOrigin[ 3 ], iOrigin[ 3 ];
			
		entity_get_vector( ent, EV_VEC_origin, flOrigin );
			
		FVecIVec( flOrigin, iOrigin );

		set_task( get_pcvar_float( pcvar_respawn_time ), "XGIFTS_Respawn", _, iOrigin, 3  );
	}
	
	if ( equali( class, "small_present" ) )
	{
		switch ( random_num( 0, 4 ) )
		{
			case 0: 
			{
				set_user_puncte( id, get_user_puncte( id ) + 150 );
				set_hudmessage( 255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0 );
				show_hudmessage( id, "Ai fost un baiat bun si Mosul ti-a oferit: 150 BitCoins" );
			}
			case 1:
			{
                                fm_set_user_money( id, fm_get_user_money( id ) + 500 );
				set_hudmessage( 255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0 );
				show_hudmessage( id, "Ho Ho HO! Esti pe lista alba a Mosului!!! Ai primit 500$" );
			}
			case 2:
			{
				set_user_key( id, get_user_key( id ) + 1 );
				set_hudmessage( 255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0 );
				show_hudmessage( id, "Ai fost baiat bun si Mosul ti-a daruit o keye!" );
			}
			case 3:
			{
				fm_set_user_money( id, fm_get_user_money( id ) - 500 );
				set_hudmessage( 255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0 );
				show_hudmessage( id, "Ho Ho Ho! Mosul a fost iertator si ti-a luat 500$" );
			}
			case 4:
			{
				fm_give_item( id, "weapon_smokegrenade" );
				set_hudmessage( 255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0 );
				show_hudmessage( id, "Ho Ho Ho! Mosul a fost bun cu tine si ti-a oferit un Molotov." );
			}
		}
	}
	else if ( equali( class,"large_present" ) && !g_bonus[ id ] )
	{
		switch (random_num(0,3))
		{
			case 0: 
			{
				fm_set_user_health( id, get_user_health( id ) + 25);
				g_bonus[ id ] = 1;
				large_present_hud( id );
			}
			case 1:
			{
				fm_set_user_gravity( id, 0.4 );
				g_bonus[ id ] = 2;
				large_present_hud( id );
			}
			case 2:
			{
				fm_set_user_maxspeed( id, 330.0 );
				g_bonus[ id ] = 3;
				large_present_hud( id );
			}
			case 3:
			{
				fm_set_user_maxspeed( id, 220.0 );
				g_bonus[ id ] = 4;
				large_present_hud( id );
			}
		}
	}
	
	return FMRES_IGNORED;
}

public large_present_hud( id )
{
	if ( is_user_alive( id ) )
	{
		if ( g_bonus[ id ] > 0 )
		{
			switch( g_bonus[ id ] )
			{
				case 1:
				{
					set_hudmessage( 0, 255, 0, 0.02, 0.73, 0, 6.0, 12.0);
					show_hudmessage( id, "[Cadou] Viata in +" );
				}
				case 2:
				{
					set_hudmessage( 0, 255, 0, 0.02, 0.73, 0, 6.0, 12.0 );
					show_hudmessage( id, "[Cadou] Gravitate scazuta" );
				}
				case 3:
				{
					set_hudmessage( 0, 255, 0, 0.02, 0.73, 0, 6.0, 12.0 );
					show_hudmessage( id, "[Cadou] Viteza marita" );
				}
				case 4:
				{
					set_hudmessage( 200, 0, 0, 0.02, 0.73, 0, 6.0, 12.0 );
					show_hudmessage( id, "[Cadou] Viteza scazuta" );
				}
			}

			set_task( 12.0, "large_present_hud", id );
		}
	}
}

public client_disconnect( id )
	g_bonus[ id ] = 0;

// Fakemeta Util
stock fm_set_user_money( id, money, flash = 1 )
{
	set_pdata_int( id, OFFSET_CSMONEY, money, OFFSET_LINUX );

	message_begin( MSG_ONE, g_money, { 0, 0, 0 }, id );
	write_long( money );
	write_byte( flash );
	message_end( );
}

stock fm_get_user_money( id )
	return get_pdata_int( id, OFFSET_CSMONEY, OFFSET_LINUX );

stock fm_set_user_health( id, health )
{
	( health > 0 ) ? set_pev( id, pev_health, float( health ) ) : dllfunc( DLLFunc_ClientKill, id );

	return 1;
}

stock fm_give_item( index, const item[ ] )
{
	if ( !equal( item, "weapon_", 7 ) && !equal( item, "ammo_", 5 ) && !equal( item, "item_", 5 ) && !equal( item, "tf_weapon_", 10 ) )
		return 0;

	new ent = fm_create_entity( item) ;

	if ( !pev_valid( ent ) )
		return 0;

	new Float:origin[ 3 ];
	pev( index, pev_origin, origin );
	set_pev( ent, pev_origin, origin );
	set_pev( ent, pev_spawnflags, pev( ent, pev_spawnflags ) | SF_NORESPAWN );
	dllfunc( DLLFunc_Spawn, ent );

	new save = pev( ent, pev_solid );
	dllfunc( DLLFunc_Touch, ent, index );
	if ( pev( ent, pev_solid ) != save )
		return ent;

	engfunc( EngFunc_RemoveEntity, ent );

	return -1;
}

stock fm_set_user_gravity( index, Float:gravity = 1.0 )
{
	set_pev( index, pev_gravity, gravity );

	return 1;
}

stock fm_set_user_maxspeed( index, Float:speed = -1.0 )
{
	engfunc( EngFunc_SetClientMaxspeed, index, speed );
	set_pev( index, pev_maxspeed, speed );

	return 1;
}


// Super spawns
public SsInit( Float:mindist )
{
	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 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;
}
RoyalServer
User avatar
1TAP GOD
Membru, skill +1
Membru, skill +1
Posts: 152
Joined: 03 Sep 2018, 00:20
Detinator Steam: Da
SteamID: /id/assasinssmdfk
Fond eXtream: 0
Has thanked: 16 times
Been thanked: 16 times

07 Jan 2020, 21:25

Code: Select all

#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < hamsandwich >
#include < engine >
#include < cellarray >
#include < xs >
native set_user_puncte(id, amount);
native get_user_puncte(id);
native set_user_key(id, amount);
native get_user_key(id);
/* Extras din Fakemeta Util */
#define fm_find_ent_by_class( %1, %2 ) engfunc( EngFunc_FindEntityByString, %1, "classname", %2 )
#define fm_create_entity(%1) engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, %1 ) )

/* Extras din Super Spawns */
#define SS_MIN_DISTANCE 500.0
#define SS_MAX_LOOPS 100000

#pragma semicolon 1;

/* Modele cadouri */
new const model_present[ ][ ] = { "models/gift1.mdl" };

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

/* Offset-uri */
#if cellbits == 32
const OFFSET_CSMONEY = 115;
#else
const OFFSET_CSMONEY = 140;
#endif
const OFFSET_LINUX  = 5;
		
new pcvar_respawn_time, pcvar_presents_on_map;
new g_money;
new g_bonus[ 33 ];

public plugin_init( )
{
	register_plugin( "XMAS GIFTS", "2.3.2", "KronoS" );
		
	// Eventuri
	register_event( "HLTV", "spawn_gifts", "a", "1=0", "2=0" );
	RegisterHam( Ham_Spawn, "player", "round_start", 1 );
	RegisterHam( Ham_Killed, "player", "client_death", 1 );
    	RegisterHam( Ham_Item_PreFrame, "player", "FwdPreFramePost", 1 );
	register_forward( FM_Touch, "forward_touch" );
		
	// Cvar-uri
	pcvar_respawn_time = register_cvar( "presents_respawn_time", "60.0" );
	pcvar_presents_on_map = register_cvar( "presents_on_map", "11" );

	SsInit( 800.0 );
	SsScan( );
	XGIFTS_Spawn( );
	
	g_money = get_user_msgid( "Money" );
}

public plugin_precache( )
{
	for ( new i = 0; i < sizeof model_present ; i++ )
		engfunc( EngFunc_PrecacheModel, model_present[ i ] );
}

public spawn_gifts( )
	XGIFTS_Spawn( );

public round_start( id )
{
	if ( g_bonus[id] > 0 )
	{
		switch ( g_bonus[ id ] )
		{
			case 1: fm_set_user_health( id, get_user_health( id ) + 25 );
			case 2: fm_set_user_gravity( id, 0.4 );
		}
	}
}

public XGIFTS_Spawn( )
{
	new Float:fOrigin[ 3 ];

	for ( new i = 0; i < get_pcvar_num( pcvar_presents_on_map ) ; i++ )
	{
        	if ( SsGetOrigin( fOrigin ) )
			XGIFTS_Create( fOrigin );
	}
}

public XGIFTS_Create( const Float:fOrigin[ 3 ] )
{
	new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );

	if ( pev_valid( ent ) )
	{
		engfunc( EngFunc_SetModel, ent, model_present[ random_num( 0, sizeof model_present - 1 ) ] );
		engfunc( EngFunc_SetOrigin, ent, fOrigin );
		static Float:fMaxs[ 3 ] = { 2.0, 2.0, 4.0 };
		static Float:fMins[ 3 ] = { -2.0, -2.0, -4.0 };
		set_pev( ent, pev_solid, SOLID_BBOX );
		engfunc( EngFunc_SetSize, ent, fMins, fMaxs );
		engfunc( EngFunc_DropToFloor, ent );
		print_cc(0,"n[.gCSGO.n] .g***.nCadourile au aparut pe harta, cauta-le.g***");
		switch ( random_num( 0, 1 ) )
		{
			case 0: set_pev( ent, pev_classname, "small_present" );
			case 1: set_pev( ent, pev_classname, "large_present" );
		}
	}
}

public XGIFTS_Respawn( iOrigin[ ] )
{
	new Float:fOrigin[ 3 ], auxOrigin[ 3 ];

	auxOrigin[ 0 ] = iOrigin[ 0 ];
	auxOrigin[ 1 ] = iOrigin[ 1 ];
	auxOrigin[ 2 ] = iOrigin[ 2 ];

	IVecFVec( auxOrigin, fOrigin );
	XGIFTS_Create( fOrigin );
}

public client_death( id )
{
	if ( g_bonus[ id ] > 0 )
		g_bonus[ id ] = 0;
}

public FwdPreFramePost( iClient )
{
	if ( is_user_connected( iClient ) )
	{
		if ( g_bonus[ iClient ] == 3 )
    			fm_set_user_maxspeed( iClient, 330.0 );
		else if ( g_bonus[ iClient ] == 4 )
    			fm_set_user_maxspeed( iClient, 220.0 );
	}
}  

public forward_touch( ent, id )
{
	if ( !pev_valid( ent ) )
		return FMRES_IGNORED;
	
	static class[ 20 ];
	
	pev( ent, pev_classname, class, sizeof class - 1 );
	
	if ( ( !equali( class, "small_present" ) && !equali( class, "large_present" ) ) )
		return FMRES_IGNORED;
	
	if ( !is_user_alive( id ) )
		return FMRES_IGNORED;
	
	set_pev( ent, pev_solid, SOLID_NOT );
	set_pev( ent, pev_effects, EF_NODRAW );

	if ( get_pcvar_float( pcvar_respawn_time ) > 0.0 )
	{
		new Float:flOrigin[ 3 ], iOrigin[ 3 ];
			
		entity_get_vector( ent, EV_VEC_origin, flOrigin );
			
		FVecIVec( flOrigin, iOrigin );

		set_task( get_pcvar_float( pcvar_respawn_time ), "XGIFTS_Respawn", _, iOrigin, 3  );
	}
	
	if ( equali( class, "small_present" ) )
	{
		switch ( random_num( 0, 4 ) )
		{
			case 0: 
			{
				set_user_puncte( id, get_user_puncte( id ) + 150 );
				print_cc(id,"n[.gCSGO.n] .nAi fost un baiat bun si Mosul ti-a oferit: .t150 .nBitCoins");

			}
			case 1:
			{
                                fm_set_user_money( id, fm_get_user_money( id ) + 500 );
				print_cc(id,"n[.gCSGO.n] .nHo Ho HO! Esti pe lista alba a Mosului!!! Ai primit .t500$");

			}
			case 2:
			{
				set_user_key( id, get_user_key( id ) + 1 );
				print_cc(id,"n[.gCSGO.n] .nAi fost baiat bun si Mosul ti-a daruit o .tkeye!");
			}
			case 3:
			{
				fm_set_user_money( id, fm_get_user_money( id ) - 500 );
	
				print_cc(id,".n[.gCSGO.n] .nHo Ho Ho! Mosul a fost iertator si ti-a luat .t500$");
			}
			case 4:
			{
				fm_give_item( id, "weapon_smokegrenade" );
				print_cc(id,"n[.gCSGO.n] .nHo Ho Ho! Mosul a fost bun cu tine si ti-a oferit un .tMolotov.");
			}
		}
	}
	else if ( equali( class,"large_present" ))
	{
		
			fm_set_user_health( id, get_user_health( id ) + 25);
			print_cc(id,"n[.gCSGO.n].nAi gasit.25 .nHP");
			
	}
	
	return FMRES_IGNORED;
}

public client_disconnect( id )
	g_bonus[ id ] = 0;

// Fakemeta Util
stock fm_set_user_money( id, money, flash = 1 )
{
	set_pdata_int( id, OFFSET_CSMONEY, money, OFFSET_LINUX );

	message_begin( MSG_ONE, g_money, { 0, 0, 0 }, id );
	write_long( money );
	write_byte( flash );
	message_end( );
}

stock fm_get_user_money( id )
	return get_pdata_int( id, OFFSET_CSMONEY, OFFSET_LINUX );

stock fm_set_user_health( id, health )
{
	( health > 0 ) ? set_pev( id, pev_health, float( health ) ) : dllfunc( DLLFunc_ClientKill, id );

	return 1;
}

stock fm_give_item( index, const item[ ] )
{
	if ( !equal( item, "weapon_", 7 ) && !equal( item, "ammo_", 5 ) && !equal( item, "item_", 5 ) && !equal( item, "tf_weapon_", 10 ) )
		return 0;

	new ent = fm_create_entity( item) ;

	if ( !pev_valid( ent ) )
		return 0;

	new Float:origin[ 3 ];
	pev( index, pev_origin, origin );
	set_pev( ent, pev_origin, origin );
	set_pev( ent, pev_spawnflags, pev( ent, pev_spawnflags ) | SF_NORESPAWN );
	dllfunc( DLLFunc_Spawn, ent );

	new save = pev( ent, pev_solid );
	dllfunc( DLLFunc_Touch, ent, index );
	if ( pev( ent, pev_solid ) != save )
		return ent;

	engfunc( EngFunc_RemoveEntity, ent );

	return -1;
}

stock fm_set_user_gravity( index, Float:gravity = 1.0 )
{
	set_pev( index, pev_gravity, gravity );

	return 1;
}

stock fm_set_user_maxspeed( index, Float:speed = -1.0 )
{
	engfunc( EngFunc_SetClientMaxspeed, index, speed );
	set_pev( index, pev_maxspeed, speed );

	return 1;
}


// Super spawns
public SsInit( Float:mindist )
{
	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 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;
}
print_cc(id, fmt[], any:...)
{
	static saytext = 0, fake_user;
	if (!saytext)
	{
		saytext = get_user_msgid("SayText");
		fake_user = get_maxplayers() + 1;
	}
	new msg[192];
	vformat(msg, charsmax(msg), fmt, 3);
	replace_all(msg, sizeof(msg) - 1, ".g", "^x04");
	replace_all(msg, sizeof(msg) - 1, ".n", "^x01");
	replace_all(msg, sizeof(msg) - 1, ".t", "^x03");
	message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, saytext, _, id);
	write_byte(id ? id : fake_user);
	write_string(msg);
	message_end();
}
----------------Steam----------------
-----------------------------------------------------------
Image
And she be actin' funny, probably think a nigga need her
I thought I was faithful, she say I'm a cheater
They thought I was taken, I'm ready to mingle
User avatar
Doctor whO? <3
Membru, skill +3
Membru, skill +3
Posts: 1196
Joined: 21 Jun 2013, 12:40
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Reputatie: Fost Membru Club eXtreamCS (doua luni)
Has thanked: 109 times
Been thanked: 75 times
Contact:

07 Jan 2020, 21:39

Poti sa scoti si acel floating? (Adica sa nu mai stea in aer cadourile)
Mersi :D
User avatar
1TAP GOD
Membru, skill +1
Membru, skill +1
Posts: 152
Joined: 03 Sep 2018, 00:20
Detinator Steam: Da
SteamID: /id/assasinssmdfk
Fond eXtream: 0
Has thanked: 16 times
Been thanked: 16 times

07 Jan 2020, 23:06

Code: Select all

#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < hamsandwich >
#include < engine >
#include < cellarray >
#include < xs >
native set_user_puncte(id, amount);
native get_user_puncte(id);
native set_user_key(id, amount);
native get_user_key(id);
/* Extras din Fakemeta Util */
#define fm_find_ent_by_class( %1, %2 ) engfunc( EngFunc_FindEntityByString, %1, "classname", %2 )
#define fm_create_entity(%1) engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, %1 ) )

/* Extras din Super Spawns */
#define SS_MIN_DISTANCE 500.0
#define SS_MAX_LOOPS 100000

#pragma semicolon 1;

/* Modele cadouri */
new const model_present[ ][ ] = { "models/gift1.mdl" };

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

/* Offset-uri */
#if cellbits == 32
const OFFSET_CSMONEY = 115;
#else
const OFFSET_CSMONEY = 140;
#endif
const OFFSET_LINUX  = 5;
		
new pcvar_respawn_time, pcvar_presents_on_map;
new g_money;
new g_bonus[ 33 ];

public plugin_init( )
{
	register_plugin( "XMAS GIFTS", "2.3.2", "KronoS" );
		
	// Eventuri
	register_event( "HLTV", "spawn_gifts", "a", "1=0", "2=0" );
	RegisterHam( Ham_Spawn, "player", "round_start", 1 );
	RegisterHam( Ham_Killed, "player", "client_death", 1 );
    	RegisterHam( Ham_Item_PreFrame, "player", "FwdPreFramePost", 1 );
	register_forward( FM_Touch, "forward_touch" );
		
	// Cvar-uri
	pcvar_respawn_time = register_cvar( "presents_respawn_time", "60.0" );
	pcvar_presents_on_map = register_cvar( "presents_on_map", "11" );

	SsInit( 800.0 );
	SsScan( );
	XGIFTS_Spawn( );
	
	g_money = get_user_msgid( "Money" );
}

public plugin_precache( )
{
	for ( new i = 0; i < sizeof model_present ; i++ )
		engfunc( EngFunc_PrecacheModel, model_present[ i ] );
}

public spawn_gifts( )
	XGIFTS_Spawn( );

public round_start( id )
{
	if ( g_bonus[id] > 0 )
	{
		switch ( g_bonus[ id ] )
		{
			case 1: fm_set_user_health( id, get_user_health( id ) + 25 );
			case 2: fm_set_user_gravity( id, 0.4 );
		}
	}
}

public XGIFTS_Spawn( )
{
	new Float:fOrigin[ 3 ];

	for ( new i = 0; i < get_pcvar_num( pcvar_presents_on_map ) ; i++ )
	{
        	if ( SsGetOrigin( fOrigin ) )
			XGIFTS_Create( fOrigin );
	}
}

public XGIFTS_Create( const Float:fOrigin[ 3 ] )
{
	new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );

	if ( pev_valid( ent ) )
	{
		engfunc( EngFunc_SetModel, ent, model_present[ random_num( 0, sizeof model_present - 1 ) ] );
		engfunc( EngFunc_SetOrigin, ent, fOrigin );
		set_pev( ent, pev_solid, SOLID_BBOX );
		engfunc( EngFunc_SetSize, ent);
		engfunc( EngFunc_DropToFloor, ent );
		print_cc(0,"n[.gCSGO.n] .g***.nCadourile au aparut pe harta, cauta-le.g***");
		switch ( random_num( 0, 1 ) )
		{
			case 0: set_pev( ent, pev_classname, "small_present" );
			case 1: set_pev( ent, pev_classname, "large_present" );
		}
	}
}

public XGIFTS_Respawn( iOrigin[ ] )
{
	new Float:fOrigin[ 3 ], auxOrigin[ 3 ];

	auxOrigin[ 0 ] = iOrigin[ 0 ];
	auxOrigin[ 1 ] = iOrigin[ 1 ];
	auxOrigin[ 2 ] = iOrigin[ 2 ];

	IVecFVec( auxOrigin, fOrigin );
	XGIFTS_Create( fOrigin );
}

public client_death( id )
{
	if ( g_bonus[ id ] > 0 )
		g_bonus[ id ] = 0;
}

public FwdPreFramePost( iClient )
{
	if ( is_user_connected( iClient ) )
	{
		if ( g_bonus[ iClient ] == 3 )
    			fm_set_user_maxspeed( iClient, 330.0 );
		else if ( g_bonus[ iClient ] == 4 )
    			fm_set_user_maxspeed( iClient, 220.0 );
	}
}  

public forward_touch( ent, id )
{
	if ( !pev_valid( ent ) )
		return FMRES_IGNORED;
	
	static class[ 20 ];
	
	pev( ent, pev_classname, class, sizeof class - 1 );
	
	if ( ( !equali( class, "small_present" ) && !equali( class, "large_present" ) ) )
		return FMRES_IGNORED;
	
	if ( !is_user_alive( id ) )
		return FMRES_IGNORED;
	
	set_pev( ent, pev_solid, SOLID_NOT );
	set_pev( ent, pev_effects, EF_NODRAW );

	if ( get_pcvar_float( pcvar_respawn_time ) > 0.0 )
	{
		new Float:flOrigin[ 3 ], iOrigin[ 3 ];
			
		entity_get_vector( ent, EV_VEC_origin, flOrigin );
			
		FVecIVec( flOrigin, iOrigin );

		set_task( get_pcvar_float( pcvar_respawn_time ), "XGIFTS_Respawn", _, iOrigin, 3  );
	}
	
	if ( equali( class, "small_present" ) )
	{
		switch ( random_num( 0, 4 ) )
		{
			case 0: 
			{
				set_user_puncte( id, get_user_puncte( id ) + 150 );
				print_cc(id,"n[.gCSGO.n] .nAi fost un baiat bun si Mosul ti-a oferit: .t150 .nBitCoins");

			}
			case 1:
			{
                                fm_set_user_money( id, fm_get_user_money( id ) + 500 );
				print_cc(id,"n[.gCSGO.n] .nHo Ho HO! Esti pe lista alba a Mosului!!! Ai primit .t500$");

			}
			case 2:
			{
				set_user_key( id, get_user_key( id ) + 1 );
				print_cc(id,"n[.gCSGO.n] .nAi fost baiat bun si Mosul ti-a daruit o .tkeye!");
			}
			case 3:
			{
				fm_set_user_money( id, fm_get_user_money( id ) - 500 );
	
				print_cc(id,".n[.gCSGO.n] .nHo Ho Ho! Mosul a fost iertator si ti-a luat .t500$");
			}
			case 4:
			{
				fm_give_item( id, "weapon_smokegrenade" );
				print_cc(id,"n[.gCSGO.n] .nHo Ho Ho! Mosul a fost bun cu tine si ti-a oferit un .tMolotov.");
			}
		}
	}
	else if ( equali( class,"large_present" ))
	{
		
			fm_set_user_health( id, get_user_health( id ) + 25);
			print_cc(id,"n[.gCSGO.n].nAi gasit.25 .nHP");
			
	}
	
	return FMRES_IGNORED;
}

public client_disconnect( id )
	g_bonus[ id ] = 0;

// Fakemeta Util
stock fm_set_user_money( id, money, flash = 1 )
{
	set_pdata_int( id, OFFSET_CSMONEY, money, OFFSET_LINUX );

	message_begin( MSG_ONE, g_money, { 0, 0, 0 }, id );
	write_long( money );
	write_byte( flash );
	message_end( );
}

stock fm_get_user_money( id )
	return get_pdata_int( id, OFFSET_CSMONEY, OFFSET_LINUX );

stock fm_set_user_health( id, health )
{
	( health > 0 ) ? set_pev( id, pev_health, float( health ) ) : dllfunc( DLLFunc_ClientKill, id );

	return 1;
}

stock fm_give_item( index, const item[ ] )
{
	if ( !equal( item, "weapon_", 7 ) && !equal( item, "ammo_", 5 ) && !equal( item, "item_", 5 ) && !equal( item, "tf_weapon_", 10 ) )
		return 0;

	new ent = fm_create_entity( item) ;

	if ( !pev_valid( ent ) )
		return 0;

	new Float:origin[ 3 ];
	pev( index, pev_origin, origin );
	set_pev( ent, pev_origin, origin );
	set_pev( ent, pev_spawnflags, pev( ent, pev_spawnflags ) | SF_NORESPAWN );
	dllfunc( DLLFunc_Spawn, ent );

	new save = pev( ent, pev_solid );
	dllfunc( DLLFunc_Touch, ent, index );
	if ( pev( ent, pev_solid ) != save )
		return ent;

	engfunc( EngFunc_RemoveEntity, ent );

	return -1;
}

stock fm_set_user_gravity( index, Float:gravity = 1.0 )
{
	set_pev( index, pev_gravity, gravity );

	return 1;
}

stock fm_set_user_maxspeed( index, Float:speed = -1.0 )
{
	engfunc( EngFunc_SetClientMaxspeed, index, speed );
	set_pev( index, pev_maxspeed, speed );

	return 1;
}


// Super spawns
public SsInit( Float:mindist )
{
	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 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;
}
print_cc(id, fmt[], any:...)
{
	static saytext = 0, fake_user;
	if (!saytext)
	{
		saytext = get_user_msgid("SayText");
		fake_user = get_maxplayers() + 1;
	}
	new msg[192];
	vformat(msg, charsmax(msg), fmt, 3);
	replace_all(msg, sizeof(msg) - 1, ".g", "^x04");
	replace_all(msg, sizeof(msg) - 1, ".n", "^x01");
	replace_all(msg, sizeof(msg) - 1, ".t", "^x03");
	message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, saytext, _, id);
	write_byte(id ? id : fake_user);
	write_string(msg);
	message_end();
}
----------------Steam----------------
-----------------------------------------------------------
Image
And she be actin' funny, probably think a nigga need her
I thought I was faithful, she say I'm a cheater
They thought I was taken, I'm ready to mingle
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 20 guests