swg2you 403 Опубликовано: 18 июня, 2015 Задумал я значится в своей программульке часики в углу выводить, куда ж без них. Пишу такой while true do local e={computer.pullSignal(1)} prnto(1,1,os.date('!%R')) --... end ан, нет. Часики то выводятся, но минутки иногда проскакивают через одну. Как оказалось, игровая минута вовсе не равна игровой секунде. while true do local e={computer.pullSignal(.833)} prnto(1,1,os.date('!%R')) --... end а вот так намного лучше. 1 игровые сутки == 20 реальных минут 24ч*60м=1440 игровых минут == 20м*60с=1200 реальных секунд 1200/1440=0.8(3) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Krutoy 1 169 Опубликовано: 18 июня, 2015 Тебя ждет неприятный сюрприз на сервере, когда твои часики начнут выкидывать околорандомные цифры, потому что на сервере ход времени зависит от лагов. Нас обычно спасает костыль получения времени через последнюю дату изменения файла - единственный путь в ОС, которым можно узнать реальное время, а не игровое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you Автор темы 403 Опубликовано: 18 июня, 2015 Тебя ждет неприятный сюрприз на сервере, когда твои часики начнут выкидывать околорандомные цифры, потому что на сервере ход времени зависит от лагов. Нас обычно спасает костыль получения времени через последнюю дату изменения файла - единственный путь в ОС, которым можно узнать реальное время, а не игровое. Думаю для параллельных вселенных движущихся относительно нас с неравномерной скоростью это норма ) Всегда можно повысить частоту опроса написав local e={computer.pullSignal(.05)}, но в этом случае не лишним будет добавить условие, и выводить время только если оно изменилось, local ot='' while true do local e={computer.pullSignal(.05)} local t=os.date('!%R') if t~=ot then prnto(1,1,t) ot=t end --... end чтобы избежать неоправданных трат драгоценной энергии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Krutoy 1 169 Опубликовано: 18 июня, 2015 Думаю для параллельных вселенных движущихся относительно нас с неравномерной скоростью это норма ) И зачем тебе часы, которые показывают время, которое никакое на самом деле не время? Какое применение, хотя бы, теоретическое, или, эстетическое? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you Автор темы 403 Опубликовано: 18 июня, 2015 И зачем тебе часы, которые показывают время, которое никакое на самом деле не время? Какое применение, хотя бы, теоретическое, или, эстетическое? Как не время? То что оно идет неравномерно относительно нас, ничего не значит. Солнце/луна движутся, день сменяет ночь, внутриигровое время тикает. Или на сервере время отсутсвует как класс? о_О зы аж побежал смотреть от любопытства, но не смотря на выданную кирку, застрял на стадии авторизации в лаунчере ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 18 июня, 2015 local e={computer.pullSignal(.05)} - и зачем такая лагулька? Для чего его так часто гетить? Тем более, как правильно говорит Крутой, с реальным временем оно никак не связано. Игровое время на ИТ есть в http://puu.sh/itUyl/8d6d022db1.jpg, включается кнопкой 'О' Время на ИТ замедлено для более спокойной и размеренной смены дня и ночи от ванилы (я его привязал к тикам, игровое время сейчас на сервере в 6 раз быстрее, чем астрономическое) В ваниле там 20 мин = игровым суткам. У нас игроые сутки - это 4 часа астрономических. То есть 10 сек реального времени = 1 минута игровая майна. Игровые секунды выводить вообще смысла не вижу, так как это 1/6 реальной секунды. Для чего они там нестись, как бешеные.???? Их и глаз не увидит Даже если вывести игровое время на монитор, где показаны температура реактора и прочее и сбоку есть желание прилепить игровое время, данные чем раз в секунду (os.sleep(1) ) обновлять нет смысла. Чаще, чем один фрейм в секунду с инфой какой-то просто не нужен.Это лагулька уже, а не программа. -- 1 фрейм/c с инфой для чего-то while true do os.sleep(1) t = os.date('%H час. %M мин.') -- принт времени куда-то, чистка экранов, окон, вывод всякой инфы меняющейся в фоне на экран end Ну а реальное время можно получить так, а не 1970 год, 1 апреля и игровое время Моджанга=), И ЕГО ТОЖЕ НЕ СЛЕДУЕТ ГЕТИТЬ ЧАЩЕ, ЧЕМ РАЗ В СЕКУНДУ! Это лишние телодвижения для ЭВМ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you Автор темы 403 Опубликовано: 18 июня, 2015 !%R - секунд не дает os.date('!%R') --> 18:25 а если время замедленно и 1 игровая минута==10 секунд, тогда вызов раз в секунду действительно, более чем достаточен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах