- Сообщений: 495
- Спасибо получено: 1136
Время/Дата v. 6.1 Финальная Версия
А можно ли сделать так, чтобы день проходил быстрее ночи?
Вы извините, что влезаю не в свой калашный ряд, но даже я (а все знают, насколько я криворук и бестолков в отношении скриптов) заметил строчку:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Жуть болотная, на лапках, в тапках и с пулемётом...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Сейчас нельзя сделать, чтобы ночью время шло быстрее. Если вопрос относится только к освещению, то это настраивается в скрипте, как выше сказал CerberusKoteuka пишет: А можно ли сделать так, чтобы день проходил быстрее ночи?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Сделай эксперимент - в update любой сцены, да и хоть в update своих часов сделай sleep 120. Посмотри результат.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
UPD: Может ты все - таки имел ввиду сделать в update не sleep 120, а Graphics.wait(120)? Если да, то тут никакой Time.now.to_i и прочее не спасут, потому что пока он не сделает свой wait, другие скрипты ничего сделать не смогут...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Я сказал тебе про sleep для примера такого длительного update. По поводу wait - скорее всего он увеличивает счетчик Graphics.frame_count, но во время ожидания update у сцены не вызывается. Т.е. ты можешь запросто не добавить секунду во время. Это будет больше всего заметно в стандартной боевке, там в Window_BattleLog очень много вызовов wait.
Я сделал демку. Там несколько десятков параллельных событий и проигрывание анимации.
Скрин проблемы
Демка с проблемой
Как это можно поправить.
Часы показывают разницу времени между началом отсчета и текущим моментом. Положи в переменную метку времени на момент запуска часов (@time = Time.now.to_i). Все что тебе нужно знать во время обращения за текущим временем - сколько времени пользователь установил вначале и сколько секунд прошло со времени запуска часов (Time.now.to_i - @time). Из реальных секунд ты можешь всегда посчитать все остальное.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Жуть болотная, на лапках, в тапках и с пулемётом...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
duration.times { update }
end
Да, frame_count увеличивается в update.
Если использовать реальное время в скрипте, то можно заметить такое же отставание моего времени от реального, потому что графика нагружает систему, поэтому что использовать frame_count что не использовать - все зависит от нагрузки на систему.
Знаешь, как этого добиться? Сделать ненадолго окно консоли активным, а потом вернуться в игру...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Я не предлагаю тебе готовое решение проблемы, просто идею, как это МОЖНО починить. Это твой скрипт, тебе решать как он должен работать. Только если решишь оставить трек на фреймах - лучше убери возможность смотреть время в битве. Вангую, что там будут потери в секунд так 10 за каждую минуту активной битвы.
Это мое последнее сообщение по поводу этой проблемы. Я потратил кучу времени и даже демку сделал, а толку пока нет
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Спасибо за потраченное время.
UPD: Как мне кажется, я нашёл доказательство своим словам: на твоей демке убрал условие в update часов, убрал обновление в Scene_Map, сделал alias update в модуле Graphics и перед ним вызываю обновление времени. Казалось бы, что перед обновлением графики он должен обновлять время правильно, но даже в этом случае есть задержка в 1-2 секунды...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
P.S. Я знаю, что я говорил, что не буду писать больше по этой проблеме тут. Однако "в принципе невозможно избавиться" прозвучало как вызов
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Да, я оказался не прав, и у тебя получилось это сделать. Если хочешь, то можешь прикрутить к моему скрипту, у меня пока нет возможности выкладывать скрипты на сайт
P.S. Запихнул твой скрипт в твою демку, вызвал wait больше 20 - потерял одну секунду.
UPD: протестировал на слабом компе, где в демке выдает 4 fps - за 90 реальных секунд было 55 скриптовых.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
