modernbb Posted January 3, 2017 Posted January 3, 2017 (edited) Вставляем в 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 January 3, 2017 by modernbb 1
N1kS Posted January 3, 2017 Posted January 3, 2017 @modernbb, оформите тему нормально, напишите теги и какие-то банальные комментарии к коду.
CocaColaBear Posted January 4, 2017 Posted January 4, 2017 (edited) Зачем каждый час узнавать сколько сейчас времени (new Date()), если мы знаем, какое оно было час назад?) А минуты вообще не изменяются, а если и изменяются, то с очень маленькой погрешностью. К тому же, в теле функций лучше использовать let или const Edited January 4, 2017 by CocaColaBear
modernbb Posted January 4, 2017 Author Posted January 4, 2017 20 минут назад, CocaColaBear сказал: Зачем каждый час узнавать сколько сейчас времени (new Date()), если мы знаем, какое оно было час назад?) А минуты вообще не изменяются, а если и изменяются, то с очень маленькой погрешностью. К тому же, в теле функций лучше использовать let или const время обновляется каждую минуту а не каждый час , насчет let, это не столь важно
CocaColaBear Posted January 4, 2017 Posted January 4, 2017 9 минут назад, modernbb сказал: время обновляется каждую минуту а не каждый час , насчет let, это не столь важно Спутал, да. Каждую минуту. Все равно дергать каждый раз время - плохая затея. Нужно брать предыдущее значение и увеличивать на 1.
modernbb Posted January 4, 2017 Author Posted January 4, 2017 13 минуты назад, CocaColaBear сказал: Спутал, да. Каждую минуту. Все равно дергать каждый раз время - плохая затея. Нужно брать предыдущее значение и увеличивать на 1. со временем есть возможность погрешности так как в цикле может быть и другая логика , Date не ресурсоемкая операция , тем более раз в минуту, так что так переживать из за этого не стоит, тем более если посмотреть какие сейчас сервера и мощности , они позволят эту функцию тисячи итераций за секунду вызывать без единого лага
tmaslov22 Posted January 4, 2017 Posted January 4, 2017 Почему в SetInterval нельзя сразу задать правильный интервал обновления времени? Зачем каждую минуту обновлять время? Почему нельзя при старте сервера задать время и ВСЁ?
modernbb Posted January 4, 2017 Author Posted January 4, 2017 4 часа назад, tmaslov22 сказал: Почему в SetInterval нельзя сразу задать правильный интервал обновления времени? Зачем каждую минуту обновлять время? Почему нельзя при старте сервера задать время и ВСЁ? можно задать сразу задержку в интервале , но так как я этот кусок взял из своего мода у меня кроме времени есть и другая логика которая должна обновлять намного быстрее чем само время, по желанию можно создать для этого отдельный интервал , но зачем? Насчет времени, оно задается и при старте сервера, но обновлять его нужно так как оно не обновляется на клиенте автоматически
mrzoidberg123 Posted January 4, 2017 Posted January 4, 2017 Это будет просто дикая загрузка на сервер. Бред
modernbb Posted January 4, 2017 Author Posted January 4, 2017 7 минут назад, mrzoidberg123 сказал: Это будет просто дикая загрузка на сервер. Бред что именно будет загружать ?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now