Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 3:48 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 = 60
- local reward = 25
- -- Game loop
- while true do
- Status.Value = "Waiting for enough players"
- repeat wait() until game.Players.NumPlayers >= 2
- Status.Value = "Intermission"
- wait(5)
- 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("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 = "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
- 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.." seocnds 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")
- wait(2)
- 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 SCRIPT FOR STATS:
- local dataStores = game:GetService("DataStoreService"):GetDataStore("BucksDataStore")
- local defaultCash = 10
- local playersLeft = 0
- game.Players.PlayerAdded:Connect(function(player)
- playersLeft = playersLeft + 1
- local leaderstats = Instance.new("Folder")
- leaderstats.Name = "leaderstats"
- leaderstats.Parent = player
- local bucks = Instance.new("IntValue")
- bucks.Name = "Bucks"
- bucks.Value = 0
- bucks.Parent = leaderstats
- local playerData = Instance.new("Folder")
- playerData.Name = player.Name
- playerData.Parent = game.ServerStorage.PlayerData
- local equipped = Instance.new("StringValue")
- equipped.Name = "Equipped"
- equipped.Parent = playerData
- local inventory = Instance.new("Folder")
- inventory.Name = "Inventory"
- inventory.Parent = playerData
- player.CharacterAdded:Connect(function(character)
- character.Humanoid.Died:Connect(function()
- -- Whenever somebody dies, this event will run
- if character.Humanoid and character.Humanoid:FindFirstChild("creator") then
- game.ReplicatedStorage.Status.Value = tostring(character.Humanoid.creator.Value).." KILLED "..player.Name
- end
- if character:FindFirstChild("GameTag") then
- character.GameTag:Destroy()
- end
- player:LoadCharacter()
- end)
- end)
- -- Data Stores
- local player_data
- pcall(function()
- player_data = dataStores:GetAsync(player.UserId.."-Bucks") --1736284-Bucks
- end)
- if player_data ~= nil then
- -- Player has saved data, load it in
- bucks.Value = player_data
- else
- -- New player
- bucks.Value = defaultCash
- end
- end)
- local bindableEvent = Instance.new("BindableEvent")
- game.Players.PlayerRemoving:Connect(function(player)
- pcall(function()
- dataStores:SetAsync(player.UserId.."-Bucks",player.leaderstats.Bucks.Value)
- print("Saved")
- playersLeft = playersLeft - 1
- bindableEvent:Fire()
- end)
- end)
- game:BindToClose(function()
- -- This will be triggered upon shutdown
- while playersLeft > 0 do
- bindableEvent.Event:Wait()
- end
- end)
- Good
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement