#include <amxmodx>
#include <cstrike>
#include <ColorChat>
#include <fun>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#pragma semicolon 1
#define MAX_ROUNDS 15
#define TASK 1337
#define ACCESS ADMIN_KICK
#define TIME 30.0
#define ADVERTISING_TIME 80.0
static const
PLUGIN[ ] = "MIX",
VERSION[ ] = "0.0.1",
AUTHOR[ ] = "Vlad",
TAG[ ] = "[TAG]";
new const g_szInterpCommands[ ][ ] =
{
"cl_filterstuffcmd 0",
"cl_cmdrate 101",
"ex_interp 0.01",
"cl_updaterate 100",
"fps_max 101",
"rate 25000"
};
stock const messages [ ] [ ] =
{
"^x04 [PLUGIN]^x01 Acest plugin este facut de Vlad.",
};
new bool: g_bMixStarted;
new bool: g_bEndRound;
new bool: g_bSecondPart;
new g_iTeroScore, g_iCTScore;
new g_iTeroSScore, g_iCTSScore;
new cvar_msg;
new SyncHud;
new KNIFE = 0;
new Float:player_origin[33][3];
new bool:g_bUsersCanChat = true;
new bool:hasdemo[33];
public plugin_init( )
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /start", "cmdStart", ADMIN_KICK);
register_clcmd("say /stop", "cmdStop", ADMIN_KICK);
register_clcmd("say /warm", "cmdWarm", ADMIN_KICK);
register_clcmd("say /lame", "cmdKnife", ADMIN_KICK);
register_clcmd("say /specall", "moveSpec", ADMIN_KICK);
register_clcmd("say /restart", "cmdRestart", ADMIN_KICK);
register_clcmd( "say /off", "cmdBlocare", ADMIN_KICK);
register_clcmd( "say /on", "cmdDeblocare", ADMIN_KICK);
register_clcmd( "say /setari", "cmdSetari", ADMIN_KICK);
register_concmd("amx_t", "admin_chteam", ADMIN_KICK, "<authid, nick or #userid>");
register_concmd("amx_ct", "admin_chteam", ADMIN_KICK, "<authid, nick or #userid>");
register_concmd("amx_spec", "admin_chteam", ADMIN_KICK, "<authid, nick or #userid>");
register_clcmd("say /pause", "cmdPause", ADMIN_KICK);
register_clcmd("say /unpause", "cmdUnPause", ADMIN_KICK);
register_clcmd("say_team /start", "cmdStart", ADMIN_KICK);
register_clcmd("say_team /stop", "cmdStop", ADMIN_KICK);
register_clcmd("say_team /warm", "cmdWarm", ADMIN_KICK);
register_clcmd("say_team /lame", "cmdKnife", ADMIN_KICK);
register_clcmd("say_team /specall", "moveSpec", ADMIN_KICK);
register_clcmd("say_team /restart", "cmdRestart", ADMIN_KICK);
register_clcmd( "say_team /blocare", "cmdBlocare", ADMIN_KICK);
register_clcmd( "say_team /deblocare", "cmdDeblocare", ADMIN_KICK);
register_clcmd( "say_team /setari", "cmdSetari", ADMIN_KICK);
register_clcmd( "say", "ClCmdSay" );
register_clcmd( "say", "hookSay" );
register_clcmd( "say_team", "hookSay" );
RegisterHam(Ham_Spawn, "player", "e_Spawn", 1);
register_event("SendAudio", "EventTeroWin", "a", "2&%!MRAD_terwin");
register_event("SendAudio", "EventCTWin", "a", "2&%!MRAD_ctwin");
register_event("CurWeapon","switchweapon","be","1=1","2!29");
register_logevent("LogEventRoundEnd", 2, "1=Round_End");
register_logevent("LogEventRound", 2, "1=Round_End");
register_logevent("LogEventRoundStart", 2, "1=Round_Start");
set_task ( ADVERTISING_TIME, "show_messages", _, _, _,"b" );
cvar_msg = register_cvar("score_msg", "3");
SyncHud = CreateHudSyncObj( );
}
//=================================================MIX COMMANDS===============================================//
public switchweapon(id)
{
if (KNIFE == 1)
{
engclient_cmd(id, "weapon_knife");
}
}
public cmdRestart(id)
{
if( !UserHasAcces( id ) )
{
ColorChat( id, GREEN, "%s^x01 Nu ai acces la aceasta comanda.", TAG );
return PLUGIN_HANDLED;
}
if( !g_bMixStarted )
{
ColorChat(id, GREEN, "%s^x01 Nu poti da restart inainte sa inceapa meciul.", TAG);
return PLUGIN_HANDLED;
}
if( g_bSecondPart )
{
g_iTeroScore = g_iTeroSScore;
g_iCTScore = g_iCTSScore;
KNIFE = 0;
g_bMixStarted = true;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
ColorChat(0, GREEN, "%s^x01 %s a repornit partea a II-a a meciului. Have Fun!", TAG, szName);
}
else if( !g_bSecondPart )
{
g_iTeroScore = 0;
g_iCTScore = 0;
g_iTeroSScore = 0;
g_iCTSScore = 0;
KNIFE = 0;
g_bMixStarted = true;
g_bSecondPart = false;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
ColorChat(0, GREEN, "%s^x01 %s a repornit prima partea a meciului. Good luck!", TAG, szName);
}
server_cmd("sv_restart 1");
return PLUGIN_HANDLED;
}
public cmdKnife(id)
{
if( !UserHasAcces( id ) )
{
ColorChat( id, GREEN, "%s^x01 Nu ai acces la aceasta comanda.", TAG );
return PLUGIN_HANDLED;
}
if( g_bMixStarted )
{
ColorChat(id, GREEN, "%s^x01 Nu poti porni runda de lame in timpul meciului.", TAG);
return PLUGIN_HANDLED;
}
KNIFE = 1;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
server_cmd("sv_restart 1");
server_cmd("exec live.cfg");
server_cmd("mp_freezetime 7");
ColorChat(0, GREEN, "%s^x01 %s a pornit runda de lame pentru ALEGERI.", TAG, szName);
strip_user_weapons(0);
return PLUGIN_HANDLED;
}
public cmdStart(id)
{
if( !UserHasAcces( id ) )
{
ColorChat( id, GREEN, "%s^x01 Nu ai acces la aceasta comanda.", TAG );
return PLUGIN_HANDLED;
}
if( !g_bSecondPart )
{
if( g_bMixStarted )
{
ColorChat(id, GREEN, "%s^x01 Meciul este deja pornit.", TAG);
return PLUGIN_HANDLED;
}
g_iTeroScore = 0;
g_iCTScore = 0;
g_iTeroSScore = 0;
g_iCTSScore = 0;
KNIFE = 0;
g_bMixStarted = true;
g_bSecondPart = false;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
taskMSG(TASK);
server_cmd("sv_restart 1");
server_cmd("exec live.cfg");
ColorChat(0, GREEN, "%s^x01 %s a pornit prima parte a meciului. Good luck!", TAG, szName);
}
else if( g_bSecondPart )
{
KNIFE = 0;
g_bMixStarted = true;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
server_cmd("sv_restart 1");
server_cmd("exec live.cfg");
ColorChat(0, GREEN, "%s^x01 %s a pornit a II-a parte a meciului. Have Fun!", TAG, szName);
}
return PLUGIN_HANDLED;
}
public cmdWarm(id)
{
if( !UserHasAcces( id ) )
{
ColorChat( id, GREEN, "%s^x01 Nu ai acces la aceasta comanda.", TAG );
return PLUGIN_HANDLED;
}
if( g_bMixStarted )
{
ColorChat(id, GREEN, "%s^x01 Nu poti da WARM in timpul meciului.", TAG);
return PLUGIN_HANDLED;
}
g_iTeroScore = 0;
g_iCTScore = 0;
KNIFE = 0;
g_bMixStarted = false;
g_bSecondPart = false;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
if( task_exists(TASK) )
{
remove_task(TASK);
}
ColorChat(0, GREEN, "%s^x01 %s a pornit rundele de incalzire.", TAG, szName);
server_cmd("sv_restart 1");
server_cmd("exec warm.cfg");
return PLUGIN_HANDLED;
}
public cmdStop(id)
{
if( !UserHasAcces( id ) )
{
ColorChat( id, GREEN, "%s^x01 Nu ai acces la aceasta comanda.", TAG );
return PLUGIN_HANDLED;
}
if( !g_bMixStarted )
{
ColorChat(id, GREEN, "%s^x01 Meciul este deja oprit.", TAG);
return PLUGIN_HANDLED;
}
g_iTeroScore = 0;
g_iCTScore = 0;
g_iTeroSScore = 0;
g_iCTSScore = 0;
g_bMixStarted = false;
g_bSecondPart = false;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
if( task_exists(TASK) )
{
remove_task(TASK);
}
ColorChat(0, GREEN, "%s^x01 %s a anulat meciul.", TAG, szName);
return PLUGIN_HANDLED;
}
public EventTeroWin( )
{
if( g_bMixStarted && !g_bEndRound )
{
g_bEndRound = true;
g_iTeroScore++;
}
}
public EventCTWin( )
{
if( g_bMixStarted && !g_bEndRound )
{
g_bEndRound = true;
g_iCTScore++;
}
}
public LogEventRoundStart( )
{
g_bEndRound = false;
}
public LogEventRoundEnd( )
{
if( g_bMixStarted )
{
if( g_iTeroScore + g_iCTScore == MAX_ROUNDS )
{
new iPlayers[32], iNum, player;
get_players(iPlayers, iNum, "h");
for( new i = 0; i < iNum; i++ )
{
player = iPlayers;
if( cs_get_user_team(player) == CS_TEAM_T )
{
cs_set_user_team(player, CS_TEAM_CT);
}
else if( cs_get_user_team(player) == CS_TEAM_CT )
{
cs_set_user_team(player, CS_TEAM_T);
}
}
new iAux = g_iTeroScore;
g_iTeroScore = g_iCTScore;
g_iCTScore = iAux;
g_iTeroSScore = g_iTeroScore;
g_iCTSScore = g_iCTScore;
g_bSecondPart = true;
g_bMixStarted = false;
server_cmd("sv_restart 1");
}
if( g_iTeroScore >= MAX_ROUNDS + 1 )
{
ColorChat(0, GREEN, "%s^x03 Echipa Tero^x01 a castigat meciul cu^x04 %d^x01 la^x04 %d^x01.", TAG, g_iTeroScore, g_iCTScore);
g_iTeroScore = 0;
g_iCTScore = 0;
g_bMixStarted = false;
g_bSecondPart = false;
return PLUGIN_HANDLED;
}
else if( g_iCTScore >= MAX_ROUNDS + 1 )
{
ColorChat(0, GREEN, "%s^x03 Echipa CT^x01 a castigat meciul cu^x04 %d^x01 la^x04 %d^x01.", TAG, g_iCTScore, g_iTeroScore);
g_iTeroScore = 0;
g_iCTScore = 0;
g_bMixStarted = false;
g_bSecondPart = false;
return PLUGIN_HANDLED;
}
else if( g_iTeroScore == MAX_ROUNDS && g_iCTScore == MAX_ROUNDS )
{
ColorChat(0, GREEN, "%s^x01 Meciul s-a terminat la EGALITATE.", TAG);
g_iTeroScore = 0;
g_iCTScore = 0;
g_bMixStarted = false;
g_bSecondPart = false;
return PLUGIN_HANDLED;
}
if( get_pcvar_num(cvar_msg) != 2 )
{
ColorChat(0, GREEN, "%s^x01 Terrorists^x04 %d^x01 -^x04 %d^x01 Counter-Terrorists", TAG, g_iTeroScore, g_iCTScore);
}
}
return PLUGIN_HANDLED;
}
public taskMSG(T_A_S_K)
{
if( get_pcvar_num(cvar_msg) > 1 )
{
set_hudmessage(80, 80, 80, -1.0, 0.03, 0, 0.0, 1.1, 0.0, 0.0, -1);
ShowSyncHudMsg(0, SyncHud, "Echipa TERO %d - %d Echipa CT", g_iTeroScore, g_iCTScore);
}
set_task(1.0, "taskMSG", TASK);
}
public moveSpec(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
{
return PLUGIN_HANDLED;
}
if( g_bMixStarted )
{
ColorChat(id, GREEN, "%s^x01 Nu poti pune jucatorii Spectator in timpul meciului.", TAG);
return PLUGIN_HANDLED;
}
new players[32], total, i;
get_players(players,total,"h");
for (i=0; i<total;i++)
{
user_kill(players, 0);
cs_set_user_team(players, CS_TEAM_SPECTATOR);
}
ColorChat(0, GREEN, "%s^x01 Jucatorii au fost pusi ^x04Spectator ^x01pentru alegeri.", TAG);
return PLUGIN_HANDLED;
}
//===============================================================================================//
//==================================AFK REPORT=======================================================================//
public e_Spawn(id)
{
remove_task(id);
if(is_user_alive(id))
{
set_task(0.8, "get_spawn", id);
}
return HAM_IGNORED;
}
public get_spawn(id)
{
pev(id, pev_origin, player_origin[id]);
set_task(TIME, "check_afk", id);
}
public check_afk(id)
{
if(is_user_alive(id))
{
if(same_origin(id))
{
new name[33];
get_user_name(id, name, 32);
ColorChat(0, GREEN, "%s^x01 Player-ul^x04 %s^x01 a fost raportat ca AFK!", TAG, name);
}
}
}
public same_origin(id)
{
new Float:origin[3];
pev(id, pev_origin, origin);
for(new i = 0; i < 3; i++)
if(origin != player_origin[id])
return 0;
return 1;
}
//=====================================================================================================================
public LogEventRound( )
{
new iPlayers[32], iNum, player;
get_players(iPlayers, iNum, "ch");
for( new i = 0; i < iNum; i++ )
{
player = iPlayers;
}
}
//===============================================BLOCK CHAT=============================================================
public ClCmdSay( id )
{
static szArgs[ 192 ];
read_args( szArgs, sizeof ( szArgs ) -1 );
if( !szArgs[ 0 ] ) return PLUGIN_CONTINUE;
if( !g_bUsersCanChat )
{
ColorChat( id, GREEN, "%s^x01 Chat-ul este^x04 BLOCAT^x01, folositi functia say_team! (U)", TAG );
}
return g_bUsersCanChat ? PLUGIN_CONTINUE : PLUGIN_HANDLED;
}
public cmdBlocare( id )
{
if( !UserHasAcces( id ) )
{
ColorChat( id, GREEN, "%s^x01 Nu ai acces la aceasta comanda.", TAG );
return PLUGIN_HANDLED;
}
if( !g_bUsersCanChat )
{
ColorChat( id, GREEN, "%s^x01 Chat-ul este deja^x04 BLOCAT^x01.", TAG );
return PLUGIN_HANDLED;
}
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
ColorChat( 0, GREEN, "%s^x01 Chat-ul a fost^x04 BLOCAT^x01 de catre adminul^x04 %s^x01.", TAG, szName );
g_bUsersCanChat = false;
return PLUGIN_CONTINUE;
}
public cmdDeblocare( id )
{
if( !UserHasAcces( id ) )
{
ColorChat( id, GREEN, "%s^x01 Nu ai acces la aceasta comanda.", TAG );
return PLUGIN_HANDLED;
}
if( g_bUsersCanChat )
{
ColorChat( id, GREEN, "%s^x01 Chat-ul este deja^x04 DEBLOCAT^x01.", TAG );
return PLUGIN_HANDLED;
}
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
ColorChat( 0, GREEN, "%s^x01 Chat-ul a fost^x04 DEBLOCAT^x01 de catre adminul^x04 %s^x01.", TAG, szName );
g_bUsersCanChat = true;
return PLUGIN_CONTINUE;
}
stock bool:UserHasAcces( id )
{
if( get_user_flags( id ) & ADMIN_KICK )
return true;
return false;
}
public cmdSetari( id )
{
if( !UserHasAcces( id ) )
{
ColorChat( id, GREEN, "%s^x01 Nu ai acces la aceasta comanda.", TAG );
return PLUGIN_HANDLED;
}
static iSize = sizeof ( g_szInterpCommands );
for( new i = 0; i < iSize; i++ )
client_cmd( 0, g_szInterpCommands[ i ] );
client_print( 0, print_console, "=================== Setari War-Mix ================" );
client_print( 0, print_console, "[Mixcs.Ro] ex_interp setat pe valoarea 0.01" );
client_print( 0, print_console, "[Mixcs.Ro] rate setat pe valoarea 25000" );
client_print( 0, print_console, "[Mixcs.Ro] cl_updaterate setat pe valoarea 100" );
client_print( 0, print_console, "[Mixcs.Ro] fps_max setat pe valoarea 101" );
client_print( 0, print_console, "[Mixcs.Ro] cl_cmdrate setat pe valoarea 105" );
client_print( 0, print_console, "====================================================" );
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
ColorChat( 0, GREEN, "%s ^x04%s^x01 executa setari pe jucatori. Va rugam Verificati Consola Dumneavoastra.", TAG, szName );
return PLUGIN_CONTINUE;
}
//=====================================================DEMO===============================================================
new const g_Demoname[] = "WAR_MIXCS_RO";
public client_connect(id)
{
hasdemo[id] = false;
}
public hookSay( id )
{
new szSaid[ 192 ];
read_args( szSaid, sizeof( szSaid ) -1 );
remove_quotes( szSaid );
if( contain( szSaid, "/demo" ) != -1 )
{
if( get_user_flags( id ) & ADMIN_KICK )
{
new target[ 32 ];
copy( target, sizeof( target ) -1, szSaid[ 6 ] );
new id2 = cmd_target( id, target, 2 );
if(hasdemo[id2])
{
static szName[ 32 ];
new mapname[32];
get_user_name( id2, szName, sizeof( szName ) -1 );
get_mapname(mapname,31);
ColorChat( id, GREEN, "%s ^x01 Jucatorul %s are deja demo!", TAG, szName );
return PLUGIN_HANDLED;
}
if( id2 )
{
static szName[ 32 ];
new mapname[32];
get_user_name( id2, szName, sizeof( szName ) -1 );
get_mapname(mapname,31);
hasdemo[id2] = true;
client_cmd( id2, "record ^"%s_%s^"", g_Demoname, mapname );
ColorChat( id, GREEN, "%s^x01 Ai pornit demo pe jucatorul^x04 %s^x01!", TAG, szName );
}
else
{
console_print( id, "Player invalid." );
}
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
//==================================================TRANSFER====================================================================
public admin_chteam(id, level, cid) {
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED;
new cmd[10];
new arg[32];
new name[32], name2[32];
read_argv(0,cmd,9);
read_argv(1,arg,31);
new player = cmd_target(id,arg,2);
if (!player) return PLUGIN_HANDLED;
user_kill(player, 1);
get_user_name(id, name, 31);
get_user_name(player, name2, 31);
if(cmd[4]=='t')
{
cs_set_user_team(player,1);
ColorChat( 0, GREEN, "%s^x01 Adminul^x04 %s^x01 l-a mutat pe^x04 %s^x01 la^x04 TERO^x01.", TAG, name, name2 );
}
if(cmd[4]=='c')
{
cs_set_user_team(player,2);
ColorChat( 0, GREEN, "%s^x01 Adminul^x04 %s^x01 l-a mutat pe^x04 %s^x01 la^x04 CT^x01.", TAG, name, name2 );
}
if(cmd[4]=='s')
{
cs_set_user_team(player,3);
ColorChat( 0, GREEN, "%s^x01 Adminul^x04 %s^x01 l-a mutat pe^x04 %s^x01 la^x04 Spectator^x01.", TAG, name, name2 );
}
return PLUGIN_HANDLED;
}