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.
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.
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.
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.
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.
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.
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.