I have this placement system script and, it works great until I want it to recognize that there are multiple baseplates, I do this by creating a table off all baseplates then getting the table.
But it doesnt really work and I dont know why it doesnt work.
https://gyazo.com/cf77d1f1838d5701bae061cacdd55825
There is a video so like what happens is, it clones a model to where your placing and it also clones one to every baseplate, like in the house you see how that one is cloned but its not supposed to be there.
But anyways heres my ClientScript, it requires a module script. If you need the module script for more info just ask and ill post it, but beware its alot of code.
ClientScript
wait(5) print("PlacementStarted") local PlacementHanlder = require(script:WaitForChild("PlacementModule")) local AllBaseplates = {} function UpdateBaseplateData() AllBaseplates = {} for i,v in pairs(workspace.Base:GetDescendants()) do if v.Name == "Baseplate" then table.insert(AllBaseplates, v) for j,m in pairs(AllBaseplates) do local Base = m local Items = game:GetService("ReplicatedStorage").Items local Player = game.Players.LocalPlayer local CraftingGui = Player.PlayerGui.ScreenGui:WaitForChild("PlayerCrafting") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Plane = PlacementHanlder.new(Base, workspace.Base.ItemHolder, 1) local Model local Signal local CurrentItemName local function CancelPlacement() if (CurrentItemName) then Plane:disable() if (Model.Parent) then Model:Destroy() end Model = nil Signal = nil CurrentItemName = nil end end local function InitiatePlacement(ItemName) CancelPlacement() Model = Items[ItemName]:Clone() CurrentItemName = ItemName for _, object in pairs(Model:GetChildren()) do if object:IsA("BasePart") then object.CanCollide = false end end Model.Parent = workspace.CurrentlyPlacing local Signal = Plane:enable(Model) Signal:Connect(function(Location, _) game:GetService("ReplicatedStorage").ClientPlaced:FireServer(CurrentItemName, Location[1]) CancelPlacement() end) end local function BeginPlacement() if script.Parent.EnablePlacement.Value == true then print("PlacementMyDude") InitiatePlacement(CraftingGui.Info.ItemName.Text) wait(3) script.Parent.EnablePlacement.Value = false end end script.Parent.EnablePlacement.Changed:Connect(BeginPlacement) end end end end UpdateBaseplateData() workspace.Base.ChildAdded:Connect(UpdateBaseplateData) workspace.Base.ChildRemoved:Connect(UpdateBaseplateData) workspace.Base.ItemHolder.ChildAdded:Connect(UpdateBaseplateData) workspace.Base.ItemHolder.ChildRemoved:Connect(UpdateBaseplateData)
Thanks and hopefully we can figure this out, I was supposed to get my game out today but then this happened so im kinda bummed out now.