mirror of
https://gitlab.com/lunovox/e-urn.git
synced 2025-03-15 07:21:22 +00:00
115 lines
3.9 KiB
Lua
115 lines
3.9 KiB
Lua
minetest.register_privilege("electoraljudge", {
|
|
description=modEUrn.translate("Allows you to configure the Electronic Urn."),
|
|
give_to_singleplayer=false,
|
|
})
|
|
|
|
modEUrn.handler = {
|
|
--[[ ]]
|
|
elected = {
|
|
president = {
|
|
name = "", --name of the elected candidate.
|
|
when = 0, --when the candidate was elected.
|
|
voters = { }, --names of voters who voted for this elected candidate.
|
|
},
|
|
},
|
|
candidates = {
|
|
president = { }, --modEUrn.handler.candidates.president[<candidatename>] = <when> | If the candidate has not updated his candidacy for more than 6 months, he loses his candidacy application.
|
|
},
|
|
--]]
|
|
voters = { }, --modEUrn.handler.voters[playername]
|
|
}
|
|
|
|
modEUrn.doSave = function()
|
|
local file = io.open(modEUrn.urlTabela, "w")
|
|
if file then
|
|
file:write(minetest.serialize(modEUrn.handler))
|
|
file:close()
|
|
minetest.log('action',"[E-URN] "..modEUrn.translate("Database saved in file '%s'!"):format(modEUrn.urlTabela))
|
|
else
|
|
minetest.log('error',"[E-URN:ERRO] "..modEUrn.translate("The file '%s' is not in table format!"):format(modEUrn.urlTabela))
|
|
end
|
|
end
|
|
|
|
modEUrn.doLoad = function()
|
|
local file = io.open(modEUrn.urlTabela, "r")
|
|
if file then
|
|
local handler = minetest.deserialize(file:read("*all"))
|
|
file:close()
|
|
if not handler or type(handler) ~= "table" then
|
|
minetest.log('error',"[E-URN:ERRO] "..modEUrn.translate("The file '%s' is not in table format!"):format(modEUrn.urlTabela))
|
|
return { }
|
|
else
|
|
modEUrn.handler = handler
|
|
minetest.log('action',"[E-URN] "..modEUrn.translate("Database '%s' loaded!"):format(modEUrn.urlTabela))
|
|
end
|
|
end
|
|
end
|
|
|
|
modEUrn.on_leaveplayer = function(player)
|
|
local playername = player:get_player_name()
|
|
local now = os.time() --Em milisegundos
|
|
if modEUrn.handler.voters[playername]~=nil and type(modEUrn.handler.voters[playername]) == "table" then
|
|
if modEUrn.handler.voters[playername].times.login~=nil and type(modEUrn.handler.voters[playername].times.login) == "number" and modEUrn.handler.voters[playername].times.login > 0 then
|
|
if modEUrn.handler.voters[playername].times.played~=nil and type(modEUrn.handler.voters[playername].times.played) == "number" and modEUrn.handler.voters[playername].times.played > 0 then
|
|
modEUrn.handler.voters[playername].times.played = modEUrn.handler.voters[playername].times.played + (now - modEUrn.handler.voters[playername].times.login)
|
|
else
|
|
modEUrn.handler.voters[playername].times.played = (now - modEUrn.handler.voters[playername].times.login)
|
|
end
|
|
modEUrn.handler.voters[playername].times.login = 0
|
|
modEUrn.handler.voters[playername].times.logout = now
|
|
end
|
|
else
|
|
minetest.log('error',"[E-URN:ERROR:ONLEAVEPLAYER] "..modEUrn.translate("Impossible to register logout for player '%s' !"):format(dump(player)))
|
|
end
|
|
end
|
|
|
|
minetest.register_on_leaveplayer(function(player)
|
|
modEUrn.on_leaveplayer(player)
|
|
modEUrn.doSave()
|
|
end)
|
|
|
|
--[[
|
|
minetest.register_on_newplayer(function(player)
|
|
|
|
end)
|
|
--]]
|
|
|
|
--[[
|
|
minetest.register_on_prejoinplayer(function(name, ip)
|
|
|
|
end)
|
|
--]]
|
|
|
|
minetest.register_on_joinplayer(function(player)
|
|
local playername = player:get_player_name()
|
|
local now = os.time() --Em milisegundos
|
|
if playername~=nil and type(playername)=="string" and playername~="" then
|
|
if modEUrn.handler.voters[playername]==nil then
|
|
modEUrn.handler.voters[playername] = {
|
|
times ={
|
|
register = now,
|
|
played = 0,
|
|
login = now,
|
|
logout = 0,
|
|
},
|
|
}
|
|
end
|
|
modEUrn.handler.voters[playername].times.login = now
|
|
modEUrn.handler.voters[playername].times.logout = 0
|
|
else
|
|
minetest.log('error',"[E-URN:ERROR:ONJOINPLAYER] "..modEUrn.translate("Impossible to register login for player '%s' !"):format(dump(player)))
|
|
end
|
|
end)
|
|
|
|
minetest.register_on_shutdown(function()
|
|
local players = minetest.get_connected_players()
|
|
if #players >= 1 then
|
|
for _, player in ipairs(players) do
|
|
modEUrn.on_leaveplayer(player)
|
|
end
|
|
end
|
|
modEUrn.doSave()
|
|
minetest.log('action',"[E-URN] "..modEUrn.translate("Saving strongbox from all players in the file '%s'!"):format(modEUrn.urlTabela))
|
|
end)
|
|
|
|
|