Advertisement
Sugisaki

[AMXX] Votekick for pug

Dec 20th, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.55 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. #define PLUGIN "Vote kick"
  5. #define VERSION "1.0"
  6. #define AUTHOR "Sugisaki"
  7.  
  8. #define TASK_ID 55541
  9.  
  10. new keys = MENU_KEY_0 | MENU_KEY_1 | MENU_KEY_2
  11.  
  12. new g_countdown
  13.  
  14. new voter
  15. new voted
  16.  
  17. new yes
  18. new no
  19.  
  20. new bool:is_active_vote
  21.  
  22. new bool:user_vote[33]
  23.  
  24. new g_razon[20]
  25.  
  26. public plugin_init()
  27. {
  28.     register_plugin(PLUGIN, VERSION, AUTHOR)
  29.     register_menucmd(register_menuid("VoteKick"), keys, "pfn_mh_votekick")
  30.     register_clcmd(".votekick", "pfn_vote_callbegin")
  31. }
  32. public pfn_vote_callbegin(id)
  33. {
  34.     if(!is_user_connected(id))
  35.         return PLUGIN_HANDLED
  36.     if(is_active_vote)
  37.     {
  38.         client_print(id, print_chat, "[VOTEKICK] Hay una votacion en curso, debes esperar a que termine")
  39.         return PLUGIN_HANDLED
  40.     }
  41.     new arg[20]
  42.     read_argv(1, arg, 19)
  43.     new target = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
  44.     if(!target)
  45.         return PLUGIN_HANDLED
  46.     if(get_user_team(id) != get_user_team(target))
  47.     {
  48.         console_print(id, "[VOTEKICK] Solo puedes hacer vote a los de tu mismo equipo")
  49.         return PLUGIN_HANDLED
  50.     }
  51.     read_argv(2, g_razon, 19)
  52.    
  53.     if(!g_razon[0])
  54.         formatex(g_razon, 19, "Sin Especificar")
  55.     g_countdown = 11
  56.    
  57.     voted = target
  58.     voter = id
  59.     yes = 0
  60.     no = 0
  61.    
  62.     for(new i = 1 ; i <= get_maxplayers() ; i++)
  63.     {
  64.         user_vote[i] = false
  65.     }
  66.    
  67.     yes++
  68.     no++
  69.    
  70.     user_vote[voted] = true
  71.     user_vote[voter] = true
  72.    
  73.     pfn_task_make_menu()
  74.     set_task(1.0, "pfn_task_make_menu", TASK_ID, _, _, "b")
  75.     is_active_vote = false
  76.    
  77.    
  78.     return PLUGIN_HANDLED
  79. }
  80.  
  81. public pfn_task_make_menu()
  82. {
  83.     g_countdown--
  84.    
  85.     for(new i = 1 ; i <= get_maxplayers() ; i++)
  86.     {
  87.         if(!is_user_connected(i))
  88.             continue
  89.         if(get_user_team(i) != get_user_team(voter))
  90.             continue
  91.         make_menu(i, g_razon)
  92.     }
  93.    
  94.     if(!g_countdown)
  95.     {
  96.         remove_task(TASK_ID)
  97.         fn_vote_reject()
  98.     }
  99. }
  100.  
  101. public make_menu(id, const razon[])
  102. {
  103.     static menu[150], name[32]
  104.     get_user_name(voted, name, 31)
  105.     formatex(menu, charsmax(menu), "\yExpulsar a %s | Razon: %s^n^n", name, razon)
  106.    
  107.     if(yes)
  108.         format(menu, charsmax(menu), "%s\r1. \wSi | \y%i^n", menu, yes)
  109.     else
  110.         format(menu, charsmax(menu), "%s\r1. \wSi^n", menu)
  111.     if(no)
  112.         format(menu, charsmax(menu), "%s\r2. \wNo | \y%i^n^n", menu, no)
  113.     else
  114.         format(menu, charsmax(menu), "%s\r2. \wNo^n^n", menu)
  115.    
  116.     format(menu, charsmax(menu), "%s\wTiempo restante: \y%i", menu, g_countdown)
  117.    
  118.     show_menu(id, keys, menu, 2, "VoteKick")
  119. }
  120. public pfn_mh_votekick(id, key)
  121. {
  122.     if(!g_countdown)
  123.         return PLUGIN_HANDLED
  124.     if(user_vote[id])
  125.     {
  126.         make_menu(id, g_razon)
  127.         return PLUGIN_HANDLED
  128.     }
  129.    
  130.     switch(key)
  131.     {
  132.         case 0 : yes++
  133.         case 1 : no++
  134.     }
  135.    
  136.    
  137.     if(yes == 4)
  138.     {
  139.         fn_vote_accept()
  140.         remove_task(TASK_ID)
  141.     }
  142.     else if(no == 4)
  143.     {
  144.         fn_vote_reject()
  145.         remove_task(TASK_ID)
  146.     }
  147.     else
  148.     {
  149.         for(new i = 1 ; i <= get_maxplayers() ; i++)
  150.         {
  151.             if(!is_user_connected(i))
  152.                 continue
  153.             if(get_user_team(i) != get_user_team(voter))
  154.                 continue
  155.             make_menu(i, g_razon)
  156.         }
  157.     }
  158.     user_vote[id] = true
  159.    
  160.     return PLUGIN_HANDLED
  161.        
  162.    
  163. }
  164. fn_vote_accept()
  165. {
  166.     server_cmd("kick #%i Has sido desconectado de la sesion", get_user_userid(voted))
  167.        
  168.     static menu[150], name[32]
  169.     get_user_name(voted, name, 31)
  170.     formatex(menu, charsmax(menu), "\yExpulsar a %s | Razon: %s^n^n", name, g_razon)
  171.    
  172.     if(yes)
  173.         format(menu, charsmax(menu), "%s\r1. \wSi | \y%i^n", menu, yes)
  174.     else
  175.         format(menu, charsmax(menu), "%s\r1. \wSi^n", menu)
  176.     if(no)
  177.         format(menu, charsmax(menu), "%s\r2. \wNo | \y%i^n^n", menu, no)
  178.     else
  179.         format(menu, charsmax(menu), "%s\r2. \wNo^n^n", menu)
  180.    
  181.     format(menu, charsmax(menu), "%s\yVotacion aceptada", menu)
  182.    
  183.     for(new i = 1 ; i <= get_maxplayers() ; i++)
  184.     {
  185.         if(!is_user_connected(i))
  186.             continue
  187.         if(get_user_team(i) != get_user_team(voter))
  188.             continue
  189.         show_menu(i, keys, menu, 10, "NONEEEE")
  190.     }
  191.     is_active_vote = false
  192.    
  193.    
  194. }
  195. fn_vote_reject()
  196. {      
  197.     static menu[150], name[32]
  198.     get_user_name(voted, name, 31)
  199.     formatex(menu, charsmax(menu), "\yExpulsar a %s | Razon: %s^n^n", name, g_razon)
  200.    
  201.     if(yes)
  202.         format(menu, charsmax(menu), "%s\r1. \wSi | \y%i^n", menu, yes)
  203.     else
  204.         format(menu, charsmax(menu), "%s\r1. \wSi^n", menu)
  205.     if(no)
  206.         format(menu, charsmax(menu), "%s\r2. \wNo | \y%i^n^n", menu, no)
  207.     else
  208.         format(menu, charsmax(menu), "%s\r2. \wNo^n^n", menu)
  209.    
  210.     format(menu, charsmax(menu), "%s\rVotacion rechazada", menu)
  211.    
  212.     for(new i = 1 ; i <= get_maxplayers() ; i++)
  213.     {
  214.         if(!is_user_connected(i))
  215.             continue
  216.         if(get_user_team(i) != get_user_team(voter))
  217.             continue
  218.         show_menu(i, keys, menu, 10, "NONEEEE")
  219.     }
  220.     is_active_vote = false
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement