SHARE
TWEET

Nap Cam

Pwner-Actual Mar 2nd, 2019 (edited) 97 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // =======================================================================================
  2. // =======================================  SETUP  =======================================
  3. // =======================================================================================
  4. // INSTRUCTIONS
  5. // =======================================================================================
  6. /*
  7.     USAGE   :   Run on BOTH Server and Clients.
  8.     PURPOSE :   Create a 180 degree camera sequence while time skips ahead.
  9.    
  10.     EXAMPLE :   nul = [2, 12, [worldSize/2,worldSize/2,250], 200, [300,200]] execVM "UAF\napCam.sqf";
  11.     EXAMPLE :   nul = [4, 15, getPos player, 15, [10,5]] execVM "UAF\napCam.sqf";
  12.    
  13.     FORMAT  :   nul = [A,B,C,D,E,F] execVM "napCam.sqf";
  14.     A =         Number of hours to skip ahead.
  15.     B =         Minimum duration of camera movement.
  16.                 (The full scene duration is a bit longer due to screen fading and blackout).
  17.     C =         Camera target position on which to revovle around.
  18.     D =         Distance to camera target.
  19.     E =         1st element of altitude array (camera will begin at altitude E and move to altitude F).
  20.     F =         2nd element of altitude array.
  21. */
  22. // =======================================================================================
  23. // DEFINE & DECLARE VARIABLES
  24. // =======================================================================================
  25. //      VARS & VALUES THRU ARGUMENTS
  26. // =======================================================================================
  27. private _skip       = _this select 0;                               // number of hours to skip ahead
  28. private _sceneTimer = _this select 1;                               // camera movement duration
  29. private _tar        = _this select 2;                               // camera target
  30. private _dis        = _this select 3;                               // camera distance to target
  31. private _alt1       = (_this select 4) select 0;                    // start altitude
  32. private _alt2       = (_this select 4) select 1;                    // end altitude
  33. // =======================================================================================
  34. //      VARS & VALUES THRU SCRIPT
  35. // =======================================================================================
  36. private _vd             = viewDistance;                             // get current viewDistance to restore it later
  37. private _ovd            = getObjectViewDistance;                    // object viewDistance
  38. private _newVD          = 10000;                                    // viewDistance for scene
  39. private _fadeTime       = 1;                                        // cutText fade timer in seconds
  40. private _blackout       = 1;                                        // timer during blackout for time skipping
  41. private _fullTimer      = (_blackout+_sceneTimer)+_fadeTime*2;      // camera scene full movement time including blackout and fading
  42. private _transTimer     = _fullTimer/2;                             // camera transitions timer (before and after blackout)
  43. private _sleep          = (_sceneTimer)/2;
  44. private _serverWait1    = (_sleep)+(_fadeTime*2);                   // dedi server wait time to sync with clients before skipTime
  45. private _serverWait2    = (_sleep)+(_blackout)+(_fadeTime*2);       // dedi server wait time to sync with clients until script ends
  46. private ["_cam","_inc","_pos1","_pos2","_pos3"];
  47. // =======================================================================================
  48. // ====================================  SCRIPT  =========================================
  49. // =======================================================================================
  50. // CLIENTS & HOST ONLY
  51. // =======================================================================================
  52. if (hasInterface) then {
  53. // =======================================================================================
  54. //      FADE FROM PLAYER
  55. // =======================================================================================
  56. [player,"SitDown"] remoteExec ["playAction",[0,-2] select isDedicated]; // sit down
  57. cutText ["", "BLACK OUT", _fadeTime];                                   // fade to black
  58. sleep _fadeTime*2;                                                      // wait for fade complete
  59. // =======================================================================================
  60. //      CREATE CAMERA POSITIONS
  61. // =======================================================================================
  62. // altitude calcs
  63. if (_alt1 != _alt2) then {_inc = (_alt1 - _alt2) / 2;} else {_inc = 0;};
  64. // camera positions
  65. _pos1 = [(_tar select 0)+_dis*cos(90),(_tar select 1)+_dis*sin(90),(_alt1)];
  66. _pos2 = [(_tar select 0)+_dis*cos(0),(_tar select 1)+_dis*sin(0),+(_alt1-_inc)];
  67. _pos3 = [(_tar select 0)+_dis*cos(-90),(_tar select 1)+_dis*sin(-90),+(_alt2)];
  68. // create camera 1 position
  69. _cam = "camera" camCreate _pos1;
  70. _cam cameraEffect ["internal", "BACK"];
  71. _cam camSetDir (_pos1 vectorFromTo _tar);                               // camera heading
  72. _cam camCommit 0;                                                       // instant transition
  73. setViewDistance _newVD;                                                 // set viewDistance
  74. setObjectViewDistance [_newVD-_vd, 200];                                // set object viewDistance
  75. // =======================================================================================
  76. //      FADE TO CAMERA AND START MOVEMENT TO CAMERA 2
  77. // =======================================================================================
  78. _cam camSetPos _pos2;                                                   // tell camera to move to target
  79. _cam camSetDir (_pos2 vectorFromTo _tar);                               // make camera rotate to heading
  80. _cam camCommit _transTimer;                                             // transition time
  81. cutText ["", "BLACK IN", _fadeTime];                                    // fade back in
  82. sleep _sleep;
  83. // =======================================================================================
  84. //      FADE FROM CAMERA AND HINT TIME PASSED
  85. // =======================================================================================
  86. // fade away with text of hours passed
  87. if (_skip != 1) then {cutText [format ["%1   H O U R S   L A T E R   . . .", _skip],"BLACK OUT",_fadeTime];}
  88.                 else {cutText [format ["%1   H O U R    L A T E R   . . .", _skip],"BLACK OUT",_fadeTime];};
  89. // wait for fade complete
  90. sleep _fadeTime;
  91. };
  92. // =======================================================================================
  93. // SKIP TIME
  94. // =======================================================================================
  95. // =======================================================================================
  96. //      CLIENTS & HOST ONLY (skipTime is Server only - but clients will help transition sync better)
  97. // =======================================================================================
  98. if (hasInterface) then {skipTime _skip;};
  99. // =======================================================================================
  100. //      DEDICATED SERVER ONLY
  101. // =======================================================================================
  102. if (isDedicated) then {sleep _serverWait1; skipTime _skip;};
  103. // =======================================================================================
  104. // CLIENTS & HOST ONLY
  105. // =======================================================================================
  106. if (hasInterface) then {
  107. // =======================================================================================
  108. //      SYNC SERVER TIME WITH CLIENTS (blackout)
  109. // =======================================================================================
  110. sleep _blackout;
  111. // =======================================================================================
  112. //      FADE IN BACK TO CAMERA AND MOVE TO NEW HEADING CAMERA 3
  113. // =======================================================================================
  114. _cam camSetPos _pos3;                                                   // tell camera to move to target
  115. _cam camSetDir (_pos3 vectorFromTo _tar);                               // make camera rotate to heading
  116. _cam camCommit _transTimer;                                             // transition time
  117. // fade in with text of hours passed
  118. if (_skip != 1) then {cutText [format ["%1   H O U R S   L A T E R   . . .", _skip],"BLACK IN",_fadeTime];}
  119.                 else {cutText [format ["%1   H O U R    L A T E R   . . .", _skip],"BLACK IN",_fadeTime];};
  120. sleep _sleep;
  121. // =======================================================================================
  122. //      FADE BACK TO PLAYER
  123. // =======================================================================================
  124. cutText ["", "BLACK OUT", _fadeTime];                                       // fade away
  125. sleep (_fadeTime*2);                                                        // wait++ for fade complete and avoid seeing camera stopped
  126. _cam cameraEffect ["terminate", "back"];                                    // delete camera effect
  127. camDestroy _cam;                                                            // destroy camera
  128. setViewDistance _vd;                                                        // reset viewDistance
  129. setObjectViewDistance [_ovd select 0,_ovd select 1];                        // reset object viewDistance
  130. cutText ["", "BLACK IN", _fadeTime];                                        // fade in
  131. [player,"Stand"] remoteExec ["playAction",[0,-2] select isDedicated];       // player gets up
  132. };
  133. // =======================================================================================
  134. // DEDICATED SERVER ONLY (end script at same time for ScriptDone usage)
  135. // =======================================================================================
  136. if (isDedicated) then {sleep _serverWait2;};
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top