Code:
#include <amxmod>
#pragma semicolon 1
const TASKID_Autojoin = 583079;
new const FIRST_JOIN_MSG[] = "#Team_Select";
new const FIRST_JOIN_MSG_SPEC[] = "#Team_Select_Spect";
new const INGAME_JOIN_MSG[] = "#IG_Team_Select";
new const INGAME_JOIN_MSG_SPEC[] = "#IG_Team_Select_Spect";
const iMaxLen = sizeof( INGAME_JOIN_MSG_SPEC );
public plugin_init() {
register_plugin( "Auto CT Join", "1.0", "Exolent" );
register_message( get_user_msgid("ShowMenu"), "msgShowMenu" );
register_message( get_user_msgid("VGUIMenu"), "msgVGUIMenu" );
// I know this is gay but ffs sometimes it doesnt blocked...
register_clcmd( "chooseteam", "cmdBlock" );
}
public plugin_cfg() {
set_cvar_num( "mp_limitteams", 32 );
set_cvar_num( "mp_autoteambalance", 0 );
set_cvar_num( "sv_restart", 1 );
}
public cmdBlock( id )
return PLUGIN_HANDLED;
public client_disconnect( id )
remove_task( id + TASKID_Autojoin );
public msgShowMenu( iMsgid, iDest, id ) {
static sMenuCode[iMaxLen];
get_msg_arg_string(4, sMenuCode, sizeof(sMenuCode) - 1);
if( equal(sMenuCode, FIRST_JOIN_MSG) || equal(sMenuCode, FIRST_JOIN_MSG_SPEC) ) {
if( should_autojoin(id) ) {
set_autojoin_task(id, iMsgid);
return PLUGIN_HANDLED;
}
}
else if( equal(sMenuCode, INGAME_JOIN_MSG) || equal(sMenuCode, INGAME_JOIN_MSG_SPEC) )
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public msgVGUIMenu( iMsgid, iDest, id ) {
if( get_msg_arg_int(1) != 2 )
return PLUGIN_CONTINUE;
if( should_autojoin(id) ) {
set_autojoin_task(id, iMsgid);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public task_Autojoin( iParam[], id )
handle_join( id - TASKID_Autojoin, iParam[0] );
handle_join( id, iMsgid ) {
new iMsgBlock = get_msg_block( iMsgid );
set_msg_block( iMsgid, BLOCK_SET );
engclient_cmd( id, "jointeam", "2" );
new iClass[2];
iClass[0] = random_num( '1', '4' );
engclient_cmd( id, "joinclass", iClass );
set_msg_block( iMsgid, iMsgBlock );
}
set_autojoin_task( id, iMsgid ) {
new iParam[1];
iParam[0] = iMsgid;
set_task( 0.1, "task_Autojoin", id + TASKID_Autojoin, iParam, sizeof(iParam) );
}
should_autojoin( id )
return ( is_user_connected(id) && get_user_team(id) != 2 && !task_exists(id + TASKID_Autojoin) );