lp_api/router.lua

101 lines
3.7 KiB
Lua

--
-- router
--
lp_api.router = {}
lp_api.router.cmd = minetest.settings:get("lp_api.router.cmd") or false
function lp_api.router.to_string(tab, from_key)
local res
for k = #tab, from_key, -1 do
if res then
res = tab[k].." "..res
else
res = tab[k]
end
end
return res
end
function lp_api.msg_router(data)
if data.type == "chat" then
minetest.chat_send_all(core.colorize("#debd21", "<"..data.player.."> "..data.message))
end
if data.type == "cmd" and lp_api.router.cmd then
if data.command == "msg" then
minetest.chat_send_player(data.args[1],
core.colorize("#de6821", "<"..data.player.."> "..lp_api.router.to_string(data.args, 2)))
end
if data.command == "ban" then
minetest.ban_player(data.args[1])
lp_api.publisher.pub_msg("minetest", "system", "Player {"..data.args[1].."} Banned!", "")
end
if data.command == "unban" then
minetest.unban_player_or_ip(data.args[1])
lp_api.publisher.pub_msg("minetest", "system", "Player {"..data.args[1].."} UnBanned!", "")
end
if data.command == "kick" then
local result = minetest.kick_player(data.args[1], lp_api.router.to_string(data.args, 2))
if result then
if data.args[2] then
lp_api.publisher.pub_msg("minetest", "system",
"Player {"..data.args[1].."} kicked!", lp_api.router.to_string(data.args, 2))
else
lp_api.publisher.pub_msg("minetest", "system",
"Player {"..data.args[1].."} kicked!", "")
end
end
end
if data.command == "grant" then
if data.args[2] then
local sp = lp_api.router.to_string(data.args, 2)
local add_privs = minetest.string_to_privs(sp)
local privs = minetest.get_player_privs(data.args[1])
for p, _ in pairs(add_privs) do
privs[p] = true
end
minetest.set_player_privs(data.args[1], privs)
lp_api.publisher.pub_msg("minetest", "system", "The {"..data.args[1].."} was given the", sp)
end
end
if data.command == "revoke" then
if data.args[2] then
local sp = lp_api.router.to_string(data.args, 2)
local add_privs = minetest.string_to_privs(sp)
local privs = minetest.get_player_privs(data.args[1])
for p, _ in pairs(add_privs) do
privs[p] = nil
end
minetest.set_player_privs(data.args[1], privs)
lp_api.publisher.pub_msg("minetest", "system", "The {"..data.args[1].."} was taken away the", sp)
end
end
if data.command == "privs" then
local privs = minetest.privs_to_string(minetest.get_player_privs(data.args[1]), ' ')
lp_api.publisher.pub_msg("minetest", "system", "Privileges of {"..data.args[1].."}:", privs)
end
if data.command == "status" then
lp_api.publisher.pub_msg("minetest", "system", "Status server.", minetest.get_server_status())
end
end
end
minetest.register_on_chat_message(function(name, message)
lp_api.publisher.pub_msg(name, "chat", "", message)
end)
minetest.register_on_joinplayer(function(player)
lp_api.publisher.pub_msg("minetest", "chat", "", "player {"..player:get_player_name().."} joined the game")
end)
minetest.register_on_leaveplayer(function(player)
lp_api.publisher.pub_msg("minetest", "chat", "", "player {"..player:get_player_name().."} left the game")
end)