I have been struggling with preventing duplicate walls.
The function below takes two points and makes a wall between them. It then added that walls position to list01
The for loop in this function is what I've recently added and its failed at getting the desired result.
local wallOffset --Offset for midpoint Y axis local list01 = {} -- a table for holding each wall that's been placed --Function for creating walls local function createWall(last, currentPos) --Create a wall and size it between current and last pillar local wall = Instance.new("Part") wall.Name = "Wall" wall.Size = Vector3.new((last-currentPos).Magnitude,9,1) --(X,Y,Z) of the midpoint of the wall local midX = (last.X + currentPos.X)/2 local midY = (last.Y + currentPos.Y)/2 - wallOffset local midZ = (last.Z + currentPos.Z)/2 local orientation = (last - currentPos).Unit:Cross(Vector3.new(0,1,0)) local CFramePos = Vector3.new(midX, midY, midZ) --Move wall to Midpoint wall.CFrame = CFrame.new(CFramePos, CFramePos + orientation) --print out the last pillars POS and the current pillars POS print("Last:",last, "Current:",currentPos) wall.Anchored = true wall.CanCollide = false --Change soon, add to teams disabled collision group --Put walls POS in list or destroy wall if already in list. for index = 1, #list01 do local value = list01[index] if value == wall.Position then wall:Destroy() print("wall destroyed") break else table.insert(list01, wall.Position) print("Wasn't Destroyed, added to table") end end print("List number: ", table.getn(list01)) end
I can see that I need to change the for loop(or possibly it's the wrong approach), right now if the first value isn't the same it will add the wall POS to the list regardless if the wall does exist in the list at another index. But if I remove the else statement then I'm not sure where to 'table.insert' when it is a new wall.
That's where I'm at and any help is always appreciated.