lazarr/mods/lzr_messages/init.lua

50 lines
1.2 KiB
Lua

lzr_messages = {}
local message_handles = {}
local message_timers = {}
function lzr_messages.show_message(player, text, duration)
local playername = player:get_player_name()
local id
if message_handles[playername] then
id = message_handles[playername]
player:hud_change(id, "text", text)
else
id = player:hud_add({
hud_elem_type = "text",
position = { x = 0.5, y = 0.5 },
name = "message",
text = text,
number = 0xFFFFFF,
alignment = { x = 0, y = -1 },
offset = { x = 0, y = -32 },
scale = { x = 100, y = 100 },
size = { x = 3, y = 3 },
z_index = 0,
})
end
message_handles[playername] = id
message_timers[playername] = duration
return id
end
minetest.register_on_leaveplayer(function(player)
message_handles[player:get_player_name()] = nil
message_timers[player:get_player_name()] = nil
end)
minetest.register_globalstep(function(dtime)
local players = minetest.get_connected_players()
for p=1, #players do
local name = players[p]:get_player_name()
if message_timers[name] then
message_timers[name] = message_timers[name] - dtime
if message_timers[name] <= 0 then
players[p]:hud_remove(message_handles[name])
message_handles[name] = nil
message_timers[name] = nil
end
end
end
end)