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

I'm making a spectate option for my game, I need it to return the camera to a part?

Asked by 4 years ago

So, this is what I'm trying to make. I'm making a option where you click on the player to spectate them. It works fine, but my game uses camera manipulation, so the camera is fixed to the part until they choose their team. When you stop spectating a player it returns your camera to the normal camera. I need it to return the camera back to the part that I am using. I'm sorry the script is soo long, I've tried modifying parts of it, but I couldn't find what I need to change. Any help will be appreciated, thanks!

wait()
while not script.GUI.Value do wait() end
gui = script.GUI.Value
playergui = gui.Parent
player = playergui.Parent
while not player:FindFirstChild("Backpack") do wait() end
backpack = player.Backpack

while not player.Character do wait() end wait()

window = gui.Window
frame = window.Frame

function stopWatching()
    local cam = workspace.CurrentCamera
    cam.CameraSubject = player.Character.Humanoid
    cam.CameraType = "Custom"
    watching = nil
end

function watch(plr)
    window.Visible = false
    if not plr.Character then return end
    local human = plr.Character.Humanoid
    if not human then return end
    local cam = workspace.CurrentCamera
    cam.CameraSubject = human
    cam.CameraType = "Custom"
    human.Died:connect(function ()
        if watching == plr then wait(3) stopWatching() end
    end)
    watching = plr
end

player.Character.Humanoid.Died:connect(function () stopWatching() watch = function () end end)
gui.Changed:connect(function (p)
    if p == "Parent" and not gui.Parent then
        stopWatching()
    end
end)

function update()
    if not window.Visible then return end
    frame:ClearAllChildren()
    local fw = window.Frame.AbsoluteSize.X - 10
    local fh = window.Frame.AbsoluteSize.Y - 10
    local bw = 100
    local bh = 100
    local cols = math.floor(fw / (bw + 10))
    local rows = math.floor(fh / (bh + 10))

    local players = game.Players:GetChildren()
    for k, v in pairs(players) do if v == player then table.remove(players, k) end end
    local n = 0
    local col = 0
    local row = 0
    for i = 1, #players do
        local plr = players[i]
        local b = Instance.new("ImageButton", frame)
        b.Image = "http://www.roblox.com/Thumbs/Avatar.ashx?username=" .. plr.Name
        b.Size = UDim2.new(0, bw, 0, bh)
        b.Position = UDim2.new(0, 5 + col * (bh + 10), 0, 5 + row * (bw + 10))
        b.AutoButtonColor = true
        b.BackgroundColor3 = Color3.new(0, 0, 0)
        local l = Instance.new("TextLabel", b)
        l.Position = UDim2.new(0.5, 0, 0.5, 0)
        l.Text = plr.Name
        l.Font = "ArialBold"
        l.FontSize = "Size14"
        l.TextColor3 = Color3.new(1, 1, 1)
        if plr.Character:FindFirstChild("Survival") then
            l.TextColor3 = Color3.new(1, .8, .8)
        end
        l.TextStrokeColor3 = Color3.new(0, 0, 0)
        l.TextStrokeTransparency = 0
        b.BorderColor3 = Color3.new(1, 1, 1)
        b.MouseButton1Down:connect(function ()
            watch(plr)
        end)
        col = col + 1
        if col > cols then col = 0; row = row + 1 end
        wait()
    end
end

window.Visible = false

gui.TextButtonMain.MouseButton1Down:connect(function ()
    if watching then
        stopWatching()
    else
        window.Visible = not window.Visible
        update()
    end
end)

0
I am so so sorry, this is so long. I just need all the help I can get. Mrmonkeyman120 65 — 4y

Answer this question