Hi, we meet again.
I have this little problem.
This is my code
PHP Code:
/* Plugin generated by AMXX-Studio */
#include < amxmodx >
#include < engine >
#include < fun >
#pragma semicolon 1
new const
PLUGIN_NAME[ ] = "Blank Spawns",
PLUGIN_VERSION[ ] = "1.0";
new const
PLUGIN_TAG[ ] = "|Plugin Tag:";
enum _:iSpawns
{
NULL,
TERO,
CT
}
new Float:g_fOrigins[ iSpawns ][ 64 ][ 3 ];
new g_iSpawns[ iSpawns ];
new bool:g_bUserIsBlanked[ 33 ];
public plugin_init( )
{
register_plugin
(
PLUGIN_NAME,
PLUGIN_VERSION,
"Askhanar"
);
GetSpawnsOrigins( );
// Add your code here...
}
public client_PreThink( id )
{
if( !is_user_alive( id ) )
return;
static Float:fOrigin[ 3 ];
entity_get_vector( id, EV_VEC_origin, fOrigin );
static Float:fDistance, Float:fClosest;
fClosest = 9999.0;
switch( get_user_team( id ) )
{
case 1:
{
for( new i = 0; i < g_iSpawns[ CT ]; i++ )
{
fDistance = get_distance_f( fOrigin, g_fOrigins[ CT ][ i ] );
if( fDistance < fClosest )
fClosest = fDistance;
}
}
case 2:
{
for( new i = 0; i < g_iSpawns[ TERO ]; i++ )
{
fDistance = get_distance_f( fOrigin, g_fOrigins[ TERO ][ i ] );
if( fDistance < fClosest )
fClosest = fDistance;
}
}
}
if( fClosest <= 255.0 && !g_bUserIsBlanked[ id ] )
{
g_bUserIsBlanked[ id ] = true;
set_user_hitzones( id, 0, 0 );
client_print( id, print_chat, "%s You are now fireing blanks!", PLUGIN_TAG );
client_print( id, print_chat, "%s %.3f", PLUGIN_TAG, fClosest );
}
else if( fClosest > 255.0 && g_bUserIsBlanked[ id ] )
{
g_bUserIsBlanked[ id ] = false;
set_user_hitzones( id, 0, 255 );
client_print( id, print_chat, "%s You're not fireing blanks anymore!", PLUGIN_TAG );
client_print( id, print_chat, "%s %.3f", PLUGIN_TAG, fClosest );
}
}
stock Float:get_distance_float( const Float:fOrigin[ 3 ], const Float:flOrigin[ 3 ] )
{
return ( ( fOrigin[ 0 ] - flOrigin[ 0 ] ) + ( fOrigin[ 1 ] - flOrigin[ 1 ] ) );
}
GetSpawnsOrigins( )
{
new iEnt;
while( ( iEnt = find_ent_by_class( iEnt, "info_player_deathmatch") ) )
{
if( iEnt > 0 && ++g_iSpawns[ TERO ] < 64 )
{
entity_get_vector( iEnt, EV_VEC_origin, g_fOrigins[ TERO ][ g_iSpawns[ TERO ] ] );
g_iSpawns[ TERO ]++;
}
}
iEnt = -1;
while( ( iEnt = find_ent_by_class( iEnt, "info_player_start") ) )
{
if( iEnt > 0 && ++g_iSpawns[ CT ] < 64 )
{
entity_get_vector( iEnt, EV_VEC_origin, g_fOrigins[ CT ][ g_iSpawns[ CT ] ] );
g_iSpawns[ CT ]++;
}
}
/*log_amx( "Loaded %i T and %i CT", g_iSpawns[ TERO ], g_iSpawns[ CT ] );
for( new i = 0; i < g_iSpawns[ TERO ]; i++ )
log_amx( "[T %i] %f %f %f", i +1, g_fOrigins[ TERO ][ i ][ 0 ], g_fOrigins[ TERO ][ 1 ], g_fOrigins[ TERO ][ 2 ] );
for( new i = 0; i < g_iSpawns[ CT ]; i++ )
log_amx( "[CT %i] %f %f %f", i +1, g_fOrigins[ CT ][ i ][ 0 ], g_fOrigins[ CT ][ 1 ], g_fOrigins[ CT ][ 2 ] );
*/
}
On de_dust2, when i walk around upside CT spawn ( see screenshot ) i get blanks ..
Click for ScreenShot ( imgur )
what can i do to check only horizontal distance ( x & y.. i mean forward/backward & right/left ) ?
__________________