Over the last week or so I have been getting complaints from other players in the hockey community about a specific user “using an exploit” to get unfair control over the puck. They are sending me videos like this…
https://cdn.medal.tv/source/5630274/1590107464-roblox20200521192958.mp4
https://cdn.medal.tv/5630274/share-24761843.mp4
https://cdn.medal.tv/5630274/share-24761463.mp4
https://cdn.medal.tv/5630274/share-24304494.mp4
As you can see there is major differences in puck control leaving some users frustrated and confused. I believe this is either some performance issue or an exploit he is using to cheat.
I talked to the user myself and he has denied all allegations. He explained to me that he plays on a “Macbook Air” which he thinks is causing the lag or latency that makes it seem like the puck is sticking on his blade better. He also told me he doesn’t think you can exploit on a Mac. Not sure if this is true or not.
I also talked to other players on his team and they explained to me that he isn’t the best programmer and they think he isn’t good enough to program his own exploits.
How the puck works is that it has an ownership script that detects the magnitude of all the players hockey sticks (specifically the blade) and if the puck is less than 5 studs away from the blade it will give that player ownership of the puck. Other than that, everything is just raw Roblox physics except the poke checks and slap shots which use Legacy Body Movers to move the puck.
function FindNearestPlayer()
local nearestPlayer = nil
local dist = math.huge
for i,v in pairs(game.Players:GetPlayers()) do
if v.Character and script.Parent.LastToHoldPuck.Value == "" then
local hockeystick = v.Character:FindFirstChild("HockeyStick")
if hockeystick ~= nil then
local magnitude = (hockeystick.Blade.Position - script.Parent.Position).Magnitude
if magnitude < 5 and script.Parent.Anchored == false then
if magnitude < dist then
dist = magnitude
nearestPlayer = v.Name
script.Parent:SetNetworkOwner(v)
end
end
end
end
end
end
game:GetService('RunService').Stepped:Connect(function()
FindNearestPlayer()
end)
I want to know if you think this is a performance issue or an exploit?
We have exploiters all the time, but we have never had an exploiter give themselves an advantage gameplay wise before. I am not even sure if programming better puck control is even possible? If you know a way to do this, let me know.
He could have used a weld, but it would be a lot more obvious if he/she welded the puck onto the blade, or something like that. As you can see in the videos the puck moves forehand to backhand a lot so I doubt it’s a weld. If it isn’t a weld I have no clue what it could be. If somebody cheated I think it would be more obvious what they did to cheat.
As for performance, we don’t have very many Mac users. Most of the hockey players use PC, while some use their phones and IPads. I know one Mac user who said he wasn’t even able to touch the puck. It just never let him have ownership for some reason, so he quit. He returned after I fixed it. To fix it I just added the script above. ^
This is a different Mac user though; and a much different problem. Thanks for reading, and let me know what you think about all of this.