Hello, I have got a script that when ‘player1’ steps on a part their player gets assigned a variable called ‘standingOnArena1Player1’ and the same for ‘player2’ = ‘standingOnArena1Player2’.
However after they are teleported into the arena and given swords to fight, when one of them dies, they are supposed to teleport back to their start position (they fight first to 5 kills). But the problem i’m getting is only the player that stays alive is getting teleported back, the player that dies doesn’t get teleported anywhere. I have a feeling this is because when the player dies, they loose the value of ‘standingOnArena1Player1/2’ so when I try teleport standingOnArena1Player1/2 it doesnt teleport that player that dies because they are no longer standingOnArena1Player1/2. I was wondering if I could figure out who the player is that has been teleported into the arena and store that value until I decide they are no longer the player, that way if they die I can still teleport them.
Any help would be greatly appreciated!
Here is my script:
local Players = game:GetService("Players")
local player = game.Players.LocalPlayer
local part1 = workspace.Arena1Player1
local part2 = workspace.Arena1Player2
local team1 = workspace.Arena1Team1
local team2 = workspace.Arena1Team2
local standingOnArena1Player1 = nil
local standingOnArena1Player2 = nil
local RemoteEvent = game.ReplicatedStorage:FindFirstChild("RemoteEvent")
local function startEvent()
local plr1CurrentKills = 0
local plr2CurrentKills = 0
local SwordGiver = game.ServerStorage.Sword
local plr1 = standingOnArena1Player1
local plr2 = standingOnArena1Player2
local Sword1 = SwordGiver:Clone()
local char1 = plr1.Character
local Sword2 = SwordGiver:Clone()
local char2 = plr2.Character
local Arena1Player1Spawn = game.Workspace.Arena1Player1Spawn
local Arena1Player2Spawn = game.Workspace.Arena1Player2Spawn
print("Variables working fine")
if char1 or char2 then
local humanoid1 = char1:FindFirstChild("Humanoid")
local humanoid2 = char2:FindFirstChild("Humanoid")
if humanoid1 or humanoid2 then
Sword1.Parent = plr1.Backpack
humanoid1:EquipTool(Sword1)
Sword2.Parent = plr2.Backpack
humanoid2:EquipTool(Sword2)
print("Approved that i'm humanoid")
while plr1CurrentKills and plr2CurrentKills < 5 do
wait(1)
char1.Humanoid.Died:Connect(function(tag)
print("Detected Death")
plr2CurrentKills = plr2CurrentKills + 1
char2.Humanoid.Health = 100
print("Set char2 health")
wait(2)
print("Waited")
Sword1.Parent = plr1.Backpack
humanoid1:EquipTool(Sword1)
print("Regave sword")
char1.HumanoidRootPart.CFrame = CFrame.new(
Arena1Player1Spawn.Position
)
char2.HumanoidRootPart.CFrame = CFrame.new(
Arena1Player2Spawn.Position
)
print("Teleported")
end)
char2.Humanoid.Died:Connect(function(tag)
plr1CurrentKills = plr1CurrentKills + 1
char1.Humanoid.Health = 100
wait(2)
Sword2.Parent = plr2.Backpack
humanoid2:EquipTool(Sword2)
char1.HumanoidRootPart.CFrame = CFrame.new(
Arena1Player1Spawn.Position
)
char2.HumanoidRootPart.CFrame = CFrame.new(
Arena1Player2Spawn.Position
)
end)
end
end
end
end
RemoteEvent.OnServerEvent:Connect(function() -- if any player presses the play button, executes event
if standingOnArena1Player2 ~= nil and standingOnArena1Player1 ~= nil then
--Hide playbutton gui
standingOnArena1Player2.PlayerGui.ScreenGui.Enabled = false
standingOnArena1Player1.PlayerGui.ScreenGui.Enabled = false
--Teleports
workspace[standingOnArena1Player1.Name].HumanoidRootPart.CFrame = CFrame.new(team1.Position.X,team1.Position.Y,team1.Position.Z)
workspace[standingOnArena1Player1.Name].HumanoidRootPart.CFrame *= CFrame.Angles(0, math.rad(90), 0)
workspace[standingOnArena1Player2.Name].HumanoidRootPart.CFrame = CFrame.new(team2.Position.X,team2.Position.Y,team2.Position.Z)
workspace[standingOnArena1Player2.Name].HumanoidRootPart.CFrame *= CFrame.Angles(0, math.rad(270), 0)
local gameRunning = true
part1.Transparency = 1
part1.CanCollide = false
part2.Transparency = 1
part2.CanCollide = false
startEvent() -- triggers function
end
end)
-----------------------------------------------------
-- PART1 Events --
-----------------------------------------------------
-- Touched functions [Events now set each part that was touched to the players name instead of the opposite button]
part1.Touched:Connect(function(TouchedPart) -- Touched
local Player = Players:GetPlayerFromCharacter(TouchedPart.Parent)
if Player then -- Check if it found character
if standingOnArena1Player1 == nil then -- Check if not standing and if not occupied
part1.BrickColor = BrickColor.new("Teal") -- Set color
standingOnArena1Player1 = Player
end
end
end)
part1.TouchEnded:Connect(function(TouchedPart)
local Player = Players:GetPlayerFromCharacter(TouchedPart.Parent)
if Player then -- Check if it found character
if standingOnArena1Player1 ~= nil then -- Check if standing and is occupied
if standingOnArena1Player1.PlayerGui.ScreenGui.Enabled == true then
standingOnArena1Player1.PlayerGui.ScreenGui.Enabled = false
end
part1.BrickColor = BrickColor.new("Smoky grey") -- Set color
standingOnArena1Player1 = nil
if standingOnArena1Player2 ~= nil then
if standingOnArena1Player2.PlayerGui.ScreenGui.Enabled == true then
standingOnArena1Player2.PlayerGui.ScreenGui.Enabled = false
end
end
end
end
end)
-----------------------------------------------------
-- PART2 Events --
-----------------------------------------------------
part2.Touched:Connect(function(TouchedPart) -- Touched
local Player = Players:GetPlayerFromCharacter(TouchedPart.Parent)
if Player then -- Check if it found character
if standingOnArena1Player2 == nil then -- Check if not standing and if not occupied
part2.BrickColor = BrickColor.new("Teal") -- Set color
standingOnArena1Player2 = Player
end
end
end)
part2.TouchEnded:Connect(function(TouchedPart)
local Player = Players:GetPlayerFromCharacter(TouchedPart.Parent)
if Player then -- Check if it found character
if standingOnArena1Player2 ~= nil then -- Check if standing and is occupied
if standingOnArena1Player2.PlayerGui.ScreenGui.Enabled == true then
standingOnArena1Player2.PlayerGui.ScreenGui.Enabled = false
end
part2.BrickColor = BrickColor.new("Smoky grey") -- Set color
standingOnArena1Player2 = nil
if standingOnArena1Player1 ~= nil then
if standingOnArena1Player1.PlayerGui.ScreenGui.Enabled == true then
standingOnArena1Player1.PlayerGui.ScreenGui.Enabled = false
end
end
end
end
end)
while task.wait(0) do
if standingOnArena1Player2 ~= nil and standingOnArena1Player1 ~= nil then -- checks if both players are on top
standingOnArena1Player2.PlayerGui.ScreenGui.Enabled = true
standingOnArena1Player1.PlayerGui.ScreenGui.Enabled = true
end
end