ChillyVilly 2 Опубликовано 23 июля, 2018 Всем привет, хочу сделать чтобы игровое время совпадало с реальным (ночь - ночь, день - день) + смена погоды, помогите реализовать) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
noname_idk 150 Опубликовано 23 июля, 2018 @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; } 3 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты