I want to get semiclip to afk ... I want to enable semiclip and disable after player move
set_user_godmode( id );
set_pev( id , pev_solid, SOLID_NOT)
and
set_user_godmode( id , 1 );
set_pev( id , pev_solid, SOLID_SLIDEBOX);
Code:
#include <amxmodx>
#include <fun>
#define VERSION "1.1"
#define MIN_AFK_TIME 30 /* I use this incase stupid admins accidentally set mp_afktime to something silly. */
#define WARNING_TIME 15 /* Start warning the user this many seconds before they are about to be kicked. */
#define CHECK_FREQ 5 /* This is also the warning message frequency. */
new g_afktime[33];
new g_was_afk[33];
new g_oldangles[33][3];
new bool:g_spawned[33] = { true, ... };
new g_spirte_id;
public plugin_init()
{
register_plugin( "AFK Kicker", VERSION, "Cheesy Peteza" );
register_cvar( "afk_version", VERSION, FCVAR_SERVER | FCVAR_EXTDLL | FCVAR_SPONLY );
register_cvar( "mp_afktime", "90" ); /* Kick people AFK longer than this time */
register_cvar( "mp_afkminplayers", "8" ); /* Only kick AFKs when there is atleast this many players on the server */
set_task( float( CHECK_FREQ ), "checkPlayers", _, _, _, "b" );
register_event( "ResetHUD", "playerSpawned", "be" );
}
public checkPlayers()
{
for ( new id = 1; id <= get_maxplayers(); id++ )
{
if ( is_user_alive( id ) && is_user_connected( id ) && !is_user_bot( id ) && !is_user_hltv( id ) && g_spawned[id] )
{
new newangle[3];
get_user_origin( id, newangle );
if ( newangle[0] == g_oldangles[id][0] && newangle[1] == g_oldangles[id][1] && newangle[2] == g_oldangles[id][2] )
{
g_afktime[id] += CHECK_FREQ;
check_afktime( id );
}
else
{
g_oldangles[id][0] = newangle[0];
g_oldangles[id][1] = newangle[1];
g_oldangles[id][2] = newangle[2];
g_afktime[id] = 0;
if ( g_was_afk[id] )
{
new name[32];
get_user_name( id, name, 31 );
set_user_godmode( id );
remove_sprite( id );
g_was_afk[id] = 0;
client_print( 0, print_chat, "[AFK Kicker] %s is NOT in godmode state for STOP being AFK.", name );
}
}
}
}
return(PLUGIN_HANDLED);
}
check_afktime( id )
{
new numplayers = get_playersnum();
new minplayers = get_cvar_num( "mp_afkminplayers" );
if ( numplayers >= minplayers )
{
new maxafktime = get_cvar_num( "mp_afktime" );
if ( maxafktime < MIN_AFK_TIME )
{
log_amx( "cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME );
maxafktime = MIN_AFK_TIME;
set_cvar_num( "mp_afktime", MIN_AFK_TIME );
}
if ( maxafktime - WARNING_TIME <= g_afktime[id] < maxafktime )
{
new timeleft = maxafktime - g_afktime[id];
client_print( id, print_chat, "[AFK Kicker] You have %i seconds to move or you get godmode for being AFK", timeleft );
}
else if ( g_afktime[id] > maxafktime )
{
if ( !g_was_afk[id] )
{
new name[32];
get_user_name( id, name, 31 );
client_print( 0, print_chat, "[AFK Kicker] %s is in godmode state for being AFK longer than %i seconds", name, maxafktime );
set_user_godmode( id, 1 );
attach_sprite( id );
g_was_afk[id] = 1;
}
}
}
}
public plugin_precache()
{
g_spirte_id = precache_model( "sprites/afk_sprite.spr" );
}
stock remove_sprite( user_id )
{
if ( !is_user_connected( user_id ) )
{
return;
}
message_begin( MSG_ALL, SVC_TEMPENTITY );
write_byte( TE_KILLPLAYERATTACHMENTS );
write_byte( user_id );
message_end();
}
stock attach_sprite( user_id )
{
if ( !is_user_connected( user_id ) )
{
return;
}
message_begin( MSG_ALL, SVC_TEMPENTITY );
write_byte( TE_PLAYERATTACHMENT );
write_byte( user_id );
write_coord( 60 );
write_short( g_spirte_id );
write_short( 9000 );
message_end();
}
public client_connect( id )
{
g_afktime[id] = 0;
return(PLUGIN_HANDLED);
}
public client_putinserver( id )
{
g_afktime[id] = 0;
return(PLUGIN_HANDLED);
}
public playerSpawned( id )
{
g_spawned[id] = false;
new sid[1];
sid[0] = id;
set_task( 0.75, "delayedSpawn", _, sid, 1 ); /* Give the player time to drop to the floor when spawning */
return(PLUGIN_HANDLED);
}
public delayedSpawn( sid[] )
{
get_user_origin( sid[0], g_oldangles[sid[0]] );
g_spawned[sid[0]] = true;
return(PLUGIN_HANDLED);
}