Ad
Still have questions? Join our Discord server and get real time help.
Log in to vote
0

My sword fighting game doesnt start a new game after the first game is done Can you guys help ?

Asked by 4 months ago

I tried to make a game same as AlvinBlox's Sword Fight game and I couldn't loop my script After the match ended it would never start a new one It would be stuck as "Player 1 has won" Here is my script: local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local reward = 10

local GameLength = 120

-- Game Loop

while true do

Status.Value = "Waiting for more 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) -- Adding each player into plrs 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 map

local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")

if not SpawnPoints then print("Spawnpoints not found") end

local AvailableSpawnPoints = SpawnPoints:GetChildren()

for i, player in pairs(plrs) do if player then character = player.Character

    if  character then
        -- Teleport them

        character:FindFirstChild("HumanoidRootPart"). CFrame = AvailableSpawnPoints[1].CFrame + Vector3.new(0,10,0)
        table.remove(AvailableSpawnPoints,1)


        -- Give them a sword

        local Sword = ServerStorage.Sword:Clone()
        Sword.Parent = player.Backpack

        local GameTag = Instance.new("BoolValue")
        GameTag.Name = "GameTag"
        GameTag.Parent = player.Character

    else
        -- There is no character
        if not player then
            table.remove(plrs,i)
           end
       end  
   end

end

Status.Value = "Prepare to Fight!"

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 game
        else
            if character:FindFirstChild("GameTag") then
                -- They are still alive
                print(player.Name.." is still in the game!")
            else
                --they are dead
                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.Coins.Value = plrs[1].leaderstats.Coins.Value + reward
    break
elseif #plrs == 0 then
    Status.Value = "Nobody has won!"
    break
elseif i == 0 then
    Status.Value = "Times up!"
    break
end
wait(1)

end print("End of game") wait(2)

for i, player in pairs(game.Players:GetPlayers()) do character = player.Character

if not character then
    table.remove(plrs,x)
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:Destory()

Status.Value = "Game ended" wait(2) end

0
Use proper code blocking; You're more likely to receive help this way. SteelMettle1 268 — 4mo
0
Yes please organize your code and I will help. I made the same sword game and it works for me. haba_nero 311 — 4mo

Answer this question