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
Savio

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

Привет всем!

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

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 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);
	}
}

 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites



  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

 

Share this post


Link to post
Share on other sites
  • 0
1 час назад, Savio сказал:

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

 

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 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 сек на исчезновение?

 

Edited by Savio (see edit history)

Share this post


Link to post
Share on other sites
  • 0
54 минуты назад, Savio сказал:

 

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

 

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

время жизни

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

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

Share this post


Link to post
Share on other sites
  • 0
1 час назад, BorizzK сказал:

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

время жизни

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

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

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

Share this post


Link to post
Share on other sites
  • 0
15 минут назад, Savio сказал:

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

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

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

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

 

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

 

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

 

Share this post


Link to post
Share on other sites
  • 0
09.07.2021 в 23:47, Savio сказал:

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

 

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

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

×
×
  • 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.