Raised This Month: $51 Target: $400
 12% 

CS Pug Mod (4.0.2) [22/12/2021]


Post New Thread Reply   
 
Thread Tools Display Modes
Mark.uG
AlliedModders Donor
Join Date: Oct 2014
Old 03-21-2015 , 12:22   Re: CS Pug MOD Re-rewrited [UPDATED 03/21/2015]
Reply With Quote #421

Something is still wrong with it cant get the configs to work on it.
Mark.uG is offline
pupil0888
Member
Join Date: Sep 2012
Location: Venezuela
Old 03-21-2015 , 13:22   Re: CS Pug MOD Re-rewrited [UPDATED 03/21/2015]
Reply With Quote #422

; AMX Mod X plugins

; Admin Base - Always one has to be activated
admin.amxx ; admin base (required for any admin-related)
;admin_sql.amxx ; admin base - SQL version (comment admin.amxx)

; Basic
admincmd.amxx ; basic admin console commands
adminhelp.amxx ; help command for admin console commands
adminslots.amxx ; slot reservation
multilingual.amxx ; Multi-Lingual management

; Menus
menufront.amxx ; front-end for admin menus
cmdmenu.amxx ; command menu (speech, settings)
plmenu.amxx ; players menu (kick, ban, client cmds.)
;telemenu.amxx ; teleport menu (Fun Module required!)
mapsmenu.amxx ; maps menu (vote, changelevel)
pluginmenu.amxx ; Menus for commands/cvars organized by plugin

; Chat / Messages
adminchat.amxx ; console chat commands
antiflood.amxx ; prevent clients from chat-flooding the server
scrollmsg.amxx ; displays a scrolling message
imessage.amxx ; displays information messages
adminvote.amxx ; vote commands

; Map related
nextmap.amxx ; displays next map in mapcycle
mapchooser.amxx ; allows to vote for next map
timeleft.amxx ; displays time left on map

; Configuration
pausecfg.amxx ; allows to pause and unpause some plugins
statscfg.amxx ; allows to manage stats plugins via menu and commands

; Counter-Strike
;restmenu.amxx ; restrict weapons menu
statsx.amxx ; stats on death or round end (CSX Module required!)
;miscstats.amxx ; bunch of events announcement for Counter-Strike
;stats_logging.amxx ; weapons stats logging (CSX Module required!)


; Custom - Add 3rd party plugins here

PugFlood.amxx ; Anti Flood
PugAdmin.amxx ; Admin Manager
PugMessage.amxx ; Auto Messages
PugEAC.amxx ; EAC Screenshots

PugCore.amxx ; Pug Mod
PugReady.amxx ; Ready System
PugCS.amxx ; Counter-Strike
PugMenus.amxx ; Vote System
PugConfigs.amxx ; Config System
PugLO3.amxx ; Live on three
PugWarmup.amxx ; Warmup Rounds
PugAux.amxx ; Misc Commands
;PugDB.amxx ; MySQL System
;PugStats.amxx ; Stats System
pupil0888 is offline
Send a message via MSN to pupil0888
pupil0888
Member
Join Date: Sep 2012
Location: Venezuela
Old 03-21-2015 , 14:31   Re: CS Pug MOD Re-rewrited [UPDATED 03/21/2015]
Reply With Quote #423

mmm
pupil0888 is offline
Send a message via MSN to pupil0888
^SmileY
Veteran Member
Join Date: Jan 2010
Location: Brazil [<o>]
Old 03-21-2015 , 15:43   Re: CS Pug MOD Re-rewrited [UPDATED 03/21/2015]
Reply With Quote #424

Quote:
Originally Posted by pupil0888 View Post
mmm
Never bump, and see the plugins.ini that coming with pack. You are using almost plugins of amxx that can cause some problems.

And post what is the error correctly, i wont support users that cannot configure a simple server.
__________________
Projects:

- See my Git Hub: https://github.com/SmileYzn
PHP Code:
set_pcvar_num(pCvar, !get_pcvar_num(pCvar)); 
^SmileY is offline
Send a message via MSN to ^SmileY Send a message via Skype™ to ^SmileY
pupil0888
Member
Join Date: Sep 2012
Location: Venezuela
Old 03-21-2015 , 20:06   Re: CS Pug MOD Re-rewrited [UPDATED 03/21/2015]
Reply With Quote #425

Hello and happy day everyone, well explained pug have a code mod called xt works follows is for 10 players and once all write .ready several ballots as votemap, voteteam and votecfg are released, the problem this in votemap if nobody votes for any map that is changed at random and if you vote only 1 player for a map is changed to that, the application for aid is that I want to eliminate the random or random map I mean if anyone vote for none that you stay in the current map unchanged and continue with voteteam and the other would place a cvar percentage so that if one single player votes for a map that does not change because the cvar would be for a minimum of 4 votes to effect change thanks in advance here I leave the code and hope you can help me.



PHP Code:

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>

#pragma semicolon 1

#define PUG_TASK_VOTE     1337
#define PUG_TASK_AUTO     1338

#define PUG_MAX_PLAYERS     33
#define PUG_MOD_MINPLAYERS     5
#define PUG_CAPTAIN_MINPLAYERS     6

new PUG_szHead[] = "^4[PUG]^1";

new 
PUG_iStage;
new 
bool:PUG_bReady[PUG_MAX_PLAYERS];
new 
bool:PUG_bVoted[PUG_MAX_PLAYERS];
new 
bool:PUG_bInRound;

new 
PUG_iHits[PUG_MAX_PLAYERS][PUG_MAX_PLAYERS];
new 
PUG_iDamage[PUG_MAX_PLAYERS][PUG_MAX_PLAYERS];

new const 
PUG_szTeamNames[CsTeams][] =
{
    
"Unassigned",
    
"Terrorists",
    
"Counter-Terrorists",
    
"Spectator"
};

new const 
PUG_szTeams[CsTeams][] =
{
    
"UNASGDs",
    
"TRs",
    
"CTs",
    
"SPECs"
};

new 
PUG_iScores[CsTeams];
new 
PUG_iRounds[3];

#define PUG_isValidTeam(%0)     (CS_TEAM_T <= cs_get_user_team(%0) <= CS_TEAM_CT)

enum _:PUG_STAGES_CONST
{
    
PUG_STAGE_READY 0,
    
PUG_STAGE_START,
    
PUG_STAGE_FIRSTHALF,
    
PUG_STAGE_INTERMISSION,
    
PUG_STAGE_SECONDHALF,
    
PUG_STAGE_OVERTIME,
    
PUG_STAGE_END
};

new const 
PUG_szStage[PUG_STAGES_CONST][] =
{
    
"Pregame",
    
"Voting",
    
"First Half",
    
"Intermission",
    
"Second Half",
    
"Overtime",
    
"Finished"
};

new 
PUG_MinPlayers;
new 
PUG_MaxPlayers;
new 
PUG_VoteMap;
new 
PUG_VoteDelay;
new 
PUG_SwitchDelay;
new 
PUG_MaxRounds;
new 
PUG_OTRounds;
new 
PUG_AllowSpec;
new 
PUG_AllowHLTV;
new 
PUG_Reconnect;
new 
PUG_TeamMoney;
new 
PUG_NoSuicide;
new 
PUG_AllowVoteCmds;
new 
PUG_HelpFile;

new 
PUG_ReadyConfig;
new 
PUG_StartConfig;
new 
PUG_FirstConfig;
new 
PUG_IntermissionConfig;
new 
PUG_SecondConfig;
new 
PUG_OvertimeConfig;
new 
PUG_EndConfig;

new 
PUG_sv_restart;
new 
PUG_sv_visiblemaxplayers;
new 
PUG_mp_startmoney;
new 
PUG_mapcyclefile;

enum
{
    
PUG_MENU_NONE 0,
    
PUG_MENU_MAP,
    
PUG_MENU_TEAMS,
    
PUG_MENU_CAPTAINS,
    
PUG_MENU_CFG
};

new 
PUG_iMenuStage;

new 
PUG_iMenuMap;
new 
PUG_iMenuTeams;
new 
PUG_iMenuCfg;

#define PUG_MAX_MAPS 32

new PUG_iMapVotes[PUG_MAX_MAPS];
new 
PUG_szMapNames[PUG_MAX_MAPS][32];
new 
PUG_iMapCount;

new 
bool:PUG_bTeams;

enum _:PUG_SORT_TYPE
{
    
PUG_SORT_AUTO 0,
    
PUG_SORT_NONE,
    
PUG_SORT_CAPTAINS
};

new const 
PUG_szTeamTypes[PUG_SORT_TYPE][] =
{
    
"Random",
    
"Not Sorted",
    
"Captains"
};

new 
PUG_iTeamVotes[PUG_SORT_TYPE];

new 
PUG_iCaptain[2];

enum _:PUG_CFG_FILE
{
    
PUG_CFG_CAL 0,
    
PUG_CFG_CEVO
};

new const 
PUG_szConfigTypes[PUG_CFG_FILE][] =
{
    
"CAL (15 Rounds, 1:45 min, $800)",
    
"CEVO (15 Rounds, 2:00 min, $800)"
};

new 
PUG_iConfigVotes[PUG_CFG_FILE];

new 
Trie:PUG_tRetry;

enum
{
    
PUG_SLOT_PRIMARY 1,
    
PUG_SLOT_SECONDARY,
    
PUG_SLOT_KNIFE,
    
PUG_SLOT_GRENADE,
    
PUG_SLOT_C4
};

new const 
PUG_iWeaponSlots[] =
{
    
0,
    
2,    //CSW_P228
    
0,
    
1,    //CSW_SCOUT
    
4,    //CSW_HEGRENADE
    
1,    //CSW_XM1014
    
5,    //CSW_C4
    
1,    //CSW_MAC10
    
1,    //CSW_AUG
    
4,    //CSW_SMOKEGRENADE
    
2,    //CSW_ELITE
    
2,    //CSW_FIVESEVEN
    
1,    //CSW_UMP45
    
1,    //CSW_SG550
    
1,    //CSW_GALIL
    
1,    //CSW_FAMAS
    
2,    //CSW_USP
    
2,    //CSW_GLOCK18
    
1,    //CSW_AWP
    
1,    //CSW_MP5NAVY
    
1,    //CSW_M249
    
1,    //CSW_M3
    
1,    //CSW_M4A1
    
1,    //CSW_TMP
    
1,    //CSW_G3SG1
    
4,    //CSW_FLASHBANG
    
2,    //CSW_DEAGLE
    
1,    //CSW_SG552
    
1,    //CSW_AK47
    
3,    //CSW_KNIFE
    
1    //CSW_P90
};

new const 
PUG_iMaxBPAmmo[] =
{
    
0,
    
52,    //CSW_P228
    
0,
    
90,    //CSW_SCOUT
    
1,    //CSW_HEGRENADE
    
32,    //CSW_XM1014
    
1,    //CSW_C4
    
100,    //CSW_MAC10
    
90,    //CSW_AUG
    
1,    //CSW_SMOKEGRENADE
    
120,    //CSW_ELITE
    
100,    //CSW_FIVESEVEN
    
100,    //CSW_UMP45
    
90,    //CSW_SG550
    
90,    //CSW_GALIL
    
90,    //CSW_FAMAS
    
100,    //CSW_USP
    
120,    //CSW_GLOCK18
    
30,    //CSW_AWP
    
120,    //CSW_MP5NAVY
    
200,    //CSW_M249
    
32,    //CSW_M3
    
90,    //CSW_M4A1
    
120,    //CSW_TMP
    
90,    //CSW_G3SG1
    
2,    //CSW_FLASHBANG
    
35,    //CSW_DEAGLE
    
90,    //CSW_SG552
    
90,    //CSW_AK47
    
0,    //CSW_KNIFE
    
100    //CSW_P90
};

new const 
PUG_szRestrictWeapons[][] =
{
    
"shield",
    
"flash",
    
"hegren",
    
"sgren",
    
"primammo",
    
"secammo",
    
"buyammo1",
    
"buyammo2"
};

new const 
PUG_szVoteCommands[][] =
{
    
"buy",
    
"buyequip",
    
"radio1",
    
"radio2",
    
"radio3",
    
"chooseteam"
};

public 
plugin_init()
{
    
register_plugin("Pug Mod (XT)",AMXX_VERSION_STR,"SmileY");

    
register_dictionary("CsPug.txt");
    
    
PUG_MinPlayers         register_cvar("pug_minplayers","10");
    
PUG_MaxPlayers         register_cvar("pug_maxplayers","10");
    
PUG_VoteMap         register_cvar("pug_votemap","1");
    
PUG_VoteDelay         register_cvar("pug_votedelay","10.0");
    
PUG_SwitchDelay     register_cvar("pug_switch_delay","5.0");
    
PUG_MaxRounds         register_cvar("pug_rounds","30");
    
PUG_OTRounds         register_cvar("pug_ot_rounds","6");
    
PUG_AllowSpec         register_cvar("pug_allowspec","1");
    
PUG_AllowHLTV         register_cvar("pug_allowhltv","1");
    
PUG_Reconnect        register_cvar("pug_reconnect","20.0");
    
PUG_TeamMoney         register_cvar("pug_teammoney","1");
    
PUG_NoSuicide        register_cvar("pug_nosuicide","1");
    
PUG_AllowVoteCmds     register_cvar("pug_allowvotes","1");
    
PUG_HelpFile         register_cvar("pug_help","help.htm");
    
    
PUG_ReadyConfig     register_cvar("pug_pregame_cfg","pregame.rc");
    
PUG_StartConfig     register_cvar("pug_ready_cfg","ready.rc");
    
PUG_FirstConfig     register_cvar("pug_firsthalf_cfg","cal.rc");
    
PUG_IntermissionConfig     register_cvar("pug_intermission_cfg","intermission.rc");
    
PUG_SecondConfig     register_cvar("pug_secondhalf_cfg","cal.rc");
    
PUG_OvertimeConfig     register_cvar("pug_overtime_cfg","cal-ot.rc");
    
PUG_EndConfig         register_cvar("pug_finished_cfg","finished.rc");
    
    
PUG_sv_restart             get_cvar_pointer("sv_restart");
    
PUG_sv_visiblemaxplayers     get_cvar_pointer("sv_visiblemaxplayers");
    
PUG_mp_startmoney         get_cvar_pointer("mp_startmoney");
    
PUG_mapcyclefile         get_cvar_pointer("mapcyclefile");
    
    
register_clcmd("say","PUG_SayFilter");
    
register_clcmd("say_team","PUG_SayFilter");
    
    
register_clcmd(".ready","PUG_ReadyUp",         .info="Tells the server the player is ready");
    
register_clcmd(".notready","PUG_ReadyDown",     .info="Tells the server the player is not ready");
    
    
register_clcmd(".round","PUG_Round",        .info="Display the current round");
    
register_clcmd(".score","PUG_Scores",         .info="Display the current scores");
    
register_clcmd(".status","PUG_Status",         .info="Display the server status");
    
    
register_clcmd(".hp","PUG_HP",             .info="Shows the HP of the enemy");
    
register_clcmd(".hpteam","PUG_HPTeam",         .info="Shows the HP of your team");
    
register_clcmd(".hpall","PUG_HPAll",         .info="Shows the HP of all players");
    
    
register_clcmd(".dmg","PUG_Damage",         .info="Shows damage you have done to other players");
    
register_clcmd(".rdmg","PUG_RDamage",         .info="Shows damage done to you by other players");
    
register_clcmd(".sum","PUG_SDamage",         .info="Shows the summary of the round");
    
    
register_clcmd(".help","PUG_Help",         .info="Brings up client help info");

    
PUG_tRetry TrieCreate();

    for(new 
i;sizeof(PUG_szVoteCommands);++i)
    {
        
register_clcmd(PUG_szVoteCommands[i],"PUG_Locked");
    }
    
    
register_clcmd("vote","PUG_VoteCommand");
    
register_clcmd("votemap","PUG_VoteCommand");
    
    
register_clcmd("jointeam","PUG_JoinTeam");
    
register_clcmd("joinclass","PUG_JoinClass");
    
register_clcmd("menuselect","PUG_JoinClass");
    
    
PUG_iMenuMap     menu_create("Vote Map:","PUG_MenuHandler");
    
    
menu_setprop(PUG_iMenuMap,MPROP_EXIT,MEXIT_NEVER);
    
    
PUG_iMenuCfg menu_create("Config:","PUG_MenuHandler");
    
    
menu_additem(PUG_iMenuCfg,PUG_szConfigTypes[PUG_CFG_CAL],"0");
    
menu_additem(PUG_iMenuCfg,PUG_szConfigTypes[PUG_CFG_CEVO],"1");

    
menu_setprop(PUG_iMenuCfg,MPROP_EXIT,MEXIT_NEVER);
    
    
PUG_iMenuTeams     menu_create("Team Enforcement:","PUG_MenuHandler");
    
    
menu_additem(PUG_iMenuTeams,PUG_szTeamTypes[PUG_SORT_AUTO],"0");
    
menu_additem(PUG_iMenuTeams,PUG_szTeamTypes[PUG_SORT_NONE],"1");
    
menu_additem(PUG_iMenuTeams,PUG_szTeamTypes[PUG_SORT_CAPTAINS],"2");
    
    
menu_setprop(PUG_iMenuTeams,MPROP_EXIT,MEXIT_NEVER);
    
    
register_menucmd(register_menuid("#Buy",1),511,"PUG_BuyMenu");
    
register_menucmd(-28,511,"PUG_BuyMenu");
    
    
register_menucmd(register_menuid("BuyItem",1),511,"PUG_ItemMenu");
    
register_menucmd(-34,511,"PUG_ItemMenu");
    
    
register_menucmd(-2,(1<<0)|(1<<1)|(1<<4)|(1<<5),"PUG_TeamSelect");
    
register_menucmd(register_menuid("Team_Select",1),(1<<0)|(1<<1)|(1<<4)|(1<<5),"PUG_TeamSelect");

    
register_event("ResetHUD","PUG_HudList","b");
    
register_event("CurWeapon","PUG_CurWeapon","be","1=1");
    
register_event("StatusIcon","PUG_StatusIcon","be","2=buyzone");
    
register_event("SendAudio","PUG_SendAudio","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw");
    
    
register_logevent("PUG_RoundStart",2,"1=Round_Start");
    
register_logevent("PUG_RoundEnd",2,"1=Round_End");
    
    
register_message(get_user_msgid("Money"),"PUG_Money");
    
    
register_forward(FM_SetModel,"PUG_fwSetModel",true);
    
register_forward(FM_CVarGetFloat,"PUG_fwCVarGetFloat",false);
    
register_forward(FM_ClientKill,"PUG_fwClientKill",false);

    
RegisterHam(Ham_Killed,"player","PUG_HamKilledPost",1);
    
RegisterHam(Ham_Spawn,"player","PUG_SpawnPost",1);
}

public 
plugin_cfg()
{
    new 
szPatch[40];
    
get_localinfo("amxx_configsdir",szPatch,charsmax(szPatch));

    
format(szPatch,charsmax(szPatch),"%s/maps.ini",szPatch);

    if(!
PUG_LoadMaps(szPatch))
    {
        
get_pcvar_string(PUG_mapcyclefile,szPatch,charsmax(szPatch));
        
        
PUG_LoadMaps(szPatch);
    }
    
    
PUG_Change(PUG_STAGE_READY);
}

public 
plugin_end()
{
    if(
PUG_STAGE_FIRSTHALF <= PUG_iStage <= PUG_STAGE_OVERTIME)
    {
        
PUG_Change(PUG_STAGE_END);
    }
}

PUG_LoadMaps(const szPatch[])
{
    if(!
file_exists(szPatch)) return 0;
    
    new 
iFile fopen(szPatch,"rb");
    
    new 
szMap[32],iNum[10];

    
//new szCurrent[32];
    //get_mapname(szCurrent,charsmax(szCurrent));
    
    
while(!feof(iFile) && (PUG_iMapCount PUG_MAX_MAPS))
    {
        
fgets(iFile,szMap,charsmax(szMap));
        
trim(szMap);
        
        if(
szMap[0] != ';' && is_map_valid(szMap)) //&& !equali(szMap,szCurrent))
        
{
            
copy(PUG_szMapNames[PUG_iMapCount],charsmax(PUG_szMapNames[]),szMap);
                
            
num_to_str(PUG_iMapCount,iNum,charsmax(iNum));
            
menu_additem(PUG_iMenuMap,PUG_szMapNames[PUG_iMapCount],iNum);
        
            
PUG_iMapCount++;
        }
    }
    
    
fclose(iFile);
    
    return 
PUG_iMapCount;
}

PUG_Change(PUG_STAGE)
{
    
PUG_iStage PUG_STAGE;
    
    switch(
PUG_iStage)
    {
        case 
PUG_STAGE_READY:
        {
            new 
szConfig[32];
            
get_pcvar_string(PUG_ReadyConfig,szConfig,charsmax(szConfig));

            
PUG_ExecConfig(szConfig,1);

            
PUG_BombRemove(true);
                        
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_START",
                
PUG_szStage[PUG_iStage]
            );
        }
        case 
PUG_STAGE_START:
        {
            new 
szConfig[32];
            
get_pcvar_string(PUG_StartConfig,szConfig,charsmax(szConfig));
            
            
PUG_ExecConfig(szConfig,1);
            
            
arrayset(PUG_bVoted,false,sizeof(PUG_bVoted));
            
            new 
iVoteMap get_pcvar_num(PUG_VoteMap);
            
            if(
iVoteMap)
            {
                
PUG_iMenuStage PUG_MENU_MAP;
                
                
arrayset(PUG_iMapVotes,0,sizeof(PUG_iMapVotes));
                
                new 
iPlayers[32],iNum,iPlayer;
                
get_players(iPlayers,iNum,"ch");
                
                for(new 
i;iNum;i++)
                {
                    
iPlayer iPlayers[i];
                    
                    if(
is_user_connected(iPlayer) && PUG_isValidTeam(iPlayer))
                    {
                        
menu_display(iPlayer,PUG_iMenuMap);
                    }
                }
                
                
set_task(get_pcvar_float(PUG_VoteDelay),"PUG_VoteEnd",PUG_TASK_VOTE);
                
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_VOTE_MAP"
                
);
            }
            else if(!
iVoteMap && !PUG_bTeams)
            {
                
PUG_iMenuStage PUG_MENU_TEAMS;

                
PUG_bTeams true;
                
arrayset(PUG_iTeamVotes,0,sizeof(PUG_iTeamVotes));
                
                new 
iPlayers[32],iNum,iPlayer;
                
get_players(iPlayers,iNum,"ch");
                
                for(new 
i;iNum;i++)
                {
                    
iPlayer iPlayers[i];
                    
                    if(
is_user_connected(iPlayer) && PUG_isValidTeam(iPlayer))
                    {
                        
menu_display(iPlayer,PUG_iMenuTeams);
                    }
                }
                
                
set_task(get_pcvar_float(PUG_VoteDelay),"PUG_VoteEnd",PUG_TASK_VOTE);
                
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_VOTE_TEAM"
                
);
            }
            else if(!
iVoteMap && PUG_bTeams)
            {
                
PUG_iMenuStage PUG_MENU_CFG;
                
                
arrayset(PUG_iConfigVotes,0,sizeof(PUG_iConfigVotes));
                
                new 
iPlayers[32],iNum,iPlayer;
                
get_players(iPlayers,iNum,"ch");
                
                for(new 
i;iNum;i++)
                {
                    
iPlayer iPlayers[i];
                    
                    if(
is_user_connected(iPlayer) && PUG_isValidTeam(iPlayer))
                    {
                        
menu_display(iPlayer,PUG_iMenuCfg);
                    }
                }
                
                
set_task(get_pcvar_float(PUG_VoteDelay),"PUG_VoteEnd",PUG_TASK_VOTE);
                
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_VOTE_CFG"
                
);
            }
        }
        case 
PUG_STAGE_FIRSTHALF:
        {
            new 
szConfig[32];
            
get_pcvar_string(PUG_FirstConfig,szConfig,charsmax(szConfig));

            
PUG_ExecConfig(szConfig,0);

            
PUG_iMenuStage PUG_MENU_NONE;

            
arrayset(PUG_iRounds,0,sizeof(PUG_iRounds));

            
PUG_LO3();
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_LO3"
            
);
        }
        case 
PUG_STAGE_INTERMISSION:
        {
            new 
szConfig[32];
            
get_pcvar_string(PUG_IntermissionConfig,szConfig,charsmax(szConfig));
            
            
PUG_ExecConfig(szConfig,0);
            
            
arrayset(PUG_bReady,0,sizeof(PUG_bReady));
            
            
PUG_HudList();
            
            new 
iTemp PUG_iScores[CS_TEAM_T];
    
            
PUG_iScores[CS_TEAM_T]     = PUG_iScores[CS_TEAM_CT];
            
PUG_iScores[CS_TEAM_CT] = iTemp;
            
            
set_task(get_pcvar_float(PUG_SwitchDelay),"PUG_SwapTeams");

            
PUG_BombRemove(true);

            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_INTERMISSION",
                
PUG_szStage[PUG_iStage]
            );
        }
        case 
PUG_STAGE_SECONDHALF:
        {
            new 
szConfig[32];
            
get_pcvar_string(PUG_SecondConfig,szConfig,charsmax(szConfig));
            
            
PUG_ExecConfig(szConfig,0);
            
            
PUG_LO3();
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %s: %s - %d, %s - %d",
                
PUG_szHead,
                
PUG_szStage[PUG_iStage],
                
PUG_szTeams[CS_TEAM_T],
                
PUG_iScores[CS_TEAM_T],
                
PUG_szTeams[CS_TEAM_CT],
                
PUG_iScores[CS_TEAM_CT]
            );
        }
        case 
PUG_STAGE_OVERTIME:
        {
            new 
szConfig[32];
            
get_pcvar_string(PUG_OvertimeConfig,szConfig,charsmax(szConfig));
            
            
PUG_ExecConfig(szConfig,0);
            
            
PUG_LO3();
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %s: %s - %d, %s - %d",
                
PUG_szHead,
                
PUG_szStage[PUG_iStage],
                
PUG_szTeams[CS_TEAM_T],
                
PUG_iScores[CS_TEAM_T],
                
PUG_szTeams[CS_TEAM_CT],
                
PUG_iScores[CS_TEAM_CT]
            );
        }
        case 
PUG_STAGE_END:
        {
            new 
szConfig[32];
            
get_pcvar_string(PUG_EndConfig,szConfig,charsmax(szConfig));
            
            
PUG_ExecConfig(szConfig,0);
            
            
arrayset(PUG_bReady,0,sizeof(PUG_bReady));
            
            if(!
get_pcvar_num(PUG_VoteMap)) set_pcvar_num(PUG_VoteMap,1);

            
PUG_BombRemove(true);
            
            if(
PUG_iScores[CS_TEAM_T] != PUG_iScores[CS_TEAM_CT])
            {
                new 
CsTeams:iWinner = (PUG_iScores[CS_TEAM_T] > PUG_iScores[CS_TEAM_CT]) ? CS_TEAM_T CS_TEAM_CT;
                new 
CsTeams:iLosers = (iWinner == CS_TEAM_T) ? CS_TEAM_CT CS_TEAM_T;

                new 
szMessage[86];
                
format
                
(
                    
szMessage,
                    
charsmax(szMessage),
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_END_WIN",
                    
PUG_szTeamNames[iWinner],
                    
PUG_iScores[iWinner],
                    
PUG_iScores[iLosers]
                );
                
                
console_print(0,szMessage);
                
client_print_color(0,print_team_grey,szMessage);
            }
            else
            {
                new 
szMessage[64];
                
format
                
(
                    
szMessage,
                    
charsmax(szMessage),
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_END_TIE",
                    
PUG_iScores[CS_TEAM_T],
                    
PUG_iScores[CS_TEAM_CT]
                );
                
                
console_print(0,szMessage);
                
client_print_color(0,print_team_grey,szMessage);
            }
        }
    }
}

public 
PUG_SayFilter(id)
{
    new 
szArgs[192];
    
read_args(szArgs,charsmax(szArgs));
    
remove_quotes(szArgs);
    
    if(
szArgs[0] == '.')
    {
        
client_cmd(id,szArgs);
        
        return 
PLUGIN_HANDLED;
    }

    return 
PLUGIN_CONTINUE;
}

public 
PUG_Locked(id)
{
    if(
PUG_iStage == PUG_STAGE_START)
    {
        return 
PLUGIN_HANDLED;
    }

    return 
PLUGIN_CONTINUE;
}

public 
client_authorized(id)
{
    new 
iReconnectTime get_pcvar_num(PUG_Reconnect);
    
    if(
iReconnectTime)
    {
        new 
szSteam[35]; 
        
get_user_authid(id,szSteam,charsmax(szSteam));       
         
        new 
iTime;
    
        if(
TrieGetCell(PUG_tRetry,szSteam,iTime))
        {
            if(
get_systime() - iTime iReconnectTime)
            {
                new 
szReason[32];
                
                
format
                
(
                    
szReason,
                    
charsmax(szReason),
                    
"%L",
                    
LANG_SERVER,
                    
"PUG_RETRY_MSG",
                    (
iReconnectTime iTime get_systime())
                );
    
                
PUG_Disconnect(id,szReason);
            }
        }
        
        return 
PLUGIN_HANDLED;
    }
    
    
PUG_bReady[id] = false;
    
    
arrayset(PUG_iHits[id],0,sizeof(PUG_iHits[]));
    
arrayset(PUG_iDamage[id],0,sizeof(PUG_iDamage[]));
    
    
PUG_HudList();
    
    return 
PLUGIN_CONTINUE;
}

public 
client_putinserver(id)
{
    
PUG_HudList();

    
set_task(10.0,"PUG_IntroMessage",id);
}

public 
client_infochanged(idset_task(0.1,"PUG_HudList");

public 
client_disconnect(id)
{
    
PUG_HudList();
    
    for(new 
i;PUG_MAX_PLAYERS;++i)
    {
        
PUG_iHits[i][id] = 0;
        
PUG_iDamage[i][id] = 0;
    }
    
    if(
get_pcvar_num(PUG_Reconnect))
    {
        new 
szSteam[35];
        
get_user_authid(id,szSteam,charsmax(szSteam));
        
        
TrieSetCell(PUG_tRetry,szSteam,get_systime());
    }

    if(
PUG_STAGE_FIRSTHALF <= PUG_iStage <= PUG_STAGE_OVERTIME)
    {
        if(
get_playersnum() <= PUG_MOD_MINPLAYERS)
        {
            
PUG_Change(PUG_STAGE_END);
        }
    }
}

public 
PUG_IntroMessage(id)
{
    if(
is_user_connected(id))
    {
        if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
        {
            
client_print_color
            
(
                
id,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_INTRO"
            
);
        }

        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_HELP"
        
);
    }
}

public 
PUG_HudList()
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_START || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        
PUG_HudDisplay(9999.0);
    }
}

public 
PUG_CheckPlayer(id)
{
    new 
iMaxPlayers get_pcvar_num(PUG_MaxPlayers);
        
    if(
PUG_GetPlayers() >= iMaxPlayers)
    {
        new 
szMsg[32];
        
formatex(szMsg,charsmax(szMsg),"%L",LANG_PLAYER,"PUG_FULL");
    
        if(
is_user_hltv(id) && !get_pcvar_num(PUG_AllowHLTV))
        {
            
PUG_Disconnect(id,szMsg);
        }
        else if(!
get_pcvar_num(PUG_AllowSpec))
        {
            
PUG_Disconnect(id,szMsg);
        }
    }
    
    if(
get_playersnum(1) > iMaxPlayers)
    {
        new 
szMsg[32];
        
formatex(szMsg,charsmax(szMsg),"%L",LANG_PLAYER,"PUG_FULL");

        if(!
is_user_hltv(id) || !get_pcvar_num(PUG_AllowSpec))
        {
            
PUG_Disconnect(id,szMsg);
        }
    }
}

PUG_RestoreOrder()
{
    while(
PUG_GetPlayers() > get_pcvar_num(PUG_MaxPlayers))
    {
        new 
iTest 3600,iWho,iTime;

        new 
iPlayers[32],iNum,iPlayer;
        
get_players(iPlayers,iNum,"ch");

        for(new 
i;iNum;i++)
        {
            
iPlayer iPlayers[i];

            if(!
is_user_hltv(iPlayer) && is_user_connected(iPlayer)) 
            {
                
iTime get_user_time(iPlayer,1);

                     if(
iTest >= iTime)
                {
                    
iTest iTime;

                    
iWho iPlayer;
                }
            }
        }
        
        new 
szMsg[64];
        
formatex(szMsg,charsmax(szMsg),"%L",LANG_PLAYER,"PUG_FULL_TIME");

        
PUG_Disconnect(iWho,szMsg);
    }
}

