// maxips FS limits the number of players connecting from a
// single IP address.

#include <a_samp>

#define MAX_CONNECTIONS_FROM_IP     3

//---------------------------------------------

public OnFilterScriptInit()
{
	printf("\n*** Player IP limiting FS (maxips) Loaded. Max connections from 1 IP = %d\n",MAX_CONNECTIONS_FROM_IP);
}

//---------------------------------------------
// GetNumberOfPlayersOnThisIP
// Returns the number of players connecting from the
// provided IP address

stock GetNumberOfPlayersOnThisIP(test_ip[])
{
	new against_ip[32+1];
	new x = 0;
	new ip_count = 0;
	for(x=0; x<MAX_PLAYERS; x++) {
		if(IsPlayerConnected(x)) {
		    GetPlayerIp(x,against_ip,32);
		    if(!strcmp(against_ip,test_ip)) ip_count++;
		}
	}
	return ip_count;
}

//---------------------------------------------

public OnPlayerConnect(playerid)
{
	new connecting_ip[32+1];
	GetPlayerIp(playerid,connecting_ip,32);
	new num_players_on_ip = GetNumberOfPlayersOnThisIP(connecting_ip);
	
	if(num_players_on_ip > MAX_CONNECTIONS_FROM_IP) {
		printf("MAXIPs: Connecting player(%d) exceeded %d IP connections from %s.", playerid, MAX_CONNECTIONS_FROM_IP, connecting_ip);
	    Kick(playerid);
	    return 1;
	}

	return 0;
}
	
//---------------------------------------------
	    
