Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- private _fnc_scriptNameParent = if (isNil '_fnc_scriptName') then {'life_fnc_bleedOut'} else {_fnc_scriptName};
- private _fnc_scriptName = 'life_fnc_bleedOut';
- scriptName _fnc_scriptName;
- #line 1 "core\functions\fn_bleedOut.sqf [life_fnc_bleedOut]"
- params [
- ['_mode',-1,[0]]
- ];
- private _return = false;
- switch (_mode) do {
- case -1: {
- private _ppHandle = uiNamespace getVariable ['bleedOutPPHandle',-1];
- _ppHandle ppEffectAdjust [0];
- _ppHandle ppEffectCommit 1;
- player setVariable ['bleedingOut',false,true];
- "bleedOut" cutText ["", "PLAIN"];
- player setUnconscious false;
- uiSleep 1;
- ppEffectDestroy _ppHandle;
- if (animationState player isEqualTo "unconsciousrevivedefault") then {
- player switchMove "amovppnemstpsnonwnondnon";
- };
- };
- case 0: {
- private _bleedTime = 300;
- "bleedOut" cutText ["", "PLAIN"];
- player setVariable ['bleedingOut',true,true];
- player setVariable ['bleedingTimeout',time + 5];
- private _reason = player getVariable ['bleedOutReason','Accident'];
- "bleedOut" cutRsc ["RscTitleDisplayEmpty", "PLAIN", 1];
- private _display = uiNamespace getVariable ["RscTitleDisplayEmpty",displayNull];
- private _blurEffect = ppEffectCreate ["DynamicBlur",666];
- _blurEffect ppEffectAdjust [5];
- _blurEffect ppEffectForceInNVG true;
- _blurEffect ppEffectEnable true;
- _blurEffect ppEffectCommit 1;
- uiNamespace setVariable ['bleedOutPPHandle',_blurEffect];
- private _handlerID = (findDisplay 46) displayAddEventHandler ['KeyDown',"
- params ['','_code','_shift','_ctrl','_alt'];
- if !(player getVariable ['bleedingOut',false]) exitWith {};
- private _display = uiNamespace getVariable ['RscTitleDisplayEmpty',displayNull];
- private _respawn = _display getVariable ['respawn',controlNull];
- private _handled = switch (true) do {
- case (_ctrl AND (_code isEqualTo 0x13)): {
- if (_respawn getVariable ['delay',false]) exitWith {};
- player setDamage 1;
- false
- };
- case (_code in (actionKeys 'personView')): {false};
- case (_code in (actionKeys 'prevChannel')): {false};
- case (_code in (actionKeys 'nextChannel')): {false};
- case (_alt): {false};
- case (_code isEqualTo 0x3A): {false};
- default {true};
- };
- _handled
- "];
- player setUnconscious true;
- private _background = _display ctrlCreate ['RscText',-1];
- _background ctrlSetPosition [0 * safezoneW + safezoneX, 0.85 * safezoneH + safezoneY, 1 * safezoneW, 0.1 * safezoneH];
- _background ctrlSetBackgroundColor [0.03,0.03,0.03,0.75];
- _background ctrlCommit 0;
- private _title = _display ctrlCreate ['RscStructuredText',-1];
- _title ctrlSetPosition [0 * safezoneW + safezoneX, 0.855 * safezoneH + safezoneY, 1 * safezoneW, 0.045 * safezoneH];
- _title ctrlSetStructuredText (parseText format["<t align='center'>%1</t>",_reason]);
- _title ctrlCommit 0;
- private _progressBG = _display ctrlCreate ['RscText',-1];
- _progressBG ctrlSetPosition [0.30 * safezoneW + safezoneX, 0.90 * safezoneH + safezoneY, 0.40 * safezoneW, 0.025 * safezoneH];
- _progressBG ctrlSetBackgroundColor [0,0,0,1];
- _progressBG ctrlCommit 0;
- private _progress = _display ctrlCreate ['RscProgress',-1];
- _progress ctrlSetPosition [0.30 * safezoneW + safezoneX, 0.90 * safezoneH + safezoneY, 0.40 * safezoneW, 0.025 * safezoneH];
- _progress ctrlSetTextColor [0.75,0,0,1];
- _progress progressSetPosition 1;
- _progress ctrlCommit 0;
- private _progressText = _display ctrlCreate ['RscStructuredText',-1];
- _progressText ctrlSetPosition [0.30 * safezoneW + safezoneX, 0.90 * safezoneH + safezoneY, 0.40 * safezoneW, 0.025 * safezoneH];
- _progressText ctrlSetStructuredText (parseText format["<t align='center'>Bleeding out...</t>"]);
- _progressText ctrlCommit 0;
- private _medicText = _display ctrlCreate ['RscStructuredText',-1];
- _medicText ctrlSetPosition [0 * safezoneW + safezoneX, 0.925 * safezoneH + safezoneY, 1 * safezoneW, 0.025 * safezoneH];
- _medicText ctrlSetStructuredText parseText "<t align='right'>No medics found</t>";
- _medicText ctrlCommit 0;
- private _respawn = _display ctrlCreate ['RscStructuredText',-1];
- _respawn ctrlSetPosition [0.30 * safezoneW + safezoneX, 0.925 * safezoneH + safezoneY, 0.40 * safezoneW, 0.025 * safezoneH];
- _respawn ctrlSetBackgroundColor [0,0,0,0.5];
- _respawn ctrlSetFade 1;
- _respawn setVariable ['delay',true];
- _respawn ctrlSetStructuredText (parseText "<t align='center'>Ctrl + R to Respawn</t>");
- _respawn ctrlCommit 0;
- _display setVariable ['progress',_progress];
- _display setVariable ['respawn',_respawn];
- _display setVariable ['medicText',_medicText];
- [_display,_handlerID,_bleedTime] spawn {
- disableSerialization;
- params ['_display','_handlerID','_bleedTime'];
- private _respawnTime = _bleedTime /2;
- private _progress = _display getVariable ['progress',controlNull];
- private _respawn = _display getVariable ['respawn',controlNull];
- private _medicText = _display getVariable ['medicText',controlNull];
- private _progressRatio = 1/_bleedTime * 0.05;
- private _progressCurrent = 1;
- while {true} do {
- private _medics = allPlayers select {side _x isEqualTo independent};
- private _distances = _medics apply {round (player distance _x)};
- private _closest = _medics select (_distances find (selectMin _distances));
- if (isNil "_closest") then {
- _medicText ctrlSetStructuredText parseText "<t align='right'>No medics found</t>";
- } else {
- _medicText ctrlSetStructuredText parseText format["<t align='right'>Closest Medic: %1m</t>",round(player distance _closest)];
- };
- if (!alive player) exitWith {};
- if (isNull _display) exitWith {};
- if (_bleedTime < 1) exitWith {player setDamage 1};
- if (_bleedTime <= _respawnTime) then {_respawn ctrlSetFade 0; _respawn ctrlCommit 0; _respawn setVariable ['delay',false]};
- _bleedTime = _bleedTime - 0.05;
- _progressCurrent = _progressCurrent - _progressRatio;
- _progress progressSetPosition _progressCurrent;
- uiSleep 0.05;
- };
- (findDisplay 46) displayRemoveEventHandler ['KeyDown',_handlerID];
- -1 call life_fnc_bleedout;
- };
- };
- default {"ERROR: Wrong mode in life_fnc_bleedout"};
- };
- _return
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement