Every time i cancel placement model start cloning multiple times.
local Placement = {} local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Player = game.Players.LocalPlayer local Mouse = Player:GetMouse() Placement.MaxPlacingDistance = 300 Placement.CanStart = true Placement.CanPlace = true Placement.IsPlacing = false Placement.CanRotate = true Placement.CanCancel = true Placement.Placed = false Placement.PlacedName = "Unknown" local PreviewModel local Rotation = 0 local Target = nil local Pos = nil local Norm = nil function SnapPositions() if PreviewModel then local RayIgnoreList = {Player.Character, PreviewModel} local MouseRay = Mouse.UnitRay local NewRay = Ray.new(MouseRay.Origin, MouseRay.Direction.unit * Placement.MaxPlacingDistance) Target, Pos, Norm = workspace:FindPartOnRayWithIgnoreList(NewRay, RayIgnoreList) end end function MoveModel() if PreviewModel then SnapPositions() EndPosX = Pos.X + (Norm.X * (PreviewModel.PrimaryPart.Size.X * 0.5)) EndPosY = Pos.Y + (Norm.Y * (PreviewModel.PrimaryPart.Size.Y * 0.5)) EndPosZ = Pos.Z + (Norm.Z * (PreviewModel.PrimaryPart.Size.Z * 0.5)) PreviewModel:SetPrimaryPartCFrame(PreviewModel.PrimaryPart.CFrame:Lerp(CFrame.new(EndPosX, EndPosY, EndPosZ) * CFrame.Angles(0, math.rad(Rotation), 0), 0.2)) end end function RotateModel(Input, Other) if Input.KeyCode == Enum.KeyCode.Q then if PreviewModel then Rotation = Rotation + 45 end end end function PlaceModel() if Placement.IsPlacing and Placement.CanPlace then script.PlaceModelEvent:FireServer(EndPosX, EndPosY, EndPosZ, Rotation, PreviewModel.Name) Placement.Placed = true Placement.PlacedName = PreviewModel.Name wait(0.01) Placement.Placed = false Placement.PlacedName = "Unknown" wait(0.05) end end function Placement.CancelPlacementFromScript() Placement.IsPlacing = false Placement.CanPlace = true Placement.CanStart = true Placement.CanRotate = true PreviewModel:Destroy() PreviewModel = nil end function CancelPlacement(Input, Other) if Input.KeyCode == Enum.KeyCode.X then if Placement.CanCancel and Placement.IsPlacing then Placement.IsPlacing = false Placement.CanPlace = true Placement.CanStart = true Placement.CanRotate = true PreviewModel:Destroy() PreviewModel = nil end end end function Placement.StartPlacing(Model) if Placement.CanStart and not Placement.IsPlacing and not PreviewModel then Placement.CanPlace = true Placement.CanStart = false Placement.IsPlacing = true PreviewModel = Model:Clone() PreviewModel.Parent = workspace local PreviewModelChildren = PreviewModel:GetChildren() for i, v in pairs(PreviewModelChildren) do if v:IsA("BasePart") then v.CanCollide = false v.Anchored = true v.Transparency = 0.55 end end UserInputService.InputBegan:Connect(RotateModel) UserInputService.InputBegan:Connect(CancelPlacement) Mouse.Button1Down:Connect(PlaceModel) while wait(0) and Placement.IsPlacing == true do MoveModel() end end end return Placement
When i cancel placing and start placing again multiple models appear. Error: https://youtu.be/wqk2KcA4EOQ