CeDee változata átírva:
Kód: #include <amxmodx>
#include <cstrike>
#include <fakemeta>
#define Skip_Admin // ПропŃŃкать ĐżŃ€ĐľĐ˛ĐµŃ€ĐşŃ Đ´Đ»ŃŹ админов или нет
#if defined Skip_Admin
#define AdminAccess ADMIN_KICK // Đ•Ńли пропŃŃкать, то Ń ĐşĐ°ĐşĐ¸ĐĽ флагом Đ´ĐľŃŃ‚Ńпа
#endif
new g_Rules[33], g_SpeedTaken[33]
new CVAR_SpectUser, CVAR_PlugEnable, CVAR_NoDamage, CVAR_Glow, CVAR_SetInfo, CVAR_KnifeOnly, g_msgScreenFade
new Float:UserSpeed[33]
new const RulesSetInfoKey[] = "_rules" // Поле провеяемое при режиме работы через SetInfo
public plugin_init()
{
register_plugin("Server Rules", "2.5", "Shidla")
CVAR_SpectUser = register_cvar("amx_spect_user", "1") // переводить игрока в наблюдатели или нет при выводе правил
CVAR_PlugEnable = register_cvar("amx_rules_enable", "1") // включение и выключение плагина
CVAR_NoDamage = register_cvar("amx_rules_nodamage", "1") // включать беŃŃмериме для для живых и ничего не нажавŃих
CVAR_Glow = register_cvar("amx_rules_glow", "1") // блеŃтеть Đ¸ĐłŃ€ĐľĐşŃ Đ¸Đ»Đ¸ нет
CVAR_KnifeOnly = register_cvar("amx_rules_knife", "1") // 1 - разреŃить только нож
CVAR_SetInfo = register_cvar("amx_rules_setinfo", "0") // 1 - роверка через setinf
g_msgScreenFade = get_user_msgid("ScreenFade")
register_cvar("Shidla", "Server Rules v2.5 Final", FCVAR_SERVER|FCVAR_SPONLY)
}
public client_putinserver(id)
{
#if defined Skip_Admin
if ((get_user_flags(id) & AdminAccess))
{
g_Rules[id] = true
return PLUGIN_CONTINUE
}
g_Rules[id] = false
#endif
if(get_pcvar_num(CVAR_SetInfo))
{
new RulesSetInfo[32]
get_user_info(id, RulesSetInfoKey, RulesSetInfo, 31)
if(strlen(RulesSetInfo) > 0)
{
g_Rules[id] = true
return PLUGIN_CONTINUE
}
set_task(1.0, "CheckUserRulesStats", id, "", 0, "b", 0)
}
if(!is_user_bot(id))
{
g_Rules[id] = false
g_SpeedTaken[id] = false
}
set_task(1.0, "CheckUserRulesStats", id, "", 0, "b", 0)
return PLUGIN_CONTINUE
}
public client_disconnect(id)
{
g_Rules[id] = false
g_SpeedTaken[id] = false
}
public CheckUserRulesStats(id)
{
if(!get_pcvar_num(CVAR_PlugEnable) || !is_user_connected(id) || is_user_bot(id))
return PLUGIN_CONTINUE
#if defined Skip_Admin
if ((get_user_flags(id) & AdminAccess))
return PLUGIN_CONTINUE
#endif
if(!g_Rules[id])
{
new i_Menu = menu_create("Elfogadod a szerver szabalyzatot?", "Rules_Menu_Options")
menu_additem(i_Menu, "Igen", "1", 0)
menu_additem(i_Menu, "Nem", "2", 0)
menu_display(id, i_Menu, 0)
ScreenFade(id)
if(get_pcvar_num(CVAR_Glow))
fm_set_rendering(id, kRenderFxGlowShell, 115, 50, 155, kRenderNormal, 25)
UserMovie(id)
}
return PLUGIN_CONTINUE
}
public Rules_Menu_Options(id, menu, item)
{
new s_Data[6], s_Name[64], i_Access, i_Callback
new player[32]
get_user_name(id, player, 32)
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
switch(i_Key)
{
case 1:
{
g_Rules[id] = true
if(get_pcvar_num(CVAR_SetInfo))
client_cmd(id, "setinfo %s 1", RulesSetInfoKey)
DelScreenFade(id)
fm_set_rendering(id)
UserMovie(id)
if(fm_get_user_godmode(id))
fm_set_user_godmode(id)
}
case 2:
{
new TextREASON[ 555 ]; // Причина
formatex( TextREASON, 554, "Nem fogadtal el a szabalyokat, ezert kickelve lettel.")
server_cmd("kick %s %s", player, TextREASON)
}
}
}
public UserMovie(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
return PLUGIN_CONTINUE
if(!g_SpeedTaken[id])
{
if(is_user_alive(id) & is_user_connected(id))
{
pev(id, pev_maxspeed, UserSpeed[id])
g_SpeedTaken[id] = true
}
else return PLUGIN_CONTINUE
}
if(g_Rules[id] & is_user_connected(id))
{
set_pev(id, pev_maxspeed, UserSpeed[id])
return PLUGIN_CONTINUE
}
if(is_user_alive(id) & is_user_connected(id))
{
set_pev(id, pev_velocity, Float:{0.0,0.0,0.0})
set_pev(id, pev_maxspeed, 1.0)
}
else return PLUGIN_CONTINUE
if(get_pcvar_num(CVAR_KnifeOnly))
{
new CurrWeapon = read_data(2)
if (CurrWeapon != CSW_KNIFE)
engclient_cmd(id, "weapon_knife")
}
if(get_pcvar_num(CVAR_NoDamage) & is_user_connected(id))
{
if(fm_get_user_godmode(id))
return PLUGIN_CONTINUE
fm_set_user_godmode(id, 1)
}
return PLUGIN_CONTINUE
}
public Spect_User(id)
{
if(get_pcvar_num(CVAR_SpectUser) & is_user_connected(id))
{
if(is_user_alive(id))
{
new deaths = cs_get_user_deaths(id)
user_silentkill(id)
cs_set_user_deaths(id, deaths)
}
engclient_cmd(id, "jointeam", "6")
engclient_cmd(id, "joinclass", "1")
}
g_Rules[id] = false
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)
{
if(is_user_connected(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()
}
}
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
static Float:color[3]
color[0] = float(r)
color[1] = float(g)
color[2] = float(b)
set_pev(entity, pev_renderfx, fx)
set_pev(entity, pev_rendercolor, color)
set_pev(entity, pev_rendermode, render)
set_pev(entity, pev_renderamt, float(amount))
}
stock fm_get_user_godmode(index)
{
new Float:val
pev(index, pev_takedamage, val)
return (val == DAMAGE_NO)
}
stock fm_set_user_godmode(index, godmode = 0)
{
set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM)
return 1
}
|