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

how do you make a highlight for the tagger in bomb tag? and make it change when your tagged?

Asked by 11 months ago

im not sure how to do this, and im not sure where to add it. help?

local dss = game:GetService("DataStoreService")
local ds = dss:GetDataStore("DATA STORES")
local taggerh = game.ReplicatedStorage.BombTagReplicatedStorage.Highlights.TaggerH

function saveData(plr)

    if not plr:FindFirstChild("FAILED TO LOAD DATA") then
        local cash = plr.leaderstats.Cash.Value

        local success, err = nil, nil
        while not success do
            success, err = pcall(function()
                return ds:SetAsync(plr.UserId, cash)
            end)
            warn(err)
            task.wait(0.1)
        end
    end
end

game.Players.PlayerRemoving:Connect(saveData)
game:BindToClose(function()
    for i, plr in pairs(game.Players:GetPlayers()) do
        saveData(plr)
    end
end)


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

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

    local cashValue = Instance.new("IntValue")
    cashValue.Name = "Cash"
    cashValue.Parent = ls


    local success, data = pcall(function()
        return ds:GetAsync(plr.UserId)
    end)

    if success then
        cashValue.Value = data or 0

    else
        local failedValue = Instance.new("StringValue")
        failedValue.Name = "FAILED TO LOAD DATA"
        task.wait(1)
        failedValue.Parent = plr
    end
end)



local rs = game.ReplicatedStorage:WaitForChild("BombTagReplicatedStorage")
local config = require(rs:WaitForChild("CONFIGURATION"))
local maps = rs:WaitForChild("Maps")


local status = Instance.new("StringValue")
status.Name = "STATUS"
status.Parent = rs

local currentTagged = Instance.new("ObjectValue")
currentTagged.Name = "CURRENT TAGGED PLAYER"
currentTagged.Parent = rs

local explodeTimer = Instance.new("IntValue")
explodeTimer.Name = "EXPLODE TIMER"
explodeTimer.Parent = rs


function getPlayers(playerList)

    local playerList = playerList or game.Players:GetPlayers()
    local playersInGame = {}

    for i, plr in pairs(playerList) do
        local char = plr.Parent == game.Players and plr.Character or plr
        if char and char:FindFirstChild("Humanoid") and char.Humanoid.Health > 0 then
            table.insert(playersInGame, char)
        end
    end
    return playersInGame
end


while true do

    local playersInGame = {}

    while #playersInGame < config.MinimumPlayersNeeded do
        playersInGame = getPlayers()

        if #playersInGame < config.MinimumPlayersNeeded then
            local neededPlayers = config.MinimumPlayersNeeded - #playersInGame

            status.Value = "Waiting for " .. neededPlayers .. " more player" .. (neededPlayers ~= 1 and "s" or "")

            task.wait(1)
        end
    end

    for i = config.IntermissionTime, 0, -1 do
        status.Value = "Choosing map in " .. i .. " seconds"
        task.wait(1)
    end

    local chosenMap = maps:GetChildren()[Random.new():NextInteger(1, #maps:GetChildren())]:Clone()
    chosenMap.Parent = workspace

    status.Value = "Now entering " .. chosenMap.Name

    task.wait(config.MapWaitTime)


    playersInGame = getPlayers()

    if #playersInGame < config.MinimumPlayersNeeded then
        break
    else

        local tagDebounce = false
        for i, char in pairs(playersInGame) do

            char.Humanoid.WalkSpeed = config.SurvivorSpeed
            char.HumanoidRootPart.CFrame = chosenMap.SPAWN.CFrame

            char.Humanoid.Touched:Connect(function(hit)
                if not tagDebounce and currentTagged.Value then

                    local hitChar = hit.Parent
                    if game.Players:GetPlayerFromCharacter(hitChar) then

                        if char == currentTagged.Value then
                            tagDebounce = true

                            char.Humanoid.WalkSpeed = config.SurvivorSpeed
                            hitChar.Humanoid.WalkSpeed = config.TaggedSpeed

                            currentTagged.Value = hitChar

                            task.wait(config.TagCooldown)
                            tagDebounce = false

                        elseif hitChar == currentTagged.Value then
                            tagDebounce = true

                            hitChar.Humanoid.WalkSpeed = config.SurvivorSpeed
                            char.Humanoid.WalkSpeed = config.TaggedSpeed

                            currentTagged.Value = char

                            task.wait(config.TagCooldown)
                            tagDebounce = false
                        end
                    end
                end
            end)
        end

        local iterations = 0
        while true do
            iterations += 1

            playersInGame = getPlayers(playersInGame)

            if #playersInGame > 1 then
                local randomChar = playersInGame[Random.new():NextInteger(1, #playersInGame)]
                randomChar.Humanoid.WalkSpeed = config.TaggedSpeed

                if iterations == 1 then
                    randomChar.HumanoidRootPart.Anchored = true



                    for i = config.PreparationTime, 0, -1 do
                        status.Value = randomChar.Name .. " is tagged. You have " .. i .. "s to run."
                        task.wait(1)
                    end
                    currentTagged.Value = randomChar
                    status.Value = randomChar.Name .. " is tagged"
                    randomChar.HumanoidRootPart.Anchored = false

                else
                    currentTagged.Value = randomChar
                    status.Value = randomChar.Name .. " is tagged"
                end

                local explodesIn = config.BombExplodeTimes[#playersInGame]
                explodeTimer.Value = explodesIn

                local bombTimerStarted = tick()
                while tick() - bombTimerStarted < explodesIn do

                    game:GetService("RunService").Heartbeat:Wait()
                    explodeTimer.Value = explodesIn - math.round(tick() - bombTimerStarted)

                    if not currentTagged.Value or #getPlayers(playersInGame) < 2 then
                        break
                    end
                end

                if currentTagged.Value and #getPlayers(playersInGame) >= 2 then
                    local explosion = Instance.new("Explosion")
                    explosion.DestroyJointRadiusPercent = 0
                    explosion.Position = currentTagged.Value.HumanoidRootPart.Position
                    explosion.Parent = workspace

                    currentTagged.Value.Humanoid.Health = 0
                    currentTagged.Value = nil
                end
            else
                break
            end
        end

        local winner = game.Players:GetPlayerFromCharacter(playersInGame[1])
        if winner then
            winner.leaderstats.Cash.Value += config.SurviveReward
            status.Value = winner.Name .. " wins!"
        end

        chosenMap:Destroy()
        for i, plr in pairs(game.Players:GetPlayers()) do
            plr:LoadCharacter()
        end

        task.wait(config.RoundEndTime)
    end
end
0
sorry its so long lol hudstir 0 — 11mo
0
:( hudstir 0 — 11mo

Answer this question