Rename playerlevels in playerskills; save the table and add a command to change it

master
PilzAdam 2013-06-05 01:25:32 +02:00
parent fe17aa3dc5
commit 6bd53c9756
2 changed files with 41 additions and 11 deletions

View File

@ -1,8 +1,37 @@
playerlevels = {
-- example_user = {stone=1, tool=2},
singleplayer = {wood=1,furnace=1},
}
playerskills = nil
function save_playerskills()
local file = io.open(minetest.get_worldpath().."/playerskills", "w")
if file then
file:write(minetest.serialize(playerskills))
file:close()
end
end
local file = io.open(minetest.get_worldpath().."/playerskills", "r")
if file then
local playerskills = minetest.deserialize(file:read("*all"))
end
if not playerskills or not type(playerskills) == "table" then
playerskills = {}
end
save_playerskills()
minetest.register_chatcommand("set_skill", {
params = "<name> <skill> <rating>",
description = "Sets skill of a player",
privs = {server=true},
func = function(name, param)
local name, skill, rating = string.match(param, "^([a-zA-Z0-9_]*) ([a-zA-Z0-9_]*) ([%d.-]+)$")
if not playerskills[name] then
playerskills[name] = {}
end
playerskills[name][skill] = rating
save_playerskills()
end,
})
local crafting = {
normal = {},
@ -104,7 +133,7 @@ local function update_workbench(pos, playername)
method = "normal",
width = 3,
items = inv:get_list("craft"),
level = playerlevels[playername],
level = playerskills[playername],
})
if not result then
return
@ -191,7 +220,8 @@ minetest.register_on_joinplayer(function(player)
"size[8,5;]"..
"list[current_player;main;0,0.5;8,4;]"
)
if not playerlevels[player:get_player_name()] then
playerlevels[player:get_player_name()] = {}
if not playerskills[player:get_player_name()] then
playerskills[player:get_player_name()] = {}
save_playerskills()
end
end)

View File

@ -777,7 +777,7 @@ minetest.register_node("default:furnace", {
return 0
end
elseif listname == "src" then
if minetest.get_craft_result({method="cooking",items={stack},level=playerlevels[player:get_player_name()]}).time < 0 then
if minetest.get_craft_result({method="cooking",items={stack},level=playerskills[player:get_player_name()]}).time < 0 then
return 0
else
return stack:get_count()
@ -800,7 +800,7 @@ minetest.register_node("default:furnace", {
return 0
end
elseif to_list == "src" then
if minetest.get_craft_result({method="cooking",items={stack},level=playerlevels[player:get_player_name()]}).time < 0 then
if minetest.get_craft_result({method="cooking",items={stack},level=playerskills[player:get_player_name()]}).time < 0 then
return 0
else
return count
@ -855,7 +855,7 @@ minetest.register_node("default:furnace_active", {
return 0
end
elseif listname == "src" then
if minetest.get_craft_result({method="cooking",items={stack},level=playerlevels[player:get_player_name()]}).time < 0 then
if minetest.get_craft_result({method="cooking",items={stack},level=playerskills[player:get_player_name()]}).time < 0 then
return 0
else
return stack:get_count()
@ -878,7 +878,7 @@ minetest.register_node("default:furnace_active", {
return 0
end
elseif to_list == "src" then
if minetest.get_craft_result({method="cooking",items={stack},level=playerlevels[player:get_player_name()]}).time < 0 then
if minetest.get_craft_result({method="cooking",items={stack},level=playerskills[player:get_player_name()]}).time < 0 then
return 0
else
return count