@paranoyk А в чем проблема-то?
если не личная температура каждого игрока
без учета высоты
без учета поверхности на которой находится игрок
без учета "в машине" и "в здании"
именно температура воздуха, то вот так:
modded class MissionServer
{
override void OnInit()
{
super.OnInit();
GetGame().GetCallQueue( CALL_CATEGORY_SYSTEM ).CallLater( this.Every15MinMessage, 15*60000, true );
}
void Every15MinMessage()
{
Weather weather = GetGame().GetWeather();
float temperature;
temperature = GetGame().GetMission().GetWorldData().GetBaseEnvTemperature();
temperature += Math.AbsFloat(temperature * weather.GetOvercast().GetActual() * GameConstants.ENVIRO_CLOUDS_TEMP_EFFECT);
temperature -= GameConstants.ENVIRO_TEMPERATURE_WIND_COEF * weather.GetWindSpeed() / weather.GetWindMaximumSpeed();
temperature -= Math.AbsFloat(temperature * weather.GetFog().GetActual() * GameConstants.ENVIRO_FOG_TEMP_EFFECT);
int year, month, day, hour, minute;
GetGame().GetWorld().GetDate(year, month, day, hour, minute);
array<Man> players = new array<Man>();
GetGame().GetPlayers(players);
foreach (Man man : players)
{
PlayerBase player;
if (Class.CastTo(player, man))
player.MessageAction("Сегодня " + day + "." + month + "." + year + " температура воздуха "+Math.Round(temperature));
}
}
};
если личная температура окружения игрока (типа термометр на игроке)
то достаточно убрать все подсчеты температуры выше
if (Class.CastTo(player, man) && player.m_Environment)
{
float temperature = player.m_Environment.GetTemperature();
player.MessageAction("Сегодня " + day + "." + month + "." + year + " температура "+Math.Round(temperature));
}
но не забыть убедиться что m_Environment уже проинициализировался, а-то будет ошибко