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

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

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

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

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

Переломы и урон при падение персонажа

Подскажите куда копать. Где найти ванильный скрипт который наносит урон при падении, а так же перелом костей. Нужно отключить перелом костей и нанесение урона когда на персонаже одета определенная одежда.

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


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

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

  • 0
modded class DayZPlayerImplementFallDamage
{
	override float DamageCoef(float pHeight)
	{
		if (m_Player.GetAttachmentByType(JungleBoots_ColorBase))
			return 0;

		return super.DamageCoef(pHeight);
	}
}

не тестил, общий принцип такой, могут быть граматические ошибки

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


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

@Archon7th  Твой вариант не работает, но спасибо большое  за наводку. Нашел другой пункт в DayZPlayerImplementFallDamage. Изменил его так, работает.
 

Скрытый текст

modded class DayZPlayerImplementFallDamage
{
	override void HandleFallDamage(FallDamageData pData)
	{
		m_FallDamageData = pData;
		
		m_FallDamageData.m_HealthCoef = Math.InverseLerp(HEALTH_HEIGHT_LOW, HEALTH_HEIGHT_HIGH, pData.m_Height);
		m_FallDamageData.m_HealthCoef = Randomize(DAMAGE_TYPE_GLOBAL, m_FallDamageData.m_HealthCoef);
		m_FallDamageData.m_HealthCoef = Math.Clamp(m_FallDamageData.m_HealthCoef, 0, 1);

		m_FallDamageData.m_ShockCoef = Math.InverseLerp(SHOCK_HEIGHT_LOW, SHOCK_HEIGHT_HIGH, pData.m_Height);
		m_FallDamageData.m_ShockCoef = Math.Clamp(m_FallDamageData.m_ShockCoef, 0, 1);

		m_FallDamageData.m_BrokenLegsCoef = Math.InverseLerp(BROKENLEGS_HEIGHT_LOW, BROKENLEGS_HEIGHT_HIGH, pData.m_Height);
		m_FallDamageData.m_BrokenLegsCoef = Randomize(DAMAGE_TYPE_LEGS, m_FallDamageData.m_BrokenLegsCoef);
		m_FallDamageData.m_BrokenLegsCoef = Math.Clamp(m_FallDamageData.m_BrokenLegsCoef, 0, 1);

		m_FallDamageData.m_BleedingHandsCoef = Math.InverseLerp(0, BLEEDINGHANDS_HEIGHT_LOW, pData.m_Height);
		m_FallDamageData.m_BleedingHandsCoef = Math.Clamp(m_FallDamageData.m_BleedingHandsCoef, 0, 1);
		
		m_FallDamageData.m_BleedingFeetCoef = Math.InverseLerp(0, BLEEDINGFEET_HEIGHT_LOW, pData.m_Height);
		m_FallDamageData.m_BleedingFeetCoef = Math.Clamp(m_FallDamageData.m_BleedingFeetCoef, 0, 1);

		m_FallDamageData.m_BleedingLegsCoef = Math.InverseLerp(0, BLEEDINGLEGS_HEIGHT_LOW, pData.m_Height);
		m_FallDamageData.m_BleedingLegsCoef = Math.Clamp(m_FallDamageData.m_BleedingLegsCoef, 0, 1);
		
		m_FallDamageData.m_GlovesHealthCoef = Math.InverseLerp(GLOVES_HEALTH_HEIGHT_LOW, GLOVES_HEALTH_HEIGHT_HIGH, pData.m_Height);
		m_FallDamageData.m_GlovesHealthCoef = Randomize(DAMAGE_TYPE_ATTACHMENTS, m_FallDamageData.m_GlovesHealthCoef);
		m_FallDamageData.m_GlovesHealthCoef = Math.Clamp(m_FallDamageData.m_GlovesHealthCoef, 0, 1);
		
		m_FallDamageData.m_ShoesHealthCoef = Math.InverseLerp(SHOES_HEALTH_HEIGHT_LOW, SHOES_HEALTH_HEIGHT_HIGH, pData.m_Height);
		m_FallDamageData.m_ShoesHealthCoef = Randomize(DAMAGE_TYPE_ATTACHMENTS, m_FallDamageData.m_ShoesHealthCoef);
		m_FallDamageData.m_ShoesHealthCoef = Math.Clamp(m_FallDamageData.m_ShoesHealthCoef, 0, 1);
		
		m_FallDamageData.m_PantsHealthCoef = Math.InverseLerp(PANTS_HEALTH_HEIGHT_LOW, PANTS_HEALTH_HEIGHT_HIGH, pData.m_Height);
		m_FallDamageData.m_PantsHealthCoef = Randomize(DAMAGE_TYPE_ATTACHMENTS, m_FallDamageData.m_PantsHealthCoef);
		m_FallDamageData.m_PantsHealthCoef = Math.Clamp(m_FallDamageData.m_PantsHealthCoef, 0, 1);
		
		m_FallDamageData.m_BleedingChanceCoef = Math.InverseLerp(BLEEDING_CHANCE_HEIGHT_LOW, BLEEDING_CHANCE_HEIGHT_HIGH, pData.m_Height);
		m_FallDamageData.m_BleedingChanceCoef = Math.Clamp(m_FallDamageData.m_BleedingChanceCoef, 0, 0.7);
		
		m_FallDamageData.m_BleedingChanceLegsCoef = 0.15;
		
		if (GetGame().IsServer())
		{
			PlayerBase playerBase = PlayerBase.Cast(m_Player);
			if (playerBase.GetAttachmentByType(JungleBoots_ColorBase))
			{
				
			}
			
			else if (playerBase)
			{
				AttachBleedingToZonesByHeight(playerBase);
				DamageAttachedGear(playerBase);
				playerBase.DamageAllLegs(BROKENLEGS_HEALTH_DAMAGE_MAX * m_FallDamageData.m_BrokenLegsCoef);

				vector posMS = m_Player.WorldToModel(m_Player.GetPosition());

				m_Player.ProcessDirectDamage(DT_CUSTOM, m_Player, "", FALL_DAMAGE_AMMO_HEALTH, posMS, m_FallDamageData.m_HealthCoef);
				m_Player.ProcessDirectDamage(DT_CUSTOM, m_Player, "", FALL_DAMAGE_AMMO_SHOCK, posMS, m_FallDamageData.m_ShockCoef);
			}
			
			
			if (playerBase)
				playerBase.ForceUpdateInjuredState();
		}
	}
}

 


