Lua Time On Screen (или cTime с миллисекундами)

meowprd

Тот самый Котовский
Автор темы
Проверенный
1,280
712
Версия SA-MP
  1. 0.3.7 (R1)

Time on Screen or cTime with ms

Недавно просили в разделе "Помощь" скрипт, который показывает время с миллисекундами, а у меня такой имелся, но сырой для общего пользования.
Довел до ума все нужные функции (коих не очень и много для пользователя) и отдаю скрипт на общее пользование.
В моем личном скрипте миллисекунды были немного меньшего размера и выравнены по нижней границе обычного времени, но там сильно завязано все на координатах, а мне лень их высчитывать, поэтому ограничил пользовательскую версию до разных цветов.

Возможно это очередной ненужный скрипт, но лично когда я искал cTime в миллисекундами - ничего не находил.

1626965720630.png
(при желании можно открыть исходник и выпилить приветственное сообщение, там точно не ошибетесь в строках. Ну или попросить в этой теме, я залью версию без приветствий)

Команда для открытия меню: /ctime.
Настройки все автоматически сохраняются, бла-бла-бла.
В общем вы и так все знаете, это обычный показатель времени, просто с миллисекундами, все.

Единственное, что я подмечу, это настройка цвета.
Заходим в гугл и пишем "color picker", откроется выбор цвета.
Выбираем нужный цвет и копируем HEX цвет без решетки (хештега)
Вставляем эти 6 символов в поле ввода.
Готово.
1626966132874.png

update:
перезалил, спасибо @CaJlaT на указание ошибки.
 

Вложения

  • cTime.lua
    8.5 KB · Просмотры: 17,960
Последнее редактирование:

CaJlaT

Овощ
Модератор
2,806
2,603
Lua:
local ms = string.match(tostring(os.clock()), "%d%.(%d+)") or 0
Получать миллисекунды по os.clock() не очень разумно, так как эта функция возвращает время с МОМЕНТА ЗАПУСКА ПРОГРАММЫ (ГТА), а это значит, что она не выдаст миллисекунды с пк.
Для получения миллисекунд можно использовать функцию gettime() библиотеки socket. Мой код немного костыльный, но зато он покажет реальное время с миллисекундами.
Lua:
local socket = require 'socket'

local ms = tostring(math.ceil(socket.gettime()*1000))
local ms = tonumber(string.sub(ms, #ms-2, #ms))
Видео с тестами:
 

meowprd

Тот самый Котовский
Автор темы
Проверенный
1,280
712
Lua:
local ms = string.match(tostring(os.clock()), "%d%.(%d+)") or 0
Получать миллисекунды по os.clock() не очень разумно, так как эта функция возвращает время с МОМЕНТА ЗАПУСКА ПРОГРАММЫ (ГТА), а это значит, что она не выдаст миллисекунды с пк.
Для получения миллисекунд можно использовать функцию gettime() библиотеки socket. Мой код немного костыльный, но зато он покажет реальное время с миллисекундами.
Lua:
local socket = require 'socket'

local ms = tostring(math.ceil(socket.gettime()*1000))
local ms = tonumber(string.sub(ms, #ms-2, #ms))
Видео с тестами:
И правда, как-то я и забыл об особенностях os.clock().
Спасибо за наглядный видос, исправлю.
 

Cosmo

Известный
Друг
646
2,591
 

meowprd

Тот самый Котовский
Автор темы
Проверенный
1,280
712
изобрел велосипед получается)
 

Receiver

🥩 Передай meat, всё в скип, я в темпе
Проверенный
597
818
Парсите время с сервера, высчитываете разницу между локальным и серверным, сохраняя её в переменную и при отображении прибавляете к времени эту разницу. Парсить время можно разными способами, как парсинг хтмл с time100.ru, так и использовать хеадер любого сайта, в котором возвращается текущее серверное время. Вам может помешать задержка запроса, но и тут можно выебнуться, просчитав её и прибавив к разнице время за которое был получен ответ. Для надёжности механизма нужно обновлять разницу раз в несколько минут.
 
Последнее редактирование:

meowprd

Тот самый Котовский
Автор темы
Проверенный
1,280
712
Парсите время с сервера, высчитываете разницу между локальным и серверным, сохраняя её в переменную и при отображении прибавляете к времени эту разницу. Парсить время можно разными способами, как парсинг хтмл с time100.ru, так и использовать хеадер любого сайта, в котором возвращается текущее серверное время. Вам может помешать задержка запроса, но и тут можно выебнуться, просчитав её и прибавив к разнице время за которое был получен ответ. Для надёжности механизма нужно обновлять разницу раз в несколько минут.
Почему все так набросились на серверное время, нахуя оно вам, достаточно просто знать разницу между своим временем и серверным, все, зачем эти лишние серверные таймеры
 

Receiver

🥩 Передай meat, всё в скип, я в темпе
Проверенный
597
818
Почему все так набросились на серверное время, нахуя оно вам, достаточно просто знать разницу между своим временем и серверным, все, зачем эти лишние серверные таймеры
Я и объясняю как работает подсчёт разницы
 

Leempic

Новичок
24
1
Как установить? Что надо именно?

Пишет вот это: Script died due to an error. (1369DB24)