Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

why not restarting and giving reward to players ? [closed]

Asked by 4 years ago

This question already has an answer here:

[Solved] why not restarting and giving reward to players ?

players are teleporting to map and everything is going well till the winner is declared once the winner id declared game ic not restarting an not even giving rewards here goes my local script....

local Status = game:GetService("ReplicatedStorage"):WaitForChild("Status")

script.Parent.Text = Status.Value

Status:GetPropertyChangedSignal("Value"):Connect(function()

script.Parent.Text = Status.Value

end)

here is the Stats script....

game.Players.PlayerAdded:Connect(function(player)

local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player

local Vcoins = Instance.new("IntValue")
Vcoins.Name = "V-coins"
Vcoins.Value = 0
Vcoins.Parent = leaderstats 


player.CharacterAdded:Connect(function(chatacter) 
    chatacter.Humanoid.Died:Connect(function() 
        --whenever nobody dies, this will run 

        if chatacter.Humanoid and chatacter.Humanoid:FindFirstChild("creator") then 
            game.ReplicatedStorage.Status.Value = tostring(chatacter.Humanoid.creator.Value).." KILLED "..player.Name 
        end 

        if chatacter:FindFirstChild("GameTag") then 
            chatacter.GameTag:Destroy() 
        end 

        player:LoadCharacter()
    end) 

end)

end)

and finally this is the MainScript....

-- 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 = 20

--Game loop

while true do

Status.Value = "Waiting for 2 (or more) Players to Join!"

repeat wait(1) until game.Players.NumPlayers >= 2

Status.Value = "Intermission (15 seconds)"

wait(15)

local plrs = {}

for i, player in pairs (game.Players:GetPlayers())do
    if player then
        table.insert(plrs,player)
    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("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
            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 = "Get ready for Battle!"

    wait(5)

    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
                table.remove(plrs,x)
            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 left, and "..#plrs.." players left."

        if #plrs == 1 then

        --Last person standing 
        Status.Value = "The winner is "..plrs[1].Name 
        plrs[1].leaderstats.Vcoins.Value = plrs[1].leaderstats.Vcoins.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("GAME ENDED") 

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

    if not character then 
        --Ignore them 
    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

Marked as Duplicate by JesseSong

This question has been asked before, and already has an answer. If those answers do not fully address your question, then please ask a new question here.

Why was this question closed?