SHARE
TWEET

Poster Scene

Pwner-Actual Mar 6th, 2019 (edited) 83 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 90 deg. camera rotation and animation pose for players, plus an animation for indicated units.
  9.    
  10.     EXAMPLE :   nul = [[unit_1,unit_2,unit_3], 10, 5, 2.5, 0.75, ""] execVM "UAF\posterScene.sqf";  // players and these units
  11.     EXAMPLE :   nul = [[], 12, 6, 4, 0.25, "Base Camp"] execVM "UAF\posterScene.sqf";               // only players
  12.     EXAMPLE :   nul = [units Bravo, 8, 12, 5, 0.1, "REAPER SQUAD"] execVM "UAF\posterScene.sqf";    // players and units of group Bravo
  13.    
  14.     FORMAT  :   nul = [[A],B,C,D,"E"] execVM "posterScene.sqf";
  15.     A =         Array of units that will play an animation pose (all players are already included).
  16.                 Players will have a camera effect revolving around them.
  17.     B =         Duration (in seconds) of the posing scene.
  18.     C =         Camera distance from player.
  19.     D =         Camera altitude.
  20.     E =         Camera zoom (0.01 = max zoom in / 0.75 = normal zoom / 8.5 = furthest away zoom)
  21.     F =         Short phrase in string format to show on screen ("" for empty/no phrase)
  22. */
  23. // =======================================================================================
  24. // DEFINE & DECLARE VARIABLES
  25. // =======================================================================================
  26. //      VARS & VALUES THRU ARGUMENTS
  27. // =======================================================================================
  28. private _humPlayers = allPlayers - entities "HeadlessClient_F";
  29. private _units      = (_this select 0) + _humPlayers;   // units that will play animations (players included)
  30. private _sceneTimer = _this select 1;                   // camera movement duration
  31. private _dis        = _this select 2;                   // camera distance from player
  32. private _alt        = _this select 3;                   // camera altitude
  33. private _zoom       = _this select 4;                   // camera FOV (zoom)
  34. private _text       = _this select 5;                   // short phrase
  35. // =======================================================================================
  36. //      VARS & VALUES THRU SCRIPT
  37. // =======================================================================================
  38. private _anims      =   [
  39.                         "Acts_AidlPercMstpSloWWrflDnon_warmup_6_loop",
  40.                         "Acts_AidlPercMstpSlowWrflDnon_warmup04",
  41.                         "Acts_AidlPercMstpSloWWrflDnon_warmup_3_loop",
  42.                         "Acts_GetAttention_Loop",
  43.                         "Acts_SupportTeam_Front_KneelLoop"
  44.                         ];
  45. private _allAnims   = _anims;
  46. private _fadeTime   = 1;                                // fade transition
  47. private ["_cam","_pos1","_pos2"];
  48. // =======================================================================================
  49. // ====================================  SCRIPT  =========================================
  50. // =======================================================================================
  51. // CLIENTS ONLY
  52. // =======================================================================================
  53. if (hasInterface) then {
  54. // =======================================================================================
  55. //      FADE FROM PLAYER
  56. // =======================================================================================
  57. cutText ["", "BLACK OUT", _fadeTime];                                   // fade to black
  58. sleep _fadeTime;                                                        // wait for fade complete
  59. };
  60. // =======================================================================================
  61. //  SERVER ONLY
  62. // =======================================================================================
  63. //      ANIMATIONS
  64. // =======================================================================================
  65. if  (isServer) then {
  66. if  (isDedicated) then {sleep _fadeTime;} else {};
  67.     _units = _units select {alive _x};
  68.     _units apply {
  69.         if (count _anims < 1) then {_anims = _allAnims;};               // replenish list if all anims used
  70.         _anim = selectRandom _anims;                                    // choose random anim
  71.         [_x,_anim] remoteExec ["switchMove", 0];                        // play anim
  72.         _anims = _anims - [_anim];                                      // remove from list to avoid duplicates
  73.         _x setFormDir 0;                                                // face same direction (needed for AI)
  74.         _x setDir 0;                                                    // face same direction                         
  75.         _x setPos (getPos _x);                                          // sync heading
  76.         };
  77. };
  78. // =======================================================================================
  79. // CLIENTS ONLY
  80. // =======================================================================================
  81. if (hasInterface) then {
  82. // =======================================================================================
  83. //      START CAMERA MOVE
  84. // =======================================================================================
  85. // =======================================================================================
  86. //      CREATE CAMERA
  87. // =======================================================================================
  88. // create camera positons
  89. _pos1 = [(getPos player select 0)+_dis*cos(135),(getPos player select 1)+_dis*sin(135),(_alt)];
  90. _pos2 = [(getPos player select 0)+_dis*cos(45),(getPos player select 1)+_dis*sin(45),(_alt)];
  91. // create camera at position 1
  92. _cam = "camera" camCreate _pos1;
  93. _cam cameraEffect ["internal", "BACK"];
  94. _cam camSetDir (_pos1 vectorFromTo (getPos player));                    // face the player
  95. _cam camSetFov _zoom;
  96. _cam camCommit 0;                                                       // instant transition
  97. sleep _fadeTime;                                                        // allow changes to apply
  98. _cam camSetDir (_pos2 vectorFromTo (getPos player));                    // face the player
  99. _cam camSetPos _pos2;                                                   // tell camera to move to 2nd position
  100. _cam camCommit _sceneTimer+_fadeTime;                                   // transition time + fade
  101. cutText ["", "BLACK IN", _fadeTime];                                    // fade back in
  102. // short typewritten text
  103. if (_text != "") then {[[format ["%1",_text]]] spawn BIS_fnc_typeText2;};
  104. sleep _sceneTimer;                                                      // wait transition timer
  105. // =======================================================================================
  106. //      FADE FORM CAMERA
  107. // =======================================================================================
  108. cutText ["", "BLACK OUT", _fadeTime];                                   // fade to black
  109. sleep _fadeTime;                                                        // wait for fade complete
  110. _cam cameraEffect ["terminate", "back"];                                // delete camera effect
  111. camDestroy _cam;                                                        // destroy camera
  112. };
  113. // =======================================================================================
  114. //  SERVER ONLY
  115. // =======================================================================================
  116. //      STOP ANIMATIONS
  117. // =======================================================================================
  118. if  (isServer) then {
  119.     if  (isDedicated) then {sleep ((_fadeTime*2) + (_sceneTimer));} else {};
  120.     _units apply {[_x,""] remoteExec ["switchMove", 0];};
  121. };
  122. // =======================================================================================
  123. // CLIENTS ONLY
  124. // =======================================================================================
  125. //      FADE TO PLAYER
  126. // =======================================================================================
  127. if  (hasInterface) then {
  128.     sleep _fadeTime*2;                                                  // wait++ for fade complete and avoid seeing animation stopped
  129.     cutText ["", "BLACK IN", _fadeTime];                                // fade in
  130. };
  131. // =======================================================================================
  132. // DEDICATED SERVER ONLY (end script at same time for ScriptDone usage)
  133. // =======================================================================================
  134. if (isDedicated) then {sleep _fadeTime*2;};
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