#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
// Пропускать проверку для админов или нет
#define Skip_Admin
#if defined Skip_Admin
// Если пропускать, то с каким флагом доступа
#define AdminAccess ADMIN_KICK
#endif
// Ссылка на правила
#define URL "http://shidla.quz.su/index.html"
new g_Rules[33]
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3
new CVAR_SpectUser
new g_msgScreenFade
public plugin_init()
{
// Регистрируем плагин
register_plugin("Server Rules", "2.0", "Shidla")
// Регистрируем меню
register_menucmd(register_menuid("Вы согласны с правилами сервера?"), keys, "Rules_Menu_Options")
// Региситрируем квар - переводить игрока в наблюдатели или нет при выводе правил
CVAR_SpectUser = register_cvar("amx_spect_user", "1")
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post")
g_msgScreenFade = get_user_msgid("ScreenFade")
static szCvar[30]
formatex(szCvar, charsmax(szCvar), "Server Rules v2.0 by Shidla")
register_cvar("Shidla_ServerRules_v20", szCvar, FCVAR_SERVER|FCVAR_SPONLY)
}
public client_putinserver(id)
{
// Если игрок админ, то ему присваивается значение "true", как буд-то он прочитал правила
#if defined Skip_Admin
if ((get_user_flags(id) & AdminAccess))
{
g_Rules[id] = true
return PLUGIN_CONTINUE
}
g_Rules[id] = false
#endif
// Присваиваем игроку значение "false"
g_Rules[id] = false
return PLUGIN_CONTINUE
}
public client_disconnect(id)
{
// Присваиваем игроку значение "false"
g_Rules[id] = false
}
public fw_PlayerSpawn_Post(id) // Когда игрок заспавнился
{
//client_print(id,print_chat,"[DEBUG] Spawned***")
// Если игрок админ, то ему ничего не выводится
#if defined Skip_Admin
if ((get_user_flags(id) & AdminAccess))
return;
#endif
// Если значение "false", то вывод меню
if(!g_Rules[id])
{
new menu[192]
//client_print(id,print_chat,"[DEBUG] No Read Rules!***")
format(menu, 191, "Вы согласны с правилами сервера?^n^n1. Да^n2. Нет^n3. Правила (просмотр)")
//Затемняем экран
set_task(0.1, "ScreenFade", id)
show_menu(id, keys, menu)
}
return;
}
public Rules_Menu_Options(id, keys)
{
new player[32]
get_user_name(id, player, 32)
switch(keys)
{
case 0:
{
g_Rules[id] = true
// Удаляем затемнение
set_task(0.1, "DelScreenFade", id)
}
case 1:
server_cmd("kick %s ^"Вы не согласны с правилами сервера!^"", player)
case 2:
{
// Переводим за спектраторов
Spect_User(id)
// Показываем MOTD
show_motd(id,URL,"Server Rules [Please Wait & Read]")
}
default:
g_Rules[id] = false
}
return PLUGIN_HANDLED
}
public Spect_User(id)
{
if(get_pcvar_num(CVAR_SpectUser))
{
new deaths = cs_get_user_deaths(id)
user_kill(id, 1)
cs_set_user_deaths(id, deaths)
engclient_cmd(id, "jointeam", "6")
engclient_cmd(id, "joinclass", "1")
}
return PLUGIN_CONTINUE
}
public ScreenFade(id)
{
if(is_user_connected(id) & is_user_alive(id))
{
message_begin(MSG_ONE, g_msgScreenFade, _, id)
write_short(1<<0) // Duration
write_short(1<<0) // Hold time
write_short(1<<2) // Fade type
write_byte(0) // Red
write_byte(0) // Green
write_byte(0) // Blue
write_byte(255) // Alpha
message_end()
}
}
public DelScreenFade(id)
{
message_begin(MSG_ONE, g_msgScreenFade, _, id)
write_short(1<<0) // Duration
write_short(1<<0) // Hold time
write_short(1<<0) // Fade type
write_byte(0) // Red
write_byte(0) // Green
write_byte(0) // Blue
write_byte(0) // Alpha
message_end()
}