Hello developers,
I am trying to make an elimination type game, but I can’t figure out how to make it so that when the timer runs out, the group of players that are standing in the tunnel, get teleported to a place, AKA the round. Here is the video… robloxapp-20210802-1622521.wmv (2.1 MB)
This is the video of the timer.
Here is the local script that if fully working.
(I would prefer to use the way this script runs other than region 3)
local timer = game.StarterGui.timer
local inpart = workspace.inpart
local plr = game.Players.LocalPlayer
local text = plr.PlayerGui:WaitForChild("ScreenGui").intext
local plrs = game.Players
local text1 = text.intext1
text.Visible = false
local Players = game:GetService("Players")
local function PopupReady(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player then
text.Visible = true
end
end
local function PopupGone(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player then
text.Visible = false
end
end
inpart.Touched:Connect(PopupReady)
inpart.TouchEnded:Connect(PopupGone)
This is a local script, so it only operates to the local player’s actions. I want it Global players, when they step in they are added to some kind of teleport list. when the timer hits 1, the players on the teleport list are teleported. Also, when they step out, they are removed from the teleport list…
Thanks!
could I also have information on where the script is placed, and other things like that. (Extra info)
Use tables to collect the players in the tunnel or is still alive or put every players in the table then remove them as they die, after the round is over you can then just loop through that table and send them to a new place
Do Players die in your game?, if they do so then u can just do this in server script
local AlivePlayers = {} -- we make our table variable
game.Players.PlayerAdded:Connect(function(Player) -- we get players that joined
AlivePlayers[Player] = true -- we put the newly joined players inside the table
Player.CharacterAdded:Connect(function(Char) -- we get their character
Char.Humanoid.Died:Connect(function()
--- remove them in the table as they die
AlivePlayers[Player] = nil
end)
end)
end)
---once the round ends we can just do this
for Player,Value in pairs(AlivePlayers) do -- this loops through the "AlivePlayers" table so we can get their Player Instance.
game:GetService("TeleportService").Teleport(gameId, Player)
end
Ok, so this is it… No one dies, unless they reset character. This is the game lobby, and they teleport into the round. I know about tables now, thanks! when the timer runs out then they teleport who’s in there. Where you say:
we don’t want a player to teleport, in this case we want AlivePlayers table to teleport.
In my lobby, it would kinda make it a problem, is there a way to turn off reset char. I know there is cause I play games that do that, but how?
I know that I am making this more confusing than it needs to be.
What I have got
At the moment, there is a game lobby… There is a tunnel, that people can walk in. When you walk inside, a text label shows, “You’re in!”, it reads. There is a billboard gui, displaying a timer. The timer is an Intvalue, that is accessed by a server script.
What I haven’t got, but I want
I haven’t got it so that when the timer reaches 1, all the players who are standing in the tunnel, get teleported to the place of the main game… Is it possible to do all tabled players at once, or it a one at a time thing?
Another question,
you said Teleport(gameId, Player), did you mean Teleport(gameId, AlivePlayers)?
Thanks, but can you explain to me how I’d add a player to a table, and remove them when they step out. Could I copy my script that I already made, and change it. I am confused…
Yep, i had a similar project that i did, where i made a Queue room that teleports players, and once they step into a platform then that platform will start counting down, everyone who’s inside the zone will be teleported. You can then combine that zone module with tables it has something like Zone.Entered:Connect(function() and Zone.Leaving:Connect(function() something like that if they enter the zone then add them into the table but if they leave then remove them
Here it is! (The timer is counting down in another script)
local timer = game.StarterGui.timer
local AlivePlayers = {}
local inpart = workspace.inpart
local Players = game:GetService("Players")
local function PlayerAdded(Player)
local player = Players:GetPlayerFromCharacter(Player.Parent)
AlivePlayers[Player] = true
end
local function PlayerRemoved(Player)
local player = Players:GetPlayerFromCharacter(Player.Parent)
AlivePlayers[Player] = nil
end
if timer == 1 then
for Player,Value in pairs(AlivePlayers) do
game:GetService("TeleportService").Teleport(7195505851, Player)
end
end
inpart.Touched:Connect(PlayerAdded)
inpart.TouchEnded:Connect(PlayerRemoved)
are you putting the server scripts individually to players? if so that’s not gonna work out, instead only have 1 script for all the players. And don’t rely on touched because it’s not accurate i had problems with that when i made mine so i resulted in using zone module.
You will need to get a table of players that are in the circle (can be their name or userid)
Then, you will need to do a for loop which will go through every player in the table and teleport them one by one. Example:
local TeleportService = game:GetSerivce("TeleportService")
local gameid = 487316
local table1 = {"Shedletsky","DevHelpAccount"}
for i,v in pairs(table1) do
local player = game.Players[v]
TeleportService:Teleport(gameid, player)
end
But you’re pre setting it to the players. I want it so that on the touch, they are added to the table. And touch ended, they are removed. Any chance you could help me with that?