Raised This Month: $ Target: $400
 0% 

Slot Reservation code help


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Des12
Senior Member
Join Date: Jan 2005
Old 03-08-2006 , 18:21  
Reply With Quote #2

Code:
/* AMX Mod X script.
*
* (c) 2003, OLO
* This file is provided as is (no warranties).
*
* Set you server max_players to 1 above the desirered value (ie. 21 or 33).
* Query programs will see max_players -1 as max. Admins with reservation
* can connect when there is 20/20 and player with worst ping or least play time
* will be kicked.
*
* Cvar:
* amx_reservation <value>
* 1 - Kicks the Player with shortest playing time when an admin connects to a full server.
* 2 - Kick the Player with the highest ping when an admin connects to a full server.
*/

#include <amxmodx>
#include <amxmisc>

// Comment if you don't want to hide true max_players 
//#define HIDE_RESERVEDSLOTS

public plugin_init()
{
   register_plugin("Slots Reservation","0.9.7","f117bomb")
   register_cvar("amx_reservation","1")
   
   #if defined HIDE_RESERVEDSLOTS
   set_cvar_num( "sv_visiblemaxplayers" , get_maxplayers() - 1 )
   #endif
   
}

public client_putinserver(id) {

   new maxplayers = get_maxplayers()
   new players = get_playersnum( 1 )
   new limit = maxplayers - 1
   new resType = get_cvar_num( "amx_reservation" )
   new who
   
   if ( players > limit ) //21/20
   {
      if ( get_user_flags(id) & ADMIN_RESERVATION )
      {
         switch(resType) {     
            case 1:
               who = kickFresh()
            case 2:
               who = kickLag()
         }
         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 ( is_user_bot(id) )
         server_cmd("kick #%d", get_user_userid(id)  )
      else
                        client_cmd(id,"echo ^"Server is Full. Buy a slot reservation at www.brothersofkhaos.com for $5/month and this will not happen.^";disconnect")
         
      return PLUGIN_HANDLED // block connect in other plugins (especially in consgreet)   
   }
   return PLUGIN_CONTINUE
}

kickLag() {
   new who = 0, ping, loss, worst = -1
   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
      get_user_ping(i,ping,loss) // get ping
      if ( ping > worst ) {
         worst = ping
         who = i
      }
   }
   if(who)
      if ( is_user_bot(who) )
         server_cmd("kick #%d", get_user_userid(who)  )
      else
         server_cmd("kick #%d ^"Dropped to free a slot. Buy a slot reservation at www.brothersofkhaos.com for $5/month and this will not happen.^"",get_user_userid(who))
   return who 
}

kickFresh() {
   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
         server_cmd("kick #%d ^"Dropped to free a slot. Buy a slot reservation at www.brothersofkhaos.com for $5/month and this will not happen.^"",get_user_userid(who))
   return who
}
__________________
-Dest Romano

www.JustRP.com
A TSRP Server

Quote:
Originally Posted by Brad
Don't you go be bringing reality into this.
Des12 is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 20:21.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode