156 lines
6.5 KiB
Lua
156 lines
6.5 KiB
Lua
--[[
|
|
RandomMessages mod by arsdragonfly.
|
|
arsdragonfly@gmail.com
|
|
6/19/2013
|
|
--]]
|
|
--Time between two subsequent messages.
|
|
local MESSAGE_INTERVAL = 0
|
|
|
|
math.randomseed(os.time())
|
|
|
|
random_messages = {}
|
|
random_messages.messages = {} --This table contains all messages.
|
|
|
|
function table.count( t )
|
|
local i = 0
|
|
for k in pairs( t ) do i = i + 1 end
|
|
return i
|
|
end
|
|
|
|
function table.random( t )
|
|
local rk = math.random( 1, table.count( t ) )
|
|
local i = 1
|
|
for k, v in pairs( t ) do
|
|
if ( i == rk ) then return v, k end
|
|
i = i + 1
|
|
end
|
|
end
|
|
|
|
function random_messages.initialize() --Set the interval in minetest.conf.
|
|
minetest.setting_set("random_messages_interval",7200)
|
|
minetest.setting_save();
|
|
return 1800
|
|
end
|
|
|
|
function random_messages.set_interval() --Read the interval from minetest.conf(set it if it doesn'st exist)
|
|
MESSAGE_INTERVAL = tonumber(minetest.setting_get("random_messages_interval")) or random_messages.initialize()
|
|
end
|
|
|
|
function random_messages.check_params(name,func,params)
|
|
local stat,msg = func(params)
|
|
if not stat then
|
|
minetest.chat_send_player(name,msg)
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
function random_messages.read_messages()
|
|
local mc = core.colorize
|
|
local base = "#A3B5CB"
|
|
local url = "#54a3a6"--[[good color but too agressive in this case "#44be72"]]
|
|
local highlight = "#4f8abd"
|
|
random_messages.messages = {
|
|
--mc(base, "# Illuna-Notes: Actually talk together on our ")..mc(highlight, "Mumbleserver")..mc(base," at ")..mc(url,"tchncs.de")..mc(base,"! It is similar to Teamspeak but free software and more powerful")..mc(base, "."),
|
|
mc(base, "# Illuna-Notes: Enjoy Illuna? Tell your friends and followers about it and")..mc(highlight," help this community to grow")..mc(base, "!"),
|
|
mc(base, "# Illuna-Notes: Have something in your mind? Meet your amazing community at ")..mc(url, "https://community.illuna.rocks")..mc(base," today")..mc(base, "!"),
|
|
mc(base, "# Illuna-Notes: Chat together! Even from outside the game! Join our connected Illuna ")..mc(highlight, "[ matrix ]")..mc(base, " room:")..mc(url," #illuna:tchncs.de")..mc(base, "."),
|
|
mc(base, "# Illuna-Notes: Chat together! Even from outside the game! Join our connected Illuna IRC room: ")..mc(url, "#illuna")..mc(base," on ")..mc(highlight, "Freenode")..mc(base, "."),
|
|
mc(base, "# Illuna-Notes: Chat together! Even from outside the game! Join our connected ")..mc(highlight, "Telegram")..mc(base," Group: ")..mc(url,"https://t.me/illunaminetest")..mc(base, "."),
|
|
mc(base, "# Illuna-Notes: Chat together! Even from outside the game! Join our connected ")..mc(highlight, "Discord Server")..mc(base," at ")..mc(url,"https://illuna.rocks/discord")..mc(base, "."),
|
|
mc(base, "# Illuna-Notes: ")..mc(highlight, "Illuna is powered by donations! ")..mc(base,"You can help us paying the bills at ")..mc(url,"https://illuna.rocks/donate")..mc(base,". Each tiny donation helps a bunch! And as a ")..mc(highlight, "*thank you*")..mc(base, " you'll get some Donorcoins for your donation. <3"),
|
|
mc(base, "# Illuna-Notes: It's players like you that keep the servers running, become a donor today at ")..mc(url,"https://illuna.rocks/donate")..mc(base,". In return for your support, Illuna stay's online and open for everyone, we can continue our development and you earn Donorcoins!"),
|
|
--mc(base, "# Illuna-Notes: Confused about the new, final spawnpoint? You can always go back to the old one with the ")..mc(highlight, "/spawn2")..mc(base," command")..mc(base, "."),
|
|
mc(base, "# Illuna-Notes: If you use ")..mc(highlight, "Pipeworks")..mc(base, ", please try to make as short pipes as possible using")..mc(highlight, " teleportation tubes")..mc(base, "."),
|
|
mc(base, "# Illuna-Notes: Discuss and request new mods and features in our Communityforum!"..mc(highlight, " https://community.illuna.rocks")),
|
|
mc(base, "# Illuna-Notes: On your way to the travelcenter? Why not give the")..mc(highlight, " postoffice ")..mc(base, "a visit too? it's just nearby and awaiting your beautiful/personal mailbox!"),
|
|
--mc(highlight, "# Illuna-Notes: Woohooo it's Christmas-time! Win cool exclusive items by solving the maze in the Event-Area next to the travelnet!"),
|
|
mc(highlight, "# Illuna-Notes: Coming from our VIP world or any other server? We'd be happy helping you by migrating your buildings to TechEth!"),
|
|
}
|
|
end
|
|
|
|
function random_messages.display_message(message_number)
|
|
local msg = random_messages.messages[message_number] or message_number
|
|
if msg then
|
|
minetest.chat_send_all(msg)
|
|
end
|
|
end
|
|
|
|
function random_messages.show_message()
|
|
random_messages.display_message(table.random(random_messages.messages))
|
|
end
|
|
|
|
function random_messages.list_messages()
|
|
local str = ""
|
|
for k,v in pairs(random_messages.messages) do
|
|
str = str .. k .. " | " .. v .. "\n"
|
|
end
|
|
return str
|
|
end
|
|
|
|
function random_messages.remove_message(k)
|
|
table.remove(random_messages.messages,k)
|
|
random_messages.save_messages()
|
|
end
|
|
|
|
function random_messages.add_message(t)
|
|
table.insert(random_messages.messages,table.concat(t," ",2))
|
|
random_messages.save_messages()
|
|
end
|
|
|
|
function random_messages.save_messages()
|
|
local output = io.open(minetest.get_worldpath().."/random_messages","w")
|
|
for k,v in pairs(random_messages.messages) do
|
|
output:write(v .. "\n")
|
|
end
|
|
io.close(output)
|
|
end
|
|
|
|
--When server starts:
|
|
random_messages.set_interval()
|
|
random_messages.read_messages()
|
|
|
|
local TIMER = 0
|
|
minetest.register_globalstep(function(dtime)
|
|
TIMER = TIMER + dtime;
|
|
if TIMER > MESSAGE_INTERVAL then
|
|
random_messages.show_message()
|
|
TIMER = 0
|
|
end
|
|
end)
|
|
|
|
local register_chatcommand_table = {
|
|
params = "viewmessages | removemessage <number> | addmessage <number>",
|
|
privs = {server = true},
|
|
description = "View and/or alter the server's random messages",
|
|
func = function(name,param)
|
|
local t = string.split(param, " ")
|
|
if t[1] == "viewmessages" then
|
|
minetest.chat_send_player(name,random_messages.list_messages())
|
|
elseif t[1] == "removemessage" then
|
|
if not random_messages.check_params(
|
|
name,
|
|
function (params)
|
|
if not tonumber(params[2]) or
|
|
random_messages.messages[tonumber(params[2])] == nil then
|
|
return false,"ERROR: No such message."
|
|
end
|
|
return true
|
|
end,
|
|
t) then return end
|
|
random_messages.remove_message(t[2])
|
|
elseif t[1] == "addmessage" then
|
|
if not t[2] then
|
|
minetest.chat_send_player(name,"ERROR: No message.")
|
|
else
|
|
random_messages.add_message(t)
|
|
end
|
|
else
|
|
minetest.chat_send_player(name,"ERROR: Invalid command.")
|
|
end
|
|
end
|
|
}
|
|
|
|
minetest.register_chatcommand("random_messages", register_chatcommand_table)
|
|
minetest.register_chatcommand("rmessages", register_chatcommand_table)
|