public 
PUG_ReadyUp(id)
{
    if(!
PUG_isValidTeam(id)) return PLUGIN_CONTINUE;

    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(
PUG_bReady[id])
        {
            
client_print_color(id,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_READY_ALREADY");
        }
        else
        {
            
PUG_bReady[id] = true;
            
            new 
szName[32];
            
get_user_name(id,szName,charsmax(szName));
            
            
client_print_color(0,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_READY",szName);
            
            
PUG_CheckReady();
        }
    }
    else
    {
        
client_print_color(id,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_CMD_IMPOSSIBLE");
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_ReadyDown(id)
{
    if(!
PUG_isValidTeam(id)) return PLUGIN_CONTINUE;

    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(!
PUG_bReady[id])
        {
            
client_print_color(id,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_READY_NOTREADY");
        }
        else
        {
            
PUG_bReady[id] = false;
            
            new 
szName[32];
            
get_user_name(id,szName,charsmax(szName));
            
            
client_print_color(0,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_READY_UNREADY",szName);

            
PUG_HudList();
        }
    }
    else
    {
        
client_print_color(id,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_CMD_IMPOSSIBLE");
    }
    
    return 
PLUGIN_HANDLED;
}

PUG_CheckReady()
{
    
PUG_HudList();
    
    new 
iReady;

    for(new 
i;sizeof(PUG_bReady);i++)
    {
        if(
PUG_bReady[i]) iReady++;
    }
    
    if(
iReady >= get_pcvar_num(PUG_MinPlayers))
    {
        switch(
PUG_iStage)
        {
            case 
PUG_STAGE_READY:
            {
                
PUG_Change(PUG_STAGE_START);
            }
            case 
PUG_STAGE_INTERMISSION:
            {
                
PUG_Change(PUG_STAGE_SECONDHALF);
            }
            case 
PUG_STAGE_END:
            {
                
PUG_Change(PUG_STAGE_START);
            }
        }
    }
}

PUG_HudDisplay(Float:fTime)
{
    switch(
PUG_iStage)
    {
        case 
PUG_STAGE_READY,PUG_STAGE_INTERMISSION,PUG_STAGE_END:
        {
            new 
szReady[1056],szNotReady[1056],szName[32];
            
            new 
iPlayers[32],iNum,iPlayer;
            
get_players(iPlayers,iNum,"ch");
            
            new 
iReadys;
            
            for(new 
i;iNum;i++)
            {
                
iPlayer iPlayers[i];
                
                if(
PUG_isValidTeam(iPlayer))
                {
                    
get_user_name(iPlayer,szName,charsmax(szName));
                    
                    if(
PUG_bReady[iPlayer])
                    {
                        
iReadys++;
                        
                        
format(szReady,charsmax(szReady),"%s%s^n",szReady,szName);
                    }
                    else 
format(szNotReady,charsmax(szNotReady),"%s%s^n",szNotReady,szName);
                }
            }
            
            new 
iMinPlayers get_pcvar_num(PUG_MinPlayers);
        
            
set_hudmessage(0,255,0,0.23,0.02,0,0.0,fTime,0.0,0.0,3);
            
show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_UNREADY",PUG_GetPlayers() - iReadys,iMinPlayers);
        
            
set_hudmessage(0,255,0,0.58,0.02,0,0.0,fTime,0.0,0.0,2);
            
show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_READY",iReadys,iMinPlayers);
        
            
set_hudmessage(255,255,225,0.58,0.05,0,0.0,fTime,0.0,0.0,1);
            
show_hudmessage(0,szReady);
        
            
set_hudmessage(255,255,225,0.23,0.05,0,0.0,fTime,0.0,0.0,4);
            
show_hudmessage(0,szNotReady);
        }
        case 
PUG_STAGE_START:
        {
            switch(
PUG_iMenuStage)
            {
                case 
PUG_MENU_CAPTAINS:
                {
                    new 
szTRs[1056],szCTs[1056],szName[38];
                    
                    new 
iPlayers[32],iNum,iPlayer;
                    
get_players(iPlayers,iNum,"h");
                    
                    for(new 
i;iNum;i++)
                    {
                        
iPlayer iPlayers[i];
                        
                        
get_user_name(iPlayer,szName,charsmax(szName));
                        
                        if(
PUG_iCaptain[0] == iPlayer || PUG_iCaptain[1] == iPlayer)
                        {
                            
format(szName,charsmax(szName),"%s (C)",szName);
                        }
                        
                        switch(
cs_get_user_team(iPlayer))
                        {
                            case 
CS_TEAM_T:
                            {
                                
format(szTRs,charsmax(szTRs),"%s%s^n",szTRs,szName);
                            }
                            case 
CS_TEAM_CT:
                            {
                                
format(szCTs,charsmax(szCTs),"%s%s^n",szCTs,szName);
                            }
                        }
                    }
                    
                    
set_hudmessage(255,0,0,0.23,0.02,0,0.0,fTime,0.0,0.0,1);
                    
show_hudmessage(0,PUG_szTeamNames[CS_TEAM_T]);
                
                    
set_hudmessage(255,255,255,0.23,0.05,0,0.0,fTime,0.0,0.0,2);
                    
show_hudmessage(0,szTRs);
                
                    
set_hudmessage(0,0,255,0.58,0.02,0,0.0,fTime,0.0,0.0,3);
                    
show_hudmessage(0,PUG_szTeamNames[CS_TEAM_CT]);

                    
set_hudmessage(255,255,255,0.58,0.05,0,0.0,fTime,0.0,0.0,4);
                    
show_hudmessage(0,szCTs);
                }
                case 
PUG_MENU_MAP:
                {
                    
set_hudmessage(0,255,0,0.23,0.02,0,0.0,fTime,0.0,0.0,1);
                    
show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_MAP");
                    
                    new 
szMaps[256],iVotes;
                    
                    for(new 
x;PUG_iMapCount;++x)
                    {
                        if(
PUG_iMapVotes[x])
                        {
                            
iVotes++;
                            
                            
format
                            
(
                                
szMaps,
                                
charsmax(szMaps),
                                
"%s%s - %d %s^n",
                                
szMaps,
                                
PUG_szMapNames[x],
                                
PUG_iMapVotes[x],
                                (
PUG_iMapVotes[x] > 1) ? "votes" "vote"
                            
);
                        }
                    }
                    
                    new 
szNone[32];
                    
formatex(szNone,charsmax(szNone),"%L",LANG_PLAYER,"PUG_HUD_NONE");
                    
                    
set_hudmessage(255,255,255,0.23,0.05,0,0.0,fTime,0.0,0.0,2);
                    
show_hudmessage(0,iVotes szMaps szNone);
                }
                case 
PUG_MENU_TEAMS:
                {
                    
set_hudmessage(0,255,0,0.23,0.02,0,0.0,fTime,0.0,0.0,1);
                    
show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_TEAM");
                    
                    new 
szTeams[128],iVotes;
                    
                    for(new 
x;PUG_SORT_TYPE;++x)
                    {
                        if(
PUG_iTeamVotes[x])
                        {
                            
iVotes++;
                            
                            
format
                            
(
                                
szTeams,
                                
charsmax(szTeams),
                                
"%s%s - %d %s^n",
                                
szTeams,
                                
PUG_szTeamTypes[x],
                                
PUG_iTeamVotes[x],
                                (
PUG_iTeamVotes[x] > 1) ? "votes" "vote"
                            
);
                        }
                    }
                    
                    new 
szNone[32];
                    
formatex(szNone,charsmax(szNone),"%L",LANG_PLAYER,"PUG_HUD_NONE");
                    
                    
set_hudmessage(255,255,255,0.23,0.05,0,0.0,fTime,0.0,0.0,2);
                    
show_hudmessage(0,iVotes szTeams szNone);
                }
                case 
PUG_MENU_CFG:
                {
                    
set_hudmessage(0,255,0,0.23,0.02,0,0.0,fTime,0.0,0.0,1);
                    
show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_CFG");
                    
                    new 
szConfigs[256],iVotes;
                    
                    for(new 
x;PUG_CFG_FILE;++x)
                    {
                        if(
PUG_iConfigVotes[x])
                        {
                            
iVotes++;
                            
                            
format
                            
(
                                
szConfigs,
                                
charsmax(szConfigs),
                                
"%s%s - %d %s^n",
                                
szConfigs,
                                
PUG_szConfigTypes[x],
                                
PUG_iConfigVotes[x],
                                (
PUG_iConfigVotes[x] > 1) ? "votes" "vote"
                            
);
                        }
                    }
                    
                    new 
szNone[32];
                    
formatex(szNone,charsmax(szNone),"%L",LANG_PLAYER,"PUG_HUD_NONE");
                    
                    
set_hudmessage(255,255,255,0.23,0.05,0,0.0,fTime,0.0,0.0,2);
                    
show_hudmessage(0,iVotes szConfigs szNone);
                }
            }
        }
    }
}

public 
PUG_MenuHandler(id,iMenu,iKey)
{
    new 
szData[6],szOption[64],iAccess,iCallBack;
    
menu_item_getinfo(iMenu,iKey,iAccess,szData,charsmax(szData),szOption,charsmax(szOption),iCallBack);
    
    switch(
PUG_iMenuStage)
    {
        case 
PUG_MENU_MAP:
        {
            if(
iKey == MENU_EXIT) return PLUGIN_HANDLED;
            
            
PUG_iMapVotes[str_to_num(szData)]++;
            
            
PUG_bVoted[id] = true;
            
            
PUG_HudList();
            
            new 
szName[32];
            
get_user_name(id,szName,charsmax(szName));
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_VOTE_CHOOSED",
                
szName,
                
szOption
            
);
            
            if(
PUG_StopVote()) PUG_VoteEnd();
        }
        case 
PUG_MENU_TEAMS:
        {
            if(
iKey == MENU_EXIT) return PLUGIN_HANDLED;
            
            
PUG_iTeamVotes[str_to_num(szData)]++;
            
            
PUG_bVoted[id] = true;
            
            
PUG_HudList();

            new 
szName[32];
            
get_user_name(id,szName,charsmax(szName));
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_VOTE_CHOOSED",
                
szName,
                
szOption
            
);
            
            if(
PUG_StopVote()) PUG_VoteEnd();
        }
        case 
PUG_MENU_CAPTAINS:
        {
            if(
iKey == MENU_EXIT)
            {
                
menu_display(id,iMenu,0);
                
                return 
PLUGIN_HANDLED;
            }
            
            new 
iPlayer str_to_num(szData);
            
            
cs_set_user_team(iPlayer,cs_get_user_team(id));
        
            new 
szTemp[2][32];
            
get_user_name(id,szTemp[0],charsmax(szTemp[]));
            
get_user_name(iPlayer,szTemp[1],charsmax(szTemp[]));
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_CAPT_CHOOSED",
                
szTemp[0],
                
szTemp[1]
            );
            
            if(
is_user_connected(PUG_iCaptain[0]) && is_user_connected(PUG_iCaptain[1]))
            {
                
set_task(1.5,"PUG_CaptainMenu",(id == PUG_iCaptain[0]) ? PUG_iCaptain[1] : PUG_iCaptain[0]);
            }
            else
            {
                
set_task(3.0,"PUG_CaptainJoin",(id == PUG_iCaptain[0]) ? PUG_iCaptain[1] : PUG_iCaptain[0]);
                
                
client_print_color(0,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_CAPT_WAIT");
            }
            
            
menu_destroy(iMenu);
            
remove_task(id PUG_TASK_AUTO);
        }
        case 
PUG_MENU_CFG:
        {
            if(
iKey == MENU_EXIT) return PLUGIN_HANDLED;
            
            
PUG_iConfigVotes[str_to_num(szData)]++;
            
            
PUG_bVoted[id] = true;
            
            
PUG_HudList();
            
            new 
szName[32];
            
get_user_name(id,szName,charsmax(szName));
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_VOTE_CHOOSED",
                
szName,
                
szOption
            
);
            
            if(
PUG_StopVote()) PUG_VoteEnd();
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_VoteEnd()
{
    
show_menu(0,0,"^n",1);
    
remove_task(PUG_TASK_VOTE);
    
    switch(
PUG_iMenuStage)
    {
        case 
PUG_MENU_MAP:
        {
            new 
iWinner,iWinnerVotes,iVotes;

            for(new 
i;PUG_iMapCount;i++)
            {
                
iVotes PUG_iMapVotes[i];
            
                if(
iVotes >= iWinnerVotes)
                {
                    
iWinner i;
                    
iWinnerVotes iVotes;
                }
                else if(
iVotes == iWinnerVotes)
                {
                    if(
random_num(0,1))
                    {
                        
iWinner i;
                        
iWinnerVotes iVotes;
                    }
                }
            }
            
            if(
PUG_iMapVotes[iWinner])
            {
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_VOTE_WON",
                    
PUG_szMapNames[iWinner]
                );
            }
            else
            {
                
iWinner random_num(1,PUG_iMapCount);
                
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_VOTE_AUTO",
                    
PUG_szMapNames[iWinner]
                );
            }
            
            
set_task
            
(
                
get_pcvar_float(PUG_SwitchDelay),
                
"PUG_ChangeMap",
                
_,
                
PUG_szMapNames[iWinner],
                
sizeof(PUG_szMapNames)
            );
            
            return 
PLUGIN_HANDLED;
        }
        case 
PUG_MENU_TEAMS:
        {
            new 
iWinner,iWinnerVotes,iVotes;

            for(new 
i;sizeof(PUG_szTeamTypes);++i)
            {
                
iVotes PUG_iTeamVotes[i];
            
                if(
iVotes iWinnerVotes)
                {
                    
iWinner i;
                    
iWinnerVotes iVotes;
                }
                else if(
iVotes == iWinnerVotes)
                {
                    if(
random_num(0,1))
                    {
                        
iWinner i;
                        
iWinnerVotes iVotes;
                    }
                }
            }
            
            if(
PUG_iTeamVotes[iWinner])
            {
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_VOTE_WON",
                    
PUG_szTeamTypes[iWinner]
                );
            }
            else
            {
                
iWinner random(sizeof(PUG_szTeamTypes));
                
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_VOTE_AUTO",
                    
PUG_szTeamTypes[iWinner]
                );
            }
            
            
PUG_ChangeTeams(iWinner);
            
            return 
PLUGIN_HANDLED;
        }
        case 
PUG_MENU_CFG:
        {
            new 
iWinner,iWinnerVotes,iVotes;
            
            for(new 
i;sizeof(PUG_szConfigTypes);++i)
            {
                
iVotes PUG_iConfigVotes[i];
            
                if(
iVotes iWinnerVotes)
                {
                    
iWinner i;
                    
iWinnerVotes iVotes;
                }
                else if(
iVotes == iWinnerVotes)
                {
                    if(
random_num(0,1))
                    {
                        
iWinner i;
                        
iWinnerVotes iVotes;
                    }
                }
            }
    
            if(
PUG_iConfigVotes[iWinner])
            {
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_VOTE_WON",
                    
PUG_szConfigTypes[iWinner]
                );
            }
            else
            {
                
iWinner random(sizeof(PUG_szConfigTypes));
                
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_VOTE_AUTO",
                    
PUG_szConfigTypes[iWinner]
                );
            }
            
            
PUG_SetConfigs(iWinner);
            
            return 
PLUGIN_HANDLED;
        }
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
PUG_ChangeMap(const szMap[])
{
    
set_pcvar_num(PUG_VoteMap,0);
    
server_cmd("changelevel %s",szMap);
}

PUG_ChangeTeams(iType)
{
    switch(
iType)
    {
        case 
PUG_SORT_AUTO:
        {
            new 
iPlayers[32],iNum;
            
get_players(iPlayers,iNum);
            
            for(new 
i;iNum;i++)
            {
                if(!
PUG_isValidTeam(iPlayers[i])) iPlayers[i--] = iPlayers[--iNum];
            }
            
            new 
iPlayer,CsTeams:iTeam random(2) ? CS_TEAM_T CS_TEAM_CT;
            
            new 
iRandom;
            
            while(
iNum)
            {
                
iRandom random(iNum);
                
                
iPlayer iPlayers[iRandom];
                
                
cs_set_user_team(iPlayer,iTeam);
                
                
iPlayers[iRandom] = iPlayers[--iNum];
                
                
iTeam CsTeams:((_:iTeam) % 1);
            }
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_SORT_AUTO"
            
);
            
            
PUG_Change(PUG_STAGE_START);
        }
        case 
PUG_SORT_NONE:
        {
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_SORT_NONE"
            
);
            
            
PUG_Change(PUG_STAGE_START);
        }
        case 
PUG_SORT_CAPTAINS:
        {
            
PUG_iMenuStage PUG_MENU_CAPTAINS;
            
            new 
iPlayers[32],iNum,iPlayer;
            
get_players(iPlayers,iNum,"h");
            
            if(
iNum PUG_CAPTAIN_MINPLAYERS)
            {
                
client_print_color
                
(
                    
0,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_CAPT_MINPLAYERS",
                    
PUG_CAPTAIN_MINPLAYERS
                
);
                
                
PUG_Change(PUG_STAGE_START);
                
                return;
            }
            
            for(new 
i;iNum;i++)
            {
                
iPlayer iPlayers[i];
                
                if(!
PUG_iCaptain[0])
                {
                    
PUG_iCaptain[0] = iPlayer;
                    
                    
cs_set_user_team(iPlayer,CS_TEAM_T);
                    
                    continue;
                }
                
                if(!
PUG_iCaptain[1])
                {
                    
PUG_iCaptain[1] = iPlayer;
                    
                    
cs_set_user_team(iPlayer,CS_TEAM_CT);
                    
                    continue;
                }
                
                
user_silentkill(iPlayer);
                
cs_set_user_team(iPlayer,CS_TEAM_SPECTATOR);
            }
            
            
set_pcvar_num(PUG_sv_restart,1);
            
            new 
szName[2][32];
            
get_user_name(PUG_iCaptain[0],szName[0],charsmax(szName[]));
            
get_user_name(PUG_iCaptain[1],szName[1],charsmax(szName[]));
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_CAPT_ARE",
                
szName[0],
                
szName[1]
            );
            
            
set_task(2.0,"PUG_CaptainMenu",PUG_iCaptain[random(1)]);
        }
        default:
        {
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_SORT_OFF"
            
);
            
            
PUG_Change(PUG_STAGE_START);
        }
    }
}

PUG_SetConfigs(iType)
{
    switch(
iType)
    {
        case 
PUG_CFG_CAL:
        {
            
set_pcvar_string(PUG_FirstConfig,    "cal.rc");
            
set_pcvar_string(PUG_SecondConfig,    "cal.rc");
            
set_pcvar_string(PUG_OvertimeConfig,    "cal-ot.rc");
        }
        case 
PUG_CFG_CEVO:
        {
            
set_pcvar_string(PUG_FirstConfig,    "cevo.rc");
            
set_pcvar_string(PUG_SecondConfig,    "cevo.rc");
            
set_pcvar_string(PUG_OvertimeConfig,    "cevo-ot.rc");
        }
        default:
        {
            
set_pcvar_string(PUG_FirstConfig,    "cal.rc");
            
set_pcvar_string(PUG_SecondConfig,    "cal.rc");
            
set_pcvar_string(PUG_OvertimeConfig,    "cal-ot.rc");
        }
    }
    
    
PUG_Change(PUG_STAGE_FIRSTHALF);
}

public 
PUG_CaptainMenu(id)
{
    
PUG_HudList();
    
    if(
is_user_bot(id))
    {
        
PUG_CaptainTask(id PUG_TASK_AUTO); 
        
        return;
    }
    
    new 
iPlayers[32],iNum,iPlayer;
    
get_players(iPlayers,iNum,"h");
    
    new 
szName[32],szTemp[3],iSpec;
    new 
iMenu menu_create("Escolha um Player:","PUG_MenuHandler");
    
    for(new 
i;iNum;i++)
    {
        
iPlayer iPlayers[i];
        
        if(
cs_get_user_team(iPlayer) == CS_TEAM_SPECTATOR)
        {
            
iSpec++;
            
            
get_user_name(iPlayer,szName,charsmax(szName));
                    
            
num_to_str(iPlayer,szTemp,charsmax(szTemp));
            
menu_additem(iMenu,szName,szTemp);
        }
    }
    
    if(!
iSpec)
    {
        
PUG_Change(PUG_STAGE_START);
        
        
arrayset(PUG_iCaptain,0,sizeof(PUG_iCaptain));
        
        return;
    }
    
    
menu_setprop(iMenu,MPROP_EXIT,MEXIT_NEVER);
    
    
menu_display(id,iMenu);
    
    
set_task(11.5,"PUG_CaptainTask",id PUG_TASK_AUTO);
}

public 
PUG_CaptainTask(id)
{
    
id -= PUG_TASK_AUTO;
    
    new 
iPlayers[32],iNum;
    
get_players(iPlayers,iNum,"h");
    
    new 
bool:bSpec;
    
    for(new 
iiNum;i++)
    {
        if(
cs_get_user_team(iPlayers[i]) == CS_TEAM_SPECTATOR)
        {
            
bSpec true;
        }
    }
    
    if(!
bSpec)
    {
        
PUG_Change(PUG_STAGE_START);
        
        
arrayset(PUG_iCaptain,0,sizeof(PUG_iCaptain));
        
        return;
    }
    
    new 
iRandom random(iNum);
    
    while(
cs_get_user_team(iPlayers[iRandom]) != CS_TEAM_SPECTATOR)
    {
        
iRandom random(iNum);
    }
    
    if(
is_user_connected(id))
    {
        if(
is_user_connected(iPlayers[iRandom]))
        {
            
cs_set_user_team(iPlayers[iRandom],cs_get_user_team(id));
            
            new 
szName[2][32];
            
get_user_name(id,szName[0],charsmax(szName[]));
            
get_user_name(iPlayers[iRandom],szName[1],charsmax(szName[]));
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_CAPT_CHOOSED",
                
szName[0],
                
szName[1]
            );
        }
        
        
set_task(1.5,"PUG_CaptainMenu",(id == PUG_iCaptain[0]) ? PUG_iCaptain[1] : PUG_iCaptain[0]);
    }
    else
    {
        
set_task(3.0,"PUG_CaptainJoin",(id == PUG_iCaptain[0] ? PUG_iCaptain[1] : PUG_iCaptain[0]));

        
client_print_color
        
(
            
0,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_CAPT_WAIT"
        
);
    }
    
    
show_menu(id,0,"^n",1);
}

public 
PUG_CaptainJoin(iNext)
{
    if(
is_user_connected(PUG_iCaptain[0]) && is_user_connected(PUG_iCaptain[1]))
    {
        
set_task(1.5,"PUG_CaptainMenu",iNext);
    }
    else
    {
        
set_task(3.0,"PUG_CaptainJoin",iNext);
        
        
client_print_color
        
(
            
0,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_CAPT_WAIT"
        
);
    }
}

PUG_LO3()
{
    
PUG_BombRemove(false);

    
set_task(0.2,"PUG_RestartRound",_,"1",1);
    
set_task(2.2,"PUG_RestartRound",_,"2",1);
    
set_task(5.8,"PUG_RestartRound",_,"3",1);
    
    
set_task(10.0,"PUG_LiveMessage");
}

public 
PUG_LiveMessage()
{
    
set_hudmessage(0,255,0,-1.0,0.3,0,6.0,6.0);
    
show_hudmessage(0,"--- MATCH IS LIVE ---");
}

public 
PUG_RestartRound(const szSeconds[]) set_pcvar_num(PUG_sv_restart,str_to_num(szSeconds));

public 
PUG_SendAudio()
{
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        
PUG_bInRound false;
        
        new 
szTeam[22];
        
read_data(2,szTeam,charsmax(szTeam));
        
        if(
containi(szTeam,"terwin") != -1)
        {
            
PUG_iRounds[0]++;
            
PUG_iScores[CS_TEAM_T]++;
            
            if(
PUG_iStage == PUG_STAGE_OVERTIMEPUG_iRounds[2]++;
            
            
console_print
            
(
                
0,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_ROUND_WON",
                
PUG_iRounds[0],
                
PUG_szTeamNames[CS_TEAM_T]
            );
        }
        else if(
containi(szTeam,"ctwin") != -1)
        {
            
PUG_iRounds[0]++;
            
PUG_iScores[CS_TEAM_CT]++;
            
            if(
PUG_iStage == PUG_STAGE_OVERTIMEPUG_iRounds[2]++;
                
            
console_print
            
(
                
0,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_ROUND_WON",
                
PUG_iRounds[0],
                
PUG_szTeamNames[CS_TEAM_CT]
            );
        }
        else
        {
            
PUG_iRounds[1]++;
            
            
console_print
            
(
                
0,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_ROUND_NONE"
            
);
        }
    }
}

public 
PUG_RoundEnd()
{
    switch(
PUG_iStage)
    {
        case 
PUG_STAGE_FIRSTHALF:
        {
            if(
PUG_iRounds[0] == (get_pcvar_num(PUG_MaxRounds) / 2))
            {
                
PUG_Change(PUG_STAGE_INTERMISSION);
            }
        }
        case 
PUG_STAGE_SECONDHALF:
        {
            new 
iMaxRounds get_pcvar_num(PUG_MaxRounds);
            
            if(
PUG_iScores[CS_TEAM_T] > (iMaxRounds 2))
            {
                
PUG_Change(PUG_STAGE_END);
            }
            else if(
PUG_iScores[CS_TEAM_CT] > (iMaxRounds 2))
            {
                
PUG_Change(PUG_STAGE_END);
            }
            else if(
PUG_iRounds[0] == iMaxRounds)
            {
                
PUG_Change(PUG_STAGE_INTERMISSION);
            }
        }
        case 
PUG_STAGE_OVERTIME:
        {
            new 
iOT get_pcvar_num(PUG_OTRounds);
            
            new 
iRoundsOT = (iOT 2);
            
            if(
PUG_iRounds[0] == iRoundsOT)
            {
                
PUG_Change(PUG_STAGE_INTERMISSION);
            }
            else if((
PUG_iScores[CS_TEAM_T] - PUG_iScores[CS_TEAM_CT]) >= (iRoundsOT 1))
            {
                
PUG_Change(PUG_STAGE_END);
            }
            else if((
PUG_iScores[CS_TEAM_CT] - PUG_iScores[CS_TEAM_T]) >= (iRoundsOT 1))
            {
                
PUG_Change(PUG_STAGE_END);
            }
        }
    }
}

public 
PUG_RoundStart()
{
    
PUG_bInRound true;
    
    for(new 
i;PUG_MAX_PLAYERS;++i)
    {
        
arrayset(PUG_iHits[i],0,sizeof(PUG_iHits));
        
arrayset(PUG_iDamage[i],0,sizeof(PUG_iDamage));    
    }
    
    switch(
PUG_iStage)
    {
        case 
PUG_STAGE_FIRSTHALF:
        {
            if(
PUG_iRounds[0]) PUG_Scores(0);
        }
        case 
PUG_STAGE_SECONDHALF:
        {
            if(
PUG_iRounds[0] != (get_pcvar_num(PUG_MaxRounds) / 2)) PUG_Scores(0);
        }
        case 
PUG_STAGE_OVERTIME:
        {
            if(
PUG_iRounds[0] != get_pcvar_num(PUG_MaxRounds)) PUG_Scores(0);
        }
    }
}

public 
PUG_Round(id)
{
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_STAGE_OVERTIME)
    {
        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_ROUND",
            (
PUG_iRounds[0] + 1)
        );
    }
    else
    {
        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_CMD_IMPOSSIBLE"
        
);
    }

    return 
PLUGIN_HANDLED;
}

