-- Anti speedhack by Rian2ID

posbetween = 200
pinglag = 550
action = 0	-- 0 = nothing. 1 = kick. 2 = banip. 3 = ban usgn. 4 = number 2 and 3

pos = {}
warnings = {}
for id = 1,32 do
	pos[id]={0,0}
	warnings[id]=0
end

addhook("second","nottoolaggy")
function nottoolaggy()
	for _, id in pairs(player(0,"tableliving")) do
		local speedhack = false
		if math.floor(math.sqrt(((pos[id][1]-player(id,"x"))^2)+((pos[id][2]-player(id,"y"))^2)))>=posbetween+((player(id,"speedmod")+1)*6) then
			if player(id,"ping")<pinglag then
				speedhack=true
				warnings[id]=warnings[id]+1
			end
		end
		if warnings[id]>=3 then
			msg("255000000"..player(id,"name").." looks like use speedhack!")
			if action==1 then
				parse("kick "..id.." \"Speedhack\"")
			elseif action==2 or action==4 then
				parse("banip "..player(id,"ip"))
			elseif action==3 or action==4 then
				if player(id,"usgn")>0 then
					parse("banusgn "..player(id,"usgn"))
				end
			end
			parse("speedmod "..id.." "..player(id,"speedmod"))
			warnings[id]=0
		end
		if speedhack==false then warnings[id]=0 end
		pos[id] = {player(id,"x"),player(id,"y")}
	end
end

_parse=parse
function parse(cmd)
	if cmd:sub(1,6)=="setpos" then
		pos={player(tonumber(cmd:sub(8,9),"x"),player(tonumber(cmd:sub(8,9),"y")
	end
	_parse(cmd)
end