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

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

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

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

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

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

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

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

 

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

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

 

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

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


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

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

  • 0

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

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


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





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

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

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

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


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

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

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; //Думаю понятно что нужно этим заменять в таком случае
}

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

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

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


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

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

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

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


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

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


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

 

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


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

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 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 минут - клякса не появляется. Может я что-то не так сделал?

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


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

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

 

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

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


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

 

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

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

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

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


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

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

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

 

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

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

 

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

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


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

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

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

 

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

 

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

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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