I made a script that waits a random time between .5 and 3 seconds then clones a model. My problem is my script clones the model (I already set the primary part) but it does not change CFrame and only clones once. Anyway to fix this? Thanks. (There are parts in the workspace named G#Number)
while wait(math.random(.5,3)) do local Wrecker = game.ServerStorage.Wrecking:Clone() Wrecker.Parent = workspace Wrecker:SetPrimaryPartCFrame(Wrecker.PrimaryPart.CFrame * CFrame.new(math.random(workspace.G1.CFrame.X, workspace.G2.CFrame.X, workspace.G3.CFrame.X, workspace.G4.CFrame.X, workspace.G5.CFrame.X, workspace.G6.CFrame.X,workspace.G7.CFrame.X, workspace.G8.CFrame.X),0,0)) end
Its a default script in the ServerScriptService
You're using math.random wrong for what you want to do. It only accepts a maximum of two arguments but you're giving it way more than two arguments.
I would suggest using string concatenation with math.random to choose a part with G at the start with any random number between one and eight and then continue from there.
Also, math.random will only return a random integer, which means that no decimals will be returned, only whole numbers.
while wait(math.random(3)) do --Math random only returns integers and won't return decimals, only whole numbers. local Wrecker = game.ServerStorage.Wrecking:Clone() Wrecker.Parent = workspace local GPart = workspace["G"..math.random(8)] --Choose a random G part with a random number between 1 and 8. Wrecker:SetPrimaryPartCFrame(Wrecker.PrimaryPart.CFrame * CFrame.new(GPart.CFrame.X,0,0)) --Use the X property of GPart's CFrame. end
I hope my answer helped you. If it did, be sure to accept it.
math.random only takes two arguments, min and max, and will only return an integer.
If you wish to get a decimal, you'll have to divide a random integer, like so:
local dec=math.random(5,30)/10 wait(dec)
Also you have to fit all those G#Number inside two integers. You could either store them in a table or do:
workspace["G"..math.random(1,8)