|
代码如下,是经过修正的,在AMXX 1.7下编译完之后放到windows平台上有效,拿到Linux下就不好用了,请达人指点。:burn:
- #include <amxmodx>
- #include <amxmisc>
- new g_cmdLoopback[16]
- public plugin_init() {
- register_plugin("Slots Reservation",AMXX_VERSION_STR,"AMXX Dev Team")
- register_dictionary("adminslots.txt")
- register_dictionary("common.txt")
- register_cvar("amx_reservation","0")
- /* Provide server admin with cvar to hide slots, 0 or 1 */
- register_cvar("amx_hideslots", "0")
- format( g_cmdLoopback, 15, "amxres%c%c%c%c" ,
- random_num('A','Z') , random_num('A','Z') ,random_num('A','Z'),random_num('A','Z') )
- register_clcmd( g_cmdLoopback, "ackSignal" )
- }
- public plugin_cfg() {
- if ( get_cvar_num("amx_hideslots") == 1 ) {
- new maxplayers = get_maxplayers()
- new players = get_playersnum(1)
- new limit = maxplayers - get_cvar_num("amx_reservation")
- setVisibleSlots(players, maxplayers, limit)
- }
- }
- public ackSignal(id) {
- new lReason[64]
- format(lReason,63,"%L",id,"DROPPED_RES")
- server_cmd("kick #%d ^"%s^"", get_user_userid(id), lReason )
- }
- public client_authorized(id) {
- new maxplayers = get_maxplayers()
- new players = get_playersnum( 1 )
- new limit = maxplayers - get_cvar_num("amx_reservation")
- if ( access(id,ADMIN_RESERVATION) || (players <= limit) )
- {
- if ( get_cvar_num("amx_hideslots") == 1 )
- setVisibleSlots( players , maxplayers, limit )
- return PLUGIN_CONTINUE
- }
- client_cmd(id,g_cmdLoopback)
- return PLUGIN_HANDLED
- }
- public client_disconnect(id)
- {
- if ( get_cvar_num("amx_hideslots") == 1 ) {
- new maxplayers = get_maxplayers()
- setVisibleSlots( get_playersnum(1) - 1 , maxplayers , maxplayers - get_cvar_num("amx_reservation") )
- }
- return PLUGIN_CONTINUE
- }
- setVisibleSlots( players , maxplayers , limit )
- {
- new num = players + 1
- if ( players == maxplayers )
- num = maxplayers
- else if ( players < limit )
- num = limit
- set_cvar_num( "sv_visiblemaxplayers" , num )
- }
复制代码 |
|