Версия, которая показывает реальное серверное время.
Т.е. когда пейдей, показывает ровно xx:00:00, а не локальное время.
Запускается не сразу, а после начала новой минуты, т.к. скрипту нужно узнать разницу в секундах между локальным и серверным временем.
local events = require 'lib.samp.events'
local textdraw_id = 0
local offset_seconds = 0
local server_time = '0:00'
local first_run = true
local waiting = true
function events.onTextDrawSetString(id, str)
if not str:match('^%d?%d:%d%d$') then return end
server_time = str
if waiting and not first_run then
textdraw_id = id
offset_seconds = tonumber(os.date('%S'))
waiting = false
end
if not first_run then return {id, str .. ':00'} end
first_run = false
end
function prepend_zero(n) if n < 10 then return '0' .. n else return '' .. n end end
function replacer()
local user_seconds = tonumber(os.date('%S'))
local server_seconds = user_seconds - offset_seconds
if user_seconds < offset_seconds then server_seconds = server_seconds + 60 end
local text = sampTextdrawGetString(textdraw_id)
sampTextdrawSetString(textdraw_id, server_time .. ':' .. prepend_zero(server_seconds))
end
function main()
while not isSampAvailable() do wait(100) end
while true do
if not waiting then replacer() end
wait(1)
end
end
to-do: убрать дергание, вызываемое тем, что цифра 1 меньше по ширине, чем все остальные.