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

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

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

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

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

Ограничение стамины

modded class CommonColdMdfr
{ 
	const int AGENT_THRESHOLD_ACTIVATE = 60;
	const int AGENT_THRESHOLD_DEACTIVATE = 0;
	const int m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
	const int m_TickIntervalActive = 1;

	override protected void OnActivate(PlayerBase player)
	{
		player.IncreaseDiseaseCount();
	}

	override protected void OnDeactivate(PlayerBase player)
	{
		player.SetStamina(player.GetStaminaHandler().GetStamina(), player.GetStaminaHandler().GetStaminaMax());
		player.DecreaseDiseaseCount();
	}

	override protected void OnTick(PlayerBase player, float deltaT)
	{
		float level_of_disease = player.GetSingleAgentCountNormalized(eAgents.INFLUENZA);

		float stamina_level = player.GetStaminaHandler().GetStaminaNormalized();
		float stamina_max_level = player.GetStaminaHandler().GetStaminaMax() - Math.Lerp(0, player.GetStaminaHandler().GetStaminaMax(), level_of_disease);
		if (stamina_level > stamina_max_level)
			player.SetStamina(stamina_max_level, stamina_max_level);
		else
			player.SetStamina(stamina_level, stamina_max_level);

		if (Math.RandomFloat01() < level_of_disease / 15)
		{
			player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_SNEEZE);
		}
	}
}

Задача - добавить в простуду ограничение стамины (50% агентов - 50% стамины)
Данный код не работает
Пробовал менять текущее значение, вычисляя её порог во время игры, но возникает вопрос регенерации стамины и ограничений по типу бега (если поставить стамину в 0 и через полсекунды начать бежать - он побежит)

Можно ли вообще оперировать максимумом стамины во время игры? Если нет, можно ли отключить её регенерацию по достижении определённого порога?

П.с. ещё вопрос - есть ли возможность забирать у игрока показатель сытости (хотя бы текущий), и если да, то как

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


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

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

  • 0

Немного дурачок я. Забыл, что использовал GetStaminaNormalized(), в куске кода выше сравнивается значение 0..1 с количеством стамины, очевидно что больше будет порог стамины т.е. условие почти невыполняемо.
Но, т.к. я доводил количество агентов до 1000 (уровень болезни 100% => лимит стамины - 0, а стамина была фуловой (1)), что-то ещё ему мешает.
Проверил с GetStamina() - ничего

 

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


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



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

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

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

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

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

Войти

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

Войти сейчас

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

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

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