Guest User

Untitled

a guest
May 23rd, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.92 KB | None | 0 0
  1. /* AMX Mod X
  2. *   Auto Join on Connect
  3. *
  4. * (c) Copyright 2007 by VEN
  5. *
  6. * This file is provided as is (no warranties)
  7. *
  8. *     DESCRIPTION
  9. *       Plugin allow to players automatically join team/team&class on connect.
  10. *
  11. *     CVARS
  12. *       ajc_team (0: OFF, N: team index, 5: auto team, default: 5) - controls team join
  13. *       ajc_class (0: OFF, N: class index, 5: auto class, default: 5) - controls class join
  14. *       ajc_imm (0: OFF, 1: ON, default: 1) - don't affect on immuned players (ON/OFF)
  15. *
  16. *     CREDITS
  17. *       Major__ - inquiry
  18. */
  19.  
  20. #include <amxmodx>
  21.  
  22. #define PLUGIN_NAME "Auto Join on Connect"
  23. #define PLUGIN_VERSION "0.1"
  24. #define PLUGIN_AUTHOR "VEN"
  25.  
  26. #define IMMUNITY_ACCESS_LEVEL ADMIN_IMMUNITY
  27.  
  28. #define AUTO_TEAM_JOIN_DELAY 10.0
  29.  
  30. #define TEAM_SELECT_VGUI_MENU_ID 2
  31.  
  32. new g_pcvar_team
  33. new g_pcvar_class
  34. new g_pcvar_imm
  35.  
  36. public plugin_init() {
  37.     register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
  38.  
  39.     register_message(get_user_msgid("ShowMenu"), "message_show_menu")
  40.     register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
  41.  
  42.     g_pcvar_team = register_cvar("ajc_team", "5")
  43.     g_pcvar_class = register_cvar("ajc_class", "5")
  44.     g_pcvar_imm = register_cvar("ajc_imm", "1")
  45. }
  46.  
  47. public message_show_menu(msgid, dest, id) {
  48.     if (!should_autojoin(id))
  49.         return PLUGIN_CONTINUE
  50.  
  51.     static team_select[] = "#Team_Select"
  52.     static menu_text_code[sizeof team_select]
  53.     get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
  54.     if (!equal(menu_text_code, team_select))
  55.         return PLUGIN_CONTINUE
  56.  
  57.     set_force_team_join_task(id, msgid)
  58.  
  59.     return PLUGIN_HANDLED
  60. }
  61.  
  62. public message_vgui_menu(msgid, dest, id) {
  63.     if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID || !should_autojoin(id))
  64.         return PLUGIN_CONTINUE
  65.  
  66.     set_force_team_join_task(id, msgid)
  67.  
  68.     return PLUGIN_HANDLED
  69. }
  70.  
  71. bool:should_autojoin(id) {
  72.     return (get_pcvar_num(g_pcvar_team) && !get_user_team(id) && !task_exists(id) && (!get_pcvar_num(g_pcvar_imm) || !(get_user_flags(id) & IMMUNITY_ACCESS_LEVEL)))
  73. }
  74.  
  75. set_force_team_join_task(id, menu_msgid) {
  76.     static param_menu_msgid[2]
  77.     param_menu_msgid[0] = menu_msgid
  78.     set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
  79. }
  80.  
  81. public task_force_team_join(menu_msgid[], id) {
  82.     if (get_user_team(id))
  83.         return
  84.  
  85.     static team[2], class[2]
  86.     get_pcvar_string(g_pcvar_team, team, sizeof team - 1)
  87.     get_pcvar_string(g_pcvar_class, class, sizeof class - 1)
  88.     force_team_join(id, menu_msgid[0], team, class)
  89. }
  90.  
  91. stock force_team_join(id, menu_msgid, /* const */ team[] = "5", /* const */ class[] = "0") {
  92.     static jointeam[] = "jointeam"
  93.     if (class[0] == '0') {
  94.         engclient_cmd(id, jointeam, team)
  95.         return
  96.     }
  97.  
  98.     static msg_block, joinclass[] = "joinclass"
  99.     msg_block = get_msg_block(menu_msgid)
  100.     set_msg_block(menu_msgid, BLOCK_SET)
  101.     engclient_cmd(id, jointeam, team)
  102.     engclient_cmd(id, joinclass, class)
  103.     set_msg_block(menu_msgid, msg_block)
  104. }
Add Comment
Please, Sign In to add comment