Перейти к содержимому

DustBlue IPB Skin by CodeGame Networks

  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 NoNameUltima

NoNameUltima

    Администратор

  • Администраторы
  • 188 сообщений
  • ГородСанкт-Петербург

Отправлено 12 октября 2014 - 03:08

Если вы не копировали и не переопределяли файл fn_selfAction.sqf:
*Статья о том, как переопредилять файлы, из стандартного 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"];
			};
	};






Темы с аналогичным тегами self bloodbag, dayz, epoch, arma2, arma ii, fn_selfAction.sqf, самозаливка крови, переливание крови, кровь самому себе, скрипт на переливание крови

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных