CameraType Scriptable not working with screenshake

so when i set the camera type to Scriptable, my screenshake doesnt work and I’m not sure why. Also, during cutscenes i can only see other players, not myself. My Code:

local cam = workspace.CurrentCamera
local player = game.Players.LocalPlayer

wait(1)
player.CameraMode = Enum.CameraMode.LockFirstPerson
game.StarterPlayer.EnableMouseLockOption = false
game.StarterGui:SetCore("ResetButtonCallback",false)
 game:GetService('ReplicatedStorage').Cutscenes.OnClientEvent:Connect(function(cutscenetype)
    if cutscenetype == 'phone' then
        player.CameraMode = Enum.CameraMode.Classic
        game.ReplicatedStorage.CamDistance:FireServer()
        for i = 1, 10000 do
            cam.CameraType = Enum.CameraType.Scriptable
        cam.CFrame = workspace.PhoneScene.CFrame
        end
        
        
end
end)

my screenshake code:

    for i = 1, 60 do
        local x = math.random(-100,100)/100
        local y = math.random(-100,100)/100
        local z = math.random(-100,100)/100
        Humanoid.CameraOffset = Vector3.new(x,y,z)
    
        wait()
    end

I have a few questions about this code. Firstly, in your for loop, why do you define the camType as Scriptable inside the aforementioned loop? It’s a lot more efficient to do it outside, as you’ll only run it once, compared to 10,000 times. This also applies to the cam CFrame line.

Next, why are you doing the cameraShake in a separate script? Unless it’s a module, I see no reason as to why you can’t just do it within the code.

Thirdly, why are you setting the camera to class if 2 lines later you’re changing it again? RemoteEvents don’t yield the thread, only RemoteFunctions do.

Add me on discord if you have it, ThatOneDev#1534