Код
#include <amxmodx>
#include <messages>
#include <fakemeta>
#include <fakemeta_util>
#define PLUGIN "P.S. ClanWar"
#define VERSION "0.1"
#define AUTHOR "noskill"
new bool:knifegame
// Stocks
stock fm_give_knife( index )
{
new ent = fm_create_entity( "knife" )
if( !pev_valid( ent ) )
return 0
new Float:origin[3]
pev( index, pev_origin, origin )
set_pev( ent, pev_origin, origin )
set_pev( ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN )
dllfunc( DLLFunc_Spawn, ent )
new save = pev( ent, pev_solid )
dllfunc( DLLFunc_Touch, ent, index )
if( pev(ent, pev_solid) != save )
return ent;
engfunc( EngFunc_RemoveEntity, ent )
return -1
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
new i_MessageID = get_user_msgid("MOTD")
register_message(i_MessageID, "hook_motd") // скрываем мотд
register_clcmd("warmenu", "war_menu", ADMIN_ALL, "")
register_logevent("roundStart", 2, "1=Round_Start")
register_concmd("changepw", "cmdChangepw", ADMIN_ALL)
server_cmd("exec waits.cfg")
}
public hook_motd(msg_id, msg_dest, msg_entity)
{
return PLUGIN_HANDLED
}
public roundStart(id)
{
if (knifegame == true)
{
fm_strip_user_weapons( id )
fm_give_knife( id )
}
}
public war_menu(id)
{
if (get_user_flags(id) & ADMIN_ALL)
{
new war_menu = menu_create("Меню проведения CW","war_menu_handler")
menu_additem( war_menu, "Кик", "1", 0 )
menu_additem( war_menu, "Кикнуть команду", "2", 0 )
menu_additem( war_menu, "Бан", "3", 0 )
menu_additem( war_menu, "Начать игру", "4", 0 )
menu_additem( war_menu, "Доп. виды игры", "5", 0 )
menu_additem( war_menu, "Сменить пароль", "6", 0 )
menu_additem( war_menu, "Рестарт", "7", 0 )
menu_setprop( war_menu, MPROP_EXIT, MEXIT_ALL )
menu_display( id, war_menu, 0 )
return PLUGIN_CONTINUE
}
else
{
client_print(id, print_chat, "У вас нет доступа к меню");
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE
}
public war_menu_handler( id, menu, key )
{
key++
switch( key )
{
case 1: kick_menu(id)
case 2: kick_team_menu(id)
case 3: ban_menu(id)
case 4: server_cmd("exec ^"%s^"", "addons\amxmodx\configs\psclanwar\live.cfg")
case 5: owk_menu(id)
case 6: client_cmd(id, "messagemode ^"changepw^"")
case 7: server_cmd("say Restart...;w300;sv_restart 1")
}
}
public kick_team_menu(id)
{
new menu = menu_create("\rКик меню ок", "kt_menu_handler");
menu_additem( menu, "Контров", "1", 0 )
menu_additem( menu, "Терров", "2", 0 )
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL )
menu_display( id, menu, 0 )
}
public kt_menu_handler(id, menu, key)
{
key++
switch( key )
{
case 1: kick_team_ct(id)
case 2: kick_team_tt(id)
}
}
public kick_team_ct(id)
{
new const MAXPLAYERS = get_maxplayers()
for (new i = 0; i < MAXPLAYERS; i++) {
if (is_user_connected(i) && get_user_team(i) == 2)
{
new userid = get_user_userid(i)
server_cmd("kick #%d", userid)
}
}
}
public kick_team_tt(id)
{
new const MAXPLAYERS = get_maxplayers()
for (new i = 0; i < MAXPLAYERS; i++) {
if (is_user_connected(i) && get_user_team(i) == 1)
{
new userid = get_user_userid(i)
server_cmd("kick #%d", userid)
}
}
}
public kick_menu(id)
{
new menu = menu_create("\rКик меню ок", "kmenu_handler");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
menu_additem(menu, szName, szTempid, 0);
}
menu_display(id, menu, 0);
}
public kmenu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
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 userid = get_user_userid(id);
server_cmd("kick #%d", userid);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public ban_menu(id)
{
new menu = menu_create("\rКик меню ок", "bmenu_handler");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
menu_additem(menu, szName, szTempid, 0);
}
menu_display(id, menu, 0);
}
public bmenu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
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 userid = get_user_userid(id);
server_cmd("banid #%d", userid);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public owk_menu(id)
{
new owk_menu = menu_create("Overtime/Warmup/Knife","owk_menu_handler")
menu_additem( owk_menu, "Overtime (Доп. раунды)", "1", 0 )
menu_additem( owk_menu, "Warmup (Тренировка)", "2", 0 )
menu_additem( owk_menu, "Knife(Ножи)", "3", 0 )
menu_setprop( owk_menu, MPROP_EXIT, MEXIT_ALL )
menu_display( id, owk_menu, 0 )
}
public owk_menu_handler( id, menu, key )
{
key++
switch( key )
{
case 1: server_cmd("exec ^"%s^"", "addons\amxmodx\configs\psclanwar\overtime.cfg")
case 2: server_cmd("exec ^"%s^"", "addons\amxmodx\configs\psclanwar\warmup.cfg")
case 3:
{
knifegame=true
server_cmd("exec ^"%s^"", "addons\amxmodx\configs\psclanwar\knife.cfg")
}
}
}
public cmdChangepw(id)
{
new argv1[64]
read_argv (id, argv1, sizeof argv1 )
server_cmd("sv_password ^"%s^"", argv1)
client_print(id,print_chat,"Password is changed! New password is ^"%s^"", argv1)
return PLUGIN_HANDLED
}