2023-07-20 22:44:51 -03:00
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 )
2024-02-16 21:28:25 -03:00
local playername = player : get_player_name ( )
--minetest.disconnect_player(name, [reason])
minetest.disconnect_player ( playername )
2023-07-20 22:44:51 -03:00
end
end
modEUrn.doSave ( )
2023-07-21 01:58:24 -03:00
--minetest.log('action',"[E-URN] "..modEUrn.translate("Saving the database from all players in the file '%s'!"):format(modEUrn.urlTabela))
2023-07-20 22:44:51 -03:00
end )