*Статья о том, как переопредилять файлы, из стандартного Epoch, в Вашу миссию - http://rnrportal.ru/...-мода-в-миссию/
- Переопределите файл fn_selfAction.sqf, заменив путь к нему в файле: compiles.sqf
- Было:
fnc_usec_selfActions = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_selfActions.sqf";
- Стало:
fnc_usec_selfActions = compile preprocessFileLineNumbers "fixes\compile\fn_selfActions.sqf";
- Откройте файл fn_selfAction.sqf
- Найдите в нем такую строку:
_canDo = (!r_drag_sqf && !r_player_unconscious && !_onLadder);
- Ниже нее добавьте код:
_mags = magazines player; if (isNil "s_player_selfBloodbag") then {s_player_selfBloodbag = -1;}; if ("ItemBloodbag" in _mags) then {hasBagItem = true;} else { hasBagItem = false;}; if((speed player <= 1) && hasBagItem && _canDo) then { if (s_player_selfBloodbag < 0) then {s_player_selfBloodbag = player addaction[("<t color=""#c70000"">" + ("Переливание крови") +"</t>"),"custom\player_selfbloodbag.sqf","",5,false,true,"", ""];}; } else { player removeAction s_player_selfBloodbag; s_player_selfBloodbag = -1; };
- В папке Вашей миссии, создайте папку custom
- В папке custom, создайте файл(в блокноте): player_selfbloodbag.sqf
- Скопируйте в него данный код:
private ["_bloodAmount","_humanityBool","_infectionChance","_humanityNegBool","_humanityNegAmount","_humanityAmount","_infectedLifeLost","_infectedLifeBool","_lastBloodbag","_bloodbagLastUsedTime","_bloodbagTime","_bloodbagUseTime","_bloodbagUsageTime","_incombat","_timeout"]; _bloodAmount = 4000; // Сколько крови будет залито _bloodbagUseTime = 30; // Сколько секунд будет происхоидить переливание _bloodbagLastUsedTime = 60; // Через сколько секунд, можно повторить переливание _infectionChance = 10; // Шанс заражения при переливании (10 = 10% | 2 = 50% | 1 = 100%) _infectedLifeBool = true; // Персонаж может потерять кровь при переливании, если сработает шанс заражения (True = да | False = нет) _infectedLifeLost = 1000; // Кол-во крови которое потеряет персонаж, после переливания, если сработает шанс заражения _humanityBool = false; // Игрок получает человечность при заливке крови самому себе (True = да | False = нет) _humanityAmount = 50; // Кол-во человечности, которое начислят игроку за переливание (250 стандартное, для обычного переливания от игрока к игроку, но не себе) if (isNil "lastBloodbag") then {lastBloodbag = 0;}; _bloodbagTime = time - lastBloodbag; _bloodbagUsageTime = time; _timeout = player getVariable["combattimeout", 0]; _inCombat = if (_timeout >= diag_tickTime) then { true } else { false }; if(_bloodbagTime < _bloodbagLastUsedTime) exitWith {cutText [format["Для повторного использования, подождите %1!",(_bloodbagTime - _bloodbagLastUsedTime)], "PLAIN DOWN"];}; if (_inCombat) then {cutText [format["Вы не можете переливать кровь в бою!"], "PLAIN DOWN"];} else { player removeAction s_player_selfBloodbag; player playActionNow "Medic"; r_interrupt = false; _animState = animationState player; r_doLoop = true; _started = false; _finished = false; while {r_doLoop} do { _animState = animationState player; _isMedic = ["medic",_animState] call fnc_inString; if (_isMedic) then {_started = true;}; if(!_isMedic && !r_interrupt && (time - _bloodbagUsageTime) < _bloodbagUseTime) then { player playActionNow "Medic"; _isMedic = true; }; if (_started && !_isMedic && (time - _bloodbagUsageTime) > _bloodbagUseTime) then { r_doLoop = false; _finished = true; lastBloodbag = time; }; if (r_interrupt) then {r_doLoop = false;}; sleep 0.1; }; r_doLoop = false; if (_finished) then { player removeMagazine "ItemBloodbag"; r_player_blood = r_player_blood + _bloodAmount; if(r_player_blood > 12000) then {r_player_blood = 12000;}; if (random(_infectionChance) < 1) then { r_player_infected = true; player setVariable["USEC_infected",true,true]; cutText [format["Вы перелили кровь из инфицированного пакета!"], "PLAIN DOWN"]; if(_infectedLifeBool) then { r_player_blood = r_player_blood - _infectedLifeLost; player setVariable["USEC_BloodQty",r_player_blood,true]; } else { r_player_lowblood = false; 10 fadeSound 1; "dynamicBlur" ppEffectAdjust [0]; "dynamicBlur" ppEffectCommit 5; "colorCorrections" ppEffectAdjust [1, 1, 0, [1, 1, 1, 0.0], [1, 1, 1, 1], [1, 1, 1, 1]];"colorCorrections" ppEffectCommit 5; r_player_lowblood = false; player setVariable["USEC_BloodQty",r_player_blood,true]; }; } else { r_player_lowblood = false; 10 fadeSound 1; "dynamicBlur" ppEffectAdjust [0]; "dynamicBlur" ppEffectCommit 5; "colorCorrections" ppEffectAdjust [1, 1, 0, [1, 1, 1, 0.0], [1, 1, 1, 1], [1, 1, 1, 1]];"colorCorrections" ppEffectCommit 5; r_player_lowblood = false; player setVariable["USEC_BloodQty",r_player_blood,true]; cutText [format["Вы закончили переливание крови!"], "PLAIN DOWN"]; }; if(_humanityBool) then {[player,_humanityAmount] call player_humanityChange;}; } else { r_interrupt = false; player switchMove ""; player playActionNow "stop"; cutText [format["Вы прервали переливание крови!"], "PLAIN DOWN"]; }; };