HellóEnnél jobb témanevet nem bírtam kitalálni, szóval amelyik moderátornak/adminisztrátornak nem tetszik, az pls változtassa meg.
Kezdem is: Azt kellene ebbe a pluginba beleírni, hogy amíg nem fogadja el a játékos a szabályokat, addig ugye nem tud mozogni. De mivel deathrun szerverre kéne, ezért ha sokáig húzza az időt akkor leesik. (Mer ugye deathrun mapok elején csúszol lefele.)
Szóval azt kellene beleírni, hogy amíg nem fogadod el addig ne is csússzál lefele... Én pl úgy gondoltam, hogy picivel a föld fölött megállít, és csak akkor esel le, hogyha elfogadtad. De ha ez túl nehéz akkor máshogy is jó lenne... Lényeg az, hogy ne csússzon lefele addig míg nem fogadta el...
SMA:
Kód:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <dhudmessage>
#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"
public plugin_init()
{
register_plugin("Szerver Szabalyok", "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")
CVAR_SetInfo = register_cvar("amx_rules_setinfo", "0")
g_msgScreenFade = get_user_msgid("ScreenFade")
register_cvar("Shidla", "Server Rules v2.5 Final", FCVAR_SERVER|FCVAR_SPONLY)
set_task( 1.0,"dhud");
}
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("\rElfogadod a szerver szabalyzatot?", "Rules_Menu_Options")
menu_additem(i_Menu, "\yIgen", "1", 0)
menu_additem(i_Menu, "\yNem \w[KICK]", "2", 0)
menu_additem(i_Menu, "\yMutasd", "3", 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)
}
case 3:
{
show_motd( id,"addons/amxmodx/configs/modts/rules.txt");
}
}
}
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
}
public dhud(id)
{
set_dhudmessage( 255, 81, 44, -1.0, 0.30, 2, 6.0, 3.0, 0.1, 1.5 )
show_dhudmessage(id, "Ha elfogadod a szerver szabalyzatot, akkor azt be is kell tartanod a tovabbiakban !!!")
}