Now this may be a little tricky to explain. I've been creating a camera controlling script to my trusted friends with admin powers that shows them a camera gui and they can monitor the place to check if everything is right.

So far, the script works in studio mode (solo), with the camera change and everything, but on online mode, only the effects and the gui show up. I've already tried to WaitForChild the LocalPlayer property of my localscript. Curiously, my annimation-cancelling script also fails.

Here is the most important part of my script:

repeat wait() until game.Players.LocalPlayer

function wfc(child, parent)	return parent:WaitForChild(child) end
function ffc(child, parent) return parent:FindFirstChild(child) end

*snip snap*

local plr = game.Players.LocalPlayer

local currentCamera = nil
local lastCamera = ffc("Corridor1", cameraToggles)
local db = false
local monitorOn = false

function changeCamera(node)
	if monitorOn then
		if ffc(node.Name, cameraStore) then
			local cam = ffc(node.Name, cameraStore)
			
			videoloss:TweenPosition(UDim2.new(0,0,1,0), 0, 0, .2, false, delay(.2, function() videoloss.Position = UDim2.new(0,0,-1,0) end))
			lastCamera = node
			
			curCam.CameraType = "Scriptable"
			curCam.CoordinateFrame = cam.CoordinateFrame
			curCam.Focus = cam.Focus
			curCam.FieldOfView = cam.FieldOfView
			
			currentCamera = node.Name
		end
	end
end

function resetCamera()
	if currentCamera ~= nil then
		
		curCam.CameraType = "Custom"
		curCam.FieldOfView = 70
		curCam.CameraSubject = ffc("Humanoid", plr.Character)
		
		currentCamera = nil
	end
end

function monitorCamera()
	if monitorOn == false and db == false then
		
		db = true
		
		monitorOn = true
		monitor.Visible = true
		changeCamera(lastCamera)
		
		videoloss:TweenPosition(UDim2.new(0,0,1,0), 0, 0, .2, false, delay(.2, function() videoloss.Position = UDim2.new(0,0,-1,0) end))
		
		print('on')
		wait(.3)
		db = false
		
	elseif monitorOn == true and db == false then
		db = true
		resetCamera()
		monitorOn = false
		monitor.Visible = false
		currentCamera = nil
		
		print('off')
		wait(.3)
		db = false
		
	end
end

function hookCameras()
	for _, c in pairs(cameraToggles:GetChildren()) do
		if c:IsA("TextButton") then
			c.MouseButton1Click:connect(
				function()
					changeCamera(c)
				end
			)
		end
	end
end

function init()
	hookCameras()
end

wait(2)
cameraBut.MouseEnter:connect(monitorCamera)
init()

All of the variables are accordingly declared and no errors pop up in the output or Log window.