Rename playerlevels in playerskills; save the table and add a command to change it
parent
fe17aa3dc5
commit
6bd53c9756
|
@ -1,8 +1,37 @@
|
||||||
|
|
||||||
playerlevels = {
|
playerskills = nil
|
||||||
-- example_user = {stone=1, tool=2},
|
|
||||||
singleplayer = {wood=1,furnace=1},
|
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 = {
|
local crafting = {
|
||||||
normal = {},
|
normal = {},
|
||||||
|
@ -104,7 +133,7 @@ local function update_workbench(pos, playername)
|
||||||
method = "normal",
|
method = "normal",
|
||||||
width = 3,
|
width = 3,
|
||||||
items = inv:get_list("craft"),
|
items = inv:get_list("craft"),
|
||||||
level = playerlevels[playername],
|
level = playerskills[playername],
|
||||||
})
|
})
|
||||||
if not result then
|
if not result then
|
||||||
return
|
return
|
||||||
|
@ -191,7 +220,8 @@ minetest.register_on_joinplayer(function(player)
|
||||||
"size[8,5;]"..
|
"size[8,5;]"..
|
||||||
"list[current_player;main;0,0.5;8,4;]"
|
"list[current_player;main;0,0.5;8,4;]"
|
||||||
)
|
)
|
||||||
if not playerlevels[player:get_player_name()] then
|
if not playerskills[player:get_player_name()] then
|
||||||
playerlevels[player:get_player_name()] = {}
|
playerskills[player:get_player_name()] = {}
|
||||||
|
save_playerskills()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -777,7 +777,7 @@ minetest.register_node("default:furnace", {
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
elseif listname == "src" then
|
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
|
return 0
|
||||||
else
|
else
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
|
@ -800,7 +800,7 @@ minetest.register_node("default:furnace", {
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
elseif to_list == "src" then
|
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
|
return 0
|
||||||
else
|
else
|
||||||
return count
|
return count
|
||||||
|
@ -855,7 +855,7 @@ minetest.register_node("default:furnace_active", {
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
elseif listname == "src" then
|
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
|
return 0
|
||||||
else
|
else
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
|
@ -878,7 +878,7 @@ minetest.register_node("default:furnace_active", {
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
elseif to_list == "src" then
|
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
|
return 0
|
||||||
else
|
else
|
||||||
return count
|
return count
|
||||||
|
|
Loading…
Reference in New Issue