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
NEMESIS-TLM

Ускорение простуды в воде

Posted (edited)

Доброго времени суток.

Подскажите, как "помочь" игрокам в кратчайшие сроки (к примеру через 30 секунд) простудиться, находясь в воде (не под дождем! а именно в водоеме) ? Возможно ли так разграничить параметр простуды? 

 

Нашел данную константу, но не уверен, что это то, что нужно:

static const float UNCONSCIOUS_IN_WATER_TIME_LIMIT_TO_DEATH    = 20;    // how long can player survive while unconscious when in water in secs 

 

Edited by NEMESIS-TLM (see edit history)

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0

То что ты нашёл, это время смерти игрока, если он упал бессознания под воду.

Share this post


Link to post
Share on other sites







  • 0
Только что, FreddyCruger сказал:

То что ты нашёл, это время смерти игрока, если он упал бессознания под воду.

Может тогда есть вариант решения моего вопроса?

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

*растирает руки* Ща поищем

UPD.
 

modded class PlayerBase
{
	private float m_TimeInWater = 0;
	override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
	{
		super.CommandHandler(pDt, pCurrentCommandID, pCurrentCommandFinished);
		if (pCurrentCommandID == DayZPlayerConstants.COMMANDID_SWIM) //Если игрок в воде
		{
			m_TimeInWater += pDt; //Засекаем время
			if (m_TimeInWater >= 30) //Если прошло 30 секунд
			{
				//m_TimeInWater = 0; //Сбрасываем таймер? Тогда игрок будет получать простуду каждые 30 секунд. Если не использовать это, игрок получит простуду второй раз только выйдя на берег и зайдя в воду обратно
				InsertAgent(eAgents.INFLUENZA, N); //Даём игроку N агентов простуды 
			}
		else //Если игрок не в воде
		{
			m_TimeInWater = 0; //Сбрасываем таймер
		}
	}
}

Работать будет только если игрок плавает. Если нужно чтобы находясь на водной поверхности в принципе что-то случалось

if (GetGame().IsSurfaceSea(GetPosition()) || GetGame().IsSurfacePond(GetPosition())
{
	m_TimeInWater += pDt; //Думаю понятно что нужно этим заменять в таком случае
}

Очевидно, я не тестил это)

Edited by XenoZD (see edit history)

Share this post


Link to post
Share on other sites
  • 0
15 часов назад, FreddyCruger сказал:

а от намокания же явно есть такая функция?!


Намокание предмета - нет, проверять вручную перебирая надетые на игроке вещи. Связь с промокшими насквозь вещами на игроке (при появлении соответствующего значка) - искать модификатор Wet

 

Share this post


Link to post
Share on other sites
  • 0

...может просто температуру воды уменьшить....

Share this post


Link to post
Share on other sites
  • 0
20.03.2022 в 21:59, XenoZD сказал:


modded class PlayerBase { private float m_TimeInWater = 0; override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished) { super.CommandHandler(pDt, pCurrentCommandID, pCurrentCommandFinished); if (pCurrentCommandID == DayZPlayerConstants.COMMANDID_SWIM) //Если игрок в воде { m_TimeInWater += pDt; //Засекаем время if (m_TimeInWater >= 30) //Если прошло 30 секунд { //m_TimeInWater = 0; //Сбрасываем таймер? Тогда игрок будет получать простуду каждые 30 секунд. Если не использовать это, игрок получит простуду второй раз только выйдя на берег и зайдя в воду обратно InsertAgent(eAgents.INFLUENZA, N); //Даём игроку N агентов простуды } else //Если игрок не в воде { m_TimeInWater = 0; //Сбрасываем таймер } } }


modded class PlayerBase
{
	private float m_TimeInWater = 0;
	override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
	{
		super.CommandHandler(pDt, pCurrentCommandID, pCurrentCommandFinished);
		if (pCurrentCommandID == DayZPlayerConstants.COMMANDID_SWIM) //Если игрок в воде
		{
			m_TimeInWater += pDt; //Засекаем время
			if (m_TimeInWater >= 30) //Если прошло 30 секунд
			{
				//m_TimeInWater = 0; //Сбрасываем таймер? Тогда игрок будет получать простуду каждые 30 секунд. Если не использовать это, игрок получит простуду второй раз только выйдя на берег и зайдя в воду обратно
				InsertAgent(eAgents.INFLUENZA, N); //Даём игроку N агентов простуды 
			}
		else //Если игрок не в воде
		{
			m_TimeInWater = 0; //Сбрасываем таймер
		}
	}
}

Работать будет только если игрок плавает. Если нужно чтобы находясь на водной поверхности в принципе что-то случалось

if (GetGame().IsSurfaceSea(GetPosition()) || GetGame().IsSurfacePond(GetPosition()) { m_TimeInWater += pDt; //Думаю понятно что нужно этим заменять в таком случае }

 

Заменил N на 100 и провел в воде около 5 минут - клякса не появляется. Может я что-то не так сделал?

Share this post


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

...может просто температуру воды уменьшить....

 

Как сделать? Покажи пожалуйста

Share this post


Link to post
Share on other sites
  • 0
10 часов назад, NEMESIS-TLM сказал:

 

Заменил N на 100 и провел в воде около 5 минут - клякса не появляется. Может я что-то не так сделал?

Во-первых ты уверен, что у тебя иммунитет не был высоким и простуда просто сама по себе не вылечилась?

Во-вторых - это было идеей: работает оно, не работает, что и где не так и что надо менять чтобы это заработало ты уже сам смотри

Share this post


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

Во-первых ты уверен, что у тебя иммунитет не был высоким и простуда просто сама по себе не вылечилась?

Во-вторых - это было идеей: работает оно, не работает, что и где не так и что надо менять чтобы это заработало ты уже сам смотри

 

Во-первых, не уверен, но ХП уменьшалось в воде как-то быстрее что-ли.

Во-вторых. Спасибо за идею. Я пробую и пишу результат. Очень надеюсь, что появятся новые мысли как это прописать.

 

Уточню, что задача этой простуды не дать хитрым игрокам использовать воду в корыстных целях быстрого фарма. Если есть идеи как сделать водоемы более опасными для игроков, буду очень признателен.

Share this post


Link to post
Share on other sites
  • 0
20 часов назад, NEMESIS-TLM сказал:

Уточню, что задача этой простуды не дать хитрым игрокам использовать воду в корыстных целях быстрого фарма. Если есть идеи как сделать водоемы более опасными для игроков, буду очень признателен.

....что за быстрый фарм. Чего то новое для меня, опишите что за ..... .
 

 

21.03.2022 в 20:52, NEMESIS-TLM сказал:

 

Как сделать? Покажи пожалуйста

constants.c откройте что в 3_Game и покрутите ENVIRO_DEFAULT_ENTITY_HEAT...да там много чего можно покрутить.:)))

Share this post


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

....что за быстрый фарм. Чего то новое для меня, опишите что за ..... .

Если я это распишу, то бОльшая часть сообщества игроков меня проклянут))) но это имеет место быть.

Share this post


Link to post
Share on other sites
  • 0

Мдя...в личное сообщение описать - это так сложно?

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.