/* AMX Mod script. 
* 
* No reconnect
* (c) Copyright 2002, SYZo
* This file is provided as is (no warranties). 
*
* amx_minreconnecttime 20 (in seconds)
* 
*/ 

#include <amxmod> 
#define MAX_PLAYERS 32

new pip[MAX_PLAYERS][22]
new Float:minreconnecttime

public delayed_kick(user[]) {
    server_cmd("kick #%d",user[0])
}

public clean_blackip(ind[]) {
    pip[ind[0]][0] = 0
}

public client_connect(id) {
    if (!is_user_bot(id)) {
	minreconnecttime = get_cvar_float("amx_minreconnecttime")
	new userip[21+1]
	new uname[33+1]
	get_user_ip(id, userip, 21, 0)
	get_user_name(id, uname, 33)
	for(new i = 1; i <= MAX_PLAYERS; i++) {
	    if (equal(userip, pip[i], 21)) {
		new userid[1]
		userid[0] = get_user_userid(id)
		new authid[16]
		get_user_authid(id,authid,16)
		log_to_file("addons/amx/reconnect.log", "^"%s<%s><%d><%s><>^"", uname, userip, get_user_userid(id), authid)
		if (!(get_user_flags(id)&ADMIN_IMMUNITY)) {
		    new text[128]
		    format(text, 128, "Player %s kicked after usage reconnect command", uname)
		    set_hudmessage(255, 0, 0, 0.05, 0.70, 0, 5.0, 6.0, 6.0, 0.15, 3)
		    show_hudmessage(0,"%s",text)
		    client_cmd(id,"echo [AMX] You used command RECONNECT. Please, connect after %f sec", minreconnecttime)
		    set_task(1.0,"delayed_kick",0,userid,1)
		}
		return PLUGIN_CONTINUE
	    }
	}
    }
    return PLUGIN_CONTINUE
}

public client_disconnect(id) {
    if (!is_user_bot(id)) {
	for(new i = 1; i <= MAX_PLAYERS; i++) {
	    if(pip[i][0] == 0) {
		new userip[21+1]
		get_user_ip(id, userip, 21, 0)
		copy(pip[i], 21, userip)
		new userid[1]
		userid[0] = i
		set_task(minreconnecttime, "clean_blackip", 0, userid[0], 1)
		return PLUGIN_CONTINUE
	    }
	}
    }
    return PLUGIN_CONTINUE
}

public plugin_init() { 
    register_plugin("No reconnect","2.10","SYZo") 
    register_cvar("amx_minreconnecttime","20")
    return PLUGIN_CONTINUE 
} 

