mirror of
https://gitlab.com/4w/mtimer.git
synced 2024-11-24 16:23:44 +01:00
47 lines
1.6 KiB
Lua
47 lines
1.6 KiB
Lua
local m = mtimer
|
|
|
|
|
|
-- When a player joins
|
|
--
|
|
-- 1. Check if a hard reset was requested and perform it if it was
|
|
-- 2. Set default values if not set
|
|
-- 3. Set session start timestamp
|
|
-- 4. Set “empty” HUD element and write ID to meta data for later use
|
|
minetest.register_on_joinplayer(function(player)
|
|
local meta = player:get_meta()
|
|
local name = player:get_player_name()
|
|
local re = meta:get_int('mtimer:hard_reset_everything')
|
|
|
|
-- Forecefully remove all meta data set in the player object that starts
|
|
-- with `mtimer:` prefix (perform the requested reset everything).
|
|
if re > 0 then
|
|
local message = m.translator('All configuration was reset. Server time of the requested: @1', os.date('%c', re))
|
|
for fname,fvalue in pairs(meta:to_table().fields) do
|
|
if fname:sub(1,7) == 'mtimer:' then
|
|
meta:set_string(fname, '')
|
|
end
|
|
end
|
|
minetest.chat_send_player(name, '[mTimer] '..message)
|
|
end
|
|
|
|
-- Set all unset metadata to their defined default values
|
|
for _,def in pairs(m.meta) do
|
|
local current = meta:get_string(def.key)
|
|
if current == '' then meta:set_string(def.key, def.default) end
|
|
end
|
|
|
|
-- Always set session start timestamp for using it within the custom timer
|
|
meta:set_string('mtimer:session_start', os.time())
|
|
|
|
-- Initially set empty HUD element to store the ID for updates
|
|
meta:set_string('mtimer:hud_id', player:hud_add({
|
|
hud_elem_type = 'text',
|
|
text = '',
|
|
number = '0x000000',
|
|
position = {x=0,y=0},
|
|
alignment = {x=0,y=0},
|
|
size = {x=0,y=0},
|
|
offset = {x=0,y=0}
|
|
}))
|
|
end)
|