I’m not an expert, but maybe you could try welding all the prisoners limbs?
As you said, PlatformStand nullifies player movement and basically makes them “limp” and within the poster thread, it said that he needed the detained player can’t move the holder of the cuff around. When you enable PlatformStand, you will see that all limbs except for the player’s humanoidrootpart become non-collidable(You can test this on your own by simply setting your player’s PlatformStand off and you will see that his legs would feel through the ground). When you weld an unanchored part to another unanchored part(basically two parts that is affected by physical) what’s happening to either part with mess with the other part. The detained player’s legs could possibly be messing with the weld so to make sure that this isn’t the case, you should set any person that is cuffed Humanoid state to PlatformStand. Also, it would be easier if you just enable it instead of setting up collision groups. Also when you set the humanoid to PlatformStandand check its current state(by using the GetHumanoidState function) it would say the state is “PlatformStanding”.
That wouldn’t work, it would most likely cause more problems and could fling the welder.
What do you mean? This is always the case. Every part in a humanoid is not collidable by default. The only parts that have collision are the head and the HumanoidRootPart (or Torso?), which are set every frame to CanCollide true on the backend.
The reason why PlatformStand makes characters limp and allows them to clip their legs through the ground is because the Freefall state (which is set by PlatformStand) disables the downcasting done on the backend that makes the characters able to stay on parts, despite having limbs with CanCollide as false. They then rely on the collidability of any parts to not fall through the ground.
The collision of parts has no bearing on welds, only on the physics applied to a part.
Sorry for not responding to that, what I mean as to disable collision is to stop it from colliding with something that would stop the weld from moving which will make the connected welded part stop as well.
Sorry for that as well, what I was saying is also incorrect, you are right about the Freefall state but that is my point. There is some type of force keeping the humanoid on the floor, this is the HipHeight which determines the distance (in studs) off the ground the Humanoid.RootPart
should be when the Humanoid is standing. It must be set to 0 to make the Humanoid go into that fall position(which is the reason why it looks like the leg isn’t colliding with the floor anymore) the whole point of me wanting the legs to stop colliding is so there no way for an object to mess with the weld. I suggesting that you use PlatformStand to make sure that there no force that could mess with the humanoid you detaining except for the humanoidRootPart. If we look at the gif again, it seems like the detained player is getting dragged or trying to push something out of the way to continue moving. With this logic, to see if it is because of something messing with the physical of the weld, the op should set the humanoid State to PlatformStanding.
HipHeight isn’t a force. Humanoids are kept above ground using downcasts on the backend and HipHeight is a property that helps developers to modify the position humanoids are to the floor during those downcasts. Outside of that, yes you can be right. I would suggest forcing the Freefall state as opposed to using PlatformStand personally, but whatever floats your boat.
And again, welds don’t have physics applied to them. Physics are only related to BaseParts.
Alright, good that we found some common ground. Now all to do is wait to see if this fix the op problem!
When playerA handcuffs playerB, set the network ownership of all of playerB’s character parts to playerA. Then make all of playerB’s parts massless from playerA’s client. When the player is let go / unhandcuffed, setting network ownership of playerB’s character back to playerB should do the trick. It might also be worth setting platformstanding on playerB’s humanoid to true from playerA’s client, while handcuffed, so that playerB’s movement is ignored.
EDIT:
Keep using welds, use these functions & properties:
You might want to use collision groups like people above say, if you do do this it might be better to set the collision group from the client of PlayerA by getting the id of the collision group using this:
and then setting it like a normal property. This way you don’t need to do much else when setting ownership back to PlayerB.
Well not exactly collision groups but enabling platformstand. The body of the humanoid is already non-collidable so using collision groups won’t do anything, enabling platformstand will set the HipHeight to 0 which basically makes everything but the humanoidrootpart non-collidable.