I've added a cvar named trail_size so you can change the size to whatever you like
Code:
#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < hamsandwich >
native crxranks_get_user_level(index);
//#pragma semicolon 1
#define PLUGIN_VERSION "1.0.0"
#define TASKID 81732519124
#define TRAIL_ACTIVE 1
#define TRAIL_INACTIVE 0
#define TRAIL_LIFE 15
#define ACCES_FLAG ADMIN_ALL
new gTrailSprite;
new gTrailRandomColor[ 33 ][ 3 ];
new bPlayerTrailStatus[ 33 ];
new Float:bflNextCheck[ 33 ];
new const gTrailSpriteIndex[] = "sprites/zbeam2.spr";
const IN_MOVING = IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT | IN_JUMP;
new cvar_trail_size
public plugin_init()
{
register_plugin( "Ownerw Trail", PLUGIN_VERSION, "tuty" );
register_forward( FM_CmdStart, "forward_cmdstart" );
register_clcmd( "say /trail", "cmdMakeOwnerTrail" );
register_clcmd( "say_team /trail", "cmdMakeOwnerTrail" );
cvar_trail_size = register_cvar("trail_size", "10")
RegisterHam(Ham_Spawn, "player", "Fwd_Spawn", 1);
}
public plugin_precache()
{
gTrailSprite = precache_model( gTrailSpriteIndex );
}
public client_connect( id )
{
bPlayerTrailStatus[ id ] = TRAIL_INACTIVE;
}
public Fwd_Spawn(id)
{
if(get_user_flags(id) & ACCES_FLAG && crxranks_get_user_level(id) >= 31)
{
bPlayerTrailStatus[id] = TRAIL_ACTIVE;
gTrailRandomColor[ id ][ 0 ] = random_num( 0, 255 );
gTrailRandomColor[ id ][ 1 ] = random_num( 0, 255 );
gTrailRandomColor[ id ][ 2 ] = random_num( 0, 255 );
set_task(10.0, "change_color", id + TASKID, .flags="b");
}
}
public change_color(taskid)
{
new id = taskid - TASKID;
if(!is_user_alive(id))
{
remove_task(taskid);
return;
}
gTrailRandomColor[ id ][ 0 ] = random_num( 0, 255 );
gTrailRandomColor[ id ][ 1 ] = random_num( 0, 255 );
gTrailRandomColor[ id ][ 2 ] = random_num( 0, 255 );
}
public cmdMakeOwnerTrail( id )
{
if( !is_user_alive( id ) )
{
client_print( id, print_chat, "Öldüğünüzde bu komutu kullanamazsınız!" );
return PLUGIN_HANDLED;
}
if(crxranks_get_user_level(id) < 31)
{
client_print( id, print_chat, " Level 31ve Uzeri Oyuncular Bu Menuye Girebilir!" );
return PLUGIN_HANDLED;
}
if( bPlayerTrailStatus[ id ] == TRAIL_ACTIVE )
{
client_print( id, print_chat, " Trail Kapatildi." );
bPlayerTrailStatus[ id ] = TRAIL_INACTIVE;
UTIL_KillBeamFollow( id );
bflNextCheck[ id ] = -5000.0;
return PLUGIN_HANDLED;
}
if( bPlayerTrailStatus[ id ] == TRAIL_INACTIVE )
{
client_print( id, print_chat, "Trail etkinleştirildi! " );
bPlayerTrailStatus[ id ] = TRAIL_ACTIVE;
gTrailRandomColor[ id ][ 0 ] = random_num( 0, 255 );
gTrailRandomColor[ id ][ 1 ] = random_num( 0, 255 );
gTrailRandomColor[ id ][ 2 ] = random_num( 0, 255 );
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public forward_cmdstart( id, handle )
{
if( !is_user_alive( id ) || bPlayerTrailStatus[ id ] == TRAIL_INACTIVE )
{
return FMRES_IGNORED;
}
if(crxranks_get_user_level(id) < 31)
{
return FMRES_IGNORED;
}
new iButton = get_uc( handle, UC_Buttons );
if( !( iButton & IN_MOVING ) )
{
new Float:flGameTime = get_gametime();
if( bflNextCheck[ id ] < flGameTime )
{
UTIL_KillBeamFollow( id );
UTIL_BeamFollow( id );
bflNextCheck[ id ] = flGameTime + ( TRAIL_LIFE / 8 );
}
}
return FMRES_IGNORED;
}
stock UTIL_BeamFollow( const iClient )
{
new size = get_pcvar_num(cvar_trail_size)
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_BEAMFOLLOW );
write_short( iClient );
write_short( gTrailSprite );
write_byte( TRAIL_LIFE );
write_byte( clamp(size, 0, 255) );
write_byte( gTrailRandomColor[ iClient ][ 0 ] );
write_byte( gTrailRandomColor[ iClient ][ 1 ] );
write_byte( gTrailRandomColor[ iClient ][ 2 ] );
write_byte( 255 );
message_end();
}
stock UTIL_KillBeamFollow( const iClient )
{
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_KILLBEAM );
write_short( iClient );
message_end();
}
__________________