| ish12321 |
07-14-2017 13:05 |
Not printing message but just "s"
I've automix(pimpspug) edited by Hartmann in which I'd done few edits..
I don't know why, but the plugin isn't printing any chat message but instead of each chat message its printing a plain yellow color letter "s"
Please someone check the code and tell me if there are any issues please
Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fvault>
#include <csx>
#include <cromchat>
#include <reapi>
#define PLUGIN "Auto-Mix"
#define VERSION "1.1.6-F"
#define AUTHOR "p1Mp(Edit:Hartmann)"
#define PREFIX "[ATG]"
#define TIME_MAX 150
#define SPAWN_TASKID 3000
#define ADMIN_NONE (1 << 26)
#define PLAYER 5
#define MenuCode 205
#define PDActiveItem 373
#define MAX_PLAYERS 33
new g_iTarget[33]
new SET_CONST_TASKID
new gPlayersLeft
new gMaxPlayers
new gPug_ini_file[64]
new gCptT
new gCptCT
new g_iScore[2]
new g_iLastTeamScore[2]
static gNotRdy[400]
static gRdy[400]
new bool:g_bIsReady[33]
new Float:gTypedCommand[33]
new g_LeftKills[33]
new g_LeftVotes[33]
new g_iTimeLeft[33]
new g_KillsAce[33]
new g_TotalKills[33]
new g_TotalDeaths[33]
new g_BombPlants[33]
new g_BombDefusions[33]
new gPoints[33]
new g_PugLeaves
new bool:g_IsStarted
new bool:g_AfterRdy
new bool:g_KnifeRound
new bool:g_MapChanged
new bool:g_Twon
new bool:g_VoteProg
new bool:g_bStop
new bool:g_bStop2
new bool:g_Restart
new bool:g_givenChance[33]
new g_givenChanceSteamIDs[33][64]
new g_givenTimes
new g_MsgSync
new g_MsgSync3
new g_MsgSync2
new g_MsgSync4
new g_MsgSync5
new g_MsgSync6
new g_MsgSync7
new g_MsgSync8
new g_szTeamName[2]
new g_iTeam
new g_iAltScore
new g_iScoreOffset
new bool:g_CustomGame
new g_bVotes[2]
new g_Menu
new g_PlayersMenu
new g_abMenu
new g_switchmenu
new g_switchVotes[2]
new bool:g_bDidScore
new bool:g_bFFoff
new bool:g_bFFTKStop
new bool:g_bDidVoteFF
new bool:g_bSecondHalf
new bool:g_bCpt
new bool:gDidPlayUntilEnd[33]
new g_NotBalanced
new g_DidWaitEnough
new gPointsVault[] = "Points"
new gChanging, gChangerID
new gChanging2, gChangerID2
new gLeftSteamIDs[300][128], gLastTime[300]
new gLeftTimes
new gEntShowLeft
new g_iVotedPlayers[MAX_PLAYERS];
new g_iVotes[MAX_PLAYERS];
new g_szVoteReason[MAX_PLAYERS][64];
new g_iPlayers[MAX_PLAYERS - 1];
new g_iNum;
enum {
CVAR_PERCENT = 0,
CVAR_BANTYPE,
CVAR_BANTIME
};
new g_szCvarName[][] = {
"voteban_percent",
"voteban_type",
"voteban_time"
};
new g_szCvarValue[][] = {
"60",
"1",
"100"
};
new g_iPcvar[3];
new g_szLogFile[64];
/* Cvars */
new cvar_FFvote
new cvar_KnifeRound
new cvar_pLeft
new cvar_pLeftMethod
new cvar_DetectTK;
new cvar_MuteMenu;
new cvar_AllowShield
new cvar_MapVote
new cvar_Rankings
new cvar_TimeLeft
new cvar_TeamTag
new cvar_TeamTag_A
new cvar_TeamTag_B
new cvar_AceHud
new cvar_AFKKick
new cvar_ReadyXPos, cvar_ReadyYPos
new cvar_NotReadyXPos, cvar_NotReadyYPos
new cvar_KillPoints, cvar_KnifePoints, cvar_WinsMatchPoints
new cvar_LeavesMatchPoints, cvar_LeavesMatchTime, cvar_PlaysUntilEndPoints
new cvar_TeamKillPoints, cvar_BombPlantPoints, cvar_BombDefusePoints
new cvar_KillLosePoints, cvar_KnifeLosePoints, cvar_LosesMatchPoints
new cvar_RanksSystem, cvar_RanksSystemMessages
new cvar_BeginnerPoints, cvar_RegularPoints, cvar_VeteranPoints
new cvar_ProPoints, cvar_HardCorePoints
new cvar_mp_friendlyfire
new cvar_mp_freezetime
new cvar_mp_roundtime
new cvar_mp_buytime
new cvar_sv_restart
new cvar_humans_join_team
new cvar_mp_afktime
new bool:TerroristTeam[33];
new cvar_ScoreHud
new CountTime[33];
new SpecTimes;
/* Cvars */
new g_FileLocation[]="addons/amxmodx/configs/adminship_details.txt"
/* Mute menu */
new bool:g_mute[MAX_PLAYERS+1][MAX_PLAYERS+1]
new cvar_alltalk
/* Mute menu */
/* AFK Kicker */
#define MIN_AFK_TIME 30 // I use this incase stupid admins accidentally set mp_afktime to something silly.
#define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked.
#define CHECK_FREQ 5.0 // This is also the warning message frequency.
new g_oldangles[33][3]
new Float:g_afktime[33]
new bool:g_spawned[33] = {true, ...}
/* AFK Kicker */
/* Map & Votes variables */
new g_gVoteMenu
new g_gVotes[5]
new g_rVoteMenu
new g_rVotes[3]
new g_fVoteMenu
new g_fVotes[2]
new g_Maps_Ini_File[64]
new g_MapsCounter
new g_MapsAvailable[30][20]
new g_MapsChosen[4][20]
new g_DoneMaps
new g_ChangeMapTo
new g_LeftBans[24][124]
new g_LeftBansIPs[24][64]
new g_RoundsLeft[24] = {-1, ...}
/* Map & Votes variables */
enum {
T_WIN = 0,
CT_WIN = 1
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
cvar_FFvote = register_cvar("pug_ffvote", "0", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_KnifeRound = register_cvar("pug_kniferound", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_pLeft = register_cvar("pug_players", "10", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_pLeftMethod = register_cvar("pug_playersmethod", "2", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_DetectTK = register_cvar("pug_detecttk", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_MuteMenu = register_cvar("pug_mutemenu", "1", FCVAR_SPONLY|FCVAR_SERVER)
cvar_AllowShield = register_cvar("pug_allowshield", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_MapVote = register_cvar("pug_mapvote", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_Rankings = register_cvar("pug_ranking", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_TimeLeft = register_cvar("pug_timeleft", "30", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_TeamTag = register_cvar("pug_teamtag", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_TeamTag_A = register_cvar("pug_teamtag_A", "[TEAM A]", FCVAR_ARCHIVE|FCVAR_SERVER);
cvar_TeamTag_B = register_cvar("pug_teamtag_B", "[TEAM B]", FCVAR_ARCHIVE|FCVAR_SERVER);
cvar_AceHud = register_cvar("pug_acehud", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_AFKKick = register_cvar("pug_afkkick", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_ReadyXPos = register_cvar("pug_readyxpos", "0.72", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_ReadyYPos = register_cvar("pug_readyypos", "0.19", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_NotReadyXPos = register_cvar("pug_notreadyxpos", "0.02", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_NotReadyYPos = register_cvar("pug_notreadyypos", "0.19", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_RanksSystem = register_cvar("pug_rankssystem", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_RanksSystemMessages = register_cvar("pug_rankssystemmessages", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_KillPoints = register_cvar("pug_killpoints", "4", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_KillLosePoints = register_cvar("pug_killosepoints", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_KnifePoints = register_cvar("pug_knifepoints", "10", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_KnifeLosePoints = register_cvar("pug_knifelosespoints", "4", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_WinsMatchPoints = register_cvar("pug_winsmatchpoints", "15", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_LosesMatchPoints = register_cvar("pug_losesmatchpoints", "10", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_LeavesMatchPoints = register_cvar("pug_leavesmatchpoints", "20", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_LeavesMatchTime = register_cvar("pug_leavesmatchtime", "360", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_PlaysUntilEndPoints = register_cvar("pug_playsuntilendpoints", "30", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_TeamKillPoints = register_cvar("pug_teamkillpoints", "8", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_BombPlantPoints = register_cvar("pug_bombplantpoints", "3", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_BombDefusePoints = register_cvar("pug_bombdefusepoints", "5", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_BeginnerPoints = register_cvar("pug_beginner", "200", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_RegularPoints = register_cvar("pug_regular", "500", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_VeteranPoints = register_cvar("pug_veteran", "900", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_ProPoints = register_cvar("pug_pro", "1400", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_HardCorePoints = register_cvar("pug_hardcore", "1900", FCVAR_ARCHIVE|FCVAR_SERVER)
cvar_mp_afktime = register_cvar("mp_afktime", "40") // Kick people AFK longer than this time
cvar_ScoreHud = register_cvar("pug_scorehud", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
register_forward(FM_Voice_SetClientListening, "fwd_voice_setclientlistening")
register_menucmd(register_menuid("ranks info"), 1023, "ranks_showInfo")
register_menucmd(register_menuid("setprices menu"), 1023, "menuHandler")
cvar_alltalk = get_cvar_pointer("sv_alltalk")
new Ent = create_entity("info_target")
entity_set_string(Ent, EV_SZ_classname, "checking_players_ent")
entity_set_float(Ent, EV_FL_nextthink, halflife_time() + CHECK_FREQ)
register_think("checking_players_ent", "afkCheck_entThink")
register_dictionary("auto-mixH.txt")
g_MsgSync = CreateHudSyncObj()
g_MsgSync3 = CreateHudSyncObj()
g_MsgSync4 = CreateHudSyncObj()
g_MsgSync5 = CreateHudSyncObj()
g_MsgSync6 = CreateHudSyncObj()
g_MsgSync7 = CreateHudSyncObj()
g_MsgSync8 = CreateHudSyncObj()
g_MsgSync2 = CreateHudSyncObj()
cvar_mp_friendlyfire = get_cvar_pointer("mp_friendlyfire")
cvar_mp_freezetime = get_cvar_pointer("mp_freezetime")
cvar_mp_roundtime = get_cvar_pointer("mp_roundtime")
cvar_mp_buytime = get_cvar_pointer("mp_buytime")
cvar_sv_restart = get_cvar_pointer("sv_restart")
cvar_humans_join_team = get_cvar_pointer("humans_join_team")
gPlayersLeft = get_pcvar_num(cvar_pLeft)
get_configsdir(gPug_ini_file, 63);
formatex(gPug_ini_file, 63, "%s/pug.ini", gPug_ini_file);
get_configsdir(g_Maps_Ini_File, 63);
formatex(g_Maps_Ini_File, 63, "%s/maps.ini", g_Maps_Ini_File);
gMaxPlayers = get_maxplayers()
SET_CONST_TASKID = scanForTaskID()
formatex(gNotRdy, charsmax(gNotRdy), "%L:^n", LANG_PLAYER, "HUD_NOT_READY")
formatex(gRdy, charsmax(gRdy), "%L:^n", LANG_PLAYER, "HUD_READY")
register_cmd("rr", "Restart")
register_cmd("restart", "RestartS")
register_cmd("add", "Prepare")
register_cmd("unadd", "unPrepare")
register_cmd("credit", "credits")
register_cmd("credits", "credits")
register_cmd("ranks", "showRanks")
register_cmd("rank", "showRanks")
register_cmd("startmatch", "forcedStart_AdminCmd")
register_cmd("stopmatch", "forcedStop_AdminCmd")
register_cmd("showranks", "showRanks")
register_cmd("xp", "showRanks")
register_cmd("shop", "showRanks")
register_cmd("level", "showRanks")
register_cmd("cmd", "cmds")
register_cmd("cmds", "cmds")
register_cmd("commands", "cmds")
register_cmd("menu", "player")
register_clcmd("chooseteam", "handled")
register_clcmd("jointeam", "handled")
register_cmd("voteban", "voteban")
register_cmd("score", "showscore")
register_clcmd("say", "clcmd_say")
register_clcmd("say_team", "clcmd_say")
register_clcmd("amx_automix_settings", "openSettingsMenu")
register_logevent("round_end", 2, "1=Round_End")
register_event("TeamScore", "Event_TeamScore", "a")
register_event("DeathMsg", "Event_DeathMsg_Knife", "a", "1>0")
register_event("CurWeapon", "Event_CurWeapon_NotKnife", "be", "1=1", "2!29")
register_forward(FM_ClientUserInfoChanged, "infochanged")
register_forward(FM_GetGameDescription, "Change" );
register_clcmd("say !pm", "cmdPMMenu")
register_clcmd("say_team !pm", "cmdPMMenu")
register_clcmd("say !motd","motd_thingie")
register_clcmd("motd","motd_thingie")
register_clcmd("say motd","motd_thingie")
register_logevent("logevent_round_start", 2, "1=Round_Start")
register_clcmd("PrivateMessage", "cmd_player");
register_clcmd("say !spec", "cmdSpec");
register_clcmd("say !back", "cmdBack");
SpecTimes = register_cvar("amx_spectimes", "3");
register_saycmd("pug_voteban", "Cmd_VoteBan", -1, "");
register_clcmd("pug_voteban_reason", "Cmd_VoteBanReason", -1, "");
for(new i = 0 ; i < 3 ; i++)
{
g_iPcvar[i] = register_cvar(g_szCvarName[i], g_szCvarValue[i]);
}
RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "RG_HasRestrictItem", false);
RegisterHookChain(RG_CSGameRules_PlayerSpawn, "RG_PlayerSpawn", true);
new szLogInfo[] = "amx_logdir";
get_localinfo(szLogInfo, g_szLogFile, charsmax(g_szLogFile));
add(g_szLogFile, charsmax(g_szLogFile), "/voteban");
if(!dir_exists(g_szLogFile))
mkdir(g_szLogFile);
new szTime[32];
get_time("%d-%m-%Y", szTime, charsmax(szTime));
format(g_szLogFile, charsmax(g_szLogFile), "%s/%s.log", g_szLogFile, szTime)
}
public Change()
{
if(g_IsStarted)
{
if(g_KnifeRound)
{
forward_return(FMV_STRING, "Knife Round!");
}
else if(g_VoteProg)
{
forward_return(FMV_STRING, "Team Voting!");
}
else
{
new temp[64];
formatex(temp, charsmax(temp), "[A] %d - %d [B]", g_iScore[1], g_iScore[0]);
forward_return(FMV_STRING, temp);
}
}
else
{
forward_return(FMV_STRING, "Match Not Started!");
}
return FMRES_SUPERCEDE;
}
public Event_CurWeapon_NotKnife(id)
{
if (g_Restart || !g_KnifeRound)
return
rg_give_item(id, "weapon_knife", GT_REPLACE);
}
public Restart(id) {
if (is_user_admin(id))
server_cmd("sv_restart 1")
else
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "NOT_ADMIN");
}
public RestartS(id) {
if (is_user_admin(id))
server_cmd("restart")
else
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "NOT_ADMIN");
}
public showscore(id) {
if ( !get_pcvar_num(cvar_TeamTag) && g_IsStarted)
{
CrashAttempt(id)
CromChat(0, "&x04%L", LANG_PLAYER, "SHOW_SCORE", g_iScore[0], g_iScore[1]);
return PLUGIN_CONTINUE;
}
if (g_IsStarted)
{
if (g_Twon)
{
if (g_bSecondHalf)
CromChat(0, "&x04%L",LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[0], g_iScore[1]);
else
CromChat(0, "&x04%L", LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[1], g_iScore[0]);
}
else
{
if (g_bSecondHalf)
CromChat(0, "&x04%L",LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[1], g_iScore[0]);
else
CromChat(0, "&x04%L",LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[0], g_iScore[1]);
}
}
else
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "MATCH_NOT_STARTED")
}
return PLUGIN_CONTINUE
}
public Event_DeathMsg_Knife()
{
if ( g_Restart || !g_IsStarted )
return
new attacker = read_data(1)
new victim = read_data(2)
if ( !( 1 <= attacker <= gMaxPlayers ) || !( 1 <= victim <= gMaxPlayers) )
return;
if ( get_member(attacker, m_iTeam) == get_member(victim, m_iTeam) && attacker != victim )
{
CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_TK", get_pcvar_num(cvar_TeamKillPoints))
gPoints[attacker] -= get_pcvar_num(cvar_TeamKillPoints)
SaveStats(attacker)
}
if( victim != attacker && get_member(attacker, m_iTeam) != get_member(victim, m_iTeam))
{
new weap[7]
if( read_data(4, weap, charsmax(weap)) == 5 && equal(weap, "knife") )
{
new nameA[32]
new nameV[32]
get_user_name(attacker, nameA, 31)
get_user_name(victim, nameV, 31)
set_hudmessage(255, 255, 255, 0.04, 0.63, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync5, "%L", LANG_PLAYER, "JUST_KNIFED", nameA, nameV)
gPoints[attacker] += get_pcvar_num(cvar_KnifePoints)
gPoints[victim] -= get_pcvar_num(cvar_KnifeLosePoints)
SaveStats(attacker)
SaveStats(victim)
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KnifePoints))
CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_KNIFE", get_pcvar_num(cvar_KnifePoints))
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KnifeLosePoints) )
CromChat(victim, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_KNIFE", get_pcvar_num(cvar_KnifeLosePoints))
}
else
{
gPoints[attacker] += get_pcvar_num(cvar_KillPoints)
gPoints[victim] -= get_pcvar_num(cvar_KillLosePoints)
SaveStats(attacker)
SaveStats(victim)
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KillPoints) )
CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_KILL", get_pcvar_num(cvar_KillPoints))
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KillLosePoints) )
CromChat(victim, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_KILL", get_pcvar_num(cvar_KillLosePoints))
}
g_KillsAce[attacker]++
g_TotalKills[attacker]++
g_TotalDeaths[victim]++
}
}
public bomb_planted( planter )
{
if ( g_IsStarted )
{
g_BombPlants[planter]++
CromChat(planter, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_PLANT", get_pcvar_num(cvar_BombPlantPoints))
gPoints[planter] += get_pcvar_num(cvar_BombPlantPoints)
SaveStats(planter)
}
}
public bomb_defused( defuser )
{
if ( g_IsStarted )
{
g_KillsAce[defuser] -= 3
g_BombDefusions[defuser]++
CromChat(defuser, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_DEFUSE", get_pcvar_num(cvar_BombPlantPoints))
gPoints[defuser] += get_pcvar_num(cvar_BombDefusePoints)
SaveStats(defuser)
}
}
No_Shield_Message(id)
{
if ( !get_pcvar_num(cvar_AllowShield) || g_KnifeRound )
{
if ( g_KnifeRound )
CromChat(id, "%L", LANG_PLAYER, "NO_SHIELD_KNIFEROUND")
else
CromChat(id, "%L", LANG_PLAYER, "NO_SHIELD")
}
}
public client_damage(attacker, victim, damage, wpnindex, hitplace, TA) {
if (!get_pcvar_num(cvar_DetectTK))
return PLUGIN_CONTINUE
if (attacker == victim)
{
damage = 0
}
if (g_IsStarted)
{
if (TA == 1)
{
g_LeftKills[attacker] += damage
if (g_LeftKills[attacker] >= 100)
{
new nameofp[50]
get_user_name(attacker, nameofp, 49)
server_cmd("amx_banip #%d 10 ^"%L^"", get_user_userid(attacker), LANG_PLAYER, "YOU_HAVE_BEEN_WARNED", PREFIX)
set_hudmessage(255, 0, 0, 0.32, 0.70, 0, 6.0, 12.0)
show_hudmessage(0, "%L", LANG_PLAYER, "TK_BANNED", nameofp)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_DISABLED")
set_pcvar_num(cvar_mp_friendlyfire, 0)
new players[32], pnum, tempid;
get_players(players, pnum, "ch")
for (new i ; i<pnum ; i++)
{
tempid = players[i]
g_LeftKills[tempid] = 0
}
new taskId = scanForTaskID()
set_task(100.0, "TurnItBackOn", taskId)
return PLUGIN_HANDLED
}
if (g_LeftKills[attacker] - damage > 40)
return PLUGIN_HANDLED
else
{
if (g_LeftKills[attacker] < 40)
{
CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_WARNING")
}
if ( g_LeftKills[attacker] >= 40 && !g_givenChance[attacker] )
{
g_givenChance[attacker] = true
CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_WARNING_FINAL")
g_LeftKills[attacker] = 0
set_hudmessage(255, 0, 0, 0.19, 0.35, 0, 6.0, 12.0)
show_hudmessage(attacker, "%L", LANG_PLAYER, "TK_WARNING")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_OFF")
set_pcvar_num(cvar_mp_friendlyfire, 0)
g_bFFTKStop = true
}
else if (g_LeftKills[attacker] >= 40)
{
new nameofp[50]
get_user_name(attacker, nameofp, 49)
new pplayers[32], ppnum, ptempid;
get_players(pplayers, ppnum, "ch");
for( new i; i<ppnum; i++ )
{
ptempid = pplayers[i]
if (ptempid != attacker)
{
CromChat(ptempid, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_ANNOYING", nameofp)
set_hudmessage(255, 0, 0, 0.32, 0.70, 0, 6.0, 12.0)
show_hudmessage(ptempid, "%L", LANG_PLAYER, "TK_QUERY", nameofp)
CromChat(ptempid, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_OFF")
}
}
set_pcvar_num(cvar_mp_friendlyfire, 0)
g_bFFTKStop = true
}
}
}
}
return PLUGIN_CONTINUE
}
public infochanged(id, buffer) {
if ( ( g_IsStarted || g_KnifeRound ) && get_pcvar_num(cvar_TeamTag) )
{
if( is_user_connected(id) )
{
new name[32]
new val[32]
get_user_name(id, name, 31)
engfunc(EngFunc_InfoKeyValue, buffer, "name", val, 31)
new posA = contain(name, "[Team A]")
new posB = contain(name, "[Team B]")
if (g_bSecondHalf)
{
if (get_member(id, m_iTeam) == TEAM_TERRORIST)
{
if (posB == 0)
{
engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
return FMRES_SUPERCEDE
}
}
else if (get_member(id, m_iTeam) == TEAM_CT)
{
if (posA == 0)
{
engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
return FMRES_SUPERCEDE
}
}
}
else
{
if (get_member(id, m_iTeam) == TEAM_TERRORIST)
{
if (posA == 0)
{
engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
return FMRES_SUPERCEDE
}
}
else if (get_member(id, m_iTeam) == TEAM_CT)
{
if (posB == 0)
{
engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
return FMRES_SUPERCEDE
}
}
}
static a[65], b[65], a2[65], b2[65]
formatex(a, charsmax(a), "%L", LANG_PLAYER, "TEAM_A")
formatex(b, charsmax(b), "%L", LANG_PLAYER, "TEAM_B")
formatex(a2, charsmax(a2), "%L", LANG_PLAYER, "TEAM_A")
formatex(b2, charsmax(b2), "%L", LANG_PLAYER, "TEAM_B")
if (((contain(val, a) == 0) && (contain(name, a2) == -1)) || ((contain(val, b) == 0) && (contain(name, b2) == -1)))
{
return FMRES_IGNORED
}
if (((contain(val, b) == 0) && (contain(name, a2) == 0)) || ((contain(val, a) == 0) && (contain(name, b2) == 0)))
{
return FMRES_IGNORED
}
if (equal(val, name))
{
return FMRES_IGNORED
}
engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public TurnItBackOn() {
set_pcvar_num(cvar_mp_friendlyfire, 1)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_ON")
return PLUGIN_HANDLED
}
public voteban(id) {
if (g_LeftVotes[id] >= 1)
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "FF_EXCEED")
return PLUGIN_HANDLED
}
else if (g_VoteProg)
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "VOTE_IN_PROGRESS")
return PLUGIN_HANDLED
}
new menuTitle[64]
formatex(menuTitle, charsmax(menuTitle), "%L", LANG_PLAYER, "CHOOSE_PLAYER_VOTEBAN")
g_Menu = menu_create(menuTitle, "voteban_menu");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
new added
get_players(players, pnum, "ch");
for( new i; i<pnum; i++ )
{
tempid = players[i];
if (g_LeftKills[tempid] >= 40)
{
get_user_name(tempid, szName, 31);
num_to_str(tempid, szTempid, 9);
menu_additem(g_Menu, szName, szTempid, 0);
added++
}
}
for ( new i ; i < sizeof(g_LeftBans) ; i++ )
{
if ( g_LeftBans[i][0] && g_RoundsLeft[i] != -1 )
{
num_to_str(i+32, szTempid, 9)
menu_additem(g_Menu, g_LeftBans[i], szTempid, 0)
added++
}
}
if ( !added )
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "FF_NO_ABUSERS")
return PLUGIN_HANDLED
}
menu_display(id, g_Menu);
return PLUGIN_HANDLED;
}
public voteban_menu(id, menu, item) {
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
else if (g_VoteProg)
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "VOTE_IN_PROGRESS")
return PLUGIN_HANDLED
}
g_LeftVotes[id]++
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new tempid = str_to_num(data);
new name[50]
if ( tempid < 32 && !is_user_connected(tempid) )
return PLUGIN_HANDLED
get_user_name(tempid, name, 49)
votebanonplayer(tempid)
menu_destroy(menu);
return PLUGIN_HANDLED
}
public votebanonplayer(id) {
g_VoteProg = true
new nameofplayer[52]
new banline[128]
formatex(banline, charsmax(banline), "%L", LANG_PLAYER, "BAN")
if ( id >= 32 )
{
id -= 32
add(banline, 127, g_LeftBans[id])
id += 32
}
else
{
get_user_name(id, nameofplayer, 51)
add(banline, 127, nameofplayer)
}
add(banline, 127, "?")
new yesItem[10], noItem[10]
formatex(yesItem, charsmax(yesItem), "%L", LANG_PLAYER, "MENU_ITEM_YES")
formatex(noItem, charsmax(noItem), "%L", LANG_PLAYER, "MENU_ITEM_NO")
g_abMenu = menu_create(banline, "votebanonplayer_menu");
menu_additem(g_abMenu, yesItem)
menu_additem(g_abMenu, noItem)
new pplayers[32], ppnum, ptempid;
if ( 1 <= id <= gMaxPlayers )
{
switch( get_member(id, m_iTeam) )
{
case TEAM_CT: get_players(pplayers, ppnum, "che", "CT");
case TEAM_TERRORIST: get_players(pplayers, ppnum, "che", "TERRORIST");
}
}
else
get_players(pplayers, ppnum, "ch");
for( new i; i<ppnum; i++ )
{
ptempid = pplayers[i]
if (ptempid != id)
{
menu_display(ptempid, g_abMenu, 0)
}
}
set_task(7.0, "EndBanVote", id)
return PLUGIN_HANDLED
}
public EndBanVote(id)
{
g_VoteProg = false
show_menu(0, 0, "^n", 1);
if(g_bVotes[0] >= g_bVotes[1])
{
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "BAN_VOTE_SUCCESS")
set_hudmessage(255, 0, 0, 0.32, 0.70, 0, 6.0, 12.0)
if (id < 32)
{
server_cmd("amx_banip #%d 5 ^"%L^"", get_user_userid(id), LANG_PLAYER, "VOTED_TO_BAN", PREFIX)
new nameofp[50]
get_user_name(id, nameofp, 49)
ShowSyncHudMsg(0, g_MsgSync6, "%s %L", nameofp, LANG_PLAYER, "VOTED_TO_BE_BANNED")
}
else
{
server_cmd("amx_banip ^"%s^" 15", g_LeftBansIPs[id-32])
ShowSyncHudMsg(0, g_MsgSync6, "%s %L", g_LeftBans[id-32], LANG_PLAYER, "VOTED_TO_BE_BANNED")
copy(g_LeftBans[id-32], charsmax(g_LeftBans[]), "")
copy(g_LeftBansIPs[id-32], charsmax(g_LeftBansIPs[]), "")
g_RoundsLeft[id-32] = -1
}
g_bVotes[0] = 0
g_bVotes[1] = 0
return PLUGIN_HANDLED
}
else
{
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "BAN_VOTE_FAIL")
if (id >= 32)
{
copy(g_LeftBans[id-32], charsmax(g_LeftBans[]), "")
copy(g_LeftBansIPs[id-32], charsmax(g_LeftBansIPs[]), "")
g_RoundsLeft[id-32] = -1
}
else
{
g_bVotes[0] = 0
g_bVotes[1] = 0
g_LeftKills[id] = 0
}
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED;
// NO RETURN since code is unreachable here..
}
public votebanonplayer_menu(id, menu, item) {
if( item == MENU_EXIT )
return PLUGIN_HANDLED;
g_bVotes[item]++;
return PLUGIN_HANDLED;
}
public handled(id) {
if ( get_member(id, m_iTeam) == TEAM_UNASSIGNED )
return PLUGIN_CONTINUE
player(id)
return PLUGIN_HANDLED
}
public openSettingsMenu(id)
settingsMenu(id, 0)
public settingsMenu(id, page)
{
if ( !is_user_admin(id) )
{
console_print(id, "Only admins can access the settings menu.")
return PLUGIN_HANDLED
}
static enabled[35], disabled[35], title[79]
formatex(enabled, charsmax(enabled), "\y%L\w", LANG_PLAYER, "ENABLED")
formatex(disabled, charsmax(disabled), "\r%L\w", LANG_PLAYER, "DISABLED")
formatex(title, charsmax(title), "\r[Auto-Mix]\w %L:", LANG_PLAYER, "SETTINGS_MENU_TITLE")
new menu = menu_create(title, "settingsHandler")
new item1[79], item2[79], item3[79], item4[79], item5[79], item6[79], item7[79]
new item8[79], item9[79], item10[79], item11[79], item12[79], item13[79], item14[79]
new item15[79], item16[79], item17[79], item18[79], item19[79]
switch ( get_pcvar_num(cvar_pLeftMethod) )
{
case 0: format(item3, charsmax(item3), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM3", LANG_PLAYER, "HUD_NOT_READY")
case 1: format(item3, charsmax(item3), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM3", LANG_PLAYER, "HUD_READY")
case 2: format(item3, charsmax(item3), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM3", LANG_PLAYER, "BOTH")
}
formatex(item1, charsmax(item1), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM1", get_pcvar_num(cvar_pLeft) )
formatex(item2, charsmax(item2), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM2", get_pcvar_num(cvar_TimeLeft) )
formatex(item4, charsmax(item4), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM4", get_pcvar_num(cvar_FFvote) ? enabled : disabled )
formatex(item5, charsmax(item5), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM5", get_pcvar_num(cvar_KnifeRound) ? enabled : disabled )
formatex(item6, charsmax(item6), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM6", get_pcvar_num(cvar_DetectTK) ? enabled : disabled )
formatex(item7, charsmax(item7), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM7", get_pcvar_num(cvar_MuteMenu) ? enabled : disabled )
formatex(item8, charsmax(item8), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM8", get_pcvar_num(cvar_AllowShield) ? enabled : disabled )
formatex(item9, charsmax(item9), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM9", get_pcvar_num(cvar_MapVote) ? enabled : disabled )
formatex(item10, charsmax(item10), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM10", get_pcvar_num(cvar_Rankings) ? enabled : disabled )
formatex(item11, charsmax(item11), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM11", get_pcvar_num(cvar_TeamTag) ? enabled : disabled )
formatex(item12, charsmax(item12), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM12", get_pcvar_num(cvar_AceHud) ? enabled : disabled )
formatex(item13, charsmax(item13), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM13", get_pcvar_num(cvar_AFKKick) ? enabled : disabled )
formatex(item14, charsmax(item14), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM14")
formatex(item15, charsmax(item15), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM15")
formatex(item16, charsmax(item16), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM16", get_pcvar_num(cvar_RanksSystem) ? enabled : disabled )
formatex(item17, charsmax(item17), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM17", ( get_pcvar_num(cvar_RanksSystem) && get_pcvar_num(cvar_RanksSystemMessages) ) ? enabled : disabled )
formatex(item18, charsmax(item18), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM18")
formatex(item19, charsmax(item19), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM19")
menu_additem(menu, item1, .paccess = g_IsStarted ? ADMIN_NONE : 0 )
menu_additem(menu, item2)
menu_additem(menu, item3)
menu_additem(menu, item4)
menu_additem(menu, item5)
menu_additem(menu, item6)
menu_additem(menu, item7)
menu_additem(menu, item8)
menu_additem(menu, item9)
menu_additem(menu, item10)
menu_additem(menu, item11, .paccess = g_IsStarted ? ADMIN_NONE : 0 )
menu_additem(menu, item12)
menu_additem(menu, item13)
menu_additem(menu, item14)
menu_additem(menu, item15)
menu_additem(menu, item16)
menu_additem(menu, item17)
menu_additem(menu, item18, .paccess = gChanging ? ADMIN_NONE : 0)
menu_additem(menu, item19, .paccess = gChanging2 ? ADMIN_NONE : 0)
menu_display(id, menu, page)
return PLUGIN_HANDLED
}
public settingsHandler(id, menu, item) {
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new currentCvarNum
switch ( item )
{
case 0:
{
new playersReady = -1
if ( !( g_AfterRdy || g_IsStarted || g_MapChanged ) )
{
playersReady = 0
for ( new i = 1 ; i <= gMaxPlayers ; i++ )
{
if ( !is_user_connected(i) )
continue;
if ( g_bIsReady[i] )
playersReady++
}
}
currentCvarNum = get_pcvar_num(cvar_pLeft)
if ( playersReady == -1 )
{
if ( currentCvarNum + 2 <= gMaxPlayers )
currentCvarNum += 2
else
currentCvarNum = 2
}
else
{
if ( currentCvarNum + 2 <= gMaxPlayers )
currentCvarNum += 2
else
{
new setToNum = 2
while ( setToNum - playersReady <= 0)
setToNum += 2
currentCvarNum = setToNum
}
}
set_pcvar_num(cvar_pLeft, currentCvarNum)
gPlayersLeft = currentCvarNum
if ( !( g_AfterRdy || g_IsStarted || g_MapChanged ) )
{
for ( new i = 1 ; i <= gMaxPlayers ; i++ )
{
if ( !is_user_connected(i) )
continue;
if ( g_bIsReady[i] )
gPlayersLeft--
}
}
}
case 1:
{
currentCvarNum = get_pcvar_num(cvar_TimeLeft)
if ( currentCvarNum + 5 <= TIME_MAX )
currentCvarNum += 5
else
currentCvarNum = 30
set_pcvar_num(cvar_TimeLeft, currentCvarNum)
}
case 2:
{
currentCvarNum = get_pcvar_num(cvar_pLeftMethod)
if ( currentCvarNum != 2 )
currentCvarNum++
else
currentCvarNum = 0
set_pcvar_num(cvar_pLeftMethod, currentCvarNum)
}
case 3:
{
currentCvarNum = get_pcvar_num(cvar_FFvote)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_FFvote, currentCvarNum)
}
case 4:
{
currentCvarNum = get_pcvar_num(cvar_KnifeRound)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_KnifeRound, currentCvarNum)
}
case 5:
{
currentCvarNum = get_pcvar_num(cvar_DetectTK)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_DetectTK, currentCvarNum)
}
case 6:
{
currentCvarNum = get_pcvar_num(cvar_MuteMenu)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_MuteMenu, currentCvarNum)
}
case 7:
{
currentCvarNum = get_pcvar_num(cvar_AllowShield)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
if ( !currentCvarNum )
{
new players[32], pnum, tempid
get_players(players, pnum, "ch")
for ( new i ; i < pnum ; i++ )
{
tempid = players[i]
remove_shield( tempid )
}
}
set_pcvar_num(cvar_AllowShield, currentCvarNum)
}
case 8:
{
currentCvarNum = get_pcvar_num(cvar_MapVote)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_MapVote, currentCvarNum)
}
case 9:
{
currentCvarNum = get_pcvar_num(cvar_Rankings)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_Rankings, currentCvarNum)
}
case 10:
{
currentCvarNum = get_pcvar_num(cvar_TeamTag)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_TeamTag, currentCvarNum)
}
case 11:
{
currentCvarNum = get_pcvar_num(cvar_AceHud)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_AceHud, currentCvarNum)
}
case 12:
{
currentCvarNum = get_pcvar_num(cvar_AFKKick)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_AFKKick, currentCvarNum)
}
case 13: ReadyPosMenu(id)
case 14: NotReadyPosMenu(id)
case 15:
{
currentCvarNum = get_pcvar_num(cvar_RanksSystem)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
if ( !currentCvarNum )
set_pcvar_num(cvar_RanksSystemMessages, 0)
else
set_pcvar_num(cvar_RanksSystemMessages, 1)
set_pcvar_num(cvar_RanksSystem, currentCvarNum)
}
case 16:
{
currentCvarNum = get_pcvar_num(cvar_RanksSystemMessages)
if ( currentCvarNum )
currentCvarNum = 0
else
currentCvarNum = 1
set_pcvar_num(cvar_RanksSystemMessages, currentCvarNum)
if ( !get_pcvar_num(cvar_RanksSystem) )
set_pcvar_num(cvar_RanksSystemMessages, 0)
}
case 17: PointsPricesMenu(id)
case 18: RanksPricesMenu(id)
}
if ( item == 13 || item == 14 || item == 17 || item == 18 )
return PLUGIN_HANDLED
if ( item >= 7 && item <= 13 )
settingsMenu(id, 1)
else if ( item >= 14 && item <= 20 )
settingsMenu(id, 2)
else
settingsMenu(id, 0)
return PLUGIN_HANDLED
}
public ReadyPosMenu(id)
{
if ( !is_user_connected(id) )
return;
new Title[125]
formatex(Title, charsmax(Title), "%L", LANG_PLAYER, "READY_POS_TITLE", get_pcvar_float(cvar_ReadyXPos), get_pcvar_float(cvar_ReadyYPos))
new rPosMenu = menu_create(Title, "ReadyPosHandler")
new item[16]
formatex(item, charsmax(item), "%L", LANG_PLAYER, "UP")
menu_additem(rPosMenu, item)
formatex(item, charsmax(item), "%L", LANG_PLAYER, "DOWN")
menu_additem(rPosMenu, item)
formatex(item, charsmax(item), "%L", LANG_PLAYER, "RIGHT")
menu_additem(rPosMenu, item)
formatex(item, charsmax(item), "%L", LANG_PLAYER, "LEFT")
menu_additem(rPosMenu, item)
formatex(item, charsmax(item), "%L", LANG_PLAYER, "BACK")
menu_setprop(rPosMenu, MPROP_EXITNAME, item)
menu_display(id, rPosMenu)
}
public ReadyPosHandler(id, menu, item) {
if( item == MENU_EXIT )
{
settingsMenu(id, 1)
return PLUGIN_HANDLED;
}
new Float:setCvarNum
switch ( item )
{
case 0: setCvarNum = get_pcvar_float(cvar_ReadyYPos) - 0.01
case 1: setCvarNum = get_pcvar_float(cvar_ReadyYPos) + 0.01
case 2: setCvarNum = get_pcvar_float(cvar_ReadyXPos) + 0.01
case 3: setCvarNum = get_pcvar_float(cvar_ReadyXPos) - 0.01
}
set_pcvar_float(cvar_ReadyYPos, setCvarNum)
ReadyPosMenu(id)
return PLUGIN_HANDLED
}
public NotReadyPosMenu(id)
{
if ( !is_user_connected(id) )
return;
new Title[125]
formatex(Title, charsmax(Title), "%L", LANG_PLAYER, "NOTREADY_POS_TITLE", get_pcvar_float(cvar_NotReadyXPos), get_pcvar_float(cvar_NotReadyYPos))
new rPosMenu = menu_create(Title, "NotReadyPosHandler")
new item[16]
formatex(item, charsmax(item), "%L", LANG_PLAYER, "UP")
menu_additem(rPosMenu, item)
formatex(item, charsmax(item), "%L", LANG_PLAYER, "DOWN")
menu_additem(rPosMenu, item)
formatex(item, charsmax(item), "%L", LANG_PLAYER, "RIGHT")
menu_additem(rPosMenu, item)
formatex(item, charsmax(item), "%L", LANG_PLAYER, "LEFT")
menu_additem(rPosMenu, item)
formatex(item, charsmax(item), "%L", LANG_PLAYER, "BACK")
menu_setprop(rPosMenu, MPROP_EXITNAME, item)
menu_display(id, rPosMenu)
}
public NotReadyPosHandler(id, menu, item) {
if( item == MENU_EXIT )
{
settingsMenu(id, 2)
return PLUGIN_HANDLED;
}
new Float:setCvarNum
switch ( item )
{
case 0: setCvarNum = get_pcvar_float(cvar_NotReadyYPos) - 0.01
case 1: setCvarNum = get_pcvar_float(cvar_NotReadyYPos) + 0.01
case 2: setCvarNum = get_pcvar_float(cvar_NotReadyXPos) + 0.01
case 3: setCvarNum = get_pcvar_float(cvar_NotReadyXPos) - 0.01
}
set_pcvar_float(cvar_NotReadyYPos, setCvarNum)
NotReadyPosMenu(id)
return PLUGIN_HANDLED
}
public PointsPricesMenu(id)
{
if ( !is_user_connected(id) )
return;
new menuTitle[65]
formatex(menuTitle, charsmax(menuTitle), "\y[Auto-Mix]\w %L", LANG_PLAYER, "POINTS_PRICES_MENU_TITLE")
new pointsMenu = menu_create(menuTitle, "pointsHandler")
new item1[79], item2[79], item3[79], item4[79], item5[79], item6[79], item7[79]
new item8[79], item9[79], item10[79], item11[79], item12[79]
formatex(item1, charsmax(item1), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM1", get_pcvar_num(cvar_KillPoints))
formatex(item2, charsmax(item2), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM2", get_pcvar_num(cvar_KnifePoints))
formatex(item3, charsmax(item3), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM3", get_pcvar_num(cvar_WinsMatchPoints))
formatex(item4, charsmax(item4), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM4", get_pcvar_num(cvar_PlaysUntilEndPoints))
formatex(item5, charsmax(item5), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM5", get_pcvar_num(cvar_LeavesMatchPoints))
formatex(item6, charsmax(item6), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM6", get_pcvar_num(cvar_LeavesMatchTime))
formatex(item7, charsmax(item7), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM7", get_pcvar_num(cvar_TeamKillPoints))
formatex(item8, charsmax(item8), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM8", get_pcvar_num(cvar_BombPlantPoints))
formatex(item9, charsmax(item9), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM9", get_pcvar_num(cvar_BombDefusePoints))
formatex(item10, charsmax(item10), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM10", get_pcvar_num(cvar_KillLosePoints))
formatex(item11, charsmax(item11), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM11", get_pcvar_num(cvar_KnifeLosePoints))
formatex(item12, charsmax(item12), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM12", get_pcvar_num(cvar_LosesMatchPoints))
menu_additem(pointsMenu, item1)
menu_additem(pointsMenu, item2)
menu_additem(pointsMenu, item3)
menu_additem(pointsMenu, item4)
menu_additem(pointsMenu, item5)
menu_additem(pointsMenu, item6)
menu_additem(pointsMenu, item7)
menu_additem(pointsMenu, item8)
menu_additem(pointsMenu, item9)
menu_additem(pointsMenu, item10)
menu_additem(pointsMenu, item11)
menu_additem(pointsMenu, item12)
new ExitButton[16]
formatex(ExitButton, charsmax(ExitButton), "%L", LANG_PLAYER, "MENU_ITEM_BACK")
menu_setprop(pointsMenu, MPROP_EXITNAME, ExitButton)
menu_display(id, pointsMenu)
}
public pointsHandler(id, menu, item) {
if( item == MENU_EXIT )
{
settingsMenu(id, 2)
return PLUGIN_HANDLED;
}
gChanging = item
gChangerID = id
new menuTitle[128], menuTitle2[128]
formatex(menuTitle, charsmax(menuTitle), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_DIRECTIONS")
formatex(menuTitle2, charsmax(menuTitle2), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_DIRECTIONS2")
show_menu(id, MENU_KEY_0, ( item == 6 ) ? menuTitle : menuTitle2, -1, "setprices menu")
return PLUGIN_HANDLED
}
public RanksPricesMenu(id)
{
if ( !is_user_connected(id) )
return;
new menuTitle[65]
formatex(menuTitle, charsmax(menuTitle), "\y[Auto-Mix]\w %L", LANG_PLAYER, "RANKS_PRICES_MENU_TITLE")
new pointsMenu = menu_create(menuTitle, "ranksHandler")
new item1[79], item2[79], item3[79], item4[79], item5[79]
formatex(item1, charsmax(item1), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1", get_pcvar_num(cvar_BeginnerPoints))
formatex(item2, charsmax(item2), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM2", get_pcvar_num(cvar_RegularPoints))
formatex(item3, charsmax(item3), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM3", get_pcvar_num(cvar_VeteranPoints))
formatex(item4, charsmax(item4), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM4", get_pcvar_num(cvar_ProPoints))
formatex(item5, charsmax(item5), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM5", get_pcvar_num(cvar_HardCorePoints))
menu_additem(pointsMenu, item1)
menu_additem(pointsMenu, item2)
menu_additem(pointsMenu, item3)
menu_additem(pointsMenu, item4)
menu_additem(pointsMenu, item5)
new ExitButton[16]
formatex(ExitButton, charsmax(ExitButton), "%L", LANG_PLAYER, "MENU_ITEM_BACK")
menu_setprop(pointsMenu, MPROP_EXITNAME, ExitButton)
menu_display(id, pointsMenu)
}
public ranksHandler(id, menu, item) {
if( item == MENU_EXIT )
{
settingsMenu(id, 2)
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new helpText[78]
formatex(helpText, charsmax(helpText), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_DIRECTIONS2")
new menuOption = str_to_num(data)
gChanging2 = menuOption
gChangerID2 = id
show_menu(id, MENU_KEY_0, helpText, -1, "setprices menu")
return PLUGIN_HANDLED
}
public menuHandler(id, key)
{
gChanging = 0
gChanging2 = 0
gChangerID = 0
gChangerID2 = 0
return PLUGIN_HANDLED
}
public plugin_cfg() {
SetCheckFilled()
server_cmd("exec practice.cfg")
DisplayCommands()
set_pcvar_string(cvar_humans_join_team, "")
if (!file_exists(gPug_ini_file))
{
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PUG_INI_ERROR")
return PLUGIN_HANDLED
}
switch ( get_pug_state() )
{
case 0:
{
gEntShowLeft = create_entity("info_target")
entity_set_string(gEntShowLeft, EV_SZ_classname, "show_left_ent")
register_think("show_left_ent", "ShowLeft")
entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 1.0)
return PLUGIN_HANDLED
}
case 1:
{
g_MapChanged = true
new taskId = scanForTaskID()
set_task(20.0, "TeamsVote", taskId)
}
case 2:
{
g_MapChanged = true
g_CustomGame = true
set_pug_state(1)
new taskId = scanForTaskID()
set_task(20.0, "TeamsVote", taskId)
}
}
return PLUGIN_CONTINUE
}
public SetCheckFilled() {
new taskId = scanForTaskID()
set_task(5.0, "CheckFilled", taskId)
}
public CheckFilled() {
new players = get_playersnum()
for ( new i = 1 ; i <= gMaxPlayers ; i++ )
{
if ( !is_user_connected(i) )
continue;
if ( is_user_hltv(i) || is_user_bot(i) )
players--
}
if (players >= get_pcvar_num(cvar_pLeft))
{
new rnd = random_num(99, 9999)
new pass[10]
num_to_str(rnd, pass, 9)
new tokick = players - get_pcvar_num(cvar_pLeft)
for (new kick; kick<tokick ; kick++)
{
new playeract = random(get_pcvar_num(cvar_pLeft))
while ( !is_user_connected(playeract) || !is_user_bot(playeract) || !is_user_hltv(playeract) )
{
playeract = random(get_pcvar_num(cvar_pLeft))
}
server_cmd("kick # %d %s %L", get_user_userid(playeract), PREFIX, LANG_PLAYER, "SERVER_FULL")
}
}
return PLUGIN_CONTINUE
}
public DisplayCommands() {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "SHOW_INFO")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "SHOW_INFO_2")
new taskId = scanForTaskID()
set_task(g_IsStarted ? 50.0 : 300.0, "DisplayCommands", taskId)
}
public round_end() {
if ( g_Restart )
return PLUGIN_HANDLED
TKRoundsLeft()
if ( g_bFFTKStop )
{
g_bFFTKStop = false
set_pcvar_num(cvar_mp_friendlyfire, 1)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_ON")
}
if (g_KnifeRound)
{
new Players[32], pNum, ptn, pctn;
get_players(Players, pNum, "ch")
for ( new i ; i < pNum ; i++ ) {
new tempid = Players[i]
if ( !is_user_alive(tempid) )
continue;
else if ( get_member(tempid, m_iTeam) == TEAM_TERRORIST )
ptn++;
else if ( get_member(tempid, m_iTeam) == TEAM_CT )
pctn++;
}
new WinningTeam
if (ptn > pctn)
{
CromChat(0, "&x04%s %L %L", PREFIX, LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_C" : "TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WON")
set_hudmessage(255, 0, 0, 0.40, 0.71, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync6, "%L - %L", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_C" : "TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WINNERS")
g_Twon = true
WinningTeam = T_WIN
}
else if (pctn > ptn)
{
CromChat(0, "&x04%s %L %L", PREFIX, LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_D" : "COUNTER_TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WON")
set_hudmessage(255, 0, 0, 0.40, 0.71, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync6, "%L - %L", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_D" : "COUNTER_TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WINNERS")
WinningTeam = CT_WIN
}
else
{
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_WITHDRAW")
set_hudmessage(255, 0, 0, 0.40, 0.71, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync6, "%L", LANG_PLAYER, "KNIFE_ROUND_WITHDRAWN_HUD")
new taskId = scanForTaskID()
set_task(3.0, "SettingsAfter", taskId)
return PLUGIN_CONTINUE
}
KnifeSwitch(WinningTeam)
return PLUGIN_CONTINUE
}
if (g_IsStarted)
{
new players[32], pnum, tempid;
new numTt, numCtt;
get_players(players, pnum, "ch")
if ( !( (get_playersnum() != get_pcvar_num(cvar_pLeft)) || (get_pcvar_num(cvar_pLeft) != 10) ) )
{
for ( new i ; i < pnum ; i++ )
{
tempid = players[i]
switch ( get_member(tempid, m_iTeam) )
{
case TEAM_TERRORIST: numTt++
case TEAM_CT: numCtt++
}
}
for (new i ; i < pnum ; i++)
{
tempid = players[i]
g_LeftKills[tempid] = (g_LeftKills[tempid]/3)*2
if ( g_KillsAce[tempid] < 4 || get_playersnum() != 10 || !get_pcvar_num(cvar_AceHud) )
{
g_KillsAce[tempid] = 0
continue;
}
if ( get_member(tempid, m_iTeam) == TEAM_TERRORIST || get_member(tempid, m_iTeam) == TEAM_CT )
{
if (g_KillsAce[tempid] == 4)
{
new name[32]
get_user_name(tempid, name, 31)
set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 12.0)
show_hudmessage(0, "%L", LANG_PLAYER, "DID_A_MINIACE", name)
}
else if (g_KillsAce[tempid] == 5)
{
new name[32]
get_user_name(tempid, name, 31)
set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 12.0)
show_hudmessage(0, "%L", LANG_PLAYER, "DID_AN_ACE", name)
}
}
g_KillsAce[tempid] = 0
}
}
}
if ( !g_CustomGame || true )
{
if (g_IsStarted)
{
new numT, numCt;
for ( new i = 1 ; i <= gMaxPlayers ; i++ )
{
if ( is_user_connected(i) )
{
if ( get_member(i, m_iTeam) == TEAM_TERRORIST )
numT++
else if ( get_member(i, m_iTeam) == TEAM_CT )
numCt++
}
}
if ( numT <= (get_pcvar_num(cvar_pLeft)/2) - 2 || numCt <= (get_pcvar_num(cvar_pLeft)/2) - 2 )
{
if ( g_NotBalanced == 2 )
{
if (numT > numCt)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "T_AUTO_WON")
else if (numCt > numT)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CT_AUTO_WON")
else if (numCt == numT)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NO_TEAM_WON")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "ENDING_MATCH")
new taskId = scanForTaskID()
set_task(5.0, "EndMatch", taskId)
g_NotBalanced = 0
}
else
{
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NOT_ENOUGH_TEAMMATES", (get_pcvar_num(cvar_pLeft)/2) - 2)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NOT_ENOUGH_TEAMMATES2", 2 - g_NotBalanced )
g_NotBalanced++
}
}
else
g_NotBalanced = 0;
}
}
return PLUGIN_HANDLED
}
public TKRoundsLeft()
{
for ( new i ; i < sizeof(g_RoundsLeft) ; i++ )
{
if ( g_RoundsLeft[i] != -1 )
g_RoundsLeft[i]--
}
}
public LR() {
set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync6, "%L", LANG_PLAYER, "LAST_ROUND")
}
public scndhalf() {
server_cmd("sv_restart 1")
new taskId = scanForTaskID()
set_task(3.0, "showscnd", taskId)
}
public showscnd() {
set_hudmessage(255, 255, 255, 0.06, 0.34, 0, 6.0, 18.0)
ShowSyncHudMsg(0, g_MsgSync3, "%L", LANG_PLAYER, "SECOND_HALF_STARTED")
return PLUGIN_HANDLED
}
public Event_TeamScore() {
if ( g_Restart )
return PLUGIN_HANDLED
if (g_IsStarted)
{
read_data(1, g_szTeamName, 1)
g_iTeam = (g_szTeamName[0] == 'T') ? 0 : 1
g_iAltScore = read_data(2)
g_iScoreOffset = g_iAltScore - g_iLastTeamScore[g_iTeam]
if(g_iScoreOffset > 0)
{
g_iScore[g_iTeam] += g_iScoreOffset
}
g_iLastTeamScore[g_iTeam] = g_iAltScore
if (g_iScore[0] + g_iScore[1] == 14)
{
new taskId = scanForTaskID()
set_task(10.0, "LR", taskId)
}
else if (g_iScore[0] + g_iScore[1] == 15)
{
if (g_bStop2)
{
return PLUGIN_HANDLED;
}
g_bStop2 = true
SwitchTeams()
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "SWITCH_TEAMS")
new taskId = scanForTaskID()
set_task(10.0, "scndhalf", taskId)
}
else if ((g_iScore[0] == 16) || (g_iScore[1] == 16))
{
if (g_bStop)
{
return PLUGIN_HANDLED
}
g_bStop = true
EndMatch()
return PLUGIN_HANDLED
}
else if ((g_iScore[0] == 15) || (g_iScore[1] == 15))
{
new taskId = scanForTaskID()
set_task(10.0, "LRFif", taskId)
return PLUGIN_HANDLED
}
ClientCommand_SayScore()
}
return PLUGIN_HANDLED
}
public LRFif() {
if ((g_iScore[1] == 16) || (g_iScore[0] == 16))
return PLUGIN_HANDLED
set_hudmessage(255, 255, 255, 0.06, 0.62, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync6, "%L (%L) %d - %d (%L)", LANG_PLAYER, "LAST_ROUND", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_C" : "COUNTER_TERRORISTS" ), g_iScore[g_Twon ? 0 : 1], g_iScore[g_Twon ? 1 : 0], LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_D" : "TERRORISTS" ) )
return PLUGIN_HANDLED
}
public ClientCommand_SayScore() {
if (g_Twon)
{
if (g_bSecondHalf)
{
if (g_bDidScore)
{
showscore(0)
g_bDidScore = false
}
else
g_bDidScore = true
}
else
{
if (g_bDidScore)
{
showscore(0)
g_bDidScore = false
}
else
g_bDidScore = true
}
}
else
{
if (g_bSecondHalf)
{
if (g_bDidScore)
{
showscore(0)
g_bDidScore = false
}
else
g_bDidScore = true
}
else
{
if (g_bDidScore)
{
showscore(0)
g_bDidScore = false
}
else
g_bDidScore = true
}
}
return PLUGIN_HANDLED
}
public client_disconnect(id) {
if ( is_user_bot(id) || is_user_hltv(id) || !( 1 <= id <= gMaxPlayers ) )
return PLUGIN_HANDLED
if ( id == gChangerID )
{
gChangerID = 0
gChanging = 0
}
else if ( id == gChangerID2 )
{
gChangerID2 = 0
gChanging2 = 0
}
if ( g_IsStarted )
{
g_PugLeaves++
DidTK(id)
if ( get_pcvar_num(cvar_RanksSystem) )
{
gPoints[id] -= get_pcvar_num(cvar_LeavesMatchPoints)
enterLeaveRecord(id)
}
}
clear_list(id)
gDidPlayUntilEnd[id] = false
g_LeftVotes[id] = 0
g_TotalKills[id] = 0
g_TotalDeaths[id] = 0
g_BombPlants[id] = 0
g_BombDefusions[id] = 0
if ( g_givenChance[id] )
get_user_authid(id, g_givenChanceSteamIDs[g_givenTimes++], charsmax(g_givenChanceSteamIDs[]))
g_givenChance[id] = false
if (g_bIsReady[id])
{
gPlayersLeft++
}
g_bIsReady[id] = false
remove_task(id)
remove_task(id+SET_CONST_TASKID)
return PLUGIN_HANDLED
}
public client_connect(id)
{
if (is_user_bot(id) || is_user_hltv(id) || (!is_user_connected(id) && !is_user_connecting(id)) || !(1 <= id <= gMaxPlayers))
return PLUGIN_HANDLED;
g_afktime[id] = 0.0
g_LeftVotes[id] = 0
gTypedCommand[id] = 0.0
g_KillsAce[id] = 0
if (!file_exists(gPug_ini_file))
{
CromChat(0, "&x04%s %L", PREFIX, "PUG_INI_ERROR")
return PLUGIN_HANDLED
}
if (get_pug_state() == 1)
{
g_LeftKills[id] = 0
return PLUGIN_HANDLED
}
if (g_bCpt && is_user_connected(id))
{
if (get_member(id, m_iTeam) != TEAM_UNASSIGNED)
{
rg_set_user_team(id, TEAM_SPECTATOR);
rg_set_user_team(id, TEAM_SPECTATOR)
return PLUGIN_HANDLED
}
else
set_task(1.0, "client_connect", id)
return PLUGIN_HANDLED
}
if ( !( g_AfterRdy || g_IsStarted ) )
{
g_bIsReady[id] = false
remove_task(id)
g_iTimeLeft[id] = get_pcvar_num(cvar_TimeLeft)
g_LeftKills[id] = 0
ToSetTaskToInfo(id)
}
return PLUGIN_HANDLED
}
public client_authorized(id)
{
if ( is_user_hltv(id) || is_user_bot(id) )
return;
LoadStats(id)
new authID[64]
get_user_authid(id, authID, charsmax(authID))
for ( new i ; i < g_givenTimes ; i++ )
{
if ( equal(authID, g_givenChanceSteamIDs[i]) )
{
for ( new z ; z < sizeof(g_givenChanceSteamIDs[]) ; z++ )
g_givenChanceSteamIDs[i][z] = 0
for ( new z = i ; z < g_givenTimes ; z++ )
copy(g_givenChanceSteamIDs[z], charsmax(g_givenChanceSteamIDs[]), g_givenChanceSteamIDs[z+1])
for ( new z ; z < sizeof(g_givenChanceSteamIDs[]) ; z++ )
g_givenChanceSteamIDs[g_givenTimes][z] = 0
g_givenTimes--
g_givenChance[id] = true
}
}
if ( g_IsStarted )
set_task(0.1, "returnPointsIfDeserves", id)
}
public DidTK(id)
{
if ( g_LeftKills[id] >= 40 )
{
new ip[64], name[64], szAdd[128]
get_user_ip(id, ip, charsmax(ip), 1)
get_user_name(id, name, charsmax(name))
for ( new i ; i < sizeof(g_LeftBans) ; i++ )
{
if ( equali(g_LeftBansIPs[i], ip) )
break;
else if ( !g_LeftBans[i][0] && !g_LeftBansIPs[i][0] )
{
formatex(szAdd, charsmax(szAdd), "%s - [\r%L\w]", name, LANG_PLAYER, "TK_BAN_MENU_ITEM")
copy(g_LeftBans[i], charsmax(g_LeftBans[]), szAdd)
copy(g_LeftBansIPs[i], charsmax(g_LeftBansIPs[]), ip)
g_RoundsLeft[id] = 3
}
}
}
}
public enterLeaveRecord(id)
{
get_user_authid(id, gLeftSteamIDs[gLeftTimes], charsmax(gLeftSteamIDs[]))
gLastTime[gLeftTimes++] = get_systime()
}
public returnPointsIfDeserves(id)
{
if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) )
return;
new authid[64]
get_user_authid(id, authid, charsmax(authid))
for ( new i ; i < gLeftTimes ; i++ )
{
if ( equali(authid, gLeftSteamIDs[i]) )
{
if ( get_systime() - gLastTime[i] <= get_pcvar_num(cvar_LeavesMatchTime) )
{
gPoints[id] += get_pcvar_num(cvar_LeavesMatchPoints)
SaveStats(id)
}
for ( new z ; z < sizeof(gLeftSteamIDs[]) ; z++ )
gLeftSteamIDs[i][z] = 0
for ( new z = i ; z < gLeftTimes ; z++ )
copy(gLeftSteamIDs[z], charsmax(gLeftSteamIDs[]), gLeftSteamIDs[z+1])
for ( new z ; z < sizeof(gLeftSteamIDs[]) ; z++ )
gLeftSteamIDs[gLeftTimes][z] = 0
for ( new z = i ; z < sizeof(gLastTime) ; z++ )
gLastTime[z] = gLastTime[z+1]
gLastTime[gLeftTimes--] = 0
}
}
}
public CheckFull(id) {
if (get_maxplayers() == get_pcvar_num(cvar_pLeft))
return PLUGIN_HANDLED
new players[32], pnum
get_players(players, pnum, "ch")
if ( pnum == get_pcvar_num(cvar_pLeft) && get_playersnum() != get_maxplayers() )
{
new rnd = random_num(99, 9999)
new pass[10]
num_to_str(rnd, pass, 9)
new players[32], pnum, tempid;
get_players(players, pnum, "ch")
for (new full; full<pnum ; full++)
{
players[full] = tempid
if (is_user_connecting(tempid))
server_cmd("kick # %d %s %L", get_user_userid(tempid), PREFIX, LANG_PLAYER, "SERVER_FULL")
}
}
else if (pnum > get_pcvar_num(cvar_pLeft))
{
server_cmd("kick # %d %s %L", get_user_userid(id), PREFIX, LANG_PLAYER, "SERVER_FULL")
}
return PLUGIN_HANDLED
}
public CheckNow() {
CromChat(0, "&x04get_playersnum() == %d", get_playersnum())
if (get_playersnum() > get_pcvar_num(cvar_pLeft))
{
new tokick = get_playersnum() - get_pcvar_num(cvar_pLeft)
for (new kick; kick<tokick ; kick++)
{
new playeract = random(get_pcvar_num(cvar_pLeft))
while (!is_user_connected(playeract))
{
playeract = random(get_pcvar_num(cvar_pLeft))
}
server_cmd("kick %d %s %L", get_user_userid(playeract), PREFIX, LANG_PLAYER, "SERVER_FULL")
}
}
new rnd = random_num(99, 9999)
new pass[10]
num_to_str(rnd, pass, 9)
return PLUGIN_CONTINUE
}
public DoAgain(id) {
if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) )
return PLUGIN_HANDLED
if (!file_exists(gPug_ini_file))
{
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PUG_INI_ERROR")
return PLUGIN_HANDLED
}
if (get_pug_state() == 1)
{
g_LeftKills[id] = 0
return PLUGIN_HANDLED
}
if ( !g_AfterRdy && !g_IsStarted)
{
g_KillsAce[id] = 0
g_bIsReady[id] = false
remove_task(id)
g_iTimeLeft[id] = get_pcvar_num(cvar_TimeLeft)
g_LeftKills[id] = 0
ToSetTaskToInfo(id)
}
return PLUGIN_HANDLED
}
public client_putinserver(id) {
g_afktime[id] = 0.0
if (is_user_bot(id) || is_user_hltv(id))
return PLUGIN_HANDLED;
if ( get_playersnum() == 1 && ( g_IsStarted || g_AfterRdy || g_KnifeRound ) )
{
server_cmd("restart")
return PLUGIN_HANDLED
}
if ( get_playersnum() == 1 && !g_AfterRdy && !g_IsStarted )
entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 1.0)
CheckFull(id)
clear_list(id)
if (g_IsStarted || g_AfterRdy || g_KnifeRound)
{
g_LeftKills[id] = 0
MoveFromSpec(id)
return PLUGIN_HANDLED
}
set_task(10.0, "say_add", id)
set_task(30.0, "CheckUnAssigned", id)
return PLUGIN_HANDLED
}
public say_add(id)
{
client_cmd(id,"say !add")
}
public CheckUnAssigned(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED
if(get_member(id, m_iTeam) == TEAM_UNASSIGNED)
{
new name[50]
get_user_name(id, name, 49)
server_cmd("kick # %d %s %L", get_user_userid(id), PREFIX, LANG_PLAYER, "AFK_LOGIN")
CromChat(0, "&x04%s %s %L", PREFIX, name, LANG_PLAYER, "CLIENT_AFK_KICKED")
}
return PLUGIN_HANDLED
}
public ShowInfo(id)
{
id -= SET_CONST_TASKID
if (!is_user_connected(id) || !(1 <= id <= gMaxPlayers))
return PLUGIN_HANDLED
static hostname[64]
get_cvar_string("hostname", hostname, 63)
if (g_bIsReady[id] || g_IsStarted || g_AfterRdy || g_iTimeLeft[id] < 0)
{
remove_task(id+SET_CONST_TASKID)
remove_task(id)
return PLUGIN_HANDLED
}
set_hudmessage(0, 212, 255, 0.23, 0.265, 0, 6.0, 1.0)
ShowSyncHudMsg(id, g_MsgSync4, "%L", LANG_PLAYER, "PLAYER_PERSONAL_INFO", hostname, g_iTimeLeft[id])
return PLUGIN_CONTINUE
}
public Continue(id)
{
if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) || is_user_bot(id) || is_user_hltv(id) )
return PLUGIN_HANDLED
if (g_IsStarted || g_AfterRdy)
{
return PLUGIN_HANDLED
}
if (g_bIsReady[id])
{
return PLUGIN_HANDLED
}
g_iTimeLeft[id] -= 1
switch(g_iTimeLeft[id]) {
case 120: CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
case 90: CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
case 60: CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
case 30: {
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
set_hudmessage(42, 127, 255, 0.07, 0.70, 0, 6.0, 12.0)
ShowSyncHudMsg(id, g_MsgSync, "30 %L", LANG_PLAYER, "TYPE_READY_HUD")
}
case 10: {
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
set_hudmessage(42, 127, 255, 0.07, 0.70, 0, 6.0, 12.0)
ShowSyncHudMsg(id, g_MsgSync, "10 %L", LANG_PLAYER, "TYPE_READY_HUD")
}
case 0: {
if ( is_user_connecting(id) )
DoAgain(id)
else {
new playername[32]
get_user_name(id, playername, 31)
server_cmd("amx_banip #%d 1 ^"%s %L^"", get_user_userid(id), PREFIX, LANG_PLAYER, "ADD_TIME_OVER", get_pcvar_num(cvar_TimeLeft))
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CLIENT_ADD_KICKED", playername, get_pcvar_num(cvar_TimeLeft))
}
}
}
return PLUGIN_HANDLED
}
public CrashAttempt(id) {
if ( !( 1 <= id <= gMaxPlayers ) || !is_user_connected(id) )
return
if ( get_gametime() - gTypedCommand[id] <= 1.0 ) {
gTypedCommand[id] = get_gametime()
return
}
gTypedCommand[id] = get_gametime()
}
public Prepare(id) {
if (g_AfterRdy || g_IsStarted || g_MapChanged) {
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "MATCH_ALREADY_STARTED")
return PLUGIN_HANDLED
}
if( g_bIsReady[id] ) {
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ALREADY_TYPED_ADD")
return PLUGIN_HANDLED
}
else {
CrashAttempt(id)
new playername[32]
get_user_name(id, playername, 31)
g_bIsReady[id] = true
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "YOU_ARE_READY")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "HE_IS_READY", playername)
gPlayersLeft--
remove_task(id)
}
if (gPlayersLeft != 0)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PLAYERS_LEFT", gPlayersLeft)
else {
g_AfterRdy = true
removeAllTasks()
new taskId = scanForTaskID()
if ( get_pcvar_num(cvar_MapVote) )
{
for ( new i ; i < 3 ; i++ )
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MAP_VOTE_BEGINS")
set_task(10.0, "StartVote", taskId)
}
else
{
for ( new i ; i < 3 ; i++ )
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_BEGINS")
set_task(10.0, "TeamsVote", taskId)
}
}
return PLUGIN_HANDLED
}
public forcedStart_AdminCmd(id)
{
if ( !is_user_admin(id) )
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ADMINS_ONLY")
return PLUGIN_HANDLED
}
new taskId = scanForTaskID()
g_AfterRdy = true
g_CustomGame = true
if ( get_pcvar_num(cvar_MapVote) )
{
for ( new i ; i < 3 ; i++ )
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MAP_VOTE_BEGINS")
set_task(10.0, "StartVote", taskId)
}
else
{
for ( new i ; i < 3 ; i++ )
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_BEGINS")
set_task(10.0, "TeamsVote", taskId)
}
return PLUGIN_CONTINUE
}
public forcedStop_AdminCmd(id)
{
if ( !is_user_admin(id) )
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ADMINS_ONLY")
return PLUGIN_HANDLED
}
new pName[64]
get_user_name(id, pName, charsmax(pName))
set_hudmessage(255, 0, 0, 0.28, 0.64, 1, 6.0, 12.0)
show_hudmessage(id, "%L", LANG_PLAYER, "MATCH_STOPPED", pName)
set_pug_state(0)
EndMatch()
return PLUGIN_CONTINUE
}
public ToSetTaskToInfo(id)
{
set_task(1.0, "ShowInfo", id+SET_CONST_TASKID, .flags="a", .repeat=130)
set_task(1.0, "Continue", id, .flags="a", .repeat=130)
}
public unPrepare(id) {
if (g_AfterRdy || g_IsStarted || g_MapChanged) {
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "MATCH_ALREADY_STARTED")
return PLUGIN_HANDLED
}
if (g_bIsReady[id]) {
CrashAttempt(id)
gPlayersLeft++
g_bIsReady[id] = false
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "YOU_ARE_NOT_READY")
g_iTimeLeft[id] = get_pcvar_num(cvar_TimeLeft)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PLAYERS_LEFT", gPlayersLeft)
ToSetTaskToInfo(id)
}
else
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ADD_NOT_TYPED")
return PLUGIN_HANDLED
}
public ShowLeft(ent) {
if ( g_IsStarted || g_AfterRdy )
{
entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 99999999.0)
return PLUGIN_HANDLED
}
if ( !get_playersnum() )
{
entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 99999999.0)
return PLUGIN_HANDLED
}
if ( !get_pcvar_num(cvar_pLeftMethod) || get_pcvar_num(cvar_pLeftMethod) == 2 )
showNotReady()
if ( get_pcvar_num(cvar_pLeftMethod) )
showReady()
entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 1.0)
return PLUGIN_HANDLED
}
public showNotReady()
{
if (gPlayersLeft != 0)
{
new players[32], pnum, tempid;
get_players(players, pnum, "ch");
for( new i; i<pnum; i++ ) {
tempid = players[i];
if (g_bIsReady[tempid] == false) {
new playername[32]
get_user_name(tempid, playername, 31)
add( gNotRdy, charsmax( gNotRdy ), "^n" );
add( gNotRdy, charsmax( gNotRdy ), playername );
}
}
}
else
return;
new playersl[2]
new toadd[64]
formatex(toadd, charsmax(toadd), " %L", LANG_PLAYER, "PLAYERS_LEFT_HUD")
num_to_str(gPlayersLeft, playersl, 2)
trim(playersl)
add(gNotRdy, charsmax(gNotRdy), "^n^n")
add(gNotRdy, charsmax(gNotRdy), playersl)
add(gNotRdy, charsmax(gNotRdy), toadd)
set_hudmessage(0, 255, 0, get_pcvar_float(cvar_NotReadyXPos), get_pcvar_float(cvar_NotReadyYPos), 0, 6.0, 1.0, _, _, 1)
show_hudmessage(0, gNotRdy)
formatex(gNotRdy, charsmax(gNotRdy), "%L:^n", LANG_PLAYER, "HUD_NOT_READY")
}
public showReady()
{
new readyPlayers
if (gPlayersLeft != 0)
{
new players[32], pnum, tempid;
get_players(players, pnum, "ch");
for( new i; i<pnum; i++ ) {
tempid = players[i];
if ( g_bIsReady[tempid] ) {
new playername[32]
readyPlayers++
get_user_name(tempid, playername, 31)
add( gRdy, charsmax( gRdy ), "^n" );
add( gRdy, charsmax( gRdy ), playername );
}
}
}
else
return;
new playersl[2], toAdd[65]
formatex(toAdd, charsmax(toAdd), " %L", LANG_PLAYER, "HUD_PLAYERS_READY")
num_to_str(readyPlayers, playersl, 2)
add(gRdy, charsmax(gNotRdy), "^n^n")
add(gRdy, charsmax(gNotRdy), playersl)
add(gRdy, charsmax(gNotRdy), toAdd)
set_hudmessage(0, 255, 0, get_pcvar_float(cvar_ReadyXPos), get_pcvar_float(cvar_ReadyYPos), 0, 6.0, 1.0, _, _, 2)
show_hudmessage(0, gRdy)
formatex(gRdy, charsmax(gRdy), "%L:^n", LANG_PLAYER, "HUD_READY")
}
public credits(id) {
CromChat(id, "%L", LANG_PLAYER, "CREDITS_1")
CromChat(id, "%L", LANG_PLAYER, "CREDITS_2")
return PLUGIN_CONTINUE
}
public cmds(id) {
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "CMDS_1")
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "CMDS_2")
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "CMDS_3")
CromChat(id, "%L", LANG_PLAYER, "AUTO_MIX_BY", VERSION)
return PLUGIN_HANDLED
}
public StartVote() {
getmaps()
new rnd
while (g_DoneMaps != 4 && g_MapsCounter > 0) {
rnd = random(g_MapsCounter)
copy(g_MapsChosen[g_DoneMaps++], 19, g_MapsAvailable[rnd])
g_MapsAvailable[rnd] = g_MapsAvailable[--g_MapsCounter]
}
new title[64], extend[64]
formatex(title, charsmax(title), "\r%L", LANG_PLAYER, "CHANGE_MAP")
formatex(extend, charsmax(extend), "&x01%L", LANG_PLAYER, "EXTEND_MAP")
g_gVoteMenu = menu_create(title, "votemap");
new num[11]
for(new i = 0; i < g_DoneMaps; i++) {
num_to_str(i, num, 10)
menu_additem(g_gVoteMenu, g_MapsChosen[i], num, 0)
}
menu_additem(g_gVoteMenu, extend, "4", 0)
menu_setprop(g_gVoteMenu, MPROP_EXIT, MEXIT_NEVER)
new players[32], pnum, tempid;
get_players(players, pnum, "ch");
for( new i; i<pnum; i++ ) {
tempid = players[i];
CromChat(tempid, "&x04%s %L", PREFIX, LANG_PLAYER, "PLEASE_VOTE_MAP")
menu_display(tempid, g_gVoteMenu);
}
client_cmd(0, "spk ^"get red(e80) ninety(s45) to check(e20) use bay(s18) mass(e42) cap(s50)^"")
new taskId = scanForTaskID()
set_task(10.0, "EndVote", taskId);
return PLUGIN_HANDLED;
}
public votemap(id, menu, item) {
if( item == MENU_EXIT ) {
menu_display(id, g_gVoteMenu)
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new voteid = str_to_num(data);
new playerna[32]
get_user_name(id, playerna, 31)
if (voteid != 4)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_MAP", playerna, g_MapsChosen[voteid])
else
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_EXTEND", playerna)
g_gVotes[voteid]++;
return PLUGIN_HANDLED;
}
public getmaps() {
new mapsfile = fopen(g_Maps_Ini_File, "r")
new linefortest[50]
while (g_MapsCounter < sizeof(g_MapsAvailable) && !feof(mapsfile)) {
fgets(mapsfile, linefortest, 49)
trim(linefortest)
new getcurrentmap[32]
get_mapname(getcurrentmap, 31)
if ((is_map_valid(linefortest)) && (!equali(linefortest, getcurrentmap)))
copy(g_MapsAvailable[g_MapsCounter++], 24, linefortest)
}
fclose(mapsfile)
}
public EndVote() {
show_menu(0, 0, "^n", 1);
new best = 0;
for(new i = 1; i < sizeof(g_gVotes); i++) {
if(g_gVotes[i] > g_gVotes[best])
best = i;
}
g_gVotes[0] = 0
g_gVotes[1] = 0
g_gVotes[2] = 0
g_gVotes[3] = 0
g_gVotes[4] = 0
if(best == 4) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "EXTEND_FINAL");
TeamsVote()
}
else {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MAP_FINAL", g_MapsChosen[best]);
g_ChangeMapTo = best;
if ( g_CustomGame )
set_pug_state(2)
else
set_pug_state(1)
new taskId = scanForTaskID()
set_task(10.0, "ChangeMap", taskId);
}
return PLUGIN_HANDLED
}
public ChangeMap() {
new maptochangeto[25]
copy(maptochangeto, 24, g_MapsChosen[g_ChangeMapTo])
server_cmd("changelevel %s", maptochangeto)
return PLUGIN_CONTINUE
}
public FriendlyFire() {
new title[64]
formatex(title, charsmax(title), "\r%L", LANG_PLAYER, "FF_MENU_TITLE")
g_fVoteMenu = menu_create(title, "voteFF");
new itemOn[10], itemOff[10]
formatex(itemOn, charsmax(itemOn), "%L", LANG_PLAYER, "MENU_ITEM_ON")
formatex(itemOff, charsmax(itemOff), "%L", LANG_PLAYER, "MENU_ITEM_OFF")
menu_additem(g_fVoteMenu, itemOn)
menu_additem(g_fVoteMenu, itemOff)
new pplayers[32], ppnum, ptempid;
get_players(pplayers, ppnum, "ch");
for( new i; i<ppnum; i++ ){
ptempid = pplayers[i]
CromChat(ptempid, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_PICK")
menu_display(ptempid, g_fVoteMenu, 0)
}
new taskId = scanForTaskID()
set_task(10.0, "EndFFVote", taskId)
return PLUGIN_HANDLED
}
public voteFF(id, menu, item) {
if( item == MENU_EXIT ) {
menu_display(id, g_fVoteMenu)
return PLUGIN_HANDLED;
}
new playername[32]
get_user_name(id, playername, 31)
switch(item) {
case 0: CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_VOTED_ON",playername)
case 1: CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_VOTED_OFF", playername)
}
g_fVotes[item]++;
return PLUGIN_HANDLED;
}
public EndFFVote() {
show_menu(0, 0, "^n", 1);
new best = 0;
for(new i = 1; i < sizeof(g_fVotes); i++) {
if(g_fVotes[i] > g_fVotes[best])
best = i;
}
g_fVotes[0] = 0
g_fVotes[1] = 0
switch(best){
case 0: CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_BE_ON")
case 1: {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_BE_OFF")
g_bFFoff = true
}
}
new taskId = scanForTaskID()
set_task(5.0, "StartMatch", taskId)
return PLUGIN_HANDLED
}
public TeamsVote() {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_START")
new taskId = scanForTaskID()
set_task(10.0, "TeamsVote2", taskId)
}
public TeamsVote2() {
if ( !g_CustomGame ) {
if (get_playersnum() < get_pcvar_num(cvar_pLeft) - 2) {
if (g_DidWaitEnough == 16) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PLAYERS_NOT_JOINING")
set_pug_state(0)
g_IsStarted = false
g_AfterRdy = false
new taskId = scanForTaskID()
set_task(3.0, "MatchIsOver", taskId)
return PLUGIN_HANDLED
}
new sum
sum = g_DidWaitEnough * 15
sum = 300 - sum
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_DELAY")
set_hudmessage(255, 0, 0, 0.35, 0.66, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync6, "%L", LANG_PLAYER, "TEAMS_VOTE_DELAY_HUD", sum)
g_DidWaitEnough++
new taskId = scanForTaskID()
set_task(15.0, "TeamsVote2", taskId)
return PLUGIN_HANDLED
}
}
set_pug_state(0)
g_MapChanged = false
g_AfterRdy = true
g_DidWaitEnough = 0
new title[86]
new option1[32], option2[35], option3[35]
formatex(title, charsmax(title), "\r%L", LANG_PLAYER, "TEAMS_TITLE")
formatex(option1, charsmax(option1), "%L", LANG_PLAYER, "SAME_TEAMS")
formatex(option2, charsmax(option2), "%L", LANG_PLAYER, "RANDOM_CAPTAINS")
formatex(option3, charsmax(option3), "%L", LANG_PLAYER, "RANDOM_TEAMS")
g_rVoteMenu = menu_create(title, "voteteams");
menu_additem(g_rVoteMenu, option1)
menu_additem(g_rVoteMenu, option2)
menu_additem(g_rVoteMenu, option3)
new pplayers[32], ppnum, ptempid;
get_players(pplayers, ppnum, "ch");
for( new i; i<ppnum; i++ ) {
ptempid = pplayers[i]
CromChat(ptempid, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_PLEASE_VOTE")
menu_display(ptempid, g_rVoteMenu)
}
client_cmd(0, "spk Gman/Gman_Choose1")
new taskId = scanForTaskID()
set_task(10.0, "EndTeamsVote", taskId)
return PLUGIN_HANDLED
}
public voteteams(id, menu, item) {
if( item == MENU_EXIT ) {
menu_display(id, menu)
return PLUGIN_HANDLED;
}
new players[32], pnum, tempid
new bool:IsThereBot
get_players(players, pnum, "h")
for ( new i ; i < pnum ; i++ )
{
tempid = players[i]
if ( is_user_bot(tempid) )
IsThereBot = true
}
new playername[32]
get_user_name(id, playername, 31)
if ( IsThereBot && item == 1 )
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "NOT_AVAILABLE_WITH_BOTS")
menu_display(id, menu)
return PLUGIN_HANDLED
}
switch(item) {
case 0: CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_SAME", playername)
case 1: CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_CAPTAINS", playername)
case 2: CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_RANDOM", playername)
}
g_rVotes[item]++;
return PLUGIN_HANDLED;
}
public EndTeamsVote() {
show_menu(0, 0, "^n", 1);
new best = 0;
for(new i = 1; i < sizeof(g_rVotes); i++) {
if(g_rVotes[i] > g_rVotes[best])
best = i;
}
switch(best) {
case 0:
{
new playersT[32] , numT , playersCt[32] , numCt
get_players( playersT , numT , "che" , "TERRORIST" )
get_players( playersCt , numCt , "che" , "CT" )
g_rVotes[0] = 0
g_rVotes[1] = 0
g_rVotes[2] = 0
if (numT != numCt)
{
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_NOT_BALANCED")
new taskId = scanForTaskID()
set_task(10.0, "RandomTeams", taskId)
return PLUGIN_HANDLED
}
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_WILL_REMAIN_SAME")
new taskId = scanForTaskID()
set_task(10.0, "CurrentTeams", taskId)
}
case 1:
{
g_rVotes[0] = 0
g_rVotes[1] = 0
g_rVotes[2] = 0
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_WILL_BE_CAPTAINS")
new taskId = scanForTaskID()
set_task(10.0, "RandomCpt", taskId)
}
case 2:
{
g_rVotes[0] = 0
g_rVotes[1] = 0
g_rVotes[2] = 0
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_WILL_BE_RANDOM")
new taskId = scanForTaskID()
set_task(10.0, "RandomTeams", taskId)
}
}
return PLUGIN_HANDLED
}
public CurrentTeams() {
new players[32], pnum, tempid;
get_players(players, pnum, "ch");
for( new i; i<pnum; i++ ) {
tempid = players[i]
if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR)
set_task(1.0, "MoveFromSpec", tempid)
}
StartMatch()
}
public MoveFromSpec(id) {
new playersT[ 32 ] , numT , playersCt[ 32 ] , numCt
get_players( playersT , numT , "che" , "TERRORIST" )
get_players( playersCt , numCt , "che" , "CT" )
if (g_Twon) {
if (g_bSecondHalf) {
if( numT > numCt )
{
set_pcvar_string(cvar_humans_join_team, "CT")
client_cmd(id, "slot1")
ChangeTagB(id)
}
else
{
set_pcvar_string(cvar_humans_join_team, "T")
client_cmd(id, "slot1")
ChangeTagA(id)
}
}
else
{
if( numT > numCt )
{
set_pcvar_string(cvar_humans_join_team, "CT")
client_cmd(id, "slot1")
ChangeTagA(id)
}
else
{
set_pcvar_string(cvar_humans_join_team, "T")
client_cmd(id, "slot1")
ChangeTagB(id)
}
}
}
else
{
if (g_bSecondHalf)
{
if( numT > numCt )
{
set_pcvar_string(cvar_humans_join_team, "CT")
client_cmd(id, "slot1")
ChangeTagA(id)
}
else
{
set_pcvar_string(cvar_humans_join_team, "T")
client_cmd(id, "slot1")
ChangeTagB(id)
}
}
else
{
if( numT > numCt )
{
set_pcvar_string(cvar_humans_join_team, "CT")
client_cmd(id, "slot1")
ChangeTagB(id)
}
else
{
set_pcvar_string(cvar_humans_join_team, "T")
client_cmd(id, "slot1")
ChangeTagA(id)
}
}
}
if (g_bCpt) {
client_cmd(id, "kill")
rg_set_user_team(id, TEAM_SPECTATOR)
}
return PLUGIN_CONTINUE
}
public RandomCpt() {
set_pcvar_num(cvar_mp_freezetime, 9999)
new players[32], pnum, tempid;
get_players(players, pnum, "ch");
new specialCount
for( new i; i<pnum; i++ ) {
tempid = players[i];
client_cmd(tempid, "kill")
if ( get_member(tempid, m_iTeam) != TEAM_UNASSIGNED )
{
specialCount++
user_kill(tempid);
rg_set_user_team(tempid, TEAM_SPECTATOR)
}
}
log_amx("RandomCpt stage 1")
if (specialCount < 2) {
if (g_CustomGame) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "LESS_PLAYERS_CUSTOM")
new taskId = scanForTaskID()
set_task(3.0, "RandomTeams", taskId)
}
else {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "LESS_PLAYERS")
new taskId = scanForTaskID()
set_task(5.0, "EndMatch", taskId)
}
return;
}
log_amx("RandomCpt stage 2")
new z = random(pnum)
while (get_member(players[z], m_iTeam) == TEAM_UNASSIGNED)
z = random(pnum)
rg_set_user_team(players[z], TEAM_TERRORIST)
gCptT = players[z]
new q = random(pnum)
while ( (q == z) || get_member(players[q], m_iTeam) == TEAM_UNASSIGNED )
q = random(pnum)
log_amx("RandomCpt stage 3")
rg_set_user_team(players[q], TEAM_CT)
gCptCT = players[q]
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "RANDOM_CAPTAINS_CHOSEN")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TERROR_CAPTAIN_FIRST")
g_bCpt = true
log_amx("RandomCpt stage 4")
moveT()
return;
}
public kickhimout(id) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CAPTAINS_AFK")
set_hudmessage(255, 0, 0, 0.40, 0.32, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync2, "%L", LANG_PLAYER, "CAPTAINS_AFK")
show_menu(0, 0, "^n", 1);
g_bCpt = false
new taskId = scanForTaskID()
set_task(5.0, "RandomTeams", taskId)
return PLUGIN_HANDLED
}
public moveT() {
log_amx("moveT stage 1")
TeamsInfo()
log_amx("moveT stage 2")
new title[64]
formatex(title, charsmax(title), "%L", LANG_PLAYER, "CHOOSE_PLAYER")
g_PlayersMenu = menu_create(title, "moveT_menu");
new players[32], pnum, tempid;
new Tplayers[32], Tpnum;
new szName[32], szTempid[10];
new pickisdone, check
get_players(players, pnum, "ch");
if ( !pnum )
return PLUGIN_HANDLED
get_players(Tplayers, Tpnum, "che", "TERRORIST");
log_amx("moveT stage 3")
for( new i; i<pnum; i++ )
{
tempid = players[i];
if ((tempid == gCptT) || (tempid == gCptCT))
check++
if (get_member(tempid, m_iTeam) == TEAM_UNASSIGNED)
continue;
else if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR) {
get_user_name(tempid, szName, 31);
num_to_str(tempid, szTempid, 9);
menu_additem(g_PlayersMenu, szName, szTempid);
pickisdone++
}
}
log_amx("moveT stage 4")
if (check != 2) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CAPTAINS_DISCONNECTED")
g_bCpt = false
removeAllTasks()
new taskId = scanForTaskID()
set_task(3.0, "RandomTeams", taskId)
return PLUGIN_HANDLED
}
if (pickisdone == 0) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_ARE_SET")
g_bCpt = false
removeAllTasks()
new taskId = scanForTaskID()
set_task(10.0, "StartMatch", taskId)
return PLUGIN_HANDLED
}
if (Tpnum >= get_pcvar_num(cvar_pLeft)/2 ) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TERROR_TEAM_FULL")
moveCT()
return PLUGIN_HANDLED
}
log_amx("moveT stage 5")
menu_display(gCptT, g_PlayersMenu)
set_task(25.0, "kickhimout", gCptT)
log_amx("moveT stage 6")
return PLUGIN_HANDLED;
}
public moveT_menu(id, g_PlayersMenu, item) {
if( item == MENU_EXIT )
{
menu_display(id, g_PlayersMenu)
return PLUGIN_HANDLED;
}
remove_task(gCptT)
new data[6], iName[64];
new access, callback;
menu_item_getinfo(g_PlayersMenu, item, access, data,5, iName, 63, callback);
new tempid = str_to_num(data);
new name[32]
new g_bCptNm[64]
get_user_name(gCptT, g_bCptNm, 63)
get_user_name(tempid, name, 31)
rg_set_user_team(tempid, TEAM_TERRORIST)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CHOSEN_IN_TEAM_TERRORISTERROR", name, g_bCptNm)
menu_destroy(g_PlayersMenu);
remove_task(gCptT);
moveCT()
return PLUGIN_HANDLED
}
public moveCT() {
new title[64]
formatex(title, charsmax(title), "%L", LANG_PLAYER, "CHOOSE_PLAYER")
g_PlayersMenu = menu_create(title, "moveCT_menu");
new players[32], pnum, tempid;
new CTplayers[32], CTpnum;
new szName[32], szTempid[10];
new pickisdone, check
get_players(players, pnum, "ch");
get_players(CTplayers, CTpnum, "che", "CT");
for( new i; i<pnum; i++ )
{
tempid = players[i];
if ((tempid == gCptT) || (tempid == gCptCT))
check++
if (get_member(tempid, m_iTeam) == TEAM_UNASSIGNED)
continue;
else if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR) {
get_user_name(tempid, szName, 31);
num_to_str(tempid, szTempid, 9);
menu_additem(g_PlayersMenu, szName, szTempid);
pickisdone++
}
}
if (check != 2) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CAPTAINS_DISCONNECTED")
g_bCpt = false
new taskId = scanForTaskID()
set_task(3.0, "RandomTeams", taskId)
return PLUGIN_HANDLED
}
if (pickisdone == 0) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_ARE_SET")
g_bCpt = false
new taskId = scanForTaskID()
set_task(10.0, "StartMatch", taskId)
return PLUGIN_HANDLED
}
if (CTpnum >= get_pcvar_num(cvar_pLeft)/2 ) {
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CT_TEAM_FULL")
moveT()
return PLUGIN_HANDLED
}
menu_display(gCptCT, g_PlayersMenu)
set_task(20.0, "kickhimout", gCptCT)
return PLUGIN_HANDLED;
}
public moveCT_menu(id, g_PlayersMenu, item) {
if( item == MENU_EXIT ) {
menu_display(id, g_PlayersMenu)
return PLUGIN_HANDLED;
}
remove_task(gCptCT)
new data[6], iName[64];
new access, callback;
menu_item_getinfo(g_PlayersMenu, item, access, data,5, iName, 63, callback);
new tempid = str_to_num(data);
new name[32]
new g_bCptNm[64]
get_user_name(gCptCT, g_bCptNm, 63)
get_user_name(tempid, name, 31)
rg_set_user_team(tempid, TEAM_CT)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CHOSEN_IN_TEAM_CT", name, g_bCptNm)
menu_destroy(g_PlayersMenu);
remove_task(gCptCT);
moveT()
return PLUGIN_HANDLED
}
public TeamsInfo() {
log_amx("TeamsInfo stage 1")
if (g_bCpt) {
log_amx("TeamsInfo stage 2")
new nameCT[70], nameT[70]
new infoT[500]
new infoCT[500]
new players[32], pnum, tempid;
new toapprove
get_players(players, pnum, "ch")
get_user_name(gCptT, nameT, 69)
get_user_name(gCptCT, nameCT, 69)
formatex(infoT, 499, "%L^n-------------^n%L^n^n", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_C" : "TERRORISTS" ), LANG_PLAYER, "TEAM_INFO_CAPTAINS", nameT)
formatex(infoCT, 499, "%L^n-------------^n%L^n^n", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_D" : "COUNTER_TERRORISTS" ), LANG_PLAYER, "TEAM_INFO_CAPTAINS", nameCT)
log_amx("TeamsInfo stage 3")
for (new i ; i < pnum ; i++)
{
tempid = players[i]
if ((get_member(tempid, m_iTeam) == TEAM_TERRORIST) && (tempid != gCptT))
{
new nameofp[70]
get_user_name(tempid, nameofp, 69)
add(infoT, 499, nameofp)
add(infoT, 499, "^n")
}
else if ((get_member(tempid, m_iTeam) == TEAM_CT) && (tempid != gCptCT))
{
new nameofCTp[70]
get_user_name(tempid, nameofCTp, 69)
add(infoCT, 499, nameofCTp)
add(infoCT, 499, "^n")
}
if ((get_member(tempid, m_iTeam) == TEAM_TERRORIST) && (tempid == gCptT))
toapprove++
else if ((get_member(tempid, m_iTeam) == TEAM_CT) && (tempid == gCptCT))
{
toapprove++
}
}
if (toapprove != 2) {
set_hudmessage(255, 0, 0, 0.40, 0.32, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync2, "%L", LANG_PLAYER, "CAPTAINS_DISCONNECTED_HUD")
new taskId = scanForTaskID()
set_task(5.0, "RandomTeams", taskId)
return PLUGIN_HANDLED
}
set_hudmessage(27, 162, 229, 0.28, 0.32, 0, 6.0, 1.0)
ShowSyncHudMsg(0, g_MsgSync8, infoT)
log_amx("TeamsInfo stage 4")
set_hudmessage(27, 162, 229, 0.58, 0.32, 0, 6.0, 1.0)
ShowSyncHudMsg(0, g_MsgSync2, infoCT)
new taskId = scanForTaskID()
set_task(1.0, "TeamsInfo", taskId)
}
else
{
set_hudmessage(0, 255, 0, 0.40, 0.32, 0, 6.0, 12.0)
ShowSyncHudMsg(0, g_MsgSync2, "%L", LANG_PLAYER, "TEAMS_ARE_SET_HUD")
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public RandomTeams()
{
new players[32], pnum, tempid;
get_players(players, pnum, "h");
for( new i; i<pnum; i++ ) {
tempid = players[i];
client_cmd(tempid, "kill")
if (get_member(tempid, m_iTeam) == TEAM_UNASSIGNED)
continue;
rg_set_user_team(tempid, TEAM_SPECTATOR)
}
new topick, idop
while (AnyoneInSpec()) {
if (get_member(players[idop], m_iTeam) == TEAM_UNASSIGNED)
{
idop++
continue;
}
topick = random(2)
if (topick == 1)
{
rg_set_user_team(players[idop], TEAM_TERRORIST)
}
else
{
rg_set_user_team(players[idop], TEAM_CT)
}
new pplayers[32], ppnum, tempid;
new ppplayers[32], pppnum;
new temppnum
get_players(players, pnum, "h");
get_players(pplayers, ppnum, "he", "CT")
get_players(ppplayers, pppnum, "he", "TERRORIST")
if (ppnum == pnum/2)
{
get_players(players, temppnum, "h");
for( new i; i<temppnum; i++ )
{
tempid = players[i];
if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR)
{
rg_set_user_team(tempid, TEAM_TERRORIST)
}
}
}
else if (pppnum == pnum/2)
{
get_players(players, temppnum, "h");
for( new i; i<temppnum; i++ )
{
tempid = players[i];
if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR)
{
rg_set_user_team(tempid, TEAM_CT)
}
}
}
idop++
}
new taskId = scanForTaskID()
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_RANDOMIZED")
set_task(5.0, "StartMatch", taskId)
}
public AnyoneInSpec() {
new players[32], pnum, tempid;
get_players(players, pnum, "ch");
for( new i; i<pnum; i++ )
{
tempid = players[i];
if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR)
return true
}
return false
}
public StartMatch() {
if(get_pcvar_num(cvar_FFvote) && (g_bDidVoteFF == false))
{
g_bDidVoteFF = true
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_VOTE_START")
new taskId = scanForTaskID()
set_task(5.0, "FriendlyFire", taskId)
return PLUGIN_HANDLED
}
new players[32], pnum, tempid;
get_players(players, pnum, "ch")
if (pnum < get_pcvar_num(cvar_pLeft) - 2)
{
if ( !g_CustomGame )
{
if (g_DidWaitEnough < 8)
{
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_DELAYED")
g_DidWaitEnough++
new taskId = scanForTaskID()
set_task(15.0, "StartMatch", taskId)
return PLUGIN_HANDLED
}
set_pcvar_string(cvar_humans_join_team, "")
g_iScore[0] = 0
g_iScore[1] = 0
g_AfterRdy = false
g_IsStarted = false
g_bDidVoteFF = false
g_DidWaitEnough = 0
gPlayersLeft = get_maxplayers()
client_print(0, print_chat, "TESTASEASESDSA");
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NO_MINIMUM", get_pcvar_num(cvar_pLeft) - 2)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NO_MINIMUM_CONTINUE")
entity_set_float(gEntShowLeft, EV_FL_nextthink, 1.0)
server_cmd("exec practice.cfg")
server_exec()
for( new i; i<pnum; i++ ) {
tempid = players[i];
g_bIsReady[tempid] = false
remove_task(tempid)
g_iTimeLeft[tempid] = get_pcvar_num(cvar_TimeLeft)
g_LeftKills[tempid] = 0
g_bSecondHalf = false
ToSetTaskToInfo(tempid)
}
return PLUGIN_HANDLED
}
}
for (new x ; x<pnum ; x++)
{
tempid = players[x]
switch( get_member(tempid, m_iTeam) ) {
case TEAM_UNASSIGNED: continue;
case TEAM_SPECTATOR: server_cmd("kick # %d", get_user_userid(tempid))
case TEAM_TERRORIST: ChangeTagA(tempid)
case TEAM_CT: ChangeTagB(tempid)
}
}
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MIX_SETTINGS_LOADED")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MIX_SETTINGS_LOADED")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MIX_SETTINGS_LOADED")
new taskId = scanForTaskID()
set_task(4.0, "Settings", taskId)
return PLUGIN_HANDLED
}
public ChangeTagA(id) {
if ( !( 1 <= id <= gMaxPlayers ) || !get_pcvar_num(cvar_TeamTag) )
return;
new pname[65]
new newname[70]
get_user_name(id, pname, 64)
pname = RemoveOldTag(pname, strlen(pname))
formatex(newname, 69, "%L %s", LANG_PLAYER, "TEAM_A", pname)
set_user_info(id, "name", newname)
}
public ChangeTagB(id) {
if ( !( 1 <= id <= gMaxPlayers ) || !get_pcvar_num(cvar_TeamTag) )
return;
new pname[65]
new newname[70]
get_user_name(id, pname, 64)
pname = RemoveOldTag(pname, strlen(pname))
formatex(newname, 69, "%L %s", LANG_PLAYER, "TEAM_B", pname)
set_user_info(id, "name", newname)
}
public RemoveOldTag(pname[65], p_len) { // SUPPORTS ONLY DEFAULT GIVEN NAMES (TEAM A AND TEAM B)
if (containi(pname, "[TEAM A]") != -1 || containi(pname, "[TEAM B]") != -1 )
{
new newName[64], indicator
new pos = containi(pname, "[TEAM A]")
if ( pos == -1 )
pos = containi(pname, "[TEAM B]")
for ( new i = pos+9 ; i < p_len ; i++ )
newName[indicator++] = pname[i]
trim(newName)
formatex(pname, charsmax(pname), "%s", newName)
return pname
}
return pname
}
public SwitchTeams() {
new supportvariable
supportvariable = g_iScore[0]
g_iScore[0] = g_iScore[1]
g_iScore[1] = supportvariable
new players[32], pnum, tempid;
get_players(players, pnum, "ch");
for( new i; i<pnum; i++ ) {
tempid = players[i];
switch( get_member(tempid, m_iTeam) ) {
case TEAM_TERRORIST: rg_set_user_team(tempid, TEAM_CT)
case TEAM_CT: rg_set_user_team(tempid, TEAM_TERRORIST)
}
}
g_bSecondHalf = true
return PLUGIN_HANDLED
}
public KnifeSwitch(WinningTeam) {
new players[32], pnum;
switch ( WinningTeam ) {
case T_WIN: get_players(players, pnum, "che", "TERRORIST")
case CT_WIN: get_players(players, pnum, "che", "CT")
}
new menuTitle[78], options[78]
formatex(menuTitle, charsmax(menuTitle), "[Auto-Mix]\w %L", LANG_PLAYER, "KNIFE_MENU_TITLE")
g_switchmenu = menu_create(menuTitle, "handleSwitch")
formatex(options, charsmax(options), "%L", LANG_PLAYER, "KNIFE_MENU_STAY")
menu_additem(g_switchmenu, options)
formatex(options, charsmax(options), "%L", LANG_PLAYER, "KNIFE_MENU_SWAP")
menu_additem(g_switchmenu, options)
for ( new i ; i < pnum ; i++ )
menu_display(players[i], g_switchmenu)
new intParam[1]
new taskId = scanForTaskID()
intParam[0] = WinningTeam
set_task(8.0, "declareSwitch", taskId, intParam, 1)
}
public handleSwitch(id, menu, item) {
if( item == MENU_EXIT ) {
menu_display(id, g_switchmenu)
return PLUGIN_HANDLED;
}
g_switchVotes[item]++
switch ( item ) {
case 0: CromChat(id, "%s You have voted to: Stay.", PREFIX)
case 1: CromChat(id, "%s You have voted to: Swap.", PREFIX)
}
return PLUGIN_CONTINUE
}
public declareSwitch(recvParam[], prevTaskId) {
new taskId = scanForTaskID()
if ( g_switchVotes[0] > g_switchVotes[1] ) {
CromChat(0, "&x04%s %L ---> %L.", PREFIX, LANG_PLAYER, "KNIFE_MENU_RESULT", LANG_PLAYER, "KNIFE_MENU_STAY")
g_Twon = false
set_task(3.0, "SettingsAfter", taskId)
return PLUGIN_HANDLED
}
else
CromChat(0, "&x04%s %L ---> %L.", PREFIX, LANG_PLAYER, "KNIFE_MENU_RESULT", LANG_PLAYER, "KNIFE_MENU_SWAP")
g_Twon = true
rg_swap_all_players();
set_task(3.0, "SettingsAfter", taskId)
return PLUGIN_CONTINUE
}
public Settings() {
if (get_pcvar_num(cvar_KnifeRound)) {
g_KnifeRound = true
set_pcvar_float(cvar_mp_roundtime, 1.75)
set_pcvar_num(cvar_mp_freezetime, 7)
set_pcvar_float(cvar_mp_buytime, 0.1)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_START")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_START")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_START")
set_pcvar_num(cvar_sv_restart, 3)
new taskId = scanForTaskID()
set_task(4.0, "TSAYKnife", taskId)
}
else
{
g_KnifeRound = false
server_cmd("exec pug.cfg")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
server_cmd("sv_restart 1")
new taskId = scanForTaskID()
set_task(2.0, "Started", taskId)
}
}
public TSAYKnife() {
for ( new i = 1 ; i <= gMaxPlayers ; i++ )
{
if ( is_user_alive(i) )
engclient_cmd(i, "weapon_knife")
}
set_hudmessage(255, 255, 255, 0.06, 0.34, 0, 6.0, 15.0)
ShowSyncHudMsg(0, g_MsgSync7, "%L", LANG_PLAYER, "KNIFE_ROUND_ATTENTION")
}
public SettingsAfter() {
g_KnifeRound = false
g_bCpt = false
server_cmd("exec pug.cfg")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
set_pcvar_num(cvar_sv_restart, 1)
new taskId = scanForTaskID()
set_task(5.0, "Started", taskId)
}
public Started() {
if (g_bFFoff)
set_pcvar_num(cvar_mp_friendlyfire, 0)
else
set_pcvar_num(cvar_mp_friendlyfire, 1)
set_hudmessage(255, 255, 255, 0.06, 0.34, 0, 6.0, 20.0)
ShowSyncHudMsg(0, g_MsgSync3, "%L", LANG_PLAYER, "FIRST_HALF_STARTED")
for ( new i = 1 ; i <= gMaxPlayers ; i++ )
{
if ( is_user_connected(i) && get_member(i, m_iTeam) != TEAM_SPECTATOR && !is_user_hltv(i) && !is_user_bot(i) )
gDidPlayUntilEnd[i] = true
}
g_IsStarted = true
g_AfterRdy = false
}
public EndMatch() {
set_hudmessage(0, 212, 255, 0.06, 0.34, 0, 6.0, 15.0)
ShowSyncHudMsg(0, g_MsgSync3, "%L", LANG_PLAYER, "MATCH_OVER", g_iScore[0], g_iScore[1])
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_OVER2")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_OVER3")
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PLUGIN_RESTART")
g_Restart = true
sortPoints()
if ( get_pcvar_num(cvar_Rankings) )
doRankings()
new taskId = scanForTaskID()
set_task(15.0, "MatchIsOver", taskId)
}
public sortPoints()
{
for ( new i = 1 ; i <= gMaxPlayers ; i++ )
{
if ( !is_user_connected(i) || ( g_iScore[0] != 16 && g_iScore[1] != 16 ) )
continue;
if ( gDidPlayUntilEnd[i] )
{
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_PlaysUntilEndPoints) )
CromChat(i, "&x04%s You have GAINED %d points for playing a full match.", PREFIX, get_pcvar_num(cvar_PlaysUntilEndPoints))
gPoints[i] += get_pcvar_num(cvar_PlaysUntilEndPoints)
}
switch ( get_pcvar_num(cvar_TeamTag) )
{
case 0:
{
if ( g_iScore[0] > g_iScore[1] && get_member(i, m_iTeam) == TEAM_TERRORIST )
{
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_WinsMatchPoints) )
CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_WIN", get_pcvar_num(cvar_WinsMatchPoints))
gPoints[i] += get_pcvar_num(cvar_WinsMatchPoints)
}
else if ( g_iScore[1] > g_iScore[0] && get_member(i, m_iTeam) == TEAM_CT )
{
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_WinsMatchPoints) )
CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_WIN", get_pcvar_num(cvar_WinsMatchPoints))
gPoints[i] += get_pcvar_num(cvar_WinsMatchPoints)
}
else
{
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_LosesMatchPoints) )
CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_LOSE", get_pcvar_num(cvar_LosesMatchPoints))
gPoints[i] -= get_pcvar_num(cvar_LosesMatchPoints)
}
}
case 1:
{
new TeamName:team
switch ( g_Twon )
{
case 1:
{
if ( g_iScore[0] > g_iScore[1] )
team = TEAM_TERRORIST
else
team = TEAM_CT
}
case 0:
{
if ( g_iScore[1] > g_iScore[0] )
team = TEAM_CT
else
team = TEAM_TERRORIST
}
}
if ( get_member(i, m_iTeam) == team )
{
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_WinsMatchPoints) )
CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_WIN", get_pcvar_num(cvar_WinsMatchPoints))
gPoints[i] += get_pcvar_num(cvar_WinsMatchPoints)
}
else
{
if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_LosesMatchPoints) )
CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_LOSE", get_pcvar_num(cvar_WinsMatchPoints))
gPoints[i] -= get_pcvar_num(cvar_LosesMatchPoints)
}
}
}
SaveStats(i)
}
}
public doRankings()
{
new KillerName[256], DeathsName[256], BombPName[256], BombDName[256]
new players[32], pnum, tempid
new topKillerID, topDeathsID, topBombPID, topBombDID
new topKills, topDeaths, topBombP, topBombD
new winningTeam[65]
get_players(players, pnum, "ch")
switch ( get_pcvar_num(cvar_TeamTag) )
{
case 0:
{
if ( g_iScore[0] > g_iScore[1] )
formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "T_FULL")
else
formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "CT_FULL")
}
case 1:
{
switch ( g_Twon )
{
case 1:
{
if ( g_iScore[g_bSecondHalf ? 0 : 1] > g_iScore[g_bSecondHalf ? 1 : 0] )
formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_C")
else
formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_D")
}
case 0:
{
if ( g_iScore[g_bSecondHalf ? 1 : 0] > g_iScore[g_bSecondHalf ? 0 : 1] )
formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_C")
else
formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_D")
}
}
}
}
for ( new i ; i < pnum ; i++ )
{
tempid = players[i]
if ( g_TotalKills[tempid] >= topKills && g_TotalKills[tempid] )
{
topKills = g_TotalKills[tempid]
topKillerID = tempid
}
if ( g_TotalDeaths[tempid] >= topDeaths && g_TotalDeaths[tempid] )
{
topDeaths = g_TotalDeaths[tempid]
topDeathsID = tempid
}
if ( g_BombPlants[tempid] >= topBombP && g_BombPlants[tempid] )
{
topBombP = g_BombPlants[tempid]
topBombPID = tempid
}
if ( g_BombDefusions[tempid] >= topBombD && g_BombDefusions[tempid] )
{
topBombD = g_BombDefusions[tempid]
topBombDID = tempid
}
}
if ( 1 <= topKillerID <= gMaxPlayers )
get_user_name(topKillerID, KillerName, charsmax(KillerName))
if ( 1 <= topDeathsID <= gMaxPlayers )
get_user_name(topDeathsID, DeathsName, charsmax(DeathsName))
if ( 1 <= topBombPID <= gMaxPlayers )
get_user_name(topBombPID, BombPName, charsmax(BombPName))
if ( 1 <= topBombDID <= gMaxPlayers )
get_user_name(topBombDID, BombDName, charsmax(BombDName))
for ( new i ; i < pnum ; i++ )
{
tempid = players[i]
if ( g_TotalKills[tempid] == topKills && tempid != topKillerID && g_TotalKills[tempid] )
{
new lineToAdd[65] = ", "
new pName[64]
get_user_name(tempid, pName, charsmax(pName))
add(lineToAdd, charsmax(lineToAdd), pName)
add(KillerName, charsmax(KillerName) - strlen(BombDName) , lineToAdd)
}
if ( g_TotalDeaths[tempid] == topDeaths && tempid != topDeathsID && g_TotalDeaths[tempid] )
{
new lineToAdd[65] = ", "
new pName[64]
get_user_name(tempid, pName, charsmax(pName))
add(lineToAdd, charsmax(lineToAdd), pName)
add(DeathsName, charsmax(DeathsName) - strlen(DeathsName) , lineToAdd)
}
if ( g_BombPlants[tempid] == topBombP && tempid != topBombPID && g_BombPlants[tempid] )
{
new lineToAdd[65] = ", "
new pName[64]
get_user_name(tempid, pName, charsmax(pName))
add(lineToAdd, charsmax(lineToAdd), pName)
add(BombPName, charsmax(BombPName) - strlen(BombPName) , lineToAdd)
}
if ( g_BombDefusions[tempid] == topBombD && tempid != topBombDID && g_BombDefusions[tempid] )
{
new lineToAdd[65] = ", "
new pName[64]
get_user_name(tempid, pName, charsmax(pName))
add(lineToAdd, charsmax(lineToAdd), pName)
add(BombDName, charsmax(BombDName) - strlen(BombDName) , lineToAdd)
}
}
new msgToDisplay[456] = "%L"
format(msgToDisplay, charsmax(msgToDisplay), msgToDisplay, LANG_PLAYER, "RANKING_TABLE", winningTeam, strlen(KillerName) ? KillerName : "NONE", topKills, strlen(DeathsName) ? DeathsName : "NONE", topDeaths,
strlen(BombPName) ? BombPName : "NONE", topBombP, strlen(BombDName) ? BombDName : "NONE", topBombD, g_PugLeaves)
new taskId = scanForTaskID()
set_task(1.0, "displayRankingTable", taskId, msgToDisplay, strlen(msgToDisplay), "b")
}
public displayRankingTable(msgToDisplay[], taskId)
{
set_hudmessage(135, 135, 135, 0.35, 0.21, 1, 6.0, 1.0)
show_hudmessage(0, msgToDisplay)
}
public MatchIsOver()
{
set_task(1.0, "restartServer", scanForTaskID())
}
public restartServer()
{
server_cmd("restart")
}
public player(id) {
if (g_bCpt) {
CromChat(id, "%L", LANG_PLAYER, "MENU_BLOCK", PREFIX)
return PLUGIN_HANDLED
}
new title[79]
new item1[79], item2[79], item3[79], item4[79], item5[79], item6[79], item7[79]
formatex(title, charsmax(title), "\y%L", LANG_PLAYER, "PLAYERS_MENU_TITLE")
formatex(item1, charsmax(item1), "\y%L", LANG_PLAYER, "PLAYERS_MENU_ITEM1")
formatex(item2, charsmax(item2), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM2")
formatex(item3, charsmax(item3), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM3")
formatex(item4, charsmax(item4), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM4")
formatex(item5, charsmax(item5), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM5")
formatex(item6, charsmax(item6), "\y%L", LANG_PLAYER, "PLAYERS_MENU_ITEM6")
formatex(item7, charsmax(item7), "\r%L", LANG_PLAYER, "PLAYERS_MENU_ITEM7")
new pVote = menu_create(title, "pmenu")
menu_additem(pVote, item1)
menu_additem(pVote, item2)
menu_additem(pVote, item3)
menu_additem(pVote, item4)
menu_additem(pVote, item5)
menu_additem(pVote, item6)
menu_additem(pVote, item7)
menu_display(id, pVote)
return PLUGIN_CONTINUE
}
public pmenu(id, menu, item) {
if( item == MENU_EXIT )
return PLUGIN_HANDLED;
new playername[32]
get_user_name(id, playername, 31)
switch(item)
{
case 0:
{
if(is_user_admin(id))
{
client_cmd(id, "amxmodmenu");
}
else
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "NOT_ADMIN");
}
}
case 1:
{
Prepare(id);
return PLUGIN_HANDLED
}
case 2:
{
display_mutemenu(id);
return PLUGIN_HANDLED
}
case 3: {
if ( !get_pcvar_num(cvar_RanksSystem) )
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "RANK_SYSTEM_DISABLED");
player(id)
return PLUGIN_HANDLED
}
showRanks(id)
return PLUGIN_HANDLED
}
case 4:
{
motd_thingie(id);
return PLUGIN_HANDLED;
}
case 5:
{
Cmd_VoteBan(id)
return PLUGIN_HANDLED
}
case 6:
{
cmdSpec(id)
}
}
player(id)
return PLUGIN_HANDLED
}
public get_pug_state() {
new file = fopen(gPug_ini_file, "r")
fseek(file, -1, SEEK_END)
new getchar = fgetc(file)
fclose(file)
return getchar - '0'
}
public set_pug_state(iState) {
new file = fopen(gPug_ini_file, "w")
fseek(file, -1, SEEK_END)
fputc(file, iState + '0')
fclose(file)
}
stock replace_it(string[], len, const what[], const with[]) {
new pos = 0;
if ((pos = contain(string, what)) == -1)
{
return 0;
}
new total = 0;
new with_len = strlen(with);
new diff = strlen(what) - with_len;
new total_len = strlen(string);
new temp_pos = 0;
while (replace(string[pos], len - pos, what, with) != 0)
{
total++;
pos += with_len;
total_len -= diff;
if (pos >= total_len)
break;
temp_pos = contain(string[pos], what);
if (temp_pos == -1)
break;
pos += temp_pos;
}
return total;
}
clear_list(id) {
for(new i = 0; i <= gMaxPlayers; ++i)
g_mute[id][i] = false
}
public clcmd_say(id) {
static say_args[10]
read_args(say_args, 9)
remove_quotes(say_args)
if ( 1 <= gChangerID <= gMaxPlayers && id == gChangerID )
{
new enteredValue = str_to_num(say_args)
if ( enteredValue < 0 )
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ENTER_POSITIVE_VALUE");
return PLUGIN_HANDLED
}
switch ( gChanging )
{
case 0: set_pcvar_num(cvar_KillPoints, enteredValue)
case 1: set_pcvar_num(cvar_KnifePoints, enteredValue)
case 2: set_pcvar_num(cvar_WinsMatchPoints, enteredValue)
case 3: set_pcvar_num(cvar_PlaysUntilEndPoints, enteredValue)
case 4: set_pcvar_num(cvar_LeavesMatchPoints, enteredValue)
case 5: set_pcvar_num(cvar_LeavesMatchTime, enteredValue)
case 6: set_pcvar_num(cvar_TeamKillPoints, enteredValue)
case 7: set_pcvar_num(cvar_BombPlantPoints, enteredValue)
case 8: set_pcvar_num(cvar_BombDefusePoints, enteredValue)
case 9: set_pcvar_num(cvar_KillLosePoints, enteredValue)
case 10: set_pcvar_num(cvar_KnifeLosePoints, enteredValue)
case 11: set_pcvar_num(cvar_LosesMatchPoints, enteredValue)
}
show_menu(id, 0, "^n", 0)
gChanging = 0
gChangerID = 0
PointsPricesMenu(id)
return PLUGIN_HANDLED
}
else if ( 1 <= gChangerID2 <= gMaxPlayers && id == gChangerID2 )
{
new enteredValue = str_to_num(say_args)
if ( enteredValue < 0 )
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ENTER_POSITIVE_VALUE")
return PLUGIN_HANDLED
}
switch ( gChanging )
{
case 0: set_pcvar_num(cvar_BeginnerPoints, enteredValue)
case 1: set_pcvar_num(cvar_RegularPoints, enteredValue)
case 2: set_pcvar_num(cvar_VeteranPoints, enteredValue)
case 3: set_pcvar_num(cvar_ProPoints, enteredValue)
case 4: set_pcvar_num(cvar_HardCorePoints, enteredValue)
}
show_menu(id, 0, "^n", 0)
gChanging2 = 0
gChangerID2 = 0
RanksPricesMenu(id)
return PLUGIN_HANDLED
}
if(say_args[0] == '!' && containi(say_args, "mute") != -1)
{
if ( !get_pcvar_num(cvar_MuteMenu) )
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "MUTE_MENU_DISABLED")
return PLUGIN_HANDLED
}
display_mutemenu(id);
return PLUGIN_HANDLED_MAIN
}
return PLUGIN_CONTINUE
}
public fwd_voice_setclientlistening(receiver, sender, listen)
{
if(receiver == sender)
return FMRES_IGNORED
if(g_mute[receiver][sender]) {
engfunc(EngFunc_SetClientListening, receiver, sender, 0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
display_mutemenu(id)
{
static MENU_TITLE[64];
formatex(MENU_TITLE, 511, "\r%s \w%L^n^n", PREFIX, LANG_PLAYER, "MUTE_MENU_TITLE");
static iMenu
iMenu = menu_create(MENU_TITLE, "mute_menu_handler");
static team[11];
get_user_team(id, team);
static players[32], num, player;
if(get_pcvar_num(cvar_alltalk))
{
get_players(players, num, "c");
}
else
{
get_players(players, num, "ce", team);
}
static szName[32], info[5];
for(new i = 0; i < num; i++)
{
player = players[i]
num_to_str(player, info, charsmax(info));
get_user_name(player, szName, charsmax(szName));
static ITEM_TITLE[64];
if(player == id)
{
formatex(ITEM_TITLE, charsmax(ITEM_TITLE), "# Auto-Mix");
}
else
{
formatex(ITEM_TITLE, charsmax(ITEM_TITLE), "%s %s", szName, g_mute[id][player] ? "\r(Muted)" : "");
}
menu_additem(iMenu, ITEM_TITLE, info);
}
menu_display(id, iMenu);
}
public mute_menu_handler(id, iMenu, iKey)
{
if(iKey == MENU_EXIT)
{
return PLUGIN_HANDLED;
}
static access, info[5], name[32], callback;
menu_item_getinfo(iMenu, iKey, access, info, charsmax(info), name, charsmax(name), callback);
static iMuteID;
iMuteID = str_to_num(info);
g_mute[id][iMuteID] = !(g_mute[id][iMuteID]);
display_mutemenu(id);
static szName[32];
get_user_name(iMuteID, szName, charsmax(szName));
CromChat(id, "You have %smuted %s", g_mute[id][iMuteID] ? "" : "un", szName);
return PLUGIN_HANDLED
}
public showRanks(id)
{
if ( !is_user_connected(id) || is_user_bot(id) || is_user_hltv(id) )
return PLUGIN_HANDLED
if ( !get_pcvar_num(cvar_RanksSystem) )
{
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "RANK_SYSTEM_DISABLED")
return PLUGIN_HANDLED
}
new title[64]
formatex(title, charsmax(title), "\y[Auto-Mix]\w %L:", LANG_PLAYER, "RANKS_LIST_MENU_TITLE")
new menu = menu_create(title, "ranksMenuHandler")
new players[32], pnum, tempid
get_players(players, pnum, "ch")
for ( new i ; i < pnum ; i++ )
{
tempid = players[i]
new szId[5]
new pName[64], lineToDisplay[128] = "%s -\r "
num_to_str(tempid, szId, charsmax(szId))
get_user_name(tempid, pName, charsmax(pName))
format(lineToDisplay, charsmax(lineToDisplay), lineToDisplay, pName)
new toadd_rank[32]
formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1")
if ( gPoints[tempid] < get_pcvar_num(cvar_BeginnerPoints) )
formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1")
else if ( gPoints[tempid] < get_pcvar_num(cvar_RegularPoints) )
formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM2")
else if ( gPoints[tempid] < get_pcvar_num(cvar_VeteranPoints) )
formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM3")
else if ( gPoints[tempid] < get_pcvar_num(cvar_ProPoints) )
formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM4")
else if ( gPoints[tempid] < get_pcvar_num(cvar_HardCorePoints) )
formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM5")
else
formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM6")
add(lineToDisplay, charsmax(lineToDisplay), toadd_rank)
menu_additem(menu, lineToDisplay, szId, 0)
}
menu_display(id, menu)
return PLUGIN_HANDLED
}
public ranksMenuHandler(id, menu, item) {
if( item == MENU_EXIT )
return PLUGIN_HANDLED
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new pickedId = str_to_num(data)
if ( !is_user_connected(pickedId) )
return PLUGIN_HANDLED
new pName[64]
get_user_name(pickedId, pName, charsmax(pName))
new menuToDisplay[248]
new lineToAdd[32]
new keys = MENU_KEY_0
if ( gPoints[pickedId] < get_pcvar_num(cvar_BeginnerPoints) )
formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_BeginnerPoints))
else if ( gPoints[pickedId] < get_pcvar_num(cvar_RegularPoints) )
formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_RegularPoints))
else if ( gPoints[pickedId] < get_pcvar_num(cvar_VeteranPoints) )
formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_VeteranPoints))
else if ( gPoints[pickedId] < get_pcvar_num(cvar_ProPoints) )
formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_ProPoints))
else if ( gPoints[pickedId] < get_pcvar_num(cvar_HardCorePoints) )
formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_HardCorePoints))
else
formatex(lineToAdd, charsmax(lineToAdd), "%d", gPoints[pickedId])
if ( gPoints[pickedId] < get_pcvar_num(cvar_BeginnerPoints) )
formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1", "1")
else if ( gPoints[pickedId] < get_pcvar_num(cvar_RegularPoints) )
formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM2", "2")
else if ( gPoints[pickedId] < get_pcvar_num(cvar_VeteranPoints) )
formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM3", "3")
else if ( gPoints[pickedId] < get_pcvar_num(cvar_ProPoints) )
formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM4", "4")
else if ( gPoints[pickedId] < get_pcvar_num(cvar_HardCorePoints) )
formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM5", "5")
else
formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM6", "MAX")
show_menu(id, keys, menuToDisplay, -1, "ranks info")
return PLUGIN_HANDLED
}
public ranks_showInfo(id, key)
{
showRanks(id)
return PLUGIN_HANDLED
}
public afkCheck_entThink(ent)
{
if ( get_playersnum() && g_IsStarted && get_pcvar_num(cvar_AFKKick) )
checkPlayers()
entity_set_float(ent, EV_FL_nextthink, halflife_time() + CHECK_FREQ)
}
public checkPlayers() {
for (new i = 1; i <= gMaxPlayers; i++)
{
if (is_user_alive(i) && is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i])
{
new newangle[3]
get_user_origin(i, newangle)
if ( newangle[0] == g_oldangles[i][0] && newangle[1] == g_oldangles[i][1] && newangle[2] == g_oldangles[i][2] )
{
g_afktime[i] += CHECK_FREQ
check_afktime(i)
}
else
{
g_oldangles[i][0] = newangle[0]
g_oldangles[i][1] = newangle[1]
g_oldangles[i][2] = newangle[2]
g_afktime[i] = 0.0
}
}
}
return PLUGIN_HANDLED
}
check_afktime(id) {
new maxafktime = get_pcvar_num(cvar_mp_afktime)
if (maxafktime < MIN_AFK_TIME) {
log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
maxafktime = MIN_AFK_TIME
set_pcvar_num(cvar_mp_afktime, MIN_AFK_TIME)
}
if ( maxafktime-WARNING_TIME <= floatround(g_afktime[id]) < maxafktime) {
new timeleft = maxafktime - floatround(g_afktime[id])
CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "AFK_TIME_WARN", timeleft)
}
else if (floatround(g_afktime[id]) > maxafktime) {
new name[32]
get_user_name(id, name, 31)
CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "AFK_KICKED", name, maxafktime)
log_amx("%s was kicked for being AFK longer than %i seconds", name, maxafktime)
server_cmd("kick #%d ^"%s %L^"", get_user_userid(id), PREFIX, LANG_PLAYER, "AFK_KICK", maxafktime)
}
}
public RG_PlayerSpawn(id)
{
g_spawned[id] = true
get_user_origin(id, g_oldangles[id])
}
register_cmd(const clcmd[], const function[], flags = -1, const info[] = "", FlagManager = -1)
{
new cmdToRegister[6][64];
formatex(cmdToRegister[0], charsmax(cmdToRegister[]), "say !%s", clcmd)
formatex(cmdToRegister[1], charsmax(cmdToRegister[]), "say .%s", clcmd)
formatex(cmdToRegister[2], charsmax(cmdToRegister[]), "say /%s", clcmd)
formatex(cmdToRegister[3], charsmax(cmdToRegister[]), "say_team !%s", clcmd)
formatex(cmdToRegister[4], charsmax(cmdToRegister[]), "say_team .%s", clcmd)
formatex(cmdToRegister[5], charsmax(cmdToRegister[]), "say_team /%s", clcmd)
for ( new i ; i < sizeof(cmdToRegister) ; i++ )
register_clcmd(cmdToRegister[i], function, flags, info, FlagManager)
}
scanForTaskID()
{
for ( new i = 1337 ; i < 1337*2 ; i++ )
{
if ( !task_exists(i) )
return i
}
log_amx("Auto-Mix Task ID Error! Couldn't find a TASK ID!")
return 0
}
removeAllTasks()
{
for ( new i = 1337 ; i < 1337*2 ; i++ )
{
if ( task_exists(i) )
remove_task(i)
}
}
stock remove_shield(id)
{
if ( !is_user_alive(id) || !( 1 <= id <= gMaxPlayers) )
return 0;
const m_iUserPrefs = 510;
const USING_SHIELD = (1<<16);
const HAS_SHIELD = (1<<24);
new prefs = get_pdata_int(id, m_iUserPrefs) & ~USING_SHIELD;
new model[64];
if(prefs & HAS_SHIELD)
pev(id, pev_viewmodel2, model, charsmax(model));
if(equal(model, "models/shield/v_shield_", 23))
{
replace(model, charsmax(model), "shield/v_shield", "v");
set_pev(id, pev_viewmodel2, model);
}
pev(id, pev_weaponmodel2, model, charsmax(model));
if(equal(model, "models/shield/p_shield_", 23))
{
replace(model, charsmax(model), "shield/p_shield", "p");
set_pev(id, pev_weaponmodel2, model);
}
set_pdata_int(id, m_iUserPrefs, (prefs & ~HAS_SHIELD));
return 1;
}
LoadStats(id)
{
if ( is_user_hltv(id) || is_user_bot(id) )
return;
new authid[35]
get_user_authid(id, authid, sizeof(authid) - 1)
if (containi(authid, "_ID_") != -1)
return
new data[16]
if( fvault_get_data(gPointsVault, authid, data, sizeof(data) - 1) )
gPoints[id] = str_to_num(data)
else
gPoints[id] = 0
return;
}
SaveStats(id)
{
if ( is_user_hltv(id) || is_user_bot(id) || !get_pcvar_num(cvar_RanksSystem) )
return;
new authid[35]
get_user_authid(id, authid, sizeof(authid) - 1)
if (gPoints[id] < 0)
gPoints[id] = 0
if (containi(authid, "_ID_") != -1)
return
new data[16]
num_to_str(gPoints[id], data, sizeof(data) - 1)
fvault_set_data(gPointsVault, authid, data)
return;
}
public Cmd_VoteBan(id)
{
get_players(g_iPlayers, g_iNum, "h");
if(g_iNum < 3)
{
CromChat ( id, "&x04%s %L", PREFIX,LANG_PLAYER, "BAN_NO");
return PLUGIN_HANDLED;
}
ShowBanMenu(id);
return PLUGIN_CONTINUE;
}
public ShowBanMenu(id)
{
new iMenu = menu_create("\rVOTEBAN \yMenu:", "VoteBan_menu_handler");
static players[32], num;
get_players(players, num, "h");
static player, szName[32], info[5];
for(new i = 0; i < num; i++)
{
player = players[i];
get_user_name(player, szName, charsmax(szName));
static ITEM_TITLE[64];
formatex(ITEM_TITLE, charsmax(ITEM_TITLE), "%s \d(\r%d%%\d)", szName, get_percent(g_iVotes[player], g_iNum));
num_to_str(player, info, charsmax(info));
menu_additem(iMenu, ITEM_TITLE, info);
}
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public VoteBan_menu_handler(id, iMenu, iKey)
{
if(iKey == MENU_EXIT)
{
return PLUGIN_HANDLED;
}
static access, info[5], szName[32], callback;
menu_item_getinfo(iMenu, iKey, access, info, charsmax(info), szName, charsmax(szName), callback);
static iVoteBanID;
iVoteBanID = str_to_num(info);
if(!is_user_connected(iVoteBanID))
{
ShowBanMenu(id);
return PLUGIN_HANDLED;
}
else if(iVoteBanID == id)
{
CromChat ( id, "&x04%s %L", PREFIX,LANG_PLAYER, "BAN_YOURSELF");
ShowBanMenu(id);
}
else if(g_iVotedPlayers[id] & (1 << iVoteBanID))
{
CromChat ( id, "&x04%s %L", PREFIX,LANG_PLAYER, "BAN_ALREADY");
ShowBanMenu(id);
return PLUGIN_HANDLED;
}
g_iVotes[iVoteBanID]++;
g_iVotedPlayers[id] |= (1 << iVoteBanID);
static szName2[2][32];
get_user_name(id, szName2[0], charsmax(szName2[]));
get_user_name(iVoteBanID, szName2[1], charsmax(szName2[]));
CromChat ( 0, "&x04%s %L", PREFIX, LANG_PLAYER, "BAN_X_BAN_X", szName2[0], szName2[1]);
CheckVotes(iVoteBanID, id);
client_cmd(id, "messagemode pug_voteban_reason");
ShowBanMenu(id);
return PLUGIN_HANDLED;
}
public Cmd_VoteBanReason(id)
{
if(!g_iVotedPlayers[id])
return PLUGIN_HANDLED;
new szArgs[64];
read_argv(1, szArgs, charsmax(szArgs));
if(szArgs[0])
{
formatex(g_szVoteReason[id], charsmax(g_szVoteReason[]), szArgs);
}
return PLUGIN_HANDLED;
}
public CheckVotes(id, voter)
{
get_players(g_iPlayers, g_iNum, "h");
new iPercent = get_percent(g_iVotes[id], g_iNum);
if(iPercent >= get_pcvar_num(g_iPcvar[CVAR_PERCENT]))
{
switch(get_pcvar_num(g_iPcvar[CVAR_BANTYPE]))
{
case 1:
{
new szAuthid[32];
get_user_authid(id, szAuthid, charsmax(szAuthid));
server_cmd("kick #%d;wait;wait;wait;banid %d ^"%s^";wait;wait;wait;writeid", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szAuthid);
}
case 2:
{
new szIp[32];
get_user_ip(id, szIp, charsmax(szIp), 1);
server_cmd("kick #%d;wait;wait;wait;addip %d ^"%s^";wait;wait;wait;writeip", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szIp);
}
}
g_iVotes[id] = 0;
new szName[2][32];
get_user_name(id, szName[0], charsmax(szName[]));
get_user_name(id, szName[1], charsmax(szName[]));
CromChat ( 0, "&x04%s %L", PREFIX,LANG_PLAYER, "BAN_BAN_BAN", szName[0], get_pcvar_num(g_iPcvar[CVAR_BANTIME]));
log_to_file(g_szLogFile, "Player '%s' voted for banning '%s' for: %s", szName[1], szName[0], g_szVoteReason[voter]);
}
}
stock get_percent(value, tvalue)
{
return floatround(floatmul(float(value) / float(tvalue) , 100.0));
}
stock register_saycmd(saycommand[], function[], flags = -1, info[])
{
static szTemp[64];
formatex(szTemp, charsmax(szTemp), "say %s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say_team %s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say /%s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say .%s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say_team /%s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say_team .%s", saycommand);
register_clcmd(szTemp, function, flags, info);
}
public cmdSpec(id) {
if(is_user_admin(id)) {
new pCvarSpecTimes
pCvarSpecTimes = get_pcvar_num(SpecTimes);
if(CountTime[id] >= pCvarSpecTimes) {
CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_TIME", pCvarSpecTimes);
return PLUGIN_HANDLED;
}
if(get_member(id, m_iTeam) == TEAM_TERRORIST){
TerroristTeam[id] = true;
}
else {
TerroristTeam[id] = false;
}
if(get_member(id, m_iTeam) == TEAM_SPECTATOR) {
CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_SPEC");
return PLUGIN_HANDLED;
}
else {
rg_set_user_team(id, TEAM_SPECTATOR);
user_kill(id, 1);
CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER, "SPEC_ALD");
CountTime[id]++;
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public cmdBack(id)
{
if(is_user_admin(id))
{
if(get_member(id, m_iTeam) != TEAM_SPECTATOR) {
CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_NON");
return PLUGIN_HANDLED;
}
if(get_member(id, m_iTeam) == TEAM_SPECTATOR)
{
if(TerroristTeam[id] == true)
{
rg_set_user_team(id, TEAM_TERRORIST);
CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_TT");
return PLUGIN_HANDLED;
}
else
{
rg_set_user_team(id, TEAM_CT);
CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_CT");
return PLUGIN_HANDLED;
}
}
}
return PLUGIN_HANDLED;
}
public cmdPMMenu(id)
{
new menu = menu_create("Send PM To:", "handlePMMEnu")
new players[32], num
new szName[32], szTempid[32]
get_players(players, num, "ach")
for(new i; i < num; i++)
{
get_user_name(players[i], szName, charsmax(szName))
num_to_str(get_user_userid(players[i]), szTempid, charsmax(szTempid))
menu_additem(menu, szName, szTempid, 0)
}
menu_display(id, menu)
}
public handlePMMEnu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new szData[6], szName[64], iAccess, iCallback
menu_item_getinfo(menu, item, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback)
g_iTarget[id] = find_player("k", str_to_num(szData))
client_cmd(id, "messagemode PrivateMessage")
menu_destroy(menu)
return PLUGIN_HANDLED
}
public cmd_player(id)
{
new say[300]
read_args(say, charsmax(say))
remove_quotes(say)
if(!strlen(say))
return PLUGIN_HANDLED
new szSenderName[32], szReceiverName[32]
get_user_name(id, szSenderName, charsmax(szSenderName))
get_user_name(g_iTarget[id], szReceiverName, charsmax(szReceiverName))
CromChat(id, "PM to %s: %s", szReceiverName, say)
CromChat(g_iTarget[id], "&x04PM from %s: %s", szSenderName, say)
return PLUGIN_CONTINUE
}
public motd_thingie(id) {
show_motd(id,g_FileLocation,"MOTD:")
return PLUGIN_HANDLED
}
public logevent_round_start(id)
{
if (get_pcvar_num(cvar_ScoreHud)!=1)
return PLUGIN_CONTINUE;
if (g_IsStarted)
{
if (g_Twon)
{
if (g_bSecondHalf)
{
set_hudmessage(0, 212, 255, 0.52, 0.49, 1, 6.0, 12.0, 0.1, 0.2, -1)
show_hudmessage(0, "%L",LANG_PLAYER, "SHOW_SCORE_HUD", g_iScore[0], g_iScore[1]);
}
else
{
set_hudmessage(0, 212, 255, 0.52, 0.49, 1, 6.0, 12.0, 0.1, 0.2, -1)
show_hudmessage(0, "%L",LANG_PLAYER, "SHOW_SCORE_HUD", g_iScore[1], g_iScore[0]);
}
}
else
{
if (g_bSecondHalf)
{
set_hudmessage(0, 212, 255, 0.52, 0.49, 1, 6.0, 12.0, 0.1, 0.2, -1)
show_hudmessage(0, "%L",LANG_PLAYER, "SHOW_SCORE_HUD", g_iScore[1], g_iScore[0]);
}
else
{
set_hudmessage(0, 212, 255, 0.52, 0.49, 1, 6.0, 12.0, 0.1, 0.2, -1)
show_hudmessage(0, "%L",LANG_PLAYER, "SHOW_SCORE_HUD", g_iScore[0], g_iScore[1]);
}
}
}
return PLUGIN_CONTINUE
}
public RG_HasRestrictItem(const id, const ItemID:item, ItemRestType:type)
{
if(item == ITEM_SHIELDGUN && (!get_pcvar_num(cvar_AllowShield) || g_KnifeRound))
{
No_Shield_Message(id);
SetHookChainReturn(ATYPE_INTEGER, 1);
return HC_SUPERCEDE;
}
return HC_CONTINUE;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}&x01\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 &x01\\ par }
*/
|