Add random_messages
This commit is contained in:
parent
f15fab0055
commit
68456374ed
4 changed files with 167 additions and 0 deletions
|
@ -8,6 +8,7 @@ vote.kick_vote = false
|
|||
barrier = 102
|
||||
regen_interval = 10
|
||||
regen_amount = 1
|
||||
random_messages_interval = 60
|
||||
|
||||
#
|
||||
# CTF_PVP_ENGINE
|
||||
|
|
17
mods/random_messages/README.txt
Normal file
17
mods/random_messages/README.txt
Normal file
|
@ -0,0 +1,17 @@
|
|||
RandomMessages mod by arsdragonfly.
|
||||
Put your messages in (world directory)/random_messages,1 message per line.
|
||||
Messages can be all kinds of hints, mod usage, etc.
|
||||
Add/Remove messages on the fly:
|
||||
/rmessages viewmessages
|
||||
to see all the messages.
|
||||
/rmessages addmessage blah blah blah
|
||||
to add the random message blah blah blah.
|
||||
/rmessages removemessage 2
|
||||
to remove the 2nd random message in /rmessages viewmessages .
|
||||
In minetest.conf, random_messages_interval decides how often a message is sent.
|
||||
Released under CC0.
|
||||
Special thanks to:
|
||||
Michael Rasmussen (michael@jamhome.us)
|
||||
Enjoy it! ^_^
|
||||
arsdragonfly@gmail.com
|
||||
6/19/2013
|
1
mods/random_messages/depends.txt
Normal file
1
mods/random_messages/depends.txt
Normal file
|
@ -0,0 +1 @@
|
|||
default
|
148
mods/random_messages/init.lua
Normal file
148
mods/random_messages/init.lua
Normal file
|
@ -0,0 +1,148 @@
|
|||
--[[
|
||||
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",120)
|
||||
minetest.setting_save();
|
||||
return 120
|
||||
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 line_number = 1
|
||||
local input = io.open(minetest.get_worldpath().."/random_messages","r")
|
||||
if not input then
|
||||
local output = io.open(minetest.get_worldpath().."/random_messages","w")
|
||||
output:write("To talk to only your team, start your messages with /t. For example, /t Hello team!\n")
|
||||
output:write("If the map is ruined, use /vote to start a new vote to skip the current match.\n")
|
||||
output:write("Eat apples to restore health quickly.\n")
|
||||
io.close(output)
|
||||
input = io.open(minetest.get_worldpath().."/random_messages","r")
|
||||
end
|
||||
for line in input:lines() do
|
||||
random_messages.messages[line_number] = line
|
||||
line_number = line_number + 1
|
||||
end
|
||||
io.close(input)
|
||||
end
|
||||
|
||||
function random_messages.display_message(message_number)
|
||||
if random_messages.messages[message_number] then
|
||||
minetest.chat_send_all(random_messages.messages[message_number])
|
||||
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)
|
Loading…
Reference in a new issue