Bug:
After a HRP (HumanoidRootPart) was anchored, to prevent people from moving/falling, and their location/position (HRP.Position) was changed some weird behaviour occurs. It looks like the HRP and the rest of the body parts & accessories get ‘detached’ on the server side causing any other body parts to be shifted away from the HRP (please see pictures below).
However, on the client side (please take note that position are being adjusted on the server side) the HRP and the rest of the character parts are not shifted away and are (visually) OK and in the ‘right’ position. Any other client will also see everything OK, it is just that the positions of character parts are not equal to what the players can see.
This causes great trouble for eg weapons/guns that validate hit detection server side & do distance checks on hit body parts. On the client it will look like you are hitting said character part but on the server you are not.
Apologies if this is in the wrong category or if I am clearly doing something wrong. I have tested several variants of this with adding wait
and eg first unanchoring and then moving and the other way around too but they all yielded the same behaviour for me.
Where the bug happens:
- Studio
- Live/ingame
When it started happening:
- To my knowledge, this rather buggy behaviour started occurring this week
Screenshots (studio):
(Pink neon = HRP (HumanoidRootPart))
-
Server view when two players spawn, HRP = anchored
-
Player1’s view, HRP = anchored
-
Player1 was moved (200 studs on the X axis) through a server side script & HRP = unanchored
→ Player1’s view, HRP = unanchored
→ Here it gets interesting: Server view of Player1, HRP = unanchored (you can see that the location of the HRP is ok but on the server the character parts are shifted away/in the wrong position)
-
Player2 was moved (200 studs on the X axis) through a server side script & HRP = unanchored
→ Player2’s view, HRP = unanchored (I moved a bit with Player1 before)
→ Server view of Player1 and Player2, HRP = unanchored
As you can see, for both clients everything is fine but what the server knows/“sees” is not inline with what both clients can see.
Steps:
(Please see the reproduction place)
- Start a local server (with 1 player at least)
- When you are spawned in your HRP (HumanoidRootPart) will be anchored
player.CharacterAdded:Connect(function(character)
character:WaitForChild("HumanoidRootPart").Anchored = true
end)
- After you spawned, say anything in chat as this will TP/move your character 200 studs away & unanchor the HRP
player.Chatted:Connect(function(msg)
local HRP = player.Character:WaitForChild("HumanoidRootPart")
HRP.Position = HRP.Position + Vector3.new(200, 0, 0)
HRP.Anchored = false
end)
- Take note where the character is for the server, visually this is still on the spawn location but upon inspection the HRP has moved 200 studs but the character itself was not moved
- The character itself is visually OK for the player/client
- The character itself is visually OK for any other player
(The locations of eg Torso, Head etc are different on the server than on the clients and this can mess with eg server side checks for distances)
HRP Bug report repro place.rbxl (20.4 KB)