public 
PUG_Scores(id)
{
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(
PUG_iScores[CS_TEAM_T] != PUG_iScores[CS_TEAM_CT])
        {
            new 
CsTeams:iWinner = (PUG_iScores[CS_TEAM_T] > PUG_iScores[CS_TEAM_CT]) ? CS_TEAM_T CS_TEAM_CT;
            
            
client_print_color
            
(
                
0,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_SCORE_WINNER",
                
PUG_szTeamNames[iWinner],
                
PUG_iScores[iWinner],
                (
iWinner == CS_TEAM_T) ? PUG_iScores[CS_TEAM_CT] : PUG_iScores[CS_TEAM_T]
            );
        }
        else
        {
            
client_print_color
            
(
                
id,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_SCORE_TIED",
                
PUG_iScores[CS_TEAM_T],
                
PUG_iScores[CS_TEAM_CT]
            );
        }
    }
    else
    {
        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_CMD_IMPOSSIBLE"
        
);
    }
    
    return 
PLUGIN_HANDLED;    
}

public 
PUG_Status(id)
{
    
client_print_color
    
(
        
id,
        
print_team_grey,
        
"%s %L",
        
PUG_szHead,
        
LANG_PLAYER,
        
"PUG_STATUS",
        
PUG_GetPlayers(),
        
get_pcvar_num(PUG_MinPlayers),
        
get_pcvar_num(PUG_MaxPlayers),
        
PUG_szStage[PUG_iStage]
    );
    
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_STATUS_ROUND",
            
PUG_iRounds[0],
            
PUG_iRounds[1],
            
PUG_szTeams[CS_TEAM_T],
            
PUG_iScores[CS_TEAM_T],
            
PUG_szTeams[CS_TEAM_CT],
            
PUG_iScores[CS_TEAM_CT]
        );
    }

    return 
PLUGIN_HANDLED;
}

public 
PUG_SwapTeams()
{
    new 
iPlayers[32],iNum,Players;
    
get_players(iPlayers,iNum,"h");
    
    for(new 
i;iNum;i++)
    {
        
Players iPlayers[i];
    
        switch(
cs_get_user_team(Players))
        {
            case 
CS_TEAM_T:
            {
                
cs_set_user_team(Players,CS_TEAM_CT);
            }
            case 
CS_TEAM_CT:
            {
                
cs_set_user_team(Players,CS_TEAM_T);
            }
        }
    }
    
    
set_pcvar_num(PUG_sv_restart,1);
}

public 
PUG_Money(iMsg,iDest,id)
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(
is_user_connected(id))
        {
            
cs_set_user_money(id,get_pcvar_num(PUG_mp_startmoney),0);
        }

        return 
PLUGIN_HANDLED;
    }

    return 
PLUGIN_CONTINUE;
}

public 
PUG_CurWeapon(id)
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        new 
iWeapon get_user_weapon(id);
        
        if(
PUG_iWeaponSlots[iWeapon] == PUG_SLOT_PRIMARY || PUG_iWeaponSlots[iWeapon] == PUG_SLOT_SECONDARY)
        {
            new 
iAmmo cs_get_user_bpammo(id,iWeapon);
            
            if(
iAmmo PUG_iMaxBPAmmo[iWeapon])
            {
                
cs_set_user_bpammo(id,iWeapon,PUG_iMaxBPAmmo[iWeapon]);
            }
        }
    }
}

public 
client_damage(iAttacker,iVictim,iDamage,iWP,iPlace,TA)
{
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        
PUG_iHits[iAttacker][iVictim]++;

        
PUG_iDamage[iAttacker][iVictim] += iDamage;
    }
}

public 
PUG_HamKilledPost(id)
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        
set_task(0.75,"PUG_Respawn",id);
    }
}

public 
PUG_Respawn(id)
{
    if(
is_user_connected(id) && !is_user_alive(id) && PUG_isValidTeam(id))
    {
        
ExecuteHam(Ham_CS_RoundRespawn,id);
    }
}

public 
PUG_SpawnPost(id)
{
    if(
get_pcvar_num(PUG_TeamMoney))
    {
        if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
        {
            if(
is_user_connected(id) && PUG_isValidTeam(id) && cs_get_user_money(id) != get_pcvar_num(PUG_mp_startmoney))
            {
                
set_task(0.1,"PUG_MoneyTeam",id);
            }
        }
    }
}

public 
PUG_MoneyTeam(id)
{
    new 
szTeam[13];
    
get_user_team(id,szTeam,charsmax(szTeam));

    new 
iPlayers[32],iNum,iPlayer;
    
get_players(iPlayers,iNum,"aeh",szTeam);

    new 
szName[32],szHud[512],iMoney;

    for(new 
i;iNum;i++)
    {
        
iPlayer iPlayers[i];

        
iMoney cs_get_user_money(iPlayer);
        
get_user_name(iPlayer,szName,charsmax(szName));

        
format
        
(
            
szHud,
            
charsmax(szHud),
            
"%s%s $ %d^n",
            
szHud,
            
szName,
            
iMoney
        
);
    }

    
set_hudmessage(0,255,0,0.58,0.02,0,0.0,6.0,0.0,0.0,1);
    
show_hudmessage(id,(szTeam[0] == 'C') ? "Counter-Terrorists:" "Terrorists:");
    
    
set_hudmessage(255,255,225,0.58,0.05,0,0.0,6.0,0.0,0.0,2);
    
show_hudmessage(id,szHud);
}

public 
PUG_StatusIcon(id)
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        
set_pev(id,pev_takedamage,read_data(1) ? DAMAGE_NO DAMAGE_AIM);
    }
}

public 
PUG_fwSetModel(iEntity)
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(!
pev_valid(iEntity)) return;
        
        new 
szClassname[10];
        
pev(iEntity,pev_classname,szClassname,charsmax(szClassname));
        
        if(
equal(szClassname,"weaponbox"))
        {
            
set_pev(iEntity,pev_nextthink,get_gametime() + 0.1);
        }
    }
}

public 
PUG_fwCVarGetFloat(const szCvar[])
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(
equal(szCvar,"mp_buytime"))
        {
            
forward_return(FMV_FLOAT,99999.0);
        
            return 
FMRES_SUPERCEDE;
        }
    }
    
    return 
FMRES_IGNORED;
}

