-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.lua
More file actions
45 lines (40 loc) · 1.63 KB
/
init.lua
File metadata and controls
45 lines (40 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
local chat_range = tonumber(minetest.setting_get("chat_range")) or 50
local function send_online_staff(message)
local players = minetest.get_connected_players()
for i in pairs(players) do
local name = players[i]:get_player_name()
if minetest.check_player_privs(name, {kick=true})then
minetest.chat_send_player(name, message)
end
end
end
minetest.register_on_chat_message(function(name, message)
message = minetest.strip_colors(message)
local first_char = message:sub(1,1)
minetest.log(first_char)
if first_char == "[" then
local msg = message:sub(2)
if not msg or msg == "" then
minetest.chat_send_player(name, "Append \"[\" to the front of your message to broadcast only to players within a "..chat_range.." node radius")
return true
end
local message = "["..name.."] "..msg
-- Send to all staff
send_online_staff(message)
-- Get pos to send from
local player = minetest.get_player_by_name(name)
local pos = player:get_pos()
-- Get objects
local objects = minetest.get_objects_inside_radius(pos, chat_range)
for i, o in pairs(objects) do
-- Only send to players who aren't staff (otherwise staff will get 2 messages)
if o:is_player() then
local name = o:get_player_name()
if not minetest.check_player_privs(name, {kick=true}) then
minetest.chat_send_player(name, message)
end
end
end
return true
end
end)