Advertisement
Sugisaki

999

Jan 6th, 2016
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 16.40 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. #include <yap_menu>
  5. #include <yap_const>
  6. #include <yap_stocks>
  7. #include <yap_natives>
  8. #include <yap_forwards>
  9. #include <yap_modspecific>
  10.  
  11. new const plugin_author[] = "Twilight Suzuka"
  12. new const plugin_name[] = "YAP-MENU"
  13. new const plugin_version[] = "0.0.1"
  14.  
  15. public pug_votemap_menu;
  16. public pug_voteteam_menu;
  17. public pug_voteplayers_menu
  18. public pug_voterestart_menu
  19. public pug_votekick_menu
  20.  
  21. public pug_cvar_vote_time;
  22. public pug_cvar_vote_perc;
  23.  
  24. public pug_cvar_votemap
  25. public pug_cvar_votemap_e
  26.  
  27. public pug_cvar_votekick_perc;
  28.  
  29. new votemap_noswitch
  30. new g_sTeamTypes[32][32]
  31.  
  32. enum _:TEAMSTOP
  33. {
  34.     VOTE = 0,
  35.     ALEATORIO,
  36.     NOTSORTEADO
  37. }
  38.  
  39. #define MAX_MAPS 32
  40.  
  41. new pug_votemap_votes[MAX_MAPS]
  42. new pug_votemap_name[MAX_MAPS][32]
  43. new pug_votemap_count;
  44.  
  45. public pug_voting = 0;
  46.  
  47. public plugin_init()
  48. {
  49.     register_plugin(plugin_name,plugin_version,plugin_author);
  50.     register_dictionary("yap.txt")
  51.     register_dictionary("yap_vote.txt")
  52.    
  53.     pug_cvar_vote_time = register_cvar("pug_vote_delay","10")
  54.     pug_cvar_vote_perc = register_cvar("pug_vote_percentage","0.4")
  55.    
  56.     pug_cvar_votemap = register_cvar("pug_votemap","1")
  57.     pug_cvar_votemap_e = register_cvar("pug_votemap_enabled","1")
  58.    
  59.     pug_cvar_votekick_perc = register_cvar("pug_votekick_percent","0.6")
  60.    
  61.     register_pug_admincmd("votingrestart","cmd_voterestart",PUG_CMD_LVL,"Comieza la votacion para cancelar el pug.")
  62.     register_pug_admincmd("votekick", "cmd_votekick", _, "^"Nombre^" ^"Razon^"")
  63.    
  64.     /* Menu map */
  65.     pug_votemap_menu = menu_create("Seleccion de mapa:","votemap_handle");
  66.    
  67.     pug_voteteam_menu = menu_create("Configuracion equipo:","voteteam_handle");
  68.    
  69.     pug_voterestart_menu = menu_create("Reinicio del Pug","voterestart_handle");
  70.    
  71.     pug_votekick_menu = menu_create("Expulsar:","votekick_handle");
  72.    
  73.     menu_setprop(pug_votemap_menu,MPROP_EXIT,MEXIT_NEVER)
  74.    
  75.     format(g_sTeamTypes[VOTE],charsmax(g_sTeamTypes[]),"BETA TEST")
  76.     format(g_sTeamTypes[ALEATORIO],charsmax(g_sTeamTypes[]),"Aleatorio")
  77.     format(g_sTeamTypes[NOTSORTEADO],charsmax(g_sTeamTypes[]),"No Sorteados")
  78.     menu_additem(pug_voteteam_menu,g_sTeamTypes[ALEATORIO],"1")
  79.     menu_additem(pug_voteteam_menu,g_sTeamTypes[NOTSORTEADO],"2")
  80.     menu_setprop(pug_voteteam_menu,MPROP_EXIT,MEXIT_NEVER)
  81.    
  82.     menu_additem(pug_voterestart_menu,"Si","1")
  83.     menu_additem(pug_voterestart_menu,"No","2")
  84.     menu_setprop(pug_voterestart_menu,MPROP_EXIT,MEXIT_NEVER)
  85.    
  86.     menu_additem(pug_votekick_menu,"Si","1")
  87.     menu_additem(pug_votekick_menu,"No","2")
  88.     menu_setprop(pug_votekick_menu,MPROP_EXIT,MEXIT_NEVER)
  89. }
  90.  
  91. public plugin_cfg() try_load_votemap_menu()
  92.  
  93. CREATE_GEN_FORW_ID(firsthalf_forward)
  94.  
  95. public pug_firsthalf(GEN_FORW_ID(forward_id))
  96. {
  97.     firsthalf_forward = forward_id
  98.  
  99.     if( get_pcvar_num(pug_cvar_votemap_e) && get_pcvar_num(pug_cvar_votemap) ) votemap_start();
  100.     else voteteam_start();
  101.  
  102.     return PLUGIN_HANDLED;
  103. }
  104.  
  105. public pug_finished()
  106. {
  107.     if(!votemap_noswitch) set_pcvar_num(pug_cvar_votemap_e,1)
  108. }
  109.  
  110. /* Aqui abajo comieza la magia del votemap xd */
  111.  
  112. public try_load_votemap_menu()
  113. {
  114.     static filename[64]
  115.     get_configsdir( filename, 63 )
  116.     format( filename, 63, "%s/maps.ini", filename )
  117.  
  118.     if(file_exists(filename))
  119.     {
  120.         load_votemap_menu(filename)
  121.         if(pug_votemap_count != 0) return;
  122.     }
  123.  
  124.     copy(filename,63,"mapcycle.txt")
  125.     load_votemap_menu(filename)
  126. }
  127.  
  128. public load_votemap_menu(filename[])
  129. {
  130.     new file = fopen(filename,"rb")
  131.    
  132.     new text[256], szDesc[48], num[10]
  133.     new MapName[32]
  134.     get_mapname( MapName, charsmax( MapName ) )
  135.    
  136.     formatex(pug_votemap_name[pug_votemap_count], charsmax(pug_votemap_name[]), "Jugar Este Mapa")
  137.     menu_additem(pug_votemap_menu, pug_votemap_name[pug_votemap_count], "0")
  138.     pug_votemap_count = 1
  139.    
  140.     while( (pug_votemap_count < MAX_MAPS) && !feof(file) && fgets(file,text,255) )
  141.     {
  142.         if(!pug_votemap_count)
  143.             continue
  144.         if(text[0]==';') continue
  145.         if( (text[0]=='/') && (text[1]=='/') ) continue
  146.        
  147.         text[strlen(text)] = '^0'
  148.        
  149.         strbreak(text,pug_votemap_name[pug_votemap_count],31,szDesc,47)
  150.        
  151.         if( !is_map_valid( pug_votemap_name[pug_votemap_count] ) ) continue;
  152.        
  153.         if(equal(MapName, pug_votemap_name[pug_votemap_count])) continue; // nuevo
  154.        
  155.         if(szDesc[0] == '^0') strtok(pug_votemap_name[pug_votemap_count],szDesc,47,"",0,'.',1)
  156.        
  157.         formatex(num,9,"%i",pug_votemap_count)
  158.        
  159.         menu_additem(pug_votemap_menu, pug_votemap_name[pug_votemap_count], num)
  160.        
  161.         pug_votemap_count++;
  162.     }
  163.     fclose(file)
  164. }
  165.  
  166. public cmd_votemap(id,level,cid)
  167. {
  168.     if (!cmd_access(id, level, cid, 1) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
  169.    
  170.     votemap_start()
  171.     return PLUGIN_HANDLED;
  172. }
  173.  
  174. #define TASK_ID 45812
  175.  
  176. public votemap_start()
  177. {
  178.     if(pug_voting) { set_task(get_pcvar_float(pug_cvar_vote_time),"votemap_start",100 + pug_votemap_menu); return; }
  179.  
  180.     pug_voting = 1;
  181.     arrayset(pug_voted,0,33)
  182.  
  183.     arrayset(pug_votemap_votes,0,pug_votemap_count)
  184.     pug_display_menu_all(pug_votemap_menu)
  185.  
  186.     set_task(0.5, "is_hud_map", TASK_ID, _, _, "b")
  187.    
  188.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "seleccion de mapa");
  189.    
  190.     set_task(get_pcvar_float(pug_cvar_vote_time),"votemap_end",100 + pug_votemap_menu)
  191. }
  192.  
  193. public is_hud_map()
  194. {
  195.     set_hudmessage(0, 255, 0, 0.23, 0.02, 0, 6.0, 1.0, 0.0, 0.0, 1)
  196.     show_hudmessage(0, "Seleccion mapa")
  197.  
  198.     new Result[256]
  199.  
  200.     for(new x;x < pug_votemap_count;++x)
  201.     {
  202.         if(pug_votemap_votes[x])
  203.         {
  204.             format
  205.             (
  206.                 Result,
  207.                 charsmax(Result),
  208.                 "%s%s - %d %s^n",
  209.                 Result,
  210.                 pug_votemap_name[x],
  211.                 pug_votemap_votes[x],
  212.                 (pug_votemap_votes[x] > 1) ? "votos" : "voto"
  213.             )
  214.         }
  215.     }
  216.  
  217.     set_hudmessage(255, 255, 255, 0.23, 0.05, 0, 6.0, 1.0, 0.0, 0.0, 2)
  218.  
  219.     if(Result[0])
  220.         show_hudmessage(0, Result)
  221.     else
  222.         show_hudmessage(0, "No hay votos.")
  223. }
  224.  
  225. public votemap_end()
  226. {
  227.     pug_cancel_menu()
  228.  
  229.     pug_voting = 0;
  230.     remove_task ( 100 + pug_votemap_menu )
  231.  
  232.     if(task_exists(TASK_ID)) remove_task(TASK_ID)
  233.    
  234.     if(votemap_count()) voteteam_start();
  235. }
  236.  
  237. public votemap_handle(id, menu, item)
  238. {
  239.     if( item == MENU_EXIT ) return PLUGIN_CONTINUE;
  240.  
  241.     new iAccess, iCallBack, sCommand[3], sOption[32], name[32]
  242.     menu_item_getinfo(menu, item, iAccess, sCommand, charsmax(sCommand), sOption, charsmax(sOption), iCallBack)
  243.    
  244.     pug_voted[id] = 1;
  245.     pug_votemap_votes[str_to_num(sCommand)]++;
  246.  
  247.     get_user_name(id, name, 31)
  248.        
  249.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, sOption);
  250.    
  251.     if(pug_should_stopvote() ) votemap_end()
  252.  
  253.     return PLUGIN_HANDLED
  254. }
  255.  
  256. public votemap_count()
  257. {
  258.     new winner, winner_votes, votes
  259.  
  260.     for(new i = 0; i < pug_votemap_count; ++i)
  261.     {
  262.         votes = pug_votemap_votes[i]
  263.         if(votes > winner_votes) { winner = i; winner_votes = votes; }
  264.         else if(votes == winner_votes) if(random_num(0,1)) { winner = i; winner_votes = votes; }
  265.     }
  266.  
  267.     if(pug_votemap_votes[winner] == 0) return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_NOVOTES")
  268.  
  269.     new Float: tmp = float(pug_get_players()) * get_pcvar_float(pug_cvar_vote_perc)
  270.     if( pug_votemap_votes[winner] < floatround(tmp,floatround_floor) )
  271.     {
  272.         return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_INSUF_VOTES");
  273.     }
  274.  
  275.     if(equal(pug_votemap_name[winner], "Jugar Este Mapa"))
  276.     {
  277.         return 1
  278.     }
  279.    
  280.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_votemap_name[winner]);
  281.     console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_votemap_name[winner]);
  282.  
  283.     pug_voting = 0;
  284.     votemap_noswitch = 1;
  285.     set_pcvar_num(pug_cvar_votemap_e,0)
  286.  
  287.     message_begin(MSG_ALL, SVC_INTERMISSION)
  288.     message_end()
  289.  
  290.     set_task(5.0,"pug_votemap_change",winner)
  291.     return PLUGIN_CONTINUE
  292. }
  293.  
  294. public pug_votemap_change(winner)
  295. {
  296.     server_cmd("changelevel %s",pug_votemap_name[winner]);
  297. }
  298.  
  299. /* ^^ VOTEMAP ^^ */
  300.  
  301. new pug_voteteam_votes[5]
  302.  
  303. public cmd_voteteam(id,level,cid)
  304. {
  305.     if (!cmd_access(id, level, cid, 1) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
  306.  
  307.     voteteam_start()
  308.     return PLUGIN_HANDLED;
  309. }
  310.  
  311. #define TASK_ID_TEAM 87451
  312.  
  313. public voteteam_start()
  314. {
  315.     if(pug_voting) { set_task(get_pcvar_float(pug_cvar_vote_time),"voteteam_start",100 + pug_voteteam_menu); return; }
  316.  
  317.     pug_voting = 1;
  318.     arrayset(pug_voted,0,33)
  319.    
  320.     arrayset(pug_voteteam_votes,0,5)
  321.     pug_display_menu_all(pug_voteteam_menu)
  322.    
  323.     set_task(0.5, "is_hud_team", TASK_ID_TEAM, _, _, "b")
  324.    
  325.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "configuracion de equipos");
  326.  
  327.     set_task(get_pcvar_float(pug_cvar_vote_time),"voteteam_end",100 + pug_voteteam_menu)
  328. }
  329.  
  330. public voteteam_end()
  331. {
  332.     pug_cancel_menu()
  333.     voteteam_count()
  334.  
  335.     pug_voting = 0;
  336.     remove_task ( 100 + pug_voteteam_menu )
  337.  
  338.     if(task_exists(TASK_ID_TEAM)) remove_task(TASK_ID_TEAM)
  339.    
  340.     continue_gen_forward(firsthalf_forward)
  341. }
  342.  
  343. public voteteam_handle(id, menu, item)
  344. {
  345.     if( item == MENU_EXIT ) return PLUGIN_CONTINUE;
  346.    
  347.     new iAccess, iCallBack, sCommand[3], sOption[32], name[32]
  348.     menu_item_getinfo(menu, item, iAccess, sCommand, charsmax(sCommand), sOption, charsmax(sOption), iCallBack)
  349.    
  350.     pug_voted[id] = 1;
  351.     pug_voteteam_votes[str_to_num(sCommand)]++;
  352.    
  353.     get_user_name(id,name,31)
  354.    
  355.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, sOption)
  356.    
  357.     if(pug_should_stopvote()) voteteam_end()
  358.    
  359.     return PLUGIN_HANDLED
  360. }
  361.  
  362. public is_hud_team()
  363. {
  364.     set_hudmessage(0, 255, 0, 0.23, 0.02, 0, 6.0, 1.0, 0.0, 0.0, 1)
  365.     show_hudmessage(0,"Configuracion equipo")
  366.  
  367.     new sResult[128]
  368.  
  369.     for(new x;x < TEAMSTOP;++x)
  370.     {
  371.         if(pug_voteteam_votes[x])
  372.         {
  373.             format
  374.             (
  375.                 sResult,
  376.                 charsmax(sResult),
  377.                 "%s%s - %d %s^n",
  378.                 sResult,
  379.                 g_sTeamTypes[x],
  380.                 pug_voteteam_votes[x],
  381.                 (pug_voteteam_votes[x] > 1) ? "votos" : "voto"
  382.             )
  383.         }
  384.     }
  385.  
  386.     set_hudmessage(255, 255, 255, 0.23, 0.05, 0, 6.0, 1.0, 0.0, 0.0, 2)
  387.  
  388.     if(sResult[0])
  389.         show_hudmessage(0, sResult)
  390.     else
  391.         show_hudmessage(0, "No hay votos.")
  392. }
  393.  
  394. public voteteam_count()
  395. {
  396.  
  397.     new winrar = (pug_voteteam_votes[1] > pug_voteteam_votes[2]) ? 1 : 2
  398.     new winrar2 = (pug_voteteam_votes[3] > pug_voteteam_votes[4]) ? 3 : 4
  399.    
  400.     new allwinrar = (pug_voteteam_votes[winrar] > pug_voteteam_votes[winrar2]) ? winrar : winrar2;
  401.    
  402.     switch(allwinrar)
  403.     {
  404.         case 1: { pug_teams_randomize(); pug_msg_tmp_empty(0,"PUG_VOTETEAM_RANDOM"); }
  405.         case 2: pug_msg_tmp_empty(0,"PUG_VOTETEAM_UNSORT");
  406.         //case 3: { PugTeamsCaptains(); pug_msg_tmp_empty(0,"PUG_VOTETEAM_CAPTAINSORT"); }
  407.     }
  408. }
  409.  
  410. /*public pug_teams_captainsort()
  411. {
  412.     pug_msg_tmp_empty(0,"Captain sort not yet implimented, using random sort");
  413.     pug_teams_randomize();
  414. }*/
  415.  
  416. new pug_voteplayers_name[33][32]
  417. new pug_voteplayers_count;
  418.  
  419. public assemble_voteplayers_menu()
  420. {
  421.     new team_num = pug_num_teams()
  422.     new upper_limit = get_maxplayers() / team_num;
  423.  
  424.     static cmd_name[32], cmd_num[3]
  425.  
  426.     for(new i = 1; i <= upper_limit; ++i)
  427.     {
  428.         formatex(cmd_name,31,"%i vs. ",i)
  429.         for(new a = 2; a < team_num; ++a) format(cmd_name,31,"%s%i vs ",cmd_name,i)
  430.         format(cmd_name,31,"%s%i",cmd_name,i)
  431.  
  432.         formatex(pug_voteplayers_name[i],31,cmd_name)
  433.  
  434.         formatex(cmd_num,2,"%i",i)
  435.         menu_additem(pug_voteplayers_menu,cmd_name,cmd_num)
  436.  
  437.         ++pug_voteplayers_count
  438.     }
  439.     menu_setprop(pug_voteplayers_menu,MPROP_EXIT,MEXIT_NEVER)
  440. }
  441.  
  442. new pug_voterestart_votes[33]
  443. new pug_voterestart_name[][] = {"","Si","No"}
  444. new pug_voterestart_count;
  445.  
  446. public cmd_voterestart(id,level,cid)
  447. {
  448.     if (!cmd_access(id, level, cid, 1) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
  449.     else voterestart_start()
  450.  
  451.     return PLUGIN_HANDLED;
  452. }
  453.  
  454. public voterestart_start()
  455. {
  456.     if(pug_voting) { set_task(get_pcvar_float(pug_cvar_vote_time),"voterestart_start",100 + pug_voterestart_menu); return; }
  457.  
  458.     pug_voting = 1;
  459.     arrayset(pug_voted,0,33)
  460.  
  461.     arrayset(pug_voterestart_votes,0,33)
  462.     pug_display_menu_all(pug_voterestart_menu)
  463.  
  464.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "reinicio del Pug");
  465.     console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "reinicio del Pug");
  466.  
  467.     set_task(get_pcvar_float(pug_cvar_vote_time) ,"voterestart_end",100 + pug_voterestart_menu)
  468. }
  469.  
  470. public voterestart_end()
  471. {
  472.     pug_cancel_menu()
  473.  
  474.     voterestart_count()
  475.  
  476.     pug_voting = 0;
  477.     remove_task ( 100 + pug_voterestart_menu )
  478. }
  479.  
  480. public voterestart_handle(id, menu, item)
  481. {
  482.     if( item < 0 ) return PLUGIN_CONTINUE;
  483.  
  484.     static access, callback
  485.     static cmd[3], name[32], cmdname[32]
  486.  
  487.     menu_item_getinfo(menu, item, access, cmd,2,cmdname,31, callback);
  488.     pug_voterestart_votes[str_to_num(cmd)]++;
  489.  
  490.     get_user_name(id,name,31)
  491.        
  492.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
  493.     console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
  494.  
  495.     pug_voted[id] = 1;
  496.     if(pug_should_stopvote() ) voterestart_end()
  497.  
  498.     return PLUGIN_HANDLED;
  499. }
  500.  
  501. public voterestart_count()
  502. {
  503.     new winner, winner_votes, votes
  504.  
  505.     for(new i = 0; i < pug_voterestart_count; ++i)
  506.     {
  507.         votes = pug_voterestart_votes[i]
  508.         if(votes > winner_votes) { winner = i; winner_votes = votes; }
  509.         else if(votes == winner_votes) if(random_num(0,1)) { winner = i; winner_votes = votes; }
  510.     }
  511.  
  512.     if(pug_voterestart_votes[winner] == 0) return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_NOVOTES")
  513.  
  514.     new Float: tmp = float(pug_get_players()) * get_pcvar_float(pug_cvar_vote_perc)
  515.     if( pug_voterestart_votes[winner] < floatround(tmp,floatround_floor) )
  516.     {
  517.         return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_INSUF_VOTES");
  518.     }
  519.  
  520.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_voterestart_name[winner]);
  521.     console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_voterestart_name[winner]);
  522.  
  523.     if(winner == 1) pug_call_reset()
  524.  
  525.     return PLUGIN_CONTINUE
  526. }
  527.  
  528. new pug_votekick_votes[3]
  529. new pug_votekick_name[32]
  530. new pug_votekick_reason[50]
  531.  
  532. public cmd_votekick(id,level,cid)
  533. {
  534.     if (!cmd_access(id, level, cid, 2) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
  535.  
  536.     read_argv(1,pug_votekick_name,31)
  537.  
  538.     new target = cmd_target(id,pug_votekick_name,1)
  539.     if(!target) return pug_msg_tmp_empty(id,"PUG_CMD_NOTARGET")
  540.     else get_user_name(target,pug_votekick_name,31)
  541.    
  542.     if(read_argc ( ) > 2) read_argv(2,pug_votekick_reason,49)
  543.     else formatex(pug_votekick_reason,49,"Sin Especificar")
  544.  
  545.     votekick_start()
  546.     return PLUGIN_HANDLED;
  547. }
  548.  
  549. public votekick_start()
  550. {
  551.     if(pug_voting) { set_task(get_pcvar_float(pug_cvar_vote_time),"votekick_start",100 + pug_votekick_menu); return; }
  552.  
  553.     pug_voting = 1;
  554.     arrayset(pug_voted,0,33)
  555.     arrayset(pug_votekick_votes,0,3)
  556.  
  557.     static votename[100]
  558.     formatex(votename,99,"\wExpulsar: \r%s \d(\wRazon: \r%s\y)",pug_votekick_name,pug_votekick_reason)
  559.  
  560.     menu_setprop(pug_votekick_menu,MPROP_TITLE,votename)
  561.     pug_display_menu_all(pug_votekick_menu)
  562.  
  563.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "expulsar jugador");
  564.     console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "expulsar jugador");
  565.  
  566.     set_task(get_pcvar_float(pug_cvar_vote_time),"votekick_end",100 + pug_votekick_menu)
  567. }
  568.  
  569. public votekick_end()
  570. {
  571.     pug_cancel_menu()
  572.     votekick_count()
  573.  
  574.     pug_voting = 0;
  575.     remove_task ( 100 + pug_votekick_menu )
  576. }
  577.  
  578. public votekick_handle(id, menu, item)
  579. {
  580.     if( item < 0 ) return PLUGIN_CONTINUE;
  581.  
  582.     static access, callback
  583.     static cmd[3], name[32], cmdname[32]
  584.  
  585.     menu_item_getinfo(menu, item, access, cmd,2,cmdname,31, callback);
  586.     pug_votekick_votes[str_to_num(cmd)]++;
  587.  
  588.     get_user_name(id,name,31)
  589.        
  590.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
  591.     console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
  592.  
  593.     pug_voted[id] = 1;
  594.     if(pug_should_stopvote() ) votekick_end()
  595.  
  596.     return PLUGIN_HANDLED;
  597. }
  598.  
  599. public votekick_count()
  600. {
  601.     new winner;
  602.     if(pug_votekick_votes[1] > pug_votekick_votes[2]) winner = 1
  603.     else if(pug_votekick_votes[1] < pug_votekick_votes[2]) winner = 2
  604.     else return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_TIE");
  605.  
  606.     if(pug_votekick_votes[winner] == 0) return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_NOVOTES")
  607.  
  608.     new Float: tmp = float(pug_get_players()) * get_pcvar_float(pug_cvar_votekick_perc)
  609.     if( pug_votekick_votes[winner] < floatround(tmp,floatround_floor) )
  610.     {
  611.         return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_INSUF_VOTES");
  612.     }
  613.  
  614.     client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_voterestart_name[winner]);
  615.     console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_voterestart_name[winner]);
  616.  
  617.     if(winner == 1) server_cmd("amx_kick %s %s",pug_votekick_name,pug_votekick_reason)
  618.    
  619.     return PLUGIN_HANDLED
  620. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement