Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 14

/* Plugin generated by AMXX-Studio */

#include
#include
#include
#include

<amxmodx>
<amxmisc>
<cstrike>
<engine>

#include <fakemeta_util>
#define PLUGIN "Cool War-Mix Menu"
#define VERSION "0.O3"
#define AUTHOR "Vlad & Hades"
#define
#define
#define
#define
#define

ADMIN_ACCESS
SWAP_SCORE
MAX_SCORE
WARMUP_CFG
TAG

#define SWITCH_TASK

ADMIN_BAN
15
16
"warmup.cfg"
"[WAR-MIX]"
112233

#define PEV_PDATA_SAFE
#define
#define
#define
#define

OFFSET_TEAM
114
OFFSET_DEFUSE_PLANT
193
HAS_DEFUSE_KIT
(1<<16)
OFFSET_INTERNALMODEL
126

new g_RoundMode, g_RoundHalf, IsChanged, g_Score [ 4 ];


new g_Nosay, g_iMaxPlayers;
new bool: hasdemo [ 33 ];
new const g_Demoname[] = "WARFP";
new const g_szInterpCommands[ ][ ] = {
"ex_interp 0.01",
"cl_cmdrate 105",
"rate 25000",
"cl_updaterate 101"
};
new g_Commands[ ][ ] =
{
"/t",
"/ct",
"/spec"
};
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd ( "say /mix", "ShowWarMenu", ADMIN_ACCESS );
register_clcmd ( "say_team /mix", "ShowWarMenu", ADMIN_ACCESS );
register_clcmd ( "say /war", "ShowWarMenu", ADMIN_ACCESS );
register_clcmd ( "say_team /war", "ShowWarMenu", ADMIN_ACCESS );
register_clcmd("say", "Cmd_Say")
register_clcmd ( "say", "hook_say" );
register_clcmd("say", "hookSay");
register_clcmd("say_team", "hookSay");
register_clcmd("say /setari", "setari", ADMIN_ACCESS);

register_clcmd("say_team /setari", "setari", ADMIN_ACCESS);


register_clcmd("say /score", "scoremix");
register_clcmd("say_team /score", "scoremix");
register_event ( "CurWeapon", "CurrentWeapon", "be", "1=1" );
register_logevent ( "RoundEnd", 2, "1=Round_End" );
register_touch ( "weaponbox", "player", "OnPlayerTouchWeaponBox" );
register_event ( "SendAudio", "Terro_Win", "a", "2=%!MRAD_terwin" );
register_event ( "SendAudio", "CT_Win", "a", "2=%!MRAD_ctwin" );
register_concmd ( "amx_t", "swap_team", ADMIN_KICK, "<name> - mutare juc
ator la Teroristi" );
register_concmd ( "amx_ct", "swap_team", ADMIN_KICK, "<name> - mutare ju
cator la Counter-Teroristi" );
register_concmd ( "amx_spec", "swap_team", ADMIN_KICK, "<name> - mutare
jucator la Spectatori" );
g_iMaxPlayers = get_maxplayers ( );
}
public client_connect(id)
{
hasdemo[id] = false;
}

public Terro_Win ( ) {
if ( g_RoundHalf == 1 )
g_Score [ 0 ]++;
if ( g_RoundHalf == 2 )
g_Score [ 3 ]++;
}
public CT_Win ( ) {
if ( g_RoundHalf == 1 )
g_Score [ 1 ]++;
if ( g_RoundHalf == 2 )
g_Score [ 2 ]++;
}

public ShowWarMenu ( id ) {
if ( !get_user_admin ( id ) )
return 1;
new menu = menu_create ( "\y[WAR-MIX] Admin Menu\w", "WarMenu_Items" );
menu_additem ( menu, "Toti jucatorii Spectator", "1", g_RoundHalf > 0 ?

( 1<<31 ) : 0 );
menu_additem
0 );
menu_additem
: 0 );
menu_additem
) : 0 );
menu_additem
menu_additem
<31 ) );

( menu, "Runda Cutite", "2", g_RoundHalf > 0 ? ( 1<<31 ) :


( menu, "Runde Incalzire", "3", g_RoundHalf > 0 ? ( 1<<31 )
( menu, "Porneste MIX/WAR", "4", g_RoundHalf > 0 ? ( 1<<31
( menu, "Restart", "5", 0 );
( menu, "Anuleaza MIX/WAR", "6", g_RoundHalf > 0 ? 0 : ( 1<

menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );


menu_display ( id, menu, 0 );
return 1;
}
public WarMenu_Items ( id, menu, item ) {
if( item == MENU_EXIT ) return 1;
new data [ 6 ], szName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,c
harsmax ( szName ), callback );
new key = str_to_num ( data );
switch ( key ) {
case 1:
{
if( g_RoundHalf != 0 )
{
client_print ( id, print_chat, "%s %s nu poti pune jucat
orii spectator deja esti in timpul unui MIX.", TAG, get_name ( id ) );
return PLUGIN_HANDLED;
}
server_cmd("sv_restart 1");
static players;
for ( players = 1; players <= get_maxplayers ( ); players++ ) {
if (( is_user_connected ( players ) ) && is_user_alive (
players ) ) {
if ( get_user_team ( players ) == 1 ) {
user_silentkill ( players );
cs_set_user_team ( players, 3 );
}
else if ( get_user_team ( players ) == 2 ) {
set_task ( 1.0, "move_ct_players_spec",
players + 661272 );
}
}

}
client_print ( 0, print_chat, "%s ADMIN %s a mutat toti jucatori
i la Spectator", TAG, get_name ( id ) );
g_RoundHalf = 0;
g_RoundMode = 0;
g_Nosay = 0;
}
case 2:
{
if( g_RoundHalf != 0 )
{
client_print ( id, print_chat, " %s nu poti porn
i runda de lame deoarece esti in timpul unui MIX.", get_name ( id ) );
return PLUGIN_HANDLED;
}
server_cmd ( "sv_restart 1" );
g_RoundHalf = 0;
g_Nosay = 0;
g_RoundMode = 1;
fm_strip_user_weapons ( 0 );
fm_give_item ( id, "weapon_knife" );
engclient_cmd ( id, "weapon_knife" );
CurrentWeapon ( id );
client_print ( 0, print_chat, "%s ADMIN %s a pornit rund
a Knife Only", TAG, get_name ( id ) );
}
case 3:
{
server_cmd ( "sv_restart 1" );
g_RoundHalf = 0;
g_Nosay = 0;
g_RoundMode = 2;
server_cmd ( "exec %s", WARMUP_CFG );
client_print ( 0, print_chat, "%s ADMIN %s a pornit rund
ele WarmUp", TAG, get_name ( id ) );
}
case 4:
{
if ( g_RoundHalf != 0)
{
client_print ( id, print_chat, "MIX-ul e deja po
rnit ,il poti restarta sau anula.", get_name ( id ) );
return PLUGIN_HANDLED;
}
server_cmd ( "exec live.cfg");
server_cmd ( "sv_restart 1" );
g_RoundMode = 0;

g_RoundHalf =
g_Nosay = 1;
g_Score [ 0 ]
g_Score [ 1 ]
g_Score [ 2 ]
g_Score [ 3 ]

1;
=
=
=
=

0;
0;
0;
0;

client_print ( 0, print_chat, "%s ADMIN %s a pornit prim


a repriza! Good Luck!", TAG, get_name ( id ) );
}
case 5:
{
if ( g_RoundHalf == 1 ) {
g_Score [ 0 ] = 0;
g_Score [ 1 ] = 0;
server_cmd ( "sv_restart 1" );
client_print ( 0, print_chat, "%s ADMIN %s a rep
ornit prima repriza a MIX-ului. Good Luck!", TAG, get_name ( id ) );
}
else if ( g_RoundHalf == 2 ) {
g_Score [ 2 ] = g_Score [ 0 ];
g_Score [ 3 ] = g_Score [ 1 ];
server_cmd ( "sv_restart 1" );
client_print ( 0, print_chat, "%s ADMIN %s a rep
ornit aII-a repriza a MIX-ului. Good Luck!", TAG, get_name ( id ) );

}
if ( (g_RoundMode == 0) && (g_RoundHalf == 0))
{
server_cmd ( "sv_restart 1" );
client_print ( 0, print_chat, "%s ADMIN %s a rep
ornit jocul.", TAG, get_name ( id ) );
}
else if ( (g_RoundMode == 2) && (g_RoundHalf == 0))
{
server_cmd ( "sv_restart 1" );
client_print ( 0, print_chat, "%s ADMIN %s a rep
ornit rundele de incalzire.", TAG, get_name ( id ) );
}
}
case 6:
{
if( g_RoundHalf == 0 )
{
client_print ( id, print_chat, "In acest moment
nu ruleaza nici un MIX.", get_name ( id ) );

return PLUGIN_HANDLED;
}
client_print ( 0, print_chat, "%s ADMIN %s a anulat Mixul!", TAG, get_name ( id ) );
g_RoundHalf = 0;
g_RoundMode = 0;
IsChanged = 0;
g_Nosay = 0;
g_Score [ 0 ] = g_Score [ 1 ] = 0;
g_Score [ 2 ] = g_Score [ 3 ] = 0;
}
}
menu_destroy ( menu );
return 1;
}

public move_ct_players_spec ( id ) {
id -= 661272;
user_silentkill ( id );
cs_set_user_team ( id, 3 );
}
public EndMix ( ) {
g_RoundHalf = 0;
g_RoundMode = 0;
IsChanged = 0;
g_Nosay = 0;
fm_strip_user_weapons ( 0 );
fm_give_item ( 0, "weapon_knife" );
if( g_Score[ 2 ] > g_Score [ 3 ] )
{
set_hudmessage ( 255, 127, 0, -1.0, 0.52, 0, 6.0, 10.0 );
show_hudmessage ( 0, "-- CT WIN --^nCT: %d | T: %d^n-- War-Mix S
ystem by Vlad & Hades --^n", g_Score [ 2 ], g_Score [ 3 ]);
}
else if( g_Score[ 3 ] > g_Score [ 2 ] )
{
set_hudmessage ( 255, 127, 0, -1.0, 0.52, 0, 6.0, 10.0 );
show_hudmessage ( 0, "-- TERO WIN --^nT: %d | CT: %d^n-- War-Mix
System by Vlad & Hades --^n", g_Score [ 3 ], g_Score [ 2 ]);
}
else if( g_Score[ 3 ] == g_Score [ 2 ] )
{
set_hudmessage ( 255, 127, 0, -1.0, 0.52, 0, 6.0, 10.0 );
show_hudmessage ( 0, "-- MECIUL S-A TERMINAT CU EGALITATE --^nT:
%d | CT: %d^n-- War-Mix System by Vlad & Hades --^n", g_Score [ 3 ], g_Score [
2 ]);
}

}
public SwapTeams ( ) {
new iPlayers [ 32 ], iNum;
get_players ( iPlayers, iNum, "ch" );
if ( iNum ) {
new id2;
for ( --iNum; iNum >= 0; iNum-- ) {
id2 = iPlayers [ iNum ];
BeginDelayedTeamChange ( id2 );
}
}
}
public scoremix ( id )
{
if (( g_RoundHalf == 1 ) && ( g_Score[ 0 ] > g_Score[ 1 ] ))
{
client_print ( id, print_chat, "%s Echipa Tero conduce cu scorul
de %d la %d in prima repriza a mix-ului.", TAG, g_Score [ 0 ], g_Score [ 1 ] );
}
else if (( g_RoundHalf == 1 ) && ( g_Score[ 1 ] > g_Score[ 0 ] ))
{
client_print ( id, print_chat, "%s Echipa CT conduce cu scorul d
e %d la %d in prima repriza a mix-ului.", TAG, g_Score [ 1 ], g_Score [ 0 ] );
}
else if (( g_RoundHalf == 1 ) && ( g_Score[ 1 ] == g_Score[ 0 ] ))
{
client_print ( id, print_chat, "%s Cele 2 echipe sunt la egalita
te in prima repriza a mix-ului.", TAG);
}
if (( g_RoundHalf == 2 ) && ( g_Score[ 2 ] > g_Score[ 3 ] ))
{
client_print ( id, print_chat, "%s Echipa CT conduce cu scorul d
e %d la %d in a2-a repriza a mix-ului.", TAG, g_Score [ 2 ], g_Score [ 3 ] );
}
else if (( g_RoundHalf == 2 ) && ( g_Score[ 3 ] > g_Score[ 2 ] ))
{
client_print ( id, print_chat, "%s Echipa Tero conduce cu scorul
de %d la %d in a2-a repriza a mix-ului.", TAG, g_Score [ 3 ], g_Score [ 2 ] );
}
else if (( g_RoundHalf == 2 ) && ( g_Score[ 2 ] == g_Score[ 3 ] ))
{
client_print ( id, print_chat, "%s Cele 2 echipe sunt la egalita
te in a2-a repriza a mix-ului.", TAG);

}
}
public RoundEnd ( ) {
if (( g_RoundHalf == 1 ) && ( g_Score[ 0 ] > g_Score[ 1 ] ))
{
client_print ( 0, print_chat, "%s Echipa Tero conduce cu scorul
de %d la %d in prima repriza a mix-ului.", TAG, g_Score [ 0 ], g_Score [ 1 ] );
}
else if (( g_RoundHalf == 1 ) && ( g_Score[ 1 ] > g_Score[ 0 ] ))
{
client_print ( 0, print_chat, "%s Echipa CT conduce cu scorul de
%d la %d in prima repriza a mix-ului.", TAG, g_Score [ 1 ], g_Score [ 0 ] );
}
else if (( g_RoundHalf == 1 ) && ( g_Score[ 1 ] == g_Score[ 0 ] ))
{
client_print ( 0, print_chat, "%s Cele 2 echipe sunt la egalitat
e in prima repriza a mix-ului.", TAG);
}
if (( g_RoundHalf == 2 ) && ( g_Score[ 2 ] > g_Score[ 3 ] ))
{
client_print ( 0, print_chat, "%s Echipa CT conduce cu scorul de
%d la %d in a2-a repriza a mix-ului.", TAG, g_Score [ 2 ], g_Score [ 3 ] );
}
else if (( g_RoundHalf == 2 ) && ( g_Score[ 3 ] > g_Score[ 2 ] ))
{
client_print ( 0, print_chat, "%s Echipa Tero conduce cu scorul
de %d la %d in a2-a repriza a mix-ului.", TAG, g_Score [ 3 ], g_Score [ 2 ] );
}
else if (( g_RoundHalf == 2 ) && ( g_Score[ 2 ] == g_Score[ 3 ] ))
{
client_print ( 0, print_chat, "%s Cele 2 echipe sunt la egalitat
e in a2-a repriza a mix-ului.", TAG);
}
if ( ( g_Score [ 0 ] + g_Score [ 1 ] == SWAP_SCORE ) && (!IsChanged )) {
g_RoundMode = 0;
g_RoundHalf = 2;
g_Nosay = 1;
IsChanged = 1;
g_Score [ 2 ] = g_Score [ 0 ];
g_Score [ 3 ] = g_Score [ 1 ];
SwapTeams ( );
server_cmd ( "sv_restart 1" );
client_print ( 0, print_chat, "%s Echipele s-au schimbat cu succ
es..",TAG );
client_print ( 0, print_chat, "%s A pornit partea aII-a a mix-ul
u. Good Luck & Have Fun !",TAG );

}
if ( g_Score [ 2 ] >= MAX_SCORE || g_Score [ 3 ] >= MAX_SCORE ) {
EndMix ( );
g_Score [ 0 ] = g_Score [ 1 ] = 0;
g_Score [ 2 ] = g_Score [ 3 ] = 0;
client_print ( 0, print_chat, "%s MIX-ul s-a incheia!",TAG );
}

}
public CurrentWeapon ( id ) {
if ( g_RoundMode == 1 )
engclient_cmd ( id, "weapon_knife" );
}
public OnPlayerTouchWeaponBox ( ent, id ) {
if ( g_RoundMode == 1 )
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public BeginDelayedTeamChange( id )
{
switch( id )
{
case 1..6: set_task( 0.1, "ChangeUserTeamWithDelay", id +
SWITCH_TASK );
case 7..13: set_task( 0.2, "ChangeUserTeamWithDelay",
id + SWITCH_TASK );
case 14..20: set_task( 0.3, "ChangeUserTeamWithDelay"
, id + SWITCH_TASK );
case 21..26: set_task( 0.4, "ChangeUserTeamWithDelay"
, id + SWITCH_TASK );
case 27..32: set_task( 0.5, "ChangeUserTeamWithDelay"
, id + SWITCH_TASK );
}
}
public Cmd_Say( id )
{
if(( g_Nosay == 1 ) && !get_user_admin ( id ) )
{
client_print(id, print_chat, "%s Canalul SAY este blocat pentru
playeri, foloseste say_team.", TAG);
return PLUGIN_HANDLED_MAIN;
}

return PLUGIN_CONTINUE;
}
public ChangeUserTeamWithDelay( id )
{
id -= SWITCH_TASK;
if( !is_user_connected( id ) ) return 1;
switch( get_user_team( id )
{

case 1: fm_cs_set_user_team( id, 2 );


case 2:fm_cs_set_user_team( id, 1 );
}
return 0;
}
public setari( id )
{
if( get_user_flags( id ) & ADMIN_KICK )
{
static iSize = sizeof ( g_szInterpCommands );
for( new i = 0; i < iSize; i++ )
client_cmd( 0, g_szInterpCommands[ i ] );
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
client_print ( id, print_chat, "%s Ai impus setarile pentru mix
tuturor jucatorilor. ", TAG);
client_print ( 0, print_console, "%s Ti-au fost actualizate urma
toarele setari: ex_interp 0.01/cl_updaterate 101/cl_cmdrate 105/rate 25000", TAG
);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
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);
client_print ( id, print_chat, "%s Jucatorul %s
are deja demo pornit. ", 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 );
client_print ( id, print_chat, "%s Ai pornit dem
o pe jucatorul %s.", TAG, szName );
}
else
{
client_print ( id, print_chat, "%s Jucatorul spe
cificat nu exista.", TAG);
}
return PLUGIN_HANDLED;
}
}
if( contain( szSaid, "/ss" ) != -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( id2 )
{
static szName[ 32 ];
get_user_name( id2, szName, sizeof( szName ) -1
);
client_cmd( id2, "snapshot");
client_print ( id, print_chat, "%s I-ai facut o
poza jucatorului %s, cere-i s-o posteze pe forum.", TAG, szName );
}
else
{
client_print ( id, print_chat, "%s Jucatorul spe
cificat nu exista.", TAG);
}
return PLUGIN_HANDLED;

}
}
return PLUGIN_CONTINUE;
}
public hook_say ( e_Index )
{
static s_Args[ 192 ], s_Command[ 192 ];
read_args ( s_Args, charsmax ( s_Args ) );
if ( ! s_Args[ 0 ] )
return PLUGIN_CONTINUE;
remove_quotes ( s_Args[ 0 ] );
for ( new i; i < sizeof g_Commands; i++ )
{
if ( equal ( s_Args, g_Commands[ i ], strlen ( g_Commands[ i ] )
) )
{
if ( is_user_admin ( e_Index ) )
{
replace ( s_Args, charsmax ( s_Args ), "/", "" )
;
formatex ( s_Command, charsmax ( s_Command ),"am
x_%s", s_Args );
client_cmd ( e_Index, s_Command );
}
break;
}
}
return PLUGIN_CONTINUE;
}
public swap_team ( id, level, cid ) {
if( ! cmd_access ( id, level, cid, 2 ) )
return PLUGIN_HANDLED;
new szArg[ 10 ], target[ 32 ], szPlayerName[ 32 ], szAdminName[ 32 ];
read_argv( 0, szArg, 9 );
read_argv( 1, target, 31 );
new player = cmd_target ( id, target, 11 );
if( ! player ) {
client_print ( id, print_chat, "%s Jucatorul specificat nu exist
a.", TAG);
return PLUGIN_HANDLED;
}
get_user_name ( player, szPlayerName, 31 );
get_user_name ( id, szAdminName, 31 );
switch ( szArg[ 4 ] ) {

case 't':
{
user_silentkill ( player );
cs_set_user_team ( player, 1 );
client_print ( 0, print_chat, "%s Adminul %s a mutat juc
atorul %s la Terorrists.", TAG, szAdminName, szPlayerName );
}
case 'c':
{
user_silentkill ( player );
cs_set_user_team ( player, 2 );
client_print ( 0, print_chat, "%s Adminul %s a mutat juc
atorul %s la Counter-Terrorists.", TAG, szAdminName, szPlayerName );
}
case 's':
{
if(is_user_alive(player))
{
user_silentkill ( player );
cs_set_user_team ( player, 3 );
client_print ( 0, print_chat, "%s Adminul %s a m
utat jucatorul %s la Spectators.", TAG, szAdminName, szPlayerName );
}
}
}
return PLUGIN_CONTINUE;
}
bool: get_user_admin ( id ) {
if ( get_user_flags ( id ) & ADMIN_ACCESS )
return true;
return false;
}
stock get_name ( id ) {
new name [ 32 ] ;
get_user_name ( id, name, 31 );
return name;
}
fm_cs_set_user_team(id, team) {
if(!(1 <= id <= g_iMaxPlayers) || pev_valid(id) != PEV_PDATA_SAFE)
{
return 0
}
switch(team)
{
case 1:

{
new iDefuser = get_pdata_int(id, OFFSET_DEFUSE_PLANT)
if(iDefuser & HAS_DEFUSE_KIT)
{
iDefuser -= HAS_DEFUSE_KIT
set_pdata_int(id, OFFSET_DEFUSE_PLANT, iDefuser)
}
set_pdata_int(id, OFFSET_TEAM, 1)
//
set_pdata_int(id, OFFSET_INTERNALMODEL, 4)
}
case 2:
{
if(pev(id, pev_weapons) & (1<<CSW_C4))
{
engclient_cmd(id, "drop", "weapon_c4")
}
set_pdata_int(id, OFFSET_TEAM, 2)
//
set_pdata_int(id, OFFSET_INTERNALMODEL, 6)
}
}
dllfunc(DLLFunc_ClientUserInfoChanged, id, engfunc(EngFunc_GetInfoKeyBuf
fer, id))
return 1
}

You might also like