]> git.lizzy.rs Git - mt_biblebot.git/blob - init.lua
Update init.lua
[mt_biblebot.git] / init.lua
1 --[[
2 Random_messages mod by arsdragonfly.
3 arsdragonfly@gmail.com
4 6/19/2013
5 Re-writted by: maikerumine 20170710
6 --]]
7 --Time between two subsequent verses.
8 local VERSE_INTERVAL = 0
9 -- Added default verses file
10 local default_verses_file = "mt_biblebot"
11
12 math.randomseed(os.time())
13
14 mt_biblebot = {}
15 mt_biblebot.verses = {} --This table contains all verses.
16
17 function table.count( t )
18         local i = 0
19         for k in pairs( t ) do i = i + 1 end
20         return i
21 end
22
23 function table.random( t )
24         local rk = math.random( 1, table.count( t ) )
25         local i = 1
26         for k, v in pairs( t ) do
27                 if ( i == rk ) then return v, k end
28                 i = i + 1
29         end
30 end
31 --[[
32 function mt_biblebot.initialize() --Set the interval in minetest.conf.
33         minetest.settings:set("mt_biblebot_interval",180)
34         minetest.settings:save();
35         return 180
36 end
37
38 function mt_biblebot.set_interval() --Read the interval from minetest.conf(set it if it doesn'st exist)
39         VERSE_INTERVAL = tonumber(minetest.settings:get("mt_biblebot_interval")) or mt_biblebot.initialize()
40 end
41 ]]
42 function mt_biblebot.check_params(name,func,params)
43         local stat,vrs = func(params)
44         if not stat then
45                 minetest.chat_send_player(name,vrs)
46                 return false
47         end
48         return true
49 end
50
51 function mt_biblebot.read_verses()
52         local line_number = 1
53         -- define input 
54         local input = io.open(minetest.get_worldpath().."/mt_biblebot","r")
55         -- no input file found
56         if not input then
57                 -- look for default file
58         local default_input = io.open(minetest.get_modpath("mt_biblebot").."/"..default_verses_file,"r")
59                 local output = io.open(minetest.get_worldpath().."/mt_biblebot","w")
60                 if not default_input then
61                         -- blame the admin if not found
62                         output:write("Blame the server admin! He/She has probably not edited the random verses yet.\n")
63                         output:write("Tell your dumb admin that this line is in (worldpath)/mt_biblebot \n")
64                 else
65                         -- or write default_input content in worldpath message file
66                         local content = default_input:read("*all")
67                         output:write(content)
68                 end
69                 io.close(output)
70                 io.close(default_input)
71                 input = io.open(minetest.get_worldpath().."/mt_biblebot","r")
72         end
73         -- we should have input by now, so lets read it
74         for line in input:lines() do
75                 mt_biblebot.verses[line_number] = line
76                 line_number = line_number + 1
77         end
78         io.close(input)
79 end
80 --[[
81 function mt_biblebot.display_verse(verse_number)
82         local vrs = mt_biblebot.verses[verse_number] or verse_number
83         if vrs then
84                 minetest.chat_send_all(vrs)
85         end
86 end
87
88 function mt_biblebot.show_verse()
89         mt_biblebot.display_message(table.random(mt_biblebot.verses))
90 end
91 ]]
92
93 --=======
94 --BEERHOLDER CODE HERE
95 function mt_biblebot.display_verse(name, verse_number)
96         if not verse_number then 
97                 verse_number = name
98                 name = "(anonymus)"
99         end
100         local vrs = mt_biblebot.verses[verse_number] or verse_number
101         if vrs then
102 --              minetest.chat_send_all(vrs)
103                 for _,player in ipairs(minetest.get_connected_players()) do
104                         local target = player:get_player_name()
105                                         minetest.chat_send_player(target, string.char(0x1b).."(c@#00ff00)"..
106                                                                                                           string.format("[%s] %s", "Biblebot by " .. name, vrs))        
107                 end
108         end
109 end
110
111 function mt_biblebot.show_verse(name)
112         local vrs = string.char(0x1b).."(c@#00ff00)"..table.random(mt_biblebot.verses)
113         mt_biblebot.display_verse(name, vrs)
114 end
115 --=======
116
117 function mt_biblebot.list_verses()
118         local str = ""
119         for k,v in pairs(mt_biblebot.verses) do
120                 str = str .. k .. " | " .. v .. "\n"
121         end
122         return str
123 end
124 --[[
125 function mt_biblebot.remove_verse(k)
126         table.remove(mt_biblebot.verses,k)
127         mt_biblebot.save_verses()
128 end
129
130 function mt_biblebot.add_verse(t)
131         table.insert(mt_biblebot.verses,table.concat(t," ",2))
132         mt_biblebot.save_verses()
133 end
134
135 function mt_biblebot.save_verses()
136                 local output = io.open(minetest.get_worldpath().."/mt_biblebot","w")
137                 for k,v in pairs(mt_biblebot.verses) do
138                         output:write(v .. "\n")
139                 end
140                 io.close(output)
141 end
142 ]]
143 --When server starts:
144 --mt_biblebot.set_interval()
145 mt_biblebot.read_verses()
146 --[[
147 local TIMER = 0
148 minetest.register_globalstep(function(dtime)
149         TIMER = TIMER + dtime;
150         if TIMER > MESSAGE_INTERVAL then
151                 mt_biblebot.show_verse()
152                 TIMER = 0
153         end
154 end)
155 ]]
156
157 --[[
158 local register_chatcommand_table = {
159         params = "viewverses | removemverse <number> | addverse <number>",
160         privs = {server = true},
161         description = "View and/or alter the server's random verses",
162         func = function(name,param)
163                 local t = string.split(param, " ")
164                 if t[1] == "viewverses" then
165                         minetest.chat_send_player(name,mt_biblebot.list_verses())
166                 elseif t[1] == "removeverse" then
167                         if not mt_biblebot.check_params(
168                         name,
169                         function (params)
170                                 if not tonumber(params[2]) or
171                                 mt_biblebot.verses[tonumber(params[2])] == nil then
172                                         return false,"ERROR: No such verse."
173                                 end
174                                 return true
175                         end,
176                         t) then return end
177                         mt_biblebot.remove_verse(t[2])
178                 elseif t[1] == "addverse" then
179                         if not t[2] then
180                                 minetest.chat_send_player(name,"ERROR: No verse.")
181                         else
182                                 mt_biblebot.add_verse(t)
183                         end
184                 else
185                                 minetest.chat_send_player(name,"ERROR: Invalid command.")
186                 end
187         end
188 }
189
190 ]]
191 --BEERHOLDER CODE HERE
192 local register_show_verse = {
193         params = "",
194         description = "Say a random verse",
195         func = function(name, param)
196                 mt_biblebot.show_verse(name)
197         end
198 }
199
200 --minetest.register_chatcommand("mt_biblebot", register_chatcommand_table)
201 --minetest.register_chatcommand("rverses", register_chatcommand_table)
202 --BEERHOLDER CODE HERE
203 minetest.register_chatcommand("verse", register_show_verse)