I'm using this modified code originally created by Natsheh, to create a zone that would slap users who are outside of it, but it just kills me instantly as soon as I type /create.
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <xs>
new const g_szSprite[ ] = "sprites/laserbeam.spr";
new g_iSprite;
public plugin_init( )
{
register_clcmd( "say /create", "@CreateZone" );
}
public plugin_precache( )
{
g_iSprite = precache_model( g_szSprite );
}
@CreateZone( id )
{
new Float:fOrigin_Center[ 3 ]
pev( id, pev_origin, fOrigin_Center );
const iDivide = 128;
new Float:fOrigin[ 3 ]
//new Float:fAngle[ 3 ], Float:AngleMulScalar = ( 360.0 / iDivide ), Float:fVector[ 3 ];
//const Float:iRadius = 500.0;
new Array:aTempArray = ArrayCreate( sizeof fOrigin, 1 );
for( new i; i < iDivide; i++ )
{
//angle_vector( fAngle, ANGLEVECTOR_RIGHT, fVector );
//xs_vec_mul_scalar( fVector, iRadius, fVector );
//xs_vec_add( fOrigin_Center, fVector, fOrigin );
ArrayPushArray( aTempArray, fOrigin );
//fAngle[ 1 ] += AngleMulScalar;
CreateWall( fOrigin /*,fAngle*/ );
}
new szPlayers[ 32 ], iNum, iTempID;
get_players( szPlayers, iNum, "ach" );
for( new i, Float:fUserOrigin[ 3 ]; i < iNum; i++ )
{
iTempID = szPlayers[ i ];
pev( iTempID, pev_origin, fUserOrigin );
for( new x; x < ArraySize( aTempArray ); x++ )
{
ArrayGetArray( aTempArray, x, fOrigin );
if( fUserOrigin[ 0 ] < fOrigin[ 0 ] || fUserOrigin[ 0 ] < fOrigin[ 0 ] ||
fUserOrigin[ 1 ] > fOrigin[ 1 ] || fUserOrigin[ 1 ] < fOrigin[ 1 ] )
{
user_slap( iTempID, random_num( 2, 10 ) )
}
}
}
ArrayDestroy( aTempArray );
}
CreateWall( Float:fOrigin[ 3 ]/*, Float:fAngle[ 3 ]*/)
{
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_BEAMPOINTS )
engfunc( EngFunc_WriteCoord, fOrigin[ 0 ] )
engfunc( EngFunc_WriteCoord, fOrigin[ 1 ] )
engfunc( EngFunc_WriteCoord, fOrigin[ 2 ] )
engfunc( EngFunc_WriteCoord, fOrigin[ 0 ] )
engfunc( EngFunc_WriteCoord, fOrigin[ 1 ] )
engfunc( EngFunc_WriteCoord, GetMaxHeight( ) )
write_short( g_iSprite )
write_byte( 1 )
write_byte( 5 )
write_byte( 10 )
write_byte( 60 )
write_byte( 0 )
write_byte( 255 )
write_byte( 0 )
write_byte( 0 )
write_byte( 127 )
write_byte( 1 )
message_end( );
}
Float:GetMaxHeight( )
{
new pcCurrent;
new Float:fStartPoint[ 3 ];
while ( ( engfunc( EngFunc_PointContents , fStartPoint ) == CONTENTS_EMPTY ) || ( engfunc( EngFunc_PointContents , fStartPoint ) == CONTENTS_SOLID ) )
{
fStartPoint[ 2 ] += 5.0;
}
pcCurrent = engfunc( EngFunc_PointContents , fStartPoint );
if( pcCurrent == CONTENTS_SKY )
{
return fStartPoint[ 2 ] -= 20.0;
}
return 0.0
}
__________________