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

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

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

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

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

Трупы суицидников

Привет всем!

Подскажите пожалуйста, необходимо сделать так, что бы трупы суицидников пропадали сразу, при этом остальные тела лежали час. Интересует возможность решения данного вопроса путем скриптов, либо серверных модов. Есть такие? Заранее спасибо!

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


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

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

  • 1

Scripts\4_World\Classes

 

modded class EmoteCB : HumanCommandActionCallback
{
	override void OnAnimationEvent(int pEventID)
	{
		if (pEventID == EmoteConstants.EMOTE_SUICIDE_SIMULATION_END)
		{
			EntityAI itemInHands = m_player.GetHumanInventory().GetEntityInHands();
			ProcessSuicidedPlayer(itemInHands);
		}
		super.OnAnimationEvent(pEventID);
	}

	void ProcessSuicidedPlayer(EntityAI itemInHands)
	{
		if (m_player) m_player.SetLifetime(3);
		if (itemInHands) itemInHands.SetLifetime(3);
	}
}

Установим время жизни 3 сек
Причина? Если грохнуть тело сразу может быть сбой сервера

 

Но! Можно отмоддидь PlayerBase и сделать там функцию или вызов которые удалят и перса и оружие

И вызывать ее

Но предварительно уствновить флаг - для этого то же свая\ем функцию (SetSuicided) и создадим переменную m_Suicided в PlayerBase

 

 

modded class EmoteCB : HumanCommandActionCallback
{
	override void OnAnimationEvent(int pEventID)
	{
		if (pEventID == EmoteConstants.EMOTE_SUICIDE_SIMULATION_END)
		{
			EntityAI itemInHands = m_player.GetHumanInventory().GetEntityInHands();
			m_player.SetSuicided(itemInHands);
		}
		super.OnAnimationEvent(pEventID);
	}
}
class PlayerBase extends ManBase
{
	bool m_Suicided;

	void SetSuicided(EntityAI item)
	{
		m_Suicided = true;
		if (item) GetGame().ObjectDelete(item);
	}

	override void EEKilled( Object killer )
	{
		super.EEKilled( killer );
		if (m_Suicided) GetGame().ObjectDelete(this);
	}
}

 

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

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


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





  • 0

PlayerBase.c файл функция EEKilled необходимо модифицировать таким образом, чтобы при смерти игрока шла проверка, мол если игрок умер в близости к таким то координатам или радиусе, то удалять тело через x времени, в противном случае не трогать

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


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

труп и есть труп и игре пофиг каким образом он умер. Поэтому только зоны, как подсказали выше, но при этом оно будет работать и с теми, кто умер не из-за суицида.

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


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

То есть если я все таки хочу работать именно с суицидниками, для 100% точности только мод?

 

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


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

То есть если я все таки хочу работать именно с суицидниками, для 100% точности только мод?

 

в любом случае это мод, хотя бы серверный, но 100% мод. А вот как будете отделять именно суицидников от остальных это уже от умения написать код завыисит

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


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

В EmoteManager все легко отделить

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


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

Scripts\4_World\Classes
 


modded class EmoteCB : HumanCommandActionCallback
{
	override void OnAnimationEvent(int pEventID)
	{
		if (pEventID == EmoteConstants.EMOTE_SUICIDE_SIMULATION_END)
		{
			EntityAI itemInHands = m_player.GetHumanInventory().GetEntityInHands();
			ProcessSuicidedPlayer(itemInHands);
		}
		super.OnAnimationEvent(pEventID);
	}

	void ProcessSuicidedPlayer(EntityAI itemInHands)
	{
		if (m_player) m_player.SetLifetime(3);
		if (itemInHands) itemInHands.SetLifetime(3);
	}
}

Установим время жизни 3 сек
Причина? Если грохнуть тело сразу может быть сбой сервера

 

Я правильно понял, что можно просто сделать так, главное ставить не меньше 3 сек на исчезновение?

 

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

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


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

 

Я правильно понял, что можно просто сделать так, главное ставить не меньше 3 сек на исчезновение?

 

ну либо второй вариант где труп удалится сам

время жизни

если убьется сам при другом игроке - труп будет лежать пока другой не отбежит на достаточное расстояние

тут уж сами решайте как лучше

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


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

ну либо второй вариант где труп удалится сам

время жизни

если убьется сам при другом игроке - труп будет лежать пока другой не отбежит на достаточное расстояние

тут уж сами решайте как лучше

 Спасибо. Осталось понять что это за директория и откуда ее взять: "Scripts\4_World\Classes"?)))

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


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

 Спасибо. Осталось понять что это за директория и откуда ее взять: "Scripts\4_World\Classes"?)))

ну, Вам остается прочитать часть форума на тему

что такое моддинг

как делать моды

 

хотите готовое?

 

обращайтесь в личку

 

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


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

Окей, спасибо!

 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
09.07.2021 в 23:47, Savio сказал:

Окей, спасибо!

 

Надеюсь за то что купил изначально у BorizzK он меня не будет пинать ногами)
Вот тебе готовое, можно использовать только на серверной стороне.
https://steamcommunity.com/sharedfiles/filedetails/?id=2260158547

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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