Интервал CreateTimer

janka37

Участник
Сообщения
11
Реакции
0
Привет,
Как я понимаю по документации SM, функция CreateTimer позволяет создовать таймер с интервалом 0.1 и не менее.
Но дело в том, что меня интересует интервал по меньше - сотые или тысячные (хотя с сотыми вполне хватило бы)
Есть ли способ добится этого? Используя тот же CreateTimer или другую функцию?

P.S. Это мне нужно для плагина-таймера, который смеряет время как быстро кто добрался от точки А к точки Б (для сервов типо Bhop, Surf, XC/KZ). Нынешний интервал не достаточно точен если расстояние не большое - у многих совпадает время (на пример 5.600)
Я знаю что это как то возможно, так как есть достаточно сервов, где таймер под SM, но отоброжает точное время даже до тысячных!

P.S.S. Я сравнительно новичок в этом, так что если можно, поподробнее ))
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Ну у меня вроде как работало при 0.05, так что таймер по идее должен и с большей точностью, чем 0.1 работать, тут надо пробовать... Например создать таймер который будет запускаться по комманде и вырубаться по другой с выводом счетчика, и по нему проверять точность...
Хотя я точно не знаю, но возможно что есть проблема с временем меньшим 1/66 секунды, то есть временем меньше одного игрового фрейма. Хотя возомжно что я ошибаюсь...
 

janka37

Участник
Сообщения
11
Реакции
0
Ну у меня вроде как работало при 0.05, так что таймер по идее должен и с большей точностью, чем 0.1 работать, тут надо пробовать... Например создать таймер который будет запускаться по комманде и вырубаться по другой с выводом счетчика, и по нему проверять точность...
Хотя я точно не знаю, но возможно что есть проблема с временем меньшим 1/66 секунды, то есть временем меньше одного игрового фрейма. Хотя возомжно что я ошибаюсь...

Ну он у меня как то рандомно работает - иногда бывает там 18.660, или 6.770 (Форматируется в тысячных, но не ловит в тысячных), Вот и на маленьких картах результат часто совпадает 5.500 или 5.600 У первых 2-3 игроков :/
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Пардон.. Нашел..
http://wiki.alliedmods.net/Timers_(SourceMod_Scripting)#Accuracy
Accuracy

The smallest possible interval is 0.1 seconds. Timers have high precision (floating point) but low accuracy, as the current time is based on the in-game tick count, not the system clock. This has two implications:
If the server is paused (not ticking), timers will not run.
The server will not always tick at an exact interval.

For example, a 1.234 second interval timer starting from time t might not tick until t+1.242 at a tickrate of 66 ticks per second.
То есть да, пока тикрейт не будет равен 100, точность будет получаться сомнительная, да и то если провисания сервера на 100 тикрейте будут, то точность тоже страдать будет
 

janka37

Участник
Сообщения
11
Реакции
0
Пардон.. Нашел..
http://wiki.alliedmods.net/Timers_(SourceMod_Scripting)#Accuracy

То есть да, пока тикрейт не будет равен 100, точность будет получаться сомнительная, да и то если провисания сервера на 100 тикрейте будут, то точность тоже страдать будет

Сервер и так на 100 )
Вот про провисание не скажу толком, заметных лагов вроде нет, но машина весьма напряжена!
Всё же это все увеличивает точность только не много, а на eventscripte на пример, есть сервер который ловит точность где то с 5-6 цыфрами (21.53120) на пример, и делает это точно, без особых проблем (кроме мощной машины наверное :D).
Чел с одного сервера (KSF) говорил что на SM ему пришлось писать отдельное разширение (extension), чтобы увеличить точность а по дефу, SM не разрешает это :/
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Сервер и так на 100 )
Вот про провисание не скажу толком, заметных лагов вроде нет, но машина весьма напряжена!
Всё же это все увеличивает точность только не много, а на eventscripte на пример, есть сервер который ловит точность где то с 5-6 цыфрами (21.53120) на пример, и делает это точно, без особых проблем (кроме мощной машины наверное :D).
Чел с одного сервера (KSF) говорил что на SM ему пришлось писать отдельное разширение (extension), чтобы увеличить точность а по дефу, SM не разрешает это :/

Провисания эти могут быть и не заметны и не сказываться на игре, поскольку сервер может сам некоторые тики пропускать, об этом же и говорилось. Фактически прип падении серверного фпс скажем до 66 лагов заметно не будет, а вот таймер будет подтормаживать и не праильно считать. И да, видимо чтобы использовать системные часы нужно писать расширение, просто так не получится...
 

janka37

Участник
Сообщения
11
Реакции
0
Провисания эти могут быть и не заметны и не сказываться на игре, поскольку сервер может сам некоторые тики пропускать, об этом же и говорилось. Фактически прип падении серверного фпс скажем до 66 лагов заметно не будет, а вот таймер будет подтормаживать и не праильно считать. И да, видимо чтобы использовать системные часы нужно писать расширение, просто так не получится...

Ясно, ну что же, спасибо за инфу ^
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
есть GetGameTime, возвращает время в секундах, базиравоный на тиках. Выдает время от начала карты
есть GetEngineTime, выдает время по точнее, начало от запуска сервера
есть GetTime. выдает время в секундах, неточное(Нельзя измерить миллисекунды). Возвращает кол-во секунд от 1.01.1970
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Можешь попробовать через OnGameFrame считать фреймы (и переводить их по формуле в мс), это конечно грех в плане нагрузки, но это вроде как самый точный метод будет.
 

Manifest

Ура, не такой как все
Сообщения
180
Реакции
127
Данный пользователь был уличен в использовании бэкдора в приватных плагинах. Крайне не рекомендуется покупать какие либо товары у пользователя.
@inklesspen и @Danyas,
я конечно всё понимаю, но зачем апать тему 4-х летней давности?
 
Сверху Снизу