Here is my script to teleport all players to a certain location.
game.Players:GetPlayers().CFrame = game.Workspace.NPC.Harold.Head.CFrame
Doesnt work, doesnt do anything, nothing in output, but the script continues after it instead of breaking
Here is my script to teleport all players to a certain location.
game.Players:GetPlayers().CFrame = game.Workspace.NPC.Harold.Head.CFrame
Doesnt work, doesnt do anything, nothing in output, but the script continues after it instead of breaking
GetPlayers() returns a table, and tables don't have a CFrame property. You need to get the objects stored in that table to access their properties. We therefore must use a for loop.
Your second problem is that Players don't have a CFrame property either. We must get their character's torso, and set the CFrame of that.
--pairs() is just a function that is used to loop through a table. Value is the current value, or the player we are currently at. Index is the current index, but we won't be using it.
for index,value in pairs(game.Players:GetPlayers()) do
value.Character.Torso.CFrame = CFrame.new(0,0,0)
end
Just remember that this will throw an error if Character or Torso doesn't exist, so you may want to add in some extra checks in the future.
Hello, that line of code wont work, and shouldn't be working. You're creating a table then CFraming ithe table to a CFrame. Are you mad?(lol)
I made a while loop so it would transport all the players every 5 seconds.(The waiting delay I put in). I then created my players table which is a list of all of the players in the game. After that, I created a for i, v in pairs loop which basically runs the amount of #players their are in the list. I then waited until the character was there. After that, I made sure a few elements of a character were there and not nil by creating variables and using an if statement. Afterwards, I used the MoveTo() event to position the players character.
You can read more about for pairs loops here. Read on tables here
The script should look like this.(You can take the while loop out if needed, but I expected it would be for a gameloop)
while(true) do
local players = game.Players:GetPlayers()
wait(5)
for i, v in pairs(players) do
if(v) then
repeat wait() until v.Character
local head = v.Character:FindFirstChild("Head")
local humanoid = v.Character:FindFirstChild("Humanoid")
local torso = v.Character:FindFirstChild("Torso")
if(head and humanoid and torso) then
v.Character:MoveTo(game.Workspace.NPC.Harold.Head.Position)
end
end
end
end
If you really love CFrame, you can use this code for the CFrame instead of the MoveTo() event.
while(true) do
local players = game.Players:GetPlayers()
wait(5)
for i, v in pairs(players) do
if(v) then
repeat wait() until v.Character
local head = v.Character:FindFirstChild("Head")
local humanoid = v.Character:FindFirstChild("Humanoid")
local torso = v.Character:FindFirstChild("Torso")
if(head and humanoid and torso) then
torso.CFrame = game.Workspace.NPC.Harold.Head.CFrame
end
end
end
end
This discussion is preserved as it was. New answers, comments, and votes are closed.
1 comment
Try to stick to the specific question and its problem instead of writing a bunch of your own code - it often only confuses the asker.