1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2024-11-16 23:40:31 +01:00

Added save system and default class handler to pclasses

- Next thing to do : warrior class
This commit is contained in:
LeMagnesium 2015-07-17 13:44:11 +02:00
parent d61103b44d
commit 659f012623

View File

@ -11,6 +11,12 @@ pclasses = {}
-- API
pclasses.api = {}
-- Configuration
pclasses.conf = {}
pclasses.conf.default_class = "adventurer"
pclasses.conf.save_interval = 3 * 60
pclasses.conf.datafile = minetest.get_worldpath() .. "/pclasses"
-- Classes
pclasses.classes = {}
@ -46,7 +52,7 @@ function pclasses.api.register_class(cname)
return
end
local c_id = pclasses.api.create_class()
local c_id = pclasses.api.create_class_id()
pclasses.classes[c_id] = {name = cname}
return c_id
end
@ -69,7 +75,7 @@ end
-- Get single player
function pclasses.api.get_player_class(pname)
return pclasses.datas.player[pname]
return pclasses.datas.players[pname]
end
-- Get all players for a class
@ -92,3 +98,49 @@ function pclasses.api.set_player_class(pname, cname)
end
return false
end
---------------------------
-- Backup and load system
--
-- Startup
local pfile = io.open(pclasses.conf.datafile, "r")
if pfile then
local line = pfile:read()
if line then
pclasses.datas.players = minetest.deserialize(line)
end
pfile.close()
end
-- Frequent backup
local function save_datas()
local pfile = io.open(pclasses.conf.datafile, "w")
pfile:write(minetest.serialize(pclasses.datas.players))
pfile.close()
minetest.log("action", "[PClasses] Datas saved")
end
local save_timer = 0
minetest.register_globalstep(function(dtime)
save_timer = save_timer + dtime
if save_timer >= pclasses.conf.save_interval then
save_datas()
save_timer = 0
end
end)
-----------------------------
-- Default class assignment
--
if pclasses.conf.default_class then
local id = pclasses.api.register_class(pclasses.conf.default_class)
if id then
minetest.register_on_joinplayer(function(player)
if not pclasses.api.get_player_class(player:get_player_name()) then
pclasses.api.set_player_class(player:get_player_name(),
pclasses.conf.default_class)
end
end)
end
end