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

Help with my spectator script?

Asked by 10 years ago

I have this spectator script that I made, but it is not very efficient, and I would like to improve it. How can I make it so instead of me subtracting numbers, it moves down the table as you click?

repeat wait() until game.Players.LocalPlayer.Character

local frame = script.Parent:WaitForChild('Frame')
local sub = frame:WaitForChild('Subtract')
local add = frame:WaitForChild('Add')
local name = frame:WaitForChild('Name')
local spectating = script.Parent:WaitForChild('SpectatingV')
local specButton = frame:WaitForChild('Spectating')
local fixSpecB = frame:WaitForChild('FixSpectate')
local db = false
local playerNO = 1
local players = game.Players:GetChildren()
if spectating.Value then
    specButton.Text = 'Spectating: Yes'
elseif not spectating.Value then
    specButton.Text = 'Spectating: No'
end


local addF = coroutine.wrap(function()
    add.MouseButton1Click:connect(function()
        if not db then
            db = true
            if playerNO < #players and #players > playerNO then
                playerNO = playerNO + 1
            elseif #players == playerNO then
                --playerNO = playerNO - 1
            else
                print('no')
            end
            if spectating.Value then
                game.workspace.CurrentCamera.CameraType = 'Custom'
                game.Workspace.CurrentCamera.CameraSubject = game.workspace:FindFirstChild(players[playerNO].Name):FindFirstChild('Humanoid')
                game.Players.LocalPlayer.CameraMode = Enum.CameraMode.Classic
            end
            db = false
        end
    end)
end)
local subF = coroutine.wrap(function()
    sub.MouseButton1Click:connect(function()
        if not db then
            db = true
            if playerNO < #players and #players > playerNO then
                playerNO = playerNO - 1
            elseif playerNO == #players then
                playerNO = playerNO - 1
            else
                print('no')
            end
            if spectating.Value then
                game.workspace.CurrentCamera.CameraType = 'Custom'
                game.workspace.CurrentCamera.CameraSubject = game.workspace:FindFirstChild(players[playerNO].Name):FindFirstChild('Humanoid')
                game.Players.LocalPlayer.CameraMode = Enum.CameraMode.Classic
            end
            db = false
        end
    end)
end)
local fixSpec = coroutine.wrap(function()
    fixSpecB.MouseButton1Click:connect(function()
        playerNO = 1
    end)
end)
local specB = coroutine.wrap(function()
    specButton.MouseButton1Click:connect(function()
        if spectating.Value then
            spectating.Value = false
            specButton.Text = 'Spectating: No'
            game.workspace.CurrentCamera.CameraType = 'Custom'
            game.workspace.CurrentCamera.CameraSubject = game.Players.LocalPlayer.Character.Humanoid
            game.Players.LocalPlayer.CameraMode = Enum.CameraMode.Classic
        elseif not spectating.Value then
            spectating.Value = true
            specButton.Text = 'Spectating: Yes'
            game.workspace.CurrentCamera.CameraType = 'Custom'
            game.workspace.CurrentCamera.CameraSubject = game.workspace:FindFirstChild(players[playerNO].Name):FindFirstChild('Humanoid')
            game.Players.LocalPlayer.CameraMode = Enum.CameraMode.Classic
        end
    end)
end)
local doSpec = coroutine.wrap(function()
    while wait() do
        if spectating.Value then

        elseif not spectating.Value then

        end
    end
end)
local writeName = coroutine.wrap(function()
    while wait() do
        if playerNO == 0 then
            playerNO = playerNO + 1
        end
        players = game.Players:GetChildren()
    --  if players[playerNO].Name == game.Players.LocalPlayer.Character.Name then
        --  table.remove(players, playerNO)
        --end
        print(playerNO)
        name.Text = players[playerNO].Name
    end
end)
addF()
subF()
specB()
doSpec()
writeName()

Answer this question