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.
