Код за потвърждение: Избери целия код
/* AMXX Mod Script
*
* Simple Redirection Plugin for AMXX
* Orginal Code by Sonic ([email protected])
* Modified and Made for AMXX by BigBaller
*
* Place following cvars in server.cfg
*
* amx_rd_maxplayers <x> // - begin redirection when more the x ppl connected ( 0 = redirect all players )
* amx_rd_server <ip> // - redirect to this server
* amx_rd_serverport <port> // - redirect server port
* amx_rd_serverpw <password> // - password for the amx_rd_server (if needed)
*
*
* To Disable this plugin set amx_rd_maxppl to 33 or remove from plugins.ini
*/
#include <amxmodx>
new authorized_name[32]
public plugin_init()
{
register_plugin("(bz) Redirect if not admin","1.1","buzz")
register_cvar("amx_rd_maxplayers","0")
register_cvar("amx_rd_server","")
register_cvar("amx_rd_serverport","")
register_cvar("amx_rd_serverpw","")
}
public client_authorized(id)
//именно _authorized (когда уже пароль проверен и установлены привелегии), а не "public client_connect(id)" !!!
// + этот плагин должен идти последним в plugins.ini (опять же для уверенности, чтопароль уже проверен и установлены привелегии) !!!
{
new rd_maxplayers = get_cvar_num("amx_rd_maxplayers")
new rd_serverport = get_cvar_num("amx_rd_serverport")
new rd_server[64], rd_serverpw[32]
get_cvar_string("amx_rd_server",rd_server,63)
get_cvar_string("amx_rd_serverpw",rd_serverpw,31)
if ( get_playersnum() >= rd_maxplayers)
{
client_cmd(id,"echo ^"* %i have flags %i^"" ,id, get_user_flags(id))
if ( get_user_flags(id) & ADMIN_RESERVATION )
{
get_user_name( id, authorized_name, 31 )
new who = kickFresh()
if (who)
{
new name[32]
get_user_name( who, name , 31 )
client_cmd(id,"echo ^"* %s was kicked to free this slot^"" ,name )
return PLUGIN_CONTINUE
}
}
if ( !equal(rd_serverpw,"") )
{
client_cmd(id,"echo ^"[AMXX] Simple Redirection - Set Password to %s^";password %s",rd_serverpw,rd_serverpw)
}
client_cmd(id,"echo ^"[AMXX] Simple Redirection - Redirecting to %s:%d^";connect %s:%d",rd_server,rd_serverport,rd_server,rd_serverport)
}
return PLUGIN_CONTINUE
}
kickFresh()
{
new name[32]
new who = 0, itime, shortest = 0x7fffffff
new maxplayers = get_maxplayers()
for(new i = 1; i <= maxplayers; ++i)
{
if ( !is_user_connected(i) && !is_user_connecting(i) )
continue // not used slot
if (get_user_flags(i)&ADMIN_RESERVATION)
{
continue // has reservation, skip him
}
itime = get_user_time(i) // get user playing time with connection duration
if ( shortest > itime )
{
shortest = itime
who = i
}
}
if(who)
if ( is_user_bot(who) )
server_cmd("kick #%d", get_user_userid(who) )
else
client_cmd(who,"echo ^"Dropped due to shortest playing time to free slot for an admin^";disconnect")
return who
}