Перейти к содержанию
Авторизация  
ChillyVilly

Смена дня и ночи + погода

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

ChillyVilly

Всем привет, хочу сделать чтобы игровое время совпадало с реальным (ночь - ночь, день - день) + смена погоды, помогите реализовать) 

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


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

@ChillyVilly

 

1. Реализации системы реального времени.

По логике вещей выстроим концепцию действий. Нам нужно регулярно обновлять время на сервере. Это осуществляется функцией SetWorldTime. Для того, чтобы передать туда нужное значение часов, следует регулярно получать эти самые часы. Для этого создадим новый таймер, который будет запускаться, например, раз в час (не вижу смысла обновлять время строго в чч.00) SetTimer:

public OnGameModeInit()
{
	SetTimer("@UpdateWorldTime", 1000*60*60, true); // ms*m*h
	return 1;
}

Далее создадим функцию, которая будет производить обновление времени суток:

@UpdateWorldTime();
@UpdateWorldTime()
{
	new hour;
	gettime(hour, _, _);
		
	return SetWorldTime(hour);
}	

2. Реализация системы погоды.

Действуем по тому же принципу. Нужно раз в N-ое время обновлять погоду на сервере через SetWeather. Но, поскольку не все погоды "желательны" (есть некоторые идентификаторы погоды, которые вызывают больше негативное впечатление), мы создадим свой список с погодами в начале мода:

/*
	идентификаторы проставил просто так. Замените своими.
	Обратите внимание: количество идентификаторов - любое.
	То есть не нужно ничего нигде поправлять при добавлении
	или удалении какого-либо идентификатора погоды
*/
static const gWeathers[] = {1, 2, 3, 8, 12};

Далее создадим в OnGameModeInit таймер, который будет обновлять погоду:

public OnGameModeInit()
{
	SetTimer("@UpdateWeather", 1000*60*30, true); // update every 30 min
	return 1;
}

И, наконец, создаем функцию, в которой будем обновлять погоду на сервере:

@UpdateWeather();
@UpdateWeather()
{
	static weatherid;
	
	SetWeather(gWeathers[weatherid++]);
	
	if(weatherid == sizeof gWeathers){
		weatherid = 0;
	}
	
	return 1;
}
  • Like 3

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.