public 
PUG_fwClientKill(id)
{
    if(
is_user_alive(id) && get_pcvar_num(PUG_NoSuicide))
    {
        
console_print(id,"Comando nao permitido.");

        return 
FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED;
}

public 
client_command(id)
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        
PUG_HudList();

        new 
szCommand[32];
        
read_argv(0,szCommand,charsmax(szCommand));
        
        for(new 
x;sizeof(PUG_szRestrictWeapons);x++)
        {
            if(
equal(PUG_szRestrictWeapons[x],szCommand)) return PLUGIN_HANDLED;
        }
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
CS_InternalCommand(id,const szCommand[])
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        for(new 
x;sizeof(PUG_szRestrictWeapons);x++)
        {
            if(
equal(PUG_szRestrictWeapons[x],szCommand)) return PLUGIN_HANDLED;
        }
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
PUG_BuyMenu(id,iKey)
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(
iKey == || iKey == 6) return PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
PUG_ItemMenu(id,iKey
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        switch(
iKey)
        {
            case 
2,3,4,6,7: return PLUGIN_HANDLED;
        }
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
PUG_VoteCommand(id)
{
    if(!
get_pcvar_num(PUG_AllowVoteCmds))
    {
        
console_print
        
(
            
id,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_VOTE_DISABLED"
        
);
        
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
PUG_JoinTeam(id
{
    new 
szArg[3];
    
read_argv(1,szArg,charsmax(szArg));

    return 
PUG_CheckTeam(id,str_to_num(szArg));
}

public 
PUG_TeamSelect(id,iKey) return PUG_CheckTeam(id,iKey 1);

public 
PUG_CheckTeam(id,iNewTeam
{
    new 
iOldTeam _:cs_get_user_team(id);
    new 
iMinPlayers get_pcvar_num(PUG_MinPlayers);
    
    if(
PUG_STAGE_START <= PUG_iStage <= PUG_STAGE_OVERTIME)
    {
        if((
iOldTeam == 1) || (iOldTeam == 2))
        {
            
client_print_color
            
(
                
id,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_TEAM_LOCKED"
            
);

            return 
PLUGIN_HANDLED;
        }
    }

    if(
iNewTeam == && !get_pcvar_num(PUG_AllowSpec)) 
    {
        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_TEAM_SPEC"
        
);
        
        
engclient_cmd(id,"chooseteam");

        return 
PLUGIN_HANDLED;
    }
    
    if(
iNewTeam == iOldTeam)
    {
        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_TEAM_SAMETEAM"
        
);
        
        return 
PLUGIN_HANDLED;
    }

    new 
iPlayers[32],iNum;
    
get_players(iPlayers,iNum,"h");

    new 
iTeam[2];
    
    for(new 
i;iNum;i++)
    {
        switch(
cs_get_user_team(iPlayers[i]))
        {
            case 
CS_TEAM_T: ++iTeam[0];
            
            case 
CS_TEAM_CT: ++iTeam[1];
        }
    }
    
    if(
iNewTeam == 5)
    {
        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_TEAM_AUTO"
        
);
        
        return 
PLUGIN_HANDLED;
    }
    else if((
iNewTeam == 1) && (iTeam[0] == (iMinPlayers 2)))
    { 
        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_TEAM_FULL"
        
);
        
        return 
PLUGIN_HANDLED;
    }
    else if((
iNewTeam == 2) && (iTeam[1] == (iMinPlayers 2)))
    { 
        
client_print_color
        
(
            
id,
            
print_team_grey,
            
"%s %L",
            
PUG_szHead,
            
LANG_PLAYER,
            
"PUG_TEAM_FULL"
        
);
        
        return 
PLUGIN_HANDLED;
    }

    return 
PLUGIN_CONTINUE;
}

public 
PUG_JoinClass(id)
{
    if(
PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(
get_pdata_int(id,205 /* m_iMenu */) == /* MENU_CHOOSEAPPEARANCE */)
        {
            new 
szCommand[11],szArg[32];
            
read_argv(0,szCommand,charsmax(szCommand));
            
read_argv(1,szArg,charsmax(szArg));
        
            
engclient_cmd(id,szCommand,szArg);
            
ExecuteHam(Ham_Player_PreThink,id);

            
PUG_Respawn(id);

            return 
PLUGIN_HANDLED;
        }
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
PUG_HP(id)
{
    if(!
PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(
is_user_alive(id) && PUG_bInRound)
        {
            
client_print_color
            
(
                
id,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_CMD_IMPOSSIBLE"
            
);
        }
        else
        {
            new 
iPlayers[32],iNum,iPlayer;
            
get_players(iPlayers,iNum,"aeh",(cs_get_user_team(id) == CS_TEAM_T) ? "CT" "TERRORIST");
            
            if(!
iNum)
            {
                
client_print_color
                
(
                    
id,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_HP_ALIVE"
                
);
                
                return 
PLUGIN_HANDLED;
            }
            
            new 
szName[32];
            
            for(new 
i;iNum;i++)
            {
                
iPlayer iPlayers[i];
            
                
get_user_name(iPlayer,szName,charsmax(szName));
                
                
client_print_color
                
(
                    
id,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_HP",
                    
szName,
                    
get_user_health(iPlayer),
                    
get_user_armor(iPlayer)
                );
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_HPTeam(id)
{
    if(!
PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(
is_user_alive(id) && PUG_bInRound)
        {
            
client_print_color
            
(
                
id,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_CMD_IMPOSSIBLE"
            
);
        }
        else
        {
            new 
iPlayers[32],iNum,iPlayer;
            
get_players(iPlayers,iNum,"aeh",(cs_get_user_team(id) == CS_TEAM_T) ? "TERRORIST" "CT");
            
            if(!
iNum)
            {
                
client_print_color
                
(
                    
id,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_HP_ALIVE"
                
);
                
                return 
PLUGIN_HANDLED;
            }
            
            new 
szName[32];
            
            for(new 
i;iNum;i++)
            {
                
iPlayer iPlayers[i];
            
                
get_user_name(iPlayer,szName,charsmax(szName));
                
                
client_print_color
                
(
                    
id,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_HP",
                    
szName,
                    
get_user_health(iPlayer),
                    
get_user_armor(iPlayer)
                );
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_HPAll(id)
{
    if(!
PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(
is_user_alive(id) && PUG_bInRound)
        {
            
client_print_color
            
(
                
id,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_CMD_IMPOSSIBLE"
            
);
        }
        else
        {
            new 
iPlayers[32],iNum,iPlayer;
            
get_players(iPlayers,iNum,"ah");
            
            if(!
iNum)
            {
                
client_print_color
                
(
                    
id,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_HP_ALIVE"
                
);
                
                return 
PLUGIN_HANDLED;
            }
            
            new 
szName[32];
            
            for(new 
i;iNum;i++)
            {
                
iPlayer iPlayers[i];
                
                if(
iPlayer != id)
                {
                    
get_user_name(iPlayer,szName,charsmax(szName));
                
                    
client_print_color
                    
(
                        
id,
                        
print_team_grey,
                        
"%s %L",
                        
PUG_szHead,
                        
LANG_PLAYER,
                        
"PUG_HP",
                        
szName,
                        
get_user_health(iPlayer),
                        
get_user_armor(iPlayer)
                    );
                }
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_Damage(id)
{
    if(!
PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(
is_user_alive(id) && PUG_bInRound)
        {
            
client_print_color
            
(
                
id,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_CMD_IMPOSSIBLE"
            
);
        }
        else
        {
            new 
iPlayers[32],iNum,iPlayer;
            
get_players(iPlayers,iNum,"h");
            
            new 
szName[32];
            new 
iDmg,iHit,iCheck;
            
            for(new 
i;iNum;i++)
            {
                
iPlayer iPlayers[i];
                
                
iHit PUG_iHits[id][iPlayer];
                
                if(
iHit)
                {
                    ++
iCheck;
                
                    
iDmg PUG_iDamage[id][iPlayer];
                    
                    if(
iPlayer == id)
                    {
                        
client_print_color
                        
(
                            
id,
                            
print_team_grey,
                            
"%s %L",
                            
PUG_szHead,
                            
LANG_PLAYER,
                            
"PUG_DMG_SELF",
                            
iHit,
                            (
iHit 1) ? "times" "time",
                            
iDmg
                        
);
                    }
                    else
                    {
                        
get_user_name(iPlayer,szName,charsmax(szName));
                        
                        
client_print_color
                        
(
                            
id,
                            
print_team_grey,
                            
"%s %L",
                            
PUG_szHead,
                            
LANG_PLAYER,
                            
"PUG_DMG",
                            
szName,
                            
iHit,
                            (
iHit 1) ? "times" "time",
                            
iDmg
                        
);
                    }
                }
            }
            
            if(!
iCheck)
            {    
                
client_print_color
                
(
                    
id,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_DMG_NONE"
                
);
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_RDamage(id)
{
    if(!
PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(
is_user_alive(id) && PUG_bInRound)
        {
            
client_print_color
            
(
                
id,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_CMD_IMPOSSIBLE"
            
);
        }
        else
        {
            new 
iPlayers[32],iNum,iPlayer;
            
get_players(iPlayers,iNum,"h");
            
            new 
szName[32];
            new 
iDmg,iHit,iCheck;
            
            for(new 
i;iNum;i++)
            {
                
iPlayer iPlayers[i];
                
                
iHit PUG_iHits[iPlayer][id];
                
                if(
iHit)
                {
                    ++
iCheck;
                
                    
iDmg PUG_iDamage[iPlayer][id];
                    
                    if(
iPlayer == id)
                    {
                        
client_print_color
                        
(
                            
id,
                            
print_team_grey,
                            
"%s %L",
                            
PUG_szHead,
                            
LANG_PLAYER,
                            
"PUG_DMG_SELF",
                            
iHit,
                            (
iHit 1) ? "times" "time",
                            
iDmg
                        
);
                    }
                    else
                    {
                        
get_user_name(iPlayer,szName,charsmax(szName));

                        
client_print_color
                        
(
                            
id,
                            
print_team_grey,
                            
"%s %L",
                            
PUG_szHead,
                            
LANG_PLAYER,
                            
"PUG_RDMG",
                            
szName,
                            
iHit,
                            (
iHit 1) ? "times" "time",
                            
iDmg
                        
);
                    }
                }
            }
            
            if(!
iCheck)
            {
                
client_print_color
                
(
                    
id,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_RDMG_NONE"
                
);
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_SDamage(id)
{
    if(!
PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(
PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(
is_user_alive(id) && PUG_bInRound)
        {
            
client_print_color
            
(
                
id,
                
print_team_grey,
                
"%s %L",
                
PUG_szHead,
                
LANG_PLAYER,
                
"PUG_CMD_IMPOSSIBLE"
            
);
        }
        else
        {
            new 
iPlayers[32],iNum,iPlayer;
            
get_players(iPlayers,iNum,"h");
            
            new 
szName[32];
            
            new 
iDmg[2],iHit[2],iCheck;
            
            for(new 
i;iNum;i++)
            {
                
iPlayer iPlayers[i];
                
                
iHit[0] = PUG_iHits[id][iPlayer]; // Hits Done
                
iHit[1] = PUG_iHits[iPlayer][id]; // Hits Recived
                
                
if(iHit[0] || iHit[1])
                {
                    ++
iCheck;
                
                    
iDmg[0] = PUG_iDamage[id][iPlayer]; // Damage Done
                    
iDmg[1] = PUG_iDamage[iPlayer][id]; // Damag Recived
                    
                    
if(iPlayer == id)
                    {
                        
client_print_color
                        
(
                            
id,
                            
print_team_grey,
                            
"%s %L",
                            
PUG_szHead,
                            
LANG_PLAYER,
                            
"PUG_DMG_SELF",
                            
iHit[0],
                            (
iHit[0] > 1) ? "times" "time",
                            
iDmg[0]
                        );
                    }
                    else
                    {
                        
get_user_name(iPlayer,szName,charsmax(szName));
                        
                        
client_print_color
                        
(
                            
id,
                            
print_team_grey,
                            
"%s %L",
                            
PUG_szHead,
                            
LANG_PLAYER,
                            
"PUG_SUM",
                            
iDmg[0],iHit[0],
                            
iDmg[1],iHit[1],
                            
szName,
                            (
is_user_alive(iPlayer) ? get_user_health(iPlayer) : 0)
                        );
                    }
                }
            }
            
            if(!
iCheck)
            {
                
client_print_color
                
(
                    
id,
                    
print_team_grey,
                    
"%s %L",
                    
PUG_szHead,
                    
LANG_PLAYER,
                    
"PUG_SUM_NONE"
                
);
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_Help(id)
{
    new 
szFile[16];
    
get_pcvar_string(PUG_HelpFile,szFile,charsmax(szFile));
    
    new 
szDir[40];
    
get_localinfo("amxx_configsdir",szDir,charsmax(szDir));
    
    
formatex(szDir,charsmax(szDir),"%s/pug/%s",szDir,szFile);
    
    new 
szTitle[32];
    
formatex(szTitle,charsmax(szTitle),"%L",LANG_PLAYER,"PUG_HELP_CMD");
    
    
show_motd(id,szDir,szTitle);
    
    return 
PLUGIN_HANDLED;
}

PUG_GetPlayers()
{
    new 
iPlayers[32],iNum,Players;
    
get_players(iPlayers,iNum,"ch");
    
    new 
iNumber;
    
    for(new 
i;iNum;i++)
    {
        
Players iPlayers[i];
        
        switch(
cs_get_user_team(Players))
        {
            case 
CS_TEAM_TiNumber++;
            
            case 
CS_TEAM_CTiNumber++;
        }
    }
    
    return 
iNumber;
}

PUG_StopVote()
{
    new 
iPlayers[32],iNum;
    
get_players(iPlayers,iNum,"ch");
    
    for(new 
i;iNum;i++)
    {
        if(!
PUG_bVoted[iPlayers[i]]) return 0;
    }
    
    return 
1;
}

PUG_ExecConfig(const szConfig[],iRestart)
{
    new 
szDir[32];
    
get_localinfo("amxx_configsdir",szDir,charsmax(szDir));
    
    
server_cmd("exec %s/pug/%s",szDir,szConfig);
    
    if(
iRestartset_pcvar_num(PUG_sv_restart,iRestart);
    
    
PUG_RestoreOrder();
    
    
set_pcvar_num(PUG_sv_visiblemaxplayers,get_pcvar_num(PUG_MaxPlayers));
}

PUG_Disconnect(const id,const szReason[] = "")
{
    
message_begin(MSG_ONE,SVC_DISCONNECT,_,id);
    
write_string(szReason);
    
message_end();
}

PUG_BombRemove(bool:bRemove)
{
    new 
iEnt = -1;

    while((
iEnt engfunc(EngFunc_FindEntityByString,iEnt,"classname",bRemove "func_bomb_target" "_func_bomb_target")) > 0)
    {
        
set_pev(iEnt,pev_classname,bRemove "_func_bomb_target" "func_bomb_target");
    }

    while((
iEnt engfunc(EngFunc_FindEntityByStringiEnt"classname"bRemove "info_bomb_target" "_info_bomb_target")) > 0)
    {
        
set_pev(iEnt,pev_classname,bRemove "_info_bomb_target" "info_bomb_target");
    }

pupil0888 is offline
Send a message via MSN to pupil0888
Mark.uG
AlliedModders Donor
Join Date: Oct 2014
Old 03-22-2015 , 10:19   Re: CS Pug MOD Re-rewrited [UPDATED 03/21/2015]
Reply With Quote #426

Ok everything is working fine that i can see so far.

The only issue that im having is when i set

pug_players_min "10"
pug_players_max "10"
pug_players_min_default "10"
pug_players_max_default "10"

to

pug_players_min "2"
pug_players_max "2"
pug_players_min_default "10"
pug_players_max_default "10"

It does nothing at all after i save and restart it.

Mark
Mark.uG is offline
^SmileY
Veteran Member
Join Date: Jan 2010
Location: Brazil [<o>]
Old 03-22-2015 , 12:10   Re: CS Pug MOD Re-rewrited [UPDATED 03/21/2015]
Reply With Quote #427

Quote:
Originally Posted by pupil0888 View Post
Hello and happy day everyone, well explained pug have a code mod called xt works follows is for 10 players and once all write .ready several ballots as votemap, voteteam and votecfg are released, the problem this in votemap if nobody votes for any map that is changed at random and if you vote only 1 player for a map is changed to that, the application for aid is that I want to eliminate the random or random map I mean if anyone vote for none that you stay in the current map unchanged and continue with voteteam and the other would place a cvar percentage so that if one single player votes for a map that does not change because the cvar would be for a minimum of 4 votes to effect change thanks in advance here I leave the code and hope you can help me.



Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>

#pragma semicolon 1

#define PUG_TASK_VOTE     1337
#define PUG_TASK_AUTO     1338

#define PUG_MAX_PLAYERS     33
#define PUG_MOD_MINPLAYERS     5
#define PUG_CAPTAIN_MINPLAYERS     6

new PUG_szHead[] = "^4[PUG]^1";

new PUG_iStage;
new bool:PUG_bReady[PUG_MAX_PLAYERS];
new bool:PUG_bVoted[PUG_MAX_PLAYERS];
new bool:PUG_bInRound;

new PUG_iHits[PUG_MAX_PLAYERS][PUG_MAX_PLAYERS];
new PUG_iDamage[PUG_MAX_PLAYERS][PUG_MAX_PLAYERS];

new const PUG_szTeamNames[CsTeams][] =
{
    "Unassigned",
    "Terrorists",
    "Counter-Terrorists",
    "Spectator"
};

new const PUG_szTeams[CsTeams][] =
{
    "UNASGDs",
    "TRs",
    "CTs",
    "SPECs"
};

new PUG_iScores[CsTeams];
new PUG_iRounds[3];

#define PUG_isValidTeam(%0)     (CS_TEAM_T <= cs_get_user_team(%0) <= CS_TEAM_CT)

enum _:PUG_STAGES_CONST
{
    PUG_STAGE_READY = 0,
    PUG_STAGE_START,
    PUG_STAGE_FIRSTHALF,
    PUG_STAGE_INTERMISSION,
    PUG_STAGE_SECONDHALF,
    PUG_STAGE_OVERTIME,
    PUG_STAGE_END
};

new const PUG_szStage[PUG_STAGES_CONST][] =
{
    "Pregame",
    "Voting",
    "First Half",
    "Intermission",
    "Second Half",
    "Overtime",
    "Finished"
};

new PUG_MinPlayers;
new PUG_MaxPlayers;
new PUG_VoteMap;
new PUG_VoteDelay;
new PUG_SwitchDelay;
new PUG_MaxRounds;
new PUG_OTRounds;
new PUG_AllowSpec;
new PUG_AllowHLTV;
new PUG_Reconnect;
new PUG_TeamMoney;
new PUG_NoSuicide;
new PUG_AllowVoteCmds;
new PUG_HelpFile;

new PUG_ReadyConfig;
new PUG_StartConfig;
new PUG_FirstConfig;
new PUG_IntermissionConfig;
new PUG_SecondConfig;
new PUG_OvertimeConfig;
new PUG_EndConfig;

new PUG_sv_restart;
new PUG_sv_visiblemaxplayers;
new PUG_mp_startmoney;
new PUG_mapcyclefile;

enum
{
    PUG_MENU_NONE = 0,
    PUG_MENU_MAP,
    PUG_MENU_TEAMS,
    PUG_MENU_CAPTAINS,
    PUG_MENU_CFG
};

new PUG_iMenuStage;

new PUG_iMenuMap;
new PUG_iMenuTeams;
new PUG_iMenuCfg;

#define PUG_MAX_MAPS 32

new PUG_iMapVotes[PUG_MAX_MAPS];
new PUG_szMapNames[PUG_MAX_MAPS][32];
new PUG_iMapCount;

new bool:PUG_bTeams;

enum _:PUG_SORT_TYPE
{
    PUG_SORT_AUTO = 0,
    PUG_SORT_NONE,
    PUG_SORT_CAPTAINS
};

new const PUG_szTeamTypes[PUG_SORT_TYPE][] =
{
    "Random",
    "Not Sorted",
    "Captains"
};

new PUG_iTeamVotes[PUG_SORT_TYPE];

new PUG_iCaptain[2];

enum _:PUG_CFG_FILE
{
    PUG_CFG_CAL = 0,
    PUG_CFG_CEVO
};

new const PUG_szConfigTypes[PUG_CFG_FILE][] =
{
    "CAL (15 Rounds, 1:45 min, $800)",
    "CEVO (15 Rounds, 2:00 min, $800)"
};

new PUG_iConfigVotes[PUG_CFG_FILE];

new Trie:PUG_tRetry;

enum
{
    PUG_SLOT_PRIMARY = 1,
    PUG_SLOT_SECONDARY,
    PUG_SLOT_KNIFE,
    PUG_SLOT_GRENADE,
    PUG_SLOT_C4
};

new const PUG_iWeaponSlots[] =
{
    0,
    2,    //CSW_P228
    0,
    1,    //CSW_SCOUT
    4,    //CSW_HEGRENADE
    1,    //CSW_XM1014
    5,    //CSW_C4
    1,    //CSW_MAC10
    1,    //CSW_AUG
    4,    //CSW_SMOKEGRENADE
    2,    //CSW_ELITE
    2,    //CSW_FIVESEVEN
    1,    //CSW_UMP45
    1,    //CSW_SG550
    1,    //CSW_GALIL
    1,    //CSW_FAMAS
    2,    //CSW_USP
    2,    //CSW_GLOCK18
    1,    //CSW_AWP
    1,    //CSW_MP5NAVY
    1,    //CSW_M249
    1,    //CSW_M3
    1,    //CSW_M4A1
    1,    //CSW_TMP
    1,    //CSW_G3SG1
    4,    //CSW_FLASHBANG
    2,    //CSW_DEAGLE
    1,    //CSW_SG552
    1,    //CSW_AK47
    3,    //CSW_KNIFE
    1    //CSW_P90
};

new const PUG_iMaxBPAmmo[] =
{
    0,
    52,    //CSW_P228
    0,
    90,    //CSW_SCOUT
    1,    //CSW_HEGRENADE
    32,    //CSW_XM1014
    1,    //CSW_C4
    100,    //CSW_MAC10
    90,    //CSW_AUG
    1,    //CSW_SMOKEGRENADE
    120,    //CSW_ELITE
    100,    //CSW_FIVESEVEN
    100,    //CSW_UMP45
    90,    //CSW_SG550
    90,    //CSW_GALIL
    90,    //CSW_FAMAS
    100,    //CSW_USP
    120,    //CSW_GLOCK18
    30,    //CSW_AWP
    120,    //CSW_MP5NAVY
    200,    //CSW_M249
    32,    //CSW_M3
    90,    //CSW_M4A1
    120,    //CSW_TMP
    90,    //CSW_G3SG1
    2,    //CSW_FLASHBANG
    35,    //CSW_DEAGLE
    90,    //CSW_SG552
    90,    //CSW_AK47
    0,    //CSW_KNIFE
    100    //CSW_P90
};

new const PUG_szRestrictWeapons[][] =
{
    "shield",
    "flash",
    "hegren",
    "sgren",
    "primammo",
    "secammo",
    "buyammo1",
    "buyammo2"
};

new const PUG_szVoteCommands[][] =
{
    "buy",
    "buyequip",
    "radio1",
    "radio2",
    "radio3",
    "chooseteam"
};

public plugin_init()
{
    register_plugin("Pug Mod (XT)",AMXX_VERSION_STR,"SmileY");

    register_dictionary("CsPug.txt");
    
    PUG_MinPlayers         = register_cvar("pug_minplayers","10");
    PUG_MaxPlayers         = register_cvar("pug_maxplayers","10");
    PUG_VoteMap         = register_cvar("pug_votemap","1");
    PUG_VoteDelay         = register_cvar("pug_votedelay","10.0");
    PUG_SwitchDelay     = register_cvar("pug_switch_delay","5.0");
    PUG_MaxRounds         = register_cvar("pug_rounds","30");
    PUG_OTRounds         = register_cvar("pug_ot_rounds","6");
    PUG_AllowSpec         = register_cvar("pug_allowspec","1");
    PUG_AllowHLTV         = register_cvar("pug_allowhltv","1");
    PUG_Reconnect        = register_cvar("pug_reconnect","20.0");
    PUG_TeamMoney         = register_cvar("pug_teammoney","1");
    PUG_NoSuicide        = register_cvar("pug_nosuicide","1");
    PUG_AllowVoteCmds     = register_cvar("pug_allowvotes","1");
    PUG_HelpFile         = register_cvar("pug_help","help.htm");
    
    PUG_ReadyConfig     = register_cvar("pug_pregame_cfg","pregame.rc");
    PUG_StartConfig     = register_cvar("pug_ready_cfg","ready.rc");
    PUG_FirstConfig     = register_cvar("pug_firsthalf_cfg","cal.rc");
    PUG_IntermissionConfig     = register_cvar("pug_intermission_cfg","intermission.rc");
    PUG_SecondConfig     = register_cvar("pug_secondhalf_cfg","cal.rc");
    PUG_OvertimeConfig     = register_cvar("pug_overtime_cfg","cal-ot.rc");
    PUG_EndConfig         = register_cvar("pug_finished_cfg","finished.rc");
    
    PUG_sv_restart             = get_cvar_pointer("sv_restart");
    PUG_sv_visiblemaxplayers     = get_cvar_pointer("sv_visiblemaxplayers");
    PUG_mp_startmoney         = get_cvar_pointer("mp_startmoney");
    PUG_mapcyclefile         = get_cvar_pointer("mapcyclefile");
    
    register_clcmd("say","PUG_SayFilter");
    register_clcmd("say_team","PUG_SayFilter");
    
    register_clcmd(".ready","PUG_ReadyUp",         .info="Tells the server the player is ready");
    register_clcmd(".notready","PUG_ReadyDown",     .info="Tells the server the player is not ready");
    
    register_clcmd(".round","PUG_Round",        .info="Display the current round");
    register_clcmd(".score","PUG_Scores",         .info="Display the current scores");
    register_clcmd(".status","PUG_Status",         .info="Display the server status");
    
    register_clcmd(".hp","PUG_HP",             .info="Shows the HP of the enemy");
    register_clcmd(".hpteam","PUG_HPTeam",         .info="Shows the HP of your team");
    register_clcmd(".hpall","PUG_HPAll",         .info="Shows the HP of all players");
    
    register_clcmd(".dmg","PUG_Damage",         .info="Shows damage you have done to other players");
    register_clcmd(".rdmg","PUG_RDamage",         .info="Shows damage done to you by other players");
    register_clcmd(".sum","PUG_SDamage",         .info="Shows the summary of the round");
    
    register_clcmd(".help","PUG_Help",         .info="Brings up client help info");

    PUG_tRetry = TrieCreate();

    for(new i;i < sizeof(PUG_szVoteCommands);++i)
    {
        register_clcmd(PUG_szVoteCommands[i],"PUG_Locked");
    }
    
    register_clcmd("vote","PUG_VoteCommand");
    register_clcmd("votemap","PUG_VoteCommand");
    
    register_clcmd("jointeam","PUG_JoinTeam");
    register_clcmd("joinclass","PUG_JoinClass");
    register_clcmd("menuselect","PUG_JoinClass");
    
    PUG_iMenuMap     = menu_create("Vote Map:","PUG_MenuHandler");
    
    menu_setprop(PUG_iMenuMap,MPROP_EXIT,MEXIT_NEVER);
    
    PUG_iMenuCfg = menu_create("Config:","PUG_MenuHandler");
    
    menu_additem(PUG_iMenuCfg,PUG_szConfigTypes[PUG_CFG_CAL],"0");
    menu_additem(PUG_iMenuCfg,PUG_szConfigTypes[PUG_CFG_CEVO],"1");

    menu_setprop(PUG_iMenuCfg,MPROP_EXIT,MEXIT_NEVER);
    
    PUG_iMenuTeams     = menu_create("Team Enforcement:","PUG_MenuHandler");
    
    menu_additem(PUG_iMenuTeams,PUG_szTeamTypes[PUG_SORT_AUTO],"0");
    menu_additem(PUG_iMenuTeams,PUG_szTeamTypes[PUG_SORT_NONE],"1");
    menu_additem(PUG_iMenuTeams,PUG_szTeamTypes[PUG_SORT_CAPTAINS],"2");
    
    menu_setprop(PUG_iMenuTeams,MPROP_EXIT,MEXIT_NEVER);
    
    register_menucmd(register_menuid("#Buy",1),511,"PUG_BuyMenu");
    register_menucmd(-28,511,"PUG_BuyMenu");
    
    register_menucmd(register_menuid("BuyItem",1),511,"PUG_ItemMenu");
    register_menucmd(-34,511,"PUG_ItemMenu");
    
    register_menucmd(-2,(1<<0)|(1<<1)|(1<<4)|(1<<5),"PUG_TeamSelect");
    register_menucmd(register_menuid("Team_Select",1),(1<<0)|(1<<1)|(1<<4)|(1<<5),"PUG_TeamSelect");

    register_event("ResetHUD","PUG_HudList","b");
    register_event("CurWeapon","PUG_CurWeapon","be","1=1");
    register_event("StatusIcon","PUG_StatusIcon","be","2=buyzone");
    register_event("SendAudio","PUG_SendAudio","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw");
    
    register_logevent("PUG_RoundStart",2,"1=Round_Start");
    register_logevent("PUG_RoundEnd",2,"1=Round_End");
    
    register_message(get_user_msgid("Money"),"PUG_Money");
    
    register_forward(FM_SetModel,"PUG_fwSetModel",true);
    register_forward(FM_CVarGetFloat,"PUG_fwCVarGetFloat",false);
    register_forward(FM_ClientKill,"PUG_fwClientKill",false);

    RegisterHam(Ham_Killed,"player","PUG_HamKilledPost",1);
    RegisterHam(Ham_Spawn,"player","PUG_SpawnPost",1);
}

public plugin_cfg()
{
    new szPatch[40];
    get_localinfo("amxx_configsdir",szPatch,charsmax(szPatch));

    format(szPatch,charsmax(szPatch),"%s/maps.ini",szPatch);

    if(!PUG_LoadMaps(szPatch))
    {
        get_pcvar_string(PUG_mapcyclefile,szPatch,charsmax(szPatch));
        
        PUG_LoadMaps(szPatch);
    }
    
    PUG_Change(PUG_STAGE_READY);
}

public plugin_end()
{
    if(PUG_STAGE_FIRSTHALF <= PUG_iStage <= PUG_STAGE_OVERTIME)
    {
        PUG_Change(PUG_STAGE_END);
    }
}

PUG_LoadMaps(const szPatch[])
{
    if(!file_exists(szPatch)) return 0;
    
    new iFile = fopen(szPatch,"rb");
    
    new szMap[32],iNum[10];

    //new szCurrent[32];
    //get_mapname(szCurrent,charsmax(szCurrent));
    
    while(!feof(iFile) && (PUG_iMapCount < PUG_MAX_MAPS))
    {
        fgets(iFile,szMap,charsmax(szMap));
        trim(szMap);
        
        if(szMap[0] != ';' && is_map_valid(szMap)) //&& !equali(szMap,szCurrent))
        {
            copy(PUG_szMapNames[PUG_iMapCount],charsmax(PUG_szMapNames[]),szMap);
                
            num_to_str(PUG_iMapCount,iNum,charsmax(iNum));
            menu_additem(PUG_iMenuMap,PUG_szMapNames[PUG_iMapCount],iNum);
        
            PUG_iMapCount++;
        }
    }
    
    fclose(iFile);
    
    return PUG_iMapCount;
}

PUG_Change(PUG_STAGE)
{
    PUG_iStage = PUG_STAGE;
    
    switch(PUG_iStage)
    {
        case PUG_STAGE_READY:
        {
            new szConfig[32];
            get_pcvar_string(PUG_ReadyConfig,szConfig,charsmax(szConfig));

            PUG_ExecConfig(szConfig,1);

            PUG_BombRemove(true);
                        
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_START",
                PUG_szStage[PUG_iStage]
            );
        }
        case PUG_STAGE_START:
        {
            new szConfig[32];
            get_pcvar_string(PUG_StartConfig,szConfig,charsmax(szConfig));
            
            PUG_ExecConfig(szConfig,1);
            
            arrayset(PUG_bVoted,false,sizeof(PUG_bVoted));
            
            new iVoteMap = get_pcvar_num(PUG_VoteMap);
            
            if(iVoteMap)
            {
                PUG_iMenuStage = PUG_MENU_MAP;
                
                arrayset(PUG_iMapVotes,0,sizeof(PUG_iMapVotes));
                
                new iPlayers[32],iNum,iPlayer;
                get_players(iPlayers,iNum,"ch");
                
                for(new i;i < iNum;i++)
                {
                    iPlayer = iPlayers[i];
                    
                    if(is_user_connected(iPlayer) && PUG_isValidTeam(iPlayer))
                    {
                        menu_display(iPlayer,PUG_iMenuMap);
                    }
                }
                
                set_task(get_pcvar_float(PUG_VoteDelay),"PUG_VoteEnd",PUG_TASK_VOTE);
                
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_VOTE_MAP"
                );
            }
            else if(!iVoteMap && !PUG_bTeams)
            {
                PUG_iMenuStage = PUG_MENU_TEAMS;

                PUG_bTeams = true;
                arrayset(PUG_iTeamVotes,0,sizeof(PUG_iTeamVotes));
                
                new iPlayers[32],iNum,iPlayer;
                get_players(iPlayers,iNum,"ch");
                
                for(new i;i < iNum;i++)
                {
                    iPlayer = iPlayers[i];
                    
                    if(is_user_connected(iPlayer) && PUG_isValidTeam(iPlayer))
                    {
                        menu_display(iPlayer,PUG_iMenuTeams);
                    }
                }
                
                set_task(get_pcvar_float(PUG_VoteDelay),"PUG_VoteEnd",PUG_TASK_VOTE);
                
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_VOTE_TEAM"
                );
            }
            else if(!iVoteMap && PUG_bTeams)
            {
                PUG_iMenuStage = PUG_MENU_CFG;
                
                arrayset(PUG_iConfigVotes,0,sizeof(PUG_iConfigVotes));
                
                new iPlayers[32],iNum,iPlayer;
                get_players(iPlayers,iNum,"ch");
                
                for(new i;i < iNum;i++)
                {
                    iPlayer = iPlayers[i];
                    
                    if(is_user_connected(iPlayer) && PUG_isValidTeam(iPlayer))
                    {
                        menu_display(iPlayer,PUG_iMenuCfg);
                    }
                }
                
                set_task(get_pcvar_float(PUG_VoteDelay),"PUG_VoteEnd",PUG_TASK_VOTE);
                
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_VOTE_CFG"
                );
            }
        }
        case PUG_STAGE_FIRSTHALF:
        {
            new szConfig[32];
            get_pcvar_string(PUG_FirstConfig,szConfig,charsmax(szConfig));

            PUG_ExecConfig(szConfig,0);

            PUG_iMenuStage = PUG_MENU_NONE;

            arrayset(PUG_iRounds,0,sizeof(PUG_iRounds));

            PUG_LO3();
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_LO3"
            );
        }
        case PUG_STAGE_INTERMISSION:
        {
            new szConfig[32];
            get_pcvar_string(PUG_IntermissionConfig,szConfig,charsmax(szConfig));
            
            PUG_ExecConfig(szConfig,0);
            
            arrayset(PUG_bReady,0,sizeof(PUG_bReady));
            
            PUG_HudList();
            
            new iTemp = PUG_iScores[CS_TEAM_T];
    
            PUG_iScores[CS_TEAM_T]     = PUG_iScores[CS_TEAM_CT];
            PUG_iScores[CS_TEAM_CT] = iTemp;
            
            set_task(get_pcvar_float(PUG_SwitchDelay),"PUG_SwapTeams");

            PUG_BombRemove(true);

            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_INTERMISSION",
                PUG_szStage[PUG_iStage]
            );
        }
        case PUG_STAGE_SECONDHALF:
        {
            new szConfig[32];
            get_pcvar_string(PUG_SecondConfig,szConfig,charsmax(szConfig));
            
            PUG_ExecConfig(szConfig,0);
            
            PUG_LO3();
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %s: %s - %d, %s - %d",
                PUG_szHead,
                PUG_szStage[PUG_iStage],
                PUG_szTeams[CS_TEAM_T],
                PUG_iScores[CS_TEAM_T],
                PUG_szTeams[CS_TEAM_CT],
                PUG_iScores[CS_TEAM_CT]
            );
        }
        case PUG_STAGE_OVERTIME:
        {
            new szConfig[32];
            get_pcvar_string(PUG_OvertimeConfig,szConfig,charsmax(szConfig));
            
            PUG_ExecConfig(szConfig,0);
            
            PUG_LO3();
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %s: %s - %d, %s - %d",
                PUG_szHead,
                PUG_szStage[PUG_iStage],
                PUG_szTeams[CS_TEAM_T],
                PUG_iScores[CS_TEAM_T],
                PUG_szTeams[CS_TEAM_CT],
                PUG_iScores[CS_TEAM_CT]
            );
        }
        case PUG_STAGE_END:
        {
            new szConfig[32];
            get_pcvar_string(PUG_EndConfig,szConfig,charsmax(szConfig));
            
            PUG_ExecConfig(szConfig,0);
            
            arrayset(PUG_bReady,0,sizeof(PUG_bReady));
            
            if(!get_pcvar_num(PUG_VoteMap)) set_pcvar_num(PUG_VoteMap,1);

            PUG_BombRemove(true);
            
            if(PUG_iScores[CS_TEAM_T] != PUG_iScores[CS_TEAM_CT])
            {
                new CsTeams:iWinner = (PUG_iScores[CS_TEAM_T] > PUG_iScores[CS_TEAM_CT]) ? CS_TEAM_T : CS_TEAM_CT;
                new CsTeams:iLosers = (iWinner == CS_TEAM_T) ? CS_TEAM_CT : CS_TEAM_T;

                new szMessage[86];
                format
                (
                    szMessage,
                    charsmax(szMessage),
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_END_WIN",
                    PUG_szTeamNames[iWinner],
                    PUG_iScores[iWinner],
                    PUG_iScores[iLosers]
                );
                
                console_print(0,szMessage);
                client_print_color(0,print_team_grey,szMessage);
            }
            else
            {
                new szMessage[64];
                format
                (
                    szMessage,
                    charsmax(szMessage),
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_END_TIE",
                    PUG_iScores[CS_TEAM_T],
                    PUG_iScores[CS_TEAM_CT]
                );
                
                console_print(0,szMessage);
                client_print_color(0,print_team_grey,szMessage);
            }
        }
    }
}

public PUG_SayFilter(id)
{
    new szArgs[192];
    read_args(szArgs,charsmax(szArgs));
    remove_quotes(szArgs);
    
    if(szArgs[0] == '.')
    {
        client_cmd(id,szArgs);
        
        return PLUGIN_HANDLED;
    }

    return PLUGIN_CONTINUE;
}

public PUG_Locked(id)
{
    if(PUG_iStage == PUG_STAGE_START)
    {
        return PLUGIN_HANDLED;
    }

    return PLUGIN_CONTINUE;
}

public client_authorized(id)
{
    new iReconnectTime = get_pcvar_num(PUG_Reconnect);
    
    if(iReconnectTime)
    {
        new szSteam[35]; 
        get_user_authid(id,szSteam,charsmax(szSteam));       
         
        new iTime;
    
        if(TrieGetCell(PUG_tRetry,szSteam,iTime))
        {
            if(get_systime() - iTime < iReconnectTime)
            {
                new szReason[32];
                
                format
                (
                    szReason,
                    charsmax(szReason),
                    "%L",
                    LANG_SERVER,
                    "PUG_RETRY_MSG",
                    (iReconnectTime + iTime - get_systime())
                );
    
                PUG_Disconnect(id,szReason);
            }
        }
        
        return PLUGIN_HANDLED;
    }
    
    PUG_bReady[id] = false;
    
    arrayset(PUG_iHits[id],0,sizeof(PUG_iHits[]));
    arrayset(PUG_iDamage[id],0,sizeof(PUG_iDamage[]));
    
    PUG_HudList();
    
    return PLUGIN_CONTINUE;
}

public client_putinserver(id)
{
    PUG_HudList();

    set_task(10.0,"PUG_IntroMessage",id);
}

public client_infochanged(id) set_task(0.1,"PUG_HudList");

public client_disconnect(id)
{
    PUG_HudList();
    
    for(new i;i < PUG_MAX_PLAYERS;++i)
    {
        PUG_iHits[i][id] = 0;
        PUG_iDamage[i][id] = 0;
    }
    
    if(get_pcvar_num(PUG_Reconnect))
    {
        new szSteam[35];
        get_user_authid(id,szSteam,charsmax(szSteam));
        
        TrieSetCell(PUG_tRetry,szSteam,get_systime());
    }

    if(PUG_STAGE_FIRSTHALF <= PUG_iStage <= PUG_STAGE_OVERTIME)
    {
        if(get_playersnum() <= PUG_MOD_MINPLAYERS)
        {
            PUG_Change(PUG_STAGE_END);
        }
    }
}

public PUG_IntroMessage(id)
{
    if(is_user_connected(id))
    {
        if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
        {
            client_print_color
            (
                id,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_INTRO"
            );
        }

        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_HELP"
        );
    }
}

public PUG_HudList()
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_START || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        PUG_HudDisplay(9999.0);
    }
}

public PUG_CheckPlayer(id)
{
    new iMaxPlayers = get_pcvar_num(PUG_MaxPlayers);
        
    if(PUG_GetPlayers() >= iMaxPlayers)
    {
        new szMsg[32];
        formatex(szMsg,charsmax(szMsg),"%L",LANG_PLAYER,"PUG_FULL");
    
        if(is_user_hltv(id) && !get_pcvar_num(PUG_AllowHLTV))
        {
            PUG_Disconnect(id,szMsg);
        }
        else if(!get_pcvar_num(PUG_AllowSpec))
        {
            PUG_Disconnect(id,szMsg);
        }
    }
    
    if(get_playersnum(1) > iMaxPlayers)
    {
        new szMsg[32];
        formatex(szMsg,charsmax(szMsg),"%L",LANG_PLAYER,"PUG_FULL");

        if(!is_user_hltv(id) || !get_pcvar_num(PUG_AllowSpec))
        {
            PUG_Disconnect(id,szMsg);
        }
    }
}

PUG_RestoreOrder()
{
    while(PUG_GetPlayers() > get_pcvar_num(PUG_MaxPlayers))
    {
        new iTest = 3600,iWho,iTime;

        new iPlayers[32],iNum,iPlayer;
        get_players(iPlayers,iNum,"ch");

        for(new i;i < iNum;i++)
        {
            iPlayer = iPlayers[i];

            if(!is_user_hltv(iPlayer) && is_user_connected(iPlayer)) 
            {
                iTime = get_user_time(iPlayer,1);

                     if(iTest >= iTime)
                {
                    iTest = iTime;

                    iWho = iPlayer;
                }
            }
        }
        
        new szMsg[64];
        formatex(szMsg,charsmax(szMsg),"%L",LANG_PLAYER,"PUG_FULL_TIME");

        PUG_Disconnect(iWho,szMsg);
    }
}

public PUG_ReadyUp(id)
{
    if(!PUG_isValidTeam(id)) return PLUGIN_CONTINUE;

    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(PUG_bReady[id])
        {
            client_print_color(id,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_READY_ALREADY");
        }
        else
        {
            PUG_bReady[id] = true;
            
            new szName[32];
            get_user_name(id,szName,charsmax(szName));
            
            client_print_color(0,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_READY",szName);
            
            PUG_CheckReady();
        }
    }
    else
    {
        client_print_color(id,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_CMD_IMPOSSIBLE");
    }
    
    return PLUGIN_HANDLED;
}

public PUG_ReadyDown(id)
{
    if(!PUG_isValidTeam(id)) return PLUGIN_CONTINUE;

    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(!PUG_bReady[id])
        {
            client_print_color(id,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_READY_NOTREADY");
        }
        else
        {
            PUG_bReady[id] = false;
            
            new szName[32];
            get_user_name(id,szName,charsmax(szName));
            
            client_print_color(0,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_READY_UNREADY",szName);

            PUG_HudList();
        }
    }
    else
    {
        client_print_color(id,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_CMD_IMPOSSIBLE");
    }
    
    return PLUGIN_HANDLED;
}

PUG_CheckReady()
{
    PUG_HudList();
    
    new iReady;

    for(new i;i < sizeof(PUG_bReady);i++)
    {
        if(PUG_bReady[i]) iReady++;
    }
    
    if(iReady >= get_pcvar_num(PUG_MinPlayers))
    {
        switch(PUG_iStage)
        {
            case PUG_STAGE_READY:
            {
                PUG_Change(PUG_STAGE_START);
            }
            case PUG_STAGE_INTERMISSION:
            {
                PUG_Change(PUG_STAGE_SECONDHALF);
            }
            case PUG_STAGE_END:
            {
                PUG_Change(PUG_STAGE_START);
            }
        }
    }
}

PUG_HudDisplay(Float:fTime)
{
    switch(PUG_iStage)
    {
        case PUG_STAGE_READY,PUG_STAGE_INTERMISSION,PUG_STAGE_END:
        {
            new szReady[1056],szNotReady[1056],szName[32];
            
            new iPlayers[32],iNum,iPlayer;
            get_players(iPlayers,iNum,"ch");
            
            new iReadys;
            
            for(new i;i < iNum;i++)
            {
                iPlayer = iPlayers[i];
                
                if(PUG_isValidTeam(iPlayer))
                {
                    get_user_name(iPlayer,szName,charsmax(szName));
                    
                    if(PUG_bReady[iPlayer])
                    {
                        iReadys++;
                        
                        format(szReady,charsmax(szReady),"%s%s^n",szReady,szName);
                    }
                    else format(szNotReady,charsmax(szNotReady),"%s%s^n",szNotReady,szName);
                }
            }
            
            new iMinPlayers = get_pcvar_num(PUG_MinPlayers);
        
            set_hudmessage(0,255,0,0.23,0.02,0,0.0,fTime,0.0,0.0,3);
            show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_UNREADY",PUG_GetPlayers() - iReadys,iMinPlayers);
        
            set_hudmessage(0,255,0,0.58,0.02,0,0.0,fTime,0.0,0.0,2);
            show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_READY",iReadys,iMinPlayers);
        
            set_hudmessage(255,255,225,0.58,0.05,0,0.0,fTime,0.0,0.0,1);
            show_hudmessage(0,szReady);
        
            set_hudmessage(255,255,225,0.23,0.05,0,0.0,fTime,0.0,0.0,4);
            show_hudmessage(0,szNotReady);
        }
        case PUG_STAGE_START:
        {
            switch(PUG_iMenuStage)
            {
                case PUG_MENU_CAPTAINS:
                {
                    new szTRs[1056],szCTs[1056],szName[38];
                    
                    new iPlayers[32],iNum,iPlayer;
                    get_players(iPlayers,iNum,"h");
                    
                    for(new i;i < iNum;i++)
                    {
                        iPlayer = iPlayers[i];
                        
                        get_user_name(iPlayer,szName,charsmax(szName));
                        
                        if(PUG_iCaptain[0] == iPlayer || PUG_iCaptain[1] == iPlayer)
                        {
                            format(szName,charsmax(szName),"%s (C)",szName);
                        }
                        
                        switch(cs_get_user_team(iPlayer))
                        {
                            case CS_TEAM_T:
                            {
                                format(szTRs,charsmax(szTRs),"%s%s^n",szTRs,szName);
                            }
                            case CS_TEAM_CT:
                            {
                                format(szCTs,charsmax(szCTs),"%s%s^n",szCTs,szName);
                            }
                        }
                    }
                    
                    set_hudmessage(255,0,0,0.23,0.02,0,0.0,fTime,0.0,0.0,1);
                    show_hudmessage(0,PUG_szTeamNames[CS_TEAM_T]);
                
                    set_hudmessage(255,255,255,0.23,0.05,0,0.0,fTime,0.0,0.0,2);
                    show_hudmessage(0,szTRs);
                
                    set_hudmessage(0,0,255,0.58,0.02,0,0.0,fTime,0.0,0.0,3);
                    show_hudmessage(0,PUG_szTeamNames[CS_TEAM_CT]);

                    set_hudmessage(255,255,255,0.58,0.05,0,0.0,fTime,0.0,0.0,4);
                    show_hudmessage(0,szCTs);
                }
                case PUG_MENU_MAP:
                {
                    set_hudmessage(0,255,0,0.23,0.02,0,0.0,fTime,0.0,0.0,1);
                    show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_MAP");
                    
                    new szMaps[256],iVotes;
                    
                    for(new x;x < PUG_iMapCount;++x)
                    {
                        if(PUG_iMapVotes[x])
                        {
                            iVotes++;
                            
                            format
                            (
                                szMaps,
                                charsmax(szMaps),
                                "%s%s - %d %s^n",
                                szMaps,
                                PUG_szMapNames[x],
                                PUG_iMapVotes[x],
                                (PUG_iMapVotes[x] > 1) ? "votes" : "vote"
                            );
                        }
                    }
                    
                    new szNone[32];
                    formatex(szNone,charsmax(szNone),"%L",LANG_PLAYER,"PUG_HUD_NONE");
                    
                    set_hudmessage(255,255,255,0.23,0.05,0,0.0,fTime,0.0,0.0,2);
                    show_hudmessage(0,iVotes ? szMaps : szNone);
                }
                case PUG_MENU_TEAMS:
                {
                    set_hudmessage(0,255,0,0.23,0.02,0,0.0,fTime,0.0,0.0,1);
                    show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_TEAM");
                    
                    new szTeams[128],iVotes;
                    
                    for(new x;x < PUG_SORT_TYPE;++x)
                    {
                        if(PUG_iTeamVotes[x])
                        {
                            iVotes++;
                            
                            format
                            (
                                szTeams,
                                charsmax(szTeams),
                                "%s%s - %d %s^n",
                                szTeams,
                                PUG_szTeamTypes[x],
                                PUG_iTeamVotes[x],
                                (PUG_iTeamVotes[x] > 1) ? "votes" : "vote"
                            );
                        }
                    }
                    
                    new szNone[32];
                    formatex(szNone,charsmax(szNone),"%L",LANG_PLAYER,"PUG_HUD_NONE");
                    
                    set_hudmessage(255,255,255,0.23,0.05,0,0.0,fTime,0.0,0.0,2);
                    show_hudmessage(0,iVotes ? szTeams : szNone);
                }
                case PUG_MENU_CFG:
                {
                    set_hudmessage(0,255,0,0.23,0.02,0,0.0,fTime,0.0,0.0,1);
                    show_hudmessage(0,"%L",LANG_PLAYER,"PUG_HUD_CFG");
                    
                    new szConfigs[256],iVotes;
                    
                    for(new x;x < PUG_CFG_FILE;++x)
                    {
                        if(PUG_iConfigVotes[x])
                        {
                            iVotes++;
                            
                            format
                            (
                                szConfigs,
                                charsmax(szConfigs),
                                "%s%s - %d %s^n",
                                szConfigs,
                                PUG_szConfigTypes[x],
                                PUG_iConfigVotes[x],
                                (PUG_iConfigVotes[x] > 1) ? "votes" : "vote"
                            );
                        }
                    }
                    
                    new szNone[32];
                    formatex(szNone,charsmax(szNone),"%L",LANG_PLAYER,"PUG_HUD_NONE");
                    
                    set_hudmessage(255,255,255,0.23,0.05,0,0.0,fTime,0.0,0.0,2);
                    show_hudmessage(0,iVotes ? szConfigs : szNone);
                }
            }
        }
    }
}

public PUG_MenuHandler(id,iMenu,iKey)
{
    new szData[6],szOption[64],iAccess,iCallBack;
    menu_item_getinfo(iMenu,iKey,iAccess,szData,charsmax(szData),szOption,charsmax(szOption),iCallBack);
    
    switch(PUG_iMenuStage)
    {
        case PUG_MENU_MAP:
        {
            if(iKey == MENU_EXIT) return PLUGIN_HANDLED;
            
            PUG_iMapVotes[str_to_num(szData)]++;
            
            PUG_bVoted[id] = true;
            
            PUG_HudList();
            
            new szName[32];
            get_user_name(id,szName,charsmax(szName));
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_VOTE_CHOOSED",
                szName,
                szOption
            );
            
            if(PUG_StopVote()) PUG_VoteEnd();
        }
        case PUG_MENU_TEAMS:
        {
            if(iKey == MENU_EXIT) return PLUGIN_HANDLED;
            
            PUG_iTeamVotes[str_to_num(szData)]++;
            
            PUG_bVoted[id] = true;
            
            PUG_HudList();

            new szName[32];
            get_user_name(id,szName,charsmax(szName));
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_VOTE_CHOOSED",
                szName,
                szOption
            );
            
            if(PUG_StopVote()) PUG_VoteEnd();
        }
        case PUG_MENU_CAPTAINS:
        {
            if(iKey == MENU_EXIT)
            {
                menu_display(id,iMenu,0);
                
                return PLUGIN_HANDLED;
            }
            
            new iPlayer = str_to_num(szData);
            
            cs_set_user_team(iPlayer,cs_get_user_team(id));
        
            new szTemp[2][32];
            get_user_name(id,szTemp[0],charsmax(szTemp[]));
            get_user_name(iPlayer,szTemp[1],charsmax(szTemp[]));
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_CAPT_CHOOSED",
                szTemp[0],
                szTemp[1]
            );
            
            if(is_user_connected(PUG_iCaptain[0]) && is_user_connected(PUG_iCaptain[1]))
            {
                set_task(1.5,"PUG_CaptainMenu",(id == PUG_iCaptain[0]) ? PUG_iCaptain[1] : PUG_iCaptain[0]);
            }
            else
            {
                set_task(3.0,"PUG_CaptainJoin",(id == PUG_iCaptain[0]) ? PUG_iCaptain[1] : PUG_iCaptain[0]);
                
                client_print_color(0,print_team_grey,"%s %L",PUG_szHead,LANG_PLAYER,"PUG_CAPT_WAIT");
            }
            
            menu_destroy(iMenu);
            remove_task(id + PUG_TASK_AUTO);
        }
        case PUG_MENU_CFG:
        {
            if(iKey == MENU_EXIT) return PLUGIN_HANDLED;
            
            PUG_iConfigVotes[str_to_num(szData)]++;
            
            PUG_bVoted[id] = true;
            
            PUG_HudList();
            
            new szName[32];
            get_user_name(id,szName,charsmax(szName));
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_VOTE_CHOOSED",
                szName,
                szOption
            );
            
            if(PUG_StopVote()) PUG_VoteEnd();
        }
    }
    
    return PLUGIN_HANDLED;
}

public PUG_VoteEnd()
{
    show_menu(0,0,"^n",1);
    remove_task(PUG_TASK_VOTE);
    
    switch(PUG_iMenuStage)
    {
        case PUG_MENU_MAP:
        {
            new iWinner,iWinnerVotes,iVotes;

            for(new i;i < PUG_iMapCount;i++)
            {
                iVotes = PUG_iMapVotes[i];
            
                if(iVotes >= iWinnerVotes)
                {
                    iWinner = i;
                    iWinnerVotes = iVotes;
                }
                else if(iVotes == iWinnerVotes)
                {
                    if(random_num(0,1))
                    {
                        iWinner = i;
                        iWinnerVotes = iVotes;
                    }
                }
            }
            
            if(PUG_iMapVotes[iWinner])
            {
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_VOTE_WON",
                    PUG_szMapNames[iWinner]
                );
            }
            else
            {
                iWinner = random_num(1,PUG_iMapCount);
                
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_VOTE_AUTO",
                    PUG_szMapNames[iWinner]
                );
            }
            
            set_task
            (
                get_pcvar_float(PUG_SwitchDelay),
                "PUG_ChangeMap",
                _,
                PUG_szMapNames[iWinner],
                sizeof(PUG_szMapNames)
            );
            
            return PLUGIN_HANDLED;
        }
        case PUG_MENU_TEAMS:
        {
            new iWinner,iWinnerVotes,iVotes;

            for(new i;i < sizeof(PUG_szTeamTypes);++i)
            {
                iVotes = PUG_iTeamVotes[i];
            
                if(iVotes > iWinnerVotes)
                {
                    iWinner = i;
                    iWinnerVotes = iVotes;
                }
                else if(iVotes == iWinnerVotes)
                {
                    if(random_num(0,1))
                    {
                        iWinner = i;
                        iWinnerVotes = iVotes;
                    }
                }
            }
            
            if(PUG_iTeamVotes[iWinner])
            {
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_VOTE_WON",
                    PUG_szTeamTypes[iWinner]
                );
            }
            else
            {
                iWinner = random(sizeof(PUG_szTeamTypes));
                
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_VOTE_AUTO",
                    PUG_szTeamTypes[iWinner]
                );
            }
            
            PUG_ChangeTeams(iWinner);
            
            return PLUGIN_HANDLED;
        }
        case PUG_MENU_CFG:
        {
            new iWinner,iWinnerVotes,iVotes;
            
            for(new i;i < sizeof(PUG_szConfigTypes);++i)
            {
                iVotes = PUG_iConfigVotes[i];
            
                if(iVotes > iWinnerVotes)
                {
                    iWinner = i;
                    iWinnerVotes = iVotes;
                }
                else if(iVotes == iWinnerVotes)
                {
                    if(random_num(0,1))
                    {
                        iWinner = i;
                        iWinnerVotes = iVotes;
                    }
                }
            }
    
            if(PUG_iConfigVotes[iWinner])
            {
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_VOTE_WON",
                    PUG_szConfigTypes[iWinner]
                );
            }
            else
            {
                iWinner = random(sizeof(PUG_szConfigTypes));
                
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_VOTE_AUTO",
                    PUG_szConfigTypes[iWinner]
                );
            }
            
            PUG_SetConfigs(iWinner);
            
            return PLUGIN_HANDLED;
        }
    }
    
    return PLUGIN_CONTINUE;
}

public PUG_ChangeMap(const szMap[])
{
    set_pcvar_num(PUG_VoteMap,0);
    server_cmd("changelevel %s",szMap);
}

PUG_ChangeTeams(iType)
{
    switch(iType)
    {
        case PUG_SORT_AUTO:
        {
            new iPlayers[32],iNum;
            get_players(iPlayers,iNum);
            
            for(new i;i < iNum;i++)
            {
                if(!PUG_isValidTeam(iPlayers[i])) iPlayers[i--] = iPlayers[--iNum];
            }
            
            new iPlayer,CsTeams:iTeam = random(2) ? CS_TEAM_T : CS_TEAM_CT;
            
            new iRandom;
            
            while(iNum)
            {
                iRandom = random(iNum);
                
                iPlayer = iPlayers[iRandom];
                
                cs_set_user_team(iPlayer,iTeam);
                
                iPlayers[iRandom] = iPlayers[--iNum];
                
                iTeam = CsTeams:((_:iTeam) % 2 + 1);
            }
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_SORT_AUTO"
            );
            
            PUG_Change(PUG_STAGE_START);
        }
        case PUG_SORT_NONE:
        {
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_SORT_NONE"
            );
            
            PUG_Change(PUG_STAGE_START);
        }
        case PUG_SORT_CAPTAINS:
        {
            PUG_iMenuStage = PUG_MENU_CAPTAINS;
            
            new iPlayers[32],iNum,iPlayer;
            get_players(iPlayers,iNum,"h");
            
            if(iNum < PUG_CAPTAIN_MINPLAYERS)
            {
                client_print_color
                (
                    0,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_CAPT_MINPLAYERS",
                    PUG_CAPTAIN_MINPLAYERS
                );
                
                PUG_Change(PUG_STAGE_START);
                
                return;
            }
            
            for(new i;i < iNum;i++)
            {
                iPlayer = iPlayers[i];
                
                if(!PUG_iCaptain[0])
                {
                    PUG_iCaptain[0] = iPlayer;
                    
                    cs_set_user_team(iPlayer,CS_TEAM_T);
                    
                    continue;
                }
                
                if(!PUG_iCaptain[1])
                {
                    PUG_iCaptain[1] = iPlayer;
                    
                    cs_set_user_team(iPlayer,CS_TEAM_CT);
                    
                    continue;
                }
                
                user_silentkill(iPlayer);
                cs_set_user_team(iPlayer,CS_TEAM_SPECTATOR);
            }
            
            set_pcvar_num(PUG_sv_restart,1);
            
            new szName[2][32];
            get_user_name(PUG_iCaptain[0],szName[0],charsmax(szName[]));
            get_user_name(PUG_iCaptain[1],szName[1],charsmax(szName[]));
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_CAPT_ARE",
                szName[0],
                szName[1]
            );
            
            set_task(2.0,"PUG_CaptainMenu",PUG_iCaptain[random(1)]);
        }
        default:
        {
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_SORT_OFF"
            );
            
            PUG_Change(PUG_STAGE_START);
        }
    }
}

PUG_SetConfigs(iType)
{
    switch(iType)
    {
        case PUG_CFG_CAL:
        {
            set_pcvar_string(PUG_FirstConfig,    "cal.rc");
            set_pcvar_string(PUG_SecondConfig,    "cal.rc");
            set_pcvar_string(PUG_OvertimeConfig,    "cal-ot.rc");
        }
        case PUG_CFG_CEVO:
        {
            set_pcvar_string(PUG_FirstConfig,    "cevo.rc");
            set_pcvar_string(PUG_SecondConfig,    "cevo.rc");
            set_pcvar_string(PUG_OvertimeConfig,    "cevo-ot.rc");
        }
        default:
        {
            set_pcvar_string(PUG_FirstConfig,    "cal.rc");
            set_pcvar_string(PUG_SecondConfig,    "cal.rc");
            set_pcvar_string(PUG_OvertimeConfig,    "cal-ot.rc");
        }
    }
    
    PUG_Change(PUG_STAGE_FIRSTHALF);
}

public PUG_CaptainMenu(id)
{
    PUG_HudList();
    
    if(is_user_bot(id))
    {
        PUG_CaptainTask(id + PUG_TASK_AUTO); 
        
        return;
    }
    
    new iPlayers[32],iNum,iPlayer;
    get_players(iPlayers,iNum,"h");
    
    new szName[32],szTemp[3],iSpec;
    new iMenu = menu_create("Escolha um Player:","PUG_MenuHandler");
    
    for(new i;i < iNum;i++)
    {
        iPlayer = iPlayers[i];
        
        if(cs_get_user_team(iPlayer) == CS_TEAM_SPECTATOR)
        {
            iSpec++;
            
            get_user_name(iPlayer,szName,charsmax(szName));
                    
            num_to_str(iPlayer,szTemp,charsmax(szTemp));
            menu_additem(iMenu,szName,szTemp);
        }
    }
    
    if(!iSpec)
    {
        PUG_Change(PUG_STAGE_START);
        
        arrayset(PUG_iCaptain,0,sizeof(PUG_iCaptain));
        
        return;
    }
    
    menu_setprop(iMenu,MPROP_EXIT,MEXIT_NEVER);
    
    menu_display(id,iMenu);
    
    set_task(11.5,"PUG_CaptainTask",id + PUG_TASK_AUTO);
}

public PUG_CaptainTask(id)
{
    id -= PUG_TASK_AUTO;
    
    new iPlayers[32],iNum;
    get_players(iPlayers,iNum,"h");
    
    new bool:bSpec;
    
    for(new i; i < iNum;i++)
    {
        if(cs_get_user_team(iPlayers[i]) == CS_TEAM_SPECTATOR)
        {
            bSpec = true;
        }
    }
    
    if(!bSpec)
    {
        PUG_Change(PUG_STAGE_START);
        
        arrayset(PUG_iCaptain,0,sizeof(PUG_iCaptain));
        
        return;
    }
    
    new iRandom = random(iNum);
    
    while(cs_get_user_team(iPlayers[iRandom]) != CS_TEAM_SPECTATOR)
    {
        iRandom = random(iNum);
    }
    
    if(is_user_connected(id))
    {
        if(is_user_connected(iPlayers[iRandom]))
        {
            cs_set_user_team(iPlayers[iRandom],cs_get_user_team(id));
            
            new szName[2][32];
            get_user_name(id,szName[0],charsmax(szName[]));
            get_user_name(iPlayers[iRandom],szName[1],charsmax(szName[]));
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_CAPT_CHOOSED",
                szName[0],
                szName[1]
            );
        }
        
        set_task(1.5,"PUG_CaptainMenu",(id == PUG_iCaptain[0]) ? PUG_iCaptain[1] : PUG_iCaptain[0]);
    }
    else
    {
        set_task(3.0,"PUG_CaptainJoin",(id == PUG_iCaptain[0] ? PUG_iCaptain[1] : PUG_iCaptain[0]));

        client_print_color
        (
            0,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_CAPT_WAIT"
        );
    }
    
    show_menu(id,0,"^n",1);
}

public PUG_CaptainJoin(iNext)
{
    if(is_user_connected(PUG_iCaptain[0]) && is_user_connected(PUG_iCaptain[1]))
    {
        set_task(1.5,"PUG_CaptainMenu",iNext);
    }
    else
    {
        set_task(3.0,"PUG_CaptainJoin",iNext);
        
        client_print_color
        (
            0,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_CAPT_WAIT"
        );
    }
}

PUG_LO3()
{
    PUG_BombRemove(false);

    set_task(0.2,"PUG_RestartRound",_,"1",1);
    set_task(2.2,"PUG_RestartRound",_,"2",1);
    set_task(5.8,"PUG_RestartRound",_,"3",1);
    
    set_task(10.0,"PUG_LiveMessage");
}

public PUG_LiveMessage()
{
    set_hudmessage(0,255,0,-1.0,0.3,0,6.0,6.0);
    show_hudmessage(0,"--- MATCH IS LIVE ---");
}

public PUG_RestartRound(const szSeconds[]) set_pcvar_num(PUG_sv_restart,str_to_num(szSeconds));

public PUG_SendAudio()
{
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        PUG_bInRound = false;
        
        new szTeam[22];
        read_data(2,szTeam,charsmax(szTeam));
        
        if(containi(szTeam,"terwin") != -1)
        {
            PUG_iRounds[0]++;
            PUG_iScores[CS_TEAM_T]++;
            
            if(PUG_iStage == PUG_STAGE_OVERTIME) PUG_iRounds[2]++;
            
            console_print
            (
                0,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_ROUND_WON",
                PUG_iRounds[0],
                PUG_szTeamNames[CS_TEAM_T]
            );
        }
        else if(containi(szTeam,"ctwin") != -1)
        {
            PUG_iRounds[0]++;
            PUG_iScores[CS_TEAM_CT]++;
            
            if(PUG_iStage == PUG_STAGE_OVERTIME) PUG_iRounds[2]++;
                
            console_print
            (
                0,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_ROUND_WON",
                PUG_iRounds[0],
                PUG_szTeamNames[CS_TEAM_CT]
            );
        }
        else
        {
            PUG_iRounds[1]++;
            
            console_print
            (
                0,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_ROUND_NONE"
            );
        }
    }
}

public PUG_RoundEnd()
{
    switch(PUG_iStage)
    {
        case PUG_STAGE_FIRSTHALF:
        {
            if(PUG_iRounds[0] == (get_pcvar_num(PUG_MaxRounds) / 2))
            {
                PUG_Change(PUG_STAGE_INTERMISSION);
            }
        }
        case PUG_STAGE_SECONDHALF:
        {
            new iMaxRounds = get_pcvar_num(PUG_MaxRounds);
            
            if(PUG_iScores[CS_TEAM_T] > (iMaxRounds / 2))
            {
                PUG_Change(PUG_STAGE_END);
            }
            else if(PUG_iScores[CS_TEAM_CT] > (iMaxRounds / 2))
            {
                PUG_Change(PUG_STAGE_END);
            }
            else if(PUG_iRounds[0] == iMaxRounds)
            {
                PUG_Change(PUG_STAGE_INTERMISSION);
            }
        }
        case PUG_STAGE_OVERTIME:
        {
            new iOT = get_pcvar_num(PUG_OTRounds);
            
            new iRoundsOT = (iOT / 2);
            
            if(PUG_iRounds[0] == iRoundsOT)
            {
                PUG_Change(PUG_STAGE_INTERMISSION);
            }
            else if((PUG_iScores[CS_TEAM_T] - PUG_iScores[CS_TEAM_CT]) >= (iRoundsOT + 1))
            {
                PUG_Change(PUG_STAGE_END);
            }
            else if((PUG_iScores[CS_TEAM_CT] - PUG_iScores[CS_TEAM_T]) >= (iRoundsOT + 1))
            {
                PUG_Change(PUG_STAGE_END);
            }
        }
    }
}

public PUG_RoundStart()
{
    PUG_bInRound = true;
    
    for(new i;i < PUG_MAX_PLAYERS;++i)
    {
        arrayset(PUG_iHits[i],0,sizeof(PUG_iHits));
        arrayset(PUG_iDamage[i],0,sizeof(PUG_iDamage));    
    }
    
    switch(PUG_iStage)
    {
        case PUG_STAGE_FIRSTHALF:
        {
            if(PUG_iRounds[0]) PUG_Scores(0);
        }
        case PUG_STAGE_SECONDHALF:
        {
            if(PUG_iRounds[0] != (get_pcvar_num(PUG_MaxRounds) / 2)) PUG_Scores(0);
        }
        case PUG_STAGE_OVERTIME:
        {
            if(PUG_iRounds[0] != get_pcvar_num(PUG_MaxRounds)) PUG_Scores(0);
        }
    }
}

public PUG_Round(id)
{
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_STAGE_OVERTIME)
    {
        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_ROUND",
            (PUG_iRounds[0] + 1)
        );
    }
    else
    {
        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_CMD_IMPOSSIBLE"
        );
    }

    return PLUGIN_HANDLED;
}

public PUG_Scores(id)
{
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(PUG_iScores[CS_TEAM_T] != PUG_iScores[CS_TEAM_CT])
        {
            new CsTeams:iWinner = (PUG_iScores[CS_TEAM_T] > PUG_iScores[CS_TEAM_CT]) ? CS_TEAM_T : CS_TEAM_CT;
            
            client_print_color
            (
                0,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_SCORE_WINNER",
                PUG_szTeamNames[iWinner],
                PUG_iScores[iWinner],
                (iWinner == CS_TEAM_T) ? PUG_iScores[CS_TEAM_CT] : PUG_iScores[CS_TEAM_T]
            );
        }
        else
        {
            client_print_color
            (
                id,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_SCORE_TIED",
                PUG_iScores[CS_TEAM_T],
                PUG_iScores[CS_TEAM_CT]
            );
        }
    }
    else
    {
        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_CMD_IMPOSSIBLE"
        );
    }
    
    return PLUGIN_HANDLED;    
}

public PUG_Status(id)
{
    client_print_color
    (
        id,
        print_team_grey,
        "%s %L",
        PUG_szHead,
        LANG_PLAYER,
        "PUG_STATUS",
        PUG_GetPlayers(),
        get_pcvar_num(PUG_MinPlayers),
        get_pcvar_num(PUG_MaxPlayers),
        PUG_szStage[PUG_iStage]
    );
    
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_STATUS_ROUND",
            PUG_iRounds[0],
            PUG_iRounds[1],
            PUG_szTeams[CS_TEAM_T],
            PUG_iScores[CS_TEAM_T],
            PUG_szTeams[CS_TEAM_CT],
            PUG_iScores[CS_TEAM_CT]
        );
    }

    return PLUGIN_HANDLED;
}

public PUG_SwapTeams()
{
    new iPlayers[32],iNum,Players;
    get_players(iPlayers,iNum,"h");
    
    for(new i;i < iNum;i++)
    {
        Players = iPlayers[i];
    
        switch(cs_get_user_team(Players))
        {
            case CS_TEAM_T:
            {
                cs_set_user_team(Players,CS_TEAM_CT);
            }
            case CS_TEAM_CT:
            {
                cs_set_user_team(Players,CS_TEAM_T);
            }
        }
    }
    
    set_pcvar_num(PUG_sv_restart,1);
}

public PUG_Money(iMsg,iDest,id)
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(is_user_connected(id))
        {
            cs_set_user_money(id,get_pcvar_num(PUG_mp_startmoney),0);
        }

        return PLUGIN_HANDLED;
    }

    return PLUGIN_CONTINUE;
}

