AFK problem
Hello, I've got problem, coz this plugin shouldn't transfer terrorist but it does...
Can anyone help me?
Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#define OFFSET_TEAM 114
#define PLUGIN "AFK to Spectator"
#define VERSION "1.1"
#define AUTHOR "bugsy/fifka"
new Float:g_fOrigin[33][3];
new g_Immunity[33];
new g_AFKPoints[33];
new g_pEnabled;
new g_pAFKTime;
new g_pAllowImmunity;
new g_pImmunityFlag;
enum CsTeams
{
CS_TEAM_UNASSIGNED = 0,
CS_TEAM_T = 1,
CS_TEAM_CT = 2,
CS_TEAM_SPECTATOR = 3
};
new g_FreezeTime;
new g_MsgTeamInfo;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
register_logevent("logevent_round_start", 2, "1=Round_Start");
g_pEnabled = register_cvar( "afkspec_enabled" , "1" );
g_pAFKTime = register_cvar( "afkspec_time" , "60" );
g_pAllowImmunity = register_cvar( "afkspec_allowimmunity" , "1" );
g_pImmunityFlag = register_cvar("afkspec_immunityflag" , "a" );
set_task( 1.0, "CheckAFK", _, _, _, "b");
g_MsgTeamInfo = get_user_msgid("TeamInfo");
}
public client_putinserver(id)
{
new szImmunityFlag[2];
g_fOrigin[id][0] = 0.0;
g_fOrigin[id][1] = 0.0;
g_fOrigin[id][2] = 0.0;
g_AFKPoints[id] = 0;
get_pcvar_string( g_pImmunityFlag, szImmunityFlag , 1);
g_Immunity[id] = get_user_flags(id) & read_flags(szImmunityFlag);
}
//================================
//=====Freezetime events=====
//================================
public event_new_round()
{
g_FreezeTime = 1;
}
public logevent_round_start()
{
g_FreezeTime = 0;
}
public CheckAFK()
{
if ( g_FreezeTime || !get_pcvar_num(g_pEnabled) )
return PLUGIN_HANDLED;
new iPlayers[32];
new iPlayersNum;
new iPlayer;
new Float:fOrigin[3];
get_players ( iPlayers, iPlayersNum , "ac" );
for ( new i ; i < iPlayersNum ; i++ )
{
iPlayer = iPlayers[i];
//Do not count player as AFK if:
// - Player is terrorist
// - Allow immunity is enabled and player has immunity
if ((get_user_team(iPlayer) == 1) || (( get_pcvar_num(g_pAllowImmunity) && g_Immunity[iPlayer])))
{
continue;
}
pev( iPlayer , pev_origin , fOrigin );
//Compare players origin to origin from the last check, if the same then the player has not moved.
if ( (g_fOrigin[iPlayer][0] == fOrigin[0]) && (g_fOrigin[iPlayer][1] == fOrigin[1]) )
{
//Add points (equivalent to seconds since our interval is 1 second.
g_AFKPoints[iPlayer]++;
if ( g_AFKPoints[iPlayer] >= (get_pcvar_num(g_pAFKTime)) )
{
new szName[33];
get_user_name ( iPlayer , szName , 32 );
client_print ( 0 , print_chat , "* %s was moved to spectator for being AFK" , szName );
fm_set_spectator( iPlayer );
}
}
else
{
g_AFKPoints[iPlayer] = 0;
}
g_fOrigin[iPlayer][0] = fOrigin[0];
g_fOrigin[iPlayer][1] = fOrigin[1];
g_fOrigin[iPlayer][2] = fOrigin[2];
}
return PLUGIN_HANDLED;
}
public fm_set_spectator(id )
{
user_kill(id)
set_pdata_int( id, OFFSET_TEAM , 3 );
dllfunc( DLLFunc_ClientUserInfoChanged, id, engfunc( EngFunc_GetInfoKeyBuffer, id ) );
emessage_begin( MSG_BROADCAST, g_MsgTeamInfo );
ewrite_byte( id );
ewrite_string( "SPECTATOR" );
emessage_end();
}
|