Jump to content

Реальное время на сервере


modernbb

Recommended Posts

Вставляем в common.js

может кому будет полезно

var setTimeTimer = 0; //Таймер, нужен что бы игровое время обновлялось не моментально а с n интервалом

//
setTimeout(function() { 
  var date = new Date(); //получаем реальное время
  mp.environment.time.hour = date.getHours(); //устанавливаем игровое время (часы)
  mp.environment.time.minute = date.getMinutes();// устанавливаем игровое время (минуты)
},0);

//Игровой цикл
setInterval(function(){
	setTimeTimer++; //инкрементируем таймер	
	if(setTimeTimer == 60) //60 - интервал обновления времени
	{
       //Получаем и устанавливаем время
		var date = new Date();
		mp.environment.time.hour = date.getHours();
		mp.environment.time.minute = date.getMinutes();		
		setTimeTimer = 0; //Обнуляем таймер
	}
},1000); // 1000 - задержка между следующим вызовом setInterval в мс.

 

Edited by modernbb
  • Like 1
Link to comment
Share on other sites

Зачем каждый час узнавать сколько сейчас времени (new Date()), если мы знаем, какое оно было час назад?) А минуты вообще не изменяются, а если и изменяются, то с очень маленькой погрешностью.
К тому же, в теле функций лучше использовать let или const

Edited by CocaColaBear
Link to comment
Share on other sites

20 минут назад, CocaColaBear сказал:

Зачем каждый час узнавать сколько сейчас времени (new Date()), если мы знаем, какое оно было час назад?) А минуты вообще не изменяются, а если и изменяются, то с очень маленькой погрешностью.
К тому же, в теле функций лучше использовать let или const

время обновляется каждую минуту а не каждый час , насчет let, это не столь важно 

Link to comment
Share on other sites

9 минут назад, modernbb сказал:

время обновляется каждую минуту а не каждый час , насчет let, это не столь важно 

Спутал, да. Каждую минуту. Все равно дергать каждый раз время - плохая затея. Нужно брать предыдущее значение и увеличивать на 1.

Link to comment
Share on other sites

13 минуты назад, CocaColaBear сказал:

Спутал, да. Каждую минуту. Все равно дергать каждый раз время - плохая затея. Нужно брать предыдущее значение и увеличивать на 1.

со временем есть возможность погрешности так как в цикле может быть и другая логика , Date не ресурсоемкая операция , тем более раз в минуту, так что так переживать из за этого не стоит, тем более если посмотреть какие сейчас сервера и мощности , они позволят эту функцию тисячи итераций за секунду вызывать без единого лага

Link to comment
Share on other sites

Почему в  SetInterval нельзя сразу задать правильный интервал обновления времени?
Зачем каждую минуту обновлять время?
Почему нельзя при старте сервера задать время и ВСЁ?

Link to comment
Share on other sites

4 часа назад, tmaslov22 сказал:

Почему в  SetInterval нельзя сразу задать правильный интервал обновления времени?
Зачем каждую минуту обновлять время?
Почему нельзя при старте сервера задать время и ВСЁ?

можно задать сразу задержку в интервале , но так как я этот кусок взял из своего мода у меня кроме времени есть и другая логика которая должна обновлять намного быстрее чем само время, по желанию можно создать для этого отдельный интервал , но зачем? Насчет времени, оно задается и при старте сервера, но обновлять его нужно так как оно не обновляется на клиенте автоматически

 

Link to comment
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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...