public PUG_CurWeapon(id)
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        new iWeapon = get_user_weapon(id);
        
        if(PUG_iWeaponSlots[iWeapon] == PUG_SLOT_PRIMARY || PUG_iWeaponSlots[iWeapon] == PUG_SLOT_SECONDARY)
        {
            new iAmmo = cs_get_user_bpammo(id,iWeapon);
            
            if(iAmmo < PUG_iMaxBPAmmo[iWeapon])
            {
                cs_set_user_bpammo(id,iWeapon,PUG_iMaxBPAmmo[iWeapon]);
            }
        }
    }
}

public client_damage(iAttacker,iVictim,iDamage,iWP,iPlace,TA)
{
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        PUG_iHits[iAttacker][iVictim]++;

        PUG_iDamage[iAttacker][iVictim] += iDamage;
    }
}

public PUG_HamKilledPost(id)
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        set_task(0.75,"PUG_Respawn",id);
    }
}

public PUG_Respawn(id)
{
    if(is_user_connected(id) && !is_user_alive(id) && PUG_isValidTeam(id))
    {
        ExecuteHam(Ham_CS_RoundRespawn,id);
    }
}

public PUG_SpawnPost(id)
{
    if(get_pcvar_num(PUG_TeamMoney))
    {
        if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
        {
            if(is_user_connected(id) && PUG_isValidTeam(id) && cs_get_user_money(id) != get_pcvar_num(PUG_mp_startmoney))
            {
                set_task(0.1,"PUG_MoneyTeam",id);
            }
        }
    }
}

