Перейти к содержимому

Время: @time, @tick, @second

Тик, секунда, минута и миллисекунда — одно и то же время в четырёх видах. Выбирать приходится по задаче

тик 0
Установить0
=
Установить1
=
Установить2
=
Установить3
=
Операция4
=
@counter0number
миллисекундыnullnull
тикиnullnull
секундыnullnull
минутыnullnull
изТиковnullnull

Четыре переменные, и все показывают одно и то же — время с начала игры:

Переменная В чём Через две секунды
@tick в тиках, по 60 в секунду 120
@second в секундах 2
@minute в минутах 0.033
@time в миллисекундах 2000

Все дробные, все растут непрерывно: @second — это не «сколько целых секунд прошло», а честная дробь.

тик 0
Прыжок -> 40
если
Операция1
=
Операция2
=
Конец3
Операция4
=
Конец5
@counter0number
срокnullnull
сработалоnullnull
холостыхnullnull
jump 4 lessThan @second срок
op add срок @second 2
op add сработало сработало 1
end
op add холостых холостых 1

Смысл простой: программа держит срок — момент, когда ей снова можно, — и всё остальное время пролетает мимо. За десять секунд сработало доходит до пяти, а холостых итераций набегает несколько сотен.

Это обычный способ отмерять время в mlog, и он лучше wait там, где программа между делами должна продолжать работать: wait останавливает её целиком, а срок — нет.

Время идёт с начала игры, а не с запуска процессора: поставленный на десятой минуте процессор увидит в @second шестьсот, а не ноль.

Отсюда привычка запоминать начало в переменной:

jump 3 notEqual начало 0
set начало @second
op sub прошло @second начало

Так считают своё время: от первой итерации, а не от начала карты.

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.