Different positions on different clients via knockback system

I have an issue that characters’ positions are different on different clients.

image

image

Two pictures were taken at the same time and on different clients.
Before this issue comes up I punch my friend so he knockbacks.I used BodyVelocity (since LinearVelocity lags).

local bv = Instance.new("BodyVelocity")
bv.MaxForce = Vector3.new(math.huge, 0, math.huge)
bv.Velocity = HumanoidRootPart.CFrame.LookVector * 10
bv.Parent = enemyHRP

And the problem is that I can’t deal him damage (after one punch) since he is just too far away. However he can hit me.

Is the code ran in a LocalScript or a ServerScript?

If the code is ran in a LocalScript, then you need to change it to a ServerScript.
This is because in a LocalScript, only the client that executed the code sees the changes, different clients do not register the changes.

Hitboxes, knockbacks etc. are being handled on the server. Client just fires an event when they punch