Mission maker · chapter 05 of 06
Presentation / Music, traps, pulse, briefings and staging
What the mission looks and sounds like: shared music, gravity traps, pulse and emissions, physical briefings, face cams and synchronized scenes.
Mission music and overlays
If you want a soundtrack that stays in sync for everyone without writing a playback loop, register a director on the server and let each client opt into the follower.
// initServer.sqf
["operation", createHashMapFromArray [
["tracks", [["calm1", "Calm", "myCalmTrack", 120, 0.25]]],
["pools", [["calm", ["calm1"]]]]
]] call FF_cinematic_fnc_musicDirectorStart;
["operation", "select", ["calm", "quiet", 0]] call FF_cinematic_fnc_musicDirectorControl;
// initPlayerLocal.sqf
["operationPlayback", createHashMapFromArray [
["source", {["operation"] call FF_cinematic_fnc_musicDirectorState}]
]] call FF_cinematic_fnc_musicStart;
For a one-off cue, play it yourself and claim the channel first with FF_cinematic_fnc_musicHold so the native
track yields instead of fighting you. For layered ambience that must stay in phase across clients, start
FF_cinematic_fnc_loopAudioStart from a shared server time and release it with
loopAudioFade / loopAudioStop.
Playback and overlays · Director.
Gravity traps
A prop that fires one expanding gravity wave when a player opens it or when it is destroyed.
// initServer.sqf
[_crate, createHashMapFromArray [
["radius", 50], ["duration", 1]
]] call FF_horror_fnc_gravityTrapRegister;
The default hit effect faults both firearms of every player the wave reaches and plays the local hit sound. Supply
onHit when you want a different consequence: it runs on the server once per reached player. The
FF: Horror > Gravity pulse trap Zeus module arms the object under the cursor through the same registration.
Pulse sequences and emissions
A pulse is a server-owned front on a shared clock, optionally followed by a shared blackout and recovery. Use
pulseFrontStart for the wave alone, pulseBarrierStart for a blackout, or
pulseSequenceStart for both:
// initServer.sqf
["finale", _origin, serverTime + 5, 900, 90, allPlayers,
createHashMapFromArray [
["visual", true],
["onContact", { params ["_id", "_unit"]; /* server consequence */ }],
["cue", createHashMapFromArray [
["sound", "a3\missions_f_oldman\data\sound\alarm.ogg"],
["cueSeconds", 20], ["timeout", 30]
]]
]] call FF_cinematic_fnc_pulseSequenceStart;
The optional recovery is local and opt-in. Horror supplies a themed profile:
[true, true] call FF_horror_fnc_pulseRecoveryOptions adds filter drain, bounded injuries, aftermath grading
and a PASS wake alarm. The FF: Horror > Massive emission Zeus module starts the same system with weapon faults
and vehicle aftermath included.
Details: Pulse sequences, Flying spheres and emissions.
Briefing screens and scene staging
Presentation services for the opening of a mission. All of them are opt-in and clean themselves up.
Briefing screen
["briefing", _screen, [
["Situation", "Text...", "text"],
["Team", "", "ready"]
], createHashMapFromArray [
["title", "Operation briefing"]
]] call FF_cinematic_fnc_briefingRegister;
Synchronized slides plus a live readiness roster; late joiners see the current slide.
Face cameras
private _plan = [_cast, _marks, _blocks]
call FF_cinematic_fnc_facecamPlan;
[_plan, serverTime]
call FF_cinematic_fnc_facecamStart;
Weighted appearances per scene block, with timed restoration of body and seat.
Image cards
[[["images\a.paa", 4, 1, 1],
["images\b.paa", 3, 1, 1]], {}, true]
call FF_cinematic_fnc_splashStart;
Full-screen cards with per-card hold and fades; can hold the music director.
Drive a vehicle into a scene
[_truck, [400, 200, 0], "Arrive"]
call FF_cinematic_fnc_driveScene;
Orders the vehicle's AI crew to a destination without touching player control.
Synchronized scene
// every participating machine, then the server
["intro", 30, [[5, {hint "Five seconds"}]], {}, {}]
call FF_cinematic_fnc_sceneRegister;
["intro", serverTime + 3, []]
call FF_cinematic_fnc_sceneBroadcast;
One shared clock for cues, staging and cleanup. Late joiners need a new broadcast.