Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <yap_menu>
- #include <yap_const>
- #include <yap_stocks>
- #include <yap_natives>
- #include <yap_forwards>
- #include <yap_modspecific>
- new const plugin_author[] = "Twilight Suzuka"
- new const plugin_name[] = "YAP-MENU"
- new const plugin_version[] = "0.0.1"
- public pug_votemap_menu;
- public pug_voteteam_menu;
- public pug_voteplayers_menu
- public pug_voterestart_menu
- public pug_votekick_menu
- public pug_cvar_vote_time;
- public pug_cvar_vote_perc;
- public pug_cvar_votemap
- public pug_cvar_votemap_e
- public pug_cvar_votekick_perc;
- new votemap_noswitch
- new g_sTeamTypes[32][32]
- enum _:TEAMSTOP
- {
- VOTE = 0,
- ALEATORIO,
- NOTSORTEADO
- }
- #define MAX_MAPS 32
- new pug_votemap_votes[MAX_MAPS]
- new pug_votemap_name[MAX_MAPS][32]
- new pug_votemap_count;
- public pug_voting = 0;
- public plugin_init()
- {
- register_plugin(plugin_name,plugin_version,plugin_author);
- register_dictionary("yap.txt")
- register_dictionary("yap_vote.txt")
- pug_cvar_vote_time = register_cvar("pug_vote_delay","10")
- pug_cvar_vote_perc = register_cvar("pug_vote_percentage","0.4")
- pug_cvar_votemap = register_cvar("pug_votemap","1")
- pug_cvar_votemap_e = register_cvar("pug_votemap_enabled","1")
- pug_cvar_votekick_perc = register_cvar("pug_votekick_percent","0.6")
- register_pug_admincmd("votingrestart","cmd_voterestart",PUG_CMD_LVL,"Comieza la votacion para cancelar el pug.")
- register_pug_admincmd("votekick", "cmd_votekick", _, "^"Nombre^" ^"Razon^"")
- /* Menu map */
- pug_votemap_menu = menu_create("Seleccion de mapa:","votemap_handle");
- pug_voteteam_menu = menu_create("Configuracion equipo:","voteteam_handle");
- pug_voterestart_menu = menu_create("Reinicio del Pug","voterestart_handle");
- pug_votekick_menu = menu_create("Expulsar:","votekick_handle");
- menu_setprop(pug_votemap_menu,MPROP_EXIT,MEXIT_NEVER)
- format(g_sTeamTypes[VOTE],charsmax(g_sTeamTypes[]),"BETA TEST")
- format(g_sTeamTypes[ALEATORIO],charsmax(g_sTeamTypes[]),"Aleatorio")
- format(g_sTeamTypes[NOTSORTEADO],charsmax(g_sTeamTypes[]),"No Sorteados")
- menu_additem(pug_voteteam_menu,g_sTeamTypes[ALEATORIO],"1")
- menu_additem(pug_voteteam_menu,g_sTeamTypes[NOTSORTEADO],"2")
- menu_setprop(pug_voteteam_menu,MPROP_EXIT,MEXIT_NEVER)
- menu_additem(pug_voterestart_menu,"Si","1")
- menu_additem(pug_voterestart_menu,"No","2")
- menu_setprop(pug_voterestart_menu,MPROP_EXIT,MEXIT_NEVER)
- menu_additem(pug_votekick_menu,"Si","1")
- menu_additem(pug_votekick_menu,"No","2")
- menu_setprop(pug_votekick_menu,MPROP_EXIT,MEXIT_NEVER)
- }
- public plugin_cfg() try_load_votemap_menu()
- CREATE_GEN_FORW_ID(firsthalf_forward)
- public pug_firsthalf(GEN_FORW_ID(forward_id))
- {
- firsthalf_forward = forward_id
- if( get_pcvar_num(pug_cvar_votemap_e) && get_pcvar_num(pug_cvar_votemap) ) votemap_start();
- else voteteam_start();
- return PLUGIN_HANDLED;
- }
- public pug_finished()
- {
- if(!votemap_noswitch) set_pcvar_num(pug_cvar_votemap_e,1)
- }
- /* Aqui abajo comieza la magia del votemap xd */
- public try_load_votemap_menu()
- {
- static filename[64]
- get_configsdir( filename, 63 )
- format( filename, 63, "%s/maps.ini", filename )
- if(file_exists(filename))
- {
- load_votemap_menu(filename)
- if(pug_votemap_count != 0) return;
- }
- copy(filename,63,"mapcycle.txt")
- load_votemap_menu(filename)
- }
- public load_votemap_menu(filename[])
- {
- new file = fopen(filename,"rb")
- new text[256], szDesc[48], num[10]
- new MapName[32]
- get_mapname( MapName, charsmax( MapName ) )
- formatex(pug_votemap_name[pug_votemap_count], charsmax(pug_votemap_name[]), "Jugar Este Mapa")
- menu_additem(pug_votemap_menu, pug_votemap_name[pug_votemap_count], "0")
- pug_votemap_count = 1
- while( (pug_votemap_count < MAX_MAPS) && !feof(file) && fgets(file,text,255) )
- {
- if(!pug_votemap_count)
- continue
- if(text[0]==';') continue
- if( (text[0]=='/') && (text[1]=='/') ) continue
- text[strlen(text)] = '^0'
- strbreak(text,pug_votemap_name[pug_votemap_count],31,szDesc,47)
- if( !is_map_valid( pug_votemap_name[pug_votemap_count] ) ) continue;
- if(equal(MapName, pug_votemap_name[pug_votemap_count])) continue; // nuevo
- if(szDesc[0] == '^0') strtok(pug_votemap_name[pug_votemap_count],szDesc,47,"",0,'.',1)
- formatex(num,9,"%i",pug_votemap_count)
- menu_additem(pug_votemap_menu, pug_votemap_name[pug_votemap_count], num)
- pug_votemap_count++;
- }
- fclose(file)
- }
- public cmd_votemap(id,level,cid)
- {
- if (!cmd_access(id, level, cid, 1) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
- votemap_start()
- return PLUGIN_HANDLED;
- }
- #define TASK_ID 45812
- public votemap_start()
- {
- if(pug_voting) { set_task(get_pcvar_float(pug_cvar_vote_time),"votemap_start",100 + pug_votemap_menu); return; }
- pug_voting = 1;
- arrayset(pug_voted,0,33)
- arrayset(pug_votemap_votes,0,pug_votemap_count)
- pug_display_menu_all(pug_votemap_menu)
- set_task(0.5, "is_hud_map", TASK_ID, _, _, "b")
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "seleccion de mapa");
- set_task(get_pcvar_float(pug_cvar_vote_time),"votemap_end",100 + pug_votemap_menu)
- }
- public is_hud_map()
- {
- set_hudmessage(0, 255, 0, 0.23, 0.02, 0, 6.0, 1.0, 0.0, 0.0, 1)
- show_hudmessage(0, "Seleccion mapa")
- new Result[256]
- for(new x;x < pug_votemap_count;++x)
- {
- if(pug_votemap_votes[x])
- {
- format
- (
- Result,
- charsmax(Result),
- "%s%s - %d %s^n",
- Result,
- pug_votemap_name[x],
- pug_votemap_votes[x],
- (pug_votemap_votes[x] > 1) ? "votos" : "voto"
- )
- }
- }
- set_hudmessage(255, 255, 255, 0.23, 0.05, 0, 6.0, 1.0, 0.0, 0.0, 2)
- if(Result[0])
- show_hudmessage(0, Result)
- else
- show_hudmessage(0, "No hay votos.")
- }
- public votemap_end()
- {
- pug_cancel_menu()
- pug_voting = 0;
- remove_task ( 100 + pug_votemap_menu )
- if(task_exists(TASK_ID)) remove_task(TASK_ID)
- if(votemap_count()) voteteam_start();
- }
- public votemap_handle(id, menu, item)
- {
- if( item == MENU_EXIT ) return PLUGIN_CONTINUE;
- new iAccess, iCallBack, sCommand[3], sOption[32], name[32]
- menu_item_getinfo(menu, item, iAccess, sCommand, charsmax(sCommand), sOption, charsmax(sOption), iCallBack)
- pug_voted[id] = 1;
- pug_votemap_votes[str_to_num(sCommand)]++;
- get_user_name(id, name, 31)
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, sOption);
- if(pug_should_stopvote() ) votemap_end()
- return PLUGIN_HANDLED
- }
- public votemap_count()
- {
- new winner, winner_votes, votes
- for(new i = 0; i < pug_votemap_count; ++i)
- {
- votes = pug_votemap_votes[i]
- if(votes > winner_votes) { winner = i; winner_votes = votes; }
- else if(votes == winner_votes) if(random_num(0,1)) { winner = i; winner_votes = votes; }
- }
- if(pug_votemap_votes[winner] == 0) return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_NOVOTES")
- new Float: tmp = float(pug_get_players()) * get_pcvar_float(pug_cvar_vote_perc)
- if( pug_votemap_votes[winner] < floatround(tmp,floatround_floor) )
- {
- return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_INSUF_VOTES");
- }
- if(equal(pug_votemap_name[winner], "Jugar Este Mapa"))
- {
- return 1
- }
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_votemap_name[winner]);
- console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_votemap_name[winner]);
- pug_voting = 0;
- votemap_noswitch = 1;
- set_pcvar_num(pug_cvar_votemap_e,0)
- message_begin(MSG_ALL, SVC_INTERMISSION)
- message_end()
- set_task(5.0,"pug_votemap_change",winner)
- return PLUGIN_CONTINUE
- }
- public pug_votemap_change(winner)
- {
- server_cmd("changelevel %s",pug_votemap_name[winner]);
- }
- /* ^^ VOTEMAP ^^ */
- new pug_voteteam_votes[5]
- public cmd_voteteam(id,level,cid)
- {
- if (!cmd_access(id, level, cid, 1) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
- voteteam_start()
- return PLUGIN_HANDLED;
- }
- #define TASK_ID_TEAM 87451
- public voteteam_start()
- {
- if(pug_voting) { set_task(get_pcvar_float(pug_cvar_vote_time),"voteteam_start",100 + pug_voteteam_menu); return; }
- pug_voting = 1;
- arrayset(pug_voted,0,33)
- arrayset(pug_voteteam_votes,0,5)
- pug_display_menu_all(pug_voteteam_menu)
- set_task(0.5, "is_hud_team", TASK_ID_TEAM, _, _, "b")
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "configuracion de equipos");
- set_task(get_pcvar_float(pug_cvar_vote_time),"voteteam_end",100 + pug_voteteam_menu)
- }
- public voteteam_end()
- {
- pug_cancel_menu()
- voteteam_count()
- pug_voting = 0;
- remove_task ( 100 + pug_voteteam_menu )
- if(task_exists(TASK_ID_TEAM)) remove_task(TASK_ID_TEAM)
- continue_gen_forward(firsthalf_forward)
- }
- public voteteam_handle(id, menu, item)
- {
- if( item == MENU_EXIT ) return PLUGIN_CONTINUE;
- new iAccess, iCallBack, sCommand[3], sOption[32], name[32]
- menu_item_getinfo(menu, item, iAccess, sCommand, charsmax(sCommand), sOption, charsmax(sOption), iCallBack)
- pug_voted[id] = 1;
- pug_voteteam_votes[str_to_num(sCommand)]++;
- get_user_name(id,name,31)
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, sOption)
- if(pug_should_stopvote()) voteteam_end()
- return PLUGIN_HANDLED
- }
- public is_hud_team()
- {
- set_hudmessage(0, 255, 0, 0.23, 0.02, 0, 6.0, 1.0, 0.0, 0.0, 1)
- show_hudmessage(0,"Configuracion equipo")
- new sResult[128]
- for(new x;x < TEAMSTOP;++x)
- {
- if(pug_voteteam_votes[x])
- {
- format
- (
- sResult,
- charsmax(sResult),
- "%s%s - %d %s^n",
- sResult,
- g_sTeamTypes[x],
- pug_voteteam_votes[x],
- (pug_voteteam_votes[x] > 1) ? "votos" : "voto"
- )
- }
- }
- set_hudmessage(255, 255, 255, 0.23, 0.05, 0, 6.0, 1.0, 0.0, 0.0, 2)
- if(sResult[0])
- show_hudmessage(0, sResult)
- else
- show_hudmessage(0, "No hay votos.")
- }
- public voteteam_count()
- {
- new winrar = (pug_voteteam_votes[1] > pug_voteteam_votes[2]) ? 1 : 2
- new winrar2 = (pug_voteteam_votes[3] > pug_voteteam_votes[4]) ? 3 : 4
- new allwinrar = (pug_voteteam_votes[winrar] > pug_voteteam_votes[winrar2]) ? winrar : winrar2;
- switch(allwinrar)
- {
- case 1: { pug_teams_randomize(); pug_msg_tmp_empty(0,"PUG_VOTETEAM_RANDOM"); }
- case 2: pug_msg_tmp_empty(0,"PUG_VOTETEAM_UNSORT");
- //case 3: { PugTeamsCaptains(); pug_msg_tmp_empty(0,"PUG_VOTETEAM_CAPTAINSORT"); }
- }
- }
- /*public pug_teams_captainsort()
- {
- pug_msg_tmp_empty(0,"Captain sort not yet implimented, using random sort");
- pug_teams_randomize();
- }*/
- new pug_voteplayers_name[33][32]
- new pug_voteplayers_count;
- public assemble_voteplayers_menu()
- {
- new team_num = pug_num_teams()
- new upper_limit = get_maxplayers() / team_num;
- static cmd_name[32], cmd_num[3]
- for(new i = 1; i <= upper_limit; ++i)
- {
- formatex(cmd_name,31,"%i vs. ",i)
- for(new a = 2; a < team_num; ++a) format(cmd_name,31,"%s%i vs ",cmd_name,i)
- format(cmd_name,31,"%s%i",cmd_name,i)
- formatex(pug_voteplayers_name[i],31,cmd_name)
- formatex(cmd_num,2,"%i",i)
- menu_additem(pug_voteplayers_menu,cmd_name,cmd_num)
- ++pug_voteplayers_count
- }
- menu_setprop(pug_voteplayers_menu,MPROP_EXIT,MEXIT_NEVER)
- }
- new pug_voterestart_votes[33]
- new pug_voterestart_name[][] = {"","Si","No"}
- new pug_voterestart_count;
- public cmd_voterestart(id,level,cid)
- {
- if (!cmd_access(id, level, cid, 1) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
- else voterestart_start()
- return PLUGIN_HANDLED;
- }
- public voterestart_start()
- {
- if(pug_voting) { set_task(get_pcvar_float(pug_cvar_vote_time),"voterestart_start",100 + pug_voterestart_menu); return; }
- pug_voting = 1;
- arrayset(pug_voted,0,33)
- arrayset(pug_voterestart_votes,0,33)
- pug_display_menu_all(pug_voterestart_menu)
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "reinicio del Pug");
- console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "reinicio del Pug");
- set_task(get_pcvar_float(pug_cvar_vote_time) ,"voterestart_end",100 + pug_voterestart_menu)
- }
- public voterestart_end()
- {
- pug_cancel_menu()
- voterestart_count()
- pug_voting = 0;
- remove_task ( 100 + pug_voterestart_menu )
- }
- public voterestart_handle(id, menu, item)
- {
- if( item < 0 ) return PLUGIN_CONTINUE;
- static access, callback
- static cmd[3], name[32], cmdname[32]
- menu_item_getinfo(menu, item, access, cmd,2,cmdname,31, callback);
- pug_voterestart_votes[str_to_num(cmd)]++;
- get_user_name(id,name,31)
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
- console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
- pug_voted[id] = 1;
- if(pug_should_stopvote() ) voterestart_end()
- return PLUGIN_HANDLED;
- }
- public voterestart_count()
- {
- new winner, winner_votes, votes
- for(new i = 0; i < pug_voterestart_count; ++i)
- {
- votes = pug_voterestart_votes[i]
- if(votes > winner_votes) { winner = i; winner_votes = votes; }
- else if(votes == winner_votes) if(random_num(0,1)) { winner = i; winner_votes = votes; }
- }
- if(pug_voterestart_votes[winner] == 0) return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_NOVOTES")
- new Float: tmp = float(pug_get_players()) * get_pcvar_float(pug_cvar_vote_perc)
- if( pug_voterestart_votes[winner] < floatround(tmp,floatround_floor) )
- {
- return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_INSUF_VOTES");
- }
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_voterestart_name[winner]);
- console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_voterestart_name[winner]);
- if(winner == 1) pug_call_reset()
- return PLUGIN_CONTINUE
- }
- new pug_votekick_votes[3]
- new pug_votekick_name[32]
- new pug_votekick_reason[50]
- public cmd_votekick(id,level,cid)
- {
- if (!cmd_access(id, level, cid, 2) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
- read_argv(1,pug_votekick_name,31)
- new target = cmd_target(id,pug_votekick_name,1)
- if(!target) return pug_msg_tmp_empty(id,"PUG_CMD_NOTARGET")
- else get_user_name(target,pug_votekick_name,31)
- if(read_argc ( ) > 2) read_argv(2,pug_votekick_reason,49)
- else formatex(pug_votekick_reason,49,"Sin Especificar")
- votekick_start()
- return PLUGIN_HANDLED;
- }
- public votekick_start()
- {
- if(pug_voting) { set_task(get_pcvar_float(pug_cvar_vote_time),"votekick_start",100 + pug_votekick_menu); return; }
- pug_voting = 1;
- arrayset(pug_voted,0,33)
- arrayset(pug_votekick_votes,0,3)
- static votename[100]
- formatex(votename,99,"\wExpulsar: \r%s \d(\wRazon: \r%s\y)",pug_votekick_name,pug_votekick_reason)
- menu_setprop(pug_votekick_menu,MPROP_TITLE,votename)
- pug_display_menu_all(pug_votekick_menu)
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "expulsar jugador");
- console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "expulsar jugador");
- set_task(get_pcvar_float(pug_cvar_vote_time),"votekick_end",100 + pug_votekick_menu)
- }
- public votekick_end()
- {
- pug_cancel_menu()
- votekick_count()
- pug_voting = 0;
- remove_task ( 100 + pug_votekick_menu )
- }
- public votekick_handle(id, menu, item)
- {
- if( item < 0 ) return PLUGIN_CONTINUE;
- static access, callback
- static cmd[3], name[32], cmdname[32]
- menu_item_getinfo(menu, item, access, cmd,2,cmdname,31, callback);
- pug_votekick_votes[str_to_num(cmd)]++;
- get_user_name(id,name,31)
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
- console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
- pug_voted[id] = 1;
- if(pug_should_stopvote() ) votekick_end()
- return PLUGIN_HANDLED;
- }
- public votekick_count()
- {
- new winner;
- if(pug_votekick_votes[1] > pug_votekick_votes[2]) winner = 1
- else if(pug_votekick_votes[1] < pug_votekick_votes[2]) winner = 2
- else return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_TIE");
- if(pug_votekick_votes[winner] == 0) return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_NOVOTES")
- new Float: tmp = float(pug_get_players()) * get_pcvar_float(pug_cvar_votekick_perc)
- if( pug_votekick_votes[winner] < floatround(tmp,floatround_floor) )
- {
- return pug_msg_tmp_empty(0,"PUG_VOTE_FAILED_INSUF_VOTES");
- }
- client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_voterestart_name[winner]);
- console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WON", pug_voterestart_name[winner]);
- if(winner == 1) server_cmd("amx_kick %s %s",pug_votekick_name,pug_votekick_reason)
- return PLUGIN_HANDLED
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement