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

Problems with assigning to X?

I am trying to make a cobblestone script, that puts lots of Stones on a part in a cobblestone-like arrangement, they are 3 bricks long, 1 high, 1 deep. It says

function Cobblestone(Part)
	local Position_X = Part.Position.X
	local Position_Y = Part.Position.Y	
	local Position_Z = Part.Position.Z
	
	local Width = Part.Size.X
	local Height = Part.Size.Y
	local Length = Part.Size.Z
	
	local Rotation_X = Part.Rotation.X
	local Rotation_Y = Part.Rotation.Y	
	local Rotation_Z = Part.Rotation.Z
	
	local Starting_Point_X = Position_X - (Width/2) -- Far side
	local Starting_Point_Z = Position_Z - (Length/2) -- Far Side
	
	local Across = math.floor(Width/3) -- How many stones, per row (3 studs long)
	local Depth = math.floor(Length) -- How many Columns of stones
	
	for a = 0, Depth do 
		for b = 0, Length do
			local Stone = game.Lighting.Stone:Clone()
			Stone.Position.X = (Starting_Point_X + 0.2) + b*1.5  -- Bottom Corner + 0.2 + Half the Stones' width
			Stone.Position.Y = Position_Y + (Height/2) + 0.3 -- 0.3 studs above the surface of the part
			Stone.Position.Z = (Starting_Point_Z + 0.2) + a*1.2 -- Moving back after 7 times
			
			Stone.Rotation.X = Rotation_X + math.random(-2, 2)
			Stone.Rotation.Y = Rotation_Y + math.random(-2, 2)
			Stone.Rotation.Z = Rotation_Z + math.random(-2, 2)
			
			Stone.Anchored   = true
		end
	end
end

Cobblestone(game.Workspace.Path)

Output:

11:38:35.374 - X cannot be assigned to

11:38:35.375 - Script 'Workspace.Stoning', Line 23 - global Cobblestone

11:38:35.376 - Script 'Workspace.Stoning', Line 36

11:38:35.376 - Stack End

1 answer

✓ Accepted answer

The properties are "read-only", as it's called; this means they cannot be changed. However, it is possible to set the Position or Rotation property to a new Vector3. So you should create a new Vector3 with the X, Y and Z that you want, instead of trying to change it in the old vector. In other words, do this:

local Stone = game.Lighting.Stone:Clone()
Stone.Position = Vector3.new(
	(Starting_Point_X + 0.2) + b*1.5,  -- Bottom Corner + 0.2 + Half the Stones' width
	Position_Y + (Height/2) + 0.3, -- 0.3 studs above the surface of the part
	(Starting_Point_Z + 0.2) + a*1.2) -- Moving back after 7 times
Stone.Rotation = Vector3.new(
	Rotation_X + math.random(-2, 2),
	Rotation_Y + math.random(-2, 2),
	Rotation_Z + math.random(-2, 2))

Instead of Stone.Position.X = ..., Stone.Position.Y = ..., etc.

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