This is a pretty nice module but, I have a few critiques, wouldn’t an exploiter want to increase their ping instead of make it seem really low as I don’t really see much use of faking your ping so it seems lower than what it actually is; on the other hand, increasing their ping would allow them to “trick” lag compensation on a server to register a hit allowing them to shoot players who aren’t in sight (one example).
Ping can be easily increased by an exploiter, one way this could be done is by hooking functions so
Remote:Fire(...) will yield for a short amount of time before firing (there’s an example below); using a key will probably prevent most exploiters (script kiddies) but, some exploiters will be able to easily get around. Arguments passed through
Remote:Fire(...) will be passed to the hooked function which an exploiter can pass through the original function used to fire remotes, rendering the use of keys useless in most cases.
I’ve considered a few alternatives such as using a players position to determine what their ping is but, if a player is stationary, their ping will seem really high. A part that a player has network ownership could be used but, if an exploiter finds out, it might be even easier for them to fake their “ping”.
local FireServer FireServer = hookfunction(Instance.new("RemoteEvent").FireServer, newcclosure(function(Event, ...) if not checkcaller() then if Event == [some event] then wait(n) end end return FireServer(Event, ...) end)) -- Hookfunction: allows you to hook functions -- newcclosure: prevents some (if not, all) current detection methods (e.g. environment checks) -- Checkcaller: checks if a Remote was fired by a game script (if so, it'll return false)
Thanks for sharing this module though, I’m sure it’ll have really nice use cases