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
Pass777

Смерть вместе с техникой

Такая проблема: игроки не умирают вместе с техникой. Например, таранят базы на самолетах и сидят в обломках невредимые. Как сделать так, чтобы смерть наступала вместе со взрывом техники?

Share this post


Link to post
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Такая проблема: игроки не умирают вместе с техникой. Например, таранят базы на самолетах и сидят в обломках невредимые. Как сделать так, чтобы смерть наступала вместе со взрывом техники?

У меня была такая-же проблема. 

Нашёл проблему в инфистаре и решения в fn_damageHandler.sqf

Всё в твоих руках  :whistling:

Share this post


Link to post
Share on other sites





  • 0

У меня была такая-же проблема. 

Нашёл проблему в инфистаре и решения в fn_damageHandler.sqf

Всё в твоих руках  :whistling:

Можно пожалуйста подробнее

Share this post


Link to post
Share on other sites
  • 0

Можно пожалуйста подробнее

Куда ещё подробнее  :laugh:

Share this post


Link to post
Share on other sites
  • 0

Куда ещё подробнее  :laugh:

Что поменять в настройках инфи и в  fn_damageHandler.sqf ?

Share this post


Link to post
Share on other sites
  • 0

Что поменять в настройках инфи и в  fn_damageHandler.sqf ?

Нужно делать всё под свой сервер. 

Я переписывал в инфи фильтрацию получения дамага. 

В функции Damage Handler делай под свой сервер. Получение урона от зомби и прочие... 

Share this post


Link to post
Share on other sites
  • 0

Нужно делать всё под свой сервер. 

Я переписывал в инфи фильтрацию получения дамага. 

В функции Damage Handler делай под свой сервер. Получение урона от зомби и прочие... 

 

это понятно, но просто не могу там найти код дамага от краша техники. или от взрыва, как я понимаю

Share this post


Link to post
Share on other sites
  • 0

это понятно, но просто не могу там найти код дамага от краша техники. или от взрыва, как я понимаю

В инфи ищи  fn_damageHandler.sqf и всё поймёшь (наверное)  :smile: 

Share this post


Link to post
Share on other sites
  • 0

Вот в инфи код наверное про который идет речь 

 

