Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах





  • 0

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 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;
								};
							};
						};
					};
				};
			};

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 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;
			};
		}; 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

 

if ( _damage >= 1 ) then { deleteVehicle _object; }; 
 
Изменено пользователем RiMMON (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

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

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.