From 6bd53c97564906c61e750416f09f7c03d62061e8 Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Wed, 5 Jun 2013 01:25:32 +0200 Subject: [PATCH] Rename playerlevels in playerskills; save the table and add a command to change it --- mods/crafting/init.lua | 44 +++++++++++++++++++++++++++++++++++------- mods/default/nodes.lua | 8 ++++---- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/mods/crafting/init.lua b/mods/crafting/init.lua index dc5e7ac..b23b1be 100644 --- a/mods/crafting/init.lua +++ b/mods/crafting/init.lua @@ -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 = " ", + 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) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 1fd68aa..2781752 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -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