Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.95 KB | None | 0 0
  1. {
  2. private _fnc_scriptNameParent = if (isNil '_fnc_scriptName') then {'life_fnc_bleedOut'} else {_fnc_scriptName};
  3. private _fnc_scriptName = 'life_fnc_bleedOut';
  4. scriptName _fnc_scriptName;
  5.  
  6. #line 1 "core\functions\fn_bleedOut.sqf [life_fnc_bleedOut]"
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14. params [
  15. ['_mode',-1,[0]]
  16. ];
  17. private _return = false;
  18. switch (_mode) do {
  19. case -1: {
  20. private _ppHandle = uiNamespace getVariable ['bleedOutPPHandle',-1];
  21. _ppHandle ppEffectAdjust [0];
  22. _ppHandle ppEffectCommit 1;
  23. player setVariable ['bleedingOut',false,true];
  24. "bleedOut" cutText ["", "PLAIN"];
  25. player setUnconscious false;
  26. uiSleep 1;
  27. ppEffectDestroy _ppHandle;
  28. if (animationState player isEqualTo "unconsciousrevivedefault") then {
  29. player switchMove "amovppnemstpsnonwnondnon";
  30. };
  31. };
  32. case 0: {
  33. private _bleedTime = 300;
  34. "bleedOut" cutText ["", "PLAIN"];
  35. player setVariable ['bleedingOut',true,true];
  36. player setVariable ['bleedingTimeout',time + 5];
  37. private _reason = player getVariable ['bleedOutReason','Accident'];
  38. "bleedOut" cutRsc ["RscTitleDisplayEmpty", "PLAIN", 1];
  39. private _display = uiNamespace getVariable ["RscTitleDisplayEmpty",displayNull];
  40. private _blurEffect = ppEffectCreate ["DynamicBlur",666];
  41. _blurEffect ppEffectAdjust [5];
  42. _blurEffect ppEffectForceInNVG true;
  43. _blurEffect ppEffectEnable true;
  44. _blurEffect ppEffectCommit 1;
  45. uiNamespace setVariable ['bleedOutPPHandle',_blurEffect];
  46. private _handlerID = (findDisplay 46) displayAddEventHandler ['KeyDown',"
  47. params ['','_code','_shift','_ctrl','_alt'];
  48. if !(player getVariable ['bleedingOut',false]) exitWith {};
  49. private _display = uiNamespace getVariable ['RscTitleDisplayEmpty',displayNull];
  50. private _respawn = _display getVariable ['respawn',controlNull];
  51. private _handled = switch (true) do {
  52. case (_ctrl AND (_code isEqualTo 0x13)): {
  53. if (_respawn getVariable ['delay',false]) exitWith {};
  54. player setDamage 1;
  55. false
  56. };
  57. case (_code in (actionKeys 'personView')): {false};
  58. case (_code in (actionKeys 'prevChannel')): {false};
  59. case (_code in (actionKeys 'nextChannel')): {false};
  60. case (_alt): {false};
  61. case (_code isEqualTo 0x3A): {false};
  62. default {true};
  63. };
  64. _handled
  65. "];
  66. player setUnconscious true;
  67. private _background = _display ctrlCreate ['RscText',-1];
  68. _background ctrlSetPosition [0 * safezoneW + safezoneX, 0.85 * safezoneH + safezoneY, 1 * safezoneW, 0.1 * safezoneH];
  69. _background ctrlSetBackgroundColor [0.03,0.03,0.03,0.75];
  70. _background ctrlCommit 0;
  71. private _title = _display ctrlCreate ['RscStructuredText',-1];
  72. _title ctrlSetPosition [0 * safezoneW + safezoneX, 0.855 * safezoneH + safezoneY, 1 * safezoneW, 0.045 * safezoneH];
  73. _title ctrlSetStructuredText (parseText format["<t align='center'>%1</t>",_reason]);
  74. _title ctrlCommit 0;
  75. private _progressBG = _display ctrlCreate ['RscText',-1];
  76. _progressBG ctrlSetPosition [0.30 * safezoneW + safezoneX, 0.90 * safezoneH + safezoneY, 0.40 * safezoneW, 0.025 * safezoneH];
  77. _progressBG ctrlSetBackgroundColor [0,0,0,1];
  78. _progressBG ctrlCommit 0;
  79. private _progress = _display ctrlCreate ['RscProgress',-1];
  80. _progress ctrlSetPosition [0.30 * safezoneW + safezoneX, 0.90 * safezoneH + safezoneY, 0.40 * safezoneW, 0.025 * safezoneH];
  81. _progress ctrlSetTextColor [0.75,0,0,1];
  82. _progress progressSetPosition 1;
  83. _progress ctrlCommit 0;
  84. private _progressText = _display ctrlCreate ['RscStructuredText',-1];
  85. _progressText ctrlSetPosition [0.30 * safezoneW + safezoneX, 0.90 * safezoneH + safezoneY, 0.40 * safezoneW, 0.025 * safezoneH];
  86. _progressText ctrlSetStructuredText (parseText format["<t align='center'>Bleeding out...</t>"]);
  87. _progressText ctrlCommit 0;
  88. private _medicText = _display ctrlCreate ['RscStructuredText',-1];
  89. _medicText ctrlSetPosition [0 * safezoneW + safezoneX, 0.925 * safezoneH + safezoneY, 1 * safezoneW, 0.025 * safezoneH];
  90. _medicText ctrlSetStructuredText parseText "<t align='right'>No medics found</t>";
  91. _medicText ctrlCommit 0;
  92. private _respawn = _display ctrlCreate ['RscStructuredText',-1];
  93. _respawn ctrlSetPosition [0.30 * safezoneW + safezoneX, 0.925 * safezoneH + safezoneY, 0.40 * safezoneW, 0.025 * safezoneH];
  94. _respawn ctrlSetBackgroundColor [0,0,0,0.5];
  95. _respawn ctrlSetFade 1;
  96. _respawn setVariable ['delay',true];
  97. _respawn ctrlSetStructuredText (parseText "<t align='center'>Ctrl + R to Respawn</t>");
  98. _respawn ctrlCommit 0;
  99.  
  100. _display setVariable ['progress',_progress];
  101. _display setVariable ['respawn',_respawn];
  102. _display setVariable ['medicText',_medicText];
  103. [_display,_handlerID,_bleedTime] spawn {
  104. disableSerialization;
  105. params ['_display','_handlerID','_bleedTime'];
  106. private _respawnTime = _bleedTime /2;
  107. private _progress = _display getVariable ['progress',controlNull];
  108. private _respawn = _display getVariable ['respawn',controlNull];
  109. private _medicText = _display getVariable ['medicText',controlNull];
  110. private _progressRatio = 1/_bleedTime * 0.05;
  111. private _progressCurrent = 1;
  112.  
  113. while {true} do {
  114. private _medics = allPlayers select {side _x isEqualTo independent};
  115. private _distances = _medics apply {round (player distance _x)};
  116. private _closest = _medics select (_distances find (selectMin _distances));
  117. if (isNil "_closest") then {
  118. _medicText ctrlSetStructuredText parseText "<t align='right'>No medics found</t>";
  119. } else {
  120. _medicText ctrlSetStructuredText parseText format["<t align='right'>Closest Medic: %1m</t>",round(player distance _closest)];
  121. };
  122. if (!alive player) exitWith {};
  123. if (isNull _display) exitWith {};
  124. if (_bleedTime < 1) exitWith {player setDamage 1};
  125. if (_bleedTime <= _respawnTime) then {_respawn ctrlSetFade 0; _respawn ctrlCommit 0; _respawn setVariable ['delay',false]};
  126. _bleedTime = _bleedTime - 0.05;
  127. _progressCurrent = _progressCurrent - _progressRatio;
  128. _progress progressSetPosition _progressCurrent;
  129. uiSleep 0.05;
  130. };
  131. (findDisplay 46) displayRemoveEventHandler ['KeyDown',_handlerID];
  132. -1 call life_fnc_bleedout;
  133. };
  134. };
  135. default {"ERROR: Wrong mode in life_fnc_bleedout"};
  136. };
  137.  
  138. _return
  139.  
  140.  
  141.  
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement