Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
MrMiBl

Epoch 1.0.7 Unconscious безсознанка

Всем привет! С наступающим!  

Проблема такая: безсознанка очень долгая (от двух минут и больше от рандомной пульки...)

Собственно вопрос: как её отключить либо сократить время?  

покопавшись в файлах нашел такую тему: fn_unconscious.sqf

// (c) facoptere@gmail.com, licensed to DayZMod for the community

private ["_count","_anim","_weapon","_sprint","_stance","_transmove","_start","_timeout","_short","_sandLevel","_speed"];

if (r_player_unconsciousInProgress) exitWith {};
r_player_unconsciousInProgress = true;
r_player_unconsciousInputDisabled = true;
//this is like this in order to release the current user input
disableUserInput true; disableUserInput true;
disableUserInput false; disableUserInput false;
disableUserInput true; disableUserInput true;

_start = diag_tickTime;
_timeout = abs r_player_timeout;
_short = _timeout < 4;
if (!_short) then {
    4 cutRsc ["playerStatusWaiting", "PLAIN",1];
    playSound "heartbeat_1";
};

_count = 0;
// can be set to false by medEPI.sqf, during the 'while' loop
r_player_unconscious = true;
player setVariable ["NORRN_unconscious", r_player_unconscious, true];
_sandLevel = ctrlPosition ((uiNamespace getVariable 'DAYZ_GUI_waiting') displayCtrl 1400);
//diag_log [(diag_tickTime - _start) < _timeout , !r_player_unconscious , alive player  ];

dayz_autoRun = false;

if (player == vehicle player) then {
	player playAction "CanNotMove";
};
"dynamicBlur" ppEffectEnable true;"dynamicBlur" ppEffectAdjust [2]; "dynamicBlur" ppEffectCommit 0;
"colorCorrections" ppEffectEnable true;"colorCorrections" ppEffectEnable true;"colorCorrections" ppEffectAdjust [1, 1, 0, [1, 1, 1, 0.0], [1, 1, 1, 0.1],  [1, 1, 1, 0.0]];"colorCorrections" ppEffectCommit 0;
if (dayz_soundMuted) then {call player_toggleSoundMute;}; // hide icon before fadeSound
0 fadeSound 0.05;

while { (diag_tickTime - _start) < _timeout and r_player_unconscious and alive player } do {
    player setVariable ["unconsciousTime", _timeout - diag_tickTime + _start, (_count % 10) == 0];
    if (!_short) then {
        _sandLevel set [ 3, 0.136829 * safezoneH * (diag_tickTime - _start) / _timeout ];
        ((uiNamespace getVariable 'DAYZ_GUI_waiting') displayCtrl 1400) ctrlSetPosition _sandLevel;
        ((uiNamespace getVariable 'DAYZ_GUI_waiting') displayCtrl 1400) ctrlCommit 0.05;
    };
    /*_veh = vehicle player;
     if ((player != _veh) and {(_veh iskindOf "LandVehicle")}) then {
        _speed = [0,0,0] distance velocity _veh;
        if (_speed > 10) then { 
			_veh engineOn false; 
		} else {
            player action ["eject", _veh];
            player leaveVehicle _veh;
            [] spawn { uiSleep 0.1; player playMoveNow "amovppnemstpsnonwnondnon"; }; // instant prone
        };
    };
	
    if (player == _veh) then { player setVelocity [0,0,0]; }; */
    uiSleep 0.1;
    _count = _count + 1;
	
};

if (!_short) then{
    4 cutRsc ["default", "PLAIN",0];
};

r_player_unconscious = false; 
player setVariable ["NORRN_unconscious", r_player_unconscious, true]; 
r_player_timeout = 0; 
player setVariable ["unconsciousTime", r_player_timeout, true]; 
r_player_cardiac = false;
player setVariable ["USEC_isCardiac",r_player_cardiac, true]; 

r_player_unconsciousInProgress = false;

4 cutRsc ["default", "PLAIN",1];

if (player == vehicle player) then {
	// "AinjPpneMstpSnonWnonDnon" rolls from back first (jarring transition if player was knocked out prone or fell to stomach)
	[nil, player, rSWITCHMOVE, "AmovPpneMstpSnonWnonDnon_healed"] call RE;
	player SWITCHMOVE "AmovPpneMstpSnonWnonDnon_healed";
	PVDZ_plr_SwitchMove = [player,"AmovPpneMstpSnonWnonDnon_healed"];
	publicVariableServer "PVDZ_plr_SwitchMove"; //Needed to execute switchMove on server machine. rSwitchMove only executes on other clients
	player playMoveNow "AmovPpneMstpSnonWnonDnon_healed";
};

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;

if ({getNumber (configFile >> "CfgWeapons" >> _x >> "type") in [1,2]} count (weapons player) > 0) then {
	//Prevent firing while weapon is still shown on back or holstered. AmovPpneMstpSnonWnonDnon_healed has disableWeapons=0 in config (should be 1)
	waitUntil {uiSleep 1; !(animationState player in ["ainjppnemstpsnonwnondnon_rolltofront","amovppnemstpsnonwnondnon_healed","amovppnemstpsnonwnondnon"])};
};

//once more to be safe
disableUserInput false; disableUserInput false;
disableUserInput true; disableUserInput true;
disableUserInput false; disableUserInput false;
r_player_unconsciousInputDisabled = false;

//diag_log [ __FILE__, diag_tickTime, "done" ];

Копать тут или где-то в другом месте?

Edited by MrMiBl (see edit history)

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Вот ещё нашел. setup_functions_med.sqf

fnc_usec_damageHandle = {
	/***********************************************************
	ASSIGN DAMAGE HANDLER TO A UNIT
	- Function
	- [unit] call fnc_usec_damageHandle;
	************************************************************/
	private "_unit";
	_unit = _this select 0;
	mydamage_eh1 = _unit addeventhandler ["HandleDamage",{_this call fnc_usec_damageHandler;} ];
	mydamage_eh2 = _unit addEventHandler ["Fired", {_this call player_fired;}];
	mydamage_eh3 = _unit addEventHandler ["Killed", {[_this,"find"] call player_death;}];
};

fnc_usec_pitchWhine = {
	private ["_visual", "_sound"];

	_visual = _this select 0;
	_sound = _this select 1;
	//affect the player
	0 fadeSound 0;
	playMusic ["PitchWhine",0];
	if (!r_player_unconscious) then {
		_visual call fnc_usec_bulletHit;
		if (dayz_soundMuted) then {
			_sound fadeSound 0.25;
		} else {
			_sound fadeSound 1;
		};
	};
	r_pitchWhine = true;
	[] spawn {
		uiSleep 32;
		r_pitchWhine = false;
	};
};

fnc_usec_damageUnconscious = {
	private["_unit","_damage","_inVehicle"];

	_unit = _this select 0;
	_damage = _this select 1;

	diag_log format["fnc_usec_damageUnconscious: %1,%2,%3",_unit,_damage, player];

	_inVehicle = (vehicle _unit != _unit);
	if (_unit == player) then {
		if (r_player_timeout <= 0) then {
			r_player_timeout = 120 min (round((((random 2) max 0.1) * _damage) * 20));
		};
		r_player_unconscious = true;

		player setVariable ["unconsciousTime", r_player_timeout, true];
	};

	if (_inVehicle) then {
		_unit spawn {
			private["_veh","_unit"];
			_veh = vehicle _this;
			_unit = _this;
			waitUntil {(((getPosATL _veh select 2 < 1) && {speed _veh < 1}) || (!r_player_unconscious))};

			if (r_player_unconscious) then {
				_unit action ["eject", _veh];
				waitUntil{((vehicle _this) != _this)};
				uiSleep 1;
				_unit playActionNow "Die";
			};
		};
	} else {
		_unit playActionNow "Die";
	};
};

//Action Handlers added to init file

fnc_usec_bulletHit = {
	private "_commit";

	_commit = _this;
	if (!r_player_unconscious) then {
        "colorCorrections" ppEffectEnable true; "colorCorrections" ppEffectAdjust [1, 1.1, -0.02, [0.4,-0.2,-0.2, .04], [1,1,1,0],  [1,1,1, 0]]; "colorCorrections" ppEffectCommit 0;
        "dynamicBlur" ppEffectEnable true;"dynamicBlur" ppEffectAdjust [1]; "dynamicBlur" ppEffectCommit 0;
        //setCamShakeParams [0.05, 4, 1, 3, true];
		addCamShake [5, 0.5, 25];
        "colorCorrections" ppEffectAdjust [1, 1, 0, [0,0,0,0], [1, 1, 1, 1],  [1, 1, 1, 1]]; "colorCorrections" ppEffectCommit _commit;
        "dynamicBlur" ppEffectAdjust [0]; "dynamicBlur" ppEffectCommit _commit;
	};
};

fnc_usec_damageGetWound = {
	private ["_hit", "_sPoint", "_options", "_rnd", "_wound"];

	_hit = format["%1",_this];
	_sPoint = USEC_woundHit find _hit;
	_options = USEC_woundPoint select _sPoint;
	_rnd = floor(random(count _options));
	_wound = _options select _rnd;
	_wound
};

fnc_usec_medic_removeActions = {
	private "_obj";

	_obj = player;
	{
		_obj = _x;
		{
			_obj removeAction _x;
		} forEach r_player_actions;
	} forEach r_action_targets;
	r_player_actions = [];
	r_action_targets = [];
};

fnc_usec_calculateBloodPerSec = {
	private["_bloodLossPerSec","_bloodGainPerSec","_bloodPerSec","_wounded","_time"];

	_bloodLossPerSec = 0;
	_bloodGainPerSec = 0;

	if (dayz_thirst >= SleepWater) then {
		_bloodLossPerSec = _bloodLossPerSec + 10;
	};

	if (dayz_hunger >= SleepFood) then {
		_bloodLossPerSec = _bloodLossPerSec + 10;
	};

	if (r_player_injured) then {
		_bloodLossPerSec = 10;

		{
			_wounded = player getVariable["hit_"+_x,false];

			if (_wounded) then {
				_bloodLossPerSec = _bloodLossPerSec + 10;
			};
		} forEach USEC_typeOfWounds;
	};

	//Sepsis
	if (!r_player_infected) then {
		if (r_player_Sepsis select 0) then {
			 _time = diag_tickTime - (r_player_Sepsis select 1);
			if (_time > 900) then {
				if (_time < 1800) then {
					_time = ((_time - 900) max 1) min 900;
					_bloodLossPerSec = _bloodLossPerSec + (_time / 450) + 1;
					_bloodLossPerSec = _bloodLossPerSec - (_bloodLossPerSec % 1);
				} else {
					r_player_Sepsis = [false, 0];
					r_player_infected = true;
					player setVariable["USEC_infected",true,true];
				};
			};

			if ((_time < 1) && {isNil "sepsisStarted"}) then {
			//if (isNil "sepsisStarted") then {
				localize "str_medical_sepsis_warning" call dayz_rollingMessages;
				//systemChat (localize "str_medical_sepsis_warning");
				player setVariable ["sepsisStarted", _time];
			};
		};
	} else {
		_bloodLossPerSec = _bloodLossPerSec + 3;
	};

	//_golbalNutrition = 1200 / r_player_Nutrition;

	if (r_player_bloodregen > 0) then {
		_bloodGainPerSec = r_player_bloodregen * 0.1;
/*
		if ((r_player_bloodregen) < 30) then {
			_bloodGainPerSec = r_player_bloodregen * _golbalNutrition;
		};

		if ((r_player_bloodregen)< 60) then {
			_bloodGainPerSec = r_player_bloodregen * _golbalNutrition;
		};
*/

		r_player_bloodregen = (0 max r_player_bloodregen) - (0 max _bloodGainPerSec);
	};

	r_player_bloodlosspersec = _bloodLossPerSec;
	r_player_bloodgainpersec = _bloodGainPerSec;

	_bloodPerSec = _bloodGainPerSec - _bloodLossPerSec;
/*
private [ "_foodVal", "_thirstVal", "_tempVal"];
_foodVal = round(100*(1 - (dayz_hunger / SleepFood)));
_thirstVal = round(100*(1 - (dayz_thirst / SleepWater)));
_tempVal = round(100*(1 - ((dayz_temperatur - dayz_temperaturmin)/(dayz_temperaturmax - dayz_temperaturmin))));

	hintSilent format [ "blood/s: %1\ngain/s: %2\nloss/s: %3\nbloodregen: %4\ninjured: %5\ninfected: %6\nsepsis: %7\ninpain:%15\nblood: %8\nthirst: %9 (%12%%)\nhunger: %10 (%13%%)\ntemp: %11 (%14%%)\nFoodstack: %16\n",
		_bloodPerSec,
		r_player_bloodgainpersec,
		r_player_bloodlosspersec,
		r_player_bloodregen,
		r_player_injured,
		r_player_infected,
		r_player_Sepsis,
		r_player_blood,
		dayz_thirst,
		dayz_hunger,
		dayz_temperatur,
		_thirstVal,
		_foodVal,
		_tempVal,
		r_player_inpain,
		r_player_foodstack
	];
*/
	dayz_lastMedicalSource = call {
		if (dayz_thirst >= SleepWater) exitwith {"dehyd"}; //10
		if (dayz_hunger >= SleepFood) exitwith {"starve"}; //10
		if (r_player_infected) exitwith {"sick"}; //3
		"none"; //reset
	};
	if (_bloodPerSec < 0 && {dayz_lastMedicalSource != "none"}) then {dayz_lastMedicalTime = diag_tickTime;};

	r_player_bloodpersec = _bloodPerSec;
	_bloodPerSec
};

fnc_usec_playerHandleBlood = {
	private["_bloodPerSec","_elapsedTime","_bleedTime","_bloodDiff"];

	if (r_player_injured) then { // bleeding
		_bleedTime = (random 500) + 100;
		_elapsedTime = 0;

		while {(r_player_injured) && (r_player_blood > 0)} do {
			_bloodPerSec = [] call fnc_usec_calculateBloodPerSec;
			r_player_blood = r_player_blood + _bloodPerSec;
			_elapsedTime = _elapsedTime + 1;

			if (_elapsedTime > _bleedTime) then {
				r_player_injured = false;
				[player,player,false] call player_medBandage;
			};

			_bloodDiff = r_player_blood - (player getVariable["USEC_BloodQty", r_player_bloodTotal]);

			if ((_bloodDiff >= 500) or (_bloodDiff <= -500)) then {
				player setVariable["USEC_BloodQty",r_player_blood,true];
			};


			uiSleep 1;
		};
	} else { // not bleeding
		_bloodPerSec = [] call fnc_usec_calculateBloodPerSec;

		if (_bloodPerSec != 0) then {
			r_player_blood = r_player_blood + _bloodPerSec;
		};

		_bloodDiff = r_player_blood - (player getVariable["USEC_BloodQty", r_player_bloodTotal]);


		if ((_bloodDiff >= 500) or (_bloodDiff <= -500)) then {
			player setVariable["USEC_BloodQty",r_player_blood,true];
		};
	};
};

fnc_usec_resetWoundPoints = {
	{
		player setVariable["hit_"+_x,false,true];
	} forEach USEC_typeOfWounds;
	player setVariable ["USEC_injured",false,true];
};

fnc_usec_damageBleed = {
	/***********************************************************
	PROCESS DAMAGE TO A UNIT
	- Function fnc_usec_damageBleed: Draw a creepy blood stream from a player limb
	- [_unit, _wound] call fnc_usec_damageBleed;
	************************************************************/
	private["_unit","_wound","_modelPos","_point","_source","_rndX"];

	_unit = _this select 0;
	_wound = _this select 1;
	_point = objNull;
	_source = objNull;

	if (isServer) exitWith{}; // no graphical effects on server!

	_modelPos = call {
		if (_wound == "Pelvis") exitwith {
			[0,0,0.2]
		};
		if (_wound == "aimpoint") exitwith {
			_rndX = (0.1 - random 0.2);
			[_rndX,0,0.2]
		};
		if (_wound == "RightShoulder") exitwith {
			[0,0,0.2]
		};
		if (_wound == "LeftShoulder") exitwith {
			[0,0,0.2]
		};
		//added visual wounds to foots
		if (_wound == "RightFoot") exitwith {
			[0,0,0.2]
		};
		if (_wound == "LeftFoot") exitwith {
			[0,0,0.2]
		};
		[0,0,0];
	};

	while {1 == 1} do {
		scopeName "main";
		waitUntil {(vehicle _unit == _unit)};

		if ((dayz_bleedingeffect == 2) or (dayz_bleedingeffect == 3)) then {
			//Blood partical
			_point = "Logic" createVehicleLocal getPosATL _unit;
			_source = "#particlesource" createVehicleLocal getPosATL _unit;
			_source setParticleParams
			/* Sprite */			[["\Ca\Data\ParticleEffects\Universal\Universal", 16, 13, 1],"",	// File,Ntieth,Index,Count,Loop(Bool)
			/* Type */				"Billboard",
			/* TimmerPer */			1,
			/* Lifetime */			0.2,
			/* Position */			[0,0,0],
			/* MoveVelocity */		[0,0,0.5],
			/* Simulation */		1,0.32,0.1,0.05,	//rotationVel,weight,volume,rubbing
			/* Scale */				[0.05,0.25],
			/* Color */				[[0.2,0.01,0.01,1],[0.2,0.01,0.01,0]],
			/* AnimSpeed */			[0.1],
			/* randDirPeriod */		0,
			/* randDirIntesity */	0,
			/* onTimerScript */		"",
			/* DestroyScript */		"",
			/* Follow */			_point];
			_source setParticleRandom [2, [0, 0, 0], [0.0, 0.0, 0.0], 0, 0.5, [0, 0, 0, 0.1], 0, 0, 10];
			_source setDropInterval 0.02;
			_point attachTo [_unit,_modelPos,_wound];
		};

		uiSleep 5;

		while {((_unit getVariable["USEC_injured",true]) && {alive _unit})} do {
			scopeName "loop";
			if (vehicle _unit != _unit) then {
				BreakOut "loop";
			};
			uiSleep 1;
		};
		deleteVehicle _source;
		deleteVehicle _point;

		if (!(_unit getVariable["USEC_injured",false])) then {
			BreakOut "main";
		};
	};

	deleteVehicle _source;
	deleteVehicle _point;
};

 

интересует вот этот момент

fnc_usec_damageUnconscious = {
	private["_unit","_damage","_inVehicle"];

	_unit = _this select 0;
	_damage = _this select 1;

	diag_log format["fnc_usec_damageUnconscious: %1,%2,%3",_unit,_damage, player];

	_inVehicle = (vehicle _unit != _unit);
	if (_unit == player) then {
		if (r_player_timeout <= 0) then {
			r_player_timeout = 120 min (round((((random 2) max 0.1) * _damage) * 20));
		};
		r_player_unconscious = true;

		player setVariable ["unconsciousTime", r_player_timeout, true];
	};

	if (_inVehicle) then {
		_unit spawn {
			private["_veh","_unit"];
			_veh = vehicle _this;
			_unit = _this;
			waitUntil {(((getPosATL _veh select 2 < 1) && {speed _veh < 1}) || (!r_player_unconscious))};

			if (r_player_unconscious) then {
				_unit action ["eject", _veh];
				waitUntil{((vehicle _this) != _this)};
				uiSleep 1;
				_unit playActionNow "Die";
			};
		};
	} else {
		_unit playActionNow "Die";
	};
};

 