Вопрос возможно еще как то попроще прописать?
.

Изменено пользователем alex_good_kaban (история изменений)

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


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

ой, я из 20 версии решение написал
не, боюсь никак, ты сделал все почти правильно, но есть проблема
сначала нужно убедиться что есть playerBase, а потом уже внутри проверять наличие обуви

 

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


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

@Archon7thМожешь скрипт показать? заинтересовало.

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


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

@darthcrich 
@alex_good_kaban 
вот более оптимизированный скрипт

modded class DayZPlayerImplementFallDamage
{
	override void HandleFallDamage(FallDamageData pData)
	{
		PlayerBase playerBase;
		if (GetGame().IsServer() && Class.CastTo(playerBase, m_Player) && playerBase.GetAttachmentByType(JungleBoots_ColorBase))
		{
			playerBase.ForceUpdateInjuredState();
			return;
		}
		super.HandleFallDamage(pData);
	}
}

 

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


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

@Archon7th Ну в принципе если рассматриваем что super используется после нашего кода. То да. норм решение.

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
20.04.2024 в 13:00, Archon7th сказал:

@darthcrich 
@alex_good_kaban 
вот более оптимизированный скрипт

modded class DayZPlayerImplementFallDamage { override void HandleFallDamage(FallDamageData pData) { PlayerBase playerBase; if (GetGame().IsServer() && Class.CastTo(playerBase, m_Player) && playerBase.GetAttachmentByType(JungleBoots_ColorBase)) { playerBase.ForceUpdateInjuredState(); return; } super.HandleFallDamage(pData); } }


modded class DayZPlayerImplementFallDamage
{
	override void HandleFallDamage(FallDamageData pData)
	{
		PlayerBase playerBase;
		if (GetGame().IsServer() && Class.CastTo(playerBase, m_Player) && playerBase.GetAttachmentByType(JungleBoots_ColorBase))
		{
			playerBase.ForceUpdateInjuredState();
			return;
		}
		super.HandleFallDamage(pData);
	}
}

 

Спасибо

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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

Поддержка