{
				private['_damage'];
				_damage = _this select 2;
				
				if ((str fnc_usec_damageHandler == '{}') || (str fnc_usec_damageHandler != str rdh"+_randvar5+")) then
				{
					_state = true;
					{
						if ((!isNull _x) && (alive _x) && (getPlayerUID _x == '') && !(_x isKindOf 'zZombie_Base') && !(_x isKindOf 'CAAnimalBase')) exitWith
						{
							_state = false;
						};
					} forEach ((getPos player) nearEntities ['Man',300]);
					if (_state) then
					{
						fnc_usec_damageHandler = rdh"+_randvar5+";
					};
				};
				_this call fnc_usec_damageHandler;
				if (str fnc_usec_damageHandler != '{}') then
				{
					if ((_damage > 0.4) && (player == vehicle player)) then
					{
						if (isNil 'DMG"+_randvar5+"') then
						{
							DMG"+_randvar5+" = true;
							if (isNil 'r_player_blood') then { r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR') then { r_player_blood = -500;YOLO = true; }; };
							if (r_player_blood == 12000) then
							{
								[] spawn 
								{
									uiSleep 2;
									
									if (isNil 'r_player_blood') then { r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR') then { r_player_blood = -500;YOLO = true; }; };
									if (r_player_blood == 12000) then
									{
										_log = 				format['НЕТ ПОТЕРИ КРОВИ! %1',r_player_blood];
										"+_randvar10+" = 	[name player,getPlayerUID player,'SLOG',toArray (_log)];
										publicVariableServer '"+_randvar10+"';
										if (isNil 'LASTDAMAGESOURCE') then {LASTDAMAGESOURCE = player;} else {if(isNull LASTDAMAGESOURCE) then {LASTDAMAGESOURCE = player;};};
										[LASTDAMAGESOURCE,'shotheavy'] spawn player_death;
										player setHit['Body',1];
									};
									DMG"+_randvar5+" = nil;
								};
							}
							else
							{
								[r_player_blood] spawn 
								{
									_tempBlood = _this select 0;
									uiSleep 1;
									
									if (isNil 'r_player_blood') then { r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR') then { r_player_blood = -500;YOLO = true; }; };
									if (((r_player_blood == _tempBlood) || (r_player_blood > _tempBlood)) && (r_player_blood > 3000)) then
									{
										r_player_blood = 	r_player_blood - ((random 800) + (random 800) + 500);
										_tmp = 				r_player_blood;
										uiSleep 0.5;
										
										if (isNil 'r_player_blood') then { r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR') then { r_player_blood = -500;YOLO = true; }; };
										if (r_player_blood > _tmp) then
										{
											_log = 				format['Крови должно быть %1, но сейчас %2...',_tmp,r_player_blood];
											"+_randvar10+" = 	[name player,getPlayerUID player,'SLOG',toArray (_log)];
											publicVariableServer '"+_randvar10+"';
										};
									};
									DMG"+_randvar5+" = nil;
								};
							};
						};
					};
				};
			};

тут наверное какие то цифры надо менять 

Share this post


Link to post
Share on other sites
  • 0

Вот в инфи код наверное про который идет речь 

 

{
				private['_damage'];
				_damage = _this select 2;
				
				if ((str fnc_usec_damageHandler == '{}') || (str fnc_usec_damageHandler != str rdh"+_randvar5+")) then
				{
					_state = true;
					{
						if ((!isNull _x) && (alive _x) && (getPlayerUID _x == '') && !(_x isKindOf 'zZombie_Base') && !(_x isKindOf 'CAAnimalBase')) exitWith
						{
							_state = false;
						};
					} forEach ((getPos player) nearEntities ['Man',300]);
					if (_state) then
					{
						fnc_usec_damageHandler = rdh"+_randvar5+";
					};
				};
				_this call fnc_usec_damageHandler;
				if (str fnc_usec_damageHandler != '{}') then
				{
					if ((_damage > 0.4) && (player == vehicle player)) then
					{
						if (isNil 'DMG"+_randvar5+"') then
						{
							DMG"+_randvar5+" = true;
							if (isNil 'r_player_blood') then { r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR') then { r_player_blood = -500;YOLO = true; }; };
							if (r_player_blood == 12000) then
							{
								[] spawn 
								{
									uiSleep 2;
									
									if (isNil 'r_player_blood') then { r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR') then { r_player_blood = -500;YOLO = true; }; };
									if (r_player_blood == 12000) then
									{
										_log = 				format['НЕТ ПОТЕРИ КРОВИ! %1',r_player_blood];
										"+_randvar10+" = 	[name player,getPlayerUID player,'SLOG',toArray (_log)];
										publicVariableServer '"+_randvar10+"';
										if (isNil 'LASTDAMAGESOURCE') then {LASTDAMAGESOURCE = player;} else {if(isNull LASTDAMAGESOURCE) then {LASTDAMAGESOURCE = player;};};
										[LASTDAMAGESOURCE,'shotheavy'] spawn player_death;
										player setHit['Body',1];
									};
									DMG"+_randvar5+" = nil;
								};
							}
							else
							{
								[r_player_blood] spawn 
								{
									_tempBlood = _this select 0;
									uiSleep 1;
									
									if (isNil 'r_player_blood') then { r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR') then { r_player_blood = -500;YOLO = true; }; };
									if (((r_player_blood == _tempBlood) || (r_player_blood > _tempBlood)) && (r_player_blood > 3000)) then
									{
										r_player_blood = 	r_player_blood - ((random 800) + (random 800) + 500);
										_tmp = 				r_player_blood;
										uiSleep 0.5;
										
										if (isNil 'r_player_blood') then { r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR') then { r_player_blood = -500;YOLO = true; }; };
										if (r_player_blood > _tmp) then
										{
											_log = 				format['Крови должно быть %1, но сейчас %2...',_tmp,r_player_blood];
											"+_randvar10+" = 	[name player,getPlayerUID player,'SLOG',toArray (_log)];
											publicVariableServer '"+_randvar10+"';
										};
									};
									DMG"+_randvar5+" = nil;
								};
							};
						};
					};
				};
			};

тут наверное какие то цифры надо менять 

Нет, это только часть. 

Вот целый

 

 

[_name,_puid] spawn {
			_name = _this select 0;_puid = _this select 1;
			player_weaponFiredNear"+_randvar5+" = player_weaponFiredNear;
			rdh"+_randvar5+" = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\fn_damageHandler.sqf';
			checkdamage"+_randvar5+" =
			{
				private['_damage'];
				_damage = _this select 2;
				
				if((str fnc_usec_damageHandler == '{}') || (str fnc_usec_damageHandler != str rdh"+_randvar5+"))then
				{
					_state = true;
					{
						if((!isNull _x) && (alive _x) && (getPlayerUID _x == '') && !(_x isKindOf 'zZombie_Base') && !(_x isKindOf 'CAAnimalBase'))exitWith
						{
							_state = false;
						};
					} forEach ((getPos player) nearEntities ['Man',300]);
					if(_state)then
					{
						fnc_usec_damageHandler = rdh"+_randvar5+";
					};
				};
				_this call fnc_usec_damageHandler;
				if(str fnc_usec_damageHandler != '{}')then
				{
					if((_damage > 0.4) && (player == vehicle player))then
					{
						if(isNil 'DMG"+_randvar5+"')then
						{
							DMG"+_randvar5+" = true;
							if(isNil 'r_player_blood')then{ r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR')then{ r_player_blood = -500;YOLO = true; }; };
							if(r_player_blood == 12000)then
							{
								[] spawn {
									uiSleep 2;
									if(isNil 'r_player_blood')then{ r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR')then{ r_player_blood = -500;YOLO = true; }; };
									if(r_player_blood == 12000)then
									{
										_log = format['No Blood loss! %1',r_player_blood];
										_name = 'DEAD';if((alive player)&&(getPlayerUID player != ''))then{_name = name player;};
										[_name,getPlayerUID player,'SLOG',toArray (_log)] call "+_randvar240437+";
										if(isNil 'LASTDAMAGESOURCE')then{LASTDAMAGESOURCE = player;} else {if(isNull LASTDAMAGESOURCE)then{LASTDAMAGESOURCE = player;};};
										[LASTDAMAGESOURCE,'shotheavy'] spawn player_death;
										player setHit['Body',1];
									};
									DMG"+_randvar5+" = nil;
								};
							}
							else
							{
								[r_player_blood] spawn {
									_tempBlood = _this select 0;
									uiSleep 1;
									if(isNil 'r_player_blood')then{ r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR')then{ r_player_blood = -500;YOLO = true; }; };
									if(((r_player_blood == _tempBlood) || (r_player_blood > _tempBlood)) && (r_player_blood > 3000))then
									{
										r_player_blood = r_player_blood - ((random 800) + (random 800) + 500);
										_tmp = r_player_blood;
										uiSleep 0.5;
										if(isNil 'r_player_blood')then{ r_player_blood = -500; } else { if(typeName r_player_blood != 'SCALAR')then{ r_player_blood = -500;YOLO = true; }; };
										if(r_player_blood - _tmp > 10)then
										{
											_log = format['Blood should be %1 but is %2..',_tmp,r_player_blood];
											_name = 'DEAD';if((alive player)&&(getPlayerUID player != ''))then{_name = name player;};
											[_name,getPlayerUID player,'SLOG',toArray (_log)] call "+_randvar240437+";
										};
									};
									DMG"+_randvar5+" = nil;
								};
							};
						};
					};
				};
			};
			fnc_STAR_damageHandler"+_randvar5+" =
			{
				private['_unit','_hit','_damage','_source','_ammo'];
				_unit = _this select 0;
				_hit = _this select 1;
				_damage = _this select 2;
				_source = _this select 3;
				_ammo = _this select 4;
				_blockDamageFrom = "+str _blockDamageFrom+";
				if(_ammo in _blockDamageFrom)exitWith{if(player==vehicle player)then{player setVelocity [0,0,0];};false};
				
				
				_exit = false;
				_exitWith = 0;
				if(!isNull _source)then
				{
					LASTDAMAGESOURCE = _source;
					if((vehicle _source) isKindOf 'Tank')exitWith{_exitWith = 1};
					if((_damage <= 99) && (_damage > 0.1) && (_source distance player < 1000))exitWith{_exitWith = 1};
					if((((_damage > 99) && ((vehicle _source) isKindOf 'Man')) || (_damage > 12000))&&(vehicle _source != vehicle player))exitWith{_exitWith = 0};
					
					_sPUID = getPlayerUID _source;
					if(_sPUID != '')then
					{
						_name = 'DEAD';if((alive _source)&&(getPlayerUID _source != ''))then{_name = name _source;};
						_sNAME = _name;
						_dist = _source distance player;
						if((_dist > 5000) && (_damage > 0.2))then
						{
							_exit = true;
							_exitWith = 0;
							
							_dist1 = player distance "+str _mPos+";
							_dist2 = _source distance "+str _mPos+";
							if(isNil 'deathHandled')then{ deathHandled = true; } else { if(typeName deathHandled != 'BOOL')then{ deathHandled = true;YOLO = true; }; };
							if((_dist1 > 2500) && (_dist2 > 2500) && (_sPUID != '') && (getPlayerUID player != '') && (alive player) && (!deathHandled))then
							{
								_weapon = currentWeapon (vehicle _source);
								_name = 'DEAD';if((alive player)&&(getPlayerUID player != ''))then{_name = name player;};
								_log = format['Hit %1(%2) @%3 from %4 (%5m) with Weapon: %6 (%7 Damage) %8',_name,getPlayerUID player,getPosATL player,getPosATL _source,_dist,_weapon,_damage,_ammo];
								[_sNAME,_sPUID,'HLOG',toArray (_log)] call "+_randvar240437+";
							};
						};
					};
				};
				if((_exit)&&(_exitWith==0))exitWith{0};
				if((_exit)&&(_exitWith!=0))exitWith{_this call checkdamage"+_randvar5+";_damage};
				
				_this call checkdamage"+_randvar5+";
			};
			infi_fired"+_randvar5+" =
			{
				private['_cwep','_muzzle','_projectile'];
				_cwep = _this select 1;
				_muzzle = _this select 4;
				_projectile = _this select 6;
				if((_muzzle isKindOf 'Melee') || (_muzzle isKindOf ('Bol' +'tSteel')) || (_muzzle isKindOf 'WoodenArrow') || (_muzzle isKindOf 'GrenadeHand') || (_muzzle isKindOf 'ThrownObjects') || (_muzzle isKindOf 'RoadFlare') || (_muzzle isKindOf 'ChemLight'))exitWith {};
				_cmag = currentMagazine player;
				if(!(_cwep in ['','Throw','Flare','Put']) && !(_projectile in ['','PipeBomb']) && (player == vehicle player))then
				{
					_cfgmuzzle = getText(configFile >> 'CfgMagazines' >> _cmag >> 'ammo');
					if(_muzzle != _cfgmuzzle)then
					{
						player removeMagazines _cmag;
						player removeWeapon _cwep;
					};
					
					_maxAmmo = getNumber (configFile >> 'CfgMagazines' >> _cmag >> 'count');
					if(_maxAmmo > 1)then
					{
						[_maxAmmo,_cwep,_cmag] spawn {
							uiSleep 0.2;
							_maxAmmo = _this select 0;
							_cwep = _this select 1;
							_cmag = _this select 2;
							_camm = player ammo _cwep;
							if(_camm == _maxAmmo)then
							{
								player removeMagazine _cmag;
								[] spawn "+_randvar2+";
								_log = format['No Ammo Loss - Removed Current Magazine: %1 %2 %3 %4',_cwep,_cmag,_camm,_maxAmmo];
								_name = 'DEAD';if((alive player)&&(getPlayerUID player != ''))then{_name = name player;};
								[_name,getPlayerUID player,'HLOG',toArray (_log)] call "+_randvar240437+";
							};
						};
					};
					
					_swep = '';
					{
						if((getNumber (configFile >> 'CfgWeapons' >> _x >> 'Type')) == 2)exitWith
						{
							_swep = _x;
						};
					} forEach (weapons player);
					if(_cwep == _swep)then
					{
						_spd = speed _projectile;
						if(_spd >= 1800)then
						{
							player removeMagazines _cmag;
							player removeWeapon _cwep;
						};
					};
				};
			};
			fnc_animchanged"+_randvar5+" =
			{
				if((_this select 1) in ['smk_urbanproneright','smk_prone_to_urbanprone_right','smk_urbanproneleft','smk_prone_to_urbanprone_left'])then
				{
					if((nearestObject [player,'Plastic_Pole_EP1_DZ']) distance player < 75)then
					{
						[objNull, player, rswitchMove,''] call RE;
						player playActionNow 'stop';
						_log = 'Can not use urbanprone near Plot Poles!';
						hint _log;
						systemChat _log;
					};
				};
			};
			_death = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\player_death.sqf';
			while{1 == 1}do
			{
				player_death = _death;
				player allowDamage true;
				vehicle player allowDamage true;
				player removeAllEventHandlers 'Damaged';
				player removeAllEventHandlers 'Dammaged';
				player removeAllEventHandlers 'AnimDone';
				player removeAllEventHandlers 'AnimStateChanged';
				player removeAllEventHandlers 'Hit';
				player removeAllEventHandlers 'FiredNear';
				player addEventHandler ['FiredNear',{_this call player_weaponFiredNear"+_randvar5+"} ];
				player removeAllEventHandlers 'HandleDamage';
				player addEventHandler ['HandleDamage',{_this call fnc_STAR_damageHandler"+_randvar5+"} ];
				player removeAllEventHandlers 'AnimChanged';
				player addEventHandler ['AnimChanged', {_this call fnc_animchanged"+_randvar5+"}];
				player removeAllEventHandlers 'Respawn';
				player addEventHandler ['Respawn', {_id = [] spawn player_death}];
				player removeAllEventHandlers 'Killed';
				player addEventHandler ['Killed', {if(isNil 'LASTDAMAGESOURCE')then{LASTDAMAGESOURCE = player;} else {if(isNull LASTDAMAGESOURCE)then{LASTDAMAGESOURCE = player;};};_id = [LASTDAMAGESOURCE,'shotheavy'] spawn player_death}];
				player removeAllEventHandlers 'Fired';
				player addEventHandler ['Fired', {
					_this call player_fired;
					_this call infi_fired"+_randvar5+";
					if(isNil 'inSafeZone')then{ inSafeZone = false; } else { if(typeName inSafeZone != 'BOOL')then{ inSafeZone = false;YOLO = true; }; };
					if(inSafeZone)then{deleteVehicle (nearestObject [_this select 0,_this select 4]);};
				}];
				uiSleep 0.5;
			};
		}; 

 

 

Share this post


Link to post
Share on other sites
  • 0

Кто-нибудь может нормально сказать, как этот косяк исправить, а не вставлять сюда пол кода инфи? Или может у кого есть скрипт на проверку дамага технике, если он более 0.99, то убить все, что внутри - как-то так, не силен в скриптах...?

Share this post


Link to post
Share on other sites
  • 0

Кто-нибудь может нормально сказать, как этот косяк исправить, а не вставлять сюда пол кода инфи? Или может у кого есть скрипт на проверку дамага технике, если он более 0.99, то убить все, что внутри - как-то так, не силен в скриптах...?

 

if ( _damage >= 1 ) then { deleteVehicle _object; }; 
 
Edited by RiMMON (see edit history)

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 123new
      Собственно, в шапке темы написано все. Давайте в этой теме обсуждать вопрос создания 'нормальной' (привычной для всех, в том числе и для редактирования) базы данных персонажей сервера. Возможно, даже с возможностью мультисерверной работы (что крайне лишним не было бы).
       
    • By Gromillla
      При убийстве бот - игрок или игрок - игрок, надпись игрок убит выскакивает 2 раза.
      Даже при установке всего по дефолту. Кто-то сталкивался с такой проблемой? 
    • By KaumOFF
      Привет. Хотел бы спросить насчет одной проблемы, которая появилась на моем сервере. Когда один из игроков садиться в технику, то у второго эта возможность пропадает. Нету меню сесть. Сервер оверпоч.
    • By MisaAmane
      Собсна у всей техники с ключем есть баг. От туда всегда можно снять детали даже, если они в идеале, но это мелочь. Главное, что когда на трейде снимаешь деталь с машины, то она взрывается. Как это исправить?
    • By SteelSoul
      Мужики, выручайте. Отключил батлай BattlEye = 0; теперь люди после смерти появляются все ровно мертвыми( Может что-то еще надо сделать при отключении батлая?
  • 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.