pausar la ronda al principio para efectuar la votación
#1
Holla!.
Aquí en Brasil tenemos un servidor que tiene un plugin que fuerza
la votación de mapas comenzar al comienzo de la ronda y también
pausa la partida hasta terminar la votación.
¿Podría crear este plugin para nosotros?
Responder
#2
Cambia el plugin de la votacion o desactivarlo.

No es necesario crear un plugin.
[Imagen: jrXxqRT.png]
*Maper Del Cstrike* - *Estudiante De Sistema*
(03/09/2018, 08:32 PM)Skylar escribió: Obviamente, no va a hablar con super pro para que le mueva el thread
(04/01/2019, 05:12 PM)Pan Bimbo (? escribió: QUE HICISTE QUE??????? YO QUERIA LA PLACA DE VIDEO PORQUE LA TIRASTE CTM
(15/01/2019, 04:08 AM)FreDDy escribió:
(15/01/2019, 03:45 AM)Hernandez escribió: Qué más dan las palabras si a donde vayas están en tetas protestando sin sentido

No todas salen en tetas y no todas protestan sin sentido. Estás generalizando algo que sólo unas pocas lo hacen a diferencia de las muchas que realmente tienen un motivo para protestar.
(17/01/2019, 12:34 PM)totopizza escribió: el orden de los factores no altera el producto xD
(23/01/2019, 01:10 AM)GoldenCosta escribió:
Cita:E visto que este ZP , ESTA AQUI EN EL FORO PERO NO ES EL ORIGINAL POR QUE? , LE FALTAN MILES DE COSAS ESTA BUGEADO , LE FALTAN CÓDIGOS NI SE IMAGINAN , BUENO EL MOD ESTE SE VENDE POR 70 DOLARES , ACEPTO PAYPAL Y EN PESOS CHILENOS $42.584
ya esta publicado.... y 70 us en arg son 2625,35 pesos... estas loco con esa guita neel mantiene el foro por 2 años
(23/01/2019, 01:17 AM)Skylar escribió:
(22/01/2019, 10:30 PM)el_juan_fail escribió:
(22/01/2019, 10:03 AM)Neeeeeeeeeel.- escribió: Por favor subir las cosas al foro y no links a blogs externos. Solamente en caso de que haya recursos que no se pudiesen subir por un tema de tamaño, poenr un link de descarga directo (tipo mega) de los recursos y subir los plugins y demás archivos livianos al foro.

deberia ponerle en un link mediante el mediafire o mega o link externo lo que sea pero no es bueno dejar cosa agregada sin descargar solo por el blog no se puede se puede bajar el recurso o que haya sido creado disculpa neeeeel. estaba leyendose las reglas u.uMario

Dijiste lo mismo que dijo Neeel!
(27/02/2019, 08:00 PM)Sugisaki escribió:
(27/02/2019, 05:37 PM)Pan Bimbo (? escribió:
(27/02/2019, 12:06 AM)luxor xD escribió: Hola, si precacheo algo en un plugin, no es necesario precachearlo en otro plugin?

Si yo cargo una caja en un camion, mi amigo puede cargar la MISMA caja en el camion?, y no porque ya esta cargada.
[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
(14/03/2019, 10:26 PM)KrR10VnZl escribió: en Venezuela aprendes a ser desde bombas molotov hasta velas, es algo así como supervivencia al desnudo jaja
(18/04/2019, 11:04 PM)Jose88 escribió:
(18/04/2019, 09:55 PM)Hypnotize escribió: arriba marica

papa me va perdonar pero aquí no sale ningún download. solo sale esto

Código PHP:
PDNiños Ratas eviten sacar el autor jaja.
REMOVIDO POR TUTOR Y SLOWHACK
(21/04/2019, 09:38 AM)SHENK! =D escribió: ASDASD

Si nos organizamos cojemos todos.
(11/08/2019, 05:11 PM)Cr3470r escribió: Todo Software es crackeable ... No importa cuantas validaciones hagan, la ventaja siempre la tenemos nosotros ...
(28/07/2015, 09:34 PM)Nazi.- escribió: :ohgodwhy buen aporte

PD: situación sentimental: Sin internetOh god why

Sigue así Proud

(28/02/2020, 12:23 AM)Skylar escribió:
(27/02/2020, 11:28 PM)4evergaming escribió: Ya me puse como autor y lo subi a mi empresa


Abrazos

FIX
Responder
#3
(02/08/2018, 10:18 AM)El pirucho XP-007 escribió: Cambia el plugin de la votacion o desactivarlo.

No es necesario crear un plugin.

¿Cómo hago eso?
Estoy usando este plugin dmc233.amxx ¿Dónde cambiar?
Quiero añadir funciones en él.
Hacer pausa en el comienzo de la ronda
Y girar la ronda cuando termine la votación.
Esto evita de estar jugando y morir por estar preocupado por la votación
Responder
#4
(02/08/2018, 10:34 AM)f4lco escribió:
(02/08/2018, 10:18 AM)El pirucho XP-007 escribió: Cambia el plugin de la votacion o desactivarlo.

No es necesario crear un plugin.

¿Cómo hago eso?
Estoy usando este plugin dmc233.amxx ¿Dónde cambiar?

Usa el votemap.amxx como plugin de votación de mapas.

Te lo incluye el amxmod al instalarlo.
Responder
#5
(02/08/2018, 10:41 AM)El pirucho XP-007 escribió:
(02/08/2018, 10:34 AM)f4lco escribió:
(02/08/2018, 10:18 AM)El pirucho XP-007 escribió: Cambia el plugin de la votacion o desactivarlo.

No es necesario crear un plugin.

¿Cómo hago eso?
Estoy usando este plugin dmc233.amxx ¿Dónde cambiar?

Usa el votemap.amxx como plugin de votación de mapas.

Te lo incluye el amxmod al instalarlo.
usted tiene este plugin?
no creo que sólo con otro nombre
Responder
#6
pasa el plugins, que usa, deja el codigo en etiqueta PHP

Pirucho acaso no entiendes, el queire que cuando salga el vote de mapa, todos se queden quietos como si estuvieran en freezetime

PAsa tu codigo Fl4co y recuerda ponerlo en etiqueta PHP
Si no te gusta algo, cámbialo. Si no lo puedes cambiar, cambia la forma en que piensas sobre ello <3
Responder
#7
(02/08/2018, 01:03 PM)Saber escribió: pasa el plugins, que usa, deja el codigo en etiqueta PHP

Pirucho acaso no entiendes, el queire que cuando salga el vote de mapa, todos se queden quietos como si estuvieran en freezetime

PAsa tu codigo Fl4co y recuerda ponerlo en etiqueta PHP

eso mismo.
Como si fuera en el freezetime
Yo quería poder hacer esto en mi servidor

mi dificultad para entender es culpa de mi mal español


Archivos adjuntos
.ini   plugins.ini (Tamaño: 2.62 KB / Descargas: 3)
Responder
#8
(02/08/2018, 01:03 PM)Saber escribió: pasa el plugins, que usa, deja el codigo en etiqueta PHP

Pirucho acaso no entiendes, el queire que cuando salga el vote de mapa, todos se queden quietos como si estuvieran en freezetime

PAsa tu codigo Fl4co y recuerda ponerlo en etiqueta PHP

Código PHP:
https://forums.alliedmods.net/showthread.php?t=261412 

este es el plugin en PHP que quiero añadir freezetime en la votación!.

es mucho y no entiendo nada

Código PHP:
    ///////////////////////////////////////////////////////////
     
/###///##/////##///###////////////####///////####///####///
    
/#//#//#/#///#/#//#///////////////////#//////////#//////#//
    
/#//#//#//#/#//#//#/////////#///#//####/////////#//////#///
    
/#//#//#///#///#//#//////////#/#//#//////////////#//////#//
    
/###///#///////#///###////////#///#####//##//####///####///
    ///////////////////////////////////////////////////////////
    
    
Author:            DeRoiD
    Plugin name
:       DeRoiD's Mapchooser
    Plugin version:    2.33
    First relase:      2015/04/08
    Last update:       2015/06/25
    Reason for update: Rounds fix
     Plugin link:       forums.alliedmods.net/showthread.php?t=261412
    
    Short description [default cvar]:
        - This plugin last 3 minutes or round open the "Vote a map" menu. 
        - The one for which more people vote it will be the next map. 
        - If best vote < min. vote percent then re-vote! There is a manner of two kinds.
        
    You can [default cvar]:
        - rtv "Rock the vote" [players 1:2]
        - nom "Nomination" (in menu) [chance 50%]
        - see timeleft | nextmap [timeleft, nextmap]
        - see played maps and played counts [/playedmaps]
        - see current map
        - if you admin then can startvote (/startvote) [StartVoteFlag]
    
    Changelog:
        - v1.00
            + First relase (hlmod.hu)
            + Map choose (Old method)
            + Played maps
            + Next map
            + Timeleft
        
        - v1.20b
            + Rounds
            + Nomination
            + Admin vote
            + Rock the vote
        
        - v1.30b
            + Previous map can not be choose
        
        - v1.35b
            + Fix bugs
            + New chooser method
            + More map choices [MAX 9]
        
        - v1.49a
            + Re-vote if vote percent < min percent
            + Removed hard coding paths.
        
        - v1.53a
            + Fixed extend time [ +- 1 min ]
            + Fixed changelevel bug.
            
        - v1.62a
            + Hud Counter
            + Change map only next round. (Cvar)
            + Fix bugs
            
        - v1.63a
            + HudMsg -> SyncHudMsg
            
        - v1.77a
            + Nobody votes bug fix
            + More languages
    
        - v1.86a
            + Countdown sounds
            
        - v2.00
            + Fix bugs
            + Check maps (valid)
            + Ad rounds in game (if rounds mod)    
            
        - v2.01
            + Current map
            
        - v2.01.3
            + Fix RTV
            
        - v2.30
            + Multilang toggle server/player
            + Start button
            + Map infos
            
        - v2.33
            + Round fix
            + amx_dmc_maxrounds
        
        Pugin like:
        
            Choose the Next Map [All votes: 9]
            
            1. de_dust2 [votes: 1] (9%)
            2. de_dust [votes: 0] (0%)
            3. de_inferno [votes: 1] (9%)
            4. de_train [votes: 5] (54%)
            5. de_nuke [votes: 1] (9%)
            
            6. de_tuscan (current map) [votes: 1] (9%)
            
            
            [Next map: de_train]
            
        You find bug?
            - deroidocska (steam)
            - https://forums.alliedmods.net/member.php?u=258497
            
        Plugin tested in [32 Real Players]:
            - AMX 1.8.2 
            - AMX 1.8.3-dev+4532 
            - AMX 1.8.3-dev-git4751
            
        Thanks for using this plugin!            
            DeRoiD
            
                    ___________[Special thanks]___________
                            
                    - fysiks for help to plugin (tips)
                    - HamletEagle for help to plugin (tips)
                    - mforce for idea
                    - cs.stambeto for idea
                    - OZH3NN for idea
                        
                    - ACM1PT for translation [es]
                    - JustVladK & K:O for translation [ro]
                    - battlefield 3 for translation [ru]
                    - Perfect Scrash for translation [bp]
                    - Belo95135 for translation [sk]
                    - wEight for translation [sr]
                    - ANTICHRISTUS for translation [fr]
                    ______________________________________
                    
                    
        Magyar nyelven is leirom!!! Koszonom, hogy ha ezt a plugint hasznalod! :)
*/

#include <amxmodx>

new const PLUGIN[] = "DeRoiD'
s Mapchooser";
new const VERSION[] = "
2.33";
new const AUTHOR[] = "
DeRoiD";

#define MapID 180912

#define R 240
#define G 240
#define B 240

#define CHUD 1.5
#define MaxCSpeed 5.0

#define Max 200
#define MinRounds 5
#define MaxChoice 9
#define PMPage 6
#define MaxSB 8

#define StartVoteFlag ADMIN_LEVEL_A
#define InfoFlag ADMIN_BAN
#define RoundFlag ADMIN_RCON

#pragma semicolon 1

new MapFile[64], MapCycle[32], MapFile_Lines, MapCycle_Lines;
new Maps[Max][32], MapName[32], MapNames[MaxChoice][32], MapRevote[2][32], NomMaps[Max][32], NomNum, Nom, Nomed[Max];
new MapVote[MaxChoice], RevoteCounts[2], VoteMenu, RevoteMenu, MapCounter, LastMap[32], VotedMap[32], BeginCounter;
new AllVotes, AllRevotes, Next[32], RTV, RTVTime[3], PlayerMap[33], ElapsedTime[3], VoteMod;
new bool:Voted, bool:PlayerVoted[33], bool:ChangeMap, bool:Begined, bool:inProcess, bool:Revoted,
bool:PlayerRTV[33], bool:toRTV, bool:AlreadyNom[33], bool:PlayerRevoted[33], bool:NeedRV;
new SayText, Rounds, MaxRounds, TimeLimit, oRounds, Lang, StartButton, PlayedCount, Started;

new Cvar_WaitVoteMenuTime, Cvar_MenuDestroyTime, Cvar_RTVMinute, Cvar_VoteCounter,
Cvar_NomChance, Cvar_VoteSound, Cvar_Extend, Cvar_StartRevoteTime, Cvar_VotePercentMin,
Cvar_Nomination, Cvar_PlayedMaps, Cvar_RTV, Cvar_VoteVariable, Cvar_RTVMin, Cvar_Mod,
Cvar_ChangeSpeed, Cvar_MaxMaps, Cvar_WaitRevoteMenuTime, Cvar_HudMod, Cvar_OnlyNextRound,
Cvar_CountSound, Cvar_ChooseSound, Cvar_Ad, Cvar_StartButton, Cvar_LangMode;

new Prefix[32], sHudObj, Off;

new const MapMenuCommands[][] =
{
    "
/playedmaps",
    "
/pm",
    "
!playedmaps",
    "
!pm",
    "
playedmaps",
    "
pm"
};
new const TimeLeftCommands[][] =
{
    "
/timeleft",
    "
/tl",
    "
!timeleft",
    "
!tl",
    "
timeleft",
    "
tl"
};
new const NextMapCommands[][] =
{
    "
/nextmap",
    "
/nm",
    "
!nextmap",
    "
!nm",
    "
nextmap",
    "
nm"
};
new const AdminCommands[][] =
{
    "
/startvote",
    "
!startvote",
    "
startvote"
};
new const RTVCommands[][] =
{
    "
/rtv",
    "
!rtv",
    "
/rockthevote",
    "
!rockthevote",
    "
rockthevote",
    "
rtv"
};
new const NomCommands[][] =
{
    "
/nom",
    "
!nom",
    "
/nomination",
    "
!nomination",
    "
nom",
    "
nomination"
};
new const CurrentMapCommands[][] =
{
    "
/currentmap",
    "
!currentmap",
    "
/cm",
    "
!cm",
    "
currentmap",
    "
cm"
};

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_cvar(PLUGIN, VERSION, FCVAR_SERVER);
    register_dictionary("
dmc.txt");
    sHudObj = CreateHudSyncObj();
    
    static ConfigsDir[64]; 
    get_localinfo("
amxx_configsdir", ConfigsDir, 63);
    formatex(MapFile, 63, "
%s/dmc/mapdatas.dmc", ConfigsDir);
    get_localinfo("
amxx_configsdir", ConfigsDir, 63);
    formatex(MapCycle, 31, "
mapcycle.txt");
    formatex(Prefix, 31, "
!g[DMC]");
    
    MapFile_Lines = file_size(MapFile, 1);
    MapCycle_Lines = file_size(MapCycle, 1);
    
    Cvar_Mod = register_cvar("
dmc_mod", "1");
    Cvar_HudMod = register_cvar("
dmc_hudmod", "1");
    Cvar_ChangeSpeed = register_cvar("
dmc_changespeed", "5.0");
    Cvar_WaitVoteMenuTime = register_cvar("
dmc_waitvotemenutime", "10.0");
    Cvar_WaitRevoteMenuTime = register_cvar("
dmc_waitrevotemenutime", "5.0");
    Cvar_MenuDestroyTime = register_cvar("
dmc_menudestroyTime", "5.0");
    Cvar_RTVMinute = register_cvar("
dmc_rtvminute", "10");
    Cvar_VoteCounter = register_cvar("
dmc_votecounter", "15");
    Cvar_VoteVariable = register_cvar("
dmc_votevariable", "3");
    Cvar_VotePercentMin = register_cvar("
dmc_votepercent", "50");
    Cvar_MaxMaps = register_cvar("
dmc_maxmaps", "5");
    Cvar_Nomination = register_cvar("
dmc_nomination", "1");
    Cvar_PlayedMaps = register_cvar("
dmc_playedmaps", "1");
    Cvar_RTV = register_cvar("
dmc_rtv", "1");
    Cvar_VoteSound = register_cvar("
dmc_votesound", "1");
    Cvar_RTVMin = register_cvar("
dmc_rtvmin", "2");
    Cvar_NomChance = register_cvar("
dmc_nomchance", "50");
    Cvar_Extend = register_cvar("
dmc_extend", "15");
    Cvar_StartRevoteTime = register_cvar("
dmc_startrevotetime", "5.0");
    Cvar_OnlyNextRound = register_cvar("
dmc_onlynextround", "1");
    Cvar_CountSound = register_cvar("
dmc_countsound", "1");
    Cvar_ChooseSound = register_cvar("
dmc_choosesound", "1");
    Cvar_Ad = register_cvar("
dmc_ad", "1");
    Cvar_LangMode = register_cvar("
dmc_langmode", "0");
    Cvar_StartButton = register_cvar("
dmc_startbutton", "1");
    
    server_cmd("
exec %s/dmc/dmc.cfg", ConfigsDir);
    server_exec();
    set_cvar_float("
mp_chattime", 120.0);
    
    register_concmd("
amx_dmc", "ShowInfo");
    
    VoteMenu = register_menuid("
VoteMenu");
    RevoteMenu = register_menuid("
RevoteMenu");
    register_menucmd(VoteMenu, 1023, "
VoteMenuKeys");
    register_menucmd(RevoteMenu, 1023, "
RevoteMenuKeys");
    SayText = get_user_msgid("
SayText");
    
    TimeLimit = get_cvar_num("
mp_timelimit");
    MaxRounds = get_cvar_num("
mp_maxrounds");
    oRounds = MaxRounds;
    
    if(get_pcvar_num(Cvar_LangMode) == 0)
    {
        Lang = 0;
    }
    else
    {
        Lang = -1;
    }
    
    StartButton = get_pcvar_num(Cvar_StartButton);
    
    if(StartButton < 1)
    {
        set_pcvar_num(Cvar_StartButton, 1);
    }
    
    if(StartButton > 1 && StartButton <= MaxSB)
    {
        new Check;
        Check = get_pcvar_num(Cvar_MaxMaps) + get_pcvar_num(Cvar_StartButton);
        
        if(Check > 9)
        {
            Check = MaxChoice - get_pcvar_num(Cvar_MaxMaps);
            if(0 != Check - StartButton)
            {
                Check -= StartButton;
                Check = -Check;
                set_pcvar_num(Cvar_MaxMaps, get_pcvar_num(Cvar_MaxMaps)-Check+1);
            }
        }
    }
    else if(StartButton > MaxSB)
    {
        StartButton = MaxSB;
        set_pcvar_num(Cvar_MaxMaps, 2);
    }
    else
    {
        StartButton = 1;
    }
    
    if(get_pcvar_num(Cvar_MaxMaps) > MaxChoice)
    {
        set_pcvar_num(Cvar_MaxMaps, MaxChoice);
    }
    
    if(get_pcvar_num(Cvar_MaxMaps) <= 1)
    {
        set_pcvar_num(Cvar_MaxMaps, 2);
    }
    
    if(get_pcvar_float(Cvar_ChangeSpeed) > MaxCSpeed)
    {
        set_pcvar_float(Cvar_ChangeSpeed, MaxCSpeed);
    }
    
    if(get_pcvar_float(Cvar_ChangeSpeed) < 1.0)
    {
        set_pcvar_float(Cvar_ChangeSpeed, 1.0);
    }
    
    if(MapCycle_Lines-get_pcvar_num(Cvar_MaxMaps) < 0)
    {
        new Error[64];
        formatex(Error, charsmax(Error), "
Only %d maps in %s file! (Min: %d)", MapCycle_Lines, MapCycle, get_pcvar_num(Cvar_MaxMaps));
        log_amx(Error);
        
        if(MapCycle_Lines > 1)
        {
            set_pcvar_num(Cvar_MaxMaps, MapCycle_Lines);
            formatex(Error, charsmax(Error), "
MaxMaps set %d", MapCycle_Lines);
            log_amx(Error);
        }
        else
        {
            Off = 1;
        }
    }
    
    if(TimeLimit == 0 && get_pcvar_num(Cvar_Mod) == 1)
    {
        Off = 1;
    }
    
    if(Off == 0)
    {
        register_event("
HLTV", "NewRound", "a", "1=0", "2=0");
        register_logevent("
SavePresentTime", 2, "0=World triggered", "1=Game_Commencing");
        register_logevent("
RestartRound", 2, "0=World triggered", "1&Restart_Round_");
        register_logevent("
RestartRound", 2, "0=World triggered", "1=Game_Commencing");
        
        if(get_pcvar_num(Cvar_Mod) == 0)
        {
            register_logevent("
RoundEnd", 2, "0=World triggered", "1=Round_End");
        }
        
        set_task(0.5, "
CheckTime", MapID-1, _, _, "b");
        
        if(get_pcvar_num(Cvar_Mod) == 0)
        {    
            register_concmd("
amx_dmc_maxrounds", "AddRound");
            
            if(MaxRounds < MinRounds)
            {
                server_cmd("
mp_maxrounds ^"%d^"", MinRounds);
            }
            
            server_cmd("
mp_timelimit 0");
            
            MaxRounds = get_cvar_num("
mp_maxrounds");
            oRounds = MaxRounds;
        }
        
        if(get_pcvar_num(Cvar_Mod) == 1)
        {
            server_cmd("
mp_maxrounds 0");
        }
    }
    
    get_mapname(MapName, charsmax(MapName));
    get_localinfo("
lastMap", LastMap, 31);
    
    set_task(random_float(0.1, 0.5), "
LoadMaps");
    set_task(random_float(0.1, 0.5), "
LoadVoteMaps");
    set_task(random_float(0.1, 0.5), "
SavePresentTime");
    
    if(get_pcvar_num(Cvar_Ad) == 1)
    {
        set_task(random_float(100.0, 200.0), "
AdvTime", MapID-10, _, _, "b");
    }
    
    toRTV = false;

    new Cmd[32];
    
    if(get_pcvar_num(Cvar_PlayedMaps) == 1)
    {
        for(new Num = 0; Num < sizeof MapMenuCommands; Num++)
        {
            format(Cmd, charsmax(Cmd), "
say %s", MapMenuCommands[Num]);
            register_clcmd(Cmd, "
ShowMapMenu");
        }
    }
    
    for(new Num = 0; Num < sizeof NextMapCommands; Num++)
    {
        format(Cmd, charsmax(Cmd), "
say %s", NextMapCommands[Num]);
        register_clcmd(Cmd, "
ShowNextMap");
    }
    
    for(new Num = 0; Num < sizeof CurrentMapCommands; Num++)
    {
        format(Cmd, charsmax(Cmd), "
say %s", CurrentMapCommands[Num]);
        register_clcmd(Cmd, "
ShowCurrentMap");
    }
    
    for(new Num = 0; Num < sizeof TimeLeftCommands; Num++)
    {
        format(Cmd, charsmax(Cmd), "
say %s", TimeLeftCommands[Num]);
        register_clcmd(Cmd, "
ShowTimeLeft");
    }
    
    for(new Num = 0; Num < sizeof AdminCommands; Num++)
    {
        format(Cmd, charsmax(Cmd), "
say %s", AdminCommands[Num]);
        register_clcmd(Cmd, "
StartVote");
    }
    
    if(get_pcvar_num(Cvar_RTV) == 1)
    {
        for(new Num = 0; Num < sizeof RTVCommands; Num++)
        {
            format(Cmd, charsmax(Cmd), "
say %s", RTVCommands[Num]);
            register_clcmd(Cmd, "
RockTheVote");
        }
    }
    
    if(get_pcvar_num(Cvar_Nomination) == 1)
    {
        for(new Num = 0; Num < sizeof NomCommands; Num++)
        {
            format(Cmd, charsmax(Cmd), "
say %s", NomCommands[Num]);
            register_clcmd(Cmd, "
ShowNomMenu");
        }
    }
}
public AddRound(id) {
    if(get_user_flags(id) & RoundFlag)
    {
        new sRound[32], RoundNum;
        read_args(sRound, charsmax(sRound));
        remove_quotes(sRound);
        
        RoundNum = str_to_num(sRound);
        
        MaxRounds = RoundNum+Rounds;
        set_cvar_num("
mp_maxrounds", get_cvar_num("mp_maxrounds")+RoundNum);
    }
}
public SavePresentTime()
{    
    new Hour[32], Minute[32], Second[32];
    format_time(Hour, sizeof Hour - 1, "
%H");
    format_time(Minute, sizeof Minute - 1, "
%M");
    format_time(Second, sizeof Second  - 1, "
%S");
    ElapsedTime[0] = str_to_num(Second);
    ElapsedTime[1] = str_to_num(Minute);
    ElapsedTime[2] = str_to_num(Hour);
    RTVTime[2] = str_to_num(Hour);
    RTVTime[1] = str_to_num(Minute)+get_pcvar_num(Cvar_RTVMinute);
    RTVTime[0] = str_to_num(Second);
    
    if(RTVTime[1] >= 60)
    {
        RTVTime[1] -= 60;
        RTVTime[2]++;
    }
}
public plugin_end()
{
    set_localinfo("
lastMap", MapName);
}
public AdvTime()
{
    print_color(0, "
%%L", Prefix, Lang, "ADV", PLUGIN, VERSION);
}
public RestartRound() {
    if(get_pcvar_num(Cvar_Mod) == 1)
        server_cmd("
mp_timelimit %d", TimeLimit);
    else
    {
        server_cmd("
mp_maxrounds %d", get_cvar_num("mp_maxrounds")+oRounds+Rounds);
        MaxRounds = oRounds+Rounds;
    }
    
    remove_task(MapID+8123);
    remove_task(MapID+1);
    remove_task(MapID+211);
    remove_task(MapID+2);
    remove_task(MapID+3);
    remove_task(MapID+33);
    NeedRV = false;
    ChangeMap = false;
    Begined = false;
    BeginCounter = 0;
    MapCounter = 0;
    Voted = false;
    Revoted = false;
    inProcess = false;
    AllVotes = 0;
    AllRevotes = 0;
    Started = 0;
    
    new Num;
    
    for(Num = 0; Num < 32; Num++)
    {
        if(!is_user_connected(Num))
        {
            continue;
        }
        
        AlreadyNom[Num] = false;
        PlayerMap[Num] = 0;
        PlayerVoted[Num] = false;
        PlayerRevoted[Num] = false;
    }
    
    for(Num = 0; Num < Nom; Num++)
    {
        NomMaps[Num] = "";
    }
    
    for(Num = 0; Num < Max; Num++)
    {
        Nomed[Num] = 0;
    }
    
    for(Num = 0; Num < get_pcvar_num(Cvar_MaxMaps); Num++)
    {
        MapNames[Num] = "";
        MapVote[Num] = 0;
    }
    
    RTV = 0;
    Nom = 0;
    LoadVoteMaps();
    LoadNomMaps();
    Next = "";
    set_task(get_pcvar_float(Cvar_MenuDestroyTime)+1.0, "
VotedMapN", MapID+777);
    SavePresentTime();
}
public NewRound() {
    if(get_pcvar_num(Cvar_Mod) == 1)
    {
        if(ChangeMap)
        {
            if(isValidMap(Next))
            {
                ChangeLevel();
            }
        }
    }
    else if(get_pcvar_num(Cvar_Mod) == 0)
    {
        if(0 >= MaxRounds-Rounds)
        {
            if(ChangeMap)
            {
                if(isValidMap(Next))
                {
                    ChangeLevel();
                }
            }
        }
    }
}
public RoundEnd()
{
    if(MaxRounds-Rounds > 0 && Started == 1)
    {
        Rounds++;
    }
    if(Started == 0)
    {
        Started = 1;
    }
}
public StartVote(id)
{
    if(get_user_flags(id) & StartVoteFlag)
    {
        if(!inProcess || !Voted || !Revoted || !ChangeMap || Off == 0 || !Begined)
        {
            NeedRV = false;
            new String[32];
            float_to_str(get_pcvar_float(Cvar_WaitVoteMenuTime), String, 2);
            replace_all(String, 2, "
.", "");
            Begined = true;
            inProcess = true;
            
            if(get_pcvar_num(Cvar_Mod) == 1)
            {
                server_cmd("
mp_timelimit 0");
            }
            else if(get_pcvar_num(Cvar_Mod) == 0)
            {
                Rounds = MaxRounds;
            }
            
            VoteMod = 2;
            
            if(get_pcvar_num(Cvar_HudMod) == 1)
            {
                remove_task(MapID+8123);
                BeginCounter = str_to_num(String);
                VoteCounter();
            }
            else if(get_pcvar_num(Cvar_HudMod) == 0)
            {
                set_task(get_pcvar_float(Cvar_WaitVoteMenuTime), "
StartMapChooser", MapID+3);
                set_hudmessage(R, G, B, -1.0, 0.20, 0, 6.0, get_pcvar_float(Cvar_WaitVoteMenuTime));
                ShowSyncHudMsg(0, sHudObj, "
%L", Lang, "VOTE2", String);
            }
        }
    }
}
public VoteCounter()
{
    if(BeginCounter > 0)
    {
        new String[32];
        num_to_str(BeginCounter, String, 2);
        
        if(get_pcvar_num(Cvar_CountSound) == 1)
        {
            new CountSound[32];
            num_to_word(BeginCounter, CountSound, 31);
            
            if(get_pcvar_num(Cvar_VoteSound) == 1)
                client_cmd(0, "
spk ^"fvox/%s^"", CountSound);
        }
        
        set_hudmessage(R, G, B, -1.0, 0.20, 0, 0.1, CHUD);
        
        if(VoteMod == 4)
        {
            ShowSyncHudMsg(0, sHudObj, "
%L", Lang, "VOTE4", String);
        }
        else if(VoteMod == 3)
        {
            ShowSyncHudMsg(0, sHudObj, "
%L", Lang, "VOTE3", String);
        }
        else if(VoteMod == 2)
        {
            ShowSyncHudMsg(0, sHudObj, "
%L", Lang, "VOTE2", String);
        }
        else if(VoteMod == 1)
        {
            ShowSyncHudMsg(0, sHudObj, "
%L", Lang, "VOTE1", String);
        }
        
        BeginCounter--;
        set_task(1.0, "
VoteCounter", MapID+8123);
    }
    else
    {
        if(NeedRV)
        {
            StartRevote();
        }
        else
        {
            StartMapChooser();
        }
    }
}
public RockTheVote(id)
{
    new Hour[32], Minute[32], Time[2];
    format_time(Hour, sizeof Hour - 1, "
%H");
    format_time(Minute, sizeof Minute - 1, "
%M");
    Time[0] = str_to_num(Hour);
    Time[1] = str_to_num(Minute);
    
    if(Time[0] > RTVTime[2]
    || Time[0] == RTVTime[2] && Time[1] >= RTVTime[1])
    toRTV = true;
    
    if(PlayerRTV[id] || Voted || inProcess || !toRTV || Off == 1)
    {
        if(!toRTV)
        {
            if(RTVTime[2] > Time[0])
            {
                print_color(id, "
%%L", Prefix, Lang, "RTV2", (RTVTime[1]+60)-Time[1]);
            }
            else
            {
                print_color(id, "
%%L", Prefix, Lang, "RTV2", RTVTime[1]-Time[1]);
            }
        }
        
        if(PlayerRTV[id])
        {
            print_color(id, "
%%L", Prefix, Lang, "RTV1");
        }
        
        return PLUGIN_HANDLED;
    }
    
    PlayerRTV[id] = true;
    RTV++;
    
    new Players[32], Num;
    get_players(Players, Num, "
c");
    
    if(RTV >= Num/get_pcvar_num(Cvar_RTVMin))
    {
        new String[32];
        float_to_str(get_pcvar_float(Cvar_WaitVoteMenuTime), String, 2);
        replace_all(String, 2, "
.", "");
        Begined = true;
        inProcess = true;
        
        if(get_pcvar_num(Cvar_Mod) == 1)
        {
            server_cmd("
mp_timelimit 0");
        }
        else if(get_pcvar_num(Cvar_Mod) == 0)
        {
            Rounds = MaxRounds;
        }
        
        VoteMod = 1;
        
        if(get_pcvar_num(Cvar_HudMod) == 1)
        {
            remove_task(MapID+8123);
            BeginCounter = str_to_num(String);
            VoteCounter();
        }
        else if(get_pcvar_num(Cvar_HudMod) == 0)
        {
            set_task(get_pcvar_float(Cvar_WaitVoteMenuTime), "
StartMapChooser", MapID+3);
            set_hudmessage(R, G, B, -1.0, 0.20, 0, 6.0, get_pcvar_float(Cvar_WaitVoteMenuTime));
            ShowSyncHudMsg(0, sHudObj, "
%L", Lang, "VOTE1", String);
        }
    }
    else
    {
        print_color(0, "
%%L", Prefix, Lang, "RTV3", (Num/get_pcvar_num(Cvar_RTVMin))-RTV);
    }
    
    return PLUGIN_HANDLED;
}
public Extend()
{
    NeedRV = false;
    ChangeMap = false;
    Begined = false;
    Voted = false;
    Revoted = false;
    inProcess = false;
    AllVotes = 0;
    AllRevotes = 0;
    
    new Num;
    
    for(Num = 0; Num < 32; Num++)
    {
        if(!is_user_connected(Num))
        {
            continue;
        }
        
        AlreadyNom[Num] = false;
        PlayerMap[Num] = 0;
        PlayerVoted[Num] = false;
        PlayerRevoted[Num] = false;
    }
    
    for(Num = 0; Num < Nom; Num++)
    {
        NomMaps[Num] = "";
    }
    
    for(Num = 0; Num < Max; Num++)
    {
        Nomed[Num] = 0;
    }
    
    for(Num = 0; Num < get_pcvar_num(Cvar_MaxMaps); Num++)
    {
        MapNames[Num] = "";
        MapVote[Num] = 0;
    }
    
    RTV = 0;
    Nom = 0;
    LoadVoteMaps();
    LoadNomMaps();
    Next = "";
    set_task(get_pcvar_float(Cvar_MenuDestroyTime)+1.0, "
VotedMapN", MapID+777);
}
public VotedMapN()
{
    VotedMap = "";
}
public CheckTime()
{
    static Time[3];
    Time[0] = get_timeleft();
    Time[1] = Time[0] / 60;
    Time[2] = Time[1] / 60;
    Time[0] = Time[0] - Time[1] * 60;
    Time[1] = Time[1] - Time[2] * 60;
    
    if(get_pcvar_num(Cvar_Mod) == 1)
    {
        if(Time[1] <= get_pcvar_num(Cvar_VoteVariable) && !Begined && !inProcess)
        {
            new String[32];
            float_to_str(get_pcvar_float(Cvar_WaitVoteMenuTime), String, 2);
            replace_all(String, 2, "
.", "");
            
            VoteMod = 3;
            
            if(get_pcvar_num(Cvar_HudMod) == 1)
            {
                remove_task(MapID+8123);
                BeginCounter = str_to_num(String);
                VoteCounter();
            }
            else if(get_pcvar_num(Cvar_HudMod) == 0)
            {
                set_task(get_pcvar_float(Cvar_WaitVoteMenuTime), "
StartMapChooser", MapID+3);
                set_hudmessage(R, G, B, -1.0, 0.20, 0, 6.0, get_pcvar_float(Cvar_WaitVoteMenuTime));
                ShowSyncHudMsg(0, sHudObj, "
%L", Lang, "VOTE3", String);
            }
        
            Begined = true;
            inProcess = true;
        }
    
        if(Time[0] <= 3 && Time[1] == 0 && Time[2] == 0)
        {
            server_cmd("
mp_timelimit 0");
            if(!ChangeMap && Voted && !inProcess && !Revoted
            || !ChangeMap && Revoted && !inProcess && !Voted)
            {
                if(get_pcvar_num(Cvar_OnlyNextRound) == 1)
                {
                    print_color(0, "
%%L", Prefix, Lang, "MCAR");
                    set_cvar_string("
amx_nextmap", Next);
                    ChangeMap = true;
                }
                else if(get_pcvar_num(Cvar_OnlyNextRound) == 0)
                {
                    ChangeMap = true;
                    set_cvar_string("
amx_nextmap", Next);
                    ChangeLevel();
                }
            }
        }
    }
    else if(get_pcvar_num(Cvar_Mod) == 0)
    {
        if(Rounds == MaxRounds-get_pcvar_num(Cvar_VoteVariable) && !Begined && !inProcess)
        {
            new String[32];
            float_to_str(get_pcvar_float(Cvar_WaitVoteMenuTime), String, 2);
            replace_all(String, 2, "
.", "");
            
            VoteMod = 3;
            
            if(get_pcvar_num(Cvar_HudMod) == 1)
            {
                remove_task(MapID+8123);
                BeginCounter = str_to_num(String);
                VoteCounter();
            }
            else if(get_pcvar_num(Cvar_HudMod) == 0)
            {
                set_task(get_pcvar_float(Cvar_WaitVoteMenuTime), "
StartMapChooser", MapID+3);
                set_hudmessage(R, G, B, -1.0, 0.20, 0, 6.0, get_pcvar_float(Cvar_WaitVoteMenuTime));
                ShowSyncHudMsg(0, sHudObj, "
%L", Lang, "VOTE3", String);
            }
            
            Begined = true;
            inProcess = true;
        }
        
        if(Rounds >= MaxRounds && !ChangeMap && Voted
        || Rounds >= MaxRounds && !ChangeMap && Revoted)
        {
            print_color(0, "
%%L", Prefix, Lang, "MCAR");
            set_cvar_string("
amx_nextmap", Next);
            ChangeMap = true;
        }
    }
    
    if(!toRTV)
    {
        new Hour[32], Minute[32];
        format_time(Hour, sizeof Hour - 1, "
%H");
        format_time(Minute, sizeof Minute - 1, "
%M");
        Time[2] = str_to_num(Hour);
        Time[1] = str_to_num(Minute);
        
        if(RTVTime[2] == Time[2] && RTVTime[1]+get_pcvar_num(Cvar_RTVMinute) <= Time[1])
        {
            toRTV = true;
        }
    }
}
public StartMapChooser()
{
    remove_task(MapID+3);
    ChangeMap = false;
    Voted = false;
    Revoted = false;
    MapCounter = get_pcvar_num(Cvar_VoteCounter);
    Counter();
    VoteMod = 0;
    if(get_pcvar_num(Cvar_VoteSound) == 1)
    {
        client_cmd(0, "
spk Gman/Gman_Choose%i", random_num(1, 2));
    }
}
public Change()
{
    if(ChangeMap)
    {
        server_cmd("
changelevel ^"%s^"", Next);
    }
}
public ShowInfo(id)
{
    if(get_user_flags(id) & InfoFlag)
    {
        client_print(id, print_console, "
* ------------");
        client_print(id, print_console, "
* %v%*", PLUGIN, VERSION);
        client_print(id, print_console, "
* ------------");
        client_print(id, print_console, "
Last map: %s", LastMap);
        client_print(id, print_console, "
Next map: %s", Next);
        client_print(id, print_console, "
Total maps: %d", NomNum);
        client_print(id, print_console, "
* ------------");
        client_print(id, print_console, "
Original timeleft: %d", TimeLimit);
        client_print(id, print_console, "
Max Rounds: %d", oRounds);
        client_print(id, print_console, "
* ------------");
        client_print(id, print_console, "
Total played count: %d", PlayedCount);
        client_print(id, print_console, "
* ------------");
    }
}
public ShowTimeLeft()
{
    if(get_pcvar_num(Cvar_Mod) == 1)
    {
        static Time[3];
        Time[0] = get_timeleft();
        Time[1] = Time[0] / 60;
        Time[2] = Time[1] / 60;
        Time[0] = Time[0] - Time[1] * 60;
        Time[1] = Time[1] - Time[2] * 60;
        if(ChangeMap && Voted && Begined && !Revoted || ChangeMap && Revoted && Begined && !Voted)
        {
            print_color(0, "
%s!%L!!t-!y:!t-", Prefix, Lang, "TL");
        }
        else
        {
            if(Time[2] > 0 && Time[1] > 0 && Time[0] > 0)
                print_color(0, "
%s!%L!%d%!y:!t%02d!y:!t%02d", Prefix, Lang, "TL", Time[2], Time[1], Time[0]);
            else if(Time[1] > 0 && Time[0] > 0)
                print_color(0, "
%s!%L!%02d!y:!t%02d", Prefix, Lang, "TL", Time[1], Time[0]);
            else
                print_color(0, "
%s!%L!!t-!y:!t-", Prefix, Lang, "TL");
        }
    }
    else if(get_pcvar_num(Cvar_Mod) == 0)
    {
        print_color(0, "
%s!%L", Prefix, Lang, "RM", MaxRounds-Rounds);
    }
}
public ShowNextMap()
{
    new Status[2][32];
    formatex(Status[0], 31, "
%L", Lang, "NYT");
    formatex(Status[1], 31, "
%L", Lang, "VIP");
    if(isValidMap(Next))
    print_color(0, "
%s!%L!%s", Prefix, Lang, "NM", Next);
    else
    {
        if(inProcess)
        {
            print_color(0, "
%s!%L!%s", Prefix, Lang, "NM", Status[1]);
        }
        else
        {
            print_color(0, "
%s!%L!%s", Prefix, Lang, "NM", Status[0]);
        }
    }
}
public ShowCurrentMap()
{
    print_color(0, "
%s!%L", Prefix, Lang, "CM", MapName);
}
public Counter()
{
    if(MapCounter < 1)
    {
        Voted = true;
        
        inProcess = false;
        
        CheckVotes();
        
        for(new Num; Num < 32; Num++)
        {
            if(!is_user_connected(Num))
                continue;
                
            ShowVoteMenu(Num);
        }
    }
    else
    {
        MapCounter--;
        
        set_task(1.0, "
Counter", MapID+1);
        
        for(new Num; Num < 32; Num++)
        {
            if(!is_user_connected(Num))
                continue;
                
            ShowVoteMenu(Num);
        }
    }
}
public NextMap()
{
    remove_task(MapID-4);
    
    if(!NeedRV)
    {
        ShowNextMap();
    }
    
    set_task(get_pcvar_float(Cvar_MenuDestroyTime), "
DestroyVoteMenu", MapID-4);
}
public DestroyVoteMenu()
{
    for(new Num; Num < 32; Num++)
    {
        if(!is_user_connected(Num))
            continue;
            
        show_menu(Num, 0, "
^n", 1);
    }
}
public ShowVoteMenu(id)
{    
    if(equal(VotedMap, MapName))
    {
        DestroyVoteMenu();
        return;
    }
    
    new Menu[512], String[128], Key, MapPercent[MaxChoice];
    
    AllVotes = 0;
    
    for(new All; All < get_pcvar_num(Cvar_MaxMaps); All++)
    {
        AllVotes += MapVote[All];
    }
    
    formatex(String, 127, "
%L", Lang, "CHONM", AllVotes);
    add(Menu, 511, String);
    
    for(new Num; Num < get_pcvar_num(Cvar_MaxMaps); Num++)
    {
        if(MapVote[Num] > 0)
        MapPercent[Num] = ((MapVote[Num]*100)/(AllVotes));
        if(equal(MapName, MapNames[Num]))
        formatex(String, 127, "
%L", Lang, "MOP5", Num+StartButton, MapNames[Num], MapVote[Num], MapPercent[Num]);
        else
        formatex(String, 127, "
%L", Lang, "MOPD", Num+StartButton, MapNames[Num], MapVote[Num], MapPercent[Num]);
        add(Menu, 511, String);
    }
    
    if(Voted)
    formatex(String, 127, "
%L", Lang, "MNM", Next);
    else if(!Revoted && !Voted && MapCounter <= 0 && NeedRV)
    formatex(String, 127, "
%L", Lang, "MNRE");
    else
    formatex(String, 127, "
%L", Lang, "MCSL", MapCounter);
    
    add(Menu, 511, String);
    
    Key = (-1^(-1<<(get_pcvar_num(Cvar_MaxMaps)+StartButton)));
    
    show_menu(id, Key, Menu, -1, "
VoteMenu");
}
public VoteMenuKeys(id, Key)
{
    if(PlayerVoted[id] || Voted)
    {
        if(PlayerVoted[id])
        {
            print_color(id, "
%%L", Prefix, Lang, "AVO");
        }
        return;
    }
    
    if(!Begined || NeedRV)
    {
        show_menu(id, 0, "
^n", 1);
        return;
    }
    
    new PlayerName[32];
    get_user_name(id, PlayerName, 31);
    
    Key -= StartButton-1;
    if(Key < get_pcvar_num(Cvar_MaxMaps) && Key > -1)
    {
        PlayerMap[id] = Key;
        PlayerVoted[id] = true;
        print_color(0, "
%%L", Prefix, Lang, "PCHO", PlayerName, MapNames[Key]);
        MapVote[Key]++;
        if(get_pcvar_num(Cvar_ChooseSound) == 1)
        {
            client_cmd(0, "
spk buttons/lightswitch2");
        }
    }
    
    ShowVoteMenu(id);
}
public LoadVoteMaps()
{
    new Line[128], Map[32], Len, Used[Max], Loaded, File, Found;
    
    File = fopen(MapCycle, "
rt");
    
    if(File)
    {
        
        for(new lNum; lNum < Max; lNum++)
        {
            Found = 0;
            
            new RandomMap = random(MapCycle_Lines);
            read_file(MapCycle, RandomMap, Line, 127, Len);
            
            parse(Line, Map, 31);
            
            for(new mc; mc < MaxChoice; mc++)
            {
                if(equali(Map, MapNames[mc]))
                {
                    Found = 1;
                }
            }
            
            if(Found == 1 || equali(Map, MapName))
            {
                continue;
            }
            
            if(Used[RandomMap] == 0 && Loaded < get_pcvar_num(Cvar_MaxMaps)-1 && isValidMap(Map))
            {
                Used[RandomMap] = 1;
                copy(MapNames[Loaded], sizeof Map - 1, Map);
                Loaded++;
            }
        }
        
    }
    
    fclose(File);
    
    MapNames[get_pcvar_num(Cvar_MaxMaps)-1] = MapName;
    set_task(0.1, "
LoadNomMaps", MapID+69);
}
public LoadNomMaps()
{
    new Line[128], Map[32], File, Found;
    
    File = fopen(MapCycle, "
rt");
    
    while(!feof(File))
    {
        fgets(File, Line, charsmax(Line));
            
        parse(Line, Map, 31);
        
        for(new nn; nn < NomNum; nn++)
        {
            if(equali(Map, NomMaps[nn]))
            {
                Found = 1;
            }
        }
        
        if(Found == 1)
        {
            continue;
        }
        
        if(NomNum < MapCycle_Lines && isValidMap(Map))
        {
            copy(NomMaps[NomNum], sizeof Map - 1, Map);
            NomNum++;
        }
    }
    
    fclose(File);
}
public ShowMapMenu(id)
{
    new Menu, MenuLine[128], MapDatas[2][32], String[32];
    formatex(MenuLine, 127, "
%L", Lang, "MPNM");
    Menu = menu_create(MenuLine, "
MapKey");
    
    for(new MapNum; MapNum < MapFile_Lines-1; MapNum++)
    {
        parse(Maps[MapNum], MapDatas[0], 31, MapDatas[1], 31);
        formatex(MenuLine, 127, "
%L", Lang, "PMPM", MapDatas[0], MapDatas[1]);
        num_to_str(MapNum, String, 2);
        menu_additem(Menu, MenuLine, String);
    }
    
    formatex(MenuLine, 127, "
%L", Lang, "MNEXT");
    menu_setprop(Menu, MPROP_NEXTNAME, MenuLine);
    formatex(MenuLine, 127, "
%L", Lang, "MEXIT");
    menu_setprop(Menu, MPROP_EXITNAME, MenuLine);
    formatex(MenuLine, 127, "
%L", Lang, "MBACK");
    menu_setprop(Menu, MPROP_BACKNAME, MenuLine);
    menu_setprop(Menu, MPROP_PERPAGE, PMPage);
    menu_display(id, Menu);
}
public MapKey(id, Menu, Item)
{
    new MenuNum[2], Data[2][32], Key;
    menu_item_getinfo(Menu, Item, MenuNum[0], Data[0], charsmax(Data), Data[1], charsmax(Data), MenuNum[1]);
    
    Key = str_to_num(Data[0]);
    
    if(Item == MENU_EXIT)
    {
        menu_destroy(Menu);
        return;
    }
    
    new MapDatas[2][32];
    parse(Maps[Key], MapDatas[0], 31, MapDatas[1], 31);
    
    print_color(id, "
%%L", Prefix, Lang, "MNP", MapDatas[0], MapDatas[1]);
}
public ShowNomMenu(id)
{    
    if(Nom >= get_pcvar_num(Cvar_MaxMaps)-1)
    {
        print_color(id, "
%%L", Prefix, Lang, "NOMT");
        return;
    }
    if(AlreadyNom[id])
    {
        print_color(id, "
%%L", Prefix, Lang, "NOMN");
        return;
    }
    if(inProcess || Voted || Revoted)
    {
        return;
    }
    
    new Menu, MenuLine[128], Already;
    formatex(MenuLine, 127, "
%L", Lang, "NOMM");
    Menu = menu_create(MenuLine, "
NomKey");
    
    for(new MapNum; MapNum < MapCycle_Lines; MapNum++)
    {
        if(Nomed[MapNum] == 1)
            continue;
            
        Already = 0;
        
        for(new mc; mc < MaxChoice; mc++)
        {
            if(equali(NomMaps[MapNum], MapNames[mc]))
            {
                Already = 1;
            }
        }
        
        if(Already == 1)
            continue;
            
        if(equali(NomMaps[MapNum], MapName))
            continue;
            
        if(!isValidMap(NomMaps[MapNum]))
            continue;
        
        formatex(MenuLine, 127, "
%L", Lang, "NOM1", NomMaps[MapNum]);
        menu_additem(Menu, MenuLine, NomMaps[MapNum]);
    }
    
    formatex(MenuLine, 127, "
%L", Lang, "MNEXT");
    menu_setprop(Menu, MPROP_NEXTNAME, MenuLine);
    formatex(MenuLine, 127, "
%L", Lang, "MEXIT");
    menu_setprop(Menu, MPROP_EXITNAME, MenuLine);
    formatex(MenuLine, 127, "
%L", Lang, "MBACK");
    menu_setprop(Menu, MPROP_BACKNAME, MenuLine);
    menu_display(id, Menu);
}
public NomKey(id, Menu, Item)
{
    if(Nom > get_pcvar_num(Cvar_MaxMaps)-1)
    {
        print_color(id, "
%%L", Prefix, Lang, "NOMT");
        return PLUGIN_HANDLED;
    }
    if(AlreadyNom[id])
    {
        print_color(id, "
%%L", Prefix, Lang, "NOMN");
        return PLUGIN_HANDLED;
    }
    if(inProcess || Voted)
    {
        return PLUGIN_HANDLED;
    }
    
    new MenuNum[2], Data_1[32], Data_2[32], PlayerName[32];
    menu_item_getinfo(Menu, Item, MenuNum[0], Data_1, charsmax(Data_1), Data_2, charsmax(Data_2), MenuNum[1]);
    
    if(Item == MENU_EXIT)
    {
        menu_destroy(Menu);
        return PLUGIN_HANDLED;
    }
            
    new Already = 0;

    for(new mc; mc < MaxChoice; mc++)
    {
        if(equali(Data_1, MapNames[mc]))
        {
            Already = 1;
        }
    }
    
    if(Already == 1 || !isValidMap(Data_1) || Nomed[Nom] == 1)
    return PLUGIN_HANDLED;
    
    get_user_name(id, PlayerName, charsmax(PlayerName));
    
    print_color(0, "
%%L", Prefix, Lang, "NOMC", PlayerName, Data_1);
    
    if(get_pcvar_num(Cvar_NomChance) >= (random_num(1,100)))
    {
        MapNames[Nom] = Data_1;
    }
    
    MapNames[Nom] = Data_1;
    Nomed[Nom] = 1;
    Nom++;
    AlreadyNom[id] = true;
    
    return PLUGIN_HANDLED;
}
public LoadMapMenu()
{
    new Line[64], File, Len;
    
    File = fopen(MapFile, "
rt");
    
    if(File)
    {
        for(new MapNum; MapNum < MapFile_Lines; MapNum++)
        {
            read_file(MapFile, MapNum, Line, 63, Len);
            
            if(Line[0] == ';' || strlen(Line) < 2)
                continue;
                
            remove_quotes(Line);
            
            copy(Maps[MapNum], sizeof Line - 1, Line);
        }
    }
    
    fclose(File);
}
public LoadMaps()
{
    remove_task(MapID);
    
    new Line[64], File, MapDatas[2][32], LineNum, MapNum, bool:Found;
    File = fopen(MapFile, "
rt");
    
    while(!feof(File))
    {
        fgets(File, Line, charsmax(Line));
        
        if(Line[0] == ';' || strlen(Line) < 2)
            continue;
            
        parse(Line, MapDatas[0], 31, MapDatas[1], 31);
        
        PlayedCount += str_to_num(MapDatas[1]);
        
        if(equal(MapDatas[0], MapName))
        {
            MapNum = str_to_num(MapDatas[1])+1;
            format(Line, sizeof Line - 1, "
^"%s^" ^"%d^"", MapName, MapNum);
            write_file(MapFile, Line, LineNum);
            Found = true;
        }
        
        LineNum++;
    }
    
    fclose(File);
    
    if(!Found)
    {
        NewMap();
    }
    
    set_task(0.5, "
LoadMapMenu", MapID);
}
public NewMap()
{
    new Line[32], File;
    File = fopen(MapFile, "
at+");
    formatex(Line, sizeof Line - 1, "
^"%s^" ^"%d^"^n", MapName, 1);
    fprintf(File, Line);
    fclose(File);
}
public StartRevoteTime() 
{
    new String[32];
    float_to_str(get_pcvar_float(Cvar_WaitRevoteMenuTime), String, 2);
    replace_all(String, 2, "
.", "");
    VoteMod = 4;
    if(get_pcvar_num(Cvar_HudMod) == 1)
    {
        remove_task(MapID+8123);
        BeginCounter = str_to_num(String);
        VoteCounter();
    }
    else if(get_pcvar_num(Cvar_HudMod) == 0)
    {
        set_task(get_pcvar_float(Cvar_StartRevoteTime), "
StartRevote", MapID+33);
        set_hudmessage(R, G, B, -1.0, 0.20, 0, 6.0, get_pcvar_float(Cvar_WaitVoteMenuTime));
        ShowSyncHudMsg(0, sHudObj, "
%L", Lang, "VOTE4", String);
    }
    
    inProcess = true;
}
public StartRevote() 
{
    Voted = false;
    Begined = true;
    MapCounter = get_pcvar_num(Cvar_VoteCounter);
    ReCounter();
    if(get_pcvar_num(Cvar_VoteSound) == 1)
        client_cmd(0, "
spk Gman/Gman_Choose%i", random_num(1, 2));
}
public ShowRevoteMenu(id)
{
    if(equal(VotedMap, MapName))
    {
        DestroyVoteMenu();
        return;
    }
    
    new Menu[512], String[128], Key, MapPercent[MaxChoice];
    
    AllRevotes = 0;
    
    for(new All; All < 2; All++)
    {
        AllRevotes += RevoteCounts[All];
    }
    
    formatex(String, 127, "
%L", Lang, "CHONM", AllRevotes);
    add(Menu, 511, String);
    
    for(new Num; Num < 2; Num++)
    {
        if(RevoteCounts[Num] > 0)
        MapPercent[Num] = ((RevoteCounts[Num]*100)/(AllRevotes));
        formatex(String, 127, "
%L", Lang, "MOPD", Num+StartButton, MapRevote[Num], RevoteCounts[Num], MapPercent[Num]);
        add(Menu, 511, String);
    }
    
    if(!Revoted)
    formatex(String, 127, "
%L", Lang, "MCSL", MapCounter);
    else
    formatex(String, 127, "
%L", Lang, "MNM", Next);
    
    add(Menu, 511, String);
    
    Key = (-1^(-1<<(1+StartButton)));
    
    show_menu(id, Key, Menu, -1, "
RevoteMenu");
}
public RevoteMenuKeys(id, Key)
{
    if(PlayerRevoted[id] || Revoted)
    {
        if(PlayerVoted[id])
            print_color(id, "
%%L", Prefix, Lang, "AVO");
        
        ShowRevoteMenu(id);
        return;
    }
    
    if(!Begined)
    {
        show_menu(id, 0, "
^n", 1);
        return;
    }
    
    new PlayerName[32];
    get_user_name(id, PlayerName, 31);
    
    Key -= StartButton-1;
    
    if(Key <= 2 && Key > -1)
    {
        PlayerMap[id] = Key;
        PlayerRevoted[id] = true;
        print_color(0, "
%%L", Prefix, Lang, "PCHO", PlayerName, MapRevote[Key]);
        RevoteCounts[Key]++;
        if(get_pcvar_num(Cvar_ChooseSound) == 1)
        {
            client_cmd(0, "
spk buttons/lightswitch2");
        }
    }
    
    ShowRevoteMenu(id);
}
public ReCounter()
{
    if(MapCounter < 1)
    {
        Revoted = true;
        
        inProcess = false;
        
        CheckRevotes();
        
        for(new Num; Num < 32; Num++)
        {
            if(!is_user_connected(Num))
                continue;
                
            ShowRevoteMenu(Num);
        }
    }
    else
    {
        MapCounter--;
        
        set_task(1.0, "
ReCounter", MapID+211);
        
        for(new Num; Num < 32; Num++)
        {
            if(!is_user_connected(Num))
                continue;
                
            ShowRevoteMenu(Num);
        }
    }
}
public client_disconnect(id)
{
    if(PlayerRTV[id])
    {
        RTV--;
        PlayerRTV[id] = false;
    }
    
    if(PlayerVoted[id])
    {
        MapVote[PlayerMap[id]]--;
        PlayerVoted[id] = false;
    }
    
    if(PlayerRevoted[id])
    {
        RevoteCounts[PlayerMap[id]]--;
        PlayerRevoted[id] = false;
    }
    
    PlayerMap[id] = 0;
    
}
stock ChangeLevel()
{
    set_task(get_pcvar_float(Cvar_ChangeSpeed), "
Change", MapID+2);
    message_begin(MSG_ALL, SVC_INTERMISSION);
    message_end();
}
stock print_color(const id, const input[], any:...)
{
    new Count = 1, Players[32];
    static Msg[191];
    vformat(Msg, 190, input, 3);
    
    replace_all(Msg, 190, "
!g", "^4");
    replace_all(Msg, 190, "
!y", "^1");
    replace_all(Msg, 190, "
!t", "^3");

    if(id) Players[0] = id; else get_players(Players, Count, "
ch");
    {
        for (new i = 0; i < Count; i++)
        {
            if (is_user_connected(Players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, SayText, _, Players[i]);
                write_byte(Players[i]);
                write_string(Msg);
                message_end();
            }
        }
    }
    return PLUGIN_HANDLED;
}
stock CheckVotes() {
    
    if(AllVotes == 0)
    {
        Revoted = false;
        Next = MapNames[0];
        set_cvar_string("
amx_nextmap", Next);
        NextMap();
        return PLUGIN_HANDLED;
    }
    
    new VoteNum_1 = 0;
    
    for(new Num = 0; Num < get_pcvar_num(Cvar_MaxMaps); ++Num)
    {
        if(MapVote[VoteNum_1] < MapVote[Num])
        {
            VoteNum_1 = Num;
        }
    }
    
    if((MapVote[VoteNum_1]*100/AllVotes) >= get_pcvar_num(Cvar_VotePercentMin))
    {
        Revoted = false;
        Next = MapNames[VoteNum_1];
        VotedMap = Next;
        set_cvar_string("
amx_nextmap", Next);
        
        if(get_pcvar_num(Cvar_Mod) == 1)
        {
            if(equali(Next, MapName))
            {
                new Hour[32], Minute[32], Second[32], pTime[3];
                format_time(Hour, sizeof Hour - 1, "
%H");
                format_time(Minute, sizeof Minute - 1, "
%M");
                format_time(Second, sizeof Second - 1, "
%S");
                pTime[0] = str_to_num(Second);
                pTime[1] = str_to_num(Minute);
                pTime[2] = str_to_num(Hour);
                
                pTime[1] = pTime[1] - ElapsedTime[1];
                
                if(pTime[0] >= ElapsedTime[0])
                    pTime[0] = pTime[0] - ElapsedTime[0];
                else
                {
                    pTime[0] = pTime[0]+60 - ElapsedTime[0];
                    pTime[1]--;
                }
                
                if(pTime[2] == ElapsedTime[2])
                server_cmd("
mp_timelimit %d.%02d", get_pcvar_num(Cvar_Extend)+pTime[1], pTime[0]);
                else
                server_cmd("
mp_timelimit %d.%02d", (get_pcvar_num(Cvar_Extend)+pTime[1])+(60*(pTime[2]-ElapsedTime[2])), pTime[0]);
                
                print_color(0, "
%%L", Prefix, Lang, "MEXTEND1", get_pcvar_num(Cvar_Extend));
                
                Extend();
            }
        }
        else if(get_pcvar_num(Cvar_Mod) == 0)
        {
            if(equali(Next, MapName))
            {
                print_color(0, "
%%L", Prefix, Lang, "MEXTEND2", get_pcvar_num(Cvar_Extend));
                server_cmd("
mp_maxrounds ^"%d^"", get_pcvar_num(Cvar_Extend)+oRounds+Rounds);
                
                MaxRounds = get_pcvar_num(Cvar_Extend)+(MaxRounds-Rounds);
                Rounds = 0;
                
                Extend();
            }
        }
    }
    else
    {
        NeedRV = true;
        Voted = false;
        
        MapVote[VoteNum_1] = -MapVote[VoteNum_1];
        
        new VoteNum_1_1 = 0;

        for(new Num = 0; Num < get_pcvar_num(Cvar_MaxMaps); ++Num)
        {
            if(MapVote[VoteNum_1_1] < MapVote[Num])
            {
                VoteNum_1_1 = Num;
            }
        }
        
        MapVote[VoteNum_1] = 0-MapVote[VoteNum_1];
        
        copy(MapRevote[0], 31, MapNames[VoteNum_1]);
        copy(MapRevote[1], 31, MapNames[VoteNum_1_1]);
        
        RevoteCounts[0] = 0;
        RevoteCounts[1] = 0;
        
        VoteMod = 0;
        set_task(get_pcvar_float(Cvar_StartRevoteTime), "
StartRevoteTime", MapID+3);
        print_color(0, "
%%L", Prefix, Lang, "RER", get_pcvar_num(Cvar_VotePercentMin));
    }    
    
    NextMap();
    return PLUGIN_CONTINUE;
}
stock CheckRevotes() {
    
    if(AllRevotes == 0)
    {
        Next = MapRevote[0];
        set_cvar_string("
amx_nextmap", Next);
        NeedRV = false;
        VotedMap = Next;
        NextMap();
        return PLUGIN_HANDLED;
    }
    
    new VoteNum_1 = 0;
    
    for(new Num = 0; Num < 2; ++Num)
    {
        if(RevoteCounts[VoteNum_1] < RevoteCounts[Num])
        VoteNum_1 = Num;
    }
    
    Next = MapRevote[VoteNum_1];
    set_cvar_string("
amx_nextmap", Next);
    NeedRV = false;
    VotedMap = Next;
    
    if(get_pcvar_num(Cvar_Mod) == 1)
    {
        if(equali(Next, MapName))
        {
            new Hour[32], Minute[32], Second[32], pTime[3];
            format_time(Hour, sizeof Hour - 1, "
%H");
            format_time(Minute, sizeof Minute - 1, "
%M");
            format_time(Second, sizeof Second - 1, "
%S");
            pTime[0] = str_to_num(Second);
            pTime[1] = str_to_num(Minute);
            pTime[2] = str_to_num(Hour);
            
            pTime[1] = pTime[1] - ElapsedTime[1];
            
            if(pTime[0] >= ElapsedTime[0])
                pTime[0] = pTime[0] - ElapsedTime[0];
            else
            {
                pTime[0] = pTime[0]+60 - ElapsedTime[0];
                pTime[1]--;
            }
            
            if(pTime[2] == ElapsedTime[2])
            server_cmd("
mp_timelimit %d.%02d", get_pcvar_num(Cvar_Extend)+pTime[1], pTime[0]);
            else
            server_cmd("
mp_timelimit %d.%02d", (get_pcvar_num(Cvar_Extend)+pTime[1])+(60*(pTime[2]-ElapsedTime[2])), pTime[0]);
            
            print_color(0, "
%%L", Prefix, Lang, "MEXTEND1", get_pcvar_num(Cvar_Extend));
            
            Extend();
        }
    }
    else if(get_pcvar_num(Cvar_Mod) == 0)
    {
        if(equali(Next, MapName))
        {
            print_color(0, "
%%L", Prefix, Lang, "MEXTEND2", get_pcvar_num(Cvar_Extend));
            server_cmd("
mp_maxrounds ^"%d^"", get_pcvar_num(Cvar_Extend)+oRounds+Rounds);
            
            MaxRounds = get_pcvar_num(Cvar_Extend)+(MaxRounds-Rounds);
            Rounds = 0;
            
            Extend();
        }
    }
    
    NextMap();
    return PLUGIN_CONTINUE;
}
stock bool:isValidMap(Map[])
{
    if(is_map_valid(Map))
    {
        return true;
    }
    
    new Len = strlen(Map) - 4;
    
    if(0 > Len)
    {
        return false;
    }
    
    if(equali(Map[Len], "
.bsp"))
    {
        Map[Len] = '^0';
        
        if(is_map_valid(Map))
        {
            return true;
        }
    }
    
    return false;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/ 
Responder
#9
Código PHP:
/*
*            Made by DA

*             Description:
*                             This plugin allows the players on your server to vote for a mapvoting.
*                             The players can say in the chat "/rockthevote", "rockthevote" or "rtv" to vote for the vote.
*                             The maps will be automaticle loaded from the maps.ini (if it exists) or from the mapcycle.txt.

*             
*             Installation:
*                             1. Download the rockthevote_custom.sma and compile it on your local machine.
*                             2. Put the rockthevote_custom.amxx in your plugins folder.
*                             3. Add at the end from the plugins.ini this line: rockthevote_custom.amxx
*                             4. Open your amxx.cfg (mod/addons/amxmodx/configs/) and add the cvar's.
*                             5. Restart or change the map from your server.

*                             
*             CVAR's:
*                             amx_timevote number             - Default 5      - After 5 MINUTES (Default) is rockthevote allowed.
*                             amx_howmanypercentage float     - Default 0.30   - When 30% (Default) of the players said rockthevote then comes the mapvote.
*                             amx_howmanyvotes number            - Default 8      - When 8 (default) players said rockthevote then comes the mapvote.
*                             amx_rocktime time                 - Default 10     - After 10 (default) seconds the voting is over and the server change the map.  


*             Credits:
*                             Deagles - The main idea
*                             arkshine - Some code
*                             X-olent - Percentage idea

*/

#include <amxmodx>
#include <amxmisc>

#define PLUGIN    "RockTheVote"
#define AUTHOR    "DA"
#define VERSION    "1.8"

#define MAX_MAPS 5
#define MAX_MAP_LENGTH 64
#define MAPSINI "maps.ini"

new rtv[33], howmanyvotestask_timekeycount[MAX_MAPS], s_Maps[MAX_MAPS][MAX_MAP_LENGTH], count;
new 
presskeyshowmanyvotesperctimevotedirectmapchangebool:NextRoundChangeMap falsenextmap[MAX_MAP_LENGTH];
new 
g_mapvotecvar_votemapfreeze;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_dictionary("mapchooser.txt");
    
register_dictionary("common.txt");
    
register_clcmd("say""rockthevote");
    
register_menu("Chose your Map"1023"gonna_chose");
    
howmanyvotes register_cvar("amx_howmanyvotes""8");
    
howmanyvotesperc register_cvar("amx_howmanypercentage""0.30");
    
task_time register_cvar("amx_rocktime""10.0");
    
timevote register_cvar("amx_timevote""5");
    
directmapchange register_cvar"amx_directmapchange""0" );
    
g_mapvote 0
    cvar_votemapfreeze 
register_cvar("amx_votefreeze""12")
    
    
register_logevent "RoundStart"2"1=Round_Start" );
    
register_logevent"RoundEnd"2"1=Round_End");
    
    for (new 
i=0MAX_MAPS+2i++)
        
presskeys presskeys | (1<<i)
}

public  
client_disconnect(id)
{
    if (
rtv[id-1] == id)
    {
        
rtv[id-1] = 0;
        
count--;
    }
}

public 
RoundStart()
{
    
StartTheVote()
    
server_cmd("mp_freezetime 0")
    if ( !
get_pcvar_numdirectmapchange ) && NextRoundChangeMap )
    {
        
server_cmd"amx_map %s"nextmap );
    }
}

public 
RoundEnd()
{
    if(
g_mapvote == 1)
    {
        
server_cmd("mp_freezetime %d"get_pcvar_num(cvar_votemapfreeze))
    }
}
public 
rockthevote(id)
{
    new 
said[192];
    
read_args(said192);
    if    ((
contain(said"/rockthevote") != -1) || (contain(said"rockthevote") != -1) || (contain(said"rtv") != -1))
    {
        if (
get_gametime() < (get_pcvar_float(timevote) * 60.0))
            
client_print(idprint_chat"Vote is currently not allowed. Wait %d minutes.", (floatround(((get_pcvar_float(timevote) * 60.0) - get_gametime()) / 60.0)));
        else
        {
            if    (
rtv[id-1] == id)
                
client_print(idprint_chat"You have already voted!");
            else
            {
                
rtv[id-1] = id;
                
count++;
                            
                static 
num;
                
num get_playersnum();
                
num floatround((get_pcvar_float(howmanyvotesperc) * num));
                if ((
num == count) || (count >= get_pcvar_num(howmanyvotes)))
                {
                    
// AMXX Nextmap Chooser by cheap_suit
                    
if(find_plugin_byfile("mapchooser.amxx") != INVALID_PLUGIN_ID)
                    {
                        new 
oldWinLimit get_cvar_num("mp_winlimit"), oldMaxRounds get_cvar_num("mp_maxrounds");
                        
set_cvar_num("mp_winlimit",0); 
                        
set_cvar_num("mp_maxrounds",-1); 
  
                        if(
callfunc_begin("voteNextmap","mapchooser.amxx") == 1)
                            
callfunc_end();
  
                        
set_cvar_num("mp_winlimit",oldWinLimit);
                        
set_cvar_num("mp_maxrounds",oldMaxRounds);
                        
set_task(get_pcvar_float(task_time), "change_map"true);
                        return 
PLUGIN_CONTINUE;
                    }
                    
g_mapvote 1
                    
return PLUGIN_CONTINUE;
                }
                static 
name[32];
                
get_user_nameidnamecharsmaxname ) );
                
                
client_print 0print_chat"%s vote was added. Need %d or %d^%^%  to start voting!"name, (get_pcvar_num(howmanyvotes)-count), (floatround(get_pcvar_float(howmanyvotesperc) * 100.00)))
            }
        }
    }
    return 
PLUGIN_CONTINUE;
}

public 
gonna_chose(idkey)
{
    if (
key MAX_MAPS)
    {
        
keycount[key]++;
        static 
name[32]
        
get_user_name(idnamecharsmax(name));
        
client_print(0print_chat"%L"LANG_PLAYER"X_CHOSE_X"names_Maps[key]);
    }
}

StartTheVote()
{
    if (!
RetrieveMaps(s_Maps))
        return 
PLUGIN_CONTINUE;
    
    static 
ichosetext[256];
    
count=0;
    
    
formatex(chosetextcharsmax(chosetext), "\y%L:\w^n^n"LANG_SERVER"CHOOSE_NEXTM");
    for (
i=0MAX_MAPSi++)
        
formatex(chosetextcharsmax(chosetext), "%s%d. %s^n"chosetexti+1s_Maps[i]);
    
    
    
formatex(chosetextcharsmax(chosetext), "%s^n%d. %L"chosetextMAX_MAPS+2LANG_SERVER"NONE");
    
client_cmd(0"spk Gman/Gman_Choose2");
    
client_print(0print_chat"%L"LANG_SERVER"TIME_CHOOSE");
    
show_menu(0presskeyschosetext15"Chose your Map");
    
set_task(get_pcvar_float(task_time), "change_map"false);
    return 
PLUGIN_CONTINUE;
}

    
bool:RetrieveMaps(s_MapsFound[][])
{
    new 
s_File[256], s_ConfigsDir[256];
    
get_configsdir(s_ConfigsDir255);
    
formatex(s_File255"%s/%s"s_ConfigsDirMAPSINI);
    
    if (!
file_exists(s_File))
        
get_cvar_string("mapcyclefile"s_Filecharsmax(s_File)); 
        
    new 
s_CurrentMap[MAX_MAP_LENGTH];
    
get_mapname(s_CurrentMapcharsmax(s_CurrentMap));

    new 
p_File fopen(s_File"rt");
    new Array:
a_Maps;
    new 
i_MapsCount SaveAllMaps(p_Filea_Maps);

    new 
bool:b_Error truei;   
    switch (
i_MapsCount)
    {
        case 
0             log_amx("There are no maps in the %s."s_File);
        case 
.. MAX_MAPS log_amx("Not enough maps found. (requires at least %d maps)"MAX_MAPS );
        default            :  
b_Error false;
    }
    if (
b_Error)
    {
        
fclose(p_File); 
        
ArrayDestroy(a_Maps);
        return 
false;
    }
    
fclose(p_File);

    new 
i_Randi_Cnt;
    while (
i_Cnt != MAX_MAPS)
    {
        
i_Rand random_num(0ArraySize(a_Maps) - 1);
        
ArrayGetString(a_Mapsi_Rands_MapsFound[i_Cnt], MAX_MAP_LENGTH 1);

        if (
equal(s_MapsFound[i_Cnt], s_CurrentMap))
        {
            continue;
        }

        for (
0i_Cnti++)
        {
            if (
equal(s_MapsFound[i], s_MapsFound[i_Cnt]))
            {
                break;
            }
        }

        if (
== i_Cnt)
        {
            
ArrayDeleteItem(a_Mapsi_Rand);
            
i_Cnt++;
        }
    }
    
ArrayDestroy(a_Maps);
    return 
true;
}

SaveAllMaps(p_File, &Array:a_Maps)
{
    
a_Maps ArrayCreate(MAX_MAP_LENGTH);
    new 
s_Buffer[MAX_MAP_LENGTH]
    
    while (!
feof(p_File))
    {
        
fgets(p_Files_Buffercharsmax(s_Buffer));
        
trim(s_Buffer);
        if (!
s_Buffer[0] || s_Buffer[0] == ';' || (s_Buffer[0] == '/' && s_Buffer[1] == '/'))
        {
            continue;
        }
        if (
is_map_valid(s_Buffer))
        {
            
ArrayPushString(a_Mapss_Buffer);
        }
    }
    return 
ArraySize(a_Maps);
}

public 
change_map(bool:chooserornot)
{
    if (!
chooserornot)
    {
        static 
keypuffer=0i=0;
        for (
i=0MAX_MAPSi++)
            if (
keycount[i] > keycount[keypuffer])
                
keypuffer i;
            
        
copy(nextmapcharsmax(nextmap), s_Maps[keypuffer]);
    }
    else
        
get_cvar_string("amx_nextmap"nextmapcharsmax(nextmap));
        
    
log_amx("Map will be changed to %s."nextmap)
    if (
chooserornot)
        
client_print(0print_chat"%L"LANG_PLAYER"CHO_FIN_NEXT"nextmap);
        
    if ( !
get_pcvar_numdirectmapchange ) )
    {
        
set_hudmessage(210000.050.45120.010.00.50.154);
        
show_hudmessage(0"This is the final round");
        
        
NextRoundChangeMap true;
    }
    
    else
    {
        
server_cmd("amx_map %s"nextmap);
    }


Aquí tienes, usa este código para lo de la ronda, si tiene algún error avisa.
Si no te gusta algo, cámbialo. Si no lo puedes cambiar, cambia la forma en que piensas sobre ello <3
Responder
#10
(03/08/2018, 02:26 PM)Saber escribió: [php]
Aquí tienes, usa este código para lo de la ronda, si tiene algún error avisa.
yo voy a hacer algunas pruebas y te aviso.
gracias
Responder
#11
(03/08/2018, 02:26 PM)Saber escribió: Aquí tienes, usa este código para lo de la ronda, si tiene algún error avisa.
¿Hola! Cómo estás?
a la hora de la votación el round no accionó el freeze time
mi voluntad es comenzar la votación al principio del round con el freezer time
Responder
#12
Tienes algún plugin? que maneje el freezetime? ya que yo lo veo bien...

proba

Código PHP:
/*
*            Made by DA

*             Description:
*                             This plugin allows the players on your server to vote for a mapvoting.
*                             The players can say in the chat "/rockthevote", "rockthevote" or "rtv" to vote for the vote.
*                             The maps will be automaticle loaded from the maps.ini (if it exists) or from the mapcycle.txt.

*             
*             Installation:
*                             1. Download the rockthevote_custom.sma and compile it on your local machine.
*                             2. Put the rockthevote_custom.amxx in your plugins folder.
*                             3. Add at the end from the plugins.ini this line: rockthevote_custom.amxx
*                             4. Open your amxx.cfg (mod/addons/amxmodx/configs/) and add the cvar's.
*                             5. Restart or change the map from your server.

*                             
*             CVAR's:
*                             amx_timevote number             - Default 5      - After 5 MINUTES (Default) is rockthevote allowed.
*                             amx_howmanypercentage float     - Default 0.30   - When 30% (Default) of the players said rockthevote then comes the mapvote.
*                             amx_howmanyvotes number            - Default 8      - When 8 (default) players said rockthevote then comes the mapvote.
*                             amx_rocktime time                 - Default 10     - After 10 (default) seconds the voting is over and the server change the map.  


*             Credits:
*                             Deagles - The main idea
*                             arkshine - Some code
*                             X-olent - Percentage idea

*/

#include <amxmodx>
#include <amxmisc>

#define PLUGIN    "RockTheVote"
#define AUTHOR    "DA"
#define VERSION    "1.8"

#define MAX_MAPS 5
#define MAX_MAP_LENGTH 64
#define MAPSINI "maps.ini"

new rtv[33], howmanyvotestask_timekeycount[MAX_MAPS], s_Maps[MAX_MAPS][MAX_MAP_LENGTH], count;
new 
presskeyshowmanyvotesperctimevotedirectmapchangebool:NextRoundChangeMap falsenextmap[MAX_MAP_LENGTH];
new 
g_mapvotecvar_votemapfreeze;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_dictionary("mapchooser.txt");
    
register_dictionary("common.txt");
    
register_clcmd("say""rockthevote");
    
register_menu("Chose your Map"1023"gonna_chose");
    
howmanyvotes register_cvar("amx_howmanyvotes""8");
    
howmanyvotesperc register_cvar("amx_howmanypercentage""0.30");
    
task_time register_cvar("amx_rocktime""10.0");
    
timevote register_cvar("amx_timevote""5");
    
directmapchange register_cvar"amx_directmapchange""0" );
    
g_mapvote 0
    cvar_votemapfreeze 
register_cvar("amx_votefreeze""12")
    
    
register_logevent "RoundStart"2"1=Round_Start" );
    
register_logevent"RoundEnd"2"1=Round_End");
    
    for (new 
i=0MAX_MAPS+2i++)
        
presskeys presskeys | (1<<i)
}

public  
client_disconnect(id)
{
    if (
rtv[id-1] == id)
    {
        
rtv[id-1] = 0;
        
count--;
    }
}

public 
RoundStart()
{
    
StartTheVote()
    if ( !
get_pcvar_numdirectmapchange ) && NextRoundChangeMap )
    {
        
server_cmd"amx_map %s"nextmap );
    }
}

public 
RoundEnd()
{
    if(
g_mapvote == 1)
    {
        
server_cmd("mp_freezetime %d", (get_pcvar_num(cvar_votemapfreeze)))
    }
}
public 
rockthevote(id)
{
    new 
said[192];
    
read_args(said192);
    if    ((
contain(said"/rockthevote") != -1) || (contain(said"rockthevote") != -1) || (contain(said"rtv") != -1))
    {
        if (
get_gametime() < (get_pcvar_float(timevote) * 60.0))
            
client_print(idprint_chat"Vote is currently not allowed. Wait %d minutes.", (floatround(((get_pcvar_float(timevote) * 60.0) - get_gametime()) / 60.0)));
        else
        {
            if    (
rtv[id-1] == id)
                
client_print(idprint_chat"You have already voted!");
            else
            {
                
rtv[id-1] = id;
                
count++;
                            
                static 
num;
                
num get_playersnum();
                
num floatround((get_pcvar_float(howmanyvotesperc) * num));
                if ((
num == count) || (count >= get_pcvar_num(howmanyvotes)))
                {
                    
// AMXX Nextmap Chooser by cheap_suit
                    
if(find_plugin_byfile("mapchooser.amxx") != INVALID_PLUGIN_ID)
                    {
                        new 
oldWinLimit get_cvar_num("mp_winlimit"), oldMaxRounds get_cvar_num("mp_maxrounds");
                        
set_cvar_num("mp_winlimit",0); 
                        
set_cvar_num("mp_maxrounds",-1); 
  
                        if(
callfunc_begin("voteNextmap","mapchooser.amxx") == 1)
                            
callfunc_end();
  
                        
set_cvar_num("mp_winlimit",oldWinLimit);
                        
set_cvar_num("mp_maxrounds",oldMaxRounds);
                        
set_task(get_pcvar_float(task_time), "change_map"true);
                        return 
PLUGIN_CONTINUE;
                    }
                    
g_mapvote 1
                    
return PLUGIN_CONTINUE;
                }
                static 
name[32];
                
get_user_nameidnamecharsmaxname ) );
                
                
client_print 0print_chat"%s vote was added. Need %d or %d^%^%  to start voting!"name, (get_pcvar_num(howmanyvotes)-count), (floatround(get_pcvar_float(howmanyvotesperc) * 100.00)))
            }
        }
    }
    return 
PLUGIN_CONTINUE;
}

public 
gonna_chose(idkey)
{
    if (
key MAX_MAPS)
    {
        
keycount[key]++;
        static 
name[32]
        
get_user_name(idnamecharsmax(name));
        
client_print(0print_chat"%L"LANG_PLAYER"X_CHOSE_X"names_Maps[key]);
    }
}

StartTheVote()
{
    if (!
RetrieveMaps(s_Maps))
        return 
PLUGIN_CONTINUE;
    
    static 
ichosetext[256];
    
count=0;
    
    
formatex(chosetextcharsmax(chosetext), "\y%L:\w^n^n"LANG_SERVER"CHOOSE_NEXTM");
    for (
i=0MAX_MAPSi++)
        
formatex(chosetextcharsmax(chosetext), "%s%d. %s^n"chosetexti+1s_Maps[i]);
    
    
    
formatex(chosetextcharsmax(chosetext), "%s^n%d. %L"chosetextMAX_MAPS+2LANG_SERVER"NONE");
    
client_cmd(0"spk Gman/Gman_Choose2");
    
client_print(0print_chat"%L"LANG_SERVER"TIME_CHOOSE");
    
show_menu(0presskeyschosetext15"Chose your Map");
    
set_task(get_pcvar_float(task_time), "change_map"false);
    
server_cmd("amx_freezetime %d", (get_pcvar_num(cvar_votemapfreeze)))
    return 
PLUGIN_CONTINUE;
}

    
bool:RetrieveMaps(s_MapsFound[][])
{
    new 
s_File[256], s_ConfigsDir[256];
    
get_configsdir(s_ConfigsDir255);
    
formatex(s_File255"%s/%s"s_ConfigsDirMAPSINI);
    
    if (!
file_exists(s_File))
        
get_cvar_string("mapcyclefile"s_Filecharsmax(s_File)); 
        
    new 
s_CurrentMap[MAX_MAP_LENGTH];
    
get_mapname(s_CurrentMapcharsmax(s_CurrentMap));

    new 
p_File fopen(s_File"rt");
    new Array:
a_Maps;
    new 
i_MapsCount SaveAllMaps(p_Filea_Maps);

    new 
bool:b_Error truei;   
    switch (
i_MapsCount)
    {
        case 
0             log_amx("There are no maps in the %s."s_File);
        case 
.. MAX_MAPS log_amx("Not enough maps found. (requires at least %d maps)"MAX_MAPS );
        default            :  
b_Error false;
    }
    if (
b_Error)
    {
        
fclose(p_File); 
        
ArrayDestroy(a_Maps);
        return 
false;
    }
    
fclose(p_File);

    new 
i_Randi_Cnt;
    while (
i_Cnt != MAX_MAPS)
    {
        
i_Rand random_num(0ArraySize(a_Maps) - 1);
        
ArrayGetString(a_Mapsi_Rands_MapsFound[i_Cnt], MAX_MAP_LENGTH 1);

        if (
equal(s_MapsFound[i_Cnt], s_CurrentMap))
        {
            continue;
        }

        for (
0i_Cnti++)
        {
            if (
equal(s_MapsFound[i], s_MapsFound[i_Cnt]))
            {
                break;
            }
        }

        if (
== i_Cnt)
        {
            
ArrayDeleteItem(a_Mapsi_Rand);
            
i_Cnt++;
        }
    }
    
ArrayDestroy(a_Maps);
    return 
true;
}

SaveAllMaps(p_File, &Array:a_Maps)
{
    
a_Maps ArrayCreate(MAX_MAP_LENGTH);
    new 
s_Buffer[MAX_MAP_LENGTH]
    
    while (!
feof(p_File))
    {
        
fgets(p_Files_Buffercharsmax(s_Buffer));
        
trim(s_Buffer);
        if (!
s_Buffer[0] || s_Buffer[0] == ';' || (s_Buffer[0] == '/' && s_Buffer[1] == '/'))
        {
            continue;
        }
        if (
is_map_valid(s_Buffer))
        {
            
ArrayPushString(a_Mapss_Buffer);
        }
    }
    return 
ArraySize(a_Maps);
}

public 
change_map(bool:chooserornot)
{
    if (!
chooserornot)
    {
        static 
keypuffer=0i=0;
        for (
i=0MAX_MAPSi++)
            if (
keycount[i] > keycount[keypuffer])
                
keypuffer i;
            
        
copy(nextmapcharsmax(nextmap), s_Maps[keypuffer]);
    }
    else
        
get_cvar_string("amx_nextmap"nextmapcharsmax(nextmap));
        
    
log_amx("Map will be changed to %s."nextmap)
    if (
chooserornot)
        
client_print(0print_chat"%L"LANG_PLAYER"CHO_FIN_NEXT"nextmap);
        
    if ( !
get_pcvar_numdirectmapchange ) )
    {
        
set_hudmessage(210000.050.45120.010.00.50.154);
        
show_hudmessage(0"This is the final round");
        
        
NextRoundChangeMap true;
    }
    
    else
    {
        
server_cmd("amx_map %s"nextmap);
    }

Si no te gusta algo, cámbialo. Si no lo puedes cambiar, cambia la forma en que piensas sobre ello <3
Responder
#13
Hello I promised to test the plugin and warn you because I ended up getting away a little because of my work.
Today I can say that the map forces the vote in the first round and always in the first rounds do not run for 30 rounds but rather a round forcing voting whenever the round begins.
one round per map.
What do I have to arrange?
Cita:Aquí tienes, usa este código para lo de la ronda, si tiene algún error avisa.

Cita:Aquí tienes, usa este código para lo de la ronda, si tiene algún error avisa.

Hello I promised to test the plugin and warn you because I ended up getting away a little because of my work.
Today I can say that the map forces the vote in the first round and always in the first rounds do not run for 30 rounds but rather a round forcing voting whenever the round begins.
one round per map.
What do I have to arrange?
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)