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

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

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

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

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

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

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

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

 

Установка:

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 утра идет.

 

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

Изменено пользователем 123new (история изменений)

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


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


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

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


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

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

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

Изменено пользователем 123new (история изменений)

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


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

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

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


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

TavmanT В корне папки с миссией 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Изменено пользователем DimitriPokki (история изменений)

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


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

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 строке какое время надо писать *((( не поиму ,метод тыка тоже не работает *(((

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

Изменено пользователем TavmanT (история изменений)

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


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

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

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

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

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

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

 

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


Ссылка на сообщение
Поделиться на других сайтах
В 27.11.2018 в 21:16, 123new сказал:

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

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

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

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


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

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

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, 123new сказал:

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

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

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


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

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

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


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

так разберетесь? Вроде ничего сложного нету

Изменено пользователем 123new (история изменений)

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: 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 утра идет.
       
      Тупо, банально, дешево, но работает.
    • Автор: Golf777
      Доброго времени суток, мне бы хотелось узнать,как сделать так,что бы день шел 3 часа,а ночь 1 час, но не устанавливая никаких скриптов дополнительно.
      Заранее спасибо!
×
×
  • Создать...