Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Нужна помощь?

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

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • Не хотите БАН?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок
  • Загляните на торговую площадку

    Там вы можете купить
    Всё что касается игровых серверов
123new

'Перемотка' игрового времени

Recommended Posts

В данной теме опубликую скриптик, который уже давно лежит на форуме в разделе помощи.

 

Установка:

1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c
2. В самом начале файла добавляем:

#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\Correct_InGame_time.c" 

И после строки

weather.SetWindFunctionParams(0, 0, 0);

добавляем:

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(Correct_InGame_time, 1000, true);   

где 1000 - 1 секунда
3. Создаем вручную файл с именем "Correct_InGame_time.c" и заполняем его следующим текстом:

static void Correct_InGame_time()
{
	private int year, month, day, hour, minute;
	GetGame().GetWorld().GetDate( year, month, day, hour, minute );
	
		if (hour < 7)
		{
			GetGame().GetWorld().SetDate(year, month, day, 7, 3);
		}
		if (hour >= 20)
		{
			GetGame().GetWorld().SetDate(year, month, (day + 1), 7, 3);
		}
}

4. Настраиваем файл как нам нужно. Т.е. как видим, с 7 утра и до 8 вечера время на сервере внутриигровое не трогается, при наступлении от 20:00 и до 7 утра у нес автопромотка на 7:03 утра идет.

 

Тупо, банально, дешево, но работает.

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites



123new Доброго времени суток ! Есть идея как сделать перемотку времени на за 1 секунду, а например за 30 минут ? Вписывал в эти значения GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(Correct_InGame_time, 1000, true); вместо 1000 (18000000),  что равняется 30 минутам, но скрипт все равно перематывает за 1 секунду. Пытался также здесь вписать данное значение static void Correct_InGame_time(18000000) но если так сделать появляется ошибка при запуске сервера. Как настроить перемотку ( ускорение) плавно и не так заметно для игроков ?

Share this post


Link to post
Share on other sites

Altair потому как функция Correct_InGame_time будет выполняться в вашем случае не каждую 1 секунду, а каждые 30 минут. А что в этой функции посмотреть не догадались? Ну так посмотрите что вы выполняете каждые 30 минут то.

Само течение времени от этой функции не зависит от слова вообще никак, для нее, если верить оф. конфигу сервера с оф. документации предусмотрен параметр акселерации времени (множитель ускорения 'скорости течения времени в игре') на сервере в значениях от 0 до 24.

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites

всем привет,подскажите пожта не совсем понятно  с 3 пунктом  *((( создал фаил с  содержимым ,а куда его вложить надо ???? подскажите пож-та . спасибо

Share this post


Link to post
Share on other sites

DimitriPokki

 static void Correct_InGame_time()
{
    private int year, month, day, hour, minute;
    GetGame().GetWorld().GetDate( year, month, day, hour, minute );
    
    if ((hour < 7) || (hour >= 20))
    {
        if (hour < 7)
        {
            GetGame().GetWorld().SetDate(2018, 7, 7, 7, 3);
        }
        if (hour >= 20)
        {
            GetGame().GetWorld().SetDate(2018, 7, 8, 7, 3);
        }
    }
}

Подскажите в 3-4 строке какое время надо писать *((( не поиму ,метод тыка тоже не работает *(((

Спасибо (ночь проходит за секунду)

Edited by TavmanT (see edit history)

Share this post


Link to post
Share on other sites

TavmanT код оформляйте через спец. опцию при вставке в сообщения.

  if ((hour < 7) || (hour >= 20))
     if (hour < 7)
                    if (hour >= 20)

в этих строках 7 - это 7:00 на сервере

20 - 20:00 на сервере

Т.е. в промежутке времени от 20:00 до 06:59 включительно (07:00 не попадает, условие четкое стоит) сработает автоперемотка.

 

Share this post


Link to post
Share on other sites
В 27.11.2018 в 21:16, 123new сказал:

Altair потому как функция Correct_InGame_time будет выполняться в вашем случае не каждую 1 секунду, а каждые 30 минут. А что в этой функции посмотреть не догадались? Ну так посмотрите что вы выполняете каждые 30 минут то.

Само течение времени от этой функции не зависит от слова вообще никак, для нее, если верить оф. конфигу сервера с оф. документации предусмотрен параметр акселерации времени (множитель ускорения 'скорости течения времени в игре') на сервере в значениях от 0 до 24.

Это все не то что вы пишите в конфиге сервера ускорение от 0 до 24 это я прекрасно знаю, не первый года серверами занимаюсь. Там время ускоряется общее не зависимо день от ночи , все бежит с равным ускорением. Вопрос был конкретно за данный скрипт ибо ничего другого я не видел с перемоткой времени , конкретно интересовало можно ли в этом скрипте сделать чтобы ночь не за секунду пролетала , а за 30 минут, пример я написал  просто логически если срабатывает за 1 секунду то можно и увеличить это значение до 30 минут например , ночь на сервер тоже нужна, по примеру 3 часа день 1 ночи в идеале, для сервера с авторестартом каждые 4 часа.

Share this post


Link to post
Share on other sites

Altair чисто в теории можно и такое сделать, но учитывая, что добавили ускорение ночи в конфиг сервера теперь, не считаю нужным такой фигней страдать уже.

Share this post


Link to post
Share on other sites
1 час назад, 123new сказал:

Altair чисто в теории можно и такое сделать, но учитывая, что добавили ускорение ночи в конфиг сервера теперь, не считаю нужным такой фигней страдать уже.

Возможно , еще не проверял,  ибо у меня почему то в конфиге не было этого значения serverNightTimeAcceleration=0;  сейчас добавил буду тестировать. 

Share this post


Link to post
Share on other sites

Как это сделать на сегодняшний день, файл init.c очень изменен куда что заполнять понятия не имею вообще, а оч нужно.. Есть добрые люди кто поделится??

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 123new
      В данной теме опубликую скриптик, который уже давно лежит на форуме в разделе помощи. Информация обновления для версии 1.0
       
      Установка:
      1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c
      2. В самом начале файла добавляем:
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\Correct_InGame_time.c" Находим блок функции
      void main() и перед закрывающей скобкой в конце этого блока '}' добавляем:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(Correct_InGame_time, 1000, true); где 1000 - 1 секунда
      3. Создаем вручную файл с именем "Correct_InGame_time.c" и заполняем его следующим текстом:
      static void Correct_InGame_time() { private int year, month, day, hour, minute; GetGame().GetWorld().GetDate( year, month, day, hour, minute ); if (hour < 7) { GetGame().GetWorld().SetDate(year, month, day, 7, 3); } if (hour >= 20) { GetGame().GetWorld().SetDate(year, month, (day + 1), 7, 3); } } 4. Настраиваем файл как нам нужно. Т.е. как видим, с 7 утра и до 8 вечера время на сервере внутриигровое не трогается, при наступлении от 20:00 и до 7 утра у нес автопромотка на 7:03 утра идет.
       
      Тупо, банально, дешево, но работает.
    • By Golf777
      Доброго времени суток, мне бы хотелось узнать,как сделать так,что бы день шел 3 часа,а ночь 1 час, но не устанавливая никаких скриптов дополнительно.
      Заранее спасибо!
×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.