Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Function Doesnt Clone Part And Position Randomly?

what this script is made to do is it there's a function that sets a random position for a part and gets the part name, then it clones the part, then starts setting the clone value / variable to a clone of the previous clone and sets the position to random it repeats that 20 times before stopping, but it doesn't work, for some reason it only changes the position for the current part (not a clone) if anyone has some information on how to fix it or (even better) an actual working script, i would greatly appreciate it

local function random(position, who)
	for _, child in ipairs(script.Parent.poggy:GetChildren()) do
		if child.Name == who then
			child.Position = position
		end
	end
end

local area = 354
local baseplate_position=Vector3.new(177.753, 861.364, -402.773)

while true do
	local clone = script.Parent.poggy.Smiler:Clone()
	random(Vector3.new(math.random(-area/2,area/2),1,math.random(-area/2,area/2))+baseplate_position, clone.Name)
	for i = 1, 20 do
		clone = clone:Clone()
		random(Vector3.new(math.random(-area/2,area/2),1,math.random(-area/2,area/2))+baseplate_position, clone.Name)
		end
	break
end

1 answer

✓ Accepted answer

It's probably because either there are many parts with the same name or the parent of the clones is nil. You don't need to get the name and use the function, just clone script.Parent.poggy.Smiler 20 times using for i = 1, 20 do. Also you don't need to put that loop in a while loop.

local function random(position, who)
    for _, child in ipairs(script.Parent.poggy:GetChildren()) do
        if child.Name == who then
            child.Position = position
        end
    end
end

local area = 354
local baseplate_position=Vector3.new(177.753, 861.364, -402.773)

for i = 1, 20 do
	local clone = script.Parent.poggy.Smiler:Clone()
	clone.Parent = script.Parent.poggy
	
	math.randomseed(i) -- this is optional if you want to make it "more random"
	clone.Position = Vector3.new(math.random(-area/2,area/2),1,math.random(-area/2,area/2))+baseplate_position
end

This discussion is preserved as it was. New answers, comments, and votes are closed.