Share this post


Link to post
Share on other sites







Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ZizionarD
      Требуется:
       
       
      Скрипт позволяет лучше учитывать вес транспортных средств, чтобы добавить более реалистичный эффект при буксировке и подъеме.
       
      Изменения:
      Добавляет уровни транспортных средств по расчетному весу, такие как Большие, Средние, Маленькие и Крошечные для наземных и воздушных транспортных средств. Транспортное средство может буксировать все, что имеет свой размер или меньше. Таким образом, большое наземное транспортное средство может буксировать любое наземное транспортное средство. Транспортное средство среднего класса, такое как внедорожник, может буксировать только другие транспортные средства среднего и меньшего размера. Танк может буксировать любое наземное транспортное средство, но не может быть поднят Большой вертолет может поднимать маленькие и крошечные вертолеты. Большой вертолет может поднять любое наземное транспортное средство, в то время как средний вертолет может поднимать только средние и меньшие по размеру. Автомобиль airTug (название класса "Буксировочный трактор" и другие тягачи) может буксировать любой самолет. Большинство лодок считаются "средними" автомобилями Добавлена возможность сбрасывать поднятые транспортные средства при полете выше 50 метров. Если вы сбросите транспортное средство выше 50 метров, к нему будет прикреплен парашют и дымовая граната. "ParachuteBigWest", если транспортное средство большого размера, в противном случае "ParachuteMediumWest" Автоматически переводится для английских, немецких и французских игроков на основе каждого игрока. Ранее разработчику сервера приходилось выбирать один для всех игроков. Добавляет таблицу строк для ранее поддерживаемых языков. Добавлены переводы на русский язык благодаря пользователю discord Mandarin(Эгберт)#2067 Добавлена возможность требовать магазин для буксировки транспортного средства с возможностью также забрать этот магазин и третий вариант - вернуть магазин, когда транспортное средство не тронуто. Добавлена возможность требовать инструмент / оружие для буксировки транспортного средства, с возможностью также забрать этот инструмент / оружие и третья возможность вернуть инструмент / оружие, когда транспортное средство не тронуто. Добавлена возможность изменения расстояния, с которого игроки могут буксировать транспортные средства. Добавляет опцию скрыть опцию буксировки колеса прокрутки, если буксируемое транспортное средство не находится рядом с транспортным средством, которое может его буксировать.  
      Установка:
      1. Скачать архив
      2. Из архива папку logistic переместить в корень вашей миссии
      3. Открыть файл init.sqf и заменить:
      execVM "\z\addons\dayz_code\system\antihack.sqf"; на:
      // Enables Plant lib fixes execVM "\z\addons\dayz_code\system\antihack.sqf"; call compile preprocessFileLineNumbers "logistic\init.sqf"; 4. Установка завершена
       
      Оригинал статьи: epochmod.com
    • By ZizionarD
      Это обновленная версия JAEM от OtterNas3 для DayZ Epoch 1.0.7. Обновлена версия до ZSC и развернул все совместимое. ZSC можно использовать в качестве опции для оплаты создания эвакуационного вертолета, а действия Мудзерели по щелчку правой кнопкой мыши можно использовать для вызова эвакуационного вертолета.
       
      Новые возможности:
      Поддержка ZSC - вы можете выбрать валюту эпохи или ZSC для оплаты вашего эвакуационного вертолета. Развертывание техники - вы можете использовать действия Mudzereli по щелчку правой кнопкой мыши для вызова эвакуационного вертолета вместо использования встроенного цикла самостоятельного действия. Plot pole и plot friends - чтобы игроки не могли размещать вертолетные площадки для эвакуации в запрещенных местах, они должны строить их на своих собственных участках или на участках своих друзей. Все переменные конфигурации размещены в файле variables.sqf. Все переменные имеют пояснительные комментарии. Настройте их в соответствии с вашими предпочтительными настройками:
      // Evac Chopper Config Variables evac_chopperPrice = 1; // This is the price players pay in full briefcases to set up an evac chopper (between 1-12 briefcases). Players must have the briefcases in their inventory. evac_chopperUseZSC = false; // If you have ZSC installed you can set this to true and have players pay the amount below to set up an evac chopper. evac_chopperPriceZSC = 100000; // Price for evac chopper if you have ZSC Installed and evac_chopperUseZSC set to true. evac_chopperMinDistance = 500; // Minimum distance for player to call evac chopper. Do not set this lower than 500. evac_chopperZoneMarker = 0; // Evac zone marker type (0 = Landingpad | 1 = Smoke). evac_chopperNeedRadio = 0; // 1 - Require player to have a radio in gear to call evac chopper | 0 - Doesn't require radio to call evac chopper. evac_chopperUseClickActions = false; // If you have Mudzereli's Deploy Anything installed and are going to use click actions to call the evac chopper, set this to true (disables call chopper self-action loop). Инструкции по функциональности:
      Если у вас есть какие-либо другие моды, которые сохраняют имя класса "HeliHRescue" в базе данных, имейте в виду, что это конкретное имя класса используется вместе с идентификатором владельца для работы этого мода. Если у вас уже есть экземпляр HeliHRescue, сохраненный в базе данных с вашим идентификатором игрока, вы получите сообщение о том, что вы не можете создать другой экземпляр при попытке установить вертолет эвакуации. Чтобы создать эвакуационный вертолет, вам нужен вертолет с ключом, столб для участка и деньги для покупки. У вас должен быть ключ в вашем инвентаре, чтобы установить и очистить поле эвакуационный вертолет. Подойдите к вертолету, и вы получите действия для настройки и очистки поля эвакуационного вертолета. Вам не обязательно иметь при себе ключ, чтобы вызвать эвакуационный вертолет. Существует монитор состояния полета, который отображается в том же месте, что и монитор отладки, поэтому для его просмотра вам потребуется отключить отладку. Если вы используете действия по щелчку правой кнопкой мыши Mudzereli, обязательно установите переменную evac_chopperUseClickActions в значение true, чтобы отключить встроенный цикл самостоятельных действий. Если ваш вертолет будет уничтожен, просто поместите новый на вертолетную площадку. Функция вызова эвакуационного вертолета находит ближайший вертолет (в пределах 10 метров) от вашей спасательной вертолетной площадки. Деньги не возвращаются, когда вы отключаете эвакуационный вертолет. Известные проблемы:
      На данный момент известна только одна проблема. Если игрок будет убит во время полета эвакуационного вертолета, вертолет не вернется на базу. Пилот приземляется в зоне эвакуации, выходит из вертолета и просто стоит там. Вертолет остается заблокированным.
       
      Установка:
      1. Скачать
      2. Разархивируйте архив
      3. Распакуйте свою миссию PBO
      4. Скопируйте папку scripts в корневую папку вашей миссии, если у вас уже есть папка scripts, скопируйте в нее папку JAEM.
      5. Скопируйте папку dayz_code в корневую папку вашей миссии, если у вас ее еще нет. Если у вас уже есть папка dayz_code и те же файлы из предыдущей установки, вы отредактируете существующие файлы на шаге 7.
      6. Откройте файл init.sqf и найдите строку:
      call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf"; Добавьте под ним следующую строку:
      call compile preprocessFileLineNumbers "dayz_code\init\variables.sqf"; Найти строку:
      call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf"; Добавьте под ним следующую строку:
      call compile preprocessFileLineNumbers "dayz_code\init\compiles.sqf"; Найти строку:
      waitUntil {scriptDone progress_monitor}; Добавьте над ним следующие строки:
      execVM "scripts\JAEM\EvacChopper_init.sqf"; 7. Если у вас уже есть кастомный файл fn_selfActions.sqf в каталоге dayz_code\compile, откройте этот файл. Если нет, вы должны были скопировать его из загрузки на шаге 5.
      Найти код:
      if (_isPZombie) then { if (s_player_attack < 0) then { s_player_attack = player addAction [localize "STR_EPOCH_ACTIONS_ATTACK", "\z\addons\dayz_code\actions\pzombie\pz_attack.sqf", _cursorTarget, 6, false, true]; }; if (s_player_callzombies < 0) then { s_player_callzombies = player addAction [localize "STR_EPOCH_ACTIONS_RAISEHORDE", "\z\addons\dayz_code\actions\pzombie\call_zombies.sqf",player, 5, true, false]; }; if (s_player_pzombiesvision < 0) then { s_player_pzombiesvision = player addAction [localize "STR_EPOCH_ACTIONS_NIGHTVIS", "\z\addons\dayz_code\actions\pzombie\pz_vision.sqf", [], 4, false, true, "nightVision", "_this == _target"]; }; if (!isNull _cursorTarget && (player distance _cursorTarget < 3)) then { _isZombie = _cursorTarget isKindOf "zZombie_base"; _isHarvested = _cursorTarget getVariable["meatHarvested",false]; _isMan = _cursorTarget isKindOf "Man"; //includes animals and zombies if (!alive _cursorTarget && _isMan && !_isZombie && !_isHarvested) then { if (s_player_pzombiesfeed < 0) then { s_player_pzombiesfeed = player addAction [localize "STR_EPOCH_ACTIONS_FEED", "\z\addons\dayz_code\actions\pzombie\pz_feed.sqf",_cursorTarget, 3, true, false]; }; } else { player removeAction s_player_pzombiesfeed; s_player_pzombiesfeed = -1; }; } else { player removeAction s_player_pzombiesfeed; s_player_pzombiesfeed = -1; }; }; Добавьте под ним следующий блок кода.
      Примечание: Если вы используете опцию Развертывание техники, вам не нужно использовать код, приведенный непосредственно ниже.
      // Call EvacChopper if (playerHasEvacField && {!evac_chopperUseClickActions}) then { if (player distance playersEvacField >= evac_chopperMinDistance && !evac_chopperInProgress && {isNull cursorTarget} && {speed player < 1} && {!_inVehicle}) then { if (evac_chopperNeedRadio == 1) then { if ("ItemRadio" in (items player)) then { if (s_player_evacCall < 0) then { s_player_evacCall = player addAction [("<t color=""#0000FF"">" + ("Call Evac-Chopper") + "</t>"),"scripts\JAEM\CallEvacChopper.sqf",[],-1000,false,false,"",""]; }; }; } else { if (s_player_evacCall < 0) then { s_player_evacCall = player addAction [("<t color=""#0000FF"">" + ("Call Evac-Chopper") + "</t>"),"scripts\JAEM\CallEvacChopper.sqf",[],-1000,false,false,"",""]; }; }; } else { player removeAction s_player_evacCall; s_player_evacCall = -1; }; }; Найдите блок кода:
      // Allow Owner to lock and unlock vehicle if (_player_lockUnlock_crtl) then { if (s_player_lockUnlock_crtl < 0) then { local _totalKeys = call epoch_tempKeys; local _temp_keys = _totalKeys select 0; local _temp_keys_names = _totalKeys select 1; local _hasKey = _characterID in _temp_keys; local _oldOwner = (_characterID == _uid); local _unlock = []; if (_isLocked) then { if (_hasKey || _oldOwner) then { _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,(_temp_keys_names select (_temp_keys find _characterID))], 2, true, true]; s_player_lockunlock set [count s_player_lockunlock,_unlock]; s_player_lockUnlock_crtl = 1; } else { if (_hasHotwireKit) then { _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true]; } else { _unlock = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_VEHLOCKED"], "",_cursorTarget, 2, false, true]; }; s_player_lockunlock set [count s_player_lockunlock,_unlock]; s_player_lockUnlock_crtl = 1; }; } else { if (_hasKey || _oldOwner) then { _lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true]; s_player_lockunlock set [count s_player_lockunlock,_lock]; s_player_lockUnlock_crtl = 1; }; }; }; } else { {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = []; s_player_lockUnlock_crtl = -1; }; Замените весь блок кода следующим:
      // Allow Owner to lock and unlock vehicle if (_player_lockUnlock_crtl) then { local _totalKeys = call epoch_tempKeys; local _temp_keys = _totalKeys select 0; local _temp_keys_names = _totalKeys select 1; local _hasKey = _characterID in _temp_keys; local _oldOwner = (_characterID == _uid); if (s_player_lockUnlock_crtl < 0) then { local _unlock = []; if (_isLocked) then { if (_hasKey || _oldOwner) then { _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,(_temp_keys_names select (_temp_keys find _characterID))], 2, true, true]; s_player_lockunlock set [count s_player_lockunlock,_unlock]; s_player_lockUnlock_crtl = 1; } else { if (_hasHotwireKit) then { _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true]; } else { _unlock = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_VEHLOCKED"], "",_cursorTarget, 2, false, true]; }; s_player_lockunlock set [count s_player_lockunlock,_unlock]; s_player_lockUnlock_crtl = 1; }; } else { if (_hasKey || _oldOwner) then { _lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true]; s_player_lockunlock set [count s_player_lockunlock,_lock]; s_player_lockUnlock_crtl = 1; }; }; }; // EvacChopper if (s_player_evacChopper_ctrl < 0) then { if ((_cursorTarget isKindOf "Helicopter") && (_hasKey || _oldOwner) && !evac_chopperInProgress) then { if (!playerHasEvacField) then { local _setEvac = player addAction [("<t color=""#0000FF"">" + ("Set Evac-Chopper") + "</t>"),"scripts\JAEM\SetEvacChopper.sqf",_cursorTarget,3,false,true]; s_player_evacChopper set [count s_player_evacChopper,_setEvac]; s_player_evacChopper_ctrl = 1; }; if (playerHasEvacField && (player distance playersEvacField < 10)) then { local _clearEvac = player addAction [("<t color=""#0000FF"">" + ("Clear Evac-Chopper") + "</t>"),"scripts\JAEM\ClearEvacChopper.sqf",_cursorTarget,4,false,true]; s_player_evacChopper set [count s_player_evacChopper,_clearEvac]; s_player_evacChopper_ctrl = 1; }; }; }; } else { {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = []; s_player_lockUnlock_crtl = -1; {player removeAction _x} count s_player_evacChopper;s_player_evacChopper = []; s_player_evacChopper_ctrl = -1; }; Найдите строку (около строки 1050):
      s_player_lockUnlock_crtl = -1; Добавьте под ним следующие строки:
      {player removeAction _x} count s_player_evacChopper;s_player_evacChopper = []; s_player_evacChopper_ctrl = -1; 8. Если у вас уже есть кастомный variables.sqf в каталоге dayz_code\init, откройте этот файл. Если нет, вы должны были скопировать его из загрузки на шаге 5.
      Откройте кастомный variables.sqf и найдите строку:
      //Player self-action handles под этой строкой добавьте:
      DayZ_SafeObjects set [count DayZ_SafeObjects, "HeliHRescue"]; // Evac Chopper Variables playerHasEvacField = false; // DO NOT CHANGE. playersEvacField = objNull; // DO NOT CHANGE. s_player_evacChopper = []; // DO NOT CHANGE. evac_chopperInProgress = false; //DO NOT CHANGE. // Evac Chopper Config Variables evac_chopperPrice = 1; // This is the price players pay in full briefcases to set up an evac chopper. evac_chopperPriceZSC = 10000; // Price for evac chopper if you have ZSC Installed and evac_chopperUseZSC set to true. evac_chopperAllowRefund = false; // Allow players to get their money back when they remove an evac-chopper field. evac_chopperMinDistance = 500; // Minimum distance for player to call evac chopper. Do not set this lower than 500. evac_chopperZoneMarker = 0; // Evac zone marker type (0 = Landingpad | 1 = Smoke). evac_chopperNeedRadio = 0; // 1 - Require player to have a radio in gear to call evac chopper | 0 - Doesn't require radio to call evac chopper. evac_chopperUseClickActions = false; // If you have Deploy Anything installed and are going to use click actions to call the evac chopper, set this to true (disables call chopper self-action loop). evac_ChopperDisabledMarker = true; // Place a private map marker of the evac chopper's location if (isServer) then {"CallEvacChopper" addPublicVariableEventHandler {(_this select 1) spawn server_callEvacChopper;};}; Если у вас уже есть этот раздел из предыдущей установки, просто добавьте следующие строки внизу над };
      s_player_evacChopper_ctrl = -1; s_player_evacCall = -1; Убедитесь, что вы сравниваете свой файл с файлом, указанным в загрузке, чтобы строки оказались в правильном месте.
      9. Если у вас уже есть кастомный compiles.sqf в каталоге dayz_code\init, откройте этот файл. Если нет, вы должны были скопировать его из загрузки на шаге 5.
      Скопируйте следующую строку в раздел !isDedicated, если у вас ее еще нет в предыдущей установке:
      fnc_usec_selfactions = compile preprocessFileLineNumbers "dayz_code\compile\fn_selfActions.sqf"; 10. Запакуйте свою миссию PBO
      11. Распакуйте PBO вашего сервера и откройте dayz_server\system\server_monitor.sqf
      Найдите эту строку:
      dayz_serverIDMonitor = []; Добавьте под ним следующую строку:
      PVDZE_EvacChopperFields = []; Найдите эту строку:
      if (_type == "Base_Fire_DZ") then {_object spawn base_fireMonitor;}; Добавьте под ним следующую строку:
      if (_type == "HeliHRescue") then {PVDZE_EvacChopperFields set [count PVDZE_EvacChopperFields, _object];}; Найдите эту строку:
      publicVariable "sm_done"; Добавьте под ним следующий блок кода:
      publicVariable "PVDZE_EvacChopperFields"; ON_fnc_evacChopperFieldsUpdate = { local _action = _this select 0; local _field = _this select 1; if (_action == "add") then {PVDZE_EvacChopperFields = PVDZE_EvacChopperFields + [_field];}; if (_action == "rem") then {PVDZE_EvacChopperFields = PVDZE_EvacChopperFields - [_field];}; publicVariable "PVDZE_EvacChopperFields"; }; "PVDZE_EvacChopperFieldsUpdate" addPublicVariableEventHandler {(_this select 1) call ON_fnc_evacChopperFieldsUpdate}; Сохраняем и закрываем
      12. Откройте dayz_server\init\server_functions.sqf
      Найдите эту строку:
      spawn_vehicles = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\spawn_vehicles.sqf"; Добавьте под ним следующую строку:
      server_callEvacChopper = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_callEvacChopper.sqf"; Сохраняем и закрываем
      13. Скопируйте файл dayz_server\compile\server_callEvacChopper.sqf в папку вашего сервера.
      14. Запаковать сервер PBO
      15. Полный набор необходимых файлов BattlEye был предоставлен в папке BattlEye. Если у вас новый сервер или вы предпочитаете диффмердж, вы можете использовать эти файлы. В противном случае следуйте приведенным ниже инструкциям.
       
      Настройка Battleye фильтров:
      1. Открыть файл publicvariable.txt
      Добавьте это в конец строки 2:
      !=PVDZE_EvacChopperFieldsUpdate !=CallEvacChopper 2. Открыть файл createvehicle.txt
      Добавьте это в конец строки 2:
      !="HeliHRescue" 3. Открыть файл scripts.txt
      Добавьте это в конец строки 17:
      !"\\dayz_code\\init\\compiles.sqf\"\nif (!isDedicated) then {\ndiag_log \"Loading custom client com" Добавьте это в конец строки 2:
      !=" (s_player_evacCall < 0) then {\ns_player_evacCall = player addAction [(\"<t color=\"\"#0000FF\"\">\" + (\"Call Evac-Chopper\") + \"</t>\")" Добавьте это в конец строки 21:
      !="time = time;\n_chopperPos = getPos _evacChopper;\n_marker = createMarkerLocal [\"EvacChopper\",_chopperPos];\n_marker setMarkerColorL" Добавьте это в конец строки 27:
      !="me) > evac_chopperMarkerTimeout) then {_recovered = true; deleteMarkerLocal _marker; \"EVAC Chopper map marker deleted\" call dayz" Добавьте это в конец строки 38:
      !="_this select 4;};\n\nif (_flightStatus == \"Arrived\") exitWith\n{\nhintSilent parseText format [\"\n <t size='1.15' font='Bitstream'a" Добавьте это в конец строки 58:
      !="= createMarkerLocal [\"EvacChopper\",_chopperPos];\n_marker setMarkerColorLocal \"ColorBlack\";\n_marker setMarkerTypeLocal \"mil_objec" Добавьте это в конец строки 63:
      !="ck\";\n_marker setMarkerTypeLocal \"mil_objective\";\n_marker setMarkerTextLocal \"EvacChopper\";\nwhile {!_recovered} do {\nif (!alive _" Добавьте это в конец строки 64:
      !="rPos];\n_marker setMarkerColorLocal \"ColorBlack\";\n_marker setMarkerTypeLocal \"mil_objective\";\n_marker setMarkerTextLocal \"EvacCho" Добавьте это в конец строки 72:
      !="FNC_GetPos;\n_canceled = false;\n\n\nfor \"_p\" from 1 to 5 do\n{\nsystemChat(format [\"Evac-Chopper get called in %1s - Move to cancel!\""  
      Настройка развертывание техники:
      1. Если вы хотите использовать действия по щелчку правой кнопкой мыши при развертывании чего-либо для вызова прерывателя эвакуации вместо встроенных самостоятельных действий, найдите эту переменную в кастомном variables.sqf:
      Найдите эту переменную
      evac_chopperUseClickActions = false; и измените на:
      evac_chopperUseClickActions = true; Откройте файл вашей миссии и найдите файл overwrites\click_actions\config.sqf.
      Добавьте это в нижнюю часть массива DZE_CLICK_ACTIONS:
      ["ItemGPS","Call Evac Chopper","execVM 'scripts\JAEM\callEvacChopper.sqf';","true"] Примечание: вы можете привязать действие щелчка правой кнопкой мыши к любому элементу ремня для инструментов. Я просто выбрал ItemGPS по умолчанию. Убедитесь, что вы поставили запятую на предпоследней.
       
      Так-же в файле scripts.txt в конец строки 32 добавить:
      !="execVM 'scripts\\JAEM\\callEvacChopper.sqf';"  
      Оригинал статьи: epochmod.com
    • By ZizionarD
      Простые сценарии, для того, чтобы склеить обоймы вместе, увеличивая количество патронов для установленных обойм. На основе
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      2. Из архива переместить файлы в папку scripts которая находится в корне вашей миссии
      3. Установить скрипт Click Actions, если установлен, пропускаем пункт
      4. Переходим в папку scripts\clickActions и открываем файл config.sqf и находим строки:
      DZE_CLICK_ACTIONS = [ ["ItemGPS",localize "STR_CL_CA_SCAN_NEARBY","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_ZOMBIE_COUNT = count ((position player) nearEntities ['zZombie_Base',CA_GPS_RANGE]); CA_MAN_COUNT = count ((position player) nearEntities ['CAManBase',CA_GPS_RANGE]); format[localize 'STR_CL_CA_SCAN',CA_GPS_RANGE,CA_MAN_COUNT - CA_ZOMBIE_COUNT,count ((position player) nearEntities ['zZombie_Base',CA_GPS_RANGE]),count ((position player) nearEntities ['allVehicles',CA_GPS_RANGE]) - CA_MAN_COUNT] call dayz_rollingMessages;","true"], ["ItemGPS",localize "STR_CL_CA_RANGE_UP","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_GPS_RANGE = (CA_GPS_RANGE + 100) min 2500; format[localize 'STR_CL_CA_RANGE_GPS',CA_GPS_RANGE] call dayz_rollingMessages;","true"], ["ItemGPS",localize "STR_CL_CA_RANGE_DOWN","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_GPS_RANGE = (CA_GPS_RANGE - 100) max 1000; format[localize 'STR_CL_CA_RANGE_GPS',CA_GPS_RANGE] call dayz_rollingMessages;","true"] ]; внутри этого блока ниже вставляем
      ,["30Rnd_545x39_AK","Tape Mags","execVM 'scripts\AK.sqf';","true"], ["30Rnd_545x39_AKSD","Tape Mags","execVM 'scripts\AKSD.sqf';","true"], ["30Rnd_556x45_Stanag","Tape Mags","execVM 'scripts\Stanag.sqf';","true"], ["30Rnd_556x45_StanagSD","Tape Mags","execVM 'scripts\StanagSD.sqf';","true"], ["30Rnd_762x39_AK47","Tape Mags","execVM 'scripts\AK47.sqf';","true"] должно получиться примерно так
      DZE_CLICK_ACTIONS = [ ["ItemGPS",localize "STR_CL_CA_SCAN_NEARBY","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_ZOMBIE_COUNT = count ((position player) nearEntities ['zZombie_Base',CA_GPS_RANGE]); CA_MAN_COUNT = count ((position player) nearEntities ['CAManBase',CA_GPS_RANGE]); format[localize 'STR_CL_CA_SCAN',CA_GPS_RANGE,CA_MAN_COUNT - CA_ZOMBIE_COUNT,count ((position player) nearEntities ['zZombie_Base',CA_GPS_RANGE]),count ((position player) nearEntities ['allVehicles',CA_GPS_RANGE]) - CA_MAN_COUNT] call dayz_rollingMessages;","true"], ["ItemGPS",localize "STR_CL_CA_RANGE_UP","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_GPS_RANGE = (CA_GPS_RANGE + 100) min 2500; format[localize 'STR_CL_CA_RANGE_GPS',CA_GPS_RANGE] call dayz_rollingMessages;","true"], ["ItemGPS",localize "STR_CL_CA_RANGE_DOWN","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_GPS_RANGE = (CA_GPS_RANGE - 100) max 1000; format[localize 'STR_CL_CA_RANGE_GPS',CA_GPS_RANGE] call dayz_rollingMessages;","true"] ,["30Rnd_545x39_AK","Tape Mags","execVM 'scripts\AK.sqf';","true"], ["30Rnd_545x39_AKSD","Tape Mags","execVM 'scripts\AKSD.sqf';","true"], ["30Rnd_556x45_Stanag","Tape Mags","execVM 'scripts\Stanag.sqf';","true"], ["30Rnd_556x45_StanagSD","Tape Mags","execVM 'scripts\StanagSD.sqf';","true"], ["30Rnd_762x39_AK47","Tape Mags","execVM 'scripts\AK47.sqf';","true"] ]; 5. Сохраняем, закрываем
      6. Готово
    • By ZizionarD
      Простой скрипт, который выводит ник владельца (или первого друга в списке), когда игрок входит в радиус плота. Это может быть полезно для серверов, которым нравится совершать набеги на базы, и в целом позволяет игрокам наносить на карту местоположения баз.
       
      Установка:
      1. Скачать архив
      2. Переходим в корень вашей миссии и в папку custom переносим файл plot_owner.sqf из архива
      3. В корне вашей миссии открываем файл init.sqf и находим троку:
      execVM "\z\addons\dayz_code\system\antihack.sqf"; ниже добавляем
      execVM "custom\plot_owner.sqf"; 4. Сохраняем, закрываем
      5. Установка завершена
       
      Оригинал статьи: epochmod.com
    • By ZizionarD
      Скрипт дает возможность дистанционно закрывать машину, проверить состояние двигателя или выгнать игроков из машины.
       
      Установка:
      1. Скачать архив
      2. Для создания кастомных файлов вам нужно посетить эту тему:
      3. Если у вас не установлен скрипт на "Действие на правую кнопку мыши" то посетите эту тему:
      4. Из архива папку scripts переносим в корень вашей миссии
      5. Открываем кастомный файл compiles.sqf и находим код:
      if (!isDedicated) then { в этот блок вставляем
      if (!isDedicated) then { remoteVehicle = compile preprocessFileLineNumbers "scripts\remoteVehicle\remoteVehicle.sqf"; }; 6. Сохраняем, закрываем
      7. Отредактируйте файл scripts\clickActions\config.sqf и добавьте эту строку в массив DZE_CLICK_ACTIONS:
      ["ItemKey",localize "STR_CL_RV_CA_EJECT","spawn remoteVehicle;","true",1], ["ItemKey",localize "STR_CL_RV_CA_ENGINE","spawn remoteVehicle;","true",2], ["ItemKey",localize "STR_CL_RV_CA_UNLOCK","spawn remoteVehicle;","true",3], ["ItemKey",localize "STR_CL_RV_CA_LOCK","spawn remoteVehicle;","true",4], ["ItemKey",localize "STR_CL_RV_CA_LIGHTS","spawn remoteVehicle;","true",5] Пример:
      DZE_CLICK_ACTIONS = [ ["ItemGPS","Scan Nearby","if(isNil 'DZE_CLICK_ACTIONS_GPS_RANGE') then {DZE_CLICK_ACTIONS_GPS_RANGE = 1500;};DZE_CLICK_ACTIONS_ZOMBIE_COUNT = count ((position player) nearEntities ['zZombie_Base',DZE_CLICK_ACTIONS_GPS_RANGE]); DZE_CLICK_ACTIONS_MAN_COUNT = count ((position player) nearEntities ['CAManBase',DZE_CLICK_ACTIONS_GPS_RANGE]); format['Within %1 Meters: %2 AI/players, %3 zombies, %4 vehicles',DZE_CLICK_ACTIONS_GPS_RANGE,DZE_CLICK_ACTIONS_MAN_COUNT - DZE_CLICK_ACTIONS_ZOMBIE_COUNT,count ((position player) nearEntities ['zZombie_Base',DZE_CLICK_ACTIONS_GPS_RANGE]),count ((position player) nearEntities ['allVehicles',DZE_CLICK_ACTIONS_GPS_RANGE]) - DZE_CLICK_ACTIONS_MAN_COUNT] call dayz_rollingMessages;","true"], ["ItemGPS","Range Up" ,"if(isNil 'DZE_CLICK_ACTIONS_GPS_RANGE') then {DZE_CLICK_ACTIONS_GPS_RANGE = 1500;};DZE_CLICK_ACTIONS_GPS_RANGE = (DZE_CLICK_ACTIONS_GPS_RANGE + 100) min 2500; format['GPS RANGE: %1',DZE_CLICK_ACTIONS_GPS_RANGE] call dayz_rollingMessages;","true"], ["ItemGPS","Range Down" ,"if(isNil 'DZE_CLICK_ACTIONS_GPS_RANGE') then {DZE_CLICK_ACTIONS_GPS_RANGE = 1500;};DZE_CLICK_ACTIONS_GPS_RANGE = (DZE_CLICK_ACTIONS_GPS_RANGE - 100) max 1000; format['GPS RANGE: %1',DZE_CLICK_ACTIONS_GPS_RANGE] call dayz_rollingMessages;","true"], ["ItemKey",localize "STR_CL_RV_CA_EJECT","spawn remoteVehicle;","true",1], ["ItemKey",localize "STR_CL_RV_CA_ENGINE","spawn remoteVehicle;","true",2], ["ItemKey",localize "STR_CL_RV_CA_UNLOCK","spawn remoteVehicle;","true",3], ["ItemKey",localize "STR_CL_RV_CA_LOCK","spawn remoteVehicle;","true",4], ["ItemKey",localize "STR_CL_RV_CA_LIGHTS","spawn remoteVehicle;","true",5] ]; 8. Открываем файл description.ext и добавляем строку в самый конец:
      #include "scripts\remoteVehicle\remoteVehicle.hpp" 9. Сохраняем, закрываем
       
      Battleye фильтры:
      1. Открываем файл scripts.txt и находим строку:
      1 compile в самый конец вставляем
      !="ay\",\"_exit\"];\n\nif (isNil \"rv_init\") then {\nrv_vehicleInfo = compile preprocessFileLineNumbers \"scripts\\remoteVehicle\\vehicleInfo" далее находим строку
      5 createDialog в самый конец вставляем
      !=";\n\nif (count rv_vehicleList > 1) then {\nrv_isOk = false;\n\ncreateDialog \"remoteVehicle\";\n\n_display = uiNamespace getVariable[\"rv_" далее находим строку
      5 lbSet в самый конец вставляем
      !="ive DZE_myVehicle} && {DZE_myVehicle == _x}) then {\n_control lbSetColor [(lbSize _control)-1,[0, 1, 0, 1]];\n};\n} count rv_vehicl" далее находим строку
      5 title в самый конец вставляем
      !="play displayCtrl 8801 ctrlSetText(format[localize \"STR_CL_RV_TITLE\",_keyDisplay]);\n\n_control = ((findDisplay 8800) displayCtrl 8"  
      Оригинал статьи: epochmod.com
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.