math.randomseed(tick())
local runService = game:GetService("RunService")
local char = script.Parent
local hum = char:WaitForChild("Humanoid")
local nextFire = 0
local shakeRate = 0
local shakeMin = 0
local shakeMax = 5000
local shakeMax1 = 0
runService.RenderStepped:Connect(function()
if elapsedTime() > nextFire then
nextFire = elapsedTime() + shakeRate
hum.CameraOffset = Vector3.new(math.random(shakeMin, shakeMax)/1000, math.random(shakeMin, shakeMax)/1000, math.random(shakeMin, shakeMax)/1000)
end
end)
Once it's used it stays in a different location rather then your normal camera view.

2 comments
maybe record the camera's cframe prior to shaking it, and restore it afterwards?
Yeah, might work.