View difference between Paste ID: 5E24MKD7 and d2KSG2nW
SHOW: | | - or go back to the newest paste.
1-
#include <amxmodx>
1+
#include < amxmodx >
2-
#include <fakemeta>
2+
#include < fakemeta >
3
4-
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
4+
#define PLUGIN  "Unlimited Team Changes"
5
#define VERSION "1.3"
6-
new StrN[3]=0,g_menu[33]=0,bool:ChooseTeam_Used[33], bool:DetectVIPMap[33];
6+
#define AUTHOR  "HamletEagle"
7
8-
public plugin_init()
8+
#define BITS 1<<8
9-
{ 
9+
#define ADMIN_ACCES ADMIN_KICK
10-
  register_plugin("Players Count in Team Menu" , "3.0.5" , "kramesa+Seroff" );
10+
11-
  register_message(get_user_msgid("ShowMenu"), "MenuTeam");
11+
const m_bHasChangeTeamThisRound = 125
12-
  register_message(get_user_msgid("VGUIMenu"), "VGUITeam");
12+
const XO_PLAYER = 5
13-
  register_clcmd("chooseteam", "OpenMenu");
13+
14-
  register_clcmd("jointeam", "j_OpenMenu");
14+
enum _: eCvarsData
15-
  register_menu("chooseteam", KEYSMENU, "chooseteam_menu");
15+
16-
  register_menu("jointeam", KEYSMENU, "jointeam_menu");
16+
	cvar_OnlyAdmins,
17-
  register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0");
17+
	cvar_Enable
18-
  new entity = -1;
18+
19-
  if((engfunc(EngFunc_FindEntityByString, entity, "classname", "info_vip_start")) > 0)
19+
20-
  {
20+
new g_iCvars[ eCvarsData ]
21-
    DetectVIPMap[0] = true;
21+
new g_iCachedCvars[ eCvarsData ]
22-
  }
22+
23-
  else
23+
new _pfnClientCommand
24-
  {
24+
25-
    DetectVIPMap[0] = false;
25+
public plugin_init( ) 
26-
  }
26+
27
	register_plugin
28
	( 
29-
public j_OpenMenu(id)
29+
		.plugin_name  = PLUGIN, 
30
		.version      = VERSION, 
31-
  if(ChooseTeam_Used[id] == true)
31+
		.author       = AUTHOR 
32-
  {
32+
	)
33-
    menu_cancel(id);
33+
	
34-
    client_print_center(id, "You can only choose 1 team!");
34+
	g_iCvars[ cvar_OnlyAdmins ] = register_cvar( "only_admins_can_use", "0" )
35-
    return PLUGIN_HANDLED;
35+
	/*
36-
  }
36+
	0 - all players
37-
  if(DetectVIPMap[0] == false)
37+
	1 - only admins with specified flag
38-
  {
38+
	*/
39-
    menu_cancel(id);
39+
40-
    join_OpenMenu(id);
40+
	g_iCvars[ cvar_Enable ] = register_cvar( "plugin_enabled", "1" )
41-
    return PLUGIN_HANDLED;
41+
	/*
42-
  }
42+
	0 - plugin disabled
43-
  return PLUGIN_CONTINUE;
43+
	1 - plugin enabled
44
	*/
45
	
46-
public join_OpenMenu(id){
46+
	_pfnClientCommand = register_forward( FM_ClientCommand, "pfnClientCommand", false )
47-
  new Arg[3],NumArg;
47+
	register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" )  
48-
  read_argv(1,Arg,charsmax(Arg));
48+
	
49-
  if(!equal(Arg,"")){
49+
	register_clcmd( "chooseteam", "ClientCommand_ChTeam" )
50-
    NumArg=str_to_num(Arg);
50+
	register_clcmd( "jointeam"  , "ClientCommand_ChTeam" )
51-
    switch(NumArg){
51+
52-
      case 1,2:jointeam_m(id, NumArg);
52+
53-
      case 5:jointeam_m(id, random_num(1,2));
53+
public plugin_cfg( )
54-
      case 6:engclient_cmd(id,"jointeam", "6");
54+
55-
    }
55+
	UTIL_CacheCvars( )
56-
  }else{
56+
57-
    TeamMenu(id);
57+
58-
  }
58+
public pfnClientCommand( id )
59-
  return PLUGIN_CONTINUE;
59+
60
	//We need to catch the exact moment, so the cached cvar is not reliable here
61
	if( get_pcvar_num( g_iCvars[ cvar_Enable ] ) == 0 )
62-
public Event_HLTV_New_Round(id)  
62+
	{
63-
{ 
63+
		log_amx( "Plugin paused by cvar" )
64-
  arrayset(ChooseTeam_Used, false, sizeof(ChooseTeam_Used)); 
64+
		unregister_forward( FM_ClientCommand, _pfnClientCommand, false )
65
		pause( "a" )
66
	}
67-
public client_authorized(id)
67+
68
69-
  ChooseTeam_Used[id] = false;
69+
public Event_NewRound( )
70-
  g_menu[id]=0;
70+
71
	UTIL_CacheCvars( )	
72
}
73-
public client_putinserver(id){
73+
74-
   set_task(0.1,"j_OpenMenu",id);
74+
public ClientCommand_ChTeam( id ) 
75
{
76
	switch( g_iCachedCvars[ cvar_OnlyAdmins ] ) 
77-
public OpenMenu(id)
77+
	{
78
		case 0 : 
79-
  if(ChooseTeam_Used[id] == true)
79+
		{
80-
  {
80+
			set_pdata_int( id, m_bHasChangeTeamThisRound , get_pdata_int( id, m_bHasChangeTeamThisRound, XO_PLAYER ) &  ~BITS, XO_PLAYER )	
81-
    menu_cancel(id);
81+
		}
82-
    client_print_center(id, "You can only choose 1 team!");
82+
		
83-
    return PLUGIN_HANDLED;
83+
		case 1 : 
84-
  }
84+
		{
85-
  if(DetectVIPMap[0] == false)
85+
			if( get_user_flags( id ) & ADMIN_ACCES )
86-
  {
86+
			{
87-
    menu_cancel(id);
87+
				set_pdata_int( id, m_bHasChangeTeamThisRound , get_pdata_int( id, m_bHasChangeTeamThisRound, XO_PLAYER ) &  ~BITS, XO_PLAYER )	
88-
    TeamMenu(id);
88+
			}
89-
    return PLUGIN_HANDLED;
89+
		}
90-
  }
90+
		default:
91-
  return PLUGIN_CONTINUE;
91+
		{
92
			return 0
93
		}
94-
public MenuTeam(msg, des, rec) 
94+
	}
95
	return 0
96-
  if(DetectVIPMap[0] == false)
96+
97-
  {
97+
98-
    static const TeamSelect[] = "#Team_Select";
98+
UTIL_CacheCvars( )
99-
    static sz_Menu[sizeof(TeamSelect)];
99+
100-
    get_msg_arg_string(4, sz_Menu, charsmax(sz_Menu)); 
100+
	for( new i; i < sizeof g_iCvars; i++ )
101-
    if(!equal( sz_Menu, TeamSelect)) 
101+
	{
102-
    {
102+
		g_iCachedCvars[ i ] = get_pcvar_num( g_iCvars[ i ] )
103-
	return PLUGIN_CONTINUE;
103+
	}	
104-
    }
104+