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 | + |