#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <tsfun>
#include <engine>
#include <hamsandwich>

#define PLUGIN "Fast Swim Detector"
#define VERSION "1.0"
#define AUTHOR "DPCS*"

const Float:jumplimit = 2.5 // space basili tutma max sure
new Float:jumpstarttime[33]
const Float:speedlimit = 250.0 // suda max hiz (space ile)

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_forward(FM_PlayerPostThink, "Player_PostThink");
	RegisterHam(Ham_Killed, "player", "Player_Spawn",1);
	for (new i = 1; i < 33; i++)
		jumpstarttime[i] = -1.0
}

public Player_Spawn(id)
{
	jumpstarttime[id] = -1.0
	return HAM_IGNORED;
}

public client_disconnected(id)
{
	jumpstarttime[id] = -1.0
}

public Player_PostThink(id)
{
	static inwater; inwater = entity_get_int(id, EV_INT_waterlevel)
	static Buttons;Buttons = pev(id, pev_button);
	static Float:veloc[3];get_user_velocity(id, veloc)
	static Float:hveloc; hveloc = vector_length(veloc)
	if(inwater == 2 && Buttons & IN_JUMP && jumpstarttime[id] < 0.0) {
		jumpstarttime[id] = get_gametime()
	}
	else if(!(Buttons & IN_JUMP) && jumpstarttime[id] > 0.0) {
		jumpstarttime[id] = -1.0
	}
	if(inwater == 2 && jumpstarttime[id] >= 0.0 && get_gametime() - jumpstarttime[id] > jumplimit && hveloc > speedlimit)
	{
		new szName[33]
		get_user_name(id, szName, 33)
		client_print_color(0,0, "^3[DPCS] ^4[ ^1%s ^4] ^1Adli Oyuncuda ^4[ ^1Hizli Yuzme ^4] ^1Tespit Edildigi Icin Yavaslatildi.", szName)
		ts_set_speed(id,0.0,1,1);
		jumpstarttime[id] = -1.0
	}
}