I was trying to make it so that I made a functioning sword fighting game.
I wanted to:
Create an intermission
Teleport all players to the map
Give them swords
But then when I was making it so that there was a time limit, and someone could win, and all of the circomstances that could’ve happened. So what happened was that I was testing my game, but then when all of the players teleported to the map and they all got there swords, it would immeditly announce the player who is at the top of the leaderboard the winner.
Example:
Player 2 is at the top of the leaderboard, while player 1 is at the bottom, (or not at the top) the game would start but then immeditly as the game started, it would announce player 2 as the winner.
I have tried checking the script for capitals, mispelling and everything but it dosent budge.
I will show you screenshots of what I have in game to make it more easier.
Note: There are more scripts, but they are irrelevent to the error
This is the main script, the most important things.
-- Define Variables
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")
local MapsFolder = ServerStorage:WaitForChild("Maps")
local Status = ReplicatedStorage:WaitForChild("Status")
local GameLength = 50
local reward = 25
Game loop (Hidden in script)
while true do
Status.Value = "Waiting for enough players"
repeat wait(1) until game.Players.NumPlayers >= 2
Status.Value = "Intermission"
wait(10)
local plrs = {}
for i, player in pairs(game.Players:GetPlayers()) do
if player then
table.insert(plrs,player) -- Add each player into plrs table
end
end
wait(2)
local AvailableMaps = MapsFolder:GetChildren()
local ChosenMap = AvailableMaps[math.random(1,#AvailableMaps)]
Status.Value = ChosenMap.Name.." Chosen"
local ClonedMap = ChosenMap:Clone()
ClonedMap.Parent = workspace
--Teleport players to the map
local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")
if not SpawnPoints then
print("You do not have spawnpoints! Fix this now.")
end
local AvailbaleSpawnPoints = SpawnPoints:GetChildren()
for i, player in pairs(plrs) do
if player then
character = player.Character
if character then
--Teleport them
character:FindFirstChild("HumanoidRootPart").CFrame = AvailbaleSpawnPoints[1].CFrame
table.remove(AvailbaleSpawnPoints,1)
Give them a sword (hidden in script)
local ClassicSword = ServerStorage.ClassicSword:Clone()
ClassicSword.Parent = player.Backpack
local GameTag = Instance.new("BoolValue")
GameTag.Name = "Gametag"
GameTag.Parent = player.Character
else
There is no character (Hidden in script)
if not player then
table.remove(plrs,i)
end
end
end
end
Status.Value = "Get ready to play!"
wait(2)
for i = GameLength,0,-1 do
for x,player in pairs(plrs) do
if player then
character = player.Character
if not character then
Left the game (Hidden in script)
else
if character:FindFirstChild("GameTag") then
They are still alive (Hidden in script)
print(player.Name.." is still in the game!")
else
They are dead (Hidden in script)
table.remove(plrs,x)
print(player.Name.." has been removed!")
end
end
else
table.remove(plrs,x)
print(player.Name.." has been removed!")
end
end
Status.Value = "There are "..i.." seconds remaining, and "..#plrs.." players left"
if #plrs == 1 then
-- Last person standing
Status.Value = "The winner is "..plrs[1].Name
plrs[1].leaderstats.Bucks.Value = plrs[1].leaderstats.Bucks.Value + reward
break
elseif #plrs == 0 then
Status.Value = "Nobody won!"
break
elseif i == 0 then
Status.Value = "Time up!"
break
end
wait(1)
end
print("End of game")
for i, player in pairs(game.Players:GetPlayers()) do
character = player.Character
if not character then
Ignore them (Hidden in script)
else
if character:FindFirstChild("GameTag") then
character.GameTag:Destroy()
end
if player.Backpack:FindFirstChild("Sword") then
player.Backpack.Sword:Destroy()
end
if character:FindFirstChild("Sword") then
character.Sword:Destroy()
end
end
player:LoadCharacter()
end
ClonedMap:Destroy()
Status.Value = "Game Ended"
wait(2)
end