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

**PLEASE HELP** The part is not moving up and down as I programmed, please help whats wrong?

So, I made the script for the part to move up down constantly with while true do function. But it won't work I don't know what is wrong...

Here's the script(its long):

local part = script.Parent.Parent.VIPTEXT

while true do
	part.Position = "-668.4, 12.1, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12.2, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12.3, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12.4, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12.5, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12.6, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12.7, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12.8, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12.9, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.1, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.2, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.3, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.4, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.5, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.6, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.7, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.8, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.9, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.1, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.2, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.3, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.4, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.5, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.6, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.7, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.8, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.9, -102.3"
	wait(0.5)
	part.Position = "-668.4, 15, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.9, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.8, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.7, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.6, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.5, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.4, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.3, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.2, -102.3"
	wait(0.5)
	part.Position = "-668.4, 14.1, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.9, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.8, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.7, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.6, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.5, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.4, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.3, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.2, -102.3"
	wait(0.5)
	part.Position = "-668.4, 13.1, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12, -102.3"
	wait(0.5)
	part.Position = "-668.4, 12.1, -102.3"
	wait(0.5)	
end

6 comments

0

Is this a server or local script?

0

It's a normal script, but do I need to put it into a local script, I'm trying it into the ROBLOX Studio mode..

0

Positions are Vector3 values, how you have it you're setting them to String values. It would be like this; part.Position = Vector3.new(-668.4, 13.4, -102.3) Also, might I suggest looking into loops; http://wiki.roblox.com/index.php?title=Loops

0

Owwhhh.... You are be going to kidding me, now I have to paste all of them...

0

Like I said, look into loops. Then you might only have to make one adjustment.

0

Using a for loop would be much better as said above. It's ROBLOX doing the work for you. Also I'm not sure if you're aware but using CFrame instead of Vector3 might also interest you. http://wiki.roblox.com/index.php?title=CFrame

1 answer

Your problem is that you set the position incorrectly. You should do it like this:

part.CFrame = CFrame.new(#, #, #)

Also, your script is inefficient. I was once told that when you're scripting, you should be lazy. This means that do not repeat yourself. Instead of setting the part's position for every 0.1 of a stud, make it into two repeat-until loops. The script should then look like this:

local part = script.Parent.Parent.VIPTEXT

while true do
	repeat
		part.CFrame = part.CFrame.new(part.Position.X, part.Position.Y + 0.1, part.Position.Z)
	until part.Position.Y >= 15 end
	repeat
		part.CFrame = CFrame.new(part.Position.X, part.Position.Y - 0.1, part.Position.Z)
	until part.Position.Y <= 12.1 end
end

Notice how instead of 106 lines we now have only 10 lines.

Also I didn't test this yet, tell me if it doesn't work

Accept if this helped you thx

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