Problem with my baseplate glitching due to players

My baseplate is anchored, however when players build on it (the blocks are unanchored and autowelded to the baseplate using MakeJoints() ) Whenever a player places two blocks on top of each other,standing right next to the first, it creates a weld inside the block to the players head. This then causes the baseplate to start teleporting up into the air, despite it being anchored. This is all happens server side btw.

I’m not sure what I can do, here are ideas I have come up with but I’m not sure which is right, and if an exploiter would be able to do this as well as a normal player if they tried it.

  • Detect when a weld is added with childadded and remove it
  • every wait(1) CFrame the baseplate to correct CFrame
  • Change surface of blocks from “Weld” to “Smooth” (im not even sure if this will work, I think it will unweld it)

Can someone help me, I’m not quite sure how to get around this.

3 Likes

Maybe the players are clicking theirselves, and it welds to their head? I’m not too sure.

Why would you want to weld it? Couldnt you just have it already anchored and cframe it (Or how you’re doing it) to the right locations? If you want to keep it unanchored however while still welding. You can do an if statement to check if what the brick/block is welding to isnt the character but is the actual baseplate/block then weld it to that block. You can also decide to check if a weld is created inside the players head or is connected to it, if it is, disconnect it immeditley.

No, I just tried it another way. The “Anti Stuck” tool, CFrames you upwards, however my Anti Exploit has anti noclip and CFrames you back if you go inside blocks. But some people find ways around it.

Basically if you get stuck inside a block connected to the baseplate, the baseplate glitches out.

I’m confused… are you trying to have an Anti Exploit or a build system?

Look at the screenshot. The player has built onto the baseplate, the blocks are connected to the baseplate, the block has welded itself to the players head, and now the baseplate is glitching out.

Also Part.ChildAdded does not register for this? I have no idea why.

After looking on your game, you want to keep it unanchored since you want the creepers to be able to blow them up and make them fall correct? Use an if statement to check if what its welding to isnt a character, make an “ignore list” to have it check what its welding to, if its welding to a block or a baseplate, its all good. If its welding to a body part such as head,left arm, right arm, etc. Then dont weld to it.

Another thing though, what you could do is anchor them at first and when a creeper decides to blow them up, automatatically make a “hitbox/sphere” around where it exploded, if it touches a block, it will unanchor it, if a block ontop of it was anchored, it will unanchor that aswell, essentially a chain.

This would require a loop, and would be glitchy.

https://gyazo.com/0d2a225ca6e524a755f7a0b2c7ff186d

This problem occurs with everything, and for some reason ChildAdded doesn’t recognise a new weld being created.

I dont see why you would really need a loop, you can just used a Changed event of somesort to detect if a block was changed/weld was deleted.

You can probably as well have a script inside the player when they join/respawn that detects for welds that are attached to the player, if there are any, it will automatically delete them quickly.

This isn’t really the problem, it is .Changed, .ChildAdded does not detect if a weld is added to the block. And there is one being added.

Does anyone know how to detect if a weld is added on its own?

Try using GetConnectedParts and see if you can find objects that are attached to the player.

I think a better way to keep the baseplate from not moving is to make a loop that changes the baseplate’s CFrame to the original CFrame it had, make a loop that breaks any joint of the baseplate using BreakJoints, and/or make the baseplate load into the client instead of the server.

EDIT: Also I’m trying to join the server you’re in, however, it keeps on disconnecting me saying to “Check my internet connection”, but I’m able to join the other servers.
Nevermind, my internet so happened to be randomly slow at that period of time.

1 Like

This has solved it!

workspace.BuildingParts.DescendantAdded:Connect(function(a)
	if a:IsA("Weld") and not a.Part1:IsDescendantOf(workspace.BuildingParts) and not a.Part1:IsDescendantOf(workspace.Map) then
		a.Part1 = nil
	end
end)

However, if an exploiter tried to weld the character manually to it, could it still work? I’m guessing not cause the weld is client sided this time.

4 Likes

I’m not sure, you could go try it yourself in Studio. I’m guessing not as well.

1 Like