Of course! :smile:
For playing the horn, I had to teleport the player outside and wait until I had finished playing the horn to then teleport the player back inside the vehicle.

local coords = GetEntityCoords(PlayerPedId())
SetEntityCoords(PlayerPedId(), coords.x, coords.y, coords.z+2.0) --teleport the player up a bit
SetEntityVisible(PlayerPedId(), false) --make the ped invisible so it doesn't look weird
StartVehicleHorn(veh, 5000, GetHashKey("HELDDDOWN"), false) --play the horn for 5000 milliseconds (5 seconds)

As for the camera solution:
To create and activate the new camera view:

local cam = CreateCam('DEFAULT_SCRIPTED_CAMERA', true, 2)
local gameplayCam = GetRenderingCam()
local camCoords = GetCamCoord(cam)
local coords = GetEntityCoords(veh)
PointCamAtCoord(cam, coords.x, coords.y, coords.z)
SetCamActive(cam, true)
RenderScriptCams(1, 0, cam, 0, 0)

To return back to normal camera view:

SetCamCoord(cam, GetGameplayCamCoords())
SetCamRot(cam, GetGameplayCamRot(2),  2)
RenderScriptCams(1, 1, 0, 0, 0)
RenderScriptCams(0, 1, 1000, 0, 0)
SetCamActive(gameplayCam, true)
EnableGameplayCam(true)
SetCamActive(cam, false)
DestroyCam(cam)