public PUG_MoneyTeam(id)
{
    new szTeam[13];
    get_user_team(id,szTeam,charsmax(szTeam));

    new iPlayers[32],iNum,iPlayer;
    get_players(iPlayers,iNum,"aeh",szTeam);

    new szName[32],szHud[512],iMoney;

    for(new i;i < iNum;i++)
    {
        iPlayer = iPlayers[i];

        iMoney = cs_get_user_money(iPlayer);
        get_user_name(iPlayer,szName,charsmax(szName));

        format
        (
            szHud,
            charsmax(szHud),
            "%s%s $ %d^n",
            szHud,
            szName,
            iMoney
        );
    }

    set_hudmessage(0,255,0,0.58,0.02,0,0.0,6.0,0.0,0.0,1);
    show_hudmessage(id,(szTeam[0] == 'C') ? "Counter-Terrorists:" : "Terrorists:");
    
    set_hudmessage(255,255,225,0.58,0.05,0,0.0,6.0,0.0,0.0,2);
    show_hudmessage(id,szHud);
}

public PUG_StatusIcon(id)
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        set_pev(id,pev_takedamage,read_data(1) ? DAMAGE_NO : DAMAGE_AIM);
    }
}

public PUG_fwSetModel(iEntity)
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(!pev_valid(iEntity)) return;
        
        new szClassname[10];
        pev(iEntity,pev_classname,szClassname,charsmax(szClassname));
        
        if(equal(szClassname,"weaponbox"))
        {
            set_pev(iEntity,pev_nextthink,get_gametime() + 0.1);
        }
    }
}

public PUG_fwCVarGetFloat(const szCvar[])
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(equal(szCvar,"mp_buytime"))
        {
            forward_return(FMV_FLOAT,99999.0);
        
            return FMRES_SUPERCEDE;
        }
    }
    
    return FMRES_IGNORED;
}

public PUG_fwClientKill(id)
{
    if(is_user_alive(id) && get_pcvar_num(PUG_NoSuicide))
    {
        console_print(id,"Comando nao permitido.");

        return FMRES_SUPERCEDE;
    }
    
    return FMRES_IGNORED;
}

public client_command(id)
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        PUG_HudList();

        new szCommand[32];
        read_argv(0,szCommand,charsmax(szCommand));
        
        for(new x;x < sizeof(PUG_szRestrictWeapons);x++)
        {
            if(equal(PUG_szRestrictWeapons[x],szCommand)) return PLUGIN_HANDLED;
        }
    }
    
    return PLUGIN_CONTINUE;
}

public CS_InternalCommand(id,const szCommand[])
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        for(new x;x < sizeof(PUG_szRestrictWeapons);x++)
        {
            if(equal(PUG_szRestrictWeapons[x],szCommand)) return PLUGIN_HANDLED;
        }
    }
    
    return PLUGIN_CONTINUE;
}

public PUG_BuyMenu(id,iKey)
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(iKey == 5 || iKey == 6) return PLUGIN_HANDLED;
    }
    
    return PLUGIN_CONTINUE;
}

public PUG_ItemMenu(id,iKey) 
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        switch(iKey)
        {
            case 2,3,4,6,7: return PLUGIN_HANDLED;
        }
    }
    
    return PLUGIN_CONTINUE;
}

public PUG_VoteCommand(id)
{
    if(!get_pcvar_num(PUG_AllowVoteCmds))
    {
        console_print
        (
            id,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_VOTE_DISABLED"
        );
        
        return PLUGIN_HANDLED;
    }
    
    return PLUGIN_CONTINUE;
}

public PUG_JoinTeam(id) 
{
    new szArg[3];
    read_argv(1,szArg,charsmax(szArg));

    return PUG_CheckTeam(id,str_to_num(szArg));
}

public PUG_TeamSelect(id,iKey) return PUG_CheckTeam(id,iKey + 1);

public PUG_CheckTeam(id,iNewTeam) 
{
    new iOldTeam = _:cs_get_user_team(id);
    new iMinPlayers = get_pcvar_num(PUG_MinPlayers);
    
    if(PUG_STAGE_START <= PUG_iStage <= PUG_STAGE_OVERTIME)
    {
        if((iOldTeam == 1) || (iOldTeam == 2))
        {
            client_print_color
            (
                id,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_TEAM_LOCKED"
            );

            return PLUGIN_HANDLED;
        }
    }

    if(iNewTeam == 6 && !get_pcvar_num(PUG_AllowSpec)) 
    {
        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_TEAM_SPEC"
        );
        
        engclient_cmd(id,"chooseteam");

        return PLUGIN_HANDLED;
    }
    
    if(iNewTeam == iOldTeam)
    {
        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_TEAM_SAMETEAM"
        );
        
        return PLUGIN_HANDLED;
    }

    new iPlayers[32],iNum;
    get_players(iPlayers,iNum,"h");

    new iTeam[2];
    
    for(new i;i < iNum;i++)
    {
        switch(cs_get_user_team(iPlayers[i]))
        {
            case CS_TEAM_T: ++iTeam[0];
            
            case CS_TEAM_CT: ++iTeam[1];
        }
    }
    
    if(iNewTeam == 5)
    {
        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_TEAM_AUTO"
        );
        
        return PLUGIN_HANDLED;
    }
    else if((iNewTeam == 1) && (iTeam[0] == (iMinPlayers / 2)))
    { 
        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_TEAM_FULL"
        );
        
        return PLUGIN_HANDLED;
    }
    else if((iNewTeam == 2) && (iTeam[1] == (iMinPlayers / 2)))
    { 
        client_print_color
        (
            id,
            print_team_grey,
            "%s %L",
            PUG_szHead,
            LANG_PLAYER,
            "PUG_TEAM_FULL"
        );
        
        return PLUGIN_HANDLED;
    }

    return PLUGIN_CONTINUE;
}

public PUG_JoinClass(id)
{
    if(PUG_iStage == PUG_STAGE_READY || PUG_iStage == PUG_STAGE_INTERMISSION || PUG_iStage == PUG_STAGE_END)
    {
        if(get_pdata_int(id,205 /* m_iMenu */) == 3 /* MENU_CHOOSEAPPEARANCE */)
        {
            new szCommand[11],szArg[32];
            read_argv(0,szCommand,charsmax(szCommand));
            read_argv(1,szArg,charsmax(szArg));
        
            engclient_cmd(id,szCommand,szArg);
            ExecuteHam(Ham_Player_PreThink,id);

            PUG_Respawn(id);

            return PLUGIN_HANDLED;
        }
    }
    
    return PLUGIN_CONTINUE;
}

public PUG_HP(id)
{
    if(!PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(is_user_alive(id) && PUG_bInRound)
        {
            client_print_color
            (
                id,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_CMD_IMPOSSIBLE"
            );
        }
        else
        {
            new iPlayers[32],iNum,iPlayer;
            get_players(iPlayers,iNum,"aeh",(cs_get_user_team(id) == CS_TEAM_T) ? "CT" : "TERRORIST");
            
            if(!iNum)
            {
                client_print_color
                (
                    id,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_HP_ALIVE"
                );
                
                return PLUGIN_HANDLED;
            }
            
            new szName[32];
            
            for(new i;i < iNum;i++)
            {
                iPlayer = iPlayers[i];
            
                get_user_name(iPlayer,szName,charsmax(szName));
                
                client_print_color
                (
                    id,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_HP",
                    szName,
                    get_user_health(iPlayer),
                    get_user_armor(iPlayer)
                );
            }
        }
    }
    
    return PLUGIN_HANDLED;
}

public PUG_HPTeam(id)
{
    if(!PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(is_user_alive(id) && PUG_bInRound)
        {
            client_print_color
            (
                id,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_CMD_IMPOSSIBLE"
            );
        }
        else
        {
            new iPlayers[32],iNum,iPlayer;
            get_players(iPlayers,iNum,"aeh",(cs_get_user_team(id) == CS_TEAM_T) ? "TERRORIST" : "CT");
            
            if(!iNum)
            {
                client_print_color
                (
                    id,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_HP_ALIVE"
                );
                
                return PLUGIN_HANDLED;
            }
            
            new szName[32];
            
            for(new i;i < iNum;i++)
            {
                iPlayer = iPlayers[i];
            
                get_user_name(iPlayer,szName,charsmax(szName));
                
                client_print_color
                (
                    id,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_HP",
                    szName,
                    get_user_health(iPlayer),
                    get_user_armor(iPlayer)
                );
            }
        }
    }
    
    return PLUGIN_HANDLED;
}

public PUG_HPAll(id)
{
    if(!PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(is_user_alive(id) && PUG_bInRound)
        {
            client_print_color
            (
                id,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_CMD_IMPOSSIBLE"
            );
        }
        else
        {
            new iPlayers[32],iNum,iPlayer;
            get_players(iPlayers,iNum,"ah");
            
            if(!iNum)
            {
                client_print_color
                (
                    id,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_HP_ALIVE"
                );
                
                return PLUGIN_HANDLED;
            }
            
            new szName[32];
            
            for(new i;i < iNum;i++)
            {
                iPlayer = iPlayers[i];
                
                if(iPlayer != id)
                {
                    get_user_name(iPlayer,szName,charsmax(szName));
                
                    client_print_color
                    (
                        id,
                        print_team_grey,
                        "%s %L",
                        PUG_szHead,
                        LANG_PLAYER,
                        "PUG_HP",
                        szName,
                        get_user_health(iPlayer),
                        get_user_armor(iPlayer)
                    );
                }
            }
        }
    }
    
    return PLUGIN_HANDLED;
}

public PUG_Damage(id)
{
    if(!PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(is_user_alive(id) && PUG_bInRound)
        {
            client_print_color
            (
                id,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_CMD_IMPOSSIBLE"
            );
        }
        else
        {
            new iPlayers[32],iNum,iPlayer;
            get_players(iPlayers,iNum,"h");
            
            new szName[32];
            new iDmg,iHit,iCheck;
            
            for(new i;i < iNum;i++)
            {
                iPlayer = iPlayers[i];
                
                iHit = PUG_iHits[id][iPlayer];
                
                if(iHit)
                {
                    ++iCheck;
                
                    iDmg = PUG_iDamage[id][iPlayer];
                    
                    if(iPlayer == id)
                    {
                        client_print_color
                        (
                            id,
                            print_team_grey,
                            "%s %L",
                            PUG_szHead,
                            LANG_PLAYER,
                            "PUG_DMG_SELF",
                            iHit,
                            (iHit > 1) ? "times" : "time",
                            iDmg
                        );
                    }
                    else
                    {
                        get_user_name(iPlayer,szName,charsmax(szName));
                        
                        client_print_color
                        (
                            id,
                            print_team_grey,
                            "%s %L",
                            PUG_szHead,
                            LANG_PLAYER,
                            "PUG_DMG",
                            szName,
                            iHit,
                            (iHit > 1) ? "times" : "time",
                            iDmg
                        );
                    }
                }
            }
            
            if(!iCheck)
            {    
                client_print_color
                (
                    id,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_DMG_NONE"
                );
            }
        }
    }
    
    return PLUGIN_HANDLED;
}

public PUG_RDamage(id)
{
    if(!PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(is_user_alive(id) && PUG_bInRound)
        {
            client_print_color
            (
                id,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_CMD_IMPOSSIBLE"
            );
        }
        else
        {
            new iPlayers[32],iNum,iPlayer;
            get_players(iPlayers,iNum,"h");
            
            new szName[32];
            new iDmg,iHit,iCheck;
            
            for(new i;i < iNum;i++)
            {
                iPlayer = iPlayers[i];
                
                iHit = PUG_iHits[iPlayer][id];
                
                if(iHit)
                {
                    ++iCheck;
                
                    iDmg = PUG_iDamage[iPlayer][id];
                    
                    if(iPlayer == id)
                    {
                        client_print_color
                        (
                            id,
                            print_team_grey,
                            "%s %L",
                            PUG_szHead,
                            LANG_PLAYER,
                            "PUG_DMG_SELF",
                            iHit,
                            (iHit > 1) ? "times" : "time",
                            iDmg
                        );
                    }
                    else
                    {
                        get_user_name(iPlayer,szName,charsmax(szName));

                        client_print_color
                        (
                            id,
                            print_team_grey,
                            "%s %L",
                            PUG_szHead,
                            LANG_PLAYER,
                            "PUG_RDMG",
                            szName,
                            iHit,
                            (iHit > 1) ? "times" : "time",
                            iDmg
                        );
                    }
                }
            }
            
            if(!iCheck)
            {
                client_print_color
                (
                    id,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_RDMG_NONE"
                );
            }
        }
    }
    
    return PLUGIN_HANDLED;
}

public PUG_SDamage(id)
{
    if(!PUG_isValidTeam(id)) return PLUGIN_CONTINUE;
    
    if(PUG_iStage == PUG_STAGE_FIRSTHALF || PUG_iStage == PUG_STAGE_SECONDHALF || PUG_iStage == PUG_STAGE_OVERTIME)
    {
        if(is_user_alive(id) && PUG_bInRound)
        {
            client_print_color
            (
                id,
                print_team_grey,
                "%s %L",
                PUG_szHead,
                LANG_PLAYER,
                "PUG_CMD_IMPOSSIBLE"
            );
        }
        else
        {
            new iPlayers[32],iNum,iPlayer;
            get_players(iPlayers,iNum,"h");
            
            new szName[32];
            
            new iDmg[2],iHit[2],iCheck;
            
            for(new i;i < iNum;i++)
            {
                iPlayer = iPlayers[i];
                
                iHit[0] = PUG_iHits[id][iPlayer]; // Hits Done
                iHit[1] = PUG_iHits[iPlayer][id]; // Hits Recived
                
                if(iHit[0] || iHit[1])
                {
                    ++iCheck;
                
                    iDmg[0] = PUG_iDamage[id][iPlayer]; // Damage Done
                    iDmg[1] = PUG_iDamage[iPlayer][id]; // Damag Recived
                    
                    if(iPlayer == id)
                    {
                        client_print_color
                        (
                            id,
                            print_team_grey,
                            "%s %L",
                            PUG_szHead,
                            LANG_PLAYER,
                            "PUG_DMG_SELF",
                            iHit[0],
                            (iHit[0] > 1) ? "times" : "time",
                            iDmg[0]
                        );
                    }
                    else
                    {
                        get_user_name(iPlayer,szName,charsmax(szName));
                        
                        client_print_color
                        (
                            id,
                            print_team_grey,
                            "%s %L",
                            PUG_szHead,
                            LANG_PLAYER,
                            "PUG_SUM",
                            iDmg[0],iHit[0],
                            iDmg[1],iHit[1],
                            szName,
                            (is_user_alive(iPlayer) ? get_user_health(iPlayer) : 0)
                        );
                    }
                }
            }
            
            if(!iCheck)
            {
                client_print_color
                (
                    id,
                    print_team_grey,
                    "%s %L",
                    PUG_szHead,
                    LANG_PLAYER,
                    "PUG_SUM_NONE"
                );
            }
        }
    }
    
    return PLUGIN_HANDLED;
}

public PUG_Help(id)
{
    new szFile[16];
    get_pcvar_string(PUG_HelpFile,szFile,charsmax(szFile));
    
    new szDir[40];
    get_localinfo("amxx_configsdir",szDir,charsmax(szDir));
    
    formatex(szDir,charsmax(szDir),"%s/pug/%s",szDir,szFile);
    
    new szTitle[32];
    formatex(szTitle,charsmax(szTitle),"%L",LANG_PLAYER,"PUG_HELP_CMD");
    
    show_motd(id,szDir,szTitle);
    
    return PLUGIN_HANDLED;
}

PUG_GetPlayers()
{
    new iPlayers[32],iNum,Players;
    get_players(iPlayers,iNum,"ch");
    
    new iNumber;
    
    for(new i;i < iNum;i++)
    {
        Players = iPlayers[i];
        
        switch(cs_get_user_team(Players))
        {
            case CS_TEAM_T: iNumber++;
            
            case CS_TEAM_CT: iNumber++;
        }
    }
    
    return iNumber;
}

PUG_StopVote()
{
    new iPlayers[32],iNum;
    get_players(iPlayers,iNum,"ch");
    
    for(new i;i < iNum;i++)
    {
        if(!PUG_bVoted[iPlayers[i]]) return 0;
    }
    
    return 1;
}

PUG_ExecConfig(const szConfig[],iRestart)
{
    new szDir[32];
    get_localinfo("amxx_configsdir",szDir,charsmax(szDir));
    
    server_cmd("exec %s/pug/%s",szDir,szConfig);
    
    if(iRestart) set_pcvar_num(PUG_sv_restart,iRestart);
    
    PUG_RestoreOrder();
    
    set_pcvar_num(PUG_sv_visiblemaxplayers,get_pcvar_num(PUG_MaxPlayers));
}

PUG_Disconnect(const id,const szReason[] = "")
{
    message_begin(MSG_ONE,SVC_DISCONNECT,_,id);
    write_string(szReason);
    message_end();
}

PUG_BombRemove(bool:bRemove)
{
    new iEnt = -1;

    while((iEnt = engfunc(EngFunc_FindEntityByString,iEnt,"classname",bRemove ? "func_bomb_target" : "_func_bomb_target")) > 0)
    {
        set_pev(iEnt,pev_classname,bRemove ? "_func_bomb_target" : "func_bomb_target");
    }

    while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", bRemove ? "info_bomb_target" : "_info_bomb_target")) > 0)
    {
        set_pev(iEnt,pev_classname,bRemove ? "_info_bomb_target" : "info_bomb_target");
    }
}
This is a old version, and not supported it.


Quote:
Originally Posted by Mark.uG View Post
Ok everything is working fine that i can see so far.

The only issue that im having is when i set

pug_players_min "10"
pug_players_max "10"
pug_players_min_default "10"
pug_players_max_default "10"

to

pug_players_min "2"
pug_players_max "2"
pug_players_min_default "10"
pug_players_max_default "10"

It does nothing at all after i save and restart it.

Mark

What you need to do? and change players_min and max for what?
__________________
Projects:

- See my Git Hub: https://github.com/SmileYzn
PHP Code:
set_pcvar_num(pCvar, !get_pcvar_num(pCvar)); 

Last edited by ^SmileY; 03-22-2015 at 12:11.
^SmileY is offline
Send a message via MSN to ^SmileY Send a message via Skype™ to ^SmileY
faKe91
Member
Join Date: Jan 2012
Location: Moldova, Chisinau
Old 03-25-2015 , 05:38   Re: CS Pug MOD [UPDATED 03/24/2015]
Reply With Quote #428

Some bugs:

If PugReadyTimer.amxx si activated:
http://i.imgur.com/TnYvdCu.jpg
http://i.imgur.com/JBdrCAj.jpg
I try with a higher resolution, bug still remain

After I changed the code and observed that there aren't name of players that are ready. I think that problem is from the Timer that is refreshing the text from the HUD
http://i.imgur.com/GtGHhfa.jpg

When I Wrote .match & .stats
http://i.imgur.com/Zjm6IKC.jpg
http://i.imgur.com/82ZivGf.jpg
The stats is working normally on website ( I can give you the url of my website in PM cause I don't want to make spam here)

Also I want ask you, will you make a registration system in the future? cause now I have to insert manually into DB the players STEAMID & Names.

Last edited by faKe91; 03-25-2015 at 05:43.
faKe91 is offline
^SmileY
Veteran Member
Join Date: Jan 2010
Location: Brazil [<o>]
Old 03-25-2015 , 10:32   Re: CS Pug MOD [UPDATED 03/24/2015]
Reply With Quote #429

Quote:
Originally Posted by faKe91 View Post
Some bugs:

If PugReadyTimer.amxx si activated:
http://i.imgur.com/TnYvdCu.jpg
http://i.imgur.com/JBdrCAj.jpg
I try with a higher resolution, bug still remain

After I changed the code and observed that there aren't name of players that are ready. I think that problem is from the Timer that is refreshing the text from the HUD
http://i.imgur.com/GtGHhfa.jpg

When I Wrote .match & .stats
http://i.imgur.com/Zjm6IKC.jpg
http://i.imgur.com/82ZivGf.jpg
The stats is working normally on website ( I can give you the url of my website in PM cause I don't want to make spam here)

Also I want ask you, will you make a registration system in the future? cause now I have to insert manually into DB the players STEAMID & Names.
ReadyTimer is not needed to be activated, or better: If you will use it, disable Normal Ready System, because is 2 different plugins.
About Stats, you need to change the URL in plugin with your URL.. I am made some changes to you can configure pug stats using cvars. How you are configured URL in stats plugin?

Ps.
- Added HLTV system;
- .bans command to see a banlist or just .bans <Alias> to see the last bans of selected player.
- Added a pug_require_register cvar, if is set to 1 you need to insert manually new players [at] DB, if is 0 the PUG will insert new player automatically.
__________________
Projects:

- See my Git Hub: https://github.com/SmileYzn
PHP Code:
set_pcvar_num(pCvar, !get_pcvar_num(pCvar)); 

Last edited by ^SmileY; 03-25-2015 at 10:36.
^SmileY is offline
Send a message via MSN to ^SmileY Send a message via Skype™ to ^SmileY
faKe91
Member
Join Date: Jan 2012
Location: Moldova, Chisinau
Old 03-25-2015 , 14:35   Re: CS Pug MOD [UPDATED 03/24/2015]
Reply With Quote #430

Yes, it's my fault. I forgot to change url from pugdb. Now it works. Thanks. Also thanks for this cvar pug_require_register. Continue is this way, you are doing a great job
faKe91 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